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

; File Name   :	u:\work\bc6ffd153689aab380d2d66cc176bbbb_unpacked.exe
; Format      :	Portable executable for	80386 (PE)
; Imagebase   :	400000
; Section 1. (virtual address 00001000)
; Virtual size			: 0000648A (  25738.)
; Section size in file		: 0000648A (  25738.)
; Offset to raw	data for section: 00001000
; Flags	60000020: Text Executable Readable
; Alignment	: default


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

		.686p
		.mmx
		.model flat

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

; Segment type:	Pure code
; Segment permissions: Read/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 =======================================

; Attributes: bp-based frame


sub_401000	proc near		; DATA XREF: sub_405A5A+12Bo

var_5C		= byte ptr -5Ch
var_1C		= dword	ptr -1Ch
var_18		= dword	ptr -18h
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, 5Ch
		cmp	[ebp+arg_4], 0Fh
		jz	short loc_401037
		cmp	[ebp+arg_4], 46h
		mov	eax, [ebp+arg_C]
		jnz	short loc_401022
		or	dword ptr [eax+18h], 10h
		mov	ecx, dword_4263E0
		mov	[eax+4], ecx

loc_401022:				; CODE XREF: sub_401000+13j
		push	eax
		push	[ebp+arg_8]
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	ds:dword_408260	; DefWindowProcA
		jmp	locret_401179
; ---------------------------------------------------------------------------

loc_401037:				; CODE XREF: sub_401000+Aj
		push	ebx
		push	esi
		mov	esi, dword_4263E8
		push	edi
		lea	eax, [ebp+var_5C]
		push	eax
		push	[ebp+arg_0]
		call	ds:dword_408264	; BeginPaint
		and	[ebp+var_C], 0
		mov	[ebp+arg_4], eax
		lea	eax, [ebp+var_1C]
		push	eax
		push	[ebp+arg_0]
		call	ds:dword_408268	; GetClientRect
		mov	edi, [ebp+var_10]
		and	[ebp+var_10], 0
		mov	ebx, ds:dword_408040
		jmp	loc_4010F3
; ---------------------------------------------------------------------------

loc_401073:				; CODE XREF: sub_401000+F6j
		movzx	eax, byte ptr [esi+52h]
		movzx	edx, byte ptr [esi+56h]
		imul	edx, [ebp+var_18]
		mov	ecx, edi
		sub	ecx, [ebp+var_18]
		imul	eax, ecx
		add	eax, edx
		cdq
		idiv	edi
		xor	edx, edx
		mov	[ebp+arg_8], ecx
		mov	dh, al
		movzx	eax, byte ptr [esi+51h]
		imul	eax, ecx
		movzx	ecx, byte ptr [esi+55h]
		imul	ecx, [ebp+var_18]
		add	eax, ecx
		mov	ecx, edx
		cdq
		idiv	edi
		movzx	edx, byte ptr [esi+54h]
		imul	edx, [ebp+var_18]
		mov	cl, al
		movzx	eax, byte ptr [esi+50h]
		imul	eax, [ebp+arg_8]
		add	eax, edx
		cdq
		idiv	edi
		shl	ecx, 8
		movzx	eax, al
		or	ecx, eax
		lea	eax, [ebp+var_C]
		push	eax
		mov	[ebp+var_8], ecx
		call	ds:dword_408044	; CreateBrushIndirect
		add	[ebp+var_10], 4
		push	eax
		mov	[ebp+arg_C], eax
		lea	eax, [ebp+var_1C]
		push	eax
		push	[ebp+arg_4]
		call	ds:dword_40826C	; FillRect
		push	[ebp+arg_C]
		call	ebx	; DeleteObject
		add	[ebp+var_18], 4

loc_4010F3:				; CODE XREF: sub_401000+6Ej
		cmp	[ebp+var_18], edi
		jl	loc_401073
		cmp	dword ptr [esi+58h], 0FFFFFFFFh
		jz	short loc_401167
		push	dword ptr [esi+34h]
		call	ds:dword_408048	; CreateFontIndirectA
		test	eax, eax
		mov	[ebp+arg_C], eax
		jz	short loc_401167
		mov	edi, [ebp+arg_4]
		push	1
		push	edi
		mov	[ebp+var_1C], 10h
		mov	[ebp+var_18], 8
		call	ds:dword_40804C	; SetBkMode
		push	dword ptr [esi+58h]
		push	edi
		call	ds:dword_408050	; SetTextColor
		push	[ebp+arg_C]
		mov	esi, ds:dword_408058
		push	edi
		call	esi	; SelectObject
		push	820h
		mov	[ebp+arg_4], eax
		lea	eax, [ebp+var_1C]
		push	eax
		push	0FFFFFFFFh
		push	offset aNsisError ; "NSIS Error"
		push	edi
		call	ds:dword_408270	; DrawTextA
		push	[ebp+arg_4]
		push	edi
		call	esi	; SelectObject
		push	[ebp+arg_C]
		call	ebx	; DeleteObject

loc_401167:				; CODE XREF: sub_401000+100j
					; sub_401000+110j
		lea	eax, [ebp+var_5C]
		push	eax
		push	[ebp+arg_0]
		call	ds:dword_408274	; EndPaint
		pop	edi
		pop	esi
		xor	eax, eax
		pop	ebx

locret_401179:				; CODE XREF: sub_401000+32j
		leave
		retn	10h
sub_401000	endp


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



sub_40117D	proc near		; CODE XREF: sub_401610+1B1Dp
					; sub_404A94+33Dp

arg_0		= dword	ptr  4

		mov	ecx, [esp+arg_0]
		mov	eax, dword_426408
		mov	edx, ecx
		imul	edx, 418h
		mov	edx, [edx+eax+8]
		test	dl, 2
		jz	short locret_4011EC
		push	esi
		push	edi
		lea	esi, [ecx+1]
		xor	edi, edi
		cmp	esi, dword_42640C
		jnb	short loc_4011EA
		mov	ecx, esi
		imul	ecx, 418h
		lea	eax, [ecx+eax+8]
		push	ebx

loc_4011B3:				; CODE XREF: sub_40117D+6Aj
		mov	ecx, [eax]
		test	cl, 2
		jz	short loc_4011BD
		inc	edi
		jmp	short loc_4011DB
; ---------------------------------------------------------------------------

loc_4011BD:				; CODE XREF: sub_40117D+3Bj
		test	cl, 4
		jz	short loc_4011CB
		mov	ecx, edi
		dec	edi
		test	ecx, ecx
		jz	short loc_4011E9
		jmp	short loc_4011DB
; ---------------------------------------------------------------------------

loc_4011CB:				; CODE XREF: sub_40117D+43j
		test	cl, 10h
		jnz	short loc_4011DB
		mov	ebx, ecx
		xor	ebx, edx
		and	ebx, 1
		xor	ebx, ecx
		mov	[eax], ebx

loc_4011DB:				; CODE XREF: sub_40117D+3Ej
					; sub_40117D+4Cj ...
		inc	esi
		add	eax, 418h
		cmp	esi, dword_42640C
		jb	short loc_4011B3

loc_4011E9:				; CODE XREF: sub_40117D+4Aj
		pop	ebx

loc_4011EA:				; CODE XREF: sub_40117D+27j
		pop	edi
		pop	esi

locret_4011EC:				; CODE XREF: sub_40117D+18j
		retn	4
sub_40117D	endp


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

; Attributes: bp-based frame


sub_4011EF	proc near		; CODE XREF: sub_4011EF+57p
					; sub_40129E+4p

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

		push	ebp
		mov	ebp, esp
		push	ecx
		push	ecx
		mov	edx, [ebp+arg_0]
		push	ebx
		push	esi
		mov	esi, edx
		imul	esi, 418h
		push	edi
		mov	edi, dword_426408
		mov	eax, [esi+edi+8]
		xor	ecx, ecx
		test	al, 2
		mov	[ebp+var_4], ecx
		mov	[ebp+var_8], ecx
		jz	short loc_401225
		cmp	[ebp+arg_4], ecx
		jnz	short loc_401225
		and	eax, 0FFFFFFBEh
		mov	[esi+edi+8], eax
		inc	edx

loc_401225:				; CODE XREF: sub_4011EF+27j
					; sub_4011EF+2Cj
		cmp	edx, dword_42640C
		jnb	short loc_401271

loc_40122D:				; CODE XREF: sub_4011EF+80j
		mov	eax, edx
		imul	eax, 418h
		lea	ebx, [eax+edi+8]
		mov	ecx, [ebx]
		test	cl, 2
		lea	eax, [edx+1]
		jz	short loc_40124D
		push	0
		push	edx
		call	sub_4011EF
		mov	ecx, [ebx]

loc_40124D:				; CODE XREF: sub_4011EF+52j
		test	cl, 4
		jnz	short loc_40127A
		test	cl, 40h
		jz	short loc_40125A
		inc	[ebp+var_4]

loc_40125A:				; CODE XREF: sub_4011EF+66j
		test	cl, 1
		jz	short loc_401264
		inc	[ebp+var_4]
		jmp	short loc_401267
; ---------------------------------------------------------------------------

loc_401264:				; CODE XREF: sub_4011EF+6Ej
		inc	[ebp+var_8]

loc_401267:				; CODE XREF: sub_4011EF+73j
		cmp	eax, dword_42640C
		mov	edx, eax
		jb	short loc_40122D

loc_401271:				; CODE XREF: sub_4011EF+3Cj
		xor	eax, eax

loc_401273:				; CODE XREF: sub_4011EF+8Fj
					; sub_4011EF+9Ej ...
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn	8
; ---------------------------------------------------------------------------

loc_40127A:				; CODE XREF: sub_4011EF+61j
		cmp	[ebp+var_4], 0
		jz	short loc_401273
		cmp	[ebp+var_8], 0
		lea	ecx, [esi+edi+8]
		jz	short loc_40128F
		or	dword ptr [ecx], 40h
		jmp	short loc_401273
; ---------------------------------------------------------------------------

loc_40128F:				; CODE XREF: sub_4011EF+99j
		mov	edx, [ecx]
		and	edx, 0FFFFFF7Fh
		or	edx, 1
		mov	[ecx], edx
		jmp	short loc_401273
sub_4011EF	endp


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



sub_40129E	proc near		; CODE XREF: sub_401610+1B49p
					; sub_404A94+478p ...
		push	1
		push	0
		call	sub_4011EF
		retn
sub_40129E	endp


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



sub_4012A8	proc near		; CODE XREF: sub_401610+1B44p
					; sub_404A94+3F9p ...

arg_0		= dword	ptr  4

		mov	ecx, [esp+arg_0]
		mov	eax, dword_426408
		push	esi
		xor	esi, esi
		cmp	ecx, 20h
		jnb	short loc_4012EF
		cmp	dword_42640C, esi
		jbe	short loc_4012EF
		lea	edx, [eax+8]
		push	edi

loc_4012C5:				; CODE XREF: sub_4012A8+44j
		mov	eax, [edx]
		test	al, 6
		jnz	short loc_4012DF
		xor	edi, edi
		inc	edi
		shl	edi, cl
		test	[edx-4], edi
		jz	short loc_4012DA
		or	eax, 1
		jmp	short loc_4012DD
; ---------------------------------------------------------------------------

loc_4012DA:				; CODE XREF: sub_4012A8+2Bj
		and	eax, 0FFFFFFFEh

loc_4012DD:				; CODE XREF: sub_4012A8+30j
		mov	[edx], eax

loc_4012DF:				; CODE XREF: sub_4012A8+21j
		inc	esi
		add	edx, 418h
		cmp	esi, dword_42640C
		jb	short loc_4012C5
		pop	edi

loc_4012EF:				; CODE XREF: sub_4012A8+Fj
					; sub_4012A8+17j
		pop	esi
		retn	4
sub_4012A8	endp


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

; Attributes: bp-based frame


sub_4012F3	proc near		; CODE XREF: sub_401610+1B51p
					; sub_404A94+494p

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

		push	ebp
		mov	ebp, esp
		sub	esp, 0Ch
		mov	eax, dword_4263E8
		and	[ebp+var_4], 0
		push	ebx
		push	esi
		add	eax, 94h
		push	edi
		mov	edi, dword_42640C
		mov	[ebp+var_8], eax

loc_401313:				; CODE XREF: sub_4012F3+7Fj
		mov	eax, [ebp+var_8]
		xor	ebx, ebx
		cmp	[eax], ebx
		jz	short loc_401367
		cmp	ebx, edi
		jnb	short loc_401365
		mov	esi, dword_426408
		add	esi, 8

loc_401329:				; CODE XREF: sub_4012F3+6Ej
		mov	edx, [esi]
		test	dl, 6
		jnz	short loc_401358
		mov	eax, [ebp+arg_0]
		test	eax, eax
		jz	short loc_40133D
		cmp	dword ptr [eax+ebx*4], 0
		jz	short loc_401358

loc_40133D:				; CODE XREF: sub_4012F3+42j
		mov	ecx, [ebp+var_4]
		xor	eax, eax
		inc	eax
		shl	eax, cl
		mov	ecx, [esi-4]
		and	edx, 1
		and	ecx, eax
		mov	eax, ecx
		mov	ecx, [ebp+var_4]
		shl	edx, cl
		cmp	eax, edx
		jnz	short loc_401363

loc_401358:				; CODE XREF: sub_4012F3+3Bj
					; sub_4012F3+48j
		inc	ebx
		add	esi, 418h
		cmp	ebx, edi
		jb	short loc_401329

loc_401363:				; CODE XREF: sub_4012F3+63j
		cmp	ebx, edi

loc_401365:				; CODE XREF: sub_4012F3+2Bj
		jz	short loc_401374

loc_401367:				; CODE XREF: sub_4012F3+27j
		inc	[ebp+var_4]
		add	[ebp+var_8], 4
		cmp	[ebp+var_4], 20h
		jb	short loc_401313

loc_401374:				; CODE XREF: sub_4012F3:loc_401365j
		mov	eax, [ebp+var_4]
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn	4
sub_4012F3	endp


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



sub_40137E	proc near		; CODE XREF: sub_403756+175p

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

		cmp	dword_40A084, 0
		push	esi
		jnz	short loc_4013B5
		xor	ecx, ecx

loc_40138A:				; CODE XREF: sub_40137E+35j
		push	8
		mov	eax, ecx
		pop	esi

loc_40138F:				; CODE XREF: sub_40137E+25j
		mov	edx, eax
		and	dl, 1
		neg	dl
		sbb	edx, edx
		and	edx, 0EDB88320h
		shr	eax, 1
		xor	eax, edx
		dec	esi
		jnz	short loc_40138F
		mov	dword_40A080[ecx*4], eax
		inc	ecx
		cmp	ecx, 100h
		jl	short loc_40138A

loc_4013B5:				; CODE XREF: sub_40137E+8j
		mov	esi, [esp+4+arg_8]
		test	esi, esi
		mov	eax, [esp+4+arg_0]
		not	eax
		jbe	short loc_4013E1
		mov	ecx, [esp+4+arg_4]

loc_4013C7:				; CODE XREF: sub_40137E+61j
		xor	edx, edx
		mov	dl, [ecx]
		xor	edx, eax
		and	edx, 0FFh
		shr	eax, 8
		xor	eax, dword_40A080[edx*4]
		inc	ecx
		dec	esi
		jnz	short loc_4013C7

loc_4013E1:				; CODE XREF: sub_40137E+43j
		not	eax
		pop	esi
		retn	0Ch
sub_40137E	endp


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

; Attributes: bp-based frame


sub_4013E7	proc near		; CODE XREF: sub_4014C9+10p
					; sub_401610+E4p ...

arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		push	ebx
		push	esi
		push	edi
		mov	edi, [ebp+arg_0]
		test	edi, edi
		jl	loc_4014B9
		mov	esi, [ebp+arg_4]
		mov	ebx, 400h

loc_401400:				; CODE XREF: sub_4013E7+CCj
		mov	ecx, dword_426410
		mov	eax, edi
		shl	eax, 5
		add	eax, ecx
		mov	ecx, [eax]
		cmp	ecx, 1
		jz	loc_4014B9
		test	dword_426444, ebx
		jz	short loc_40142A
		cmp	ecx, 14h
		jz	short loc_40142A
		cmp	ecx, 3Eh
		jnz	short loc_40145D

loc_40142A:				; CODE XREF: sub_4013E7+37j
					; sub_4013E7+3Cj
		push	eax
		call	sub_401610
		mov	esi, eax
		cmp	esi, 7FFFFFFFh
		jz	loc_4014C2
		test	dword_426444, ebx
		jnz	short loc_40145D
		test	esi, esi
		jge	short loc_40145F
		inc	esi
		shl	esi, 0Ah
		mov	eax, offset dword_427000
		sub	eax, esi
		push	eax
		call	sub_405F74
		mov	esi, eax

loc_40145D:				; CODE XREF: sub_4013E7+41j
					; sub_4013E7+5Dj
		test	esi, esi

loc_40145F:				; CODE XREF: sub_4013E7+61j
		jz	short loc_401472
		test	dword_426444, ebx
		jnz	short loc_401472
		dec	esi
		mov	eax, edi
		mov	edi, esi
		sub	esi, eax
		jmp	short loc_401474
; ---------------------------------------------------------------------------

loc_401472:				; CODE XREF: sub_4013E7:loc_40145Fj
					; sub_4013E7+80j
		inc	esi
		inc	edi

loc_401474:				; CODE XREF: sub_4013E7+89j
		cmp	[ebp+arg_4], 0
		jz	short loc_4014B1
		mov	eax, dword_425BC4
		add	dword_425BCC, esi
		xor	ecx, ecx
		test	eax, eax
		setz	cl
		push	0
		add	ecx, eax
		push	ecx
		push	7530h
		push	dword_425BCC
		call	ds:dword_408124	; MulDiv
		push	eax
		push	402h
		push	[ebp+arg_4]
		call	ds:dword_408278	; SendMessageA

loc_4014B1:				; CODE XREF: sub_4013E7+91j
		test	edi, edi
		jge	loc_401400

loc_4014B9:				; CODE XREF: sub_4013E7+Bj
					; sub_4013E7+2Bj
		xor	eax, eax

loc_4014BB:				; CODE XREF: sub_4013E7+E0j
		pop	edi
		pop	esi
		pop	ebx
		pop	ebp
		retn	8
; ---------------------------------------------------------------------------

loc_4014C2:				; CODE XREF: sub_4013E7+51j
		mov	eax, 7FFFFFFFh
		jmp	short loc_4014BB
sub_4013E7	endp


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



sub_4014C9	proc near		; CODE XREF: start+485p sub_4041F2+44p ...

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		mov	ecx, dword_4263E8
		push	0
		push	dword ptr [ecx+eax*4+6Ch]
		call	sub_4013E7
		retn	4
sub_4014C9	endp


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



sub_4014E1	proc near		; CODE XREF: sub_401610+26Bp
					; sub_401610+35Ep ...

arg_0		= dword	ptr  4

		push	offset byte_40A888
		push	[esp+4+arg_0]
		call	sub_40509F
		retn	4
sub_4014E1	endp


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



sub_4014F2	proc near		; CODE XREF: sub_401610+13Fp
					; sub_401610+183p ...
		mov	eax, dword_40C0C4
		push	dword ptr [eax+ecx*4]
		push	0
		call	sub_4065B7
		push	eax
		call	sub_405F74
		retn
sub_4014F2	endp


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



sub_401508	proc near		; CODE XREF: sub_4015C7+2Dp
					; sub_401610+79p ...
		test	esi, esi
		mov	eax, esi
		jge	short loc_401510
		neg	eax

loc_401510:				; CODE XREF: sub_401508+4j
		mov	edx, dword_40C0C4
		mov	ecx, eax
		sar	eax, 4
		push	edi
		and	ecx, 0Fh
		push	dword ptr [edx+ecx*4]
		shl	eax, 0Ah
		add	eax, offset dword_40A488
		push	eax
		call	sub_4065B7
		test	esi, esi
		mov	edi, eax
		jge	short loc_40153C
		push	edi
		call	sub_406009

loc_40153C:				; CODE XREF: sub_401508+2Cj
		mov	eax, edi
		pop	edi
		retn
sub_401508	endp


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

; Attributes: bp-based frame


sub_401540	proc near		; CODE XREF: sub_401540+42p
					; sub_401610+137Cp

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

		push	ebp
		mov	ebp, esp
		sub	esp, 10Ch
		push	ebx
		push	esi
		push	edi
		lea	eax, [ebp+var_4]
		push	eax
		push	8
		xor	ebx, ebx
		push	ebx
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	ds:dword_408008	; RegOpenKeyExA
		cmp	eax, ebx
		jnz	short loc_4015B2
		mov	esi, ds:dword_408004
		mov	edi, 105h
		jmp	short loc_40158B
; ---------------------------------------------------------------------------

loc_401572:				; CODE XREF: sub_401540+5Bj
		cmp	[ebp+arg_8], ebx
		jnz	short loc_4015B9
		push	ebx
		lea	eax, [ebp+var_10C]
		push	eax
		push	[ebp+var_4]
		call	sub_401540
		test	eax, eax
		jnz	short loc_40159D

loc_40158B:				; CODE XREF: sub_401540+30j
		push	edi
		lea	eax, [ebp+var_10C]
		push	eax
		push	ebx
		push	[ebp+var_4]
		call	esi	; RegEnumKeyA
		test	eax, eax
		jz	short loc_401572

loc_40159D:				; CODE XREF: sub_401540+49j
		push	[ebp+var_4]
		call	ds:dword_408020	; RegCloseKey
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	ds:dword_408000	; RegDeleteKeyA

loc_4015B2:				; CODE XREF: sub_401540+23j
					; sub_401540+85j
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn	0Ch
; ---------------------------------------------------------------------------

loc_4015B9:				; CODE XREF: sub_401540+35j
		push	[ebp+var_4]
		call	ds:dword_408020	; RegCloseKey
		xor	eax, eax
		inc	eax
		jmp	short loc_4015B2
sub_401540	endp


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

; Attributes: bp-based frame


sub_4015C7	proc near		; CODE XREF: sub_401610+1305p
					; sub_401610+14BCp ...

arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		mov	eax, dword_40C0C4
		mov	eax, [eax+4]
		test	eax, eax
		push	esi
		push	edi
		jz	short loc_4015DC
		mov	edi, eax
		jmp	short loc_4015E8
; ---------------------------------------------------------------------------

loc_4015DC:				; CODE XREF: sub_4015C7+Fj
		mov	edi, dword_426464
		add	edi, 80000001h

loc_4015E8:				; CODE XREF: sub_4015C7+13j
		lea	eax, [ebp+arg_0]
		push	eax
		push	[ebp+arg_0]
		push	0
		push	22h
		pop	esi
		call	sub_401508
		push	eax
		push	edi
		call	ds:dword_408008	; RegOpenKeyExA
		neg	eax
		sbb	eax, eax
		not	eax
		and	eax, [ebp+arg_0]
		pop	edi
		pop	esi
		pop	ebp
		retn	4
sub_4015C7	endp


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

; Attributes: bp-based frame


sub_401610	proc near		; CODE XREF: sub_4013E7+44p

var_1A4		= byte ptr -1A4h
var_178		= byte ptr -178h
var_64		= byte ptr -64h
var_60		= dword	ptr -60h
var_5C		= dword	ptr -5Ch
var_58		= dword	ptr -58h
var_54		= dword	ptr -54h
var_50		= word ptr -50h
var_4C		= dword	ptr -4Ch
var_48		= dword	ptr -48h
var_40		= dword	ptr -40h
var_3C		= dword	ptr -3Ch
var_38		= dword	ptr -38h
var_34		= dword	ptr -34h
var_30		= dword	ptr -30h
var_2C		= dword	ptr -2Ch
var_28		= dword	ptr -28h
var_24		= dword	ptr -24h
var_19		= byte ptr -19h
var_18		= dword	ptr -18h
var_14		= dword	ptr -14h
var_10		= dword	ptr -10h
var_C		= dword	ptr -0Ch
var_8		= dword	ptr -8
var_4		= dword	ptr -4
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		sub	esp, 1A4h
		mov	eax, dword_4263E0
		and	[ebp+var_C], 0
		and	[ebp+var_4], 0
		push	ebx
		push	esi
		mov	esi, [ebp+arg_0]
		push	edi
		push	8
		pop	ecx
		lea	edi, [ebp+var_3C]
		rep movsd
		mov	edx, [ebp+var_34]
		mov	esi, [ebp+var_38]
		lea	ecx, [ebp+var_38]
		mov	dword_40C0C4, ecx
		mov	ecx, [ebp+var_3C]
		mov	[ebp+var_10], eax
		mov	ebx, edx
		shl	ebx, 0Ah
		mov	eax, esi
		shl	eax, 0Ah
		add	ecx, 0FFFFFFFEh
		add	ebx, offset dword_427000
		cmp	ecx, 42h	; switch 67 cases
		lea	edi, dword_427000[eax]
		ja	loc_4031D2	; default
					; jumptable 0040166B cases 64,65
		jmp	ds:off_4031E4[ecx*4] ; switch jump

loc_401672:				; DATA XREF: .text:off_4031E4o
		push	esi		; jumptable 0040166B case 0
		push	offset aJumpD	; "Jump: %d"
		call	sub_40614C
		mov	eax, [ebp+var_38]
		pop	ecx
		pop	ecx
		jmp	loc_4031DD
; ---------------------------------------------------------------------------

loc_401687:				; CODE XREF: sub_401610+5Bj
					; DATA XREF: .text:off_4031E4o
		xor	esi, esi	; jumptable 0040166B case 1
		call	sub_401508
		push	eax
		push	offset aAbortingS ; "Aborting: \"%s\""
		call	sub_40614C
		pop	ecx
		pop	ecx
		push	esi
		push	[ebp+var_38]

loc_40169F:				; CODE XREF: sub_401610+63Cj
		call	sub_40509F
		jmp	loc_402E4D
; ---------------------------------------------------------------------------

loc_4016A9:				; CODE XREF: sub_401610+5Bj
					; DATA XREF: .text:off_4031E4o
		inc	dword_425BB4	; jumptable 0040166B case 2
		cmp	[ebp+var_10], 0
		jz	loc_402E4D
		push	0
		call	ds:dword_408180	; PostQuitMessage
		jmp	loc_402E4D
; ---------------------------------------------------------------------------

loc_4016C6:				; CODE XREF: sub_401610+5Bj
					; DATA XREF: .text:off_4031E4o
		test	esi, esi	; jumptable 0040166B case 3
		jge	short loc_4016DF
		mov	ecx, offset dword_427000
		sub	ecx, eax
		sub	ecx, 400h
		push	ecx
		call	sub_405F74
		jmp	short loc_4016E1
; ---------------------------------------------------------------------------

loc_4016DF:				; CODE XREF: sub_401610+B8j
		mov	eax, esi

loc_4016E1:				; CODE XREF: sub_401610+CDj
		lea	esi, [eax-1]
		push	esi
		push	offset aCallD	; "Call: %d"
		call	sub_40614C
		pop	ecx
		pop	ecx
		push	0
		push	esi
		call	sub_4013E7
		jmp	loc_4031DD
; ---------------------------------------------------------------------------

loc_4016FE:				; CODE XREF: sub_401610+5Bj
					; DATA XREF: .text:off_4031E4o
		test	edx, edx	; jumptable 0040166B case 4
		jz	short loc_40172B
		test	dl, 8
		jz	short loc_401716
		mov	eax, dword_40A008
		mov	dword_40A040, eax
		jmp	loc_4031D2	; default
					; jumptable 0040166B cases 64,65
; ---------------------------------------------------------------------------

loc_401716:				; CODE XREF: sub_401610+F5j
		mov	eax, dword_40A040
		mov	dword_40A008, eax
		mov	dword_40A040, edx
		jmp	loc_4031D2	; default
					; jumptable 0040166B cases 64,65
; ---------------------------------------------------------------------------

loc_40172B:				; CODE XREF: sub_401610+F0j
		xor	esi, esi
		call	sub_401508
		push	eax
		push	offset aDetailprintS ; "detailprint: %s"
		call	sub_40614C
		pop	ecx
		pop	ecx
		push	esi
		push	[ebp+var_38]
		call	sub_40509F
		jmp	loc_4031D2	; default
					; jumptable 0040166B cases 64,65
; ---------------------------------------------------------------------------

loc_40174D:				; CODE XREF: sub_401610+5Bj
					; DATA XREF: .text:off_4031E4o
		xor	ecx, ecx	; jumptable 0040166B case 5
		call	sub_4014F2
		mov	esi, eax
		push	esi
		push	offset aSleepD	; "Sleep(%d)"
		call	sub_40614C
		cmp	esi, 1
		pop	ecx
		pop	ecx
		jg	short loc_40176B
		xor	esi, esi
		inc	esi

loc_40176B:				; CODE XREF: sub_401610+156j
		push	esi
		call	ds:dword_4080B0	; Sleep
		jmp	loc_4031D2	; default
					; jumptable 0040166B cases 64,65
; ---------------------------------------------------------------------------

loc_401777:				; CODE XREF: sub_401610+5Bj
					; DATA XREF: .text:off_4031E4o
		push	offset aBringtofront ; jumptable 0040166B case 6
		call	sub_40614C
		pop	ecx
		push	[ebp+var_10]
		call	ds:dword_408224	; SetForegroundWindow
		jmp	loc_4031D2	; default
					; jumptable 0040166B cases 64,65
; ---------------------------------------------------------------------------

loc_401790:				; CODE XREF: sub_401610+5Bj
					; DATA XREF: .text:off_4031E4o
		xor	ecx, ecx	; jumptable 0040166B case 11
		inc	ecx
		call	sub_4014F2
		mov	ecx, [ebp+var_38]
		mov	dword_426460[ecx*4], eax
		jmp	loc_4031D2	; default
					; jumptable 0040166B cases 64,65
; ---------------------------------------------------------------------------

loc_4017A7:				; CODE XREF: sub_401610+5Bj
					; DATA XREF: .text:off_4031E4o
		mov	ecx, [ebp+var_30] ; jumptable 0040166B case 12
		mov	edx, [ebp+var_2C]
		xor	eax, eax
		lea	ecx, ds:426460h[ecx*4]
		cmp	[ecx], eax
		setz	al
		and	[ecx], edx
		mov	eax, [ebp+eax*4+var_38]
		jmp	loc_4031DD
; ---------------------------------------------------------------------------

loc_4017C6:				; CODE XREF: sub_401610+5Bj
					; DATA XREF: .text:off_4031E4o
		push	dword_426460[edx*4] ; jumptable	0040166B case 13

loc_4017CD:				; CODE XREF: sub_401610+7AEj
					; sub_401610+958j ...
		push	edi
		jmp	loc_403168
; ---------------------------------------------------------------------------

loc_4017D3:				; CODE XREF: sub_401610+5Bj
					; DATA XREF: .text:off_4031E4o
		mov	eax, dword_425BC0 ; jumptable 0040166B case 7
		test	eax, eax
		mov	edi, ds:dword_408228
		jz	short loc_4017E9
		push	edx
		push	eax
		call	edi	; ShowWindow
		mov	esi, [ebp+var_38]

loc_4017E9:				; CODE XREF: sub_401610+1D0j
		mov	eax, dword_425BAC
		test	eax, eax
		jz	loc_4031D2	; default
					; jumptable 0040166B cases 64,65
		push	esi
		push	eax
		call	edi	; ShowWindow
		jmp	loc_4031D2	; default
					; jumptable 0040166B cases 64,65
; ---------------------------------------------------------------------------

loc_4017FF:				; CODE XREF: sub_401610+5Bj
					; DATA XREF: .text:off_4031E4o
		push	0FFFFFFF0h	; jumptable 0040166B case 8
		pop	esi
		call	sub_401508
		push	[ebp+var_34]
		mov	esi, eax
		push	esi
		push	offset aSetfileattribu ; "SetFileAttributes: \"%s\":%08X"
		call	sub_40614C
		add	esp, 0Ch
		push	[ebp+var_34]
		push	esi
		call	ds:dword_4080AC	; SetFileAttributesA
		test	eax, eax
		jnz	loc_4031D2	; default
					; jumptable 0040166B cases 64,65
		push	offset aSetfileattri_0 ; "SetFileAttributes failed."
		mov	[ebp+var_4], 1
		call	sub_40614C
		jmp	loc_4030AB
; ---------------------------------------------------------------------------

loc_401842:				; CODE XREF: sub_401610+5Bj
					; DATA XREF: .text:off_4031E4o
		push	0FFFFFFF0h	; jumptable 0040166B case 9
		pop	esi
		call	sub_401508
		push	[ebp+var_34]
		mov	esi, eax
		push	esi
		push	offset aCreatedirector ; "CreateDirectory: \"%s\" (%d)"
		call	sub_40614C
		add	esp, 0Ch
		cmp	byte ptr [esi],	0
		jz	short loc_401873
		push	esi
		call	sub_406301
		test	eax, eax
		jnz	short loc_401873
		mov	[ebp+var_4], 1

loc_401873:				; CODE XREF: sub_401610+250j
					; sub_401610+25Aj
		cmp	[ebp+var_34], 0
		jz	short loc_401897
		push	0FFFFFFE6h
		call	sub_4014E1
		push	esi
		push	offset dword_42C800
		call	sub_405FFD	; lstrcpy
		push	esi
		call	ds:dword_4080A8	; SetCurrentDirectoryA
		jmp	loc_4031D2	; default
					; jumptable 0040166B cases 64,65
; ---------------------------------------------------------------------------

loc_401897:				; CODE XREF: sub_401610+267j
		push	0FFFFFFF5h
		jmp	loc_40277C
; ---------------------------------------------------------------------------

loc_40189E:				; CODE XREF: sub_401610+5Bj
					; DATA XREF: .text:off_4031E4o
		xor	esi, esi	; jumptable 0040166B case 10
		call	sub_401508
		mov	esi, eax
		push	esi
		call	sub_406168
		test	eax, eax
		jz	short loc_4018C7
		push	[ebp+var_34]
		push	esi
		push	offset aIffileexistsFi ; "IfFileExists:	file \"%s\" exists, jumping"...
		call	sub_40614C
		add	esp, 0Ch
		jmp	loc_402124
; ---------------------------------------------------------------------------

loc_4018C7:				; CODE XREF: sub_401610+29Fj
		push	[ebp+var_30]
		push	esi
		push	offset aIffileexists_0 ; "IfFileExists:	file \"%s\" does not exist,"...
		call	sub_40614C
		add	esp, 0Ch

loc_4018D8:				; CODE XREF: sub_401610+857j
					; sub_401610+8AFj ...
		mov	eax, [ebp+var_30]
		jmp	loc_4031DD
; ---------------------------------------------------------------------------

loc_4018E0:				; CODE XREF: sub_401610+5Bj
					; DATA XREF: .text:off_4031E4o
		push	0FFFFFFD0h	; jumptable 0040166B case 14
		pop	esi
		call	sub_401508
		push	0FFFFFFDFh
		pop	esi
		mov	[ebp+arg_0], eax
		call	sub_401508
		push	[ebp+arg_0]
		mov	ebx, offset byte_40A888
		push	ebx
		mov	edi, eax
		call	sub_405FFD	; lstrcpy
		push	edi
		call	sub_406003	; lstrlen
		push	[ebp+arg_0]
		mov	esi, eax
		call	sub_406003	; lstrlen
		add	esi, eax
		cmp	esi, 3FDh
		jge	short loc_40192F
		mov	esi, ds:dword_4080A4
		push	offset asc_4087B0 ; "->"
		push	ebx
		call	esi	; lstrcat
		push	edi
		push	ebx
		call	esi	; lstrcat

loc_40192F:				; CODE XREF: sub_401610+30Bj
		push	ebx
		push	offset aRenameS	; "Rename: %s"
		call	sub_40614C
		pop	ecx
		pop	ecx
		push	edi
		push	[ebp+arg_0]
		call	ds:dword_4080A0	; MoveFileA
		test	eax, eax
		jz	short loc_401951
		push	0FFFFFFE3h
		jmp	loc_40277C
; ---------------------------------------------------------------------------

loc_401951:				; CODE XREF: sub_401610+338j
		cmp	[ebp+var_30], 0
		jz	short loc_40197E
		push	[ebp+arg_0]
		call	sub_406168
		test	eax, eax
		jz	short loc_40197E
		push	edi
		push	[ebp+arg_0]
		call	sub_406357
		push	0FFFFFFE4h
		call	sub_4014E1
		push	ebx
		push	offset aRenameOnReboot ; "Rename on reboot: %s"
		jmp	loc_4030A5
; ---------------------------------------------------------------------------

loc_40197E:				; CODE XREF: sub_401610+345j
					; sub_401610+351j
		push	ebx
		mov	[ebp+var_4], 1
		push	offset aRenameFailedS ;	"Rename	failed:	%s"
		jmp	loc_4030A5
; ---------------------------------------------------------------------------

loc_401990:				; CODE XREF: sub_401610+5Bj
					; DATA XREF: .text:off_4031E4o
		xor	esi, esi	; jumptable 0040166B case 15
		call	sub_401508
		mov	esi, eax
		lea	eax, [ebp+arg_0]
		push	eax
		push	ebx
		mov	edi, 400h
		push	edi
		push	esi
		call	ds:dword_40809C	; GetFullPathNameA
		test	eax, eax
		jz	short loc_4019D3
		mov	eax, [ebp+arg_0]
		cmp	eax, esi
		jbe	short loc_4019DD
		cmp	byte ptr [eax],	0
		jz	short loc_4019DD
		push	esi
		call	sub_406168
		test	eax, eax
		jz	short loc_4019D3
		add	eax, 2Ch
		push	eax
		push	[ebp+arg_0]
		call	sub_405FFD	; lstrcpy
		jmp	short loc_4019DD
; ---------------------------------------------------------------------------

loc_4019D3:				; CODE XREF: sub_401610+39Dj
					; sub_401610+3B3j
		mov	[ebp+var_4], 1
		mov	byte ptr [ebx],	0

loc_4019DD:				; CODE XREF: sub_401610+3A4j
					; sub_401610+3A9j ...
		cmp	[ebp+var_30], 0
		jnz	loc_4031D2	; default
					; jumptable 0040166B cases 64,65
		push	edi
		push	ebx
		push	ebx
		call	ds:dword_408098	; GetShortPathNameA
		jmp	loc_4031D2	; default
					; jumptable 0040166B cases 64,65
; ---------------------------------------------------------------------------

loc_4019F5:				; CODE XREF: sub_401610+5Bj
					; DATA XREF: .text:off_4031E4o
		or	esi, 0FFFFFFFFh	; jumptable 0040166B case 16
		call	sub_401508
		lea	ecx, [ebp+arg_0]
		push	ecx
		push	edi
		push	400h
		push	0
		push	eax
		push	0
		call	ds:dword_408094	; SearchPathA
		test	eax, eax

loc_401A14:				; CODE XREF: sub_401610+12F8j
		jnz	loc_4031D2	; default
					; jumptable 0040166B cases 64,65

loc_401A1A:				; CODE XREF: sub_401610+172Aj
					; sub_401610+1746j
		mov	[ebp+var_4], 1
		mov	byte ptr [edi],	0
		jmp	loc_4031D2	; default
					; jumptable 0040166B cases 64,65
; ---------------------------------------------------------------------------

loc_401A29:				; CODE XREF: sub_401610+5Bj
					; DATA XREF: .text:off_4031E4o
		push	0FFFFFFEFh	; jumptable 0040166B case 17
		pop	esi
		call	sub_401508
		push	eax
		push	edi
		call	sub_405EA9

loc_401A38:				; CODE XREF: sub_401610+12B5j
					; sub_401610+1615j
		test	eax, eax

loc_401A3A:				; CODE XREF: sub_401610+16D4j
		jnz	loc_4031D2	; default
					; jumptable 0040166B cases 64,65

loc_401A40:				; CODE XREF: sub_401610+75Aj
					; sub_401610+9EDj ...
		mov	[ebp+var_4], 1
		jmp	loc_4031D2	; default
					; jumptable 0040166B cases 64,65
; ---------------------------------------------------------------------------

loc_401A4C:				; CODE XREF: sub_401610+5Bj
					; DATA XREF: .text:off_4031E4o
		and	esi, 7		; jumptable 0040166B case 18
		test	byte ptr dword_426444+1, 4
		mov	[ebp+arg_0], esi
		jnz	short loc_401A73
		push	31h
		pop	esi
		call	sub_401508
		mov	ebx, eax
		push	ebx
		mov	[ebp+var_10], ebx
		call	sub_406003	; lstrlen
		jmp	loc_401B10
; ---------------------------------------------------------------------------

loc_401A73:				; CODE XREF: sub_401610+449j
		push	36h
		pop	esi
		call	sub_401508
		mov	ebx, eax
		push	ebx
		mov	[ebp+var_10], ebx
		call	sub_406003	; lstrlen
		push	dword_4201B0
		mov	esi, eax
		call	sub_406003	; lstrlen
		lea	ecx, [eax+esi+1]
		mov	eax, 105h
		cmp	ecx, eax
		jb	short loc_401AAF
		push	dword_4201B0
		call	sub_406003	; lstrlen
		lea	eax, [eax+esi+1]

loc_401AAF:				; CODE XREF: sub_401610+48Ej
		push	eax
		call	sub_405DBB
		mov	edi, eax
		test	edi, edi
		mov	[ebp+var_C], edi
		jz	loc_402E4D
		push	dword_4201B0
		push	edi
		call	sub_405FFD	; lstrcpy
		push	ebx
		push	edi
		call	ds:dword_4080A4	; lstrcat
		push	edi
		call	sub_406003	; lstrlen
		lea	esi, [eax+edi-1]
		jmp	short loc_401AF1
; ---------------------------------------------------------------------------

loc_401AE2:				; CODE XREF: sub_401610+4E3j
		cmp	byte ptr [esi],	5Ch
		jz	short loc_401AF5
		push	esi
		push	edi
		call	ds:dword_40822C	; CharPrevA
		mov	esi, eax

loc_401AF1:				; CODE XREF: sub_401610+4D0j
		cmp	esi, edi
		ja	short loc_401AE2

loc_401AF5:				; CODE XREF: sub_401610+4D5j
		push	edi
		mov	byte ptr [esi],	0
		call	sub_406301
		test	eax, eax
		jz	loc_402E4D
		push	edi
		push	ebx
		mov	byte ptr [esi],	5Ch
		call	sub_405FFD	; lstrcpy

loc_401B10:				; CODE XREF: sub_401610+45Ej
		mov	eax, [ebp+var_38]
		sar	eax, 3
		push	ebx
		and	eax, 2
		push	eax
		push	[ebp+arg_0]
		push	offset aFileOverwritef ; "File:	overwriteflag=%d, allowskipfilesf"...
		call	sub_40614C
		add	esp, 10h
		push	ebx
		call	sub_405DE6
		test	eax, eax
		mov	esi, offset dword_40A488
		push	ebx
		jz	short loc_401B43
		push	esi
		call	sub_405FFD	; lstrcpy
		jmp	short loc_401B5B
; ---------------------------------------------------------------------------

loc_401B43:				; CODE XREF: sub_401610+529j
		push	offset dword_42C800
		push	esi
		call	sub_405FFD	; lstrcpy
		push	eax
		call	sub_4061A6
		push	eax
		call	ds:dword_4080A4	; lstrcat

loc_401B5B:				; CODE XREF: sub_401610+531j
		push	esi
		call	sub_406009
		mov	ebx, offset byte_40A888
		mov	edi, offset dword_40AC88

loc_401B6B:				; CODE XREF: sub_401610+626j
		cmp	[ebp+arg_0], 3
		jl	short loc_401BA2
		push	esi
		call	sub_406168
		xor	ecx, ecx
		test	eax, eax
		jz	short loc_401B8D
		lea	ecx, [ebp+var_2C]
		push	ecx
		add	eax, 14h
		push	eax
		call	ds:dword_408090	; CompareFileTime
		mov	ecx, eax

loc_401B8D:				; CODE XREF: sub_401610+56Bj
		mov	eax, [ebp+arg_0]
		add	eax, 0FFFFFFFDh
		or	eax, 80000000h
		and	eax, ecx
		neg	eax
		sbb	eax, eax
		inc	eax
		mov	[ebp+arg_0], eax

loc_401BA2:				; CODE XREF: sub_401610+55Fj
		cmp	[ebp+arg_0], 0
		jnz	short loc_401BBA
		push	esi
		call	ds:dword_40808C	; GetFileAttributesA
		and	eax, 0FFFFFFFEh
		push	eax
		push	esi
		call	ds:dword_4080AC	; SetFileAttributesA

loc_401BBA:				; CODE XREF: sub_401610+596j
		xor	eax, eax
		cmp	[ebp+arg_0], 1
		setnz	al
		inc	eax
		push	eax
		push	40000000h
		push	esi
		call	sub_405E7A
		cmp	eax, 0FFFFFFFFh
		mov	[ebp+var_8], eax
		jnz	loc_401C93
		cmp	[ebp+arg_0], 0
		jnz	short loc_401C51
		push	esi
		push	offset aFileErrorCreat ; "File:	error creating \"%s\""
		call	sub_40614C
		pop	ecx
		pop	ecx
		push	offset dword_427000
		push	edi
		call	sub_405FFD	; lstrcpy
		push	esi
		push	offset dword_427000
		call	sub_405FFD	; lstrcpy
		push	[ebp+var_24]
		push	ebx
		call	sub_4065B7
		push	edi
		push	offset dword_427000
		call	sub_405FFD	; lstrcpy
		mov	eax, [ebp+var_38]
		sar	eax, 3
		push	eax
		push	ebx
		call	sub_405D79
		sub	eax, 4
		jnz	short loc_401C3B
		push	offset aFileErrorUserR ; "File:	error, user retry"
		call	sub_40614C
		pop	ecx
		jmp	loc_401B6B
; ---------------------------------------------------------------------------

loc_401C3B:				; CODE XREF: sub_401610+619j
		dec	eax
		jz	short loc_401C7D
		push	offset aFileErrorUserA ; "File:	error, user abort"
		call	sub_40614C
		pop	ecx
		push	esi
		push	0FFFFFFFAh
		jmp	loc_40169F
; ---------------------------------------------------------------------------

loc_401C51:				; CODE XREF: sub_401610+5D0j
		push	[ebp+var_10]
		push	0FFFFFFE2h
		call	sub_40509F
		cmp	[ebp+arg_0], 2
		jnz	short loc_401C67
		inc	dword_426468

loc_401C67:				; CODE XREF: sub_401610+64Fj
		push	[ebp+arg_0]
		push	esi
		push	offset aFileSkippedSOv ; "File:	skipped: \"%s\"	(overwriteflag=%d)"
		call	sub_40614C
		add	esp, 0Ch
		jmp	loc_4031C3
; ---------------------------------------------------------------------------

loc_401C7D:				; CODE XREF: sub_401610+62Cj
		push	offset aFileErrorUserC ; "File:	error, user cancel"
		call	sub_40614C
		inc	dword_426468
		pop	ecx
		jmp	loc_4031DB
; ---------------------------------------------------------------------------

loc_401C93:				; CODE XREF: sub_401610+5C6j
		push	[ebp+var_10]
		push	0FFFFFFEAh
		call	sub_40509F
		inc	dword_40A040
		xor	ebx, ebx
		push	ebx
		push	ebx
		push	[ebp+var_8]
		push	[ebp+var_30]
		call	sub_40362B
		dec	dword_40A040
		mov	edi, eax
		push	esi
		push	edi
		push	offset aFileWroteDToS ;	"File: wrote %d	to \"%s\""
		call	sub_40614C
		add	esp, 0Ch
		cmp	[ebp+var_2C], 0FFFFFFFFh
		jnz	short loc_401CD5
		cmp	[ebp+var_28], 0FFFFFFFFh
		jz	short loc_401CE4

loc_401CD5:				; CODE XREF: sub_401610+6BDj
		lea	eax, [ebp+var_2C]
		push	eax
		push	ebx
		push	eax
		push	[ebp+var_8]
		call	ds:dword_408088	; SetFileTime

loc_401CE4:				; CODE XREF: sub_401610+6C3j
		push	[ebp+var_8]
		call	ds:dword_408084	; CloseHandle
		cmp	edi, ebx
		jge	loc_4031C3
		cmp	edi, 0FFFFFFFEh
		jnz	short loc_401D0E
		push	0FFFFFFE9h
		push	esi
		call	sub_4065B7
		push	[ebp+var_10]
		push	esi
		call	ds:dword_4080A4	; lstrcat
		jmp	short loc_401D16
; ---------------------------------------------------------------------------

loc_401D0E:				; CODE XREF: sub_401610+6E8j
		push	0FFFFFFEEh
		push	esi
		call	sub_4065B7

loc_401D16:				; CODE XREF: sub_401610+6FCj
		push	esi
		push	offset aS	; "%s"
		call	sub_40614C
		pop	ecx
		pop	ecx
		push	200010h
		push	esi

loc_401D29:				; CODE XREF: sub_401610+1220j
		call	sub_405D79
		jmp	loc_402E4D
; ---------------------------------------------------------------------------

loc_401D33:				; CODE XREF: sub_401610+5Bj
					; DATA XREF: .text:off_4031E4o
		xor	esi, esi	; jumptable 0040166B case 19
		call	sub_401508
		mov	esi, eax
		push	esi
		push	offset aDeleteS	; "Delete: \"%s\""
		jmp	short loc_401D9A
; ---------------------------------------------------------------------------

loc_401D44:				; CODE XREF: sub_401610+5Bj
					; DATA XREF: .text:off_4031E4o
		push	31h		; jumptable 0040166B case 20
		pop	esi
		call	sub_401508
		mov	esi, eax
		push	esi
		push	[ebp+var_38]
		push	offset aMessageboxDS ; "MessageBox: %d,\"%s\""
		call	sub_40614C
		add	esp, 0Ch
		push	[ebp+var_38]
		push	esi
		call	sub_405D79
		test	eax, eax
		jz	loc_401A40
		cmp	eax, [ebp+var_30]
		jz	loc_401ECB
		cmp	eax, [ebp+var_28]
		jnz	loc_4031D2	; default
					; jumptable 0040166B cases 64,65
		mov	eax, [ebp+var_24]
		jmp	loc_4031DD
; ---------------------------------------------------------------------------

loc_401D8A:				; CODE XREF: sub_401610+5Bj
					; DATA XREF: .text:off_4031E4o
		push	0FFFFFFF0h	; jumptable 0040166B case 21
		pop	esi
		call	sub_401508
		mov	esi, eax
		push	esi
		push	offset aRmdirS	; "RMDir: \"%s\""

loc_401D9A:				; CODE XREF: sub_401610+732j
		call	sub_40614C
		pop	ecx
		pop	ecx
		push	[ebp+var_34]
		push	esi
		call	sub_4067E6
		jmp	loc_4031D2	; default
					; jumptable 0040166B cases 64,65
; ---------------------------------------------------------------------------

loc_401DAF:				; CODE XREF: sub_401610+5Bj
					; DATA XREF: .text:off_4031E4o
		xor	esi, esi	; jumptable 0040166B case 22
		inc	esi
		call	sub_401508
		push	eax
		call	sub_406003	; lstrlen

loc_401DBD:				; CODE XREF: sub_401610+B34j
					; sub_401610+C2Aj ...
		push	eax
		jmp	loc_4017CD
; ---------------------------------------------------------------------------

loc_401DC3:				; CODE XREF: sub_401610+5Bj
					; DATA XREF: .text:off_4031E4o
		push	2		; jumptable 0040166B case 23
		pop	ecx
		call	sub_4014F2
		push	3
		pop	ecx
		mov	[ebp+arg_0], eax
		call	sub_4014F2
		xor	esi, esi
		inc	esi
		mov	ebx, eax
		call	sub_401508
		cmp	[ebp+var_30], 0
		mov	esi, eax
		mov	byte ptr [edi],	0
		jz	short loc_401DF5
		cmp	[ebp+arg_0], 0
		jz	loc_4031D2	; default
					; jumptable 0040166B cases 64,65

loc_401DF5:				; CODE XREF: sub_401610+7D9j
		push	esi
		call	sub_406003	; lstrlen
		test	ebx, ebx
		jge	short loc_401E07
		add	ebx, eax
		js	loc_4031D2	; default
					; jumptable 0040166B cases 64,65

loc_401E07:				; CODE XREF: sub_401610+7EDj
		cmp	ebx, eax
		jle	short loc_401E0D
		mov	ebx, eax

loc_401E0D:				; CODE XREF: sub_401610+7F9j
		add	esi, ebx
		push	esi
		push	edi
		call	sub_405FFD	; lstrcpy
		mov	esi, [ebp+arg_0]
		test	esi, esi
		jz	loc_4031D2	; default
					; jumptable 0040166B cases 64,65
		jge	short loc_401E34
		push	edi
		call	sub_406003	; lstrlen
		add	esi, eax
		jns	short loc_401E34
		and	[ebp+arg_0], 0
		mov	esi, [ebp+arg_0]

loc_401E34:				; CODE XREF: sub_401610+811j
					; sub_401610+81Bj
		cmp	esi, 400h
		jge	loc_4031D2	; default
					; jumptable 0040166B cases 64,65
		mov	byte ptr [esi+edi], 0
		jmp	loc_4031D2	; default
					; jumptable 0040166B cases 64,65
; ---------------------------------------------------------------------------

loc_401E49:				; CODE XREF: sub_401610+5Bj
					; DATA XREF: .text:off_4031E4o
		push	20h		; jumptable 0040166B case 24
		pop	esi
		call	sub_401508
		push	31h
		pop	esi
		mov	edi, eax
		call	sub_401508
		push	eax
		push	edi
		call	ds:dword_408080	; lstrcmpi
		test	eax, eax
		jnz	short loc_401ECB
		jmp	loc_4018D8
; ---------------------------------------------------------------------------

loc_401E6C:				; CODE XREF: sub_401610+5Bj
					; DATA XREF: .text:off_4031E4o
		xor	esi, esi	; jumptable 0040166B case 25
		inc	esi
		call	sub_401508
		cmp	[ebp+var_30], 0
		push	400h
		push	edi
		push	eax
		jz	short loc_401E92
		call	ds:dword_40807C	; GetEnvironmentVariableA
		test	eax, eax
		jnz	short loc_401E98
		mov	[ebp+var_4], esi
		mov	[edi], al
		jmp	short loc_401E98
; ---------------------------------------------------------------------------

loc_401E92:				; CODE XREF: sub_401610+86Fj
		call	ds:dword_408078	; ExpandEnvironmentStringsA

loc_401E98:				; CODE XREF: sub_401610+879j
					; sub_401610+880j
		mov	byte ptr [edi+3FFh], 0
		jmp	loc_4031D2	; default
					; jumptable 0040166B cases 64,65
; ---------------------------------------------------------------------------

loc_401EA4:				; CODE XREF: sub_401610+5Bj
					; DATA XREF: .text:off_4031E4o
		xor	ecx, ecx	; jumptable 0040166B case 26
		call	sub_4014F2
		xor	ecx, ecx
		inc	ecx
		mov	esi, eax
		call	sub_4014F2
		cmp	[ebp+var_24], 0
		jnz	short loc_401EC7
		cmp	esi, eax
		jl	short loc_401ECB
		jle	loc_4018D8
		jmp	short loc_401ED9
; ---------------------------------------------------------------------------

loc_401EC7:				; CODE XREF: sub_401610+8A9j
		cmp	esi, eax
		jnb	short loc_401ED3

loc_401ECB:				; CODE XREF: sub_401610+763j
					; sub_401610+855j ...
		mov	eax, [ebp+var_2C]
		jmp	loc_4031DD
; ---------------------------------------------------------------------------

loc_401ED3:				; CODE XREF: sub_401610+8B9j
		jbe	loc_4018D8

loc_401ED9:				; CODE XREF: sub_401610+8B5j
		mov	eax, [ebp+var_28]
		jmp	loc_4031DD
; ---------------------------------------------------------------------------

loc_401EE1:				; CODE XREF: sub_401610+5Bj
					; DATA XREF: .text:off_4031E4o
		xor	ebx, ebx	; jumptable 0040166B case 27
		inc	ebx
		mov	ecx, ebx
		call	sub_4014F2
		push	2
		pop	ecx
		mov	esi, eax
		call	sub_4014F2
		mov	ecx, eax
		mov	eax, [ebp+var_2C]
		cmp	eax, 0Ch	; switch 13 cases
		ja	short loc_401F67 ; default
		jmp	ds:off_4032F0[eax*4] ; switch jump

loc_401F06:				; DATA XREF: .text:off_4032F0o
		add	esi, ecx	; jumptable 00401EFF case 0
		jmp	short loc_401F67 ; default
; ---------------------------------------------------------------------------

loc_401F0A:				; CODE XREF: sub_401610+8EFj
					; DATA XREF: .text:off_4032F0o
		sub	esi, ecx	; jumptable 00401EFF case 1
		jmp	short loc_401F67 ; default
; ---------------------------------------------------------------------------

loc_401F0E:				; CODE XREF: sub_401610+8EFj
					; DATA XREF: .text:off_4032F0o
		imul	ecx, esi	; jumptable 00401EFF case 2
		mov	esi, ecx
		jmp	short loc_401F67 ; default
; ---------------------------------------------------------------------------

loc_401F15:				; CODE XREF: sub_401610+8EFj
					; DATA XREF: .text:off_4032F0o
		test	ecx, ecx	; jumptable 00401EFF case 3
		jz	short loc_401F5A
		mov	eax, esi
		cdq
		idiv	ecx

loc_401F1E:				; CODE XREF: sub_401610+925j
		mov	esi, eax
		jmp	short loc_401F67 ; default
; ---------------------------------------------------------------------------

loc_401F22:				; CODE XREF: sub_401610+8EFj
					; DATA XREF: .text:off_4032F0o
		or	esi, ecx	; jumptable 00401EFF case 4
		jmp	short loc_401F67 ; default
; ---------------------------------------------------------------------------

loc_401F26:				; CODE XREF: sub_401610+8EFj
					; DATA XREF: .text:off_4032F0o
		and	esi, ecx	; jumptable 00401EFF case 5
		jmp	short loc_401F67 ; default
; ---------------------------------------------------------------------------

loc_401F2A:				; CODE XREF: sub_401610+8EFj
					; DATA XREF: .text:off_4032F0o
		xor	esi, ecx	; jumptable 00401EFF case 6
		jmp	short loc_401F67 ; default
; ---------------------------------------------------------------------------

loc_401F2E:				; CODE XREF: sub_401610+8EFj
					; DATA XREF: .text:off_4032F0o
		xor	eax, eax	; jumptable 00401EFF case 7
		test	esi, esi
		setz	al
		jmp	short loc_401F1E
; ---------------------------------------------------------------------------

loc_401F37:				; CODE XREF: sub_401610+8EFj
					; DATA XREF: .text:off_4032F0o
		test	esi, esi	; jumptable 00401EFF case 8
		jnz	short loc_401F49
		jmp	short loc_401F45
; ---------------------------------------------------------------------------

loc_401F3D:				; CODE XREF: sub_401610+933j
					; sub_401610+937j
		xor	esi, esi
		jmp	short loc_401F67 ; default
; ---------------------------------------------------------------------------

loc_401F41:				; CODE XREF: sub_401610+8EFj
					; DATA XREF: .text:off_4032F0o
		test	esi, esi	; jumptable 00401EFF case 9
		jz	short loc_401F3D

loc_401F45:				; CODE XREF: sub_401610+92Bj
		test	ecx, ecx
		jz	short loc_401F3D

loc_401F49:				; CODE XREF: sub_401610+929j
		mov	esi, ebx
		jmp	short loc_401F67 ; default
; ---------------------------------------------------------------------------

loc_401F4D:				; CODE XREF: sub_401610+8EFj
					; DATA XREF: .text:off_4032F0o
		test	ecx, ecx	; jumptable 00401EFF case 10
		jz	short loc_401F5A
		mov	eax, esi
		cdq
		idiv	ecx
		mov	esi, edx
		jmp	short loc_401F67 ; default
; ---------------------------------------------------------------------------

loc_401F5A:				; CODE XREF: sub_401610+907j
					; sub_401610+93Fj
		xor	esi, esi
		mov	[ebp+var_4], ebx
		jmp	short loc_401F67 ; default
; ---------------------------------------------------------------------------

loc_401F61:				; CODE XREF: sub_401610+8EFj
					; DATA XREF: .text:off_4032F0o
		shl	esi, cl		; jumptable 00401EFF case 11
		jmp	short loc_401F67 ; default
; ---------------------------------------------------------------------------

loc_401F65:				; CODE XREF: sub_401610+8EFj
					; DATA XREF: .text:off_4032F0o
		sar	esi, cl		; jumptable 00401EFF case 12

loc_401F67:				; CODE XREF: sub_401610+8EDj
					; sub_401610+8F8j ...
		push	esi		; default
		jmp	loc_4017CD
; ---------------------------------------------------------------------------

loc_401F6D:				; CODE XREF: sub_401610+5Bj
					; DATA XREF: .text:off_4031E4o
		xor	esi, esi	; jumptable 0040166B case 28
		inc	esi
		call	sub_401508
		push	2
		pop	ecx
		mov	esi, eax
		call	sub_4014F2
		push	eax
		push	esi
		push	edi
		call	ds:dword_408230	; wsprintfA
		jmp	loc_402ABF
; ---------------------------------------------------------------------------

loc_401F8D:				; CODE XREF: sub_401610+5Bj
					; DATA XREF: .text:off_4031E4o
		mov	eax, [ebp+var_30] ; jumptable 0040166B case 29
		test	eax, eax
		mov	esi, dword_40A480
		jz	short loc_401FEA

loc_401F9A:				; CODE XREF: sub_401610+993j
		dec	eax
		test	esi, esi
		jz	short loc_401FA9
		test	eax, eax
		mov	esi, [esi]
		jnz	short loc_401F9A
		test	esi, esi
		jnz	short loc_401FBD

loc_401FA9:				; CODE XREF: sub_401610+98Dj
		push	[ebp+var_30]
		push	offset aExchStackDElem ; "Exch:	stack <	%d elements"
		call	sub_40614C
		pop	ecx
		pop	ecx
		jmp	loc_402821
; ---------------------------------------------------------------------------

loc_401FBD:				; CODE XREF: sub_401610+997j
		lea	edi, [esi+4]
		push	edi
		mov	esi, offset dword_40A488
		push	esi
		call	sub_405FFD	; lstrcpy
		mov	eax, dword_40A480
		add	eax, 4
		push	eax
		push	edi
		call	sub_405FFD	; lstrcpy
		mov	eax, dword_40A480
		push	esi
		add	eax, 4
		push	eax
		jmp	loc_4030E5
; ---------------------------------------------------------------------------

loc_401FEA:				; CODE XREF: sub_401610+988j
		test	edx, edx
		jz	short loc_402019
		test	esi, esi
		jnz	short loc_402002
		push	offset aPopStackEmpty ;	"Pop: stack empty"
		call	sub_40614C
		pop	ecx
		jmp	loc_401A40
; ---------------------------------------------------------------------------

loc_402002:				; CODE XREF: sub_401610+9E0j
		lea	eax, [esi+4]
		push	eax
		push	edi
		call	sub_405FFD	; lstrcpy
		mov	eax, [esi]
		mov	dword_40A480, eax
		push	esi
		jmp	loc_4031CC
; ---------------------------------------------------------------------------

loc_402019:				; CODE XREF: sub_401610+9DCj
		push	404h
		call	sub_405DBB
		push	[ebp+var_38]
		mov	esi, eax
		lea	eax, [esi+4]
		push	eax
		call	sub_4065B7
		mov	eax, dword_40A480
		mov	[esi], eax
		mov	dword_40A480, esi
		jmp	loc_4031D2	; default
					; jumptable 0040166B cases 64,65
; ---------------------------------------------------------------------------

loc_402043:				; CODE XREF: sub_401610+5Bj
					; DATA XREF: .text:off_4031E4o
		push	33h		; jumptable 0040166B cases 30,31
		pop	esi
		call	sub_401508
		push	44h
		pop	esi
		mov	[ebp+var_C], eax
		call	sub_401508
		xor	esi, esi
		inc	esi
		test	byte ptr [ebp+var_24], 1
		mov	[ebp+arg_0], eax
		jnz	short loc_40206D
		push	[ebp+var_C]
		call	sub_405F74
		mov	[ebp+var_C], eax

loc_40206D:				; CODE XREF: sub_401610+A50j
		test	byte ptr [ebp+var_24], 2
		jnz	short loc_40207E
		push	[ebp+arg_0]
		call	sub_405F74
		mov	[ebp+arg_0], eax

loc_40207E:				; CODE XREF: sub_401610+A61j
		cmp	[ebp+var_3C], 21h
		jnz	short loc_4020CC
		mov	ecx, esi
		call	sub_4014F2
		push	2
		pop	ecx
		mov	esi, eax
		call	sub_4014F2
		mov	ecx, [ebp+var_24]
		sar	ecx, 2
		jz	short loc_4020BC
		lea	edx, [ebp+var_8]
		push	edx
		push	ecx
		push	0
		push	[ebp+arg_0]
		push	[ebp+var_C]
		push	eax
		push	esi
		call	ds:dword_408234	; SendMessageTimeoutA
		neg	eax
		sbb	eax, eax
		inc	eax
		mov	[ebp+var_4], eax
		jmp	short loc_4020FC
; ---------------------------------------------------------------------------

loc_4020BC:				; CODE XREF: sub_401610+A8Bj
		push	[ebp+arg_0]
		push	[ebp+var_C]
		push	eax
		push	esi
		call	ds:dword_408278	; SendMessageA
		jmp	short loc_4020F9
; ---------------------------------------------------------------------------

loc_4020CC:				; CODE XREF: sub_401610+A72j
		call	sub_401508
		push	12h
		pop	esi
		mov	ebx, eax
		call	sub_401508
		mov	cl, [eax]
		neg	cl
		sbb	ecx, ecx
		and	ecx, eax
		mov	al, [ebx]
		neg	al
		push	ecx
		sbb	eax, eax
		and	eax, ebx
		push	eax
		push	[ebp+arg_0]
		push	[ebp+var_C]
		call	ds:dword_408238	; FindWindowExA

loc_4020F9:				; CODE XREF: sub_401610+ABAj
		mov	[ebp+var_8], eax

loc_4020FC:				; CODE XREF: sub_401610+AAAj
		cmp	[ebp+var_38], 0
		jl	loc_4031D2	; default
					; jumptable 0040166B cases 64,65
		push	[ebp+var_8]
		jmp	loc_4017CD
; ---------------------------------------------------------------------------

loc_40210E:				; CODE XREF: sub_401610+5Bj
					; DATA XREF: .text:off_4031E4o
		xor	ecx, ecx	; jumptable 0040166B case 32
		call	sub_4014F2
		push	eax
		call	ds:dword_40823C	; IsWindow
		test	eax, eax
		jz	loc_4018D8

loc_402124:				; CODE XREF: sub_401610+2B2j
		mov	eax, [ebp+var_34]
		jmp	loc_4031DD
; ---------------------------------------------------------------------------

loc_40212C:				; CODE XREF: sub_401610+5Bj
					; DATA XREF: .text:off_4031E4o
		push	2		; jumptable 0040166B case 33
		pop	ecx
		call	sub_4014F2
		xor	ecx, ecx
		push	eax
		inc	ecx
		call	sub_4014F2
		push	eax
		call	ds:dword_408240	; GetDlgItem
		jmp	loc_401DBD
; ---------------------------------------------------------------------------

loc_402149:				; CODE XREF: sub_401610+5Bj
					; DATA XREF: .text:off_4031E4o
		mov	eax, dword_426428 ; jumptable 0040166B case 34
		add	eax, edx
		push	eax
		push	0FFFFFFEBh
		xor	ecx, ecx
		call	sub_4014F2
		push	eax
		call	ds:dword_408244	; SetWindowLongA
		jmp	loc_4031D2	; default
					; jumptable 0040166B cases 64,65
; ---------------------------------------------------------------------------

loc_402166:				; CODE XREF: sub_401610+5Bj
					; DATA XREF: .text:off_4031E4o
		push	edx		; jumptable 0040166B case 35
		push	[ebp+var_10]
		call	ds:dword_408240	; GetDlgItem
		mov	edi, eax
		lea	eax, [ebp+var_54]
		push	eax
		push	edi
		call	ds:dword_408268	; GetClientRect
		mov	eax, [ebp+var_48]
		imul	eax, [ebp+var_30]
		push	10h
		push	eax
		mov	eax, [ebp+var_4C]
		imul	eax, [ebp+var_30]
		push	eax
		xor	ebx, ebx
		push	ebx
		xor	esi, esi
		call	sub_401508
		push	eax
		push	ebx
		call	ds:dword_408248	; LoadImageA
		push	eax
		push	ebx
		push	172h
		push	edi
		call	ds:dword_408278	; SendMessageA
		cmp	eax, ebx
		jz	loc_4031D2	; default
					; jumptable 0040166B cases 64,65
		push	eax
		call	ds:dword_408040	; DeleteObject
		jmp	loc_4031D2	; default
					; jumptable 0040166B cases 64,65
; ---------------------------------------------------------------------------

loc_4021C3:				; CODE XREF: sub_401610+5Bj
					; DATA XREF: .text:off_4031E4o
		push	48h		; jumptable 0040166B case 36
		push	5Ah
		push	[ebp+var_10]
		call	ds:dword_40824C	; GetDC
		push	eax
		call	ds:dword_40803C	; GetDeviceCaps
		push	eax
		push	2
		pop	ecx
		call	sub_4014F2
		push	eax
		call	ds:dword_408124	; MulDiv
		push	3
		neg	eax
		pop	ecx
		mov	dword_40C088, eax
		call	sub_4014F2
		push	[ebp+var_34]
		mov	dword_40C098, eax
		mov	al, byte ptr [ebp+var_28]
		mov	cl, al
		and	cl, 1
		mov	byte_40C09C, cl
		mov	cl, al
		and	cl, 2
		and	al, 4
		push	offset dword_40C0A4
		mov	byte_40C09D, cl
		mov	byte_40C09E, al
		mov	byte_40C09F, 1
		call	sub_4065B7
		push	offset dword_40C088
		call	ds:dword_408048	; CreateFontIndirectA
		jmp	loc_401DBD
; ---------------------------------------------------------------------------

loc_40223F:				; CODE XREF: sub_401610+5Bj
					; DATA XREF: .text:off_4031E4o
		xor	ecx, ecx	; jumptable 0040166B case 37
		call	sub_4014F2
		xor	ecx, ecx
		inc	ecx
		mov	esi, eax
		call	sub_4014F2
		cmp	[ebp+var_30], 0
		mov	edi, eax
		jz	short loc_402263
		push	offset aHidewindow ; "HideWindow"
		call	sub_40614C
		pop	ecx

loc_402263:				; CODE XREF: sub_401610+C46j
		cmp	[ebp+var_2C], 0
		push	edi
		push	esi
		jnz	short loc_402276
		call	ds:dword_408228	; ShowWindow
		jmp	loc_4031D2	; default
					; jumptable 0040166B cases 64,65
; ---------------------------------------------------------------------------

loc_402276:				; CODE XREF: sub_401610+C59j
		call	ds:dword_408250	; EnableWindow
		jmp	loc_4031D2	; default
					; jumptable 0040166B cases 64,65
; ---------------------------------------------------------------------------

loc_402281:				; CODE XREF: sub_401610+5Bj
					; DATA XREF: .text:off_4031E4o
		xor	esi, esi	; jumptable 0040166B case 38
		call	sub_401508
		push	31h
		pop	esi
		mov	edi, eax
		call	sub_401508
		push	22h
		pop	esi
		mov	ebx, eax
		call	sub_401508
		push	ebx
		push	edi
		push	offset aSS	; "%s %s"
		push	offset byte_40A888
		mov	esi, eax
		call	ds:dword_408230	; wsprintfA
		add	esp, 10h
		push	0FFFFFFECh
		call	sub_4014E1
		mov	al, [esi]
		push	[ebp+var_2C]
		neg	al
		push	offset dword_42C800
		sbb	eax, eax
		and	eax, esi
		push	eax
		mov	al, [edi]
		neg	al
		push	ebx
		sbb	eax, eax
		and	eax, edi
		push	eax
		push	[ebp+var_10]
		call	ds:dword_408164
		cmp	eax, 21h
		jge	short loc_4022F9
		push	eax
		push	esi
		push	ebx
		push	edi
		push	offset aExecshellWarni ; "ExecShell: warning: error (\"%s\": file:\""...
		call	sub_40614C
		add	esp, 14h
		jmp	loc_401A40
; ---------------------------------------------------------------------------

loc_4022F9:				; CODE XREF: sub_401610+CD1j
		push	esi
		push	ebx
		push	edi
		push	offset aExecshellSucce ; "ExecShell: success (\"%s\": file:\"%s\" par"...
		call	sub_40614C
		add	esp, 10h
		jmp	loc_4031D2	; default
					; jumptable 0040166B cases 64,65
; ---------------------------------------------------------------------------

loc_40230E:				; CODE XREF: sub_401610+5Bj
					; DATA XREF: .text:off_4031E4o
		xor	esi, esi	; jumptable 0040166B case 39
		call	sub_401508
		mov	esi, eax
		push	esi
		push	offset aExecCommandS ; "Exec: command=\"%s\""
		call	sub_40614C
		pop	ecx
		pop	ecx
		push	esi
		push	0FFFFFFEBh
		call	sub_40509F
		push	offset dword_42C800
		push	esi
		call	sub_405D01
		test	eax, eax
		mov	[ebp+arg_0], eax
		push	esi
		jz	loc_4023CF
		push	offset aExecSuccessS ; "Exec: success (\"%s\")"
		call	sub_40614C
		cmp	[ebp+var_30], 0
		pop	ecx
		pop	ecx
		jz	short loc_4023C7
		push	64h
		push	[ebp+arg_0]
		call	ds:dword_408074	; WaitForSingleObject
		mov	esi, 102h
		cmp	eax, esi
		jnz	short loc_40239C
		mov	edi, ds:dword_408254
		jmp	short loc_40237B
; ---------------------------------------------------------------------------

loc_402371:				; CODE XREF: sub_401610+D7Bj
		lea	eax, [ebp+var_60]
		push	eax
		call	ds:dword_408258	; DispatchMessageA

loc_40237B:				; CODE XREF: sub_401610+D5Fj
					; sub_401610+D8Aj
		push	1
		push	0Fh
		push	0Fh
		lea	eax, [ebp+var_60]
		push	0
		push	eax
		call	edi	; PeekMessageA
		test	eax, eax
		jnz	short loc_402371
		push	64h
		push	[ebp+arg_0]
		call	ds:dword_408074	; WaitForSingleObject
		cmp	eax, esi
		jz	short loc_40237B

loc_40239C:				; CODE XREF: sub_401610+D57j
		lea	eax, [ebp+var_18]
		push	eax
		push	[ebp+arg_0]
		call	ds:dword_408070	; GetExitCodeProcess
		cmp	[ebp+var_34], 0
		jl	short loc_4023BA
		push	[ebp+var_18]
		push	ebx
		call	sub_405F5B
		jmp	short loc_4023C7
; ---------------------------------------------------------------------------

loc_4023BA:				; CODE XREF: sub_401610+D9Dj
		cmp	[ebp+var_18], 0
		jz	short loc_4023C7
		mov	[ebp+var_4], 1

loc_4023C7:				; CODE XREF: sub_401610+D43j
					; sub_401610+DA8j ...
		push	[ebp+arg_0]
		jmp	loc_402BAD
; ---------------------------------------------------------------------------

loc_4023CF:				; CODE XREF: sub_401610+D2Dj
		mov	[ebp+var_4], 1
		push	offset aExecFailedCrea ; "Exec:	failed createprocess (\"%s\")"
		jmp	loc_4030A5
; ---------------------------------------------------------------------------

loc_4023E0:				; CODE XREF: sub_401610+5Bj
					; DATA XREF: .text:off_4031E4o
		push	2		; jumptable 0040166B case 40
		pop	esi
		call	sub_401508
		push	eax
		call	sub_406168
		mov	esi, eax
		test	esi, esi
		jz	short loc_402405
		push	dword ptr [esi+14h]
		push	ebx
		call	sub_405F5B
		push	dword ptr [esi+18h]
		jmp	loc_4017CD
; ---------------------------------------------------------------------------

loc_402405:				; CODE XREF: sub_401610+DE2j
		mov	byte ptr [edi],	0
		mov	byte ptr [ebx],	0
		jmp	loc_401A40
; ---------------------------------------------------------------------------

loc_402410:				; CODE XREF: sub_401610+5Bj
					; DATA XREF: .text:off_4031E4o
		push	0FFFFFFEEh	; jumptable 0040166B case 41
		lea	eax, [ebp+var_54]
		pop	esi
		mov	[ebp+arg_0], eax
		call	sub_401508
		lea	ecx, [ebp+var_40]
		push	ecx
		push	eax
		mov	[ebp+var_14], eax
		call	sub_407484
		mov	esi, eax
		test	esi, esi
		mov	byte ptr [edi],	0
		mov	byte ptr [ebx],	0
		mov	[ebp+var_4], 1
		jz	loc_4031D2	; default
					; jumptable 0040166B cases 64,65
		push	esi
		call	sub_405DBB
		test	eax, eax
		mov	[ebp+var_18], eax
		jz	loc_4031D2	; default
					; jumptable 0040166B cases 64,65
		push	eax
		push	esi
		push	0
		push	[ebp+var_14]
		call	sub_40747E
		test	eax, eax
		jz	short loc_402498
		lea	eax, [ebp+var_14]
		push	eax
		lea	eax, [ebp+arg_0]
		push	eax
		push	offset asc_408558 ; "\\"
		push	[ebp+var_18]
		call	sub_407478
		test	eax, eax
		jz	short loc_402498
		mov	eax, [ebp+arg_0]
		push	dword ptr [eax+8]
		push	edi
		call	sub_405F5B
		mov	eax, [ebp+arg_0]
		push	dword ptr [eax+0Ch]
		push	ebx
		call	sub_405F5B
		and	[ebp+var_4], 0

loc_402498:				; CODE XREF: sub_401610+E51j
					; sub_401610+E6Aj
		push	[ebp+var_18]
		jmp	loc_4031CC
; ---------------------------------------------------------------------------

loc_4024A0:				; CODE XREF: sub_401610+5Bj
					; DATA XREF: .text:off_4031E4o
		xor	edi, edi	; jumptable 0040166B case 42
		inc	edi
		push	8001h
		mov	[ebp+var_4], edi
		call	ds:dword_40806C	; SetErrorMode
		cmp	dword_426490, 0
		jl	loc_4025E9
		push	0FFFFFFF0h
		pop	esi
		call	sub_401508
		mov	esi, edi
		mov	[ebp+arg_0], eax
		call	sub_401508
		cmp	[ebp+var_28], 0
		mov	[ebp+var_8], eax
		jz	short loc_4024E9
		push	[ebp+arg_0]
		call	ds:dword_408068	; GetModuleHandleA
		test	eax, eax
		mov	[ebp+var_C], eax
		jnz	short loc_40253E

loc_4024E9:				; CODE XREF: sub_401610+EC7j
		mov	esi, ds:dword_408064
		xor	edi, edi
		push	edi
		push	edi
		lea	eax, [ebp+var_14]
		push	eax
		push	400h
		call	esi	; RtlGetLastWin32Error
		mov	ebx, ds:dword_408060
		push	eax
		push	edi
		mov	edi, 1300h
		push	edi
		call	ebx	; FormatMessageA
		push	[ebp+arg_0]
		push	0FFFFFFF6h
		call	sub_40509F
		push	[ebp+var_14]
		push	[ebp+arg_0]
		push	offset aRegdllCouldNot ; "RegDLL: Could	not load '%s' -> '%s'"
		call	sub_40614C
		add	esp, 0Ch
		push	[ebp+arg_0]
		call	ds:dword_4080C0	; LoadLibraryA
		test	eax, eax
		mov	[ebp+var_C], eax
		jz	short loc_4025B8
		xor	edi, edi
		inc	edi

loc_40253E:				; CODE XREF: sub_401610+ED7j
		push	[ebp+var_8]
		push	[ebp+var_C]
		call	ds:dword_40812C	; GetProcAddress
		mov	esi, eax
		xor	ebx, ebx
		cmp	esi, ebx
		jz	short loc_40258B
		cmp	[ebp+var_30], ebx
		mov	[ebp+var_4], ebx
		jz	short loc_40256D
		push	[ebp+var_30]
		call	sub_4014E1
		call	esi	; RtlGetLastWin32Error
		test	eax, eax
		jz	short loc_4025A8
		mov	[ebp+var_4], edi
		jmp	short loc_4025A8
; ---------------------------------------------------------------------------

loc_40256D:				; CODE XREF: sub_401610+F48j
		push	offset off_40A000
		push	offset dword_40A480
		push	offset dword_427000
		push	400h
		push	[ebp+var_10]
		call	esi	; RtlGetLastWin32Error
		add	esp, 14h
		jmp	short loc_4025A8
; ---------------------------------------------------------------------------

loc_40258B:				; CODE XREF: sub_401610+F40j
		push	[ebp+var_8]
		push	0FFFFFFF7h
		call	sub_40509F
		push	[ebp+arg_0]
		push	[ebp+var_8]
		push	offset aErrorRegisteri ; "Error	registering DLL: %s not	found in "...
		call	sub_40614C
		add	esp, 0Ch

loc_4025A8:				; CODE XREF: sub_401610+F56j
					; sub_401610+F5Bj ...
		cmp	[ebp+var_2C], ebx
		jnz	short loc_4025FB
		push	[ebp+var_C]
		call	ds:dword_408130	; FreeLibrary
		jmp	short loc_4025FB
; ---------------------------------------------------------------------------

loc_4025B8:				; CODE XREF: sub_401610+F29j
		push	0
		push	0
		lea	eax, [ebp+var_14]
		push	eax
		push	400h
		call	esi	; RtlGetLastWin32Error
		push	eax
		push	0
		push	edi
		call	ebx	; FormatMessageA
		push	0FFFFFFF6h
		call	sub_4014E1
		push	[ebp+var_14]
		push	[ebp+arg_0]
		push	offset aErrorRegiste_0 ; "Error	registering DLL: Could not load	'"...
		call	sub_40614C
		add	esp, 0Ch
		jmp	short loc_4025FB
; ---------------------------------------------------------------------------

loc_4025E9:				; CODE XREF: sub_401610+EA8j
		push	0FFFFFFE7h
		call	sub_4014E1
		push	offset aErrorRegiste_1 ; "Error	registering DLL: Could not initia"...
		call	sub_40614C
		pop	ecx

loc_4025FB:				; CODE XREF: sub_401610+F9Bj
					; sub_401610+FA6j ...
		push	0
		call	ds:dword_40806C	; SetErrorMode
		jmp	loc_4031D2	; default
					; jumptable 0040166B cases 64,65
; ---------------------------------------------------------------------------

loc_402608:				; CODE XREF: sub_401610+5Bj
					; DATA XREF: .text:off_4031E4o
		push	0FFFFFFF0h	; jumptable 0040166B case 43
		pop	esi
		call	sub_401508
		push	0FFFFFFDFh
		pop	esi
		mov	[ebp+var_8], eax
		call	sub_401508
		push	2
		pop	esi
		mov	edi, eax
		call	sub_401508
		push	0FFFFFFCDh
		pop	esi
		mov	[ebp+var_40], eax
		call	sub_401508
		push	45h
		pop	esi
		mov	[ebp+var_18], eax
		call	sub_401508
		push	edi
		mov	[ebp+var_14], eax
		call	sub_405DE6
		test	eax, eax
		jnz	short loc_402650
		push	21h
		pop	esi
		call	sub_401508

loc_402650:				; CODE XREF: sub_401610+1036j
		mov	eax, [ebp+var_28]
		mov	ecx, eax
		sar	ecx, 10h
		push	ecx
		movzx	ecx, ah
		push	ecx
		mov	esi, 0FFh
		and	eax, esi
		push	eax
		push	[ebp+var_18]
		push	[ebp+var_40]
		push	edi
		push	[ebp+var_8]
		push	offset aCreateshortcut ; "CreateShortCut: out: \"%s\", in: \"%s	%s\","...
		call	sub_40614C
		add	esp, 20h
		lea	eax, [ebp+arg_0]
		push	eax
		push	offset dword_408DDC
		push	1
		push	0
		push	offset dword_408DEC
		call	ds:dword_408298
		test	eax, eax
		jl	loc_40276F
		mov	eax, [ebp+arg_0]
		mov	ecx, [eax]
		lea	edx, [ebp+var_C]
		push	edx
		push	offset dword_408DFC
		push	eax
		call	dword ptr [ecx]
		mov	ebx, eax
		test	ebx, ebx
		jl	loc_402762
		mov	eax, [ebp+arg_0]
		mov	ecx, [eax]
		push	edi
		push	eax
		call	dword ptr [ecx+50h]
		mov	ebx, eax
		mov	eax, [ebp+arg_0]
		mov	ecx, [eax]
		push	offset dword_42C800
		push	eax
		call	dword ptr [ecx+24h]
		mov	ecx, [ebp+var_28]
		mov	eax, ecx
		sar	eax, 8
		and	eax, esi
		jz	short loc_4026EA
		mov	ecx, [ebp+arg_0]
		mov	edx, [ecx]
		push	eax
		push	ecx
		call	dword ptr [edx+3Ch]
		mov	ecx, [ebp+var_28]

loc_4026EA:				; CODE XREF: sub_401610+10CBj
		mov	eax, [ebp+arg_0]
		mov	edx, [eax]
		sar	ecx, 10h
		push	ecx
		push	eax
		call	dword ptr [edx+34h]
		mov	ecx, [ebp+var_18]
		cmp	byte ptr [ecx],	0
		jz	short loc_40270F
		mov	edi, [ebp+var_28]
		mov	eax, [ebp+arg_0]
		mov	edx, [eax]
		and	edi, esi
		push	edi
		push	ecx
		push	eax
		call	dword ptr [edx+44h]

loc_40270F:				; CODE XREF: sub_401610+10EDj
		mov	eax, [ebp+arg_0]
		push	[ebp+var_40]
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+2Ch]
		mov	eax, [ebp+arg_0]
		push	[ebp+var_14]
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+1Ch]
		xor	eax, eax
		cmp	ebx, eax
		jl	short loc_402759
		push	400h
		mov	esi, offset word_40B888
		push	esi
		push	0FFFFFFFFh
		push	[ebp+var_8]
		mov	word_40B888, ax
		push	eax
		push	eax
		call	ds:dword_408134	; MultiByteToWideChar
		mov	eax, [ebp+var_C]
		mov	ecx, [eax]
		push	1
		push	esi
		push	eax
		call	dword ptr [ecx+18h]
		mov	ebx, eax

loc_402759:				; CODE XREF: sub_401610+111Bj
		mov	eax, [ebp+var_C]
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+8]

loc_402762:				; CODE XREF: sub_401610+10A1j
		mov	eax, [ebp+arg_0]
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+8]
		test	ebx, ebx
		jge	short loc_40277A

loc_40276F:				; CODE XREF: sub_401610+1086j
		mov	[ebp+var_4], 1
		push	0FFFFFFF0h
		jmp	short loc_40277C
; ---------------------------------------------------------------------------

loc_40277A:				; CODE XREF: sub_401610+115Dj
		push	0FFFFFFF4h

loc_40277C:				; CODE XREF: sub_401610+289j
					; sub_401610+33Cj ...
		call	sub_4014E1
		jmp	loc_4031D2	; default
					; jumptable 0040166B cases 64,65
; ---------------------------------------------------------------------------

loc_402786:				; CODE XREF: sub_401610+5Bj
					; DATA XREF: .text:off_4031E4o
		xor	esi, esi	; jumptable 0040166B case 44
		call	sub_401508
		push	11h
		pop	esi
		mov	ebx, eax
		call	sub_401508
		mov	esi, eax
		push	esi
		push	ebx
		push	offset aCopyfilesSS ; "CopyFiles \"%s\"->\"%s\""
		call	sub_40614C
		mov	eax, [ebp+var_10]
		add	esp, 0Ch
		push	ebx
		mov	[ebp+var_60], eax
		mov	[ebp+var_5C], 2
		call	sub_406003	; lstrlen
		push	esi
		mov	byte ptr [eax+ebx+1], 0
		call	sub_406003	; lstrlen
		push	0FFFFFFF8h
		mov	edi, offset dword_40AC88
		push	edi
		mov	byte ptr [eax+esi+1], 0
		call	sub_4065B7
		push	esi
		push	edi
		call	ds:dword_4080A4	; lstrcat
		mov	ax, word ptr [ebp+var_30]
		push	edi
		push	0
		mov	[ebp+var_58], ebx
		mov	[ebp+var_54], esi
		mov	[ebp+var_48+2],	edi
		mov	[ebp+var_50], ax
		call	sub_40509F
		lea	eax, [ebp+var_60]
		push	eax
		call	ds:dword_408174
		test	eax, eax
		jz	loc_4031D2	; default
					; jumptable 0040166B cases 64,65
		push	0
		push	0FFFFFFF9h
		call	sub_40509F
		jmp	loc_401A40
; ---------------------------------------------------------------------------

loc_402819:				; CODE XREF: sub_401610+5Bj
					; DATA XREF: .text:off_4031E4o
		cmp	esi, 0BADF00Dh	; jumptable 0040166B case 45
		jz	short loc_402835

loc_402821:				; CODE XREF: sub_401610+9A8j
		push	200010h
		push	0FFFFFFE8h
		push	0
		call	sub_4065B7
		push	eax
		jmp	loc_401D29
; ---------------------------------------------------------------------------

loc_402835:				; CODE XREF: sub_401610+120Fj
		inc	dword_426474
		jmp	loc_4031D2	; default
					; jumptable 0040166B cases 64,65
; ---------------------------------------------------------------------------

loc_402840:				; CODE XREF: sub_401610+5Bj
					; DATA XREF: .text:off_4031E4o
		xor	esi, esi	; jumptable 0040166B case 46
		push	offset aRm	; "<RM>"
		mov	ebx, offset byte_40A888
		push	ebx
		mov	[ebp+var_40], esi
		mov	[ebp+var_18], esi
		mov	[ebp+arg_0], esi
		call	sub_405FFD	; lstrcpy
		push	ebx
		mov	edi, offset dword_40AC88
		push	edi
		call	sub_405FFD	; lstrcpy
		cmp	[ebp+var_38], esi
		jz	short loc_402874
		call	sub_401508
		mov	[ebp+var_40], eax

loc_402874:				; CODE XREF: sub_401610+125Aj
		cmp	[ebp+var_34], 0
		jz	short loc_402885
		push	11h
		pop	esi
		call	sub_401508
		mov	[ebp+var_18], eax

loc_402885:				; CODE XREF: sub_401610+1268j
		cmp	[ebp+var_28], 0
		jz	short loc_402896
		push	22h
		pop	esi
		call	sub_401508
		mov	[ebp+arg_0], eax

loc_402896:				; CODE XREF: sub_401610+1279j
		push	0FFFFFFCDh
		pop	esi
		call	sub_401508
		mov	esi, eax
		push	esi
		push	edi
		push	ebx
		push	offset dword_40A488
		push	offset aWriteinistrWro ; "WriteINIStr: wrote [%s] %s=%s	in %s"
		call	sub_40614C
		add	esp, 14h
		push	esi
		push	[ebp+arg_0]
		push	[ebp+var_18]
		push	[ebp+var_40]
		call	ds:dword_408138	; WritePrivateProfileStringA
		jmp	loc_401A38
; ---------------------------------------------------------------------------

loc_4028CA:				; CODE XREF: sub_401610+5Bj
					; DATA XREF: .text:off_4031E4o
		xor	esi, esi	; jumptable 0040166B case 47
		inc	esi
		mov	[ebp+arg_0], 7E4E21h
		call	sub_401508
		push	12h
		pop	esi
		mov	ebx, eax
		call	sub_401508
		push	0FFFFFFDDh
		pop	esi
		mov	[ebp+var_14], eax
		call	sub_401508
		push	eax
		push	3FFh
		push	edi
		lea	eax, [ebp+arg_0]
		push	eax
		push	[ebp+var_14]
		push	ebx
		call	ds:dword_408140	; GetPrivateProfileStringA
		mov	eax, [edi]
		cmp	eax, [ebp+arg_0]
		jmp	loc_401A14
; ---------------------------------------------------------------------------

loc_40290D:				; CODE XREF: sub_401610+5Bj
					; DATA XREF: .text:off_4031E4o
		cmp	[ebp+var_28], 0	; jumptable 0040166B case 48
		jnz	short loc_402957
		push	2
		call	sub_4015C7
		mov	edi, eax
		test	edi, edi
		jz	loc_401A40
		push	33h
		pop	esi
		call	sub_401508
		mov	esi, eax
		push	esi
		push	edi
		call	ds:dword_408010	; RegDeleteValueA
		push	esi
		push	offset dword_40AC88
		push	[ebp+var_34]
		mov	ebx, eax
		push	offset aDeleteregvalue ; "DeleteRegValue: %d\\%s\\%s"
		call	sub_40614C
		add	esp, 10h
		push	edi
		call	ds:dword_408020	; RegCloseKey
		jmp	short loc_402993
; ---------------------------------------------------------------------------

loc_402957:				; CODE XREF: sub_401610+1301j
		push	22h
		pop	esi
		call	sub_401508
		mov	esi, eax
		push	esi
		push	[ebp+var_34]
		push	offset aDeleteregkeyDS ; "DeleteRegKey:	%d\\%s"
		call	sub_40614C
		mov	eax, [ebp+var_34]
		add	esp, 0Ch
		test	eax, eax
		jnz	short loc_402983
		mov	eax, dword_426464
		add	eax, 80000001h

loc_402983:				; CODE XREF: sub_401610+1367j
		mov	ecx, [ebp+var_28]
		and	ecx, 2
		push	ecx
		push	esi
		push	eax
		call	sub_401540
		mov	ebx, eax

loc_402993:				; CODE XREF: sub_401610+1345j
		test	ebx, ebx
		jz	loc_4031D2	; default
					; jumptable 0040166B cases 64,65
		jmp	loc_401A40
; ---------------------------------------------------------------------------

loc_4029A0:				; CODE XREF: sub_401610+5Bj
					; DATA XREF: .text:off_4031E4o
		xor	ebx, ebx	; jumptable 0040166B case 49
		cmp	esi, ebx
		jz	short loc_4029AB
		mov	[ebp+arg_0], esi
		jmp	short loc_4029B8
; ---------------------------------------------------------------------------

loc_4029AB:				; CODE XREF: sub_401610+1394j
		mov	eax, dword_426464
		add	eax, 80000001h
		mov	[ebp+arg_0], eax

loc_4029B8:				; CODE XREF: sub_401610+1399j
		mov	eax, [ebp+var_28]
		mov	[ebp+var_8], eax
		mov	eax, [ebp+var_24]
		push	2
		pop	esi
		mov	[ebp+var_14], eax
		call	sub_401508
		push	11h
		pop	esi
		mov	[ebp+var_C], eax
		call	sub_401508
		push	ebx
		lea	ecx, [ebp+var_18]
		push	ecx
		push	ebx
		push	2
		push	ebx
		push	ebx
		push	ebx
		push	eax
		push	[ebp+arg_0]
		mov	[ebp+var_10], eax
		mov	[ebp+var_4], 1
		call	ds:dword_408014	; RegCreateKeyExA
		test	eax, eax
		jnz	loc_402AAF
		xor	esi, esi
		cmp	[ebp+var_8], 1
		mov	edi, offset dword_40AC88
		jnz	short loc_402A33
		push	23h
		pop	esi
		call	sub_401508
		push	edi
		call	sub_406003	; lstrlen
		push	edi
		push	[ebp+var_C]
		mov	esi, eax
		push	[ebp+var_10]
		inc	esi
		push	[ebp+arg_0]
		push	offset aWriteregstrSet ; "WriteRegStr: set %d\\%s\\%s to %s"
		call	sub_40614C
		add	esp, 14h

loc_402A33:				; CODE XREF: sub_401610+13F9j
		cmp	[ebp+var_8], 4
		jnz	short loc_402A60
		push	3
		pop	ecx
		call	sub_4014F2
		push	4
		pop	esi
		push	eax
		push	[ebp+var_C]
		mov	dword_40AC88, eax
		push	[ebp+var_10]
		push	[ebp+arg_0]
		push	offset aWriteregdwordS ; "WriteRegDWORD: set %d\\%s\\%s	to %d"
		call	sub_40614C
		add	esp, 14h

loc_402A60:				; CODE XREF: sub_401610+1427j
		cmp	[ebp+var_8], 3
		jnz	short loc_402A8E
		push	0C00h
		push	edi
		push	ebx
		push	[ebp+var_2C]
		call	sub_40362B
		mov	esi, eax
		push	esi
		push	[ebp+var_C]
		push	[ebp+var_10]
		push	[ebp+arg_0]
		push	offset aWriteregbinSet ; "WriteRegBin: set %d\\%s\\%s with %d bytes"...
		call	sub_40614C
		add	esp, 14h

loc_402A8E:				; CODE XREF: sub_401610+1454j
		push	esi
		push	edi
		push	[ebp+var_14]
		push	ebx
		push	[ebp+var_C]
		push	[ebp+var_18]
		call	ds:dword_408018	; RegSetValueExA
		test	eax, eax
		jnz	short loc_402AA7
		mov	[ebp+var_4], ebx

loc_402AA7:				; CODE XREF: sub_401610+1492j
		push	[ebp+var_18]
		jmp	loc_402B92
; ---------------------------------------------------------------------------

loc_402AAF:				; CODE XREF: sub_401610+13E8j
		push	[ebp+var_10]
		push	[ebp+arg_0]
		push	offset aWriteregErrorC ; "WriteReg: error creating key %d\\%s"
		call	sub_40614C

loc_402ABF:				; CODE XREF: sub_401610+978j
		add	esp, 0Ch
		jmp	loc_4031D2	; default
					; jumptable 0040166B cases 64,65
; ---------------------------------------------------------------------------

loc_402AC7:				; CODE XREF: sub_401610+5Bj
					; DATA XREF: .text:off_4031E4o
		push	20019h		; jumptable 0040166B case 50
		call	sub_4015C7
		push	33h
		pop	esi
		mov	ebx, eax
		call	sub_401508
		xor	esi, esi
		cmp	ebx, esi
		mov	byte ptr [edi],	0
		jz	loc_401A40
		lea	ecx, [ebp+var_14]
		push	ecx
		push	edi
		lea	ecx, [ebp+arg_0]
		push	ecx
		push	esi
		push	eax
		push	ebx
		mov	[ebp+var_14], 400h
		call	ds:dword_40801C	; RegQueryValueExA
		xor	ecx, ecx
		inc	ecx
		test	eax, eax
		jnz	short loc_402B36
		cmp	[ebp+arg_0], 4
		jz	short loc_402B20
		cmp	[ebp+arg_0], ecx
		jz	short loc_402B19
		cmp	[ebp+arg_0], 2
		jnz	short loc_402B36

loc_402B19:				; CODE XREF: sub_401610+1501j
		cmp	[ebp+var_28], esi
		jz	short loc_402B3C
		jmp	short loc_402B39
; ---------------------------------------------------------------------------

loc_402B20:				; CODE XREF: sub_401610+14FCj
		cmp	[ebp+var_28], esi
		jnz	short loc_402B2C
		mov	[ebp+var_4], 1

loc_402B2C:				; CODE XREF: sub_401610+1513j
		push	dword ptr [edi]
		push	edi
		call	sub_405F5B
		jmp	short loc_402B3C
; ---------------------------------------------------------------------------

loc_402B36:				; CODE XREF: sub_401610+14F6j
					; sub_401610+1507j
		mov	byte ptr [edi],	0

loc_402B39:				; CODE XREF: sub_401610+150Ej
		mov	[ebp+var_4], ecx

loc_402B3C:				; CODE XREF: sub_401610+150Cj
					; sub_401610+1524j
		push	ebx
		jmp	short loc_402B92
; ---------------------------------------------------------------------------

loc_402B3F:				; CODE XREF: sub_401610+5Bj
					; DATA XREF: .text:off_4031E4o
		push	20019h		; jumptable 0040166B case 51
		call	sub_4015C7
		push	3
		pop	ecx
		mov	esi, eax
		call	sub_4014F2
		xor	edx, edx
		cmp	esi, edx
		mov	byte ptr [edi],	0
		jz	loc_401A40
		cmp	[ebp+var_28], edx
		mov	ecx, 3FFh
		mov	[ebp+arg_0], ecx
		jz	short loc_402B79
		push	ecx
		push	edi
		push	eax
		push	esi
		call	ds:dword_408004	; RegEnumKeyA
		jmp	short loc_402B8A
; ---------------------------------------------------------------------------

loc_402B79:				; CODE XREF: sub_401610+155Bj
		push	edx
		push	edx
		push	edx
		push	edx
		lea	ecx, [ebp+arg_0]
		push	ecx
		push	edi
		push	eax
		push	esi
		call	ds:dword_40800C	; RegEnumValueA

loc_402B8A:				; CODE XREF: sub_401610+1567j
		mov	byte ptr [edi+3FFh], 0
		push	esi

loc_402B92:				; CODE XREF: sub_401610+149Aj
					; sub_401610+152Dj
		call	ds:dword_408020	; RegCloseKey
		jmp	loc_4031D2	; default
					; jumptable 0040166B cases 64,65
; ---------------------------------------------------------------------------

loc_402B9D:				; CODE XREF: sub_401610+5Bj
					; DATA XREF: .text:off_4031E4o
		cmp	byte ptr [edi],	0 ; jumptable 0040166B case 52
		jz	loc_4031D2	; default
					; jumptable 0040166B cases 64,65
		push	edi
		call	sub_405F74
		push	eax

loc_402BAD:				; CODE XREF: sub_401610+DBAj
		call	ds:dword_408084	; CloseHandle
		jmp	loc_4031D2	; default
					; jumptable 0040166B cases 64,65
; ---------------------------------------------------------------------------

loc_402BB8:				; CODE XREF: sub_401610+5Bj
					; DATA XREF: .text:off_4031E4o
		push	0FFFFFFEDh	; jumptable 0040166B case 53
		pop	esi
		call	sub_401508
		push	[ebp+var_30]
		push	[ebp+var_34]
		push	eax
		call	sub_405E7A
		cmp	eax, 0FFFFFFFFh
		jnz	loc_401DBD

loc_402BD5:				; CODE XREF: sub_401610+1777j
		mov	byte ptr [edi],	0
		jmp	loc_401A40
; ---------------------------------------------------------------------------

loc_402BDD:				; CODE XREF: sub_401610+5Bj
					; DATA XREF: .text:off_4031E4o
		cmp	[ebp+var_30], 0	; jumptable 0040166B case 54
		jz	short loc_402BF5
		xor	ecx, ecx
		inc	ecx
		call	sub_4014F2
		mov	byte_40A888, al
		xor	eax, eax
		inc	eax
		jmp	short loc_402C03
; ---------------------------------------------------------------------------

loc_402BF5:				; CODE XREF: sub_401610+15D1j
		push	11h
		pop	esi
		call	sub_401508
		push	eax
		call	sub_406003	; lstrlen

loc_402C03:				; CODE XREF: sub_401610+15E3j
		cmp	byte ptr [edi],	0
		jz	loc_401A40
		push	0
		lea	ecx, [ebp+arg_0]
		push	ecx
		push	eax
		push	offset byte_40A888
		push	edi
		call	sub_405F74
		push	eax
		call	ds:dword_408144	; WriteFile
		jmp	loc_401A38
; ---------------------------------------------------------------------------

loc_402C2A:				; CODE XREF: sub_401610+5Bj
					; DATA XREF: .text:off_4031E4o
		push	2		; jumptable 0040166B case 55
		pop	ecx
		xor	esi, esi
		call	sub_4014F2
		cmp	eax, 1
		mov	[ebp+var_8], eax
		jl	loc_4031D2	; default
					; jumptable 0040166B cases 64,65
		mov	ecx, 3FFh
		cmp	eax, ecx
		jle	short loc_402C4C
		mov	[ebp+var_8], ecx

loc_402C4C:				; CODE XREF: sub_401610+1637j
		cmp	byte ptr [edi],	0
		jz	loc_402CDE
		push	edi
		mov	byte ptr [ebp+arg_0+3],	0
		call	sub_405F74
		cmp	[ebp+var_8], 0
		mov	edi, eax
		jle	short loc_402CDE

loc_402C67:				; CODE XREF: sub_401610+1697j
		push	0
		lea	eax, [ebp+var_14]
		push	eax
		push	1
		lea	eax, [ebp+var_19]
		push	eax
		push	edi
		call	ds:dword_408148	; ReadFile
		test	eax, eax
		jz	short loc_402CDE
		cmp	[ebp+var_14], 1
		jnz	short loc_402CDE
		cmp	[ebp+var_2C], 0
		jnz	short loc_402CAB
		cmp	byte ptr [ebp+arg_0+3],	0Dh
		jz	short loc_402CBB
		cmp	byte ptr [ebp+arg_0+3],	0Ah
		jz	short loc_402CBB
		mov	al, [ebp+var_19]
		mov	[esi+ebx], al
		inc	esi
		test	al, al
		mov	byte ptr [ebp+arg_0+3],	al
		jz	short loc_402CDE
		cmp	esi, [ebp+var_8]
		jl	short loc_402C67
		jmp	short loc_402CDE
; ---------------------------------------------------------------------------

loc_402CAB:				; CODE XREF: sub_401610+1678j
		movzx	eax, [ebp+var_19]
		push	eax
		push	ebx
		call	sub_405F5B
		jmp	loc_4031DB
; ---------------------------------------------------------------------------

loc_402CBB:				; CODE XREF: sub_401610+167Ej
					; sub_401610+1684j
		mov	al, [ebp+var_19]
		cmp	byte ptr [ebp+arg_0+3],	al
		jz	short loc_402CD1
		cmp	al, 0Dh
		jz	short loc_402CCB
		cmp	al, 0Ah
		jnz	short loc_402CD1

loc_402CCB:				; CODE XREF: sub_401610+16B5j
		mov	[esi+ebx], al
		inc	esi
		jmp	short loc_402CDE
; ---------------------------------------------------------------------------

loc_402CD1:				; CODE XREF: sub_401610+16B1j
					; sub_401610+16B9j
		push	1
		push	0
		push	0FFFFFFFFh
		push	edi
		call	ds:dword_40814C	; SetFilePointer

loc_402CDE:				; CODE XREF: sub_401610+163Fj
					; sub_401610+1655j ...
		mov	byte ptr [esi+ebx], 0
		test	esi, esi
		jmp	loc_401A3A
; ---------------------------------------------------------------------------

loc_402CE9:				; CODE XREF: sub_401610+5Bj
					; DATA XREF: .text:off_4031E4o
		cmp	byte ptr [edi],	0 ; jumptable 0040166B case 56
		jz	loc_4031D2	; default
					; jumptable 0040166B cases 64,65
		push	[ebp+var_2C]
		push	0
		push	2
		pop	ecx
		call	sub_4014F2
		push	eax
		push	edi
		call	sub_405F74
		push	eax
		call	ds:dword_40814C	; SetFilePointer
		cmp	[ebp+var_34], 0
		jl	loc_4031D2	; default
					; jumptable 0040166B cases 64,65
		jmp	loc_403166
; ---------------------------------------------------------------------------

loc_402D1C:				; CODE XREF: sub_401610+5Bj
					; DATA XREF: .text:off_4031E4o
		cmp	byte ptr [edi],	0 ; jumptable 0040166B case 57
		jz	loc_4031D2	; default
					; jumptable 0040166B cases 64,65
		push	edi
		call	sub_405F74
		push	eax
		call	ds:dword_408150	; FindClose
		jmp	loc_4031D2	; default
					; jumptable 0040166B cases 64,65
; ---------------------------------------------------------------------------

loc_402D37:				; CODE XREF: sub_401610+5Bj
					; DATA XREF: .text:off_4031E4o
		cmp	byte ptr [ebx],	0 ; jumptable 0040166B case 58
		jz	loc_401A1A
		lea	eax, [ebp+var_1A4]
		push	eax
		push	ebx
		call	sub_405F74
		push	eax
		call	ds:dword_408154	; FindNextFileA
		test	eax, eax
		jz	loc_401A1A

loc_402D5C:				; CODE XREF: sub_401610+1783j
		lea	eax, [ebp+var_178]
		push	eax
		push	edi
		jmp	loc_4030E5
; ---------------------------------------------------------------------------

loc_402D69:				; CODE XREF: sub_401610+5Bj
					; DATA XREF: .text:off_4031E4o
		push	2		; jumptable 0040166B case 59
		pop	esi
		call	sub_401508
		lea	ecx, [ebp+var_1A4]
		push	ecx
		push	eax
		call	ds:dword_408158	; FindFirstFileA
		cmp	eax, 0FFFFFFFFh
		jnz	short loc_402D8C
		mov	byte ptr [ebx],	0
		jmp	loc_402BD5
; ---------------------------------------------------------------------------

loc_402D8C:				; CODE XREF: sub_401610+1772j
		push	eax
		push	ebx
		call	sub_405F5B
		jmp	short loc_402D5C
; ---------------------------------------------------------------------------

loc_402D95:				; CODE XREF: sub_401610+5Bj
					; DATA XREF: .text:off_4031E4o
		xor	esi, esi	; jumptable 0040166B case 60
		mov	[ebp+var_40], 0FFFFFD66h
		call	sub_401508
		and	[ebp+var_18], esi
		test	byte ptr dword_426444+1, 4
		mov	edi, ds:dword_4080A4
		mov	[ebp+arg_0], eax
		jz	loc_402E63
		push	eax
		call	sub_406003	; lstrlen
		push	dword_4201B0
		mov	esi, eax
		call	sub_406003	; lstrlen
		lea	ecx, [eax+esi+1]
		mov	eax, 105h
		cmp	ecx, eax
		jb	short loc_402DEB
		push	dword_4201B0
		call	sub_406003	; lstrlen
		lea	eax, [eax+esi+1]

loc_402DEB:				; CODE XREF: sub_401610+17CAj
		push	eax
		call	sub_405DBB
		mov	ebx, eax
		test	ebx, ebx
		mov	[ebp+var_C], ebx
		jz	short loc_402E4D
		push	dword_4201B0
		push	ebx
		call	sub_405FFD	; lstrcpy
		push	5Ch
		push	[ebp+arg_0]
		call	sub_4061D3
		test	eax, eax
		jz	short loc_402E18
		inc	eax
		push	eax
		jmp	short loc_402E1B
; ---------------------------------------------------------------------------

loc_402E18:				; CODE XREF: sub_401610+1802j
		push	[ebp+arg_0]

loc_402E1B:				; CODE XREF: sub_401610+1806j
		push	ebx
		call	edi	; lstrcat
		push	ebx
		call	sub_406003	; lstrlen
		lea	esi, [eax+ebx-1]
		jmp	short loc_402E39
; ---------------------------------------------------------------------------

loc_402E2A:				; CODE XREF: sub_401610+182Ej
		cmp	byte ptr [esi],	5Ch
		jz	short loc_402E40
		push	esi
		push	ebx
		call	ds:dword_40822C	; CharPrevA
		mov	esi, eax

loc_402E39:				; CODE XREF: sub_401610+1818j
		cmp	esi, ebx
		mov	[ebp+var_18], esi
		ja	short loc_402E2A

loc_402E40:				; CODE XREF: sub_401610+181Dj
		push	ebx
		mov	byte ptr [esi],	0
		call	sub_406301
		test	eax, eax
		jnz	short loc_402E57

loc_402E4D:				; CODE XREF: sub_401610+94j
					; sub_401610+A3j ...
		mov	eax, 7FFFFFFFh
		jmp	loc_4031DD
; ---------------------------------------------------------------------------

loc_402E57:				; CODE XREF: sub_401610+183Bj
		push	ebx
		push	[ebp+arg_0]
		mov	byte ptr [esi],	5Ch
		call	sub_405FFD	; lstrcpy

loc_402E63:				; CODE XREF: sub_401610+17A6j
		push	[ebp+arg_0]
		call	sub_405DE6
		test	eax, eax
		push	[ebp+arg_0]
		mov	ebx, offset byte_40A888
		jz	short loc_402E7F
		push	ebx
		call	sub_405FFD	; lstrcpy
		jmp	short loc_402E93
; ---------------------------------------------------------------------------

loc_402E7F:				; CODE XREF: sub_401610+1865j
		push	offset byte_42C400
		push	ebx
		call	sub_405FFD	; lstrcpy
		push	eax
		call	sub_4061A6
		push	eax
		call	edi	; lstrcat

loc_402E93:				; CODE XREF: sub_401610+186Dj
		push	ebx
		call	sub_406009
		push	2
		push	40000000h
		push	ebx
		call	sub_405E7A
		cmp	eax, 0FFFFFFFFh
		mov	[ebp+var_8], eax
		jz	loc_402F5E
		mov	eax, dword_426448
		push	eax
		mov	[ebp+var_14], eax
		call	sub_405DBB
		test	eax, eax
		mov	[ebp+var_10], eax
		jz	loc_402F55
		push	0
		call	sub_403409
		push	[ebp+var_14]
		push	[ebp+var_10]
		call	sub_4033D7
		push	[ebp+var_30]
		call	sub_405DBB
		mov	esi, eax
		test	esi, esi
		mov	[ebp+var_40], esi
		jz	short loc_402F27
		push	[ebp+var_30]
		push	esi
		push	0
		push	[ebp+var_34]
		call	sub_40362B
		jmp	short loc_402F19
; ---------------------------------------------------------------------------

loc_402EFE:				; CODE XREF: sub_401610+190Cj
		mov	ecx, [esi]
		mov	eax, [esi+4]
		push	ecx
		mov	[ebp+var_4C], ecx
		mov	ecx, [ebp+var_10]
		add	esi, 8
		push	esi
		add	eax, ecx
		push	eax
		call	sub_405E5A
		add	esi, [ebp+var_4C]

loc_402F19:				; CODE XREF: sub_401610+18ECj
		cmp	byte ptr [esi],	0
		jnz	short loc_402EFE
		push	[ebp+var_40]
		call	ds:dword_40813C	; GlobalFree

loc_402F27:				; CODE XREF: sub_401610+18DCj
		xor	esi, esi
		push	esi
		lea	eax, [ebp+var_64]
		push	eax
		push	[ebp+var_14]
		push	[ebp+var_10]
		push	[ebp+var_8]
		call	ds:dword_408144	; WriteFile
		push	[ebp+var_10]
		call	ds:dword_40813C	; GlobalFree
		push	esi
		push	esi
		push	[ebp+var_8]
		push	0FFFFFFFFh
		call	sub_40362B
		mov	[ebp+var_40], eax

loc_402F55:				; CODE XREF: sub_401610+18B5j
		push	[ebp+var_8]
		call	ds:dword_408084	; CloseHandle

loc_402F5E:				; CODE XREF: sub_401610+189Cj
		push	ebx
		push	[ebp+var_40]
		push	offset aCreatedUninsta ; "created uninstaller: %d, \"%s\""
		call	sub_40614C
		add	esp, 0Ch
		cmp	[ebp+var_40], 0
		push	0FFFFFFF3h
		pop	esi
		jge	short loc_402F89
		push	0FFFFFFEFh
		pop	esi
		push	ebx
		call	ds:dword_408128	; DeleteFileA
		mov	[ebp+var_4], 1

loc_402F89:				; CODE XREF: sub_401610+1966j
		push	esi
		call	sub_4014E1
		test	byte ptr dword_426444+1, 4
		jz	loc_4031C3
		mov	eax, [ebp+var_18]
		mov	esi, [ebp+arg_0]
		push	offset asc_408330 ; " /x \""
		push	esi
		mov	byte ptr [eax],	0
		call	edi	; lstrcat
		push	dword_4201B0
		push	esi
		call	edi	; lstrcat
		push	offset a_?	; "\" _?="
		push	esi
		call	edi	; lstrcat
		push	[ebp+var_C]
		push	esi
		call	edi	; lstrcat
		push	[ebp+var_C]
		push	esi
		call	sub_405D01
		test	eax, eax
		mov	[ebp+arg_0], eax
		push	esi
		jz	short loc_40304A
		push	offset aFileExtraction ; "File Extraction: success (\"%s\")"
		call	sub_40614C
		mov	edi, ds:dword_408074
		pop	ecx
		pop	ecx
		push	64h
		push	[ebp+arg_0]
		call	edi	; WaitForSingleObject
		mov	esi, 102h
		cmp	eax, esi
		jnz	short loc_403026
		mov	ebx, ds:dword_408254
		jmp	short loc_403009
; ---------------------------------------------------------------------------

loc_402FFF:				; CODE XREF: sub_401610+1A09j
		lea	eax, [ebp+var_60]
		push	eax
		call	ds:dword_408258	; DispatchMessageA

loc_403009:				; CODE XREF: sub_401610+19EDj
					; sub_401610+1A14j
		push	1
		push	0Fh
		push	0Fh
		lea	eax, [ebp+var_60]
		push	0
		push	eax
		call	ebx	; PeekMessageA
		test	eax, eax
		jnz	short loc_402FFF
		push	64h
		push	[ebp+arg_0]
		call	edi	; WaitForSingleObject
		cmp	eax, esi
		jz	short loc_403009

loc_403026:				; CODE XREF: sub_401610+19E5j
		lea	eax, [ebp+var_14]
		push	eax
		push	[ebp+arg_0]
		call	ds:dword_408070	; GetExitCodeProcess
		cmp	[ebp+var_14], 0
		jz	short loc_40303C
		inc	[ebp+var_4]

loc_40303C:				; CODE XREF: sub_401610+1A27j
		push	[ebp+arg_0]
		call	ds:dword_408084	; CloseHandle
		jmp	loc_4031C3
; ---------------------------------------------------------------------------

loc_40304A:				; CODE XREF: sub_401610+19C3j
		inc	[ebp+var_4]
		push	offset aFileExtracti_0 ; "File Extraction: failed createprocess	o"...
		call	sub_40614C
		pop	ecx
		pop	ecx
		jmp	loc_4031C3
; ---------------------------------------------------------------------------

loc_40305E:				; CODE XREF: sub_401610+5Bj
					; DATA XREF: .text:off_4031E4o
		test	esi, esi	; jumptable 0040166B case 61
		jz	short loc_403097
		push	edx
		push	offset aSettingsLoggin ; "settings logging to %d"
		call	sub_40614C
		mov	eax, [ebp+var_34]
		push	eax
		push	offset aLoggingSetToD ;	"logging set to	%d"
		mov	dword_423F78, eax
		call	sub_40614C
		add	esp, 10h
		cmp	[ebp+var_34], 0
		jz	loc_4031D2	; default
					; jumptable 0040166B cases 64,65
		call	sub_4040E9
		jmp	loc_4031D2	; default
					; jumptable 0040166B cases 64,65
; ---------------------------------------------------------------------------

loc_403097:				; CODE XREF: sub_401610+1A50j
		xor	esi, esi
		inc	esi
		call	sub_401508
		push	eax
		push	offset aS	; "%s"

loc_4030A5:				; CODE XREF: sub_401610+369j
					; sub_401610+37Bj ...
		call	sub_40614C
		pop	ecx

loc_4030AB:				; CODE XREF: sub_401610+22Dj
		pop	ecx
		jmp	loc_4031D2	; default
					; jumptable 0040166B cases 64,65
; ---------------------------------------------------------------------------

loc_4030B1:				; CODE XREF: sub_401610+5Bj
					; DATA XREF: .text:off_4031E4o
		xor	ecx, ecx	; jumptable 0040166B case 62
		call	sub_4014F2
		mov	edi, eax
		cmp	edi, dword_42640C
		jnb	loc_401A40
		mov	eax, [ebp+var_30]
		mov	esi, edi
		imul	esi, 418h
		add	esi, dword_426408
		test	eax, eax
		jl	short loc_4030F2
		mov	ecx, [esi+eax*4]
		jnz	short loc_4030EF
		add	esi, 18h
		push	esi
		push	ebx

loc_4030E5:				; CODE XREF: sub_401610+9D5j
					; sub_401610+1754j
		call	sub_405FFD	; lstrcpy
		jmp	loc_4031D2	; default
					; jumptable 0040166B cases 64,65
; ---------------------------------------------------------------------------

loc_4030EF:				; CODE XREF: sub_401610+1ACEj
		push	ecx
		jmp	short loc_403167
; ---------------------------------------------------------------------------

loc_4030F2:				; CODE XREF: sub_401610+1AC9j
		or	ecx, 0FFFFFFFFh
		sub	ecx, eax
		mov	[ebp+var_30], ecx
		jz	short loc_403109
		xor	ecx, ecx
		inc	ecx
		call	sub_4014F2
		mov	[ebp+var_34], eax
		jmp	short loc_403119
; ---------------------------------------------------------------------------

loc_403109:				; CODE XREF: sub_401610+1AEAj
		push	[ebp+var_28]
		lea	eax, [esi+18h]
		push	eax
		call	sub_4065B7
		or	byte ptr [esi+9], 1

loc_403119:				; CODE XREF: sub_401610+1AF7j
		mov	eax, [ebp+var_30]
		mov	ecx, [ebp+var_34]
		mov	[esi+eax*4], ecx
		cmp	[ebp+var_2C], 0
		jz	loc_4031D2	; default
					; jumptable 0040166B cases 64,65
		push	edi
		call	sub_40117D
		jmp	loc_4031D2	; default
					; jumptable 0040166B cases 64,65
; ---------------------------------------------------------------------------

loc_403137:				; CODE XREF: sub_401610+5Bj
					; DATA XREF: .text:off_4031E4o
		xor	ecx, ecx	; jumptable 0040166B case 63
		call	sub_4014F2
		cmp	eax, 20h
		jnb	loc_401A40
		xor	ecx, ecx
		cmp	[ebp+var_2C], ecx
		jz	short loc_40316F
		cmp	[ebp+var_30], ecx
		jz	short loc_403160
		push	eax
		call	sub_4012A8
		call	sub_40129E
		jmp	short loc_4031D2 ; default
					; jumptable 0040166B cases 64,65
; ---------------------------------------------------------------------------

loc_403160:				; CODE XREF: sub_401610+1B41j
		push	ecx
		call	sub_4012F3

loc_403166:				; CODE XREF: sub_401610+1707j
		push	eax

loc_403167:				; CODE XREF: sub_401610+1AE0j
		push	ebx

loc_403168:				; CODE XREF: sub_401610+1BEj
		call	sub_405F5B
		jmp	short loc_4031D2 ; default
					; jumptable 0040166B cases 64,65
; ---------------------------------------------------------------------------

loc_40316F:				; CODE XREF: sub_401610+1B3Cj
		cmp	[ebp+var_30], ecx
		jz	short loc_403186
		mov	ecx, [ebp+var_34]
		mov	edx, dword_4263E8
		mov	[edx+eax*4+94h], ecx
		jmp	short loc_4031D2 ; default
					; jumptable 0040166B cases 64,65
; ---------------------------------------------------------------------------

loc_403186:				; CODE XREF: sub_401610+1B62j
		mov	ecx, dword_4263E8
		push	dword ptr [ecx+eax*4+94h]
		push	ebx
		call	sub_4065B7
		jmp	short loc_4031D2 ; default
					; jumptable 0040166B cases 64,65
; ---------------------------------------------------------------------------

loc_40319B:				; CODE XREF: sub_401610+5Bj
					; DATA XREF: .text:off_4031E4o
		mov	eax, dword_4229E8 ; jumptable 0040166B case 66
		push	0
		and	eax, esi
		push	eax
		push	0Bh
		push	[ebp+var_10]
		call	ds:dword_408278	; SendMessageA
		cmp	[ebp+var_38], 0
		jz	short loc_4031D2 ; default
					; jumptable 0040166B cases 64,65
		push	0
		push	0
		push	[ebp+var_10]
		call	ds:dword_40825C	; InvalidateRect

loc_4031C3:				; CODE XREF: sub_401610+668j
					; sub_401610+6DFj ...
		cmp	[ebp+var_C], 0
		jz	short loc_4031D2 ; default
					; jumptable 0040166B cases 64,65
		push	[ebp+var_C]

loc_4031CC:				; CODE XREF: sub_401610+A04j
					; sub_401610+E8Bj
		call	ds:dword_40813C	; GlobalFree

loc_4031D2:				; CODE XREF: sub_401610+55j
					; sub_401610+5Bj ...
		mov	eax, [ebp+var_4] ; default
					; jumptable 0040166B cases 64,65
		add	dword_426468, eax

loc_4031DB:				; CODE XREF: sub_401610+67Ej
					; sub_401610+16A6j
		xor	eax, eax

loc_4031DD:				; CODE XREF: sub_401610+72j
					; sub_401610+E9j ...
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn	4
sub_401610	endp

; ---------------------------------------------------------------------------
off_4031E4	dd offset loc_401672, offset loc_401687, offset	loc_4016A9
					; DATA XREF: sub_401610+5Br
		dd offset loc_4016C6, offset loc_4016FE, offset	loc_40174D ; jump table	for switch statement
		dd offset loc_401777, offset loc_4017D3, offset	loc_4017FF
		dd offset loc_401842, offset loc_40189E, offset	loc_401790
		dd offset loc_4017A7, offset loc_4017C6, offset	loc_4018E0
		dd offset loc_401990, offset loc_4019F5, offset	loc_401A29
		dd offset loc_401A4C, offset loc_401D33, offset	loc_401D44
		dd offset loc_401D8A, offset loc_401DAF, offset	loc_401DC3
		dd offset loc_401E49, offset loc_401E6C, offset	loc_401EA4
		dd offset loc_401EE1, offset loc_401F6D, offset	loc_401F8D
		dd offset loc_402043, offset loc_402043, offset	loc_40210E
		dd offset loc_40212C, offset loc_402149, offset	loc_402166
		dd offset loc_4021C3, offset loc_40223F, offset	loc_402281
		dd offset loc_40230E, offset loc_4023E0, offset	loc_402410
		dd offset loc_4024A0, offset loc_402608, offset	loc_402786
		dd offset loc_402819, offset loc_402840, offset	loc_4028CA
		dd offset loc_40290D, offset loc_4029A0, offset	loc_402AC7
		dd offset loc_402B3F, offset loc_402B9D, offset	loc_402BB8
		dd offset loc_402BDD, offset loc_402C2A, offset	loc_402CE9
		dd offset loc_402D1C, offset loc_402D37, offset	loc_402D69
		dd offset loc_402D95, offset loc_40305E, offset	loc_4030B1
		dd offset loc_403137, offset loc_4031D2, offset	loc_4031D2
		dd offset loc_40319B
off_4032F0	dd offset loc_401F06	; DATA XREF: sub_401610+8EFr
		dd offset loc_401F0A	; jump table for switch	statement
		dd offset loc_401F0E
		dd offset loc_401F15
		dd offset loc_401F22
		dd offset loc_401F26
		dd offset loc_401F2A
		dd offset loc_401F2E
		dd offset loc_401F37
		dd offset loc_401F41
		dd offset loc_401F4D
		dd offset loc_401F61
		dd offset loc_401F65
; ---------------------------------------------------------------------------

loc_403324:				; DATA XREF: sub_403420+10Eo
					; sub_403756+14Do
		mov	eax, [esp+8]
		cmp	eax, 110h
		push	ebp
		mov	ebp, [esp+8]
		push	esi
		mov	esi, 113h
		jnz	short loc_403355
		push	0
		push	0FAh
		push	1
		push	ebp
		call	ds:dword_408188	; SetTimer
		mov	eax, [esp+18h]
		mov	dword_41C194, eax
		mov	eax, esi

loc_403355:				; CODE XREF: .text:00403338j
		cmp	eax, esi
		jnz	short loc_4033D0
		mov	ecx, dword_41C190
		mov	eax, dword_41C198
		cmp	ecx, eax
		jl	short loc_40336A
		mov	ecx, eax

loc_40336A:				; CODE XREF: .text:00403366j
		push	ebx
		push	edi
		push	eax
		push	64h
		push	ecx
		call	ds:dword_408124	; MulDiv
		mov	edi, ds:dword_408230
		mov	ebx, eax
		mov	eax, dword_41C194
		test	eax, eax
		mov	esi, offset dword_40C0C8
		jz	short loc_4033B1
		push	ebx
		push	eax
		push	esi
		call	edi	; wsprintfA
		add	esp, 0Ch
		push	esi
		push	ebp
		call	ds:dword_408184	; SetWindowTextA
		push	esi
		push	406h
		push	ebp
		call	sub_405D57	; SetDlgItemTextA
		push	5
		push	ebp
		call	ds:dword_408228	; ShowWindow

loc_4033B1:				; CODE XREF: .text:0040338Aj
		test	byte ptr dword_40A040, 1
		jz	short loc_4033CE
		push	ebx
		push	offset a___D	; "... %d%%"
		push	esi
		call	edi	; wsprintfA
		add	esp, 0Ch
		push	esi
		push	0
		call	sub_40509F

loc_4033CE:				; CODE XREF: .text:004033B8j
		pop	edi
		pop	ebx

loc_4033D0:				; CODE XREF: .text:00403357j
		pop	esi
		xor	eax, eax
		pop	ebp
		retn	10h

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

; Attributes: bp-based frame


sub_4033D7	proc near		; CODE XREF: sub_401610+18C8p
					; sub_403420+7Bp ...

arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		push	esi
		mov	esi, [ebp+arg_4]
		push	0
		lea	eax, [ebp+arg_4]
		push	eax
		push	esi
		push	[ebp+arg_0]
		push	dword_40A00C
		call	ds:dword_408148	; ReadFile
		test	eax, eax
		jz	short loc_403402
		cmp	[ebp+arg_4], esi
		jnz	short loc_403402
		xor	eax, eax
		inc	eax
		jmp	short loc_403404
; ---------------------------------------------------------------------------

loc_403402:				; CODE XREF: sub_4033D7+1Fj
					; sub_4033D7+24j
		xor	eax, eax

loc_403404:				; CODE XREF: sub_4033D7+29j
		pop	esi
		pop	ebp
		retn	8
sub_4033D7	endp


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



sub_403409	proc near		; CODE XREF: sub_401610+18BDp
					; sub_403420+39p ...

arg_0		= dword	ptr  4

		push	0
		push	0
		push	[esp+8+arg_0]
		push	dword_40A00C
		call	ds:dword_40814C	; SetFilePointer
		retn	4
sub_403409	endp


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



sub_403420	proc near		; CODE XREF: sub_40362B+30p
					; sub_40362B+70p

var_24		= dword	ptr -24h
var_20		= dword	ptr -20h
var_1C		= byte ptr -1Ch
arg_0		= dword	ptr  4

		sub	esp, 24h
		push	ebx
		push	ebp
		push	esi
		push	edi
		xor	edi, edi
		mov	[esp+34h+var_24], edi
		call	ds:dword_4080B4	; GetTickCount
		mov	esi, dword_4201A0
		sub	esi, dword_4201AC
		mov	ebx, eax
		add	esi, [esp+34h+arg_0]
		add	ebx, 1F4h
		cmp	esi, edi
		jle	loc_403611
		push	dword_4201A8
		call	sub_403409
		push	edi
		push	edi
		push	dword_4201AC
		push	dword_40A010
		call	ds:dword_40814C	; SetFilePointer
		mov	dword_41C198, esi
		mov	dword_41C190, edi

loc_40347E:				; CODE XREF: sub_403420+1B5j
		mov	eax, dword_4201A4
		sub	eax, dword_4201A8
		mov	ebp, 4000h
		cmp	eax, ebp
		jg	short loc_403494
		mov	ebp, eax

loc_403494:				; CODE XREF: sub_403420+70j
		push	ebp
		mov	esi, offset dword_41C1A0
		push	esi
		call	sub_4033D7
		test	eax, eax
		jz	loc_40361D
		add	dword_4201A8, ebp
		mov	dword_414120, esi
		mov	dword_414124, ebp

loc_4034BA:				; CODE XREF: sub_403420+18Ej
		cmp	dword_4263E8, edi
		jz	loc_403546
		cmp	dword_426480, edi
		jnz	short loc_403546
		cmp	[esp+34h+var_24], edi
		jz	short loc_403513
		mov	eax, dword_41C198
		sub	eax, dword_4201A0
		mov	esi, ds:dword_408254
		sub	eax, [esp+34h+arg_0]
		add	eax, dword_4201AC
		mov	dword_41C190, eax
		jmp	short loc_403501
; ---------------------------------------------------------------------------

loc_4034F6:				; CODE XREF: sub_403420+EFj
		lea	eax, [esp+34h+var_1C]
		push	eax
		call	ds:dword_408258	; DispatchMessageA

loc_403501:				; CODE XREF: sub_403420+D4j
		push	1
		push	edi
		push	edi
		lea	eax, [esp+40h+var_1C]
		push	edi
		push	eax
		call	esi	; PeekMessageA
		test	eax, eax
		jnz	short loc_4034F6
		jmp	short loc_403546
; ---------------------------------------------------------------------------

loc_403513:				; CODE XREF: sub_403420+B2j
		call	ds:dword_4080B4	; GetTickCount
		cmp	eax, ebx
		jbe	short loc_403546
		mov	eax, dword_4263E0
		neg	eax
		sbb	eax, eax
		not	eax
		and	eax, offset aUnpackingDataD ; "unpacking data: %d%%"
		push	eax
		push	offset loc_403324
		push	edi
		push	6Fh
		push	dword_4263E4
		call	ds:dword_408190	; CreateDialogParamA
		mov	[esp+34h+var_24], eax

loc_403546:				; CODE XREF: sub_403420+A0j
					; sub_403420+ACj ...
		push	offset dword_414108
		mov	dword_414128, offset dword_414190
		mov	dword_41412C, 8000h
		call	sub_4069FF
		test	eax, eax
		pop	ecx
		jl	loc_403626
		mov	esi, dword_414128
		mov	eax, offset dword_414190
		sub	esi, eax
		jz	short loc_4035B6
		push	edi
		lea	ecx, [esp+38h+var_20]
		push	ecx
		push	esi
		push	eax
		push	dword_40A010
		call	ds:dword_408144	; WriteFile
		test	eax, eax
		jz	loc_403622
		cmp	esi, [esp+34h+var_20]
		jnz	loc_403622
		add	dword_4201AC, esi
		cmp	dword_414124, edi
		jnz	loc_4034BA
		jmp	short loc_4035C2
; ---------------------------------------------------------------------------

loc_4035B6:				; CODE XREF: sub_403420+15Aj
		cmp	dword_414124, edi
		jnz	short loc_403626
		cmp	ebp, edi
		jz	short loc_403626

loc_4035C2:				; CODE XREF: sub_403420+194j
		mov	eax, dword_4201A0
		mov	ecx, eax
		sub	ecx, dword_4201AC
		add	ecx, [esp+34h+arg_0]
		test	ecx, ecx
		jg	loc_40347E
		push	edi
		push	edi
		push	eax
		push	dword_40A010
		call	ds:dword_40814C	; SetFilePointer
		mov	esi, [esp+34h+var_24]
		cmp	esi, edi
		jz	short loc_403611
		mov	eax, dword_41C198
		push	edi
		push	edi
		push	113h
		push	esi
		mov	dword_41C190, eax
		call	ds:dword_408278	; SendMessageA
		push	esi
		call	ds:dword_40818C	; DestroyWindow

loc_403611:				; CODE XREF: sub_403420+2Dj
					; sub_403420+1D0j
		xor	eax, eax

loc_403613:				; CODE XREF: sub_403420+200j
					; sub_403420+209j
		pop	edi
		pop	esi
		pop	ebp
		pop	ebx
		add	esp, 24h
		retn	4
; ---------------------------------------------------------------------------

loc_40361D:				; CODE XREF: sub_403420+82j
		or	eax, 0FFFFFFFFh
		jmp	short loc_403613
; ---------------------------------------------------------------------------

loc_403622:				; CODE XREF: sub_403420+172j
					; sub_403420+17Cj
		push	0FFFFFFFEh
		jmp	short loc_403628
; ---------------------------------------------------------------------------

loc_403626:				; CODE XREF: sub_403420+147j
					; sub_403420+19Cj ...
		push	0FFFFFFFDh

loc_403628:				; CODE XREF: sub_403420+204j
		pop	eax
		jmp	short loc_403613
sub_403420	endp


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

; Attributes: bp-based frame


sub_40362B	proc near		; CODE XREF: sub_401610+69Dp
					; sub_401610+1460p ...

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

		push	ebp
		mov	ebp, esp
		push	ecx
		push	ecx
		mov	eax, [ebp+arg_0]
		push	esi
		push	edi
		xor	edi, edi
		cmp	eax, edi
		jl	short loc_403657
		mov	ecx, dword_426438
		push	edi
		add	eax, ecx
		push	edi
		push	eax
		push	dword_40A010
		mov	dword_4201A0, eax
		call	ds:dword_40814C	; SetFilePointer

loc_403657:				; CODE XREF: sub_40362B+Ej
		push	4
		pop	esi
		push	esi
		call	sub_403420
		cmp	eax, edi
		jl	loc_403750
		push	ebx
		mov	ebx, ds:dword_408148
		push	edi
		lea	eax, [ebp+var_4]
		push	eax
		push	esi
		lea	eax, [ebp+arg_0]
		push	eax
		push	dword_40A010
		call	ebx	; ReadFile
		test	eax, eax
		jz	loc_40374C
		cmp	[ebp+var_4], esi
		jnz	loc_40374C
		push	[ebp+arg_0]
		add	dword_4201A0, esi
		call	sub_403420
		cmp	eax, edi
		mov	[ebp+var_8], eax
		jl	loc_40374F
		cmp	[ebp+arg_8], edi
		jnz	short loc_40371B
		cmp	[ebp+arg_0], edi
		jle	loc_403747
		mov	esi, offset dword_41C1A0

loc_4036BE:				; CODE XREF: sub_40362B+E8j
		mov	edi, 4000h
		cmp	[ebp+arg_0], edi
		jge	short loc_4036CB
		mov	edi, [ebp+arg_0]

loc_4036CB:				; CODE XREF: sub_40362B+9Bj
		push	0
		lea	eax, [ebp+var_4]
		push	eax
		push	edi
		push	esi
		push	dword_40A010
		call	ebx	; ReadFile
		test	eax, eax
		jz	short loc_40374C
		cmp	edi, [ebp+var_4]
		jnz	short loc_40374C
		push	0
		lea	eax, [ebp+arg_C]
		push	eax
		push	[ebp+var_4]
		push	esi
		push	[ebp+arg_4]
		call	ds:dword_408144	; WriteFile
		test	eax, eax
		jz	short loc_403717
		cmp	[ebp+arg_C], edi
		jnz	short loc_403717
		mov	eax, [ebp+var_4]
		add	[ebp+var_8], eax
		sub	[ebp+arg_0], eax
		add	dword_4201A0, eax
		cmp	[ebp+arg_0], 0
		jg	short loc_4036BE
		jmp	short loc_403747
; ---------------------------------------------------------------------------

loc_403717:				; CODE XREF: sub_40362B+CEj
					; sub_40362B+D3j
		push	0FFFFFFFEh
		jmp	short loc_40374E
; ---------------------------------------------------------------------------

loc_40371B:				; CODE XREF: sub_40362B+83j
		mov	eax, [ebp+arg_0]
		cmp	eax, [ebp+arg_C]
		jl	short loc_403726
		mov	eax, [ebp+arg_C]

loc_403726:				; CODE XREF: sub_40362B+F6j
		push	edi
		lea	ecx, [ebp+var_4]
		push	ecx
		push	eax
		push	[ebp+arg_8]
		push	dword_40A010
		call	ebx	; ReadFile
		test	eax, eax
		jz	short loc_40374C
		mov	eax, [ebp+var_4]
		add	dword_4201A0, eax
		mov	[ebp+var_8], eax

loc_403747:				; CODE XREF: sub_40362B+88j
					; sub_40362B+EAj
		mov	eax, [ebp+var_8]
		jmp	short loc_40374F
; ---------------------------------------------------------------------------

loc_40374C:				; CODE XREF: sub_40362B+58j
					; sub_40362B+61j ...
		push	0FFFFFFFDh

loc_40374E:				; CODE XREF: sub_40362B+EEj
		pop	eax

loc_40374F:				; CODE XREF: sub_40362B+7Aj
					; sub_40362B+11Fj
		pop	ebx

loc_403750:				; CODE XREF: sub_40362B+37j
		pop	edi
		pop	esi
		leave
		retn	10h
sub_40362B	endp


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

; Attributes: bp-based frame


sub_403756	proc near		; CODE XREF: start+1EDp

var_15C		= dword	ptr -15Ch
var_14C		= byte ptr -14Ch
var_48		= byte ptr -48h
var_2C		= dword	ptr -2Ch
var_28		= dword	ptr -28h
var_24		= dword	ptr -24h
var_20		= dword	ptr -20h
var_1C		= dword	ptr -1Ch
var_18		= dword	ptr -18h
var_14		= dword	ptr -14h
var_10		= dword	ptr -10h
var_C		= dword	ptr -0Ch
var_8		= dword	ptr -8
var_4		= dword	ptr -4
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		sub	esp, 14Ch
		push	ebx
		push	esi
		xor	ebx, ebx
		push	edi
		mov	[ebp+var_4], ebx
		call	ds:dword_4080B4	; GetTickCount
		push	400h
		mov	esi, offset dword_42CC00
		push	esi
		push	dword_4263E4
		add	eax, 3E8h
		mov	[ebp+var_8], eax
		mov	[ebp+var_C], ebx
		mov	[ebp+var_10], ebx
		call	ds:dword_40815C	; GetModuleFileNameA
		push	3
		push	80000000h
		push	esi
		call	sub_405E7A
		mov	edi, eax
		cmp	edi, 0FFFFFFFFh
		mov	dword_40A00C, edi
		jnz	short loc_4037B6
		mov	eax, offset aErrorLaunching ; "Error launching installer"
		jmp	loc_403A5B
; ---------------------------------------------------------------------------

loc_4037B6:				; CODE XREF: sub_403756+54j
		push	esi
		call	sub_406207
		push	ebx
		push	edi
		call	ds:dword_4080BC	; GetFileSize
		cmp	eax, ebx
		mov	dword_41C198, eax
		mov	esi, eax
		jle	loc_4038F1

loc_4037D3:				; CODE XREF: sub_403756+187j
		mov	eax, dword_426448
		neg	eax
		sbb	eax, eax
		and	eax, 7E00h
		add	eax, 200h
		cmp	esi, eax
		mov	edi, esi
		jl	short loc_4037EE
		mov	edi, eax

loc_4037EE:				; CODE XREF: sub_403756+94j
		push	edi
		push	offset dword_40C108
		call	sub_4033D7
		test	eax, eax
		jz	loc_4039A5
		cmp	dword_426448, ebx
		jnz	short loc_403884
		push	1Ch
		push	offset dword_40C108
		lea	eax, [ebp+var_2C]
		push	eax
		call	sub_405E5A
		mov	ecx, [ebp+var_2C]
		test	ecx, 0FFFFFFE0h
		jnz	loc_4038BA
		cmp	[ebp+var_28], 0DEADBEEFh
		jnz	loc_4038BA
		cmp	[ebp+var_1C], 74736E49h
		jnz	short loc_4038BA
		cmp	[ebp+var_20], 74666F73h
		jnz	short loc_4038BA
		cmp	[ebp+var_24], 6C6C754Eh
		jnz	short loc_4038BA
		mov	eax, [ebp+var_14]
		cmp	eax, esi
		jg	loc_4039F6
		or	[ebp+arg_0], ecx
		test	byte ptr [ebp+arg_0], 8
		mov	edx, dword_41C190
		mov	dword_426448, edx
		jnz	short loc_403876
		test	byte ptr [ebp+arg_0], 4
		jnz	short loc_4038E3

loc_403876:				; CODE XREF: sub_403756+118j
		inc	[ebp+var_10]
		lea	esi, [eax-4]
		cmp	edi, esi
		jbe	short loc_4038BA
		mov	edi, esi
		jmp	short loc_4038BA
; ---------------------------------------------------------------------------

loc_403884:				; CODE XREF: sub_403756+B1j
		test	byte ptr [ebp+arg_0], 2
		jnz	short loc_4038BA
		cmp	[ebp+var_4], ebx
		jnz	loc_40398D
		call	ds:dword_4080B4	; GetTickCount
		cmp	eax, [ebp+var_8]
		jbe	short loc_4038BA
		push	offset aVerifyingInsta ; "verifying installer: %d%%"
		push	offset loc_403324
		push	ebx
		push	6Fh
		push	dword_4263E4
		call	ds:dword_408190	; CreateDialogParamA
		mov	[ebp+var_4], eax

loc_4038BA:				; CODE XREF: sub_403756+CCj
					; sub_403756+D9j ...
		cmp	esi, dword_41C198
		jge	short loc_4038D3
		push	edi
		push	offset dword_40C108
		push	[ebp+var_C]
		call	sub_40137E
		mov	[ebp+var_C], eax

loc_4038D3:				; CODE XREF: sub_403756+16Aj
		add	dword_41C190, edi
		sub	esi, edi
		cmp	esi, ebx
		jg	loc_4037D3

loc_4038E3:				; CODE XREF: sub_403756+11Ej
		cmp	[ebp+var_4], ebx
		jz	short loc_4038F1
		push	[ebp+var_4]
		call	ds:dword_40818C	; DestroyWindow

loc_4038F1:				; CODE XREF: sub_403756+77j
					; sub_403756+190j
		cmp	dword_426448, ebx
		jz	loc_4039F6
		cmp	[ebp+var_10], ebx
		jz	short loc_40392C
		push	dword_41C190
		call	sub_403409
		push	4
		lea	eax, [ebp+var_8]
		push	eax
		call	sub_4033D7
		test	eax, eax
		jz	loc_4039F6
		mov	eax, [ebp+var_C]
		cmp	eax, [ebp+var_8]
		jnz	loc_4039F6

loc_40392C:				; CODE XREF: sub_403756+1AAj
		push	[ebp+var_18]
		call	sub_405DBB
		push	offset dword_414108
		mov	esi, eax
		call	sub_4069DB
		lea	eax, [ebp+var_14C]
		mov	[esp+15Ch+var_15C], offset aCDocume1SriUse ; "C:\\DOCUME~1\\SRI-user\\LOCALS~1\\Temp\\"
		push	eax
		call	sub_405EA9
		push	ebx
		push	4000100h
		push	2
		push	ebx
		push	ebx
		push	0C0000000h
		lea	eax, [ebp+var_14C]
		push	eax
		call	ds:dword_4080B8	; CreateFileA
		cmp	eax, 0FFFFFFFFh
		mov	dword_40A010, eax
		jnz	short loc_4039B5
		mov	eax, offset aErrorWritingTe ; "Error writing temporary file. Make sure"...
		jmp	loc_403A5B
; ---------------------------------------------------------------------------

loc_403983:				; CODE XREF: sub_403756+248j
		lea	eax, [ebp+var_48]
		push	eax
		call	ds:dword_408258	; DispatchMessageA

loc_40398D:				; CODE XREF: sub_403756+137j
		push	1
		push	ebx
		push	ebx
		lea	eax, [ebp+var_48]
		push	ebx
		push	eax
		call	ds:dword_408254	; PeekMessageA
		test	eax, eax
		jnz	short loc_403983
		jmp	loc_4038BA
; ---------------------------------------------------------------------------

loc_4039A5:				; CODE XREF: sub_403756+A5j
		cmp	[ebp+var_4], ebx
		jz	short loc_4039F6
		push	[ebp+var_4]
		call	ds:dword_40818C	; DestroyWindow
		jmp	short loc_4039F6
; ---------------------------------------------------------------------------

loc_4039B5:				; CODE XREF: sub_403756+221j
		mov	eax, dword_426448
		add	eax, 1Ch
		push	eax
		call	sub_403409
		mov	ecx, [ebp+var_2C]
		push	[ebp+var_18]
		not	ecx
		and	ecx, 4
		mov	dword_4201A8, eax
		sub	eax, ecx
		mov	ecx, [ebp+var_14]
		push	esi
		push	ebx
		lea	eax, [eax+ecx-1Ch]
		push	0FFFFFFFFh
		mov	dword_4201A4, eax
		call	sub_40362B
		cmp	eax, [ebp+var_18]
		jz	short loc_4039FD
		push	esi
		call	ds:dword_40813C	; GlobalFree

loc_4039F6:				; CODE XREF: sub_403756+FFj
					; sub_403756+1A1j ...
		mov	eax, offset aTheInstallerYo ; "The installer you are trying to use is "...
		jmp	short loc_403A5B
; ---------------------------------------------------------------------------

loc_4039FD:				; CODE XREF: sub_403756+297j
		test	byte ptr [ebp+arg_0], 2
		mov	dword_4263E8, esi
		jz	short loc_403A0C
		or	dword ptr [esi], 8

loc_403A0C:				; CODE XREF: sub_403756+2B1j
		mov	eax, [esi]
		and	eax, 18h
		test	byte ptr [ebp+arg_0], 10h
		mov	dword_426480, eax
		jz	short loc_403A20
		or	byte ptr [esi+1], 4

loc_403A20:				; CODE XREF: sub_403756+2C4j
		test	byte ptr [ebp+var_2C], 1
		mov	eax, [esi]
		mov	dword_426444, eax
		jz	short loc_403A33
		inc	dword_426440

loc_403A33:				; CODE XREF: sub_403756+2D5j
		push	8
		lea	eax, [esi+44h]
		pop	ecx

loc_403A39:				; CODE XREF: sub_403756+2E9j
		sub	eax, 8
		add	[eax], esi
		dec	ecx
		jnz	short loc_403A39
		mov	eax, dword_4201A0
		mov	[esi+3Ch], eax
		push	40h
		add	esi, 4
		push	esi
		push	offset dword_426400
		call	sub_405E5A
		xor	eax, eax

loc_403A5B:				; CODE XREF: sub_403756+5Bj
					; sub_403756+228j ...
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn	4
sub_403756	endp


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



sub_403A62	proc near		; CODE XREF: start+4Ap	start+6Bp
		push	esi
		mov	esi, offset aCDocume1SriUse ; "C:\\DOCUME~1\\SRI-user\\LOCALS~1\\Temp\\"
		push	esi
		call	sub_406009
		push	esi
		call	sub_405DE6
		test	eax, eax
		jnz	short loc_403A7A
		pop	esi
		retn
; ---------------------------------------------------------------------------

loc_403A7A:				; CODE XREF: sub_403A62+14j
		push	esi
		call	sub_4061A6
		push	0
		push	esi
		call	ds:dword_4080C4	; CreateDirectoryA
		push	esi
		push	offset byte_42C000
		call	sub_405EA9
		pop	esi
		retn
sub_403A62	endp


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



sub_403A96	proc near		; CODE XREF: start:loc_403DA4p
		mov	eax, dword_40A00C
		cmp	eax, 0FFFFFFFFh
		push	esi
		mov	esi, ds:dword_408084
		jz	short loc_403AB1
		push	eax
		call	esi	; CloseHandle
		or	dword_40A00C, 0FFFFFFFFh

loc_403AB1:				; CODE XREF: sub_403A96+Fj
		mov	eax, dword_40A010
		cmp	eax, 0FFFFFFFFh
		jz	short loc_403AC5
		push	eax
		call	esi	; CloseHandle
		or	dword_40A010, 0FFFFFFFFh

loc_403AC5:				; CODE XREF: sub_403A96+23j
		push	7
		push	offset dword_42D800
		call	sub_4067E6
		mov	eax, dword_4201B0
		test	eax, eax
		pop	esi
		jz	short locret_403AE9
		push	eax
		call	ds:dword_40813C	; GlobalFree
		and	dword_4201B0, 0

locret_403AE9:				; CODE XREF: sub_403A96+43j
		retn
sub_403A96	endp


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


		public start

start		proc near

var_BC		= dword	ptr -0BCh
var_B4		= dword	ptr -0B4h
var_94		= dword	ptr -94h
var_90		= dword	ptr -90h
var_84		= dword	ptr -84h
var_80		= dword	ptr -80h
var_7C		= byte ptr -7Ch
var_70		= dword	ptr -70h
var_68		= dword	ptr -68h
var_64		= dword	ptr -64h
var_5C		= dword	ptr -5Ch
var_58		= dword	ptr -58h
var_54		= dword	ptr -54h
var_50		= dword	ptr -50h
var_20		= byte ptr -20h
var_1C		= dword	ptr -1Ch

		sub	esp, 20h
		push	ebx
		push	ebp
		push	esi
		push	edi
		xor	edi, edi
		mov	[esp+30h+var_1C], edi
		mov	ebx, offset aErrorWritingTe ; "Error writing temporary file. Make sure"...
		mov	[esp+30h+var_20], 20h
		call	ds:dword_408028
		push	edi
		call	ds:dword_408294
		push	offset aNsisError_0 ; "NSIS Error"
		push	offset aNsisError ; "NSIS Error"
		mov	dword_426490, eax
		call	sub_405FFD	; lstrcpy
		mov	esi, offset aCDocume1SriUse ; "C:\\DOCUME~1\\SRI-user\\LOCALS~1\\Temp\\"
		push	esi
		mov	ebp, 400h
		push	ebp
		call	ds:dword_4080E0	; GetTempPathA
		call	sub_403A62
		test	eax, eax
		jnz	short loc_403B62
		push	3FBh
		push	esi
		call	ds:dword_4080DC	; GetWindowsDirectoryA
		push	offset aTemp	; "\\Temp"
		push	esi
		call	ds:dword_4080A4	; lstrcat
		call	sub_403A62
		test	eax, eax
		jz	loc_403DA4

loc_403B62:				; CODE XREF: start+51j
		mov	esi, offset byte_42C000
		push	esi
		call	ds:dword_408128	; DeleteFileA
		push	ebp
		call	ds:dword_4080D8	; GetCommandLineA
		mov	ebx, ds:dword_4080D4
		push	eax
		push	esi
		call	ebx	; lstrcpyn
		push	0
		call	ds:dword_408068	; GetModuleHandleA
		cmp	ds:byte_42C000,	22h
		mov	dword_4263E4, eax
		jnz	short loc_403B9F
		mov	byte ptr [esp+68h+var_58], 22h
		mov	esi, offset byte_42C001

loc_403B9F:				; CODE XREF: start+A9j
		push	[esp+68h+var_58]
		push	esi
		call	sub_405DCA
		push	eax
		call	ds:dword_408198	; CharNextA
		mov	esi, eax
		mov	[esp+6Ch+var_54], esi
		jmp	loc_403CCC
; ---------------------------------------------------------------------------

loc_403BBB:				; CODE XREF: start+1E6j
		cmp	al, 20h
		jnz	short loc_403BC5

loc_403BBF:				; CODE XREF: start+D9j
		inc	esi
		cmp	byte ptr [esi],	20h
		jz	short loc_403BBF

loc_403BC5:				; CODE XREF: start+D3j
		cmp	byte ptr [esi],	22h
		mov	byte ptr [esp+6Ch+var_5C], 20h
		jnz	short loc_403BD5
		inc	esi
		mov	byte ptr [esp+6Ch+var_5C], 22h

loc_403BD5:				; CODE XREF: start+E3j
		cmp	byte ptr [esi],	2Fh
		jnz	loc_403CBA
		inc	esi
		mov	al, [esi]
		cmp	al, 53h
		jnz	short loc_403BF3
		mov	cl, [esi+1]
		or	cl, 20h
		cmp	cl, 20h
		jnz	short loc_403BF3
		or	edi, 2

loc_403BF3:				; CODE XREF: start+F9j	start+104j
		cmp	dword ptr [esi], 4352434Eh
		jnz	short loc_403C09
		mov	cl, [esi+4]
		or	cl, 20h
		cmp	cl, 20h
		jnz	short loc_403C09
		or	edi, 4

loc_403C09:				; CODE XREF: start+10Fj start+11Aj
		cmp	dword ptr [esi-2], 3D442F20h
		jz	loc_403D2D
		cmp	al, 58h
		jz	short loc_403C22
		cmp	al, 78h
		jnz	loc_403CBA

loc_403C22:				; CODE XREF: start+12Ej
		mov	al, [esi+1]
		or	al, 20h
		cmp	al, 20h
		jnz	loc_403CBA
		lea	eax, [esi+2]
		mov	cl, [eax]
		or	edi, 12h
		cmp	cl, 22h
		mov	[esp+6Ch+var_50], edi
		jnz	short loc_403C49
		mov	byte ptr [esp+6Ch+var_5C], cl
		add	esi, 3
		jmp	short loc_403C61
; ---------------------------------------------------------------------------

loc_403C49:				; CODE XREF: start+154j
		cmp	cl, 20h
		jz	loc_403D03
		test	cl, cl
		jz	loc_403D03
		mov	byte ptr [esp+6Ch+var_5C], 20h
		mov	esi, eax

loc_403C61:				; CODE XREF: start+15Dj
		push	[esp+6Ch+var_5C]
		push	esi
		call	sub_405DCA
		test	eax, eax
		jz	loc_403D41
		sub	eax, esi
		inc	eax
		inc	eax
		push	ebp
		mov	edi, eax
		call	sub_405DBB
		test	eax, eax
		mov	dword_4201B0, eax
		jz	loc_403D48
		cmp	edi, ebp
		jbe	short loc_403C92
		mov	edi, ebp

loc_403C92:				; CODE XREF: start+1A4j
		dec	edi
		push	edi
		push	esi
		push	eax
		call	ebx	; lstrcpyn
		push	dword_4201B0
		call	sub_4061A6
		push	0
		push	dword_4201B0
		call	ds:dword_4080C4	; CreateDirectoryA
		mov	edi, [esp+80h+var_64]
		mov	byte ptr [esp+80h+var_70], 2Fh

loc_403CBA:				; CODE XREF: start+EEj	start+132j ...
		push	[esp+80h+var_70]
		push	esi
		call	sub_405DCA
		mov	esi, eax
		cmp	byte ptr [esi],	22h
		jnz	short loc_403CCC
		inc	esi

loc_403CCC:				; CODE XREF: start+CCj	start+1DFj ...
		mov	al, [esi]
		test	al, al
		jnz	loc_403BBB

loc_403CD6:				; CODE XREF: start+255j
		push	edi
		call	sub_403756
		mov	ebx, eax
		xor	ebp, ebp
		cmp	ebx, ebp
		jnz	loc_403DA4
		cmp	dword_426440, ebp
		jz	loc_403D8D
		mov	edi, [esp+80h+var_68]
		push	ebp
		push	edi
		call	sub_405DCA
		mov	esi, eax
		jmp	short loc_403D58
; ---------------------------------------------------------------------------

loc_403D03:				; CODE XREF: start+162j start+16Aj
		push	ebp
		call	sub_405DBB
		test	eax, eax
		mov	dword_4201B0, eax
		jz	short loc_403D22
		push	offset aCNsis_extractf ; "C:\\NSIS_ExtractFiles\\"
		push	eax
		call	sub_405FFD	; lstrcpy
		mov	eax, dword_4201B0

loc_403D22:				; CODE XREF: start+226j
		push	0
		push	eax
		call	ds:dword_4080C4	; CreateDirectoryA
		jmp	short loc_403CCC
; ---------------------------------------------------------------------------

loc_403D2D:				; CODE XREF: start+126j
		mov	byte ptr [esi-2], 0
		add	esi, 2
		push	esi
		push	offset byte_42C400
		call	sub_405FFD	; lstrcpy
		jmp	short loc_403CD6
; ---------------------------------------------------------------------------

loc_403D41:				; CODE XREF: start+183j
		mov	ebx, offset aExtractionPath ; "Extraction pathname not properly	delimi"...
		jmp	short loc_403DA4
; ---------------------------------------------------------------------------

loc_403D48:				; CODE XREF: start+19Cj
		mov	ebx, offset aOutOfMemory ; "Out	of Memory"
		jmp	short loc_403DA4
; ---------------------------------------------------------------------------

loc_403D4F:				; CODE XREF: start+270j
		cmp	dword ptr [esi], 3D3F5F20h
		jz	short loc_403D5C
		dec	esi

loc_403D58:				; CODE XREF: start+217j
		cmp	esi, edi
		jnb	short loc_403D4F

loc_403D5C:				; CODE XREF: start+26Bj
		cmp	esi, edi
		mov	ebx, offset aErrorLaunching ; "Error launching installer"
		jb	short loc_403DC9
		mov	byte ptr [esi],	0
		add	esi, 4
		push	esi
		call	sub_40622D
		test	eax, eax
		jz	short loc_403DA4
		push	esi
		push	offset byte_42C400
		call	sub_405FFD	; lstrcpy
		push	esi
		push	offset dword_42C800
		call	sub_405FFD	; lstrcpy
		xor	ebx, ebx

loc_403D8D:				; CODE XREF: start+204j
		or	dword_42648C, 0FFFFFFFFh
		call	sub_405A5A
		push	1
		mov	[esp+80h+var_68], eax
		call	sub_4060AD

loc_403DA4:				; CODE XREF: start+72j	start+1F8j ...
		call	sub_403A96
		call	ds:dword_408290
		test	ebx, ebx
		jz	loc_403ECA
		push	200010h
		push	ebx
		call	sub_405D79
		push	2
		jmp	loc_403F86
; ---------------------------------------------------------------------------

loc_403DC9:				; CODE XREF: start+279j
		mov	[esp+6Ch+var_5C], ebp
		mov	edi, offset byte_4201B9
		mov	esi, offset byte_4201B8
		mov	ebp, offset dword_4209B8

loc_403DDC:				; CODE XREF: start+3D5j
		push	offset aCDocume1SriUse ; "C:\\DOCUME~1\\SRI-user\\LOCALS~1\\Temp\\"
		push	edi
		mov	byte_4201B8, 22h
		call	sub_405FFD	; lstrcpy
		push	offset aANsisu__exe ; "A~NSISu_.exe"
		push	esi
		call	ds:dword_4080A4	; lstrcat
		push	edi
		call	ds:dword_408128	; DeleteFileA
		test	ebx, ebx
		jz	loc_403EB0
		push	400h
		push	ebp
		push	dword_4263E4
		call	ds:dword_40815C	; GetModuleFileNameA
		push	40A015h
		lea	eax, dword_4209AD[eax]
		push	eax
		call	ds:dword_408080	; lstrcmpi
		test	eax, eax
		jz	loc_403DA4
		push	0
		push	edi
		push	ebp
		call	ds:dword_4080D0	; CopyFileA
		test	eax, eax
		jz	short loc_403EB0
		push	0
		push	edi
		call	sub_406357
		cmp	ds:byte_42C400,	0
		jz	short loc_403E61
		push	offset byte_42C400
		push	ebp
		call	sub_405FFD	; lstrcpy
		jmp	short loc_403E67
; ---------------------------------------------------------------------------

loc_403E61:				; CODE XREF: start+368j
		push	ebp
		call	sub_406207

loc_403E67:				; CODE XREF: start+375j
		push	offset asc_408B0C ; "\"	"
		push	esi
		call	ds:dword_4080A4	; lstrcat
		push	[esp+0A8h+var_90]
		push	esi
		call	ds:dword_4080A4	; lstrcat
		push	offset a_?_0	; " _?="
		push	esi
		call	ds:dword_4080A4	; lstrcat
		push	ebp
		push	esi
		call	ds:dword_4080A4	; lstrcat
		push	esi
		call	sub_4061A6
		push	offset aCDocume1SriUse ; "C:\\DOCUME~1\\SRI-user\\LOCALS~1\\Temp\\"
		push	esi
		call	sub_405D01
		test	eax, eax
		jz	short loc_403EB0
		push	eax
		call	ds:dword_408084	; CloseHandle
		xor	ebx, ebx

loc_403EB0:				; CODE XREF: start+319j start+357j ...
		inc	byte ptr aANsisu__exe ;	"A~NSISu_.exe"
		inc	[esp+0C4h+var_B4]
		cmp	[esp+0C4h+var_B4], 1Ah
		jl	loc_403DDC
		jmp	loc_403DA4
; ---------------------------------------------------------------------------

loc_403ECA:				; CODE XREF: start+2C7j
		cmp	dword_426474, 0
		jz	loc_403F74
		push	offset aAdvapi32_dll ; "ADVAPI32.dll"
		call	ds:dword_408068	; GetModuleHandleA
		mov	edi, eax
		xor	ebx, ebx
		cmp	edi, ebx
		jz	short loc_403F60
		mov	esi, ds:dword_40812C
		push	offset aOpenprocesstok ; "OpenProcessToken"
		push	edi
		call	esi	; GetProcAddress
		push	offset aLookupprivileg ; "LookupPrivilegeValueA"
		push	edi
		mov	[esp+90h+var_70], eax
		call	esi	; GetProcAddress
		push	offset aAdjusttokenpri ; "AdjustTokenPrivileges"
		push	edi
		mov	ebp, eax
		call	esi	; GetProcAddress
		cmp	[esp+98h+var_80], ebx
		mov	esi, eax
		jz	short loc_403F60
		cmp	ebp, ebx
		jz	short loc_403F60
		cmp	esi, ebx
		jz	short loc_403F60
		lea	eax, [esp+98h+var_7C]
		push	eax
		push	28h
		call	ds:dword_4080CC	; GetCurrentProcess
		push	eax
		call	[esp+0A4h+var_80]
		test	eax, eax
		jz	short loc_403F60
		lea	eax, [esp+0A4h+var_80]
		push	eax
		push	offset aSeshutdownpriv ; "SeShutdownPrivilege"
		push	ebx
		call	ebp
		push	ebx
		push	ebx
		push	ebx
		lea	eax, [esp+0BCh+var_90]
		push	eax
		push	ebx
		push	[esp+0C4h+var_94]
		mov	[esp+0C8h+var_90], 1
		mov	[esp+0C8h+var_84], 2
		call	esi	; GetProcAddress

loc_403F60:				; CODE XREF: start+3FEj start+42Aj ...
		push	ebx
		push	2
		call	ds:dword_408194	; ExitWindowsEx
		test	eax, eax
		jnz	short loc_403F74
		push	9
		call	sub_4014C9

loc_403F74:				; CODE XREF: start+3E7j start+481j
		mov	eax, dword_42648C
		cmp	eax, 0FFFFFFFFh
		jz	short loc_403F82
		mov	[esp+0D0h+var_BC], eax

loc_403F82:				; CODE XREF: start+492j
		push	[esp+0D0h+var_BC]

loc_403F86:				; CODE XREF: start+2DAj
		call	ds:dword_4080C8	; ExitProcess
		int	3		; Trap to Debugger
start		endp ; sp-analysis failed


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



sub_403F8D	proc near		; CODE XREF: sub_405202+234p
					; sub_405202+270p ...

arg_0		= dword	ptr  4

		cmp	[esp+arg_0], 78h
		jnz	short loc_403F9A
		inc	dword_425BB4

loc_403F9A:				; CODE XREF: sub_403F8D+5j
		push	0
		push	[esp+4+arg_0]
		push	408h
		push	dword_4263E0
		call	ds:dword_408278	; SendMessageA
		retn	4
sub_403F8D	endp


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



sub_403FB4	proc near		; CODE XREF: sub_40428C+64p
					; sub_40428C+71p ...

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

		push	[esp+arg_8]
		push	0
		call	sub_4065B7
		push	eax
		mov	eax, [esp+4+arg_4]
		add	eax, 3E8h
		push	eax
		push	[esp+8+arg_0]
		call	sub_405D57	; SetDlgItemTextA
		retn	0Ch
sub_403FB4	endp


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



sub_403FD6	proc near		; CODE XREF: sub_40428C+18Ap
					; sub_40463C+305p ...
		cmp	dword_42646C, 0
		mov	eax, dword_4211C8
		jnz	short loc_403FE9
		mov	eax, dword_4229D8

loc_403FE9:				; CODE XREF: sub_403FD6+Cj
		push	1
		push	1
		push	0F4h
		push	eax
		call	ds:dword_408278	; SendMessageA
		retn
sub_403FD6	endp


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



sub_403FFA	proc near		; CODE XREF: sub_40428C+8Fp
					; sub_40428C+185p ...

arg_0		= dword	ptr  4

		push	[esp+arg_0]
		push	dword_4229D8
		call	ds:dword_408250	; EnableWindow
		retn	4
sub_403FFA	endp


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



sub_40400D	proc near		; CODE XREF: sub_40428C+A5p
					; sub_40463C+E4p ...

arg_0		= dword	ptr  4

		push	1
		push	[esp+4+arg_0]
		push	28h
		push	dword_4263E0
		call	ds:dword_408278	; SendMessageA
		retn	4
sub_40400D	endp


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



sub_404024	proc near		; CODE XREF: sub_4049AD+20p
					; sub_405177+76p ...

arg_0		= dword	ptr  4

		mov	eax, dword_425BA8
		test	eax, eax
		jz	short locret_40403C
		push	0
		push	0
		push	[esp+8+arg_0]
		push	eax
		call	ds:dword_408278	; SendMessageA

locret_40403C:				; CODE XREF: sub_404024+7j
		retn	4
sub_404024	endp


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

; Attributes: bp-based frame


sub_40403F	proc near		; CODE XREF: sub_40428C+299p
					; sub_404531+3Dp ...

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

		push	ebp
		mov	ebp, esp
		sub	esp, 0Ch
		add	eax, 0FFFFFECDh
		cmp	eax, 5
		push	esi
		ja	loc_4040E2
		push	0FFFFFFEBh
		push	[ebp+arg_4]
		call	ds:dword_4081A0	; GetWindowLongA
		mov	esi, eax
		test	esi, esi
		jz	short loc_4040E2
		test	byte ptr [esi+14h], 2
		mov	eax, [esi]
		push	edi
		mov	edi, ds:dword_40819C
		jz	short loc_404077
		push	eax
		call	edi	; GetSysColor

loc_404077:				; CODE XREF: sub_40403F+33j
		test	byte ptr [esi+14h], 1
		jz	short loc_404087
		push	eax
		push	[ebp+arg_0]
		call	ds:dword_408050	; SetTextColor

loc_404087:				; CODE XREF: sub_40403F+3Cj
		push	dword ptr [esi+10h]
		push	[ebp+arg_0]
		call	ds:dword_40804C	; SetBkMode
		test	byte ptr [esi+14h], 8
		mov	eax, [esi+4]
		mov	[ebp+var_8], eax
		jz	short loc_4040A5
		push	eax
		call	edi	; GetSysColor
		mov	[ebp+var_8], eax

loc_4040A5:				; CODE XREF: sub_40403F+5Ej
		test	byte ptr [esi+14h], 4
		pop	edi
		jz	short loc_4040B6
		push	eax
		push	[ebp+arg_0]
		call	ds:dword_408054	; SetBkColor

loc_4040B6:				; CODE XREF: sub_40403F+6Bj
		test	byte ptr [esi+14h], 10h
		jz	short loc_4040DD
		mov	eax, [esi+8]
		mov	[ebp+var_C], eax
		mov	eax, [esi+0Ch]
		test	eax, eax
		jz	short loc_4040D0
		push	eax
		call	ds:dword_408040	; DeleteObject

loc_4040D0:				; CODE XREF: sub_40403F+88j
		lea	eax, [ebp+var_C]
		push	eax
		call	ds:dword_408044	; CreateBrushIndirect
		mov	[esi+0Ch], eax

loc_4040DD:				; CODE XREF: sub_40403F+7Bj
		mov	eax, [esi+0Ch]
		jmp	short loc_4040E4
; ---------------------------------------------------------------------------

loc_4040E2:				; CODE XREF: sub_40403F+Fj
					; sub_40403F+24j
		xor	eax, eax

loc_4040E4:				; CODE XREF: sub_40403F+A1j
		pop	esi
		leave
		retn	8
sub_40403F	endp


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



sub_4040E9	proc near		; CODE XREF: sub_401610+1A7Dp
					; sub_40463C+3Ep ...
		push	offset aInstall_log ; "install.log"
		push	offset byte_42C400
		push	offset byte_425780
		call	sub_405FFD	; lstrcpy
		push	eax
		call	sub_4061A6
		push	eax
		call	ds:dword_4080A4	; lstrcat
		retn
sub_4040E9	endp


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



sub_40410B	proc near		; CODE XREF: sub_405A5A+1Ap
					; sub_405A5A:loc_405C08p
		cmp	ds:byte_42D000,	0
		push	ebx
		push	ebp
		push	esi
		push	edi
		mov	edi, 0FFFFh
		mov	ebx, offset byte_42D000
		jz	short loc_40412A
		push	ebx
		call	sub_405F74
		jmp	short loc_404130
; ---------------------------------------------------------------------------

loc_40412A:				; CODE XREF: sub_40410B+15j
		call	ds:dword_4080E4	; GetUserDefaultLangID

loc_404130:				; CODE XREF: sub_40410B+1Dj
		xor	ecx, ecx

loc_404132:				; CODE XREF: sub_40410B+8Fj
					; sub_40410B+93j
		mov	esi, dword_426424
		test	esi, esi
		jz	short loc_404185
		mov	ecx, dword_4263E8
		mov	ecx, [ecx+64h]
		mov	edx, ecx
		imul	ecx, esi
		neg	edx
		add	ecx, dword_426420

loc_404152:				; CODE XREF: sub_40410B+5Bj
		xor	ebp, ebp
		add	ecx, edx
		mov	bp, [ecx]
		xor	bp, ax
		dec	esi
		and	ebp, edi
		test	bp, bp
		jz	short loc_40416A
		test	esi, esi
		jnz	short loc_404152
		jmp	short loc_404185
; ---------------------------------------------------------------------------

loc_40416A:				; CODE XREF: sub_40410B+57j
		mov	edx, [ecx+2]
		mov	dword_425BBC, edx
		mov	edx, [ecx+6]
		mov	dword_426488, edx
		lea	edx, [ecx+0Ah]
		mov	dword_425BC8, edx

loc_404185:				; CODE XREF: sub_40410B+2Fj
					; sub_40410B+5Dj
		cmp	dword_425BC8, 0
		jnz	short loc_4041A0
		cmp	di, 0FFFFh
		jnz	short loc_40419C
		mov	edi, 3FFh
		jmp	short loc_404132
; ---------------------------------------------------------------------------

loc_40419C:				; CODE XREF: sub_40410B+88j
		xor	edi, edi
		jmp	short loc_404132
; ---------------------------------------------------------------------------

loc_4041A0:				; CODE XREF: sub_40410B+81j
		movzx	eax, word ptr [ecx]
		push	eax
		push	ebx
		call	sub_405F5B
		push	0FFFFFFFEh
		push	offset aNsisError ; "NSIS Error"
		call	sub_4065B7
		push	eax
		push	dword_4211D4
		call	ds:dword_408184	; SetWindowTextA
		mov	eax, dword_42640C
		test	eax, eax
		mov	esi, dword_426408
		jz	short loc_4041ED
		mov	edi, eax

loc_4041D4:				; CODE XREF: sub_40410B+E0j
		mov	eax, [esi]
		test	eax, eax
		jz	short loc_4041E4
		push	eax
		lea	eax, [esi+18h]
		push	eax
		call	sub_4065B7

loc_4041E4:				; CODE XREF: sub_40410B+CDj
		add	esi, 418h
		dec	edi
		jnz	short loc_4041D4

loc_4041ED:				; CODE XREF: sub_40410B+C5j
		pop	edi
		pop	esi
		pop	ebp
		pop	ebx
		retn
sub_40410B	endp


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

; Attributes: bp-based frame


sub_4041F2	proc near		; DATA XREF: sub_40463C+13Eo

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
		cmp	[ebp+arg_4], 1
		push	esi
		mov	esi, ds:dword_408278
		jnz	short loc_40421E
		push	[ebp+arg_C]
		push	3FBh
		call	sub_405D5D
		push	[ebp+arg_C]
		push	1
		push	466h
		push	[ebp+arg_0]
		call	esi	; SendMessageA

loc_40421E:				; CODE XREF: sub_4041F2+Ej
		cmp	[ebp+arg_4], 2
		jnz	short loc_404251
		push	[ebp+arg_C]
		push	[ebp+arg_8]
		call	ds:dword_408178
		test	eax, eax
		jz	short loc_404242
		push	7
		call	sub_4014C9
		test	eax, eax
		jnz	short loc_404242
		inc	eax
		jmp	short loc_404244
; ---------------------------------------------------------------------------

loc_404242:				; CODE XREF: sub_4041F2+40j
					; sub_4041F2+4Bj
		xor	eax, eax

loc_404244:				; CODE XREF: sub_4041F2+4Ej
		push	eax
		push	0
		push	465h
		push	[ebp+arg_0]
		call	esi	; SendMessageA

loc_404251:				; CODE XREF: sub_4041F2+30j
		xor	eax, eax
		pop	esi
		pop	ebp
		retn	10h
sub_4041F2	endp


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

; Attributes: bp-based frame


sub_404258	proc near		; DATA XREF: sub_40428C+5Ao

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

		push	ebp
		mov	ebp, esp
		push	[ebp+arg_8]
		mov	eax, [ebp+arg_0]
		mov	ecx, dword_420DB8
		add	ecx, eax
		push	ecx
		push	[ebp+arg_4]
		call	ds:dword_4080D4	; lstrcpyn
		push	[ebp+arg_4]
		call	sub_406003	; lstrlen
		mov	ecx, [ebp+arg_C]
		add	dword_420DB8, eax
		mov	[ecx], eax
		xor	eax, eax
		pop	ebp
		retn	10h
sub_404258	endp


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

; Attributes: bp-based frame


sub_40428C	proc near		; DATA XREF: .data:off_40A028o

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, 0Ch
		cmp	[ebp+arg_4], 110h
		push	ebx
		push	esi
		push	edi
		jnz	loc_4043AC
		mov	ebx, [ebp+arg_C]
		mov	edi, [ebx+30h]
		test	edi, edi
		jge	short loc_4042BD
		mov	ecx, dword_425BC8
		lea	eax, ds:4[edi*4]
		sub	ecx, eax
		mov	edi, [ecx]

loc_4042BD:				; CODE XREF: sub_40428C+1Ej
		mov	eax, dword_426418
		push	dword ptr [ebx+34h]
		add	edi, eax
		movsx	eax, byte ptr [edi]
		and	[ebp+var_8], 0
		mov	[ebp+arg_C], eax
		mov	eax, [ebx+14h]
		mov	esi, eax
		shr	esi, 5
		not	esi
		push	22h
		push	[ebp+arg_0]
		or	esi, eax
		inc	edi
		mov	[ebp+var_C], edi
		mov	[ebp+var_4], offset sub_404258
		and	esi, 1
		call	sub_403FB4
		push	dword ptr [ebx+38h]
		push	23h
		push	[ebp+arg_0]
		call	sub_403FB4
		xor	eax, eax
		test	esi, esi
		setz	al
		push	1
		add	eax, 40Ah
		push	eax
		push	[ebp+arg_0]
		call	ds:dword_4081AC	; CheckDlgButton
		push	esi
		call	sub_403FFA
		push	3E8h
		push	[ebp+arg_0]
		call	ds:dword_408240	; GetDlgItem
		mov	ebx, eax
		push	ebx
		call	sub_40400D
		mov	esi, ds:dword_408278
		push	0
		push	1
		push	45Bh
		push	ebx
		call	esi	; SendMessageA
		mov	eax, dword_4263E8
		mov	eax, [eax+68h]
		test	eax, eax
		jge	short loc_40435D
		neg	eax
		push	eax
		call	ds:dword_40819C	; GetSysColor

loc_40435D:				; CODE XREF: sub_40428C+C6j
		push	eax
		push	0
		push	443h
		push	ebx
		call	esi	; SendMessageA
		push	4010000h
		push	0
		push	445h
		push	ebx
		call	esi	; SendMessageA
		and	dword_420DB8, 0
		push	edi
		call	sub_406003	; lstrlen
		push	eax
		push	0
		push	435h
		push	ebx
		call	esi	; SendMessageA
		lea	eax, [ebp+var_C]
		push	eax
		push	[ebp+arg_C]
		push	449h
		push	ebx
		call	esi	; SendMessageA
		and	dword_4229E4, 0
		xor	eax, eax
		jmp	loc_40452A
; ---------------------------------------------------------------------------

loc_4043AC:				; CODE XREF: sub_40428C+10j
		cmp	[ebp+arg_4], 111h
		mov	edi, ds:dword_408240
		mov	ebx, ds:dword_408278
		jnz	short loc_40441B
		mov	eax, [ebp+arg_8]
		shr	eax, 10h
		test	ax, ax
		jnz	loc_40451B
		xor	eax, eax
		cmp	dword_4229E4, eax
		jnz	loc_40451B
		mov	esi, dword_4229DC
		add	esi, 14h
		test	byte ptr [esi],	20h
		jz	loc_40451B
		push	eax
		push	eax
		push	0F0h
		push	40Ah
		push	[ebp+arg_0]
		call	edi	; GetDlgItem
		push	eax
		call	ebx	; SendMessageA
		mov	ecx, [esi]
		and	eax, 1
		and	ecx, 0FFFFFFFEh
		or	ecx, eax
		push	eax
		mov	[esi], ecx
		call	sub_403FFA
		call	sub_403FD6

loc_40441B:				; CODE XREF: sub_40428C+133j
		cmp	[ebp+arg_4], 4Eh
		jnz	loc_40450C
		push	3E8h
		push	[ebp+arg_0]
		call	edi	; GetDlgItem
		mov	ecx, [ebp+arg_C]
		cmp	dword ptr [ecx+8], 70Bh
		jnz	loc_4044C7
		cmp	dword ptr [ecx+0Ch], 201h
		mov	esi, ds:dword_4081A8
		mov	edi, ds:dword_4081A4
		jnz	short loc_4044B2
		mov	edx, [ecx+18h]
		mov	[ebp+var_C], edx
		mov	edx, [ecx+1Ch]
		mov	[ebp+var_8], edx
		sub	edx, [ebp+var_C]
		mov	[ebp+var_4], offset byte_424F80
		cmp	edx, 800h
		jnb	short loc_4044B2
		lea	ecx, [ebp+var_C]
		push	ecx
		push	0
		push	44Bh
		push	eax
		call	ebx	; SendMessageA
		push	7F02h
		push	0
		call	edi	; LoadCursorA
		push	eax
		call	esi	; SetCursor
		push	1
		push	0
		push	0
		push	[ebp+var_4]
		push	offset aOpen	; "open"
		push	[ebp+arg_0]
		call	ds:dword_408164
		push	7F00h
		push	0
		call	edi	; LoadCursorA
		push	eax
		call	esi	; SetCursor
		mov	ecx, [ebp+arg_C]

loc_4044B2:				; CODE XREF: sub_40428C+1C6j
					; sub_40428C+1E4j
		cmp	dword ptr [ecx+0Ch], 20h
		jnz	short loc_4044C7
		push	7F89h
		push	0
		call	edi	; LoadCursorA
		push	eax
		call	esi	; SetCursor
		mov	ecx, [ebp+arg_C]

loc_4044C7:				; CODE XREF: sub_40428C+1ADj
					; sub_40428C+22Aj
		cmp	dword ptr [ecx+8], 700h
		jnz	short loc_40451E
		cmp	dword ptr [ecx+0Ch], 100h
		jnz	short loc_40451E
		cmp	dword ptr [ecx+10h], 0Dh
		jnz	short loc_4044F3
		push	0
		push	1
		push	111h
		push	dword_4263E0
		call	ebx	; SendMessageA
		mov	ecx, [ebp+arg_C]

loc_4044F3:				; CODE XREF: sub_40428C+251j
		cmp	dword ptr [ecx+10h], 1Bh
		jnz	short loc_404507
		push	0
		push	0
		push	10h
		push	dword_4263E0
		call	ebx	; SendMessageA

loc_404507:				; CODE XREF: sub_40428C+26Bj
		xor	eax, eax
		inc	eax
		jmp	short loc_40452A
; ---------------------------------------------------------------------------

loc_40450C:				; CODE XREF: sub_40428C+193j
		cmp	[ebp+arg_4], 40Bh
		jnz	short loc_40451B
		inc	dword_4229E4

loc_40451B:				; CODE XREF: sub_40428C+13Ej
					; sub_40428C+14Cj ...
		mov	ecx, [ebp+arg_C]

loc_40451E:				; CODE XREF: sub_40428C+242j
					; sub_40428C+24Bj
		mov	eax, [ebp+arg_4]
		push	ecx
		push	[ebp+arg_8]
		call	sub_40403F

loc_40452A:				; CODE XREF: sub_40428C+11Bj
					; sub_40428C+27Ej
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn	10h
sub_40428C	endp


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

; Attributes: bp-based frame


sub_404531	proc near		; DATA XREF: .data:0040A038o

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
		cmp	[ebp+arg_4], 110h
		push	esi
		mov	esi, [ebp+arg_C]
		jnz	short loc_404567
		push	dword ptr [esi+30h]
		push	1Dh
		push	[ebp+arg_0]
		call	sub_403FB4
		mov	eax, [esi+3Ch]
		shl	eax, 0Ah
		add	eax, offset dword_427000
		push	eax
		push	3E8h
		push	[ebp+arg_0]
		call	sub_405D57	; SetDlgItemTextA

loc_404567:				; CODE XREF: sub_404531+Ej
		mov	eax, [ebp+arg_4]
		push	esi
		push	[ebp+arg_8]
		call	sub_40403F
		pop	esi
		pop	ebp
		retn	10h
sub_404531	endp


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

; Attributes: bp-based frame


sub_404578	proc near		; CODE XREF: sub_40463C+2A5p
					; sub_40463C+2B4p ...

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

		push	ebp
		mov	ebp, esp
		sub	esp, 40h
		push	ebx
		push	esi
		push	edi
		push	14h
		pop	edi
		mov	esi, eax
		cmp	esi, 400h
		push	0FFFFFFDCh
		pop	ebx
		jnb	short loc_404597
		xor	edi, edi
		push	0FFFFFFDEh
		jmp	short loc_4045A4
; ---------------------------------------------------------------------------

loc_404597:				; CODE XREF: sub_404578+17j
		cmp	esi, 100000h
		jnb	short loc_4045A5
		push	0Ah
		pop	edi
		push	0FFFFFFDDh

loc_4045A4:				; CODE XREF: sub_404578+1Dj
		pop	ebx

loc_4045A5:				; CODE XREF: sub_404578+25j
		push	0FFFFFFDFh
		lea	eax, [ebp+var_20]
		push	eax
		call	sub_4065B7
		push	eax
		push	ebx
		lea	eax, [ebp+var_40]
		push	eax
		call	sub_4065B7
		push	eax
		lea	eax, [esi+esi*4]
		push	0Ah
		shl	eax, 1
		mov	ecx, edi
		shr	eax, cl
		pop	ecx
		xor	edx, edx
		div	ecx
		mov	ecx, edi
		shr	esi, cl
		push	edx
		push	esi
		push	offset aU_USS	; "%u.%u%s%s"
		push	[ebp+arg_4]
		mov	esi, offset dword_4219D8
		push	esi
		call	sub_4065B7
		push	esi
		mov	edi, eax
		call	sub_406003	; lstrlen
		add	edi, eax
		push	edi
		call	ds:dword_408230	; wsprintfA
		add	esp, 18h
		push	esi
		push	[ebp+arg_0]
		push	dword_425BA8
		call	sub_405D57	; SetDlgItemTextA
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn	8
sub_404578	endp


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



sub_40460F	proc near		; CODE XREF: sub_40463C+281p
					; sub_404A94+5A7p ...

arg_0		= dword	ptr  4

		mov	edx, dword_42640C
		mov	ecx, dword_426408
		xor	eax, eax
		test	edx, edx
		jz	short locret_404639
		push	esi

loc_404622:				; CODE XREF: sub_40460F+27j
		test	byte ptr [ecx+8], 1
		jz	short loc_40462F
		mov	esi, [esp+4+arg_0]
		add	eax, [ecx+esi*4]

loc_40462F:				; CODE XREF: sub_40460F+17j
		add	ecx, 418h
		dec	edx
		jnz	short loc_404622
		pop	esi

locret_404639:				; CODE XREF: sub_40460F+10j
		retn	4
sub_40460F	endp


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

; Attributes: bp-based frame


sub_40463C	proc near		; DATA XREF: .data:0040A030o

var_48		= dword	ptr -48h
var_44		= byte ptr -44h
var_40		= dword	ptr -40h
var_3C		= dword	ptr -3Ch
var_38		= dword	ptr -38h
var_34		= dword	ptr -34h
var_30		= dword	ptr -30h
var_28		= dword	ptr -28h
var_24		= dword	ptr -24h
var_20		= dword	ptr -20h
var_1C		= byte ptr -1Ch
var_18		= dword	ptr -18h
var_14		= byte ptr -14h
var_10		= dword	ptr -10h
var_C		= dword	ptr -0Ch
var_8		= dword	ptr -8
var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h
arg_C		= dword	ptr  14h

		push	ebp
		mov	ebp, esp
		sub	esp, 48h
		mov	eax, dword_4229DC
		push	ebx
		push	esi
		mov	esi, [eax+3Ch]
		shl	esi, 0Ah
		mov	[ebp+var_20], eax
		mov	eax, [eax+38h]
		add	esi, offset dword_427000
		cmp	[ebp+arg_4], 40Bh
		push	edi
		mov	[ebp+var_4], eax
		mov	ebx, 3FBh
		jnz	short loc_404692
		push	esi
		push	ebx
		call	sub_405D5D
		push	esi
		call	sub_406009
		call	sub_4040E9
		push	3F0h
		push	[ebp+arg_0]
		call	ds:dword_4081B4	; IsDlgButtonChecked
		mov	dword_423F78, eax

loc_404692:				; CODE XREF: sub_40463C+2Fj
		cmp	[ebp+arg_4], 110h
		jnz	loc_404725
		push	10h
		call	ds:dword_4081B0	; GetAsyncKeyState
		test	ah, ah
		mov	edi, ds:dword_408240
		jns	short loc_4046D5
		push	3F0h
		push	[ebp+arg_0]
		call	edi	; GetDlgItem
		push	0FFFFFFE0h
		push	8
		push	[ebp+arg_0]
		mov	[ebp+var_8], eax
		call	sub_403FB4
		push	8
		push	[ebp+var_8]
		call	ds:dword_408228	; ShowWindow

loc_4046D5:				; CODE XREF: sub_40463C+73j
		push	esi
		call	sub_405DE6
		test	eax, eax
		jz	short loc_4046EF
		push	esi
		call	sub_405E0D
		test	eax, eax
		jnz	short loc_4046EF
		push	esi
		call	sub_4061A6

loc_4046EF:				; CODE XREF: sub_40463C+A1j
					; sub_40463C+ABj
		push	esi
		push	ebx
		push	[ebp+arg_0]
		call	sub_405D57	; SetDlgItemTextA
		mov	eax, [ebp+arg_C]
		push	dword ptr [eax+34h]
		push	1
		push	[ebp+arg_0]
		call	sub_403FB4
		mov	eax, [ebp+arg_C]
		push	dword ptr [eax+30h]
		push	14h
		push	[ebp+arg_0]
		call	sub_403FB4
		push	ebx
		push	[ebp+arg_0]
		call	edi	; GetDlgItem
		push	eax
		call	sub_40400D

loc_404725:				; CODE XREF: sub_40463C+5Dj
		cmp	[ebp+arg_4], 111h
		jnz	loc_4047ED
		movzx	eax, word ptr [ebp+arg_8]
		cmp	eax, ebx
		jnz	short loc_404752
		mov	ecx, [ebp+arg_8]
		shr	ecx, 10h
		cmp	cx, 300h
		jnz	loc_40494C
		mov	[ebp+arg_4], 40Fh

loc_404752:				; CODE XREF: sub_40463C+FCj
		cmp	eax, 3E9h
		jnz	loc_4047ED
		push	7
		pop	ecx
		push	[ebp+var_4]
		xor	eax, eax
		lea	edi, [ebp+var_44]
		rep stosd
		mov	eax, [ebp+arg_0]
		mov	edi, offset dword_4219D8
		push	0
		mov	[ebp+var_48], eax
		mov	[ebp+var_40], edi
		mov	[ebp+var_34], offset sub_4041F2
		mov	[ebp+var_30], esi
		call	sub_4065B7
		mov	[ebp+var_3C], eax
		lea	eax, [ebp+var_48]
		push	eax
		mov	[ebp+var_38], 41h
		call	ds:dword_408168
		test	eax, eax
		jz	short loc_4047ED
		push	eax
		call	sub_405CD6
		mov	eax, dword_4263E8
		mov	eax, [eax+11Ch]
		test	eax, eax
		jz	short loc_4047DD
		push	eax
		push	0
		call	sub_4065B7
		push	edi
		mov	edi, offset byte_424F80
		push	edi
		call	ds:dword_408080	; lstrcmpi
		test	eax, eax
		jz	short loc_4047DD
		push	edi
		push	esi
		call	sub_4061A6
		push	eax
		call	ds:dword_4080A4	; lstrcat

loc_4047DD:				; CODE XREF: sub_40463C+178j
					; sub_40463C+191j
		inc	dword_420DC4
		push	esi
		push	ebx
		push	[ebp+arg_0]
		call	sub_405D57	; SetDlgItemTextA

loc_4047ED:				; CODE XREF: sub_40463C+F0j
					; sub_40463C+11Bj ...
		cmp	[ebp+arg_4], 40Fh
		jz	short loc_404803
		cmp	[ebp+arg_4], 405h
		jnz	loc_40494C

loc_404803:				; CODE XREF: sub_40463C+1B8j
		and	[ebp+var_4], 0
		and	[ebp+var_8], 0
		push	esi
		push	ebx
		or	edi, 0FFFFFFFFh
		call	sub_405D5D
		push	esi
		call	sub_40622D
		test	eax, eax
		jnz	short loc_404826
		mov	[ebp+var_4], 1

loc_404826:				; CODE XREF: sub_40463C+1E1j
		push	esi
		mov	esi, offset dword_420DC8
		push	esi
		call	sub_405FFD	; lstrcpy
		push	esi
		call	sub_405E0D
		test	eax, eax
		jz	short loc_40483F
		mov	byte ptr [eax],	0

loc_40483F:				; CODE XREF: sub_40463C+1FEj
		push	offset aKernel32_dll ; "KERNEL32.dll"
		call	ds:dword_408068	; GetModuleHandleA
		test	eax, eax
		mov	ebx, 400h
		jz	short loc_404885
		push	offset aGetdiskfreespa ; "GetDiskFreeSpaceExA"
		push	eax
		call	ds:dword_40812C	; GetProcAddress
		test	eax, eax
		jz	short loc_404885
		lea	ecx, [ebp+var_1C]
		push	ecx
		lea	ecx, [ebp+var_14]
		push	ecx
		lea	ecx, [ebp+var_28]
		push	ecx
		push	esi
		call	eax
		test	eax, eax
		jz	short loc_404885
		mov	edi, [ebp+var_28]
		mov	eax, [ebp+var_24]
		shrd	edi, eax, 0Ah
		shr	eax, 0Ah
		jmp	short loc_4048B4
; ---------------------------------------------------------------------------

loc_404885:				; CODE XREF: sub_40463C+215j
					; sub_40463C+225j ...
		lea	eax, [ebp+var_24]
		push	eax
		lea	eax, [ebp+var_C]
		push	eax
		lea	eax, [ebp+var_18]
		push	eax
		lea	eax, [ebp+var_10]
		push	eax
		push	esi
		call	ds:dword_4080E8	; GetDiskFreeSpaceA
		test	eax, eax
		jz	short loc_4048BB
		mov	eax, [ebp+var_10]
		imul	eax, [ebp+var_18]
		push	ebx
		push	[ebp+var_C]
		push	eax
		call	ds:dword_408124	; MulDiv
		mov	edi, eax

loc_4048B4:				; CODE XREF: sub_40463C+247j
		mov	[ebp+var_8], 1

loc_4048BB:				; CODE XREF: sub_40463C+262j
		push	5
		call	sub_40460F
		cmp	edi, eax
		jnb	short loc_4048CD
		mov	[ebp+var_4], 2

loc_4048CD:				; CODE XREF: sub_40463C+288j
		mov	ecx, dword_425BC8
		xor	esi, esi
		cmp	[ecx+10h], esi
		jz	short loc_404905
		push	0FFFFFFFBh
		push	3FFh
		call	sub_404578
		cmp	[ebp+var_8], esi
		jz	short loc_4048F7
		push	0FFFFFFFCh
		push	ebx
		mov	eax, edi
		call	sub_404578
		jmp	short loc_404905
; ---------------------------------------------------------------------------

loc_4048F7:				; CODE XREF: sub_40463C+2ADj
		push	offset word_408BBE
		push	ebx
		push	[ebp+arg_0]
		call	sub_405D57	; SetDlgItemTextA

loc_404905:				; CODE XREF: sub_40463C+29Cj
					; sub_40463C+2B9j
		mov	eax, [ebp+var_4]
		cmp	eax, esi
		mov	dword_426484, eax
		jnz	short loc_40491B
		push	7
		call	sub_4014C9
		mov	[ebp+var_4], eax

loc_40491B:				; CODE XREF: sub_40463C+2D3j
		mov	eax, [ebp+var_20]
		test	[eax+14h], ebx
		jz	short loc_404926
		mov	[ebp+var_4], esi

loc_404926:				; CODE XREF: sub_40463C+2E5j
		xor	eax, eax
		cmp	[ebp+var_4], esi
		setz	al
		push	eax
		call	sub_403FFA
		cmp	[ebp+var_4], esi
		jnz	short loc_404946
		cmp	dword_420DC4, esi
		jnz	short loc_404946
		call	sub_403FD6

loc_404946:				; CODE XREF: sub_40463C+2FBj
					; sub_40463C+303j
		mov	dword_420DC4, esi

loc_40494C:				; CODE XREF: sub_40463C+109j
					; sub_40463C+1C1j
		push	[ebp+arg_C]
		mov	eax, [ebp+arg_4]
		push	[ebp+arg_8]
		call	sub_40403F
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn	10h
sub_40463C	endp


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

; Attributes: bp-based frame


sub_404961	proc near		; CODE XREF: sub_4049AD+59p
					; sub_404A94+2D3p

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

		push	ebp
		mov	ebp, esp
		sub	esp, 10h
		call	ds:dword_4081BC	; GetMessagePos
		movsx	ecx, ax
		shr	eax, 10h
		movsx	eax, ax
		mov	[ebp+var_C], eax
		lea	eax, [ebp+var_10]
		push	eax
		push	[ebp+arg_0]
		mov	[ebp+var_10], ecx
		call	ds:dword_4081B8	; ScreenToClient
		lea	eax, [ebp+var_10]
		push	eax
		push	0
		push	1111h
		push	[ebp+arg_0]
		call	ds:dword_408278	; SendMessageA
		mov	al, [ebp+var_8]
		and	al, 66h
		neg	al
		sbb	eax, eax
		and	eax, [ebp+var_4]
		leave
		retn	4
sub_404961	endp


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

; Attributes: bp-based frame


sub_4049AD	proc near		; DATA XREF: sub_404A94+89o

var_28		= dword	ptr -28h
var_24		= dword	ptr -24h
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, 28h
		cmp	[ebp+arg_4], 102h
		push	esi
		push	edi
		jnz	short loc_4049D9
		cmp	[ebp+arg_8], 20h
		jnz	loc_404A75
		push	413h
		call	sub_404024
		xor	eax, eax
		jmp	loc_404A8E
; ---------------------------------------------------------------------------

loc_4049D9:				; CODE XREF: sub_4049AD+Fj
		or	edi, 0FFFFFFFFh
		cmp	[ebp+arg_4], 2
		jnz	short loc_4049E8
		mov	dword_40A03C, edi

loc_4049E8:				; CODE XREF: sub_4049AD+33j
		cmp	[ebp+arg_4], 200h
		mov	esi, 419h
		jnz	short loc_404A35
		push	[ebp+arg_0]
		call	ds:dword_4081C4	; IsWindowVisible
		test	eax, eax
		jz	short loc_404A75
		push	[ebp+arg_0]
		call	sub_404961
		test	eax, eax
		mov	[ebp+var_24], eax
		jz	short loc_404A30
		lea	eax, [ebp+var_28]
		push	eax
		push	0
		push	110Ch
		push	[ebp+arg_0]
		mov	[ebp+var_28], 4
		call	ds:dword_408278	; SendMessageA
		mov	edi, [ebp+var_4]

loc_404A30:				; CODE XREF: sub_4049AD+63j
		mov	[ebp+arg_4], esi
		jmp	short loc_404A38
; ---------------------------------------------------------------------------

loc_404A35:				; CODE XREF: sub_4049AD+47j
		mov	edi, [ebp+arg_C]

loc_404A38:				; CODE XREF: sub_4049AD+86j
		cmp	[ebp+arg_4], esi
		jnz	short loc_404A78
		cmp	dword_40A03C, edi
		jz	short loc_404A78
		push	ebx
		mov	esi, offset dword_427000
		push	esi
		mov	ebx, offset dword_4219D8
		push	ebx
		mov	dword_40A03C, edi
		call	sub_405FFD	; lstrcpy
		push	edi
		push	esi
		call	sub_405F5B
		push	6
		call	sub_4014C9
		push	ebx
		push	esi
		call	sub_405FFD	; lstrcpy
		pop	ebx
		jmp	short loc_404A78
; ---------------------------------------------------------------------------

loc_404A75:				; CODE XREF: sub_4049AD+15j
					; sub_4049AD+54j
		mov	edi, [ebp+arg_C]

loc_404A78:				; CODE XREF: sub_4049AD+8Ej
					; sub_4049AD+96j ...
		push	edi
		push	[ebp+arg_8]
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		push	dword_420DC0
		call	ds:dword_4081C0	; CallWindowProcA

loc_404A8E:				; CODE XREF: sub_4049AD+27j
		pop	edi
		pop	esi
		leave
		retn	10h
sub_4049AD	endp


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

; Attributes: bp-based frame


sub_404A94	proc near		; DATA XREF: .data:0040A02Co

var_54		= dword	ptr -54h
var_50		= dword	ptr -50h
var_4C		= dword	ptr -4Ch
var_48		= dword	ptr -48h
var_44		= dword	ptr -44h
var_40		= dword	ptr -40h
var_3C		= dword	ptr -3Ch
var_38		= dword	ptr -38h
var_2C		= dword	ptr -2Ch
var_28		= dword	ptr -28h
var_24		= dword	ptr -24h
var_20		= dword	ptr -20h
var_1C		= dword	ptr -1Ch
var_18		= dword	ptr -18h
var_14		= dword	ptr -14h
var_10		= dword	ptr -10h
var_C		= dword	ptr -0Ch
var_8		= dword	ptr -8
var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h
arg_C		= dword	ptr  14h

		push	ebp
		mov	ebp, esp
		sub	esp, 54h
		push	ebx
		push	esi
		mov	esi, ds:dword_408240
		push	edi
		push	3F9h
		push	[ebp+arg_0]
		call	esi	; GetDlgItem
		push	408h
		push	[ebp+arg_0]
		mov	[ebp+var_8], eax
		call	esi	; GetDlgItem
		mov	esi, ds:dword_408278
		mov	[ebp+var_4], eax
		mov	eax, dword_426408
		mov	[ebp+var_18], eax
		mov	eax, dword_4263E8
		add	eax, 94h
		xor	ebx, ebx
		cmp	[ebp+arg_4], 110h
		push	10h
		mov	[ebp+var_1C], eax
		pop	edi
		jnz	loc_404D04
		mov	eax, [ebp+arg_0]
		mov	dword_42644C, eax
		mov	eax, dword_42640C
		shl	eax, 2
		push	eax
		mov	[ebp+var_20], ebx
		mov	[ebp+var_14], 2
		call	sub_405DBB
		push	6Eh
		push	dword_4263E4
		mov	dword_4211D0, eax
		call	ds:dword_4081C8	; LoadBitmapA
		push	offset sub_4049AD
		push	0FFFFFFFCh
		push	[ebp+var_4]
		mov	[ebp+var_10], eax
		call	ds:dword_408244	; SetWindowLongA
		push	ebx
		push	6
		push	21h
		push	edi
		push	edi
		mov	dword_420DC0, eax
		call	ds:dword_408034
		push	0FF00FFh
		push	[ebp+var_10]
		mov	dword_4211CC, eax
		push	eax
		call	ds:dword_40802C
		push	dword_4211CC
		push	2
		push	1109h
		push	[ebp+var_4]
		call	esi	; SendMessageA
		push	ebx
		push	ebx
		push	111Ch
		push	[ebp+var_4]
		call	esi	; SendMessageA
		cmp	eax, edi
		jge	short loc_404B84
		push	ebx
		push	edi
		push	111Bh
		push	[ebp+var_4]
		call	esi	; SendMessageA

loc_404B84:				; CODE XREF: sub_404A94+E2j
		push	[ebp+var_10]
		call	ds:dword_408040	; DeleteObject
		xor	edi, edi

loc_404B8F:				; CODE XREF: sub_404A94+130j
		mov	eax, [ebp+var_1C]
		mov	eax, [eax+edi*4]
		cmp	eax, ebx
		jz	short loc_404BC0
		cmp	edi, 20h
		jz	short loc_404BA1
		mov	[ebp+var_14], ebx

loc_404BA1:				; CODE XREF: sub_404A94+108j
		push	eax
		push	ebx
		call	sub_4065B7
		push	eax
		push	ebx
		push	143h
		push	[ebp+var_8]
		call	esi	; SendMessageA
		push	edi
		push	eax
		push	151h
		push	[ebp+var_8]
		call	esi	; SendMessageA

loc_404BC0:				; CODE XREF: sub_404A94+103j
		inc	edi
		cmp	edi, 21h
		jl	short loc_404B8F
		mov	eax, [ebp+var_14]
		mov	edi, [ebp+arg_C]
		push	dword ptr [edi+eax*4+30h]
		push	15h
		push	[ebp+arg_0]
		call	sub_403FB4
		mov	eax, [ebp+var_14]
		push	dword ptr [edi+eax*4+34h]
		push	16h
		push	[ebp+arg_0]
		call	sub_403FB4
		xor	edi, edi
		cmp	dword_42640C, ebx
		mov	[ebp+var_C], ebx
		jle	loc_404CB8
		mov	eax, [ebp+var_18]
		add	eax, 8
		mov	[ebp+var_10], eax
		mov	ebx, 1100h

loc_404C0A:				; CODE XREF: sub_404A94+217j
		mov	edx, [ebp+var_10]
		lea	eax, [edx+10h]
		cmp	byte ptr [eax],	0
		jz	loc_404C9D
		mov	ecx, [ebp+var_C]
		mov	[ebp+var_3C], eax
		mov	eax, [edx]
		push	20h
		mov	[ebp+var_54], ecx
		pop	ecx
		mov	edx, eax
		and	edx, ecx
		test	al, 2
		mov	[ebp+var_50], 0FFFF0002h
		mov	[ebp+var_4C], 0Dh
		mov	[ebp+var_40], ecx
		mov	[ebp+var_28], edi
		mov	[ebp+var_44], edx
		jz	short loc_404C6C
		lea	eax, [ebp+var_54]
		push	eax
		push	0
		push	ebx
		push	[ebp+var_4]
		mov	[ebp+var_4C], 4Dh
		mov	[ebp+var_2C], 1
		call	esi	; SendMessageA
		mov	[ebp+var_C], eax
		mov	[ebp+var_20], 1
		jmp	short loc_404C94
; ---------------------------------------------------------------------------

loc_404C6C:				; CODE XREF: sub_404A94+1B0j
		mov	eax, [ebp+var_10]
		test	byte ptr [eax],	4
		jz	short loc_404C88
		push	[ebp+var_C]
		push	3
		push	110Ah
		push	[ebp+var_4]
		call	esi	; SendMessageA
		mov	[ebp+var_C], eax
		jmp	short loc_404C9D
; ---------------------------------------------------------------------------

loc_404C88:				; CODE XREF: sub_404A94+1DEj
		lea	eax, [ebp+var_54]
		push	eax
		push	0
		push	ebx
		push	[ebp+var_4]
		call	esi	; SendMessageA

loc_404C94:				; CODE XREF: sub_404A94+1D6j
		mov	ecx, dword_4211D0
		mov	[ecx+edi*4], eax

loc_404C9D:				; CODE XREF: sub_404A94+17Fj
					; sub_404A94+1F2j
		add	[ebp+var_10], 418h
		inc	edi
		cmp	edi, dword_42640C
		jl	loc_404C0A
		xor	ebx, ebx
		cmp	[ebp+var_20], ebx
		jnz	short loc_404CD2

loc_404CB8:				; CODE XREF: sub_404A94+162j
		push	0FFFFFFF0h
		push	[ebp+var_4]
		call	ds:dword_4081A0	; GetWindowLongA
		and	eax, 0FFFFFFFBh
		push	eax
		push	0FFFFFFF0h
		push	[ebp+var_4]
		call	ds:dword_408244	; SetWindowLongA

loc_404CD2:				; CODE XREF: sub_404A94+222j
		push	ebx
		push	6
		push	115h
		push	[ebp+var_4]
		call	esi	; SendMessageA
		cmp	[ebp+var_14], ebx
		jnz	short loc_404CFC
		push	5
		push	[ebp+var_8]
		call	ds:dword_408228	; ShowWindow
		push	[ebp+var_8]
		call	sub_40400D
		jmp	loc_40508A
; ---------------------------------------------------------------------------

loc_404CFC:				; CODE XREF: sub_404A94+24Ej
		push	[ebp+var_4]
		call	sub_40400D

loc_404D04:				; CODE XREF: sub_404A94+50j
		cmp	[ebp+arg_4], 405h
		jnz	short loc_404D1F
		xor	edi, edi
		inc	edi
		mov	[ebp+arg_8], ebx
		mov	[ebp+arg_C], edi
		mov	[ebp+arg_4], 40Fh
		jmp	short loc_404D22
; ---------------------------------------------------------------------------

loc_404D1F:				; CODE XREF: sub_404A94+277j
		mov	edi, [ebp+arg_C]

loc_404D22:				; CODE XREF: sub_404A94+289j
		cmp	[ebp+arg_4], 4Eh
		mov	eax, 413h
		jz	short loc_404D36
		cmp	[ebp+arg_4], eax
		jnz	loc_404E34

loc_404D36:				; CODE XREF: sub_404A94+297j
		cmp	[ebp+arg_4], eax
		jz	short loc_404D48
		cmp	dword ptr [edi+4], 408h
		jnz	loc_404E34

loc_404D48:				; CODE XREF: sub_404A94+2A5j
		test	byte ptr dword_426444+1, 2
		jnz	loc_404DF2
		cmp	[ebp+arg_4], eax
		jz	short loc_404D6E
		cmp	dword ptr [edi+8], 0FFFFFFFEh
		jnz	loc_404DF2
		push	[ebp+var_4]
		call	sub_404961
		jmp	short loc_404D7B
; ---------------------------------------------------------------------------

loc_404D6E:				; CODE XREF: sub_404A94+2C4j
		push	ebx
		push	9
		push	110Ah
		push	[ebp+var_4]
		call	esi	; SendMessageA

loc_404D7B:				; CODE XREF: sub_404A94+2D8j
		cmp	eax, ebx
		mov	[ebp+var_44], eax
		jz	short loc_404DF2
		lea	eax, [ebp+var_48]
		push	eax
		push	ebx
		push	110Ch
		push	[ebp+var_4]
		mov	[ebp+var_48], 4
		call	esi	; SendMessageA
		test	eax, eax
		jz	short loc_404DF2
		mov	eax, [ebp+var_24]
		mov	ecx, [ebp+var_18]
		imul	eax, 418h
		lea	ecx, [eax+ecx+8]
		mov	eax, [ecx]
		test	al, 10h
		jnz	short loc_404DF2
		test	al, 40h
		jz	short loc_404DC9
		xor	eax, 80h
		test	al, al
		jns	short loc_404DC4
		or	eax, 1
		jmp	short loc_404DCC
; ---------------------------------------------------------------------------

loc_404DC4:				; CODE XREF: sub_404A94+329j
		and	eax, 0FFFFFFFEh
		jmp	short loc_404DCC
; ---------------------------------------------------------------------------

loc_404DC9:				; CODE XREF: sub_404A94+320j
		xor	eax, 1

loc_404DCC:				; CODE XREF: sub_404A94+32Ej
					; sub_404A94+333j
		mov	[ecx], eax
		push	[ebp+var_24]
		call	sub_40117D
		mov	eax, dword_426444
		xor	ecx, ecx
		shr	eax, 8
		inc	ecx
		not	eax
		and	eax, ecx
		mov	[ebp+arg_8], ecx
		mov	[ebp+arg_C], eax
		mov	[ebp+arg_4], 40Fh

loc_404DF2:				; CODE XREF: sub_404A94+2BBj
					; sub_404A94+2CAj ...
		cmp	edi, ebx
		jz	short loc_404E34
		cmp	dword ptr [edi+8], 0FFFFFE6Eh
		jnz	short loc_404E0D
		push	dword ptr [edi+5Ch]
		push	ebx
		push	419h
		push	[ebp+var_4]
		call	esi	; SendMessageA

loc_404E0D:				; CODE XREF: sub_404A94+369j
		cmp	dword ptr [edi+8], 0FFFFFE6Ah
		jnz	short loc_404E34
		mov	eax, [edi+5Ch]
		mov	ecx, [ebp+var_18]
		imul	eax, 418h
		cmp	dword ptr [edi+0Ch], 2
		lea	eax, [eax+ecx+8]
		jnz	short loc_404E31
		or	dword ptr [eax], 20h
		jmp	short loc_404E34
; ---------------------------------------------------------------------------

loc_404E31:				; CODE XREF: sub_404A94+396j
		and	dword ptr [eax], 0FFFFFFDFh

loc_404E34:				; CODE XREF: sub_404A94+29Cj
					; sub_404A94+2AEj ...
		cmp	[ebp+arg_4], 111h
		jnz	short loc_404EAF
		cmp	word ptr [ebp+arg_8], 3F9h
		jnz	loc_40508A
		mov	eax, [ebp+arg_8]
		shr	eax, 10h
		cmp	ax, 1
		jnz	loc_40508A
		push	ebx
		push	ebx
		push	147h
		push	[ebp+var_8]
		call	esi	; SendMessageA
		cmp	eax, 0FFFFFFFFh
		jz	loc_40508A
		push	ebx
		push	eax
		push	150h
		push	[ebp+var_8]
		call	esi	; SendMessageA
		mov	edi, eax
		cmp	edi, 0FFFFFFFFh
		jz	short loc_404E89
		mov	eax, [ebp+var_1C]
		cmp	[eax+edi*4], ebx
		jnz	short loc_404E8C

loc_404E89:				; CODE XREF: sub_404A94+3EBj
		push	20h
		pop	edi

loc_404E8C:				; CODE XREF: sub_404A94+3F3j
		push	edi
		call	sub_4012A8
		push	edi
		push	ebx
		push	420h
		push	[ebp+arg_0]
		call	esi	; SendMessageA
		mov	[ebp+arg_8], 1
		mov	[ebp+arg_C], ebx
		mov	[ebp+arg_4], 40Fh

loc_404EAF:				; CODE XREF: sub_404A94+3A7j
		cmp	[ebp+arg_4], 200h
		jnz	short loc_404EC4
		push	ebx
		push	ebx
		push	200h
		push	[ebp+var_4]
		call	esi	; SendMessageA

loc_404EC4:				; CODE XREF: sub_404A94+422j
		cmp	[ebp+arg_4], 40Bh
		jnz	short loc_404EFF
		mov	eax, dword_4211CC
		cmp	eax, ebx
		jz	short loc_404EDD
		push	eax
		call	ds:dword_408030

loc_404EDD:				; CODE XREF: sub_404A94+440j
		mov	eax, dword_4211D0
		cmp	eax, ebx
		jz	short loc_404EED
		push	eax
		call	ds:dword_40813C	; GlobalFree

loc_404EED:				; CODE XREF: sub_404A94+450j
		mov	dword_4211CC, ebx
		mov	dword_4211D0, ebx
		mov	dword_42644C, ebx

loc_404EFF:				; CODE XREF: sub_404A94+437j
		cmp	[ebp+arg_4], 40Fh
		jnz	loc_40504C
		call	sub_40129E
		cmp	[ebp+arg_8], ebx
		jz	short loc_404F1D
		push	8
		call	sub_4014C9

loc_404F1D:				; CODE XREF: sub_404A94+480j
		cmp	[ebp+arg_C], ebx
		jz	short loc_404F61
		push	dword_4211D0
		call	sub_4012F3
		mov	edi, eax
		push	edi
		call	sub_4012A8
		xor	eax, eax
		xor	ecx, ecx
		cmp	edi, ebx
		jle	short loc_404F4B

loc_404F3D:				; CODE XREF: sub_404A94+4B5j
		mov	edx, [ebp+var_1C]
		cmp	[edx+eax*4], ebx
		jz	short loc_404F46
		inc	ecx

loc_404F46:				; CODE XREF: sub_404A94+4AFj
		inc	eax
		cmp	eax, edi
		jl	short loc_404F3D

loc_404F4B:				; CODE XREF: sub_404A94+4A7j
		push	ebx
		push	ecx
		push	14Eh
		push	[ebp+var_8]
		call	esi	; SendMessageA
		mov	[ebp+arg_C], edi
		mov	[ebp+arg_4], 420h

loc_404F61:				; CODE XREF: sub_404A94+48Cj
		call	sub_40129E
		cmp	dword_42640C, ebx
		mov	eax, dword_4211D0
		mov	edi, dword_426408
		mov	[ebp+var_20], eax
		mov	[ebp+var_3C], 0F030h
		mov	[ebp+var_14], ebx
		jle	loc_40502F
		add	edi, 8

loc_404F8D:				; CODE XREF: sub_404A94+595j
		mov	eax, [ebp+var_20]
		mov	ecx, [ebp+var_14]
		mov	eax, [eax+ecx*4]
		cmp	eax, ebx
		jz	short loc_405017
		mov	edx, [edi]
		push	8
		mov	[ebp+var_44], eax
		pop	eax
		mov	ecx, edx
		and	ecx, eax
		mov	[ebp+var_18], edx
		and	[ebp+var_18], 20h
		shl	ecx, 1
		or	ecx, [ebp+var_18]
		test	dh, 1
		mov	[ebp+var_48], eax
		mov	[ebp+var_40], ecx
		jz	short loc_404FD1
		lea	eax, [edi+10h]
		mov	[ebp+var_48], 9
		mov	[ebp+var_38], eax
		and	byte ptr [edi+1], 0FEh
		mov	ecx, [ebp+var_40]

loc_404FD1:				; CODE XREF: sub_404A94+527j
		test	dl, 40h
		jz	short loc_404FDB
		push	3
		pop	eax
		jmp	short loc_404FE9
; ---------------------------------------------------------------------------

loc_404FDB:				; CODE XREF: sub_404A94+540j
		mov	eax, edx
		and	eax, 1
		inc	eax
		test	dl, 10h
		jz	short loc_404FE9
		add	eax, 3

loc_404FE9:				; CODE XREF: sub_404A94+545j
					; sub_404A94+550j
		push	[ebp+var_44]
		shl	eax, 0Ch
		or	ecx, eax
		xor	eax, eax
		cmp	[ebp+var_18], ebx
		mov	[ebp+var_40], ecx
		setnz	al
		inc	eax
		push	eax
		push	1102h
		push	[ebp+var_4]
		call	esi	; SendMessageA
		lea	eax, [ebp+var_48]
		push	eax
		push	ebx
		push	110Dh
		push	[ebp+var_4]
		call	esi	; SendMessageA

loc_405017:				; CODE XREF: sub_404A94+504j
		inc	[ebp+var_14]
		mov	eax, [ebp+var_14]
		add	edi, 418h
		cmp	eax, dword_42640C
		jl	loc_404F8D

loc_40502F:				; CODE XREF: sub_404A94+4F0j
		mov	eax, dword_425BC8
		cmp	[eax+10h], ebx
		jz	short loc_40504C
		push	5
		call	sub_40460F
		push	0FFFFFFFBh
		push	3FFh
		call	sub_404578

loc_40504C:				; CODE XREF: sub_404A94+472j
					; sub_404A94+5A3j
		cmp	[ebp+arg_4], 420h
		jnz	short loc_40508A
		test	byte ptr dword_426444+1, 1
		jz	short loc_40508A
		mov	esi, ds:dword_408228
		xor	eax, eax
		cmp	[ebp+arg_C], 20h
		setz	al
		shl	eax, 3
		mov	edi, eax
		push	edi
		push	[ebp+var_4]
		call	esi	; ShowWindow
		push	edi
		push	3FEh
		push	[ebp+arg_0]
		call	ds:dword_408240	; GetDlgItem
		push	eax
		call	esi	; ShowWindow

loc_40508A:				; CODE XREF: sub_404A94+263j
					; sub_404A94+3AFj ...
		push	[ebp+arg_C]
		mov	eax, [ebp+arg_4]
		push	[ebp+arg_8]
		call	sub_40403F
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn	10h
sub_404A94	endp


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

; Attributes: bp-based frame


sub_40509F	proc near		; CODE XREF: sub_4014E1+9p
					; sub_401610:loc_40169Fp ...

var_30		= dword	ptr -30h
var_2C		= dword	ptr -2Ch
var_28		= dword	ptr -28h
var_1C		= dword	ptr -1Ch
var_8		= dword	ptr -8
var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		sub	esp, 30h
		mov	eax, dword_425BAC
		push	edi
		xor	edi, edi
		cmp	eax, edi
		mov	[ebp+var_8], eax
		jz	loc_405172
		push	ebx
		mov	ebx, dword_40A040
		mov	[ebp+var_4], ebx
		and	[ebp+var_4], 1
		push	esi
		mov	esi, offset byte_4211D8
		jnz	short loc_4050D7
		push	[ebp+arg_0]
		push	esi
		call	sub_4065B7

loc_4050D7:				; CODE XREF: sub_40509F+2Dj
		push	esi
		call	sub_406003	; lstrlen
		cmp	[ebp+arg_4], edi
		mov	[ebp+arg_0], eax
		jz	short loc_405101
		push	[ebp+arg_4]
		call	sub_406003	; lstrlen
		add	eax, [ebp+arg_0]
		cmp	eax, 800h
		jnb	short loc_405170
		push	[ebp+arg_4]
		push	esi
		call	ds:dword_4080A4	; lstrcat

loc_405101:				; CODE XREF: sub_40509F+44j
		test	bl, 4
		jz	short loc_405113
		push	esi
		push	dword_425BB8
		call	ds:dword_408184	; SetWindowTextA

loc_405113:				; CODE XREF: sub_40509F+65j
		test	bl, 2
		jz	short loc_405161
		push	edi
		push	edi
		push	1004h
		push	[ebp+var_8]
		mov	[ebp+var_1C], esi
		mov	esi, ds:dword_408278
		mov	[ebp+var_30], 1
		call	esi	; SendMessageA
		sub	eax, [ebp+var_4]
		not	ebx
		mov	[ebp+var_2C], eax
		lea	eax, [ebp+var_30]
		push	eax
		push	edi
		and	ebx, 1
		or	ebx, 1006h
		push	ebx
		push	[ebp+var_8]
		mov	[ebp+var_28], edi
		call	esi	; SendMessageA
		push	edi
		push	[ebp+var_2C]
		push	1013h
		push	[ebp+var_8]
		call	esi	; SendMessageA

loc_405161:				; CODE XREF: sub_40509F+77j
		cmp	[ebp+var_4], edi
		jz	short loc_405170
		mov	eax, [ebp+arg_0]
		mov	byte_4211D8[eax], 0

loc_405170:				; CODE XREF: sub_40509F+56j
					; sub_40509F+C5j
		pop	esi
		pop	ebx

loc_405172:				; CODE XREF: sub_40509F+13j
		pop	edi
		leave
		retn	8
sub_40509F	endp


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



sub_405177	proc near		; CODE XREF: sub_405A5A+24Bp
					; DATA XREF: sub_405202+1D9o

arg_0		= dword	ptr  4

		push	esi
		mov	esi, dword_426408
		push	edi
		mov	edi, dword_42640C
		push	0
		call	ds:dword_408294
		or	dword_426490, eax
		test	edi, edi
		jz	short loc_4051E8
		add	esi, 18h

loc_40519A:				; CODE XREF: sub_405177+67j
		dec	edi
		test	byte ptr [esi-10h], 1
		jnz	short loc_4051B9
		test	byte ptr dword_426444+1, 4
		jnz	short loc_4051B9
		push	esi
		push	offset aSkippingSectio ; "Skipping section: \"%s\""
		call	sub_40614C
		pop	ecx
		pop	ecx
		jmp	short loc_4051D6
; ---------------------------------------------------------------------------

loc_4051B9:				; CODE XREF: sub_405177+28j
					; sub_405177+31j
		push	esi
		push	offset aSectionS ; "Section: \"%s\""
		call	sub_40614C
		pop	ecx
		pop	ecx
		push	[esp+8+arg_0]
		push	dword ptr [esi-0Ch]
		call	sub_4013E7
		test	eax, eax
		jnz	short loc_4051E2

loc_4051D6:				; CODE XREF: sub_405177+40j
		add	esi, 418h
		test	edi, edi
		jnz	short loc_40519A
		jmp	short loc_4051E8
; ---------------------------------------------------------------------------

loc_4051E2:				; CODE XREF: sub_405177+5Dj
		inc	dword_42646C

loc_4051E8:				; CODE XREF: sub_405177+1Ej
					; sub_405177+69j
		push	404h
		call	sub_404024
		call	ds:dword_408290
		mov	eax, dword_42646C
		pop	edi
		pop	esi
		retn	4
sub_405177	endp


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

; Attributes: bp-based frame


sub_405202	proc near		; DATA XREF: .data:0040A034o

var_3C		= byte ptr -3Ch
var_34		= dword	ptr -34h
var_30		= dword	ptr -30h
var_2C		= dword	ptr -2Ch
var_28		= dword	ptr -28h
var_24		= dword	ptr -24h
var_20		= dword	ptr -20h
var_1C		= byte ptr -1Ch
var_14		= dword	ptr -14h
var_10		= dword	ptr -10h
var_C		= dword	ptr -0Ch
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, 3Ch
		push	ebx
		push	esi
		mov	esi, dword_425BAC
		xor	ebx, ebx
		cmp	[ebp+arg_4], 110h
		push	edi
		mov	[ebp+var_4], esi
		jnz	loc_4053BE
		or	[ebp+var_2C], 0FFFFFFFFh
		or	[ebp+var_20], 0FFFFFFFFh
		mov	[ebp+var_34], 2
		mov	[ebp+var_30], ebx
		mov	[ebp+var_28], ebx
		mov	[ebp+var_24], ebx
		xor	eax, eax
		lea	edi, [ebp+var_1C]
		stosd
		stosd
		mov	eax, dword_4263E8
		mov	ecx, [eax+5Ch]
		mov	eax, [eax+60h]
		mov	edi, ds:dword_408240
		push	403h
		push	[ebp+arg_0]
		mov	[ebp+arg_4], ecx
		mov	[ebp+arg_8], eax
		call	edi	; GetDlgItem
		push	3EEh
		push	[ebp+arg_0]
		mov	dword_425BC0, eax
		call	edi	; GetDlgItem
		push	3F8h
		push	[ebp+arg_0]
		mov	dword_425BB8, eax
		call	edi	; GetDlgItem
		push	dword_425BC0
		mov	dword_425BAC, eax
		mov	[ebp+var_4], eax
		call	sub_40400D
		push	4
		call	sub_40460F
		push	offset byte_42C400
		push	0FFFFFFFDh
		push	ebx
		mov	dword_425BC4, eax
		mov	dword_425BCC, ebx
		call	sub_4065B7
		push	eax
		push	offset aNewInstallOfST ; "New install of \"%s\"	to \"%s\""
		call	sub_40614C
		add	esp, 0Ch
		lea	eax, [ebp+var_14]
		push	eax
		push	[ebp+var_4]
		call	ds:dword_408268	; GetClientRect
		push	15h
		call	ds:dword_4081EC	; GetSystemMetrics
		mov	ecx, [ebp+var_C]
		mov	esi, ds:dword_408278
		sub	ecx, eax
		lea	eax, [ebp+var_34]
		push	eax
		push	ebx
		push	101Bh
		push	[ebp+var_4]
		mov	[ebp+var_2C], ecx
		call	esi	; SendMessageA
		mov	eax, 4000h
		push	eax
		push	eax
		push	1036h
		push	[ebp+var_4]
		call	esi	; SendMessageA
		cmp	[ebp+arg_4], ebx
		jl	short loc_405325
		push	[ebp+arg_4]
		push	ebx
		push	1001h
		push	[ebp+var_4]
		call	esi	; SendMessageA
		push	[ebp+arg_4]
		push	ebx
		push	1026h
		push	[ebp+var_4]
		call	esi	; SendMessageA

loc_405325:				; CODE XREF: sub_405202+105j
		cmp	[ebp+arg_8], ebx
		jl	short loc_405338
		push	[ebp+arg_8]
		push	ebx
		push	1024h
		push	[ebp+var_4]
		call	esi	; SendMessageA

loc_405338:				; CODE XREF: sub_405202+126j
		mov	eax, [ebp+arg_C]
		push	dword ptr [eax+30h]
		push	1Bh
		push	[ebp+arg_0]
		call	sub_403FB4
		test	byte ptr dword_426444, 3
		jz	short loc_40537A
		push	ebx
		push	dword_425BC0
		call	ds:dword_408228	; ShowWindow
		test	byte ptr dword_426444, 2
		jnz	short loc_405374
		push	8
		push	[ebp+var_4]
		call	ds:dword_408228	; ShowWindow
		jmp	short loc_40537A
; ---------------------------------------------------------------------------

loc_405374:				; CODE XREF: sub_405202+163j
		mov	dword_425BC0, ebx

loc_40537A:				; CODE XREF: sub_405202+14Dj
					; sub_405202+170j
		push	3ECh
		push	[ebp+arg_0]
		call	edi	; GetDlgItem
		push	75300000h
		push	ebx
		mov	edi, eax
		push	401h
		push	edi
		call	esi	; SendMessageA
		test	byte ptr dword_426444, 4
		jz	loc_405590
		push	[ebp+arg_8]
		push	ebx
		push	409h
		push	edi
		call	esi	; SendMessageA
		push	[ebp+arg_4]
		push	ebx
		push	2001h
		push	edi
		call	esi	; SendMessageA
		jmp	loc_405590
; ---------------------------------------------------------------------------

loc_4053BE:				; CODE XREF: sub_405202+1Bj
		cmp	[ebp+arg_4], 405h
		jnz	short loc_4053EF
		lea	eax, [ebp+arg_0]
		push	eax
		push	ebx
		push	3ECh
		push	[ebp+arg_0]
		call	ds:dword_408240	; GetDlgItem
		push	eax
		push	offset sub_405177
		push	ebx
		push	ebx
		call	ds:dword_4080F8	; CreateThread
		push	eax
		call	ds:dword_408084	; CloseHandle

loc_4053EF:				; CODE XREF: sub_405202+1C3j
		cmp	[ebp+arg_4], 111h
		mov	edi, ds:dword_408228
		jnz	short loc_405419
		cmp	word ptr [ebp+arg_8], 403h
		jnz	short loc_40543B
		push	ebx
		push	dword_425BC0
		call	edi	; ShowWindow
		push	8
		push	esi
		call	edi	; ShowWindow
		call	sub_403FD6

loc_405419:				; CODE XREF: sub_405202+1FAj
		cmp	[ebp+arg_4], 404h
		jnz	short loc_405477
		cmp	dword_425BB4, ebx
		jz	short loc_405450
		push	78h
		mov	dword_4229E0, 2
		call	sub_403F8D

loc_40543B:				; CODE XREF: sub_405202+202j
					; sub_405202+279j ...
		push	[ebp+arg_C]
		mov	eax, [ebp+arg_4]
		push	[ebp+arg_8]
		call	sub_40403F

loc_405449:				; CODE XREF: sub_405202+390j
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn	10h
; ---------------------------------------------------------------------------

loc_405450:				; CODE XREF: sub_405202+226j
		push	8
		push	dword_4263E0
		call	edi	; ShowWindow
		cmp	dword_42646C, ebx
		jnz	short loc_405470
		mov	eax, dword_4229DC
		push	ebx
		push	dword ptr [eax+34h]
		call	sub_40509F

loc_405470:				; CODE XREF: sub_405202+25Ej
		push	1
		call	sub_403F8D

loc_405477:				; CODE XREF: sub_405202+21Ej
		cmp	[ebp+arg_4], 7Bh
		jnz	short loc_40543B
		cmp	[ebp+arg_8], esi
		jnz	short loc_40543B
		push	ebx
		push	ebx
		push	1004h
		push	esi
		call	ds:dword_408278	; SendMessageA
		cmp	eax, ebx
		mov	[ebp+arg_0], eax
		jle	loc_405590
		call	ds:dword_4081E8	; CreatePopupMenu
		push	0FFFFFFE1h
		push	ebx
		mov	edi, eax
		call	sub_4065B7
		push	eax
		push	1
		push	ebx
		push	edi
		call	ds:dword_4081E4	; AppendMenuA
		mov	eax, [ebp+arg_C]
		cmp	eax, 0FFFFFFFFh
		jnz	short loc_4054D1
		lea	eax, [ebp+var_14]
		push	eax
		push	esi
		call	ds:dword_4081E0	; GetWindowRect
		mov	ecx, [ebp+var_14]
		mov	eax, [ebp+var_10]
		jmp	short loc_4054DA
; ---------------------------------------------------------------------------

loc_4054D1:				; CODE XREF: sub_405202+2BAj
		movsx	ecx, ax
		shr	eax, 10h
		movsx	eax, ax

loc_4054DA:				; CODE XREF: sub_405202+2CDj
		push	ebx
		push	esi
		push	ebx
		push	eax
		push	ecx
		push	180h
		push	edi
		call	ds:dword_4081DC	; TrackPopupMenu
		xor	edi, edi
		inc	edi
		cmp	eax, edi
		jnz	loc_405590
		mov	esi, [ebp+arg_0]
		mov	[ebp+var_34], ebx
		mov	[ebp+var_28], offset dword_4219D8
		mov	[ebp+var_24], 0FFFh

loc_40550A:				; CODE XREF: sub_405202+322j
		lea	eax, [ebp+var_3C]
		push	eax
		dec	esi
		push	esi
		push	102Dh
		push	[ebp+var_4]
		call	ds:dword_408278	; SendMessageA
		cmp	esi, ebx
		lea	edi, [edi+eax+2]
		jnz	short loc_40550A
		push	ebx
		call	ds:dword_4081D8	; OpenClipboard
		call	ds:dword_4081D4	; EmptyClipboard
		push	edi
		push	42h
		call	ds:dword_4080F4	; GlobalAlloc
		push	eax
		mov	[ebp+arg_4], eax
		call	ds:dword_4080F0	; GlobalLock
		mov	esi, eax

loc_405548:				; CODE XREF: sub_405202+372j
		lea	eax, [ebp+var_3C]
		push	eax
		push	ebx
		push	102Dh
		push	[ebp+var_4]
		mov	[ebp+var_28], esi
		mov	[ebp+var_24], edi
		call	ds:dword_408278	; SendMessageA
		push	esi
		call	sub_406003	; lstrlen
		add	esi, eax
		mov	word ptr [esi],	0A0Dh
		inc	esi
		inc	esi
		inc	ebx
		cmp	ebx, [ebp+arg_0]
		jl	short loc_405548
		push	[ebp+arg_4]
		call	ds:dword_4080EC	; GlobalUnlock
		push	[ebp+arg_4]
		push	1
		call	ds:dword_4081D0	; SetClipboardData
		call	ds:dword_4081CC	; CloseClipboard

loc_405590:				; CODE XREF: sub_405202+199j
					; sub_405202+1B7j ...
		xor	eax, eax
		jmp	loc_405449
sub_405202	endp


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



sub_405597	proc near		; DATA XREF: sub_405A5A+224o

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

		sub	esp, 10h
		push	ebx
		push	ebp
		mov	ebp, [esp+18h+arg_4]
		mov	ecx, 110h
		cmp	ebp, ecx
		push	esi
		push	edi
		jz	loc_405723
		cmp	ebp, 408h
		jz	loc_405723
		cmp	ebp, 47h
		mov	ebx, [esp+20h+arg_0]
		jnz	short loc_4055D9
		push	13h
		xor	eax, eax
		push	eax
		push	eax
		push	eax
		push	eax
		push	ebx
		push	dword_4211D4
		call	ds:dword_4081FC	; SetWindowPos

loc_4055D9:				; CODE XREF: sub_405597+2Bj
		cmp	ebp, 5
		jnz	short loc_4055F6
		mov	eax, [esp+20h+arg_8]
		dec	eax
		neg	eax
		sbb	eax, eax
		and	eax, ebp
		push	eax
		push	dword_4211D4
		call	ds:dword_408228	; ShowWindow

loc_4055F6:				; CODE XREF: sub_405597+45j
		cmp	ebp, 40Dh
		jnz	short loc_405618
		push	dword_425BA8
		call	ds:dword_40818C	; DestroyWindow
		mov	eax, [esp+20h+arg_8]
		mov	dword_425BA8, eax
		jmp	loc_405A29
; ---------------------------------------------------------------------------

loc_405618:				; CODE XREF: sub_405597+65j
		cmp	ebp, 11h
		jnz	short loc_405630
		push	0
		push	0
		push	ebx
		call	ds:dword_408244	; SetWindowLongA
		xor	eax, eax
		inc	eax
		jmp	loc_405A50
; ---------------------------------------------------------------------------

loc_405630:				; CODE XREF: sub_405597+84j
		cmp	ebp, 10h
		jnz	short loc_405668
		mov	eax, dword_426404
		dec	eax
		cmp	dword_40A024, eax
		jnz	loc_40570F
		push	dword_4211C8
		call	ds:dword_4081F8	; IsWindowEnabled
		test	eax, eax
		jnz	loc_40570F
		mov	ebp, 111h
		mov	[esp+20h+arg_8], 1

loc_405668:				; CODE XREF: sub_405597+9Cj
		cmp	ebp, 111h
		jnz	loc_40570F
		movzx	esi, word ptr [esp+20h+arg_8]
		push	esi
		push	ebx
		call	ds:dword_408240	; GetDlgItem
		mov	ebx, ds:dword_408278
		mov	edi, eax
		test	edi, edi
		jz	short loc_4056A8
		push	0
		push	0
		push	0F3h
		push	edi
		call	ebx	; SendMessageA
		push	edi
		call	ds:dword_4081F8	; IsWindowEnabled
		test	eax, eax
		jz	loc_405A4E

loc_4056A8:				; CODE XREF: sub_405597+F4j
		xor	edi, edi
		inc	edi
		cmp	esi, edi
		jnz	short loc_4056B2
		push	edi
		jmp	short loc_4056F3
; ---------------------------------------------------------------------------

loc_4056B2:				; CODE XREF: sub_405597+116j
		cmp	esi, 3
		jnz	short loc_4056C4
		cmp	dword_40A024, 0
		jle	short loc_4056FA
		push	0FFFFFFFFh
		jmp	short loc_4056F3
; ---------------------------------------------------------------------------

loc_4056C4:				; CODE XREF: sub_405597+11Ej
		cmp	esi, 2
		jnz	short loc_4056FA
		cmp	dword_42646C, 0
		jz	short loc_4056E0
		push	esi
		call	sub_4014C9
		mov	dword_4229E0, esi
		jmp	short loc_4056F1
; ---------------------------------------------------------------------------

loc_4056E0:				; CODE XREF: sub_405597+139j
		push	3
		call	sub_4014C9
		test	eax, eax
		jnz	short loc_40570F
		mov	dword_4229E0, edi

loc_4056F1:				; CODE XREF: sub_405597+147j
		push	78h

loc_4056F3:				; CODE XREF: sub_405597+119j
					; sub_405597+12Bj
		call	sub_403F8D
		jmp	short loc_40570F
; ---------------------------------------------------------------------------

loc_4056FA:				; CODE XREF: sub_405597+127j
					; sub_405597+130j
		push	[esp+20h+arg_C]
		push	[esp+24h+arg_8]
		push	111h
		push	dword_425BA8
		call	ebx	; SendMessageA

loc_40570F:				; CODE XREF: sub_405597+AAj
					; sub_405597+BEj ...
		push	[esp+20h+arg_C]
		mov	eax, ebp
		push	[esp+24h+arg_8]
		call	sub_40403F
		jmp	loc_405A50
; ---------------------------------------------------------------------------

loc_405723:				; CODE XREF: sub_405597+12j
					; sub_405597+1Ej
		cmp	ebp, ecx
		mov	eax, [esp+20h+arg_8]
		mov	ebx, [esp+20h+arg_0]
		mov	dword_420DBC, eax
		jnz	short loc_405781
		mov	esi, ds:dword_408240
		push	1
		push	ebx
		mov	dword_4263E0, ebx
		call	esi	; GetDlgItem
		push	2
		push	ebx
		mov	dword_4229D8, eax
		call	esi	; GetDlgItem
		push	0FFFFFFFFh
		push	1Ch
		push	ebx
		mov	dword_4211C8, eax
		call	sub_403FB4
		push	dword_425BB0
		push	0FFFFFFF2h
		push	ebx
		call	ds:dword_4081F4	; SetClassLongA
		push	4
		call	sub_4014C9
		mov	dword_425BB4, eax
		xor	eax, eax
		inc	eax
		mov	dword_420DBC, eax

loc_405781:				; CODE XREF: sub_405597+19Bj
		mov	ecx, dword_40A024
		mov	esi, ecx
		shl	esi, 6
		add	esi, dword_426400
		xor	edi, edi
		cmp	ecx, edi
		jl	short loc_4057D6
		cmp	eax, 1
		jnz	short loc_4057CE
		push	edi
		push	dword ptr [esi+10h]
		call	sub_4013E7
		test	eax, eax
		jz	short loc_4057CE
		push	1
		push	edi
		push	40Fh
		push	dword_425BA8
		call	ds:dword_408278	; SendMessageA
		xor	eax, eax
		cmp	dword_425BB4, edi
		setz	al
		jmp	loc_405A50
; ---------------------------------------------------------------------------

loc_4057CE:				; CODE XREF: sub_405597+204j
					; sub_405597+211j
		cmp	[esi], edi
		jz	loc_405A4E

loc_4057D6:				; CODE XREF: sub_405597+1FFj
		push	40Bh
		call	sub_404024

loc_4057E0:				; CODE XREF: sub_405597+386j
					; sub_405597+38Ej ...
		mov	eax, dword_420DBC
		add	dword_40A024, eax
		shl	eax, 6
		add	esi, eax
		mov	eax, dword_40A024
		cmp	eax, dword_426404
		jnz	short loc_405804
		push	1
		call	sub_4014C9

loc_405804:				; CODE XREF: sub_405597+264j
		cmp	dword_425BB4, 0
		jnz	loc_405A09
		mov	eax, dword_426404
		cmp	dword_40A024, eax
		jnb	loc_405A09
		push	dword ptr [esi+24h]
		mov	edi, [esi+14h]
		push	offset dword_42E000
		call	sub_4065B7
		push	dword ptr [esi+20h]
		push	0FFFFFC19h
		push	ebx
		call	sub_403FB4
		push	dword ptr [esi+1Ch]
		push	0FFFFFC1Bh
		push	ebx
		call	sub_403FB4
		push	dword ptr [esi+28h]
		push	0FFFFFC1Ah
		push	ebx
		call	sub_403FB4
		push	3
		push	ebx
		call	ds:dword_408240	; GetDlgItem
		cmp	dword_42646C, 0
		mov	ebp, eax
		jz	short loc_405879
		and	edi, 0FFFFFEFDh
		or	edi, 4

loc_405879:				; CODE XREF: sub_405597+2D7j
		mov	eax, edi
		and	eax, 8
		push	eax
		push	ebp
		call	ds:dword_408228	; ShowWindow
		mov	eax, edi
		and	eax, 100h
		push	eax
		push	ebp
		call	ds:dword_408250	; EnableWindow
		mov	eax, edi
		and	eax, 2
		push	eax
		call	sub_403FFA
		and	edi, 4
		push	edi
		push	dword_4211C8
		call	ds:dword_408250	; EnableWindow
		push	1
		xor	edi, edi
		push	edi
		push	0F4h
		push	ebp
		mov	ebp, ds:dword_408278
		call	ebp	; SendMessageA
		cmp	dword_42646C, edi
		jz	short loc_4058DE
		push	edi
		push	2
		push	401h
		push	ebx
		call	ebp	; SendMessageA
		push	dword_4211C8
		jmp	short loc_4058E4
; ---------------------------------------------------------------------------

loc_4058DE:				; CODE XREF: sub_405597+332j
		push	dword_4229D8

loc_4058E4:				; CODE XREF: sub_405597+345j
		call	sub_40400D
		push	offset aNsisError ; "NSIS Error"
		mov	ebp, offset dword_4219D8
		push	ebp
		call	sub_405FFD	; lstrcpy
		push	dword ptr [esi+18h]
		push	ebp
		call	sub_406003	; lstrlen
		add	eax, ebp
		push	eax
		call	sub_4065B7
		push	ebp
		push	ebx
		call	ds:dword_408184	; SetWindowTextA
		push	edi
		push	dword ptr [esi+8]
		call	sub_4013E7
		test	eax, eax
		jnz	loc_4057E0
		cmp	[esi], eax
		jz	loc_4057E0
		cmp	dword ptr [esi+4], 5
		jnz	short loc_40594E
		cmp	dword_42646C, eax
		jnz	loc_405A4E
		cmp	dword_426460, eax
		jnz	loc_4057E0
		jmp	loc_405A4E
; ---------------------------------------------------------------------------

loc_40594E:				; CODE XREF: sub_405597+398j
		push	dword_425BA8
		call	ds:dword_40818C	; DestroyWindow
		cmp	dword ptr [esi], 0
		mov	dword_4229DC, esi
		jle	loc_405A29
		mov	eax, [esi+4]
		push	esi
		push	off_40A028[eax*4]
		mov	ax, [esi]
		add	ax, word ptr dword_425BBC
		push	ebx
		movzx	eax, ax
		push	eax
		push	dword_4263E4
		call	ds:dword_408190	; CreateDialogParamA
		test	eax, eax
		mov	dword_425BA8, eax
		jz	loc_405A29
		push	dword ptr [esi+2Ch]
		push	6
		push	eax
		call	sub_403FB4
		lea	eax, [esp+20h+var_10]
		push	eax
		push	3FAh
		push	ebx
		call	ds:dword_408240	; GetDlgItem
		push	eax
		call	ds:dword_4081E0	; GetWindowRect
		lea	eax, [esp+20h+var_10]
		push	eax
		push	ebx
		call	ds:dword_4081B8	; ScreenToClient
		push	15h
		xor	edi, edi
		push	edi
		push	edi
		push	[esp+2Ch+var_C]
		push	[esp+30h+var_10]
		push	edi
		push	dword_425BA8
		call	ds:dword_4081FC	; SetWindowPos
		push	edi
		push	dword ptr [esi+0Ch]
		call	sub_4013E7
		push	8
		push	dword_425BA8
		call	ds:dword_408228	; ShowWindow
		push	405h
		call	sub_404024
		jmp	short loc_405A29
; ---------------------------------------------------------------------------

loc_405A09:				; CODE XREF: sub_405597+274j
					; sub_405597+285j
		push	dword_425BA8
		call	ds:dword_40818C	; DestroyWindow
		push	dword_4229E0
		and	dword_4263E0, 0
		push	ebx
		call	ds:dword_4081F0	; EndDialog

loc_405A29:				; CODE XREF: sub_405597+7Cj
					; sub_405597+3CCj ...
		cmp	dword_4229E8, 0
		jnz	short loc_405A4E
		cmp	dword_425BA8, 0
		jz	short loc_405A4E
		push	0Ah
		push	ebx
		call	ds:dword_408228	; ShowWindow
		mov	dword_4229E8, 1

loc_405A4E:				; CODE XREF: sub_405597+10Bj
					; sub_405597+239j ...
		xor	eax, eax

loc_405A50:				; CODE XREF: sub_405597+94j
					; sub_405597+187j ...
		pop	edi
		pop	esi
		pop	ebp
		pop	ebx
		add	esp, 10h
		retn	10h
sub_405597	endp


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



sub_405A5A	proc near		; CODE XREF: start+2AAp

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

		mov	eax, dword_426444
		sub	esp, 14h
		push	ebx
		push	ebp
		push	esi
		mov	esi, dword_4263E8
		and	eax, 20h
		push	edi
		mov	dword_426460, eax
		call	sub_40410B
		mov	ebp, offset byte_42C400
		push	ebp
		call	sub_40622D
		xor	ebx, ebx
		test	eax, eax
		jnz	loc_405B0E
		mov	ecx, [esi+48h]
		cmp	ecx, ebx
		jz	short loc_405B0E
		mov	eax, dword_426418
		mov	edx, [esi+4Ch]
		mov	edi, offset byte_424F80
		push	edi
		add	edx, eax
		push	edx
		add	ecx, eax
		push	ecx
		push	dword ptr [esi+44h]
		call	sub_405EF1
		mov	al, byte_424F80
		cmp	al, bl
		jz	short loc_405B0E
		cmp	al, 22h
		jnz	short loc_405ACD
		push	22h
		mov	edi, offset byte_424F81
		push	edi
		call	sub_405DCA
		mov	[eax], bl

loc_405ACD:				; CODE XREF: sub_405A5A+62j
		push	edi
		call	sub_406003	; lstrlen
		lea	eax, [eax+edi-4]
		cmp	eax, edi
		jbe	short loc_405B01
		push	offset a_exe	; ".exe"
		push	eax
		call	ds:dword_408080	; lstrcmpi
		test	eax, eax
		jnz	short loc_405B01
		push	edi
		call	ds:dword_40808C	; GetFileAttributesA
		cmp	eax, 0FFFFFFFFh
		jz	short loc_405AFB
		test	al, 10h
		jnz	short loc_405B01

loc_405AFB:				; CODE XREF: sub_405A5A+9Bj
		push	edi
		call	sub_406207

loc_405B01:				; CODE XREF: sub_405A5A+7Fj
					; sub_405A5A+8Fj ...
		push	edi
		call	sub_4061A6
		push	eax
		push	ebp
		call	sub_405FFD	; lstrcpy

loc_405B0E:				; CODE XREF: sub_405A5A+2Ej
					; sub_405A5A+39j ...
		push	ebp
		call	sub_40622D
		test	eax, eax
		jnz	short loc_405B24
		push	dword ptr [esi+118h]
		push	ebp
		call	sub_4065B7

loc_405B24:				; CODE XREF: sub_405A5A+BCj
		xor	ebp, ebp
		inc	ebp
		test	byte ptr dword_426444, 10h
		jz	short loc_405B43
		cmp	dword_426440, ebx
		jnz	short loc_405B43
		call	sub_4040E9
		mov	dword_423F78, ebp

loc_405B43:				; CODE XREF: sub_405A5A+D4j
					; sub_405A5A+DCj
		push	8040h
		push	ebx
		push	ebx
		push	ebp
		push	67h
		push	dword_4263E4
		call	ds:dword_408248	; LoadImageA
		mov	dword_425BB0, eax
		cmp	dword ptr [esi+50h], 0FFFFFFFFh
		mov	edi, offset dword_425B80
		jz	loc_405BF6
		mov	ecx, dword_4263E4
		mov	dword_425B94, eax
		lea	eax, [esp+24h+var_14]
		push	edi
		mov	[esp+28h+var_14], 624E5Fh
		mov	dword_425B84, offset sub_401000
		mov	dword_425B90, ecx
		mov	dword_425BA4, eax
		call	ds:dword_408210	; RegisterClassA
		test	ax, ax
		jz	loc_405CCC
		push	ebx
		lea	eax, [esp+28h+var_10]
		push	eax
		push	ebx
		push	30h
		call	ds:dword_40820C	; SystemParametersInfoA
		mov	eax, [esp+24h+var_4]
		sub	eax, [esp+24h+var_C]
		push	ebx
		push	dword_4263E4
		push	ebx
		push	ebx
		push	eax
		mov	eax, [esp+38h+var_8]
		sub	eax, [esp+38h+var_10]
		push	eax
		push	[esp+3Ch+var_C]
		lea	eax, [esp+40h+var_14]
		push	[esp+40h+var_10]
		push	80000000h
		push	ebx
		push	eax
		push	80h
		call	ds:dword_408208	; CreateWindowExA
		mov	dword_4211D4, eax

loc_405BF6:				; CODE XREF: sub_405A5A+10Dj
		push	ebx
		call	sub_4014C9
		test	eax, eax
		jz	short loc_405C08

loc_405C00:				; CODE XREF: sub_405A5A+25Aj
					; sub_405A5A+267j
		push	2
		pop	eax
		jmp	loc_405CCE
; ---------------------------------------------------------------------------

loc_405C08:				; CODE XREF: sub_405A5A+1A4j
		call	sub_40410B
		cmp	dword_426480, ebx
		jnz	loc_405CA4
		push	5
		push	dword_4211D4
		call	ds:dword_408228	; ShowWindow
		mov	esi, ds:dword_4080C0
		mov	ebp, offset aRiched20_dll ; "RichEd20.dll"
		push	ebp
		call	esi	; LoadLibraryA
		test	eax, eax
		jnz	short loc_405C45
		push	ebp
		mov	word ptr aRiched20_dll+6, 3233h
		call	esi	; LoadLibraryA

loc_405C45:				; CODE XREF: sub_405A5A+1DDj
		mov	ebp, ds:dword_408204
		push	edi
		mov	esi, offset aRichedit20a ; "RichEdit20A"
		push	esi
		push	ebx
		call	ebp	; GetClassInfoA
		test	eax, eax
		jnz	short loc_405C78
		push	edi
		push	esi
		push	ebx
		mov	byte ptr aRichedit20a+8, bl
		call	ebp	; GetClassInfoA
		push	edi
		mov	dword_425BA4, esi
		mov	byte ptr aRichedit20a+8, 32h
		call	ds:dword_408210	; RegisterClassA

loc_405C78:				; CODE XREF: sub_405A5A+1FDj
		mov	eax, dword_425BBC
		push	ebx
		push	offset sub_405597
		add	eax, 69h
		movzx	eax, ax
		push	ebx
		push	eax
		push	dword_4263E4
		call	ds:dword_408200	; DialogBoxParamA
		push	5
		mov	esi, eax
		call	sub_4014C9
		mov	eax, esi
		jmp	short loc_405CCE
; ---------------------------------------------------------------------------

loc_405CA4:				; CODE XREF: sub_405A5A+1B9j
		push	ebx
		call	sub_405177
		test	eax, eax
		jz	short loc_405CC6
		cmp	dword_425BB4, ebx
		jnz	loc_405C00
		push	2
		call	sub_4014C9
		jmp	loc_405C00
; ---------------------------------------------------------------------------

loc_405CC6:				; CODE XREF: sub_405A5A+252j
		push	ebp
		call	sub_4014C9

loc_405CCC:				; CODE XREF: sub_405A5A+149j
		xor	eax, eax

loc_405CCE:				; CODE XREF: sub_405A5A+1A9j
					; sub_405A5A+248j
		pop	edi
		pop	esi
		pop	ebp
		pop	ebx
		add	esp, 14h
		retn
sub_405A5A	endp


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

; Attributes: bp-based frame


sub_405CD6	proc near		; CODE XREF: sub_40463C+166p
					; sub_4065B7+16Cp

var_4		= dword	ptr -4
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		push	ecx
		lea	eax, [ebp+var_4]
		push	eax
		call	ds:dword_40816C
		mov	eax, [ebp+var_4]
		test	eax, eax
		jz	short locret_405CFD
		push	[ebp+arg_0]
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+14h]
		mov	eax, [ebp+var_4]
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+8]

locret_405CFD:				; CODE XREF: sub_405CD6+13j
		leave
		retn	4
sub_405CD6	endp


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

; Attributes: bp-based frame


sub_405D01	proc near		; CODE XREF: sub_401610+D22p
					; sub_401610+19B8p ...

var_10		= dword	ptr -10h
var_C		= dword	ptr -0Ch
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		sub	esp, 10h
		push	[ebp+arg_4]
		mov	dword_4231F0, 44h
		call	ds:dword_40808C	; GetFileAttributesA
		xor	ecx, ecx
		cmp	eax, 0FFFFFFFFh
		jz	short loc_405D25
		test	al, 10h
		jnz	short loc_405D28

loc_405D25:				; CODE XREF: sub_405D01+1Ej
		mov	[ebp+arg_4], ecx

loc_405D28:				; CODE XREF: sub_405D01+22j
		lea	eax, [ebp+var_10]
		push	eax
		push	offset dword_4231F0
		push	[ebp+arg_4]
		push	ecx
		push	ecx
		push	ecx
		push	ecx
		push	ecx
		push	[ebp+arg_0]
		push	ecx
		call	ds:dword_4080FC	; CreateProcessA
		test	eax, eax
		jz	short locret_405D53
		push	[ebp+var_C]
		call	ds:dword_408084	; CloseHandle
		mov	eax, [ebp+var_10]

locret_405D53:				; CODE XREF: sub_405D01+44j
		leave
		retn	8
sub_405D01	endp


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

; Attributes: thunk


sub_405D57	proc near		; CODE XREF: .text:004033A3p
					; sub_403FB4+1Ap ...
		jmp	ds:dword_408214
sub_405D57	endp


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



sub_405D5D	proc near		; CODE XREF: sub_4041F2+18p
					; sub_40463C+33p ...

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	400h
		push	[esp+4+arg_4]
		push	[esp+8+arg_0]
		push	dword_425BA8
		call	ds:dword_408218	; GetDlgItemTextA
		retn	8
sub_405D5D	endp


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



sub_405D79	proc near		; CODE XREF: sub_401610+611p
					; sub_401610:loc_401D29p ...

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		mov	eax, [esp+arg_4]
		mov	ecx, eax
		and	ecx, 1FFFFFh
		cmp	dword_426480, 0
		jz	short loc_405D93
		shr	eax, 15h
		jnz	short locret_405DB8

loc_405D93:				; CODE XREF: sub_405D79+13j
		cmp	dword_426488, 0
		jz	short loc_405DA2
		xor	ecx, 180000h

loc_405DA2:				; CODE XREF: sub_405D79+21j
		push	ecx
		push	offset aNsisError ; "NSIS Error"
		push	[esp+8+arg_0]
		push	dword_4263E0
		call	ds:dword_40821C	; MessageBoxA

locret_405DB8:				; CODE XREF: sub_405D79+18j
		retn	8
sub_405D79	endp


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



sub_405DBB	proc near		; CODE XREF: sub_401610+4A0p
					; sub_401610+A0Ep ...

arg_0		= dword	ptr  4

		push	[esp+arg_0]
		push	40h
		call	ds:dword_4080F4	; GlobalAlloc
		retn	4
sub_405DBB	endp


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



sub_405DCA	proc near		; CODE XREF: start+BAp	start+17Cp ...

arg_0		= dword	ptr  4
arg_4		= byte ptr  8

		mov	eax, [esp+arg_0]
		jmp	short loc_405DDD
; ---------------------------------------------------------------------------

loc_405DD0:				; CODE XREF: sub_405DCA+17j
		cmp	cl, [esp+arg_4]
		jz	short locret_405DE3
		push	eax
		call	ds:dword_408198	; CharNextA

loc_405DDD:				; CODE XREF: sub_405DCA+4j
		mov	cl, [eax]
		test	cl, cl
		jnz	short loc_405DD0

locret_405DE3:				; CODE XREF: sub_405DCA+Aj
		retn	8
sub_405DCA	endp


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



sub_405DE6	proc near		; CODE XREF: sub_401610+51Cp
					; sub_401610+102Fp ...

arg_0		= dword	ptr  4

		mov	ecx, [esp+arg_0]
		mov	al, [ecx]
		or	al, 20h
		cmp	word ptr [ecx],	5C5Ch
		jz	short loc_405E07
		cmp	al, 61h
		jl	short loc_405E03
		cmp	al, 7Ah
		jg	short loc_405E03
		cmp	byte ptr [ecx+1], 3Ah
		jz	short loc_405E07

loc_405E03:				; CODE XREF: sub_405DE6+11j
					; sub_405DE6+15j
		xor	eax, eax
		jmp	short locret_405E0A
; ---------------------------------------------------------------------------

loc_405E07:				; CODE XREF: sub_405DE6+Dj
					; sub_405DE6+1Bj
		xor	eax, eax
		inc	eax

locret_405E0A:				; CODE XREF: sub_405DE6+1Fj
		retn	4
sub_405DE6	endp


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



sub_405E0D	proc near		; CODE XREF: sub_40463C+A4p
					; sub_40463C+1F7p ...

arg_0		= dword	ptr  4

		push	ebx
		push	esi
		mov	esi, ds:dword_408198
		push	edi
		mov	edi, [esp+0Ch+arg_0]
		push	edi
		call	esi	; CharNextA
		mov	ebx, eax
		push	ebx
		call	esi	; CharNextA
		cmp	byte ptr [edi],	0
		jz	short loc_405E33
		cmp	word ptr [ebx],	5C3Ah
		jnz	short loc_405E33
		push	eax
		call	esi	; CharNextA
		jmp	short loc_405E54
; ---------------------------------------------------------------------------

loc_405E33:				; CODE XREF: sub_405E0D+18j
					; sub_405E0D+1Fj
		cmp	word ptr [edi],	5C5Ch
		jnz	short loc_405E52
		push	2
		pop	esi

loc_405E3D:				; CODE XREF: sub_405E0D+41j
		push	5Ch
		push	eax
		dec	esi
		call	sub_405DCA
		cmp	byte ptr [eax],	0
		jz	short loc_405E52
		inc	eax
		test	esi, esi
		jnz	short loc_405E3D
		jmp	short loc_405E54
; ---------------------------------------------------------------------------

loc_405E52:				; CODE XREF: sub_405E0D+2Bj
					; sub_405E0D+3Cj
		xor	eax, eax

loc_405E54:				; CODE XREF: sub_405E0D+24j
					; sub_405E0D+43j
		pop	edi
		pop	esi
		pop	ebx
		retn	4
sub_405E0D	endp


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



sub_405E5A	proc near		; CODE XREF: sub_401610+1901p
					; sub_403756+BEp ...

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

		mov	ecx, [esp+arg_0]
		push	esi
		mov	esi, [esp+4+arg_8]
		test	esi, esi
		jle	short loc_405E76
		mov	eax, [esp+4+arg_4]
		sub	eax, ecx

loc_405E6D:				; CODE XREF: sub_405E5A+1Aj
		mov	dl, [eax+ecx]
		mov	[ecx], dl
		inc	ecx
		dec	esi
		jnz	short loc_405E6D

loc_405E76:				; CODE XREF: sub_405E5A+Bj
		pop	esi
		retn	0Ch
sub_405E5A	endp


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



sub_405E7A	proc near		; CODE XREF: sub_401610+5BBp
					; sub_401610+15B7p ...

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

		push	[esp+arg_0]
		call	ds:dword_40808C	; GetFileAttributesA
		mov	ecx, eax
		inc	ecx
		push	0
		neg	ecx
		sbb	ecx, ecx
		and	ecx, eax
		push	ecx
		push	[esp+8+arg_8]
		push	0
		push	1
		push	[esp+14h+arg_4]
		push	[esp+18h+arg_0]
		call	ds:dword_4080B8	; CreateFileA
		retn	0Ch
sub_405E7A	endp


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

; Attributes: bp-based frame


sub_405EA9	proc near		; CODE XREF: sub_401610+423p
					; sub_403756+1F8p ...

arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		push	esi
		mov	esi, [ebp+arg_0]
		push	edi
		push	64h
		pop	edi

loc_405EB4:				; CODE XREF: sub_405EA9+39j
		dec	edi
		mov	[ebp+arg_0], 61736Eh
		call	ds:dword_4080B4	; GetTickCount
		push	1Ah
		pop	ecx
		xor	edx, edx
		div	ecx
		push	esi
		push	0
		lea	eax, [ebp+arg_0]
		push	eax
		push	[ebp+arg_4]
		add	byte ptr [ebp+arg_0+2],	dl
		call	ds:dword_408100	; GetTempFileNameA
		test	eax, eax
		jnz	short loc_405EED
		test	edi, edi
		jnz	short loc_405EB4
		mov	byte ptr [esi],	0

loc_405EE7:				; CODE XREF: sub_405EA9+46j
		pop	edi
		pop	esi
		pop	ebp
		retn	8
; ---------------------------------------------------------------------------

loc_405EED:				; CODE XREF: sub_405EA9+35j
		mov	eax, esi
		jmp	short loc_405EE7
sub_405EA9	endp


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

; Attributes: bp-based frame


sub_405EF1	proc near		; CODE XREF: sub_405A5A+52p
					; sub_4065B7+D9p ...

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

		push	ebp
		mov	ebp, esp
		push	ebx
		push	esi
		mov	esi, [ebp+arg_C]
		lea	eax, [ebp+arg_4]
		push	eax
		push	20019h
		xor	ebx, ebx
		push	ebx
		push	[ebp+arg_4]
		mov	[esi], bl
		push	[ebp+arg_0]
		call	ds:dword_408008	; RegOpenKeyExA
		test	eax, eax
		jnz	short loc_405F55
		lea	eax, [ebp+arg_0]
		push	eax
		push	esi
		lea	eax, [ebp+arg_C]
		push	eax
		push	ebx
		push	[ebp+arg_8]
		mov	[ebp+arg_0], 400h
		push	[ebp+arg_4]
		call	ds:dword_40801C	; RegQueryValueExA
		test	eax, eax
		jnz	short loc_405F44
		cmp	[ebp+arg_C], 1
		jz	short loc_405F46
		cmp	[ebp+arg_C], 2
		jz	short loc_405F46

loc_405F44:				; CODE XREF: sub_405EF1+45j
		mov	[esi], bl

loc_405F46:				; CODE XREF: sub_405EF1+4Bj
					; sub_405EF1+51j
		push	[ebp+arg_4]
		mov	[esi+3FFh], bl
		call	ds:dword_408020	; RegCloseKey

loc_405F55:				; CODE XREF: sub_405EF1+24j
		pop	esi
		pop	ebx
		pop	ebp
		retn	10h
sub_405EF1	endp


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



sub_405F5B	proc near		; CODE XREF: sub_401610+DA3p
					; sub_401610+DE8p ...

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	[esp+arg_4]
		push	offset aD	; "%d"
		push	[esp+8+arg_0]
		call	ds:dword_408230	; wsprintfA
		add	esp, 0Ch
		retn	8
sub_405F5B	endp


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

; Attributes: bp-based frame


sub_405F74	proc near		; CODE XREF: sub_4013E7+6Fp
					; sub_4014F2+10p ...

var_4		= dword	ptr -4
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		push	ecx
		mov	ecx, [ebp+arg_0]
		push	ebx
		push	esi
		push	edi
		xor	edi, edi
		cmp	byte ptr [ecx],	2Dh
		mov	[ebp+var_4], 1
		mov	al, 0Ah
		mov	bl, 39h
		jnz	short loc_405F95
		inc	ecx
		or	[ebp+var_4], 0FFFFFFFFh

loc_405F95:				; CODE XREF: sub_405F74+1Aj
		cmp	byte ptr [ecx],	30h
		jnz	short loc_405FB6
		inc	ecx
		mov	dl, [ecx]
		cmp	dl, 30h
		jl	short loc_405FAB
		cmp	dl, 37h
		jg	short loc_405FAB
		mov	al, 8
		mov	bl, 37h

loc_405FAB:				; CODE XREF: sub_405F74+2Cj
					; sub_405F74+31j
		and	dl, 0DFh
		cmp	dl, 58h
		jnz	short loc_405FB6
		mov	al, 10h
		inc	ecx

loc_405FB6:				; CODE XREF: sub_405F74+24j
					; sub_405F74+3Dj ...
		movsx	edx, byte ptr [ecx]
		inc	ecx
		cmp	edx, 30h
		jl	short loc_405FCB
		movsx	esi, bl
		cmp	edx, esi
		jg	short loc_405FCB
		sub	edx, 30h
		jmp	short loc_405FE4
; ---------------------------------------------------------------------------

loc_405FCB:				; CODE XREF: sub_405F74+49j
					; sub_405F74+50j
		cmp	al, 10h
		jnz	short loc_405FF0
		mov	esi, edx
		and	esi, 0FFFFFFDFh
		cmp	esi, 41h
		jl	short loc_405FF0
		cmp	esi, 46h
		jg	short loc_405FF0
		and	edx, 7
		add	edx, 9

loc_405FE4:				; CODE XREF: sub_405F74+55j
		movsx	esi, al
		imul	esi, edi
		add	esi, edx
		mov	edi, esi
		jmp	short loc_405FB6
; ---------------------------------------------------------------------------

loc_405FF0:				; CODE XREF: sub_405F74+59j
					; sub_405F74+63j ...
		mov	eax, [ebp+var_4]
		imul	eax, edi
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn	4
sub_405F74	endp


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

; Attributes: thunk


sub_405FFD	proc near		; CODE XREF: sub_401610+276p
					; sub_401610+2EEp ...
		jmp	ds:dword_408104
sub_405FFD	endp


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

; Attributes: thunk


sub_406003	proc near		; CODE XREF: sub_401610+2F4p
					; sub_401610+2FEp ...
		jmp	ds:dword_408108
sub_406003	endp


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



sub_406009	proc near		; CODE XREF: sub_401508+2Fp
					; sub_401610+54Cp ...

arg_0		= dword	ptr  4

		push	ebx
		push	ebp
		mov	ebp, ds:dword_408198
		push	esi
		mov	esi, [esp+0Ch+arg_0]
		push	edi
		jmp	short loc_40601E
; ---------------------------------------------------------------------------

loc_406019:				; CODE XREF: sub_406009+18j
		push	esi
		call	ebp	; CharNextA
		mov	esi, eax

loc_40601E:				; CODE XREF: sub_406009+Ej
		cmp	byte ptr [esi],	20h
		jz	short loc_406019
		cmp	byte ptr [esi],	5Ch
		jnz	short loc_40603D
		cmp	byte ptr [esi+1], 5Ch
		jnz	short loc_40603D
		cmp	byte ptr [esi+2], 3Fh
		jnz	short loc_40603D
		cmp	byte ptr [esi+3], 5Ch
		jnz	short loc_40603D
		add	esi, 4

loc_40603D:				; CODE XREF: sub_406009+1Dj
					; sub_406009+23j ...
		cmp	byte ptr [esi],	0
		jz	short loc_40604E
		push	esi
		call	sub_405DE6
		test	eax, eax
		jz	short loc_40604E
		inc	esi
		inc	esi

loc_40604E:				; CODE XREF: sub_406009+37j
					; sub_406009+41j
		mov	ebx, esi
		mov	edi, esi
		xor	eax, eax
		jmp	short loc_406081
; ---------------------------------------------------------------------------

loc_406056:				; CODE XREF: sub_406009+7Cj
		cmp	al, 1Fh
		jbe	short loc_40607C
		push	eax
		push	offset a?	; "*?|<>/\":"
		call	sub_405DCA
		cmp	byte ptr [eax],	0
		jnz	short loc_40607C
		push	esi
		call	ebp	; CharNextA
		sub	eax, esi
		push	eax
		push	esi
		push	edi
		call	sub_405E5A
		push	edi
		call	ebp	; CharNextA
		mov	edi, eax

loc_40607C:				; CODE XREF: sub_406009+4Fj
					; sub_406009+5Fj
		push	esi
		call	ebp	; CharNextA
		mov	esi, eax

loc_406081:				; CODE XREF: sub_406009+4Bj
		mov	al, [esi]
		test	al, al
		jnz	short loc_406056
		mov	[edi], al

loc_406089:				; CODE XREF: sub_406009+99j
		push	edi
		push	ebx
		call	ds:dword_40822C	; CharPrevA
		mov	edi, eax
		mov	al, [edi]
		cmp	al, 20h
		jz	short loc_40609D
		cmp	al, 5Ch
		jnz	short loc_4060A4

loc_40609D:				; CODE XREF: sub_406009+8Ej
		cmp	ebx, edi
		mov	byte ptr [edi],	0
		jb	short loc_406089

loc_4060A4:				; CODE XREF: sub_406009+92j
		pop	edi
		pop	esi
		pop	ebp
		mov	eax, ebx
		pop	ebx
		retn	4
sub_406009	endp


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

; Attributes: bp-based frame


sub_4060AD	proc near		; CODE XREF: start+2B5p sub_40614C+16p

arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		push	ebx
		xor	ebx, ebx
		cmp	[ebp+arg_0], ebx
		jz	short loc_4060D2
		mov	eax, dword_40A060
		cmp	eax, 0FFFFFFFFh
		jz	short loc_4060C9
		push	eax
		call	ds:dword_408084	; CloseHandle

loc_4060C9:				; CODE XREF: sub_4060AD+13j
		or	dword_40A060, 0FFFFFFFFh
		jmp	short loc_406147
; ---------------------------------------------------------------------------

loc_4060D2:				; CODE XREF: sub_4060AD+9j
		cmp	dword_423F78, ebx
		jz	short loc_406147
		cmp	byte_425780, bl
		jz	short loc_406111
		cmp	dword_40A060, 0FFFFFFFFh
		jnz	short loc_40611A
		push	4
		push	40000000h
		push	offset byte_425780
		call	sub_405E7A
		cmp	eax, 0FFFFFFFFh
		mov	dword_40A060, eax
		jz	short loc_406147
		push	2
		push	ebx
		push	ebx
		push	eax
		call	ds:dword_40814C	; SetFilePointer

loc_406111:				; CODE XREF: sub_4060AD+33j
		cmp	dword_40A060, 0FFFFFFFFh
		jz	short loc_406147

loc_40611A:				; CODE XREF: sub_4060AD+3Cj
		push	esi
		push	offset asc_408C40 ; "\r\n"
		mov	esi, offset dword_423F80
		push	esi
		call	ds:dword_4080A4	; lstrcat
		push	ebx
		lea	eax, [ebp+arg_0]
		push	eax
		push	esi
		call	ds:dword_408108	; lstrlen
		push	eax
		push	esi
		push	dword_40A060
		call	ds:dword_408144	; WriteFile
		pop	esi

loc_406147:				; CODE XREF: sub_4060AD+23j
					; sub_4060AD+2Bj ...
		pop	ebx
		pop	ebp
		retn	4
sub_4060AD	endp


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



sub_40614C	proc near		; CODE XREF: sub_401610+68p
					; sub_401610+84p ...

arg_0		= dword	ptr  4
arg_4		= byte ptr  8

		lea	eax, [esp+arg_4]
		push	eax
		push	[esp+4+arg_0]
		push	offset dword_423F80
		call	ds:dword_408220	; wvsprintfA
		push	0
		call	sub_4060AD
		retn
sub_40614C	endp


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



sub_406168	proc near		; CODE XREF: sub_401610+298p
					; sub_401610+34Ap ...

arg_0		= dword	ptr  4

		push	ebx
		push	esi
		mov	esi, ds:dword_40806C
		push	edi
		push	8001h
		call	esi	; SetErrorMode
		mov	edi, offset dword_423A38
		push	edi
		push	[esp+10h+arg_0]
		call	ds:dword_408158	; FindFirstFileA
		push	0
		mov	ebx, eax
		call	esi	; SetErrorMode
		cmp	ebx, 0FFFFFFFFh
		jz	short loc_40619E
		push	ebx
		call	ds:dword_408150	; FindClose
		mov	eax, edi
		jmp	short loc_4061A0
; ---------------------------------------------------------------------------

loc_40619E:				; CODE XREF: sub_406168+29j
		xor	eax, eax

loc_4061A0:				; CODE XREF: sub_406168+34j
		pop	edi
		pop	esi
		pop	ebx
		retn	4
sub_406168	endp


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



sub_4061A6	proc near		; CODE XREF: sub_401610+53Fp
					; sub_401610+187Bp ...

arg_0		= dword	ptr  4

		push	esi
		mov	esi, [esp+4+arg_0]
		push	esi
		call	ds:dword_408108	; lstrlen
		add	eax, esi
		push	eax
		push	esi
		call	ds:dword_40822C	; CharPrevA
		cmp	byte ptr [eax],	5Ch
		jz	short loc_4061CD
		push	offset asc_408558 ; "\\"
		push	esi
		call	ds:dword_4080A4	; lstrcat

loc_4061CD:				; CODE XREF: sub_4061A6+19j
		mov	eax, esi
		pop	esi
		retn	4
sub_4061A6	endp


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



sub_4061D3	proc near		; CODE XREF: sub_401610+17FBp

arg_0		= dword	ptr  4
arg_4		= byte ptr  8

		push	esi
		push	edi
		mov	edi, [esp+8+arg_0]
		push	edi
		call	ds:dword_408108	; lstrlen
		mov	esi, ds:dword_40822C
		add	eax, edi
		push	eax
		push	edi
		call	esi	; CharPrevA
		test	edi, edi
		jz	short loc_406202

loc_4061F0:				; CODE XREF: sub_4061D3+2Dj
		cmp	eax, edi
		jbe	short loc_406202
		mov	cl, [eax]
		cmp	cl, [esp+8+arg_4]
		jz	short loc_406202
		push	eax
		push	edi
		call	esi	; CharPrevA
		jmp	short loc_4061F0
; ---------------------------------------------------------------------------

loc_406202:				; CODE XREF: sub_4061D3+1Bj
					; sub_4061D3+1Fj ...
		pop	edi
		pop	esi
		retn	8
sub_4061D3	endp


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



sub_406207	proc near		; CODE XREF: sub_403756+61p start+378p ...

arg_0		= dword	ptr  4

		push	esi
		mov	esi, [esp+4+arg_0]
		push	esi
		call	ds:dword_408108	; lstrlen
		add	eax, esi

loc_406215:				; CODE XREF: sub_406207+1Dj
		cmp	byte ptr [eax],	5Ch
		jz	short loc_406226
		push	eax
		push	esi
		call	ds:dword_40822C	; CharPrevA
		cmp	eax, esi
		ja	short loc_406215

loc_406226:				; CODE XREF: sub_406207+11j
		mov	byte ptr [eax],	0
		pop	esi
		retn	4
sub_406207	endp


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



sub_40622D	proc near		; CODE XREF: start+282p
					; sub_40463C+1DAp ...

arg_0		= dword	ptr  4

		push	esi
		push	[esp+4+arg_0]
		mov	esi, offset dword_423238
		push	esi
		call	ds:dword_408104	; lstrcpy
		push	esi
		call	sub_405E0D
		test	eax, eax
		jnz	short loc_40624C

loc_406248:				; CODE XREF: sub_40622D+2Cj
					; sub_40622D+31j
		xor	eax, eax
		jmp	short loc_4062A3
; ---------------------------------------------------------------------------

loc_40624C:				; CODE XREF: sub_40622D+19j
		test	byte ptr dword_426444, 80h
		jz	short loc_406260
		mov	cl, [eax]
		test	cl, cl
		jz	short loc_406248
		cmp	cl, 5Ch
		jz	short loc_406248

loc_406260:				; CODE XREF: sub_40622D+26j
		push	ebx
		mov	ebx, ds:dword_408108
		push	edi
		mov	edi, eax
		sub	edi, esi
		jmp	short loc_406283
; ---------------------------------------------------------------------------

loc_40626E:				; CODE XREF: sub_40622D+5Bj
		push	esi
		call	sub_406168
		test	eax, eax
		jz	short loc_40627D
		test	byte ptr [eax],	10h
		jz	short loc_4062A7

loc_40627D:				; CODE XREF: sub_40622D+49j
		push	esi
		call	sub_406207

loc_406283:				; CODE XREF: sub_40622D+3Fj
		push	esi
		call	ebx	; lstrlen
		cmp	eax, edi
		jg	short loc_40626E
		push	esi
		call	sub_4061A6
		push	esi
		call	ds:dword_40808C	; GetFileAttributesA
		xor	ecx, ecx
		cmp	eax, 0FFFFFFFFh
		setnz	cl
		mov	eax, ecx

loc_4062A1:				; CODE XREF: sub_40622D+7Cj
		pop	edi
		pop	ebx

loc_4062A3:				; CODE XREF: sub_40622D+1Dj
		pop	esi
		retn	4
; ---------------------------------------------------------------------------

loc_4062A7:				; CODE XREF: sub_40622D+4Ej
		xor	eax, eax
		jmp	short loc_4062A1
sub_40622D	endp


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

; Attributes: bp-based frame


sub_4062AB	proc near		; CODE XREF: sub_406357+155p
					; sub_406357+18Fp

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

		push	ebp
		mov	ebp, esp
		push	ecx
		push	ebx
		push	esi
		push	edi
		push	[ebp+arg_4]
		mov	edi, ds:dword_408108
		call	edi	; lstrlen
		mov	esi, [ebp+arg_0]
		mov	[ebp+var_4], eax
		jmp	short loc_4062EC
; ---------------------------------------------------------------------------

loc_4062C5:				; CODE XREF: sub_4062AB+47j
		mov	eax, [ebp+var_4]
		push	[ebp+arg_4]
		mov	bl, [eax+esi]
		push	esi
		mov	byte ptr [eax+esi], 0
		call	ds:dword_408080	; lstrcmpi
		test	eax, eax
		mov	eax, [ebp+var_4]
		mov	[eax+esi], bl
		jz	short loc_4062FD
		push	esi
		call	ds:dword_408198	; CharNextA
		mov	esi, eax

loc_4062EC:				; CODE XREF: sub_4062AB+18j
		push	esi
		call	edi	; lstrlen
		cmp	eax, [ebp+var_4]
		jge	short loc_4062C5
		xor	eax, eax

loc_4062F6:				; CODE XREF: sub_4062AB+54j
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn	8
; ---------------------------------------------------------------------------

loc_4062FD:				; CODE XREF: sub_4062AB+36j
		mov	eax, esi
		jmp	short loc_4062F6
sub_4062AB	endp


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



sub_406301	proc near		; CODE XREF: sub_401610+253p
					; sub_401610+4E9p ...

arg_0		= dword	ptr  4

		push	ebp
		push	esi
		push	edi
		mov	edi, [esp+0Ch+arg_0]
		push	edi
		call	sub_405E0D
		mov	esi, eax
		xor	ebp, ebp
		test	esi, esi
		jz	short loc_40634A
		push	ebx

loc_406317:				; CODE XREF: sub_406301+46j
		push	5Ch
		push	esi
		call	sub_405DCA
		mov	esi, eax
		mov	bl, [esi]
		push	edi
		mov	byte ptr [esi],	0
		call	sub_406168
		test	eax, eax
		jnz	short loc_40633C
		push	eax
		push	edi
		call	ds:dword_4080C4	; CreateDirectoryA
		test	eax, eax
		jmp	short loc_40633F
; ---------------------------------------------------------------------------

loc_40633C:				; CODE XREF: sub_406301+2Dj
		test	byte ptr [eax],	10h

loc_40633F:				; CODE XREF: sub_406301+39j
		jnz	short loc_406342
		inc	ebp

loc_406342:				; CODE XREF: sub_406301:loc_40633Fj
		mov	[esi], bl
		inc	esi
		test	bl, bl
		jnz	short loc_406317
		pop	ebx

loc_40634A:				; CODE XREF: sub_406301+13j
		pop	edi
		xor	eax, eax
		test	ebp, ebp
		pop	esi
		setz	al
		pop	ebp
		retn	4
sub_406301	endp


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



sub_406357	proc near		; CODE XREF: sub_401610+357p
					; start+35Cp ...

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

		sub	esp, 10h
		push	ebx
		push	ebp
		push	esi
		push	edi
		push	offset aKernel32_dll ; "KERNEL32.dll"
		call	ds:dword_408068	; GetModuleHandleA
		test	eax, eax
		mov	esi, [esp+20h+arg_4]
		jz	short loc_406392
		push	offset aMovefileexa ; "MoveFileExA"
		push	eax
		call	ds:dword_40812C	; GetProcAddress
		test	eax, eax
		jz	short loc_406392
		push	5
		push	esi
		push	[esp+28h+arg_0]
		call	eax
		test	eax, eax
		jnz	loc_4065A7

loc_406392:				; CODE XREF: sub_406357+18j
					; sub_406357+28j
		test	esi, esi
		mov	ebp, ds:dword_408098
		mov	dword_423638, 4C554Eh
		mov	edi, 400h
		jz	short loc_4063D7
		push	1
		push	0
		push	esi
		call	sub_405E7A
		push	eax
		call	ds:dword_408084	; CloseHandle
		push	edi
		mov	ebx, offset dword_423638
		push	ebx
		push	esi
		call	ebp	; GetShortPathNameA
		test	eax, eax
		jz	loc_4065AD
		cmp	eax, edi
		jle	short loc_4063E8
		jmp	loc_4065AD
; ---------------------------------------------------------------------------

loc_4063D7:				; CODE XREF: sub_406357+52j
		push	offset aNul	; "NUL"
		mov	ebx, offset dword_423638
		push	ebx
		call	ds:dword_408104	; lstrcpy

loc_4063E8:				; CODE XREF: sub_406357+79j
		push	edi
		mov	esi, offset dword_422DF0
		push	esi
		push	[esp+28h+arg_0]
		call	ebp	; GetShortPathNameA
		xor	ebp, ebp
		cmp	eax, ebp
		jz	loc_4065AD
		cmp	eax, edi
		jg	loc_4065AD
		push	esi
		push	ebx
		push	offset aSS_0	; "%s=%s\r\n"
		push	offset dword_4229F0
		call	ds:dword_408230	; wsprintfA
		add	esp, 10h
		push	3F0h
		push	esi
		mov	ebx, eax
		call	ds:dword_4080DC	; GetWindowsDirectoryA
		push	offset aWininit_ini ; "\\wininit.ini"
		push	esi
		call	ds:dword_4080A4	; lstrcat
		push	ebp
		push	8000080h
		push	4
		push	ebp
		push	ebp
		push	0C0000000h
		push	esi
		call	ds:dword_4080B8	; CreateFileA
		mov	edi, eax
		cmp	edi, 0FFFFFFFFh
		mov	[esp+20h+var_10], edi
		jz	loc_4065A7
		push	ebp
		push	edi
		call	ds:dword_4080BC	; GetFileSize
		mov	esi, eax
		xor	ecx, ecx
		push	ecx
		lea	ebp, [esi+ebx]
		lea	eax, [ebp+0Ah]
		push	eax
		push	ecx
		push	4
		push	ecx
		push	edi
		mov	[esp+38h+var_4], ebp
		mov	[esp+38h+var_C], eax
		call	ds:dword_408118	; CreateFileMappingA
		xor	ecx, ecx
		cmp	eax, ecx
		mov	[esp+20h+arg_4], eax
		jz	loc_40658F
		push	ecx
		push	ecx
		push	ecx
		push	2
		push	eax
		call	ds:dword_408114	; MapViewOfFile
		mov	edi, eax
		test	edi, edi
		jz	loc_40657F
		push	offset aRename	; "[Rename]\r\n"
		push	edi
		call	sub_4062AB
		test	eax, eax
		jnz	short loc_4064DD
		push	offset aRename	; "[Rename]\r\n"
		lea	eax, [edi+esi]
		push	eax
		call	ds:dword_408104	; lstrcpy
		push	ebx
		add	esi, 0Ah
		push	offset dword_4229F0
		lea	eax, [edi+esi]
		push	eax
		call	sub_405E5A
		add	esi, ebx
		jmp	loc_406578
; ---------------------------------------------------------------------------

loc_4064DD:				; CODE XREF: sub_406357+15Cj
		push	offset asc_408C44 ; "\n["
		add	eax, 0Ah
		push	eax
		call	sub_4062AB
		test	eax, eax
		jz	short loc_406567
		push	[esp+20h+var_C]
		inc	eax
		push	40h
		mov	[esp+28h+var_8], eax
		mov	[esp+28h+arg_0], eax
		call	ds:dword_4080F4	; GlobalAlloc
		mov	ebp, eax
		test	ebp, ebp
		jz	short loc_40654C
		push	offset dword_4229F0
		push	ebp
		call	ds:dword_408104	; lstrcpy
		lea	ecx, [edi+esi]
		mov	esi, [esp+20h+var_8]
		add	ebx, ebp
		sub	ebx, esi

loc_406521:				; CODE XREF: sub_406357+1DCj
		mov	eax, [esp+20h+arg_0]
		cmp	eax, ecx
		jnb	short loc_406535
		mov	dl, [eax]
		mov	[ebx+eax], dl
		inc	eax
		mov	[esp+20h+arg_0], eax
		jmp	short loc_406521
; ---------------------------------------------------------------------------

loc_406535:				; CODE XREF: sub_406357+1D0j
		sub	eax, esi
		push	eax
		push	ebp
		push	esi
		call	sub_405E5A
		mov	esi, [esp+20h+var_4]
		push	ebp
		call	ds:dword_40813C	; GlobalFree
		jmp	short loc_406578
; ---------------------------------------------------------------------------

loc_40654C:				; CODE XREF: sub_406357+1B1j
		push	edi
		call	ds:dword_408110	; UnmapViewOfFile
		push	[esp+20h+arg_4]
		mov	esi, ds:dword_408084
		call	esi	; CloseHandle
		push	[esp+20h+var_10]
		call	esi	; CloseHandle
		jmp	short loc_4065AD
; ---------------------------------------------------------------------------

loc_406567:				; CODE XREF: sub_406357+196j
		push	ebx
		push	offset dword_4229F0
		lea	eax, [edi+esi]
		push	eax
		call	sub_405E5A
		mov	esi, ebp

loc_406578:				; CODE XREF: sub_406357+181j
					; sub_406357+1F3j
		push	edi
		call	ds:dword_408110	; UnmapViewOfFile

loc_40657F:				; CODE XREF: sub_406357+149j
		push	[esp+20h+arg_4]
		call	ds:dword_408084	; CloseHandle
		mov	edi, [esp+20h+var_10]
		xor	ecx, ecx

loc_40658F:				; CODE XREF: sub_406357+133j
		push	ecx
		push	ecx
		push	esi
		push	edi
		call	ds:dword_40814C	; SetFilePointer
		push	edi
		call	ds:dword_40810C	; SetEndOfFile
		push	edi
		call	ds:dword_408084	; CloseHandle

loc_4065A7:				; CODE XREF: sub_406357+35j
					; sub_406357+FEj
		inc	dword_426470

loc_4065AD:				; CODE XREF: sub_406357+71j
					; sub_406357+7Bj ...
		pop	edi
		pop	esi
		pop	ebp
		pop	ebx
		add	esp, 10h
		retn	8
sub_406357	endp


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



sub_4065B7	proc near		; CODE XREF: sub_4014F2+Ap
					; sub_401508+23p ...

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

		sub	esp, 14h
		push	ebp
		mov	ebp, [esp+18h+arg_4]
		test	ebp, ebp
		push	esi
		jge	short loc_4065D5
		mov	ecx, dword_425BC8
		lea	eax, ds:4[ebp*4]
		sub	ecx, eax
		mov	ebp, [ecx]

loc_4065D5:				; CODE XREF: sub_4065B7+Bj
		mov	eax, dword_426418
		mov	ecx, [esp+1Ch+arg_0]
		add	ebp, eax
		mov	eax, offset byte_424F80
		sub	ecx, eax
		cmp	ecx, 800h
		mov	esi, eax
		jnb	short loc_4065FA
		mov	esi, [esp+1Ch+arg_0]
		and	[esp+1Ch+arg_0], 0

loc_4065FA:				; CODE XREF: sub_4065B7+38j
		mov	dl, [ebp+0]
		test	dl, dl
		jz	loc_4067C4
		push	ebx
		push	edi

loc_406607:				; CODE XREF: sub_4065B7+205j
		mov	ecx, esi
		sub	ecx, eax
		cmp	ecx, 400h
		jge	loc_4067C2
		inc	ebp
		cmp	dl, 0FCh
		jbe	loc_4067A4
		movsx	eax, byte ptr [ebp+1]
		movsx	ecx, byte ptr [ebp+0]
		mov	edi, eax
		and	edi, 7Fh
		mov	ebx, ecx
		and	ebx, 7Fh
		shl	edi, 7
		or	edi, ebx
		mov	ebx, 8000h
		mov	[esp+24h+var_10], ecx
		or	ecx, ebx
		mov	[esp+24h+var_8], eax
		or	eax, ebx
		inc	ebp
		inc	ebp
		cmp	dl, 0FEh
		mov	[esp+24h+var_C], ecx
		mov	[esp+24h+var_4], eax
		jnz	loc_40674E
		xor	edi, edi
		cmp	[esp+24h+var_8], 4
		mov	[esp+24h+arg_4], edi
		mov	byte ptr [esi],	0
		jnz	short loc_406677
		push	2
		mov	[esp+28h+arg_4], offset	aMicrosoftInter	; "\\Microsoft\\Internet Explorer\\Quick Laun"...
		pop	edi

loc_406677:				; CODE XREF: sub_4065B7+B3j
		mov	ebx, [esp+24h+var_10]
		cmp	ebx, 2Bh
		jnz	short loc_406695
		push	esi
		push	offset aCommonfilesdir ; "CommonFilesDir"
		push	offset aSoftwareMicros ; "Software\\Microsoft\\Windows\\CurrentVersi"...
		push	80000002h
		call	sub_405EF1

loc_406695:				; CODE XREF: sub_4065B7+C7j
		cmp	ebx, 26h
		jnz	short loc_4066C0
		push	esi
		push	offset aProgramfilesdi ; "ProgramFilesDir"
		push	offset aSoftwareMicros ; "Software\\Microsoft\\Windows\\CurrentVersi"...
		push	80000002h
		call	sub_405EF1
		cmp	byte ptr [esi],	0
		jnz	short loc_406731
		push	offset aCProgramFiles ;	"C:\\Program Files"
		push	esi
		call	ds:dword_408104	; lstrcpy

loc_4066C0:				; CODE XREF: sub_4065B7+E1j
		cmp	ebx, 25h
		jnz	short loc_4066D1
		push	400h
		push	esi
		call	ds:dword_40811C	; GetSystemDirectoryA

loc_4066D1:				; CODE XREF: sub_4065B7+10Cj
		cmp	ebx, 24h
		jnz	short loc_4066E2
		push	400h
		push	esi
		call	ds:dword_4080DC	; GetWindowsDirectoryA

loc_4066E2:				; CODE XREF: sub_4065B7+11Dj
		cmp	byte ptr [esi],	0
		jnz	short loc_406731
		cmp	dword_426464, 0
		push	4
		pop	edi
		jnz	short loc_4066F8
		push	2
		pop	edi
		jmp	short loc_406731
; ---------------------------------------------------------------------------

loc_4066F8:				; CODE XREF: sub_4065B7+13Aj
					; sub_4065B7+17Cj
		lea	eax, [esp+24h+var_14]
		push	eax
		push	[esp+edi*4+28h+var_14]
		dec	edi
		push	dword_4263E0
		call	ds:dword_408170
		test	eax, eax
		jnz	short loc_40672E
		push	esi
		push	[esp+28h+var_14]
		call	ds:dword_408178
		push	[esp+24h+var_14]
		mov	ebx, eax
		call	sub_405CD6
		test	ebx, ebx
		jnz	short loc_406735
		jmp	short loc_406731
; ---------------------------------------------------------------------------

loc_40672E:				; CODE XREF: sub_4065B7+159j
		mov	byte ptr [esi],	0

loc_406731:				; CODE XREF: sub_4065B7+FBj
					; sub_4065B7+12Ej ...
		test	edi, edi
		jnz	short loc_4066F8

loc_406735:				; CODE XREF: sub_4065B7+173j
		cmp	byte ptr [esi],	0
		jz	short loc_406780
		cmp	[esp+24h+arg_4], 0
		jz	short loc_406780
		push	[esp+24h+arg_4]
		push	esi
		call	ds:dword_4080A4	; lstrcat
		jmp	short loc_406780
; ---------------------------------------------------------------------------

loc_40674E:				; CODE XREF: sub_4065B7+9Fj
		cmp	dl, 0FDh
		jnz	short loc_406791
		cmp	edi, 1Bh
		jnz	short loc_406766
		push	dword_4263E0
		push	esi
		call	sub_405F5B
		jmp	short loc_406778
; ---------------------------------------------------------------------------

loc_406766:				; CODE XREF: sub_4065B7+19Fj
		mov	eax, edi
		shl	eax, 0Ah
		add	eax, offset dword_427000
		push	eax
		push	esi
		call	ds:dword_408104	; lstrcpy

loc_406778:				; CODE XREF: sub_4065B7+1ADj
		add	edi, 0FFFFFFEBh
		cmp	edi, 6
		jnb	short loc_406786

loc_406780:				; CODE XREF: sub_4065B7+181j
					; sub_4065B7+188j ...
		push	esi
		call	sub_406009

loc_406786:				; CODE XREF: sub_4065B7+1C7j
					; sub_4065B7+1EBj
		push	esi
		call	ds:dword_408108	; lstrlen
		add	esi, eax
		jmp	short loc_4067B2
; ---------------------------------------------------------------------------

loc_406791:				; CODE XREF: sub_4065B7+19Aj
		cmp	dl, 0FFh
		jnz	short loc_4067B2
		or	eax, 0FFFFFFFFh
		sub	eax, edi
		push	eax
		push	esi
		call	sub_4065B7
		jmp	short loc_406786
; ---------------------------------------------------------------------------

loc_4067A4:				; CODE XREF: sub_4065B7+64j
		jnz	short loc_4067AF
		mov	al, [ebp+0]
		mov	[esi], al
		inc	esi
		inc	ebp
		jmp	short loc_4067B2
; ---------------------------------------------------------------------------

loc_4067AF:				; CODE XREF: sub_4065B7:loc_4067A4j
		mov	[esi], dl
		inc	esi

loc_4067B2:				; CODE XREF: sub_4065B7+1D8j
					; sub_4065B7+1DDj ...
		mov	dl, [ebp+0]
		test	dl, dl
		mov	eax, offset byte_424F80
		jnz	loc_406607

loc_4067C2:				; CODE XREF: sub_4065B7+5Aj
		pop	edi
		pop	ebx

loc_4067C4:				; CODE XREF: sub_4065B7+48j
		cmp	[esp+1Ch+arg_0], 0
		mov	byte ptr [esi],	0
		pop	esi
		pop	ebp
		jz	short loc_4067E0
		push	400h
		push	eax
		push	[esp+1Ch+arg_0]
		call	ds:dword_4080D4	; lstrcpyn

loc_4067E0:				; CODE XREF: sub_4065B7+217j
		add	esp, 14h
		retn	8
sub_4065B7	endp


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

; Attributes: bp-based frame


sub_4067E6	proc near		; CODE XREF: sub_401610+795p
					; sub_403A96+36p ...

var_144		= dword	ptr -144h
var_118		= byte ptr -118h
var_117		= byte ptr -117h
var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		sub	esp, 144h
		push	ebx
		mov	ebx, [ebp+arg_0]
		push	ebx
		call	sub_40622D
		mov	ecx, [ebp+arg_4]
		test	cl, 8
		mov	[ebp+var_4], eax
		jz	short loc_40681B
		push	ebx
		call	ds:dword_408128	; DeleteFileA
		neg	eax
		sbb	eax, eax
		inc	eax
		add	dword_426468, eax
		jmp	loc_4069D6
; ---------------------------------------------------------------------------

loc_40681B:				; CODE XREF: sub_4067E6+1Cj
		mov	[ebp+arg_0], ecx
		and	[ebp+arg_0], 1
		push	esi
		jz	short loc_406836
		test	eax, eax
		jz	loc_4069D5
		test	cl, 2
		jz	loc_40696C

loc_406836:				; CODE XREF: sub_4067E6+3Dj
		push	edi
		push	ebx
		mov	esi, offset dword_423B78
		push	esi
		call	ds:dword_408104	; lstrcpy
		cmp	[ebp+arg_0], 0
		mov	edi, ds:dword_4080A4
		jz	short loc_40685A
		push	offset a_	; "\\*.*"
		push	esi
		call	edi	; lstrcat
		jmp	short loc_406860
; ---------------------------------------------------------------------------

loc_40685A:				; CODE XREF: sub_4067E6+68j
		push	ebx
		call	sub_406207

loc_406860:				; CODE XREF: sub_4067E6+72j
		push	offset asc_408558 ; "\\"
		push	ebx
		call	edi	; lstrcat
		push	ebx
		call	ds:dword_408108	; lstrlen
		mov	edi, eax
		lea	eax, [ebp+var_144]
		push	eax
		push	esi
		add	edi, ebx
		call	ds:dword_408158	; FindFirstFileA
		mov	esi, eax
		cmp	esi, 0FFFFFFFFh
		jz	loc_406961

loc_40688C:				; CODE XREF: sub_4067E6+16Ej
		cmp	[ebp+var_118], 2Eh
		jnz	short loc_4068AF
		cmp	[ebp+var_117], 2Eh
		jz	loc_406944
		cmp	[ebp+var_117], 0
		jz	loc_406944

loc_4068AF:				; CODE XREF: sub_4067E6+ADj
		lea	eax, [ebp+var_118]
		push	eax
		push	edi
		call	ds:dword_408104	; lstrcpy
		test	byte ptr [ebp+var_144],	10h
		jz	short loc_4068DB
		mov	eax, [ebp+arg_4]
		and	eax, 3
		cmp	al, 3
		jnz	short loc_406944
		push	[ebp+arg_4]
		push	ebx
		call	sub_4067E6
		jmp	short loc_406944
; ---------------------------------------------------------------------------

loc_4068DB:				; CODE XREF: sub_4067E6+DEj
		push	ebx
		push	offset aDeleteDeletefi ; "Delete: DeleteFile(\"%s\")"
		call	sub_40614C
		mov	eax, [ebp+var_144]
		pop	ecx
		pop	ecx
		and	eax, 0FFFFFFFEh
		push	eax
		push	ebx
		call	ds:dword_4080AC	; SetFileAttributesA
		push	ebx
		call	ds:dword_408128	; DeleteFileA
		test	eax, eax
		push	ebx
		jnz	short loc_40693D
		test	byte ptr [ebp+arg_4], 4
		jz	short loc_406929
		push	offset aDeleteDelete_0 ; "Delete: DeleteFile on	Reboot(\"%s\")"
		call	sub_40614C
		pop	ecx
		pop	ecx
		push	ebx
		push	0FFFFFFF1h
		call	sub_40509F
		push	0
		push	ebx
		call	sub_406357
		jmp	short loc_406944
; ---------------------------------------------------------------------------

loc_406929:				; CODE XREF: sub_4067E6+123j
		push	offset aDeleteDelete_1 ; "Delete: DeleteFile failed(\"%s\")"
		call	sub_40614C
		inc	dword_426468
		pop	ecx
		pop	ecx
		jmp	short loc_406944
; ---------------------------------------------------------------------------

loc_40693D:				; CODE XREF: sub_4067E6+11Dj
		push	0FFFFFFF2h
		call	sub_40509F

loc_406944:				; CODE XREF: sub_4067E6+B6j
					; sub_4067E6+C3j ...
		lea	eax, [ebp+var_144]
		push	eax
		push	esi
		call	ds:dword_408154	; FindNextFileA
		test	eax, eax
		jnz	loc_40688C
		push	esi
		call	ds:dword_408150	; FindClose

loc_406961:				; CODE XREF: sub_4067E6+A0j
		cmp	[ebp+arg_0], 0
		jz	short loc_40696B
		mov	byte ptr [edi-1], 0

loc_40696B:				; CODE XREF: sub_4067E6+17Fj
		pop	edi

loc_40696C:				; CODE XREF: sub_4067E6+4Aj
		xor	esi, esi
		cmp	[ebp+var_4], esi
		jz	short loc_4069D5
		cmp	[ebp+arg_0], esi
		jz	short loc_4069D5
		push	ebx
		call	sub_4061A6
		push	ebx
		push	offset aRmdirRemovedir ; "RMDir: RemoveDirectory(\"%s\")"
		call	sub_40614C
		pop	ecx
		pop	ecx
		push	ebx
		call	ds:dword_408120	; RemoveDirectoryA
		test	eax, eax
		push	ebx
		jnz	short loc_4069CE
		test	byte ptr [ebp+arg_4], 4
		jz	short loc_4069BA
		push	offset aRmdirRemoved_0 ; "RMDir: RemoveDirectory on Reboot(\"%s\")"
		call	sub_40614C
		pop	ecx
		pop	ecx
		push	ebx
		push	0FFFFFFF1h
		call	sub_40509F
		push	esi
		push	ebx
		call	sub_406357
		jmp	short loc_4069D5
; ---------------------------------------------------------------------------

loc_4069BA:				; CODE XREF: sub_4067E6+1B5j
		push	offset aRmdirRemoved_1 ; "RMDir: RemoveDirectory failed(\"%s\")"
		call	sub_40614C
		inc	dword_426468
		pop	ecx
		pop	ecx
		jmp	short loc_4069D5
; ---------------------------------------------------------------------------

loc_4069CE:				; CODE XREF: sub_4067E6+1AFj
		push	0FFFFFFE5h
		call	sub_40509F

loc_4069D5:				; CODE XREF: sub_4067E6+41j
					; sub_4067E6+18Bj ...
		pop	esi

loc_4069D6:				; CODE XREF: sub_4067E6+30j
		pop	ebx
		leave
		retn	8
sub_4067E6	endp


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



sub_4069DB	proc near		; CODE XREF: sub_403756+1E5p

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		mov	ecx, 80h

loc_4069E4:				; CODE XREF: sub_4069DB+Ej
		dec	ecx
		mov	byte ptr [ecx+eax], 0
		jnz	short loc_4069E4
		or	dword ptr [eax+78h], 0FFFFFFFFh
		xor	ecx, ecx
		inc	ecx
		mov	[eax+68h], ecx
		mov	[eax+64h], ecx
		mov	[eax+60h], ecx
		mov	[eax+5Ch], ecx
		retn
sub_4069DB	endp


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

; Attributes: bp-based frame fpd=74h


sub_4069FF	proc near		; CODE XREF: sub_403420+13Fp

var_88		= dword	ptr -88h
var_84		= dword	ptr -84h
var_80		= dword	ptr -80h
var_7C		= dword	ptr -7Ch
var_78		= dword	ptr -78h
var_74		= dword	ptr -74h
var_70		= dword	ptr -70h
var_6C		= dword	ptr -6Ch
var_68		= dword	ptr -68h
var_64		= dword	ptr -64h
var_60		= dword	ptr -60h
var_5C		= byte ptr -5Ch
var_5B		= byte ptr -5Bh
var_58		= dword	ptr -58h
var_54		= dword	ptr -54h
var_50		= dword	ptr -50h
var_4C		= dword	ptr -4Ch
var_48		= dword	ptr -48h
var_44		= dword	ptr -44h
var_40		= dword	ptr -40h
var_3C		= dword	ptr -3Ch
var_38		= dword	ptr -38h
var_34		= dword	ptr -34h
var_30		= dword	ptr -30h
var_2C		= dword	ptr -2Ch
var_28		= dword	ptr -28h
var_24		= dword	ptr -24h
var_20		= dword	ptr -20h
var_1C		= dword	ptr -1Ch
var_18		= dword	ptr -18h
var_14		= dword	ptr -14h
var_10		= dword	ptr -10h
var_C		= dword	ptr -0Ch
var_8		= dword	ptr -8
var_4		= dword	ptr -4
arg_0		= dword	ptr  8

		push	ebp
		lea	ebp, [esp-74h]
		sub	esp, 8Ch
		push	esi
		mov	esi, [ebp+74h+arg_0]
		push	edi
		push	22h
		pop	ecx
		lea	edi, [ebp+74h+var_88]
		rep movsd
		cmp	[ebp+74h+var_30], 0FFFFFFFFh
		jnz	short loc_406A25
		xor	eax, eax
		inc	eax
		jmp	loc_4073FD
; ---------------------------------------------------------------------------

loc_406A25:				; CODE XREF: sub_4069FF+1Cj
		mov	esi, [ebp+74h+var_54]
		push	ebx
		mov	ebx, [ebp+74h+var_44]

loc_406A2C:				; CODE XREF: sub_4069FF+54Aj
					; sub_4069FF+879j
		mov	eax, [ebp+74h+var_88]
		cmp	eax, 1Ch	; switch 29 cases
		ja	loc_4073F9	; default
		jmp	ds:off_407404[eax*4] ; switch jump

loc_406A3F:				; DATA XREF: .text:off_407404o
		cmp	[ebp+74h+var_6C], 0 ; jumptable	00406A38 case 0
		jz	loc_4073EA
		mov	eax, [ebp+74h+var_70]
		dec	[ebp+74h+var_6C]
		mov	al, [eax]
		inc	[ebp+74h+var_70]
		cmp	al, 0E1h
		ja	loc_4073F9	; default
		movzx	eax, al
		cdq
		push	2Dh
		pop	ecx
		idiv	ecx
		push	9
		pop	ecx
		mov	esi, eax
		movzx	eax, dl
		cdq
		idiv	ecx
		mov	ecx, esi
		movzx	edi, dl
		xor	edx, edx
		inc	edx
		shl	edx, cl
		mov	ecx, eax
		mov	[ebp+74h+var_3C], edi
		dec	edx
		mov	[ebp+74h+var_1C], edx
		xor	edx, edx
		inc	edx
		shl	edx, cl
		lea	ecx, [edi+esi]
		mov	esi, 300h
		shl	esi, cl
		dec	edx
		mov	[ebp+74h+var_18], edx
		add	esi, 736h
		lea	edi, [esi+esi]
		cmp	edi, [ebp+74h+var_78]
		jz	short loc_406AC7
		cmp	[ebp+74h+var_4], 0
		jz	short loc_406AB3
		push	[ebp+74h+var_4]
		call	ds:dword_40813C	; GlobalFree

loc_406AB3:				; CODE XREF: sub_4069FF+A9j
		push	edi
		call	sub_405DBB
		test	eax, eax
		mov	[ebp+74h+var_4], eax
		jz	loc_4073F9	; default
		mov	[ebp+74h+var_78], edi

loc_406AC7:				; CODE XREF: sub_4069FF+A3j
		test	esi, esi
		jz	short loc_406AD7

loc_406ACB:				; CODE XREF: sub_4069FF+D6j
		mov	eax, [ebp+74h+var_4]
		dec	esi
		mov	word ptr [eax+esi*2], 400h
		jnz	short loc_406ACB

loc_406AD7:				; CODE XREF: sub_4069FF+CAj
		and	[ebp+74h+var_48], 0
		and	[ebp+74h+var_40], 0
		jmp	short loc_406B05
; ---------------------------------------------------------------------------

loc_406AE1:				; CODE XREF: sub_4069FF+39j
					; sub_4069FF+10Aj
					; DATA XREF: ...
		cmp	[ebp+74h+var_6C], 0 ; jumptable	00406A38 case 1
		jz	loc_40737A
		mov	eax, [ebp+74h+var_70]
		mov	ecx, [ebp+74h+var_48]
		movzx	eax, byte ptr [eax]
		dec	[ebp+74h+var_6C]
		shl	ecx, 3
		shl	eax, cl
		or	[ebp+74h+var_40], eax
		inc	[ebp+74h+var_70]
		inc	[ebp+74h+var_48]

loc_406B05:				; CODE XREF: sub_4069FF+E0j
		cmp	[ebp+74h+var_48], 4
		jl	short loc_406AE1 ; jumptable 00406A38 case 1
		mov	eax, [ebp+74h+var_40]
		cmp	eax, [ebp+74h+var_74]
		jz	short loc_406B38
		cmp	[ebp+74h+var_8], 0
		mov	[ebp+74h+var_74], eax
		jz	short loc_406B25
		push	[ebp+74h+var_8]
		call	ds:dword_40813C	; GlobalFree

loc_406B25:				; CODE XREF: sub_4069FF+11Bj
		push	[ebp+74h+var_40]
		call	sub_405DBB
		test	eax, eax
		mov	[ebp+74h+var_8], eax
		jz	loc_4073F9	; default

loc_406B38:				; CODE XREF: sub_4069FF+112j
		mov	eax, [ebp+74h+var_8]
		mov	ecx, [ebp+74h+var_74]
		mov	byte ptr [eax+ecx-1], 0
		mov	[ebp+74h+var_48], 5
		jmp	short loc_406B6D
; ---------------------------------------------------------------------------

loc_406B4C:				; CODE XREF: sub_4069FF+39j
					; sub_4069FF+176j
					; DATA XREF: ...
		cmp	[ebp+74h+var_6C], 0 ; jumptable	00406A38 case 3
		jz	loc_407383
		mov	ecx, [ebp+74h+var_70]
		mov	eax, [ebp+74h+var_C]
		movzx	ecx, byte ptr [ecx]
		dec	[ebp+74h+var_6C]
		shl	eax, 8
		or	eax, ecx
		inc	[ebp+74h+var_70]
		mov	[ebp+74h+var_C], eax

loc_406B6D:				; CODE XREF: sub_4069FF+14Bj
		mov	eax, [ebp+74h+var_48]
		dec	[ebp+74h+var_48]
		test	eax, eax
		jnz	short loc_406B4C ; jumptable 00406A38 case 3

loc_406B77:				; CODE XREF: sub_4069FF+39j
					; DATA XREF: .text:off_407404o
		mov	eax, [ebp+74h+var_60] ;	jumptable 00406A38 case	2
		and	eax, [ebp+74h+var_1C]
		mov	ecx, [ebp+74h+var_38]
		shl	ecx, 4
		add	ecx, eax
		mov	[ebp+74h+var_4C], eax
		mov	eax, [ebp+74h+var_4]
		lea	esi, [eax+ecx*2]
		mov	[ebp+74h+var_84], 6
		jmp	loc_4071FA
; ---------------------------------------------------------------------------

loc_406B9A:				; CODE XREF: sub_4069FF+39j
					; DATA XREF: .text:off_407404o
		xor	edx, edx	; jumptable 00406A38 case 6
		cmp	[ebp+74h+var_40], edx
		jnz	short loc_406C12
		movzx	eax, [ebp+74h+var_5C]
		mov	esi, [ebp+74h+var_60]
		and	esi, [ebp+74h+var_18]
		xor	ecx, ecx
		mov	cl, 8
		sub	cl, byte ptr [ebp+74h+var_3C]
		shr	eax, cl
		mov	ecx, [ebp+74h+var_3C]
		shl	esi, cl
		mov	ecx, [ebp+74h+var_4]
		add	eax, esi
		lea	eax, [eax+eax*2]
		shl	eax, 9
		cmp	[ebp+74h+var_38], 4
		lea	eax, [eax+ecx+0E6Ch]
		mov	[ebp+74h+var_58], eax
		jge	short loc_406BD9
		mov	[ebp+74h+var_38], edx
		jmp	short loc_406BE9
; ---------------------------------------------------------------------------

loc_406BD9:				; CODE XREF: sub_4069FF+1D3j
		cmp	[ebp+74h+var_38], 0Ah
		jge	short loc_406BE5
		sub	[ebp+74h+var_38], 3
		jmp	short loc_406BE9
; ---------------------------------------------------------------------------

loc_406BE5:				; CODE XREF: sub_4069FF+1DEj
		sub	[ebp+74h+var_38], 6

loc_406BE9:				; CODE XREF: sub_4069FF+1D8j
					; sub_4069FF+1E4j
		cmp	[ebp+74h+var_34], edx
		jz	short loc_406C0A
		mov	eax, [ebp+74h+var_14]
		sub	eax, [ebp+74h+var_2C]
		cmp	eax, [ebp+74h+var_74]
		jb	short loc_406BFC
		add	eax, [ebp+74h+var_74]

loc_406BFC:				; CODE XREF: sub_4069FF+1F8j
		mov	ecx, [ebp+74h+var_8]
		mov	al, [eax+ecx]
		xor	ebx, ebx
		mov	[ebp+74h+var_5B], al
		inc	ebx
		jmp	short loc_406C6F
; ---------------------------------------------------------------------------

loc_406C0A:				; CODE XREF: sub_4069FF+1EDj
		xor	ebx, ebx
		inc	ebx
		jmp	loc_406DE0
; ---------------------------------------------------------------------------

loc_406C12:				; CODE XREF: sub_4069FF+1A0j
		mov	eax, [ebp+74h+var_4]
		mov	ecx, [ebp+74h+var_38]
		mov	[ebp+74h+var_34], 1
		lea	esi, [eax+ecx*2+180h]
		mov	[ebp+74h+var_84], 7
		jmp	loc_4071FA
; ---------------------------------------------------------------------------

loc_406C32:				; CODE XREF: sub_4069FF+39j
					; sub_4069FF+2E9j
					; DATA XREF: ...
		cmp	[ebp+74h+var_6C], 0 ; jumptable	00406A38 case 13
		jz	loc_40738C
		mov	ecx, [ebp+74h+var_70]
		mov	eax, [ebp+74h+var_C]
		movzx	ecx, byte ptr [ecx]
		shl	[ebp+74h+var_10], 8
		dec	[ebp+74h+var_6C]
		shl	eax, 8
		or	eax, ecx
		inc	[ebp+74h+var_70]
		mov	[ebp+74h+var_C], eax

loc_406C57:				; CODE XREF: sub_4069FF+2E3j
		mov	eax, [ebp+74h+var_40]
		cmp	[ebp+74h+var_48], eax
		jnz	loc_406D12
		cmp	ebx, 100h
		jge	loc_406D78

loc_406C6F:				; CODE XREF: sub_4069FF+209j
		movzx	eax, [ebp+74h+var_5B]
		shl	[ebp+74h+var_5B], 1
		mov	ecx, [ebp+74h+var_58]
		shr	eax, 7
		mov	[ebp+74h+var_48], eax
		inc	eax
		shl	eax, 8
		add	eax, ebx
		lea	esi, [ecx+eax*2]
		mov	ax, [esi]
		mov	ecx, [ebp+74h+var_10]
		movzx	edx, ax
		shr	ecx, 0Bh
		imul	ecx, edx
		cmp	[ebp+74h+var_C], ecx
		mov	[ebp+74h+var_54], esi
		jnb	short loc_406CB9
		and	[ebp+74h+var_40], 0
		mov	[ebp+74h+var_10], ecx
		mov	ecx, 800h
		sub	ecx, edx
		sar	ecx, 5
		add	ecx, eax
		mov	[esi], cx
		shl	ebx, 1
		jmp	short loc_406CD8
; ---------------------------------------------------------------------------

loc_406CB9:				; CODE XREF: sub_4069FF+29Ej
		sub	[ebp+74h+var_10], ecx
		sub	[ebp+74h+var_C], ecx
		xor	ecx, ecx
		mov	cx, ax
		shr	cx, 5
		mov	[ebp+74h+var_40], 1
		lea	ebx, [ebx+ebx+1]
		sub	eax, ecx
		mov	[esi], ax

loc_406CD8:				; CODE XREF: sub_4069FF+2B8j
		cmp	[ebp+74h+var_10], 1000000h
		mov	[ebp+74h+var_44], ebx
		jnb	loc_406C57
		jmp	loc_406C32	; jumptable 00406A38 case 13
; ---------------------------------------------------------------------------

loc_406CED:				; CODE XREF: sub_4069FF+39j
					; sub_4069FF+374j
					; DATA XREF: ...
		cmp	[ebp+74h+var_6C], 0 ; jumptable	00406A38 case 14
		jz	loc_407395
		mov	ecx, [ebp+74h+var_70]
		mov	eax, [ebp+74h+var_C]
		movzx	ecx, byte ptr [ecx]
		shl	[ebp+74h+var_10], 8
		dec	[ebp+74h+var_6C]
		shl	eax, 8
		or	eax, ecx
		inc	[ebp+74h+var_70]
		mov	[ebp+74h+var_C], eax

loc_406D12:				; CODE XREF: sub_4069FF+25Ej
					; sub_4069FF+372j
		cmp	ebx, 100h
		jge	short loc_406D78
		mov	eax, [ebp+74h+var_58]
		mov	ecx, [ebp+74h+var_10]
		lea	edx, [ebx+ebx]
		lea	esi, [edx+eax]
		mov	ax, [esi]
		movzx	edi, ax
		shr	ecx, 0Bh
		imul	ecx, edi
		cmp	[ebp+74h+var_C], ecx
		mov	[ebp+74h+var_54], esi
		jnb	short loc_406D50
		mov	[ebp+74h+var_10], ecx
		mov	ecx, 800h
		sub	ecx, edi
		sar	ecx, 5
		add	ecx, eax
		mov	[esi], cx
		shl	ebx, 1
		jmp	short loc_406D67
; ---------------------------------------------------------------------------

loc_406D50:				; CODE XREF: sub_4069FF+339j
		sub	[ebp+74h+var_10], ecx
		sub	[ebp+74h+var_C], ecx
		xor	ecx, ecx
		mov	cx, ax
		shr	cx, 5
		lea	ebx, [edx+1]
		sub	eax, ecx
		mov	[esi], ax

loc_406D67:				; CODE XREF: sub_4069FF+34Fj
		cmp	[ebp+74h+var_10], 1000000h
		mov	[ebp+74h+var_44], ebx
		jnb	short loc_406D12
		jmp	loc_406CED	; jumptable 00406A38 case 14
; ---------------------------------------------------------------------------

loc_406D78:				; CODE XREF: sub_4069FF+26Aj
					; sub_4069FF+319j
		and	[ebp+74h+var_34], 0

loc_406D7C:				; CODE XREF: sub_4069FF+3DFj
		mov	al, byte ptr [ebp+74h+var_44]
		mov	[ebp+74h+var_5C], al

loc_406D82:				; CODE XREF: sub_4069FF+39j
					; DATA XREF: .text:off_407404o
		cmp	[ebp+74h+var_64], 0 ; jumptable	00406A38 case 26
		jz	loc_4073A7
		mov	al, [ebp+74h+var_5C]
		mov	ecx, [ebp+74h+var_68]
		mov	edx, [ebp+74h+var_8]
		inc	[ebp+74h+var_60]
		inc	[ebp+74h+var_68]
		dec	[ebp+74h+var_64]
		mov	[ecx], al
		mov	ecx, [ebp+74h+var_14]
		mov	[ecx+edx], al
		lea	eax, [ecx+1]
		xor	edx, edx
		div	[ebp+74h+var_74]
		jmp	loc_406F3F
; ---------------------------------------------------------------------------

loc_406DB3:				; CODE XREF: sub_4069FF+39j
					; sub_4069FF+43Aj
					; DATA XREF: ...
		cmp	[ebp+74h+var_6C], 0 ; jumptable	00406A38 case 15
		jz	loc_40739E
		mov	ecx, [ebp+74h+var_70]
		mov	eax, [ebp+74h+var_C]
		movzx	ecx, byte ptr [ecx]
		shl	[ebp+74h+var_10], 8
		dec	[ebp+74h+var_6C]
		shl	eax, 8
		or	eax, ecx
		inc	[ebp+74h+var_70]
		mov	[ebp+74h+var_C], eax

loc_406DD8:				; CODE XREF: sub_4069FF+438j
		cmp	ebx, 100h
		jge	short loc_406D7C

loc_406DE0:				; CODE XREF: sub_4069FF+20Ej
		mov	eax, [ebp+74h+var_58]
		mov	ecx, [ebp+74h+var_10]
		lea	edx, [ebx+ebx]
		lea	esi, [edx+eax]
		mov	ax, [esi]
		movzx	edi, ax
		shr	ecx, 0Bh
		imul	ecx, edi
		cmp	[ebp+74h+var_C], ecx
		mov	[ebp+74h+var_54], esi
		jnb	short loc_406E16
		mov	[ebp+74h+var_10], ecx
		mov	ecx, 800h
		sub	ecx, edi
		sar	ecx, 5
		add	ecx, eax
		mov	[esi], cx
		shl	ebx, 1
		jmp	short loc_406E2D
; ---------------------------------------------------------------------------

loc_406E16:				; CODE XREF: sub_4069FF+3FFj
		sub	[ebp+74h+var_10], ecx
		sub	[ebp+74h+var_C], ecx
		xor	ecx, ecx
		mov	cx, ax
		shr	cx, 5
		lea	ebx, [edx+1]
		sub	eax, ecx
		mov	[esi], ax

loc_406E2D:				; CODE XREF: sub_4069FF+415j
		cmp	[ebp+74h+var_10], 1000000h
		mov	[ebp+74h+var_44], ebx
		jnb	short loc_406DD8
		jmp	loc_406DB3	; jumptable 00406A38 case 15
; ---------------------------------------------------------------------------

loc_406E3E:				; CODE XREF: sub_4069FF+39j
					; DATA XREF: .text:off_407404o
		cmp	[ebp+74h+var_40], 1 ; jumptable	00406A38 case 7
		jnz	short loc_406E5D
		mov	eax, [ebp+74h+var_4]
		mov	ecx, [ebp+74h+var_38]
		lea	esi, [eax+ecx*2+198h]
		mov	[ebp+74h+var_84], 8
		jmp	loc_4071FA
; ---------------------------------------------------------------------------

loc_406E5D:				; CODE XREF: sub_4069FF+443j
		mov	eax, [ebp+74h+var_24]
		mov	[ebp+74h+var_20], eax
		mov	eax, [ebp+74h+var_28]
		mov	[ebp+74h+var_24], eax
		mov	eax, [ebp+74h+var_2C]
		mov	[ebp+74h+var_28], eax
		xor	eax, eax
		cmp	[ebp+74h+var_38], 7
		mov	[ebp+74h+var_80], 16h
		setnl	al
		dec	eax
		and	eax, 0FFFFFFFDh
		add	eax, 0Ah
		mov	[ebp+74h+var_38], eax
		mov	eax, [ebp+74h+var_4]
		add	eax, 664h
		mov	[ebp+74h+var_58], eax

loc_406E94:				; CODE XREF: sub_4069FF+39j
					; sub_4069FF+5A8j
					; DATA XREF: ...
		mov	esi, [ebp+74h+var_58] ;	jumptable 00406A38 case	17
		mov	[ebp+74h+var_84], 12h
		jmp	loc_4071FA
; ---------------------------------------------------------------------------

loc_406EA3:				; CODE XREF: sub_4069FF+39j
					; DATA XREF: .text:off_407404o
		cmp	[ebp+74h+var_40], 0 ; jumptable	00406A38 case 8
		jnz	short loc_406EC7
		mov	eax, [ebp+74h+var_38]
		mov	ecx, [ebp+74h+var_4]
		add	eax, 0Fh
		shl	eax, 4
		add	eax, [ebp+74h+var_4C]
		mov	[ebp+74h+var_84], 9
		lea	esi, [ecx+eax*2]
		jmp	loc_4071FA
; ---------------------------------------------------------------------------

loc_406EC7:				; CODE XREF: sub_4069FF+4A8j
		mov	eax, [ebp+74h+var_4]
		mov	ecx, [ebp+74h+var_38]
		lea	esi, [eax+ecx*2+1B0h]
		mov	[ebp+74h+var_84], 0Ah
		jmp	loc_4071FA
; ---------------------------------------------------------------------------

loc_406EE0:				; CODE XREF: sub_4069FF+39j
					; DATA XREF: .text:off_407404o
		cmp	[ebp+74h+var_40], 0 ; jumptable	00406A38 case 9
		jnz	loc_406F95
		cmp	[ebp+74h+var_60], 0
		jz	loc_4073F9	; default
		xor	eax, eax
		cmp	[ebp+74h+var_38], 7
		setnl	al
		lea	eax, [eax+eax+9]
		mov	[ebp+74h+var_38], eax

loc_406F04:				; CODE XREF: sub_4069FF+39j
					; DATA XREF: .text:off_407404o
		cmp	[ebp+74h+var_64], 0 ; jumptable	00406A38 case 27
		jz	loc_4073B0
		mov	eax, [ebp+74h+var_14]
		sub	eax, [ebp+74h+var_2C]
		cmp	eax, [ebp+74h+var_74]
		jb	short loc_406F1C
		add	eax, [ebp+74h+var_74]

loc_406F1C:				; CODE XREF: sub_4069FF+518j
		mov	edx, [ebp+74h+var_8]
		mov	cl, [eax+edx]
		mov	eax, [ebp+74h+var_14]
		mov	[eax+edx], cl
		inc	eax
		xor	edx, edx
		div	[ebp+74h+var_74]
		inc	[ebp+74h+var_60]
		mov	eax, [ebp+74h+var_68]
		inc	[ebp+74h+var_68]
		dec	[ebp+74h+var_64]
		mov	[ebp+74h+var_5C], cl
		mov	[eax], cl

loc_406F3F:				; CODE XREF: sub_4069FF+3AFj
		mov	[ebp+74h+var_14], edx

loc_406F42:				; CODE XREF: sub_4069FF+7C3j
		mov	[ebp+74h+var_88], 2
		jmp	loc_406A2C
; ---------------------------------------------------------------------------

loc_406F4E:				; CODE XREF: sub_4069FF+39j
					; DATA XREF: .text:off_407404o
		cmp	[ebp+74h+var_40], 0 ; jumptable	00406A38 case 10
		jnz	short loc_406F59
		mov	eax, [ebp+74h+var_28]
		jmp	short loc_406F8C
; ---------------------------------------------------------------------------

loc_406F59:				; CODE XREF: sub_4069FF+553j
		mov	eax, [ebp+74h+var_4]
		mov	ecx, [ebp+74h+var_38]
		lea	esi, [eax+ecx*2+1C8h]
		mov	[ebp+74h+var_84], 0Bh
		jmp	loc_4071FA
; ---------------------------------------------------------------------------

loc_406F72:				; CODE XREF: sub_4069FF+39j
					; DATA XREF: .text:off_407404o
		cmp	[ebp+74h+var_40], 0 ; jumptable	00406A38 case 11
		jnz	short loc_406F7D
		mov	eax, [ebp+74h+var_24]
		jmp	short loc_406F86
; ---------------------------------------------------------------------------

loc_406F7D:				; CODE XREF: sub_4069FF+577j
		mov	ecx, [ebp+74h+var_24]
		mov	eax, [ebp+74h+var_20]
		mov	[ebp+74h+var_20], ecx

loc_406F86:				; CODE XREF: sub_4069FF+57Cj
		mov	ecx, [ebp+74h+var_28]
		mov	[ebp+74h+var_24], ecx

loc_406F8C:				; CODE XREF: sub_4069FF+558j
		mov	ecx, [ebp+74h+var_2C]
		mov	[ebp+74h+var_28], ecx
		mov	[ebp+74h+var_2C], eax

loc_406F95:				; CODE XREF: sub_4069FF+4E5j
		mov	eax, [ebp+74h+var_4]
		add	eax, 0A68h
		mov	[ebp+74h+var_58], eax
		mov	[ebp+74h+var_80], 15h
		jmp	loc_406E94	; jumptable 00406A38 case 17
; ---------------------------------------------------------------------------

loc_406FAC:				; CODE XREF: sub_4069FF+39j
					; DATA XREF: .text:off_407404o
		xor	eax, eax	; jumptable 00406A38 case 21
		cmp	[ebp+74h+var_38], 7
		setnl	al
		dec	eax
		and	eax, 0FFFFFFFDh
		add	eax, 0Bh
		mov	[ebp+74h+var_38], eax
		jmp	loc_407160
; ---------------------------------------------------------------------------

loc_406FC4:				; CODE XREF: sub_4069FF+39j
					; DATA XREF: .text:off_407404o
		mov	eax, [ebp+74h+var_30] ;	jumptable 00406A38 case	22
		cmp	eax, 4
		jl	short loc_406FCF
		push	3
		pop	eax

loc_406FCF:				; CODE XREF: sub_4069FF+5CBj
		mov	ecx, [ebp+74h+var_4]
		shl	eax, 7
		lea	eax, [eax+ecx+360h]
		mov	[ebp+74h+var_58], eax
		mov	[ebp+74h+var_40], 6
		mov	[ebp+74h+var_7C], 19h
		jmp	loc_4072BB	; jumptable 00406A38 case 23
; ---------------------------------------------------------------------------

loc_406FF2:				; CODE XREF: sub_4069FF+39j
					; DATA XREF: .text:off_407404o
		cmp	ebx, 4		; jumptable 00406A38 case 25
		jl	short loc_40702C
		mov	ecx, ebx
		mov	eax, ebx
		and	eax, 1
		sar	ecx, 1
		dec	ecx
		or	eax, 2
		shl	eax, cl
		cmp	ebx, 0Eh
		mov	[ebp+74h+var_2C], eax
		jge	short loc_407022
		mov	edx, [ebp+74h+var_4]
		sub	eax, ebx
		lea	eax, [edx+eax*2+55Eh]
		mov	[ebp+74h+var_40], ecx
		jmp	loc_4070A3
; ---------------------------------------------------------------------------

loc_407022:				; CODE XREF: sub_4069FF+60Dj
		xor	ebx, ebx
		add	ecx, 0FFFFFFFCh
		mov	[ebp+74h+var_48], ecx
		jmp	short loc_40705F
; ---------------------------------------------------------------------------

loc_40702C:				; CODE XREF: sub_4069FF+5F6j
		mov	[ebp+74h+var_2C], ebx
		jmp	loc_40715D
; ---------------------------------------------------------------------------

loc_407034:				; CODE XREF: sub_4069FF+39j
					; sub_4069FF+68Bj
					; DATA XREF: ...
		cmp	[ebp+74h+var_6C], 0 ; jumptable	00406A38 case 12
		jz	loc_4073B9
		mov	ecx, [ebp+74h+var_70]
		mov	eax, [ebp+74h+var_C]
		movzx	ecx, byte ptr [ecx]
		shl	[ebp+74h+var_10], 8
		dec	[ebp+74h+var_6C]
		shl	eax, 8
		or	eax, ecx
		inc	[ebp+74h+var_70]
		mov	[ebp+74h+var_C], eax
		mov	eax, [ebp+74h+var_2C]

loc_40705C:				; CODE XREF: sub_4069FF+689j
		dec	[ebp+74h+var_48]

loc_40705F:				; CODE XREF: sub_4069FF+62Bj
		cmp	[ebp+74h+var_48], 0
		jle	short loc_40708C
		mov	ecx, [ebp+74h+var_C]
		shr	[ebp+74h+var_10], 1
		shl	ebx, 1
		cmp	ecx, [ebp+74h+var_10]
		mov	[ebp+74h+var_44], ebx
		jb	short loc_407081
		mov	ecx, [ebp+74h+var_10]
		sub	[ebp+74h+var_C], ecx
		or	ebx, 1
		mov	[ebp+74h+var_44], ebx

loc_407081:				; CODE XREF: sub_4069FF+674j
		cmp	[ebp+74h+var_10], 1000000h
		jnb	short loc_40705C
		jmp	short loc_407034 ; jumptable 00406A38 case 12
; ---------------------------------------------------------------------------

loc_40708C:				; CODE XREF: sub_4069FF+664j
		shl	ebx, 4
		add	eax, ebx
		mov	[ebp+74h+var_2C], eax
		mov	eax, [ebp+74h+var_4]
		add	eax, 644h
		mov	[ebp+74h+var_40], 4

loc_4070A3:				; CODE XREF: sub_4069FF+61Ej
		xor	ebx, ebx
		mov	[ebp+74h+var_58], eax
		mov	[ebp+74h+var_50], 1
		mov	[ebp+74h+var_44], ebx
		mov	[ebp+74h+var_48], ebx
		jmp	short loc_4070DF
; ---------------------------------------------------------------------------

loc_4070B7:				; CODE XREF: sub_4069FF+39j
					; sub_4069FF+756j
					; DATA XREF: ...
		cmp	[ebp+74h+var_6C], 0 ; jumptable	00406A38 case 16
		jz	loc_4073C2
		mov	ecx, [ebp+74h+var_70]
		mov	eax, [ebp+74h+var_C]
		movzx	ecx, byte ptr [ecx]
		shl	[ebp+74h+var_10], 8
		dec	[ebp+74h+var_6C]
		shl	eax, 8
		or	eax, ecx
		inc	[ebp+74h+var_70]
		mov	[ebp+74h+var_C], eax

loc_4070DC:				; CODE XREF: sub_4069FF+754j
		inc	[ebp+74h+var_48]

loc_4070DF:				; CODE XREF: sub_4069FF+6B6j
		mov	eax, [ebp+74h+var_40]
		cmp	[ebp+74h+var_48], eax
		jge	short loc_40715A
		mov	edi, [ebp+74h+var_50]
		mov	eax, [ebp+74h+var_58]
		mov	edx, [ebp+74h+var_10]
		add	edi, edi
		lea	esi, [edi+eax]
		mov	ax, [esi]
		movzx	ecx, ax
		shr	edx, 0Bh
		imul	edx, ecx
		cmp	[ebp+74h+var_C], edx
		mov	[ebp+74h+var_54], esi
		jnb	short loc_407120
		mov	[ebp+74h+var_10], edx
		mov	edx, 800h
		sub	edx, ecx
		sar	edx, 5
		add	edx, eax
		shl	[ebp+74h+var_50], 1
		mov	[esi], dx
		jmp	short loc_40714C
; ---------------------------------------------------------------------------

loc_407120:				; CODE XREF: sub_4069FF+708j
		xor	ecx, ecx
		inc	ecx
		sub	[ebp+74h+var_10], edx
		sub	[ebp+74h+var_C], edx
		mov	ebx, ecx
		mov	ecx, [ebp+74h+var_48]
		shl	ebx, cl
		mov	ecx, ebx
		mov	ebx, [ebp+74h+var_44]
		or	ebx, ecx
		xor	ecx, ecx
		mov	cx, ax
		shr	cx, 5
		mov	[ebp+74h+var_44], ebx
		sub	eax, ecx
		inc	edi
		mov	[esi], ax
		mov	[ebp+74h+var_50], edi

loc_40714C:				; CODE XREF: sub_4069FF+71Fj
		cmp	[ebp+74h+var_10], 1000000h
		jnb	short loc_4070DC
		jmp	loc_4070B7	; jumptable 00406A38 case 16
; ---------------------------------------------------------------------------

loc_40715A:				; CODE XREF: sub_4069FF+6E6j
		add	[ebp+74h+var_2C], ebx

loc_40715D:				; CODE XREF: sub_4069FF+630j
		inc	[ebp+74h+var_2C]

loc_407160:				; CODE XREF: sub_4069FF+5C0j
		mov	eax, [ebp+74h+var_2C]
		test	eax, eax
		jz	loc_4073CB
		cmp	eax, [ebp+74h+var_60]
		ja	loc_4073F9	; default
		add	[ebp+74h+var_30], 2
		mov	eax, [ebp+74h+var_30]
		add	[ebp+74h+var_60], eax

loc_40717E:				; CODE XREF: sub_4069FF+39j
					; sub_4069FF+7C1j
					; DATA XREF: ...
		cmp	[ebp+74h+var_64], 0 ; jumptable	00406A38 case 28
		jz	loc_4073D1
		mov	eax, [ebp+74h+var_14]
		sub	eax, [ebp+74h+var_2C]
		cmp	eax, [ebp+74h+var_74]
		jb	short loc_407196
		add	eax, [ebp+74h+var_74]

loc_407196:				; CODE XREF: sub_4069FF+792j
		mov	edx, [ebp+74h+var_8]
		mov	cl, [eax+edx]
		mov	eax, [ebp+74h+var_14]
		mov	[eax+edx], cl
		inc	eax
		xor	edx, edx
		div	[ebp+74h+var_74]
		mov	eax, [ebp+74h+var_68]
		inc	[ebp+74h+var_68]
		dec	[ebp+74h+var_64]
		dec	[ebp+74h+var_30]
		cmp	[ebp+74h+var_30], 0
		mov	[ebp+74h+var_5C], cl
		mov	[eax], cl
		mov	[ebp+74h+var_14], edx
		jg	short loc_40717E ; jumptable 00406A38 case 28
		jmp	loc_406F42
; ---------------------------------------------------------------------------

loc_4071C7:				; CODE XREF: sub_4069FF+39j
					; DATA XREF: .text:off_407404o
		cmp	[ebp+74h+var_40], 0 ; jumptable	00406A38 case 18
		jnz	short loc_4071ED
		mov	eax, [ebp+74h+var_4C]
		and	[ebp+74h+var_30], 0
		mov	ecx, [ebp+74h+var_58]
		shl	eax, 4
		lea	eax, [ecx+eax+4]

loc_4071DE:				; CODE XREF: sub_4069FF+89Bj
		mov	[ebp+74h+var_58], eax
		mov	[ebp+74h+var_40], 3
		jmp	loc_4072B4
; ---------------------------------------------------------------------------

loc_4071ED:				; CODE XREF: sub_4069FF+7CCj
		mov	esi, [ebp+74h+var_58]
		add	esi, 2
		mov	[ebp+74h+var_84], 13h

loc_4071FA:				; CODE XREF: sub_4069FF+196j
					; sub_4069FF+22Ej ...
		mov	[ebp+74h+var_54], esi

loc_4071FD:				; CODE XREF: sub_4069FF+39j
					; DATA XREF: .text:off_407404o
		mov	ax, [esi]	; jumptable 00406A38 case 4
		mov	ecx, [ebp+74h+var_10]
		movzx	edx, ax
		shr	ecx, 0Bh
		imul	ecx, edx
		cmp	[ebp+74h+var_C], ecx
		jnb	short loc_407229
		mov	[ebp+74h+var_10], ecx
		mov	ecx, 800h
		sub	ecx, edx
		sar	ecx, 5
		add	ecx, eax
		and	[ebp+74h+var_40], 0
		mov	[esi], cx
		jmp	short loc_407244
; ---------------------------------------------------------------------------

loc_407229:				; CODE XREF: sub_4069FF+810j
		sub	[ebp+74h+var_10], ecx
		sub	[ebp+74h+var_C], ecx
		xor	ecx, ecx
		mov	cx, ax
		shr	cx, 5
		mov	[ebp+74h+var_40], 1
		sub	eax, ecx
		mov	[esi], ax

loc_407244:				; CODE XREF: sub_4069FF+828j
		cmp	[ebp+74h+var_10], 1000000h
		jnb	short loc_407272

loc_40724D:				; CODE XREF: sub_4069FF+39j
					; DATA XREF: .text:off_407404o
		cmp	[ebp+74h+var_6C], 0 ; jumptable	00406A38 case 5
		jz	loc_4073DA
		mov	ecx, [ebp+74h+var_70]
		mov	eax, [ebp+74h+var_C]
		movzx	ecx, byte ptr [ecx]
		shl	[ebp+74h+var_10], 8
		dec	[ebp+74h+var_6C]
		shl	eax, 8
		or	eax, ecx
		inc	[ebp+74h+var_70]
		mov	[ebp+74h+var_C], eax

loc_407272:				; CODE XREF: sub_4069FF+84Cj
		mov	eax, [ebp+74h+var_84]

loc_407275:				; CODE XREF: sub_4069FF+96Bj
					; sub_4069FF+976j
		mov	[ebp+74h+var_88], eax
		jmp	loc_406A2C
; ---------------------------------------------------------------------------

loc_40727D:				; CODE XREF: sub_4069FF+39j
					; DATA XREF: .text:off_407404o
		cmp	[ebp+74h+var_40], 0 ; jumptable	00406A38 case 19
		jnz	short loc_40729F
		mov	eax, [ebp+74h+var_4C]
		mov	ecx, [ebp+74h+var_58]
		shl	eax, 4
		mov	[ebp+74h+var_30], 8
		lea	eax, [ecx+eax+104h]
		jmp	loc_4071DE
; ---------------------------------------------------------------------------

loc_40729F:				; CODE XREF: sub_4069FF+882j
		add	[ebp+74h+var_58], 204h
		mov	[ebp+74h+var_30], 10h
		mov	[ebp+74h+var_40], 8

loc_4072B4:				; CODE XREF: sub_4069FF+7E9j
		mov	[ebp+74h+var_7C], 14h

loc_4072BB:				; CODE XREF: sub_4069FF+39j
					; sub_4069FF+5EEj
					; DATA XREF: ...
		mov	eax, [ebp+74h+var_40] ;	jumptable 00406A38 case	23
		mov	[ebp+74h+var_50], 1
		mov	[ebp+74h+var_48], eax
		jmp	short loc_4072F2
; ---------------------------------------------------------------------------

loc_4072CA:				; CODE XREF: sub_4069FF+39j
					; sub_4069FF+953j
					; DATA XREF: ...
		cmp	[ebp+74h+var_6C], 0 ; jumptable	00406A38 case 24
		jz	loc_4073E3
		mov	ecx, [ebp+74h+var_70]
		mov	eax, [ebp+74h+var_C]
		movzx	ecx, byte ptr [ecx]
		shl	[ebp+74h+var_10], 8
		dec	[ebp+74h+var_6C]
		shl	eax, 8
		or	eax, ecx
		inc	[ebp+74h+var_70]
		mov	[ebp+74h+var_C], eax

loc_4072EF:				; CODE XREF: sub_4069FF+951j
		dec	[ebp+74h+var_48]

loc_4072F2:				; CODE XREF: sub_4069FF+8C9j
		cmp	[ebp+74h+var_48], 0
		jle	short loc_407357
		mov	edx, [ebp+74h+var_50]
		mov	eax, [ebp+74h+var_58]
		mov	ecx, [ebp+74h+var_10]
		add	edx, edx
		lea	esi, [edx+eax]
		mov	ax, [esi]
		movzx	edi, ax
		shr	ecx, 0Bh
		imul	ecx, edi
		cmp	[ebp+74h+var_C], ecx
		mov	[ebp+74h+var_54], esi
		jnb	short loc_407331
		mov	[ebp+74h+var_10], ecx
		mov	ecx, 800h
		sub	ecx, edi
		sar	ecx, 5
		add	ecx, eax
		shl	[ebp+74h+var_50], 1
		mov	[esi], cx
		jmp	short loc_407349
; ---------------------------------------------------------------------------

loc_407331:				; CODE XREF: sub_4069FF+919j
		sub	[ebp+74h+var_10], ecx
		sub	[ebp+74h+var_C], ecx
		xor	ecx, ecx
		mov	cx, ax
		shr	cx, 5
		sub	eax, ecx
		inc	edx
		mov	[esi], ax
		mov	[ebp+74h+var_50], edx

loc_407349:				; CODE XREF: sub_4069FF+930j
		cmp	[ebp+74h+var_10], 1000000h
		jnb	short loc_4072EF
		jmp	loc_4072CA	; jumptable 00406A38 case 24
; ---------------------------------------------------------------------------

loc_407357:				; CODE XREF: sub_4069FF+8F7j
		mov	ecx, [ebp+74h+var_40]
		mov	ebx, [ebp+74h+var_50]
		xor	eax, eax
		inc	eax
		shl	eax, cl
		sub	ebx, eax
		mov	eax, [ebp+74h+var_7C]
		mov	[ebp+74h+var_44], ebx
		jmp	loc_407275
; ---------------------------------------------------------------------------

loc_40736F:				; CODE XREF: sub_4069FF+39j
					; DATA XREF: .text:off_407404o
		add	[ebp+74h+var_30], ebx ;	jumptable 00406A38 case	20
		mov	eax, [ebp+74h+var_80]
		jmp	loc_407275
; ---------------------------------------------------------------------------

loc_40737A:				; CODE XREF: sub_4069FF+E6j
		mov	[ebp+74h+var_88], 1
		jmp	short loc_4073EA
; ---------------------------------------------------------------------------

loc_407383:				; CODE XREF: sub_4069FF+151j
		mov	[ebp+74h+var_88], 3
		jmp	short loc_4073EA
; ---------------------------------------------------------------------------

loc_40738C:				; CODE XREF: sub_4069FF+237j
		mov	[ebp+74h+var_88], 0Dh
		jmp	short loc_4073EA
; ---------------------------------------------------------------------------

loc_407395:				; CODE XREF: sub_4069FF+2F2j
		mov	[ebp+74h+var_88], 0Eh
		jmp	short loc_4073EA
; ---------------------------------------------------------------------------

loc_40739E:				; CODE XREF: sub_4069FF+3B8j
		mov	[ebp+74h+var_88], 0Fh
		jmp	short loc_4073EA
; ---------------------------------------------------------------------------

loc_4073A7:				; CODE XREF: sub_4069FF+387j
		mov	[ebp+74h+var_88], 1Ah
		jmp	short loc_4073EA
; ---------------------------------------------------------------------------

loc_4073B0:				; CODE XREF: sub_4069FF+509j
		mov	[ebp+74h+var_88], 1Bh
		jmp	short loc_4073EA
; ---------------------------------------------------------------------------

loc_4073B9:				; CODE XREF: sub_4069FF+639j
		mov	[ebp+74h+var_88], 0Ch
		jmp	short loc_4073EA
; ---------------------------------------------------------------------------

loc_4073C2:				; CODE XREF: sub_4069FF+6BCj
		mov	[ebp+74h+var_88], 10h
		jmp	short loc_4073EA
; ---------------------------------------------------------------------------

loc_4073CB:				; CODE XREF: sub_4069FF+766j
		or	[ebp+74h+var_30], 0FFFFFFFFh
		jmp	short loc_4073EA
; ---------------------------------------------------------------------------

loc_4073D1:				; CODE XREF: sub_4069FF+783j
		mov	[ebp+74h+var_88], 1Ch
		jmp	short loc_4073EA
; ---------------------------------------------------------------------------

loc_4073DA:				; CODE XREF: sub_4069FF+852j
		mov	[ebp+74h+var_88], 5
		jmp	short loc_4073EA
; ---------------------------------------------------------------------------

loc_4073E3:				; CODE XREF: sub_4069FF+8CFj
		mov	[ebp+74h+var_88], 18h

loc_4073EA:				; CODE XREF: sub_4069FF+44j
					; sub_4069FF+982j ...
		mov	edi, [ebp+74h+arg_0]
		push	22h
		pop	ecx
		lea	esi, [ebp+74h+var_88]
		rep movsd
		xor	eax, eax
		jmp	short loc_4073FC
; ---------------------------------------------------------------------------

loc_4073F9:				; CODE XREF: sub_4069FF+33j
					; sub_4069FF+57j ...
		or	eax, 0FFFFFFFFh	; default

loc_4073FC:				; CODE XREF: sub_4069FF+9F8j
		pop	ebx

loc_4073FD:				; CODE XREF: sub_4069FF+21j
		pop	edi
		pop	esi
		add	ebp, 74h
		leave
		retn
sub_4069FF	endp

; ---------------------------------------------------------------------------
off_407404	dd offset loc_406A3F	; DATA XREF: sub_4069FF+39r
		dd offset loc_406AE1	; jump table for switch	statement
		dd offset loc_406B77
		dd offset loc_406B4C
		dd offset loc_4071FD
		dd offset loc_40724D
		dd offset loc_406B9A
		dd offset loc_406E3E
		dd offset loc_406EA3
		dd offset loc_406EE0
		dd offset loc_406F4E
		dd offset loc_406F72
		dd offset loc_407034
		dd offset loc_406C32
		dd offset loc_406CED
		dd offset loc_406DB3
		dd offset loc_4070B7
		dd offset loc_406E94
		dd offset loc_4071C7
		dd offset loc_40727D
		dd offset loc_40736F
		dd offset loc_406FAC
		dd offset loc_406FC4
		dd offset loc_4072BB
		dd offset loc_4072CA
		dd offset loc_406FF2
		dd offset loc_406D82
		dd offset loc_406F04
		dd offset loc_40717E

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

; Attributes: thunk


sub_407478	proc near		; CODE XREF: sub_401610+E63p
		jmp	ds:dword_408288
sub_407478	endp


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

; Attributes: thunk


sub_40747E	proc near		; CODE XREF: sub_401610+E4Ap
		jmp	ds:dword_408284
sub_40747E	endp


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

; Attributes: thunk


sub_407484	proc near		; CODE XREF: sub_401610+E16p
		jmp	ds:dword_408280
sub_407484	endp

_text		ends

; Section 2. (virtual address 00008000)
; Virtual size			: 00001C72 (   7282.)
; Section size in file		: 00001C72 (   7282.)
; Offset to raw	data for section: 00008000
; Flags	40000040: Data Readable
; Alignment	: default
; ===========================================================================

; Segment type:	Pure data
; Segment permissions: Read
_rdata		segment	para public 'DATA' use32
		assume cs:_rdata
		;org 408000h
dword_408000	dd 77DD839Fh		; DATA XREF: sub_401540+6Cr
dword_408004	dd 77DD81E3h		; DATA XREF: sub_401540+25r
					; sub_401610+1561r
dword_408008	dd 77DD22EAh		; DATA XREF: sub_401540+1Br
					; sub_4015C7+34r ...
dword_40800C	dd 77DD7F3Eh		; DATA XREF: sub_401610+1574r
dword_408010	dd 77DD5C55h		; DATA XREF: sub_401610+1320r
dword_408014	dd 77DD590Bh		; DATA XREF: sub_401610+13E0r
dword_408018	dd 77DD59F0h		; DATA XREF: sub_401610+148Ar
dword_40801C	dd 77DD23D7h		; DATA XREF: sub_401610+14EBr
					; sub_405EF1+3Dr
dword_408020	dd 77DD189Ah		; DATA XREF: sub_401540+60r
					; sub_401540+7Cr ...
		align 8
dword_408028	dd 77345219h		; DATA XREF: start+17r
dword_40802C	dd 77346144h		; DATA XREF: sub_404A94+BCr
dword_408030	dd 77345719h		; DATA XREF: sub_404A94+443r
dword_408034	dd 77345CA4h		; DATA XREF: sub_404A94+A8r
		dd 0
dword_40803C	dd 77C7531Dh		; DATA XREF: sub_401610+BC1r
dword_408040	dd 77C72889h		; DATA XREF: sub_401000+68r
					; sub_401610+BA8r ...
dword_408044	dd 77C7E6D9h		; DATA XREF: sub_401000+CFr
					; sub_40403F+95r
dword_408048	dd 77C7D47Ch		; DATA XREF: sub_401000+105r
					; sub_401610+C24r
dword_40804C	dd 77C71EFFh		; DATA XREF: sub_401000+126r
					; sub_40403F+4Er
dword_408050	dd 77C71D83h		; DATA XREF: sub_401000+130r
					; sub_40403F+42r
dword_408054	dd 77C71E2Eh		; DATA XREF: sub_40403F+71r
dword_408058	dd 77C71BB0h		; DATA XREF: sub_401000+139r
		align 10h
dword_408060	dd 77E76A60h		; DATA XREF: sub_401610+EEEr
dword_408064	dd 77F5157Dh		; DATA XREF: sub_401610:loc_4024E9r
dword_408068	dd 77E79F93h		; DATA XREF: sub_401610+ECCr start+97r ...
dword_40806C	dd 77E78C17h		; DATA XREF: sub_401610+E9Br
					; sub_401610+FEDr ...
dword_408070	dd 77E7FF65h		; DATA XREF: sub_401610+D93r
					; sub_401610+1A1Dr
dword_408074	dd 77E79D5Bh		; DATA XREF: sub_401610+D4Ar
					; sub_401610+D82r ...
dword_408078	dd 77E668D9h		; DATA XREF: sub_401610:loc_401E92r
dword_40807C	dd 77E7AC5Eh		; DATA XREF: sub_401610+871r
dword_408080	dd 77E76A2Eh		; DATA XREF: sub_401610+84Dr
					; start+33Dr ...
dword_408084	dd 77E77963h		; DATA XREF: sub_401610+6D7r
					; sub_401610:loc_402BADr ...
dword_408088	dd 77E7011Ah		; DATA XREF: sub_401610+6CEr
dword_40808C	dd 77E74CABh		; DATA XREF: sub_401610+599r
					; sub_405A5A+92r ...
dword_408090	dd 77E71702h		; DATA XREF: sub_401610+575r
dword_408094	dd 77E6CBF9h		; DATA XREF: sub_401610+3FCr
dword_408098	dd 77E6C10Bh		; DATA XREF: sub_401610+3DAr
					; sub_406357+3Dr
dword_40809C	dd 77E80357h		; DATA XREF: sub_401610+395r
dword_4080A0	dd 77E71AFEh		; DATA XREF: sub_401610+330r
dword_4080A4	dd 77E74155h		; DATA XREF: sub_401610+30Dr
					; sub_401610+4C0r ...
dword_4080A8	dd 77E705C5h		; DATA XREF: sub_401610+27Cr
dword_4080AC	dd 77E70396h		; DATA XREF: sub_401610+20Er
					; sub_401610+5A4r ...
dword_4080B0	dd 77E61BE6h		; DATA XREF: sub_401610+15Cr
dword_4080B4	dd 77E7751Ah		; DATA XREF: sub_403420+Dr
					; sub_403420:loc_403513r ...
dword_4080B8	dd 77E7A837h		; DATA XREF: sub_403756+213r
					; sub_405E7A+26r ...
dword_4080BC	dd 77E793EFh		; DATA XREF: sub_403756+68r
					; sub_406357+106r
dword_4080C0	dd 77E805D8h		; DATA XREF: sub_401610+F1Er
					; sub_405A5A+1CDr
dword_4080C4	dd 77E6808Fh		; DATA XREF: sub_403A62+21r start+1C1r ...
dword_4080C8	dd 77E75CB5h		; DATA XREF: start:loc_403F86r
dword_4080CC	dd 77E79C90h		; DATA XREF: start+43Br
dword_4080D0	dd 77E6BD13h		; DATA XREF: start+34Fr
dword_4080D4	dd 77E73BEFh		; DATA XREF: start+8Br	sub_404258+15r	...
dword_4080D8	dd 77E7C938h		; DATA XREF: start+85r
dword_4080DC	dd 77E705B0h		; DATA XREF: start+59r	sub_406357+CDr	...
dword_4080E0	dd 77E6AD34h		; DATA XREF: start+44r
dword_4080E4	dd 77E72D97h		; DATA XREF: sub_40410B:loc_40412Ar
dword_4080E8	dd 77E6869Bh		; DATA XREF: sub_40463C+25Ar
dword_4080EC	dd 77E71B14h		; DATA XREF: sub_405202+377r
dword_4080F0	dd 77E7166Fh		; DATA XREF: sub_405202+33Er
dword_4080F4	dd 77E736A3h		; DATA XREF: sub_405202+334r
					; sub_405DBB+6r ...
dword_4080F8	dd 77E7AC37h		; DATA XREF: sub_405202+1E0r
dword_4080FC	dd 77E61BB8h		; DATA XREF: sub_405D01+3Cr
dword_408100	dd 77E6AF8Fh		; DATA XREF: sub_405EA9+2Dr
dword_408104	dd 77E73167h		; DATA XREF: sub_405FFDr sub_40622D+Br ...
dword_408108	dd 77E74672h		; DATA XREF: sub_406003r
					; sub_4060AD+85r ...
dword_40810C	dd 77E70192h		; DATA XREF: sub_406357+243r
dword_408110	dd 77E75090h		; DATA XREF: sub_406357+1F6r
					; sub_406357+222r
dword_408114	dd 77E74D76h		; DATA XREF: sub_406357+13Fr
dword_408118	dd 77E77797h		; DATA XREF: sub_406357+125r
dword_40811C	dd 77E704FCh		; DATA XREF: sub_4065B7+114r
dword_408120	dd 77E704DCh		; DATA XREF: sub_4067E6+1A6r
dword_408124	dd 77E72CF4h		; DATA XREF: sub_4013E7+B5r
					; sub_401610+BD1r ...
dword_408128	dd 77E73628h		; DATA XREF: sub_401610+196Cr
					; start+7Er ...
dword_40812C	dd 77E7A5FDh		; DATA XREF: sub_401610+F34r
					; start+400r ...
dword_408130	dd 77E80618h		; DATA XREF: sub_401610+FA0r
dword_408134	dd 77E77CCEh		; DATA XREF: sub_401610+1135r
dword_408138	dd 77E7070Eh		; DATA XREF: sub_401610+12AFr
dword_40813C	dd 77E73803h		; DATA XREF: sub_401610+1911r
					; sub_401610+1930r ...
dword_408140	dd 77E72C64h		; DATA XREF: sub_401610+12EDr
dword_408144	dd 77E79D8Ch		; DATA XREF: sub_401610+160Fr
					; sub_401610+1927r ...
dword_408148	dd 77E78B82h		; DATA XREF: sub_401610+1664r
					; sub_4033D7+17r ...
dword_40814C	dd 77E78C81h		; DATA XREF: sub_401610+16C8r
					; sub_401610+16F7r ...
dword_408150	dd 77E78EAAh		; DATA XREF: sub_401610+171Cr
					; sub_406168+2Cr ...
dword_408154	dd 77E75E67h		; DATA XREF: sub_401610+173Er
					; sub_4067E6+166r
dword_408158	dd 77E75D9Eh		; DATA XREF: sub_401610+1769r
					; sub_406168+1Ar ...
dword_40815C	dd 77E7A099h		; DATA XREF: sub_403756+36r start+32Br
		dd 0
dword_408164	dd 77428B97h		; DATA XREF: sub_401610+CC8r
					; sub_40428C+211r
dword_408168	dd 774E3824h		; DATA XREF: sub_40463C+15Br
dword_40816C	dd 77423391h		; DATA XREF: sub_405CD6+8r
dword_408170	dd 773F6FB6h		; DATA XREF: sub_4065B7+151r
dword_408174	dd 7746135Fh		; DATA XREF: sub_401610+11EDr
dword_408178	dd 77423EAEh		; DATA XREF: sub_4041F2+38r
					; sub_4065B7+160r
		align 10h
dword_408180	dd 77D4B816h		; DATA XREF: sub_401610+ABr
dword_408184	dd 77D5BB6Ch		; DATA XREF: .text:00403396r
					; sub_40410B+B2r ...
dword_408188	dd 77D444F0h		; DATA XREF: .text:00403344r
dword_40818C	dd 77D49A11h		; DATA XREF: sub_403420+1EBr
					; sub_403756+195r ...
dword_408190	dd 77D5E69Dh		; DATA XREF: sub_403420+11Cr
					; sub_403756+15Br ...
dword_408194	dd 77D902E3h		; DATA XREF: start+479r
dword_408198	dd 77D472ECh		; DATA XREF: start+C0r	sub_405DCA+Dr ...
dword_40819C	dd 77D4432Ah		; DATA XREF: sub_40403F+2Dr
					; sub_40428C+CBr
dword_4081A0	dd 77D43FEDh		; DATA XREF: sub_40403F+1Ar
					; sub_404A94+229r
dword_4081A4	dd 77D47EE5h		; DATA XREF: sub_40428C+1C0r
dword_4081A8	dd 77D4630Dh		; DATA XREF: sub_40428C+1BAr
dword_4081AC	dd 77D4FF4Ah		; DATA XREF: sub_40428C+88r
dword_4081B0	dd 77D4932Ch		; DATA XREF: sub_40463C+65r
dword_4081B4	dd 77D4FF23h		; DATA XREF: sub_40463C+4Br
dword_4081B8	dd 77D481CDh		; DATA XREF: sub_404961+22r
					; sub_405597+42Er
dword_4081BC	dd 77D4822Bh		; DATA XREF: sub_404961+6r
dword_4081C0	dd 77D5BA26h		; DATA XREF: sub_4049AD+DBr
dword_4081C4	dd 77D4747Ch		; DATA XREF: sub_4049AD+4Cr
dword_4081C8	dd 77D5BC81h		; DATA XREF: sub_404A94+83r
dword_4081CC	dd 77D5E303h		; DATA XREF: sub_405202+388r
dword_4081D0	dd 77D6BB4Ch		; DATA XREF: sub_405202+382r
dword_4081D4	dd 77D6BB30h		; DATA XREF: sub_405202+32Br
dword_4081D8	dd 77D5E310h		; DATA XREF: sub_405202+325r
dword_4081DC	dd 77D7BF7Ah		; DATA XREF: sub_405202+2E3r
dword_4081E0	dd 77D45F74h		; DATA XREF: sub_405202+2C1r
					; sub_405597+422r
dword_4081E4	dd 77D5DD3Ah		; DATA XREF: sub_405202+2AEr
dword_4081E8	dd 77D49B9Ch		; DATA XREF: sub_405202+299r
dword_4081EC	dd 77D477C0h		; DATA XREF: sub_405202+CEr
dword_4081F0	dd 77D4F5CBh		; DATA XREF: sub_405597+48Cr
dword_4081F4	dd 77D5D417h		; DATA XREF: sub_405597+1D0r
dword_4081F8	dd 77D47C8Bh		; DATA XREF: sub_405597+B6r
					; sub_405597+103r
dword_4081FC	dd 77D49525h		; DATA XREF: sub_405597+3Cr
					; sub_405597+449r
dword_408200	dd 77D650B3h		; DATA XREF: sub_405A5A+237r
dword_408204	dd 77D5D8BAh		; DATA XREF: sub_405A5A:loc_405C45r
dword_408208	dd 77D414D4h		; DATA XREF: sub_405A5A+191r
dword_40820C	dd 77D4BBDBh		; DATA XREF: sub_405A5A+158r
dword_408210	dd 77D4DC11h		; DATA XREF: sub_405A5A+140r
					; sub_405A5A+218r
dword_408214	dd 77D6272Dh		; DATA XREF: sub_405D57r
dword_408218	dd 77D6274Fh		; DATA XREF: sub_405D5D+13r
dword_40821C	dd 77D6ADD7h		; DATA XREF: sub_405D79+39r
dword_408220	dd 77D4C783h		; DATA XREF: sub_40614C+Er
dword_408224	dd 77D47F34h		; DATA XREF: sub_401610+175r
dword_408228	dd 77D47D27h		; DATA XREF: sub_401610+1CAr
					; sub_401610+C5Br ...
dword_40822C	dd 77D47322h		; DATA XREF: sub_401610+4D9r
					; sub_401610+1821r ...
dword_408230	dd 77D4C96Ah		; DATA XREF: sub_401610+972r
					; sub_401610+C9Ar ...
dword_408234	dd 77D5C3E2h		; DATA XREF: sub_401610+A9Cr
dword_408238	dd 77D651AFh		; DATA XREF: sub_401610+AE3r
dword_40823C	dd 77D45B19h		; DATA XREF: sub_401610+B06r
dword_408240	dd 77D48AA8h		; DATA XREF: sub_401610+B2Er
					; sub_401610+B5Ar ...
dword_408244	dd 77D49951h		; DATA XREF: sub_401610+B4Br
					; sub_404A94+96r ...
dword_408248	dd 77D4D42Bh		; DATA XREF: sub_401610+B8Br
					; sub_405A5A+F9r
dword_40824C	dd 77D45F40h		; DATA XREF: sub_401610+BBAr
dword_408250	dd 77D4816Dh		; DATA XREF: sub_401610:loc_402276r
					; sub_403FFA+Ar ...
dword_408254	dd 77D46E60h		; DATA XREF: sub_401610+D59r
					; sub_401610+19E7r ...
dword_408258	dd 77D441F2h		; DATA XREF: sub_401610+D65r
					; sub_401610+19F3r ...
dword_40825C	dd 77D4590Ch		; DATA XREF: sub_401610+1BADr
dword_408260	dd 77D46F5Bh		; DATA XREF: sub_401000+2Cr
dword_408264	dd 77D458EEh		; DATA XREF: sub_401000+47r
dword_408268	dd 77D45F23h		; DATA XREF: sub_401000+5Br
					; sub_401610+B67r ...
dword_40826C	dd 77D463A6h		; DATA XREF: sub_401000+E4r
dword_408270	dd 77D5C7A1h		; DATA XREF: sub_401000+156r
dword_408274	dd 77D458FDh		; DATA XREF: sub_401000+16Er
dword_408278	dd 77D4702Fh		; DATA XREF: sub_4013E7+C4r
					; sub_401610+AB4r ...
		align 10h
dword_408280	dd 77C015E3h		; DATA XREF: sub_407484r
dword_408284	dd 77C0162Dh		; DATA XREF: sub_40747Er
dword_408288	dd 77C0167Dh		; DATA XREF: sub_407478r
		align 10h
dword_408290	dd 771F5164h		; DATA XREF: start+2BFr sub_405177+7Br
dword_408294	dd 771C8E66h		; DATA XREF: start+1Er	sub_405177+10r
dword_408298	dd 771C1E56h		; DATA XREF: sub_401610+107Er
		align 10h
aLoggingSetToD	db 'logging set to %d',0 ; DATA XREF: sub_401610+1A61o
		align 4
aSettingsLoggin	db 'settings logging to %d',0 ; DATA XREF: sub_401610+1A53o
		align 4
aFileExtracti_0	db 'File Extraction: failed createprocess on uninstaller ("%s")',0
					; DATA XREF: sub_401610+1A3Do
aFileExtraction	db 'File Extraction: success ("%s")',0 ; DATA XREF: sub_401610+19C5o
a_?		db '" _?=',0            ; DATA XREF: sub_401610+19A6o
		align 10h
asc_408330	db ' /x "',0            ; DATA XREF: sub_401610+1992o
		align 4
aCreatedUninsta	db 'created uninstaller: %d, "%s"',0 ; DATA XREF: sub_401610+1952o
		align 4
aWriteregErrorC	db 'WriteReg: error creating key %d\%s',0 ; DATA XREF: sub_401610+14A5o
		align 4
aWriteregbinSet	db 'WriteRegBin: set %d\%s\%s with %d bytes',0 ; DATA XREF: sub_401610+1471o
aWriteregdwordS	db 'WriteRegDWORD: set %d\%s\%s to %d',0 ; DATA XREF: sub_401610+1443o
		align 4
aWriteregstrSet	db 'WriteRegStr: set %d\%s\%s to %s',0 ; DATA XREF: sub_401610+1416o
aDeleteregkeyDS	db 'DeleteRegKey: %d\%s',0 ; DATA XREF: sub_401610+1355o
aDeleteregvalue	db 'DeleteRegValue: %d\%s\%s',0 ; DATA XREF: sub_401610+1331o
		align 4
aWriteinistrWro	db 'WriteINIStr: wrote [%s] %s=%s in %s',0 ; DATA XREF: sub_401610+1298o
aRm		db '<RM>',0             ; DATA XREF: sub_401610+1232o
		align 4
aCopyfilesSS	db 'CopyFiles "%s"->"%s"',0 ; DATA XREF: sub_401610+118Bo
		align 10h
aCreateshortcut	db 'CreateShortCut: out: "%s", in: "%s %s", icon: %s,%d, sw=%d, hk=%d'
					; DATA XREF: sub_401610+105Fo
		db 0
		align 4
aErrorRegiste_1	db 'Error registering DLL: Could not initialize OLE',0
					; DATA XREF: sub_401610+FE0o
aErrorRegiste_0	db 'Error registering DLL: Could not load ',27h,'%s',27h,' -> ',27h,'%s',27h,0
					; DATA XREF: sub_401610+FCAo
		align 4
aErrorRegisteri	db 'Error registering DLL: %s not found in %s',0
					; DATA XREF: sub_401610+F8Bo
		align 4
aRegdllCouldNot	db 'RegDLL: Could not load ',27h,'%s',27h,' -> ',27h,'%s',27h,0
					; DATA XREF: sub_401610+F0Eo
asc_408558:				; DATA XREF: sub_401610+E5Bo
					; sub_4061A6+1Bo ...
		unicode	0, <\>,0
aExecFailedCrea	db 'Exec: failed createprocess ("%s")',0 ; DATA XREF: sub_401610+DC6o
		align 10h
aExecSuccessS	db 'Exec: success ("%s")',0 ; DATA XREF: sub_401610+D33o
		align 4
aExecCommandS	db 'Exec: command="%s"',0 ; DATA XREF: sub_401610+D08o
		align 4
aExecshellSucce	db 'ExecShell: success ("%s": file:"%s" params:"%s")',0
					; DATA XREF: sub_401610+CECo
		align 10h
aExecshellWarni	db 'ExecShell: warning: error ("%s": file:"%s" params:"%s")=%d',0
					; DATA XREF: sub_401610+CD7o
		align 4
aSS		db '%s %s',0            ; DATA XREF: sub_401610+C8Eo
		align 4
aHidewindow	db 'HideWindow',0       ; DATA XREF: sub_401610+C48o
		align 10h
aPopStackEmpty	db 'Pop: stack empty',0 ; DATA XREF: sub_401610+9E2o
		align 4
aExchStackDElem	db 'Exch: stack < %d elements',0 ; DATA XREF: sub_401610+99Co
		align 10h
aRmdirS		db 'RMDir: "%s"',0      ; DATA XREF: sub_401610+785o
aMessageboxDS	db 'MessageBox: %d,"%s"',0 ; DATA XREF: sub_401610+742o
aDeleteS	db 'Delete: "%s"',0     ; DATA XREF: sub_401610+72Do
		align 10h
aS		db '%s',0               ; DATA XREF: sub_401610+707o
					; sub_401610+1A90o
		align 4
aFileWroteDToS	db 'File: wrote %d to "%s"',0 ; DATA XREF: sub_401610+6ACo
		align 4
aFileErrorUserC	db 'File: error, user cancel',0 ; DATA XREF: sub_401610:loc_401C7Do
		align 4
aFileSkippedSOv	db 'File: skipped: "%s" (overwriteflag=%d)',0 ; DATA XREF: sub_401610+65Bo
		align 10h
aFileErrorUserA	db 'File: error, user abort',0 ; DATA XREF: sub_401610+62Eo
aFileErrorUserR	db 'File: error, user retry',0 ; DATA XREF: sub_401610+61Bo
aFileErrorCreat	db 'File: error creating "%s"',0 ; DATA XREF: sub_401610+5D3o
		align 4
aFileOverwritef	db 'File: overwriteflag=%d, allowskipfilesflag=%d, name="%s"',0
					; DATA XREF: sub_401610+50Eo
		align 4
aRenameFailedS	db 'Rename failed: %s',0 ; DATA XREF: sub_401610+376o
		align 4
aRenameOnReboot	db 'Rename on reboot: %s',0 ; DATA XREF: sub_401610+364o
		align 4
aRenameS	db 'Rename: %s',0       ; DATA XREF: sub_401610+320o
		align 10h
asc_4087B0	db '->',0               ; DATA XREF: sub_401610+313o
		align 4
aIffileexists_0	db 'IfFileExists: file "%s" does not exist, jumping %d',0
					; DATA XREF: sub_401610+2BBo
		align 4
aIffileexistsFi	db 'IfFileExists: file "%s" exists, jumping %d',0
					; DATA XREF: sub_401610+2A5o
		align 4
aCreatedirector	db 'CreateDirectory: "%s" (%d)',0 ; DATA XREF: sub_401610+240o
		align 10h
aSetfileattri_0	db 'SetFileAttributes failed.',0 ; DATA XREF: sub_401610+21Co
		align 4
aSetfileattribu	db 'SetFileAttributes: "%s":%08X',0 ; DATA XREF: sub_401610+1FDo
		align 4
aBringtofront	db 'BringToFront',0     ; DATA XREF: sub_401610:loc_401777o
		align 4
aSleepD		db 'Sleep(%d)',0        ; DATA XREF: sub_401610+147o
		align 4
aDetailprintS	db 'detailprint: %s',0  ; DATA XREF: sub_401610+123o
aCallD		db 'Call: %d',0         ; DATA XREF: sub_401610+D5o
		align 4
aAbortingS	db 'Aborting: "%s"',0   ; DATA XREF: sub_401610+7Fo
		align 4
aJumpD		db 'Jump: %d',0         ; DATA XREF: sub_401610+63o
		align 10h
a___D		db '... %d%%',0         ; DATA XREF: .text:004033BBo
		align 4
aUnpackingDataD	db 'unpacking data: %d%%',0 ; DATA XREF: sub_403420+108o
		align 8
aTheInstallerYo	db 'The installer you are trying to use is corrupted or incomplete.',0Ah
					; DATA XREF: sub_403756:loc_4039F6o
		db 'This could be the result of a damaged disk, a failed download or '
		db 'a virus.',0Ah
		db 0Ah
		db 'You may want to contact the author of this installer to obtain a '
		db 'new copy.',0Ah
		db 0Ah
		db 'It may be possible to skip this check using the /NCRC command lin'
		db 'e switch',0Ah
		db '(NOT RECOMMENDED).',0
		align 10h
aErrorWritingTe	db 'Error writing temporary file. Make sure your temp folder is valid'
					; DATA XREF: sub_403756+223o start+Do
		db '.',0
		align 4
aVerifyingInsta	db 'verifying installer: %d%%',0 ; DATA XREF: sub_403756+148o
		align 10h
aErrorLaunching	db 'Error launching installer',0 ; DATA XREF: sub_403756+56o
					; start+274o
		align 4
aSeshutdownpriv	db 'SeShutdownPrivilege',0 ; DATA XREF: start+44Fo
aAdjusttokenpri	db 'AdjustTokenPrivileges',0 ; DATA XREF: start+41Ao
		align 4
aLookupprivileg	db 'LookupPrivilegeValueA',0 ; DATA XREF: start+40Eo
		align 10h
aOpenprocesstok	db 'OpenProcessToken',0 ; DATA XREF: start+406o
		align 4
aAdvapi32_dll	db 'ADVAPI32.dll',0     ; DATA XREF: start+3EDo
		align 4
a_?_0		db ' _?=',0             ; DATA XREF: start+394o
		align 4
asc_408B0C	db '" ',0               ; DATA XREF: start:loc_403E67o
		align 10h
aOutOfMemory	db 'Out of Memory',0    ; DATA XREF: start:loc_403D48o
		align 10h
aExtractionPath	db 'Extraction pathname not properly delimited.',0Ah
					; DATA XREF: start:loc_403D41o
		db 0Ah
		db 'Try using quotes or a shorter path.',0
		align 4
aCNsis_extractf	db 'C:\NSIS_ExtractFiles\',0 ; DATA XREF: start+228o
		align 4
aTemp		db '\Temp',0            ; DATA XREF: start+5Fo
		align 4
aNsisError_0	db 'NSIS Error',0       ; DATA XREF: start+24o
		align 10h
aInstall_log	db 'install.log',0      ; DATA XREF: sub_4040E9o
aOpen		db 'open',0             ; DATA XREF: sub_40428C+209o
		align 4
aU_USS		db '%u.%u%s%s',0        ; DATA XREF: sub_404578+5Ao
word_408BBE	dw 0			; DATA XREF: sub_40463C:loc_4048F7o
aGetdiskfreespa	db 'GetDiskFreeSpaceExA',0 ; DATA XREF: sub_40463C+217o
aKernel32_dll	db 'KERNEL32.dll',0     ; DATA XREF: sub_40463C:loc_40483Fo
					; sub_406357+7o
		align 4
aSectionS	db 'Section: "%s"',0    ; DATA XREF: sub_405177+43o
		align 4
aSkippingSectio	db 'Skipping section: "%s"',0 ; DATA XREF: sub_405177+34o
		align 4
aNewInstallOfST	db 'New install of "%s" to "%s"',0 ; DATA XREF: sub_405202+B2o
a_exe		db '.exe',0             ; DATA XREF: sub_405A5A+81o
		align 10h
aD		db '%d',0               ; DATA XREF: sub_405F5B+4o
		align 4
a?		db '*?|<>/":',0         ; DATA XREF: sub_406009+52o
		align 10h
asc_408C40	db 0Dh,0Ah,0		; DATA XREF: sub_4060AD+6Eo
		align 4
asc_408C44	db 0Ah			; DATA XREF: sub_406357:loc_4064DDo
		db '[',0
		align 4
aRename		db '[Rename]',0Dh,0Ah,0 ; DATA XREF: sub_406357+14Fo
					; sub_406357+15Eo
		align 4
aWininit_ini	db '\wininit.ini',0     ; DATA XREF: sub_406357+D3o
		align 4
aSS_0		db '%s=%s',0Dh,0Ah,0    ; DATA XREF: sub_406357+B2o
aNul		db 'NUL',0              ; DATA XREF: sub_406357:loc_4063D7o
aMovefileexa	db 'MoveFileExA',0      ; DATA XREF: sub_406357+1Ao
aCProgramFiles	db 'C:\Program Files',0 ; DATA XREF: sub_4065B7+FDo
		align 10h
aProgramfilesdi	db 'ProgramFilesDir',0  ; DATA XREF: sub_4065B7+E4o
aSoftwareMicros	db 'Software\Microsoft\Windows\CurrentVersion',0 ; DATA XREF: sub_4065B7+CFo
					; sub_4065B7+E9o
		align 4
aCommonfilesdir	db 'CommonFilesDir',0   ; DATA XREF: sub_4065B7+CAo
		align 4
aMicrosoftInter	db '\Microsoft\Internet Explorer\Quick Launch',0 ; DATA XREF: sub_4065B7+B7o
		align 4
aRmdirRemoved_1	db 'RMDir: RemoveDirectory failed("%s")',0
					; DATA XREF: sub_4067E6:loc_4069BAo
aRmdirRemoved_0	db 'RMDir: RemoveDirectory on Reboot("%s")',0 ; DATA XREF: sub_4067E6+1B7o
		align 4
aRmdirRemovedir	db 'RMDir: RemoveDirectory("%s")',0 ; DATA XREF: sub_4067E6+199o
		align 4
aDeleteDelete_1	db 'Delete: DeleteFile failed("%s")',0 ; DATA XREF: sub_4067E6:loc_406929o
aDeleteDelete_0	db 'Delete: DeleteFile on Reboot("%s")',0 ; DATA XREF: sub_4067E6+125o
		align 4
aDeleteDeletefi	db 'Delete: DeleteFile("%s")',0 ; DATA XREF: sub_4067E6+F6o
		align 4
a_		db '\*.*',0             ; DATA XREF: sub_4067E6+6Ao
		align 4
dword_408DDC	dd 214EEh, 0		; DATA XREF: sub_401610+1070o
		dd 0C0h, 46000000h
dword_408DEC	dd 21401h, 0		; DATA XREF: sub_401610+1079o
		dd 0C0h, 46000000h
dword_408DFC	dd 10Bh, 0		; DATA XREF: sub_401610+1095o
		dd 0C0h, 46000000h, 8EE8h, 2 dup(0)
		dd 919Eh, 8028h, 9140h,	2 dup(0)
		dd 91EEh, 8280h, 8F20h,	2 dup(0)
		dd 9656h, 8060h, 9040h,	2 dup(0)
		dd 9A68h, 8180h, 8EFCh,	2 dup(0)
		dd 9AFAh, 803Ch, 8EC0h,	2 dup(0)
		dd 9B9Ah, 8000h, 9024h,	2 dup(0)
		dd 9C26h, 8164h, 9150h,	2 dup(0)
		dd 9C68h, 8290h, 5 dup(0)
		dd 9B04h, 9B22h, 9B30h,	9B40h, 9B88h, 9B76h, 9B64h, 9B50h
		dd 9B14h, 0
		dd 80000011h, 9174h, 9160h, 918Ah, 0
		dd 9ADCh, 9ACCh, 9AB6h,	9AA0h, 9A94h, 9A84h, 9AECh, 9A74h
		dd 0
		dd 92F8h, 930Ah, 931Ah,	932Eh, 933Eh, 9354h, 936Ah, 9386h
		dd 93A0h, 93ACh, 93BAh,	93C8h, 93DEh, 93F0h, 93FEh, 9412h
		dd 9426h, 9432h, 943Eh,	9456h, 946Ch, 9474h, 9484h, 9492h
		dd 92E8h, 94B6h, 94CAh,	94D8h, 94ECh, 94F8h, 9504h, 9516h
		dd 952Eh, 953Eh, 9556h,	956Ah, 957Ah, 9588h, 9596h, 95A6h
		dd 95B8h, 95CCh, 95D8h,	95E4h, 95F4h, 9606h, 9616h, 962Ch
		dd 9642h, 91FAh, 9204h,	92D6h, 92C8h, 92B2h, 9294h, 9212h
		dd 9278h, 926Ch, 9260h,	924Eh, 9242h, 9232h, 9220h, 94A0h
		dd 0
		dd 9BBCh, 9BE4h, 9BFAh,	9C08h, 9BA8h, 9BCCh, 0
		dd 97B2h, 97C4h, 97D6h,	97E2h, 97F2h, 9808h, 9818h, 9824h
		dd 9832h, 9844h, 9852h,	985Eh, 9870h, 9884h, 989Ah, 98ACh
		dd 98BCh, 98CEh, 98E0h,	98EEh, 9900h, 9914h, 9926h, 9936h
		dd 9948h, 9958h, 9966h,	9978h, 998Ch, 9998h, 99A8h, 99BAh
		dd 99CAh, 99DCh, 99ECh,	99FEh, 9A16h, 9A28h, 9A3Ah, 9A4Ch
		dd 9A5Ah, 979Ch, 978Eh,	9782h, 9776h, 9760h, 9750h, 9744h
		dd 9736h, 9724h, 9716h,	970Eh, 96FEh, 96EEh, 96DAh, 96C8h
		dd 96A6h, 9698h, 9688h,	967Ch, 9670h, 9664h, 96B8h, 0
		dd 91D4h, 91BEh, 91ACh,	0
		dd 9C46h, 9C58h, 9C32h,	0
		dd 6D490038h, 4C656761h, 5F747369h, 74736544h, 796F72h
		dd 6D490034h, 4C656761h, 5F747369h, 4D646441h, 656B7361h
		dd 370064h, 67616D49h, 73694C65h, 72435F74h, 65746165h
		dd 4F430000h, 4C54434Dh, 642E3233h, 6C6Ch, 6556000Ah, 65755172h
		dd 61567972h, 4165756Ch, 0
aGetfileversion	db 'GetFileVersionInfoA',0
		db    1
		align 2
aGetfileversi_0	db 'GetFileVersionInfoSizeA',0
aVersion_dll	db 'VERSION.dll',0
		dw 26Ah
aMuldiv		db 'MulDiv',0
		align 4
		db '|',0
aDeletefilea	db 'DeleteFileA',0
		dw 1F5h
aGlobalfree	db 'GlobalFree',0
		align 10h
		db '',0
aFindfirstfilea	db 'FindFirstFileA',0
		align 2
		db '',0
aFindnextfilea	db 'FindNextFileA',0
		db '',0
aFindclose	db 'FindClose',0
		dw 30Eh
aSetfilepointer	db 'SetFilePointer',0
		align 10h
		db 0A9h	; 
		db 2, 52h, 65h
aAdfile		db 'adFile',0
		align 4
		db  94h	; 
		db 3, 57h, 72h
aItefile	db 'iteFile',0
		db  94h	; 
		db 1, 47h, 65h
aTprivateprofil	db 'tPrivateProfileStringA',0
		align 4
		db  99h	; 
		db 3, 57h, 72h
aIteprivateprof	db 'itePrivateProfileStringA',0
		align 2
		dw 26Bh
aMultibytetowid	db 'MultiByteToWideChar',0
aQ		db '',0
aFreelibrary	db 'FreeLibrary',0
		dw 198h
aGetprocaddress	db 'GetProcAddress',0
		align 4
		dd 6F4C0248h, 694C6461h, 72617262h, 4179h, 6F4600EAh, 74616D72h
		dd 7373654Dh, 41656761h, 1690000h, 4C746547h, 45747361h
		dd 726F7272h, 1770000h,	4D746547h, 6C75646Fh, 6E614865h
		dd 41656C64h, 3080000h,	45746553h, 726F7272h, 65646F4Dh
		dd 1520000h
aGetexitcodepro	db 'GetExitCodeProcess',0
		align 4
		db  83h	; 
		db 3, 57h, 61h
aItforsingleobj	db 'itForSingleObject',0
		db '',0
aExpandenvironm	db 'ExpandEnvironmentStringsA',0
		dw 150h
aGetenvironment	db 'GetEnvironmentVariableA',0
		db 0B3h	; 
		db 3, 6Ch, 73h
aTrcmpia	db 'trcmpiA',0
a__0		db '.',0
aClosehandle	db 'CloseHandle',0
		dw 312h
aSetfiletime	db 'SetFileTime',0
		db  56h	; V
		db 1, 47h, 65h
aTfileattribute	db 'tFileAttributesA',0
		align 2
a3		db '3',0
aComparefiletim	db 'CompareFileTime',0
		dd 655302CEh, 68637261h, 68746150h, 1AD0041h
aGetshortpathna	db 'GetShortPathNameA',0
		dw 161h
aGetfullpathnam	db 'GetFullPathNameA',0
		align 2
		dw 264h
aMovefilea	db 'MoveFileA',0
		dw 3ADh
aLstrcata	db 'lstrcatA',0
		align 2
		dw 2FDh
aSetcurrentdire	db 'SetCurrentDirectoryA',0
		align 2
		dw 30Ch
aSetfileattri_1	db 'SetFileAttributesA',0
		align 4
		db  47h	; G
		db 3, 53h, 6Ch
		db  65h	; e
		db 65h,	70h, 0
		db 0D5h	; 
		db 1, 47h, 65h
aTtickcount	db 'tTickCount',0
		align 4
aM		db 'M',0
aCreatefilea	db 'CreateFileA',0
		dw 15Bh
aGetfilesize	db 'GetFileSize',0
		db  75h	; u
		db 1, 47h, 65h
aTmodulefilenam	db 'tModuleFileNameA',0
		align 2
aE		db 'E',0
aCreatedirect_0	db 'CreateDirectoryA',0
		align 2
aP		db '',0
aExitprocess	db 'ExitProcess',0
		db  3Ah	; :
		db 1, 47h, 65h
aTcurrentproces	db 'tCurrentProcess',0
		db '=',0
aCopyfilea	db 'CopyFileA',0
		dd 736C03B9h, 70637274h, 416E79h, 65470108h, 6D6F4374h
		dd 646E616Dh, 656E694Ch, 1E90041h
aGetwindowsdire	db 'GetWindowsDirectoryA',0
		align 2
		dw 1CBh
aGettemppatha	db 'GetTempPathA',0
		align 2
		dw 1DAh
aGetuserdefault	db 'GetUserDefaultLangID',0
		align 2
		dw 145h
aGetdiskfrees_0	db 'GetDiskFreeSpaceA',0
		dw 200h
aGlobalunlock	db 'GlobalUnlock',0
		align 2
		dw 1F9h
aGloballock	db 'GlobalLock',0
		align 4
		dd 6C4701EEh, 6C61626Fh, 6F6C6C41h, 690063h, 61657243h
		dd 68546574h, 64616572h, 600000h, 61657243h, 72506574h
		dd 7365636Fh, 4173h, 654701C9h,	6D655474h, 6C694670h, 6D614E65h
		dd 4165h, 736C03B6h, 70637274h,	4179h, 736C03BCh, 656C7274h
		dd 416Eh, 65530303h, 646E4574h,	6946664Fh, 656Ch, 6E550363h
		dd 5670616Dh, 4F776569h, 6C694666h, 25E0065h, 5670614Dh
		dd 4F776569h, 6C694666h, 4E0065h
aCreatefilemapp	db 'CreateFileMappingA',0
		align 4
		db 0B9h	; 
		db 1, 47h, 65h
aTsystemdirecto	db 'tSystemDirectoryA',0
		dw 2B8h
aRemovedirector	db 'RemoveDirectoryA',0
		align 2
aKernel32_dll_0	db 'KERNEL32.dll',0
		align 4
		db '',0
aEndpaint	db 'EndPaint',0
		align 10h
		db '',0
aDrawtexta	db 'DrawTextA',0
aT		db '',0
aFillrect	db 'FillRect',0
		align 4
		db 0FFh
		align 2
aGetclientrect	db 'GetClientRect',0
		db 0Dh,0
aBeginpaint	db 'BeginPaint',0
		align 2
aO		db '',0
aDefwindowproca	db 'DefWindowProcA',0
		align 4
		db  3Bh	; ;
		db 2, 53h, 65h
aNdmessagea	db 'ndMessageA',0
		align 4
		db  93h	; 
		db 1, 49h, 6Eh
aValidaterect	db 'validateRect',0
		align 2
aB		db '',0
aDispatchmessag	db 'DispatchMessageA',0
		align 2
		dw 1FFh
aPeekmessagea	db 'PeekMessageA',0
		align 2
		db '',0
aEnablewindow	db 'EnableWindow',0
		align 2
		dw 10Ch
aGetdc		db 'GetDC',0
		dw 1BFh
aLoadimagea	db 'LoadImageA',0
		align 4
		db  80h	; 
		db 2, 53h, 65h
aTwindowlonga	db 'tWindowLongA',0
		align 2
		dw 111h
aGetdlgitem	db 'GetDlgItem',0
		align 4
		db 0ADh	; 
		db 1, 49h, 73h
aWindow		db 'Window',0
		align 10h
aF		db '',0
aFindwindowexa	db 'FindWindowExA',0
		db  3Eh	; >
		db 2, 53h, 65h
aNdmessagetimeo	db 'ndMessageTimeoutA',0
		dw 2D6h
aWsprintfa	db 'wsprintfA',0
		db '-',0
aCharpreva	db 'CharPrevA',0
		dw 292h
aShowwindow	db 'ShowWindow',0
		align 4
		db  57h	; W
		db 2, 53h, 65h
aTforegroundwin	db 'tForegroundWindow',0
		dw 203h
aPostquitmessag	db 'PostQuitMessage',0
		dd 65530286h, 6E695774h, 54776F64h, 41747865h, 27A0000h
		dd 54746553h, 72656D69h, 990000h, 74736544h, 57796F72h
		dd 6F646E69h, 550077h
aCreatedialogpa	db 'CreateDialogParamA',0
		align 4
aS_0		db '',0
aExitwindowsex	db 'ExitWindowsEx',0
		db '*',0
aCharnexta	db 'CharNextA',0
		db  5Ah	; Z
		db 1, 47h, 65h
aTsyscolor	db 'tSysColor',0
		dw 16Eh
aGetwindowlonga	db 'GetWindowLongA',0
		align 4
		db 0B9h	; 
		db 1, 4Ch, 6Fh
aAdcursora	db 'adCursorA',0
		dw 24Dh
aSetcursor	db 'SetCursor',0
a8		db '8',0
aCheckdlgbutton	db 'CheckDlgButton',0
		align 10h
		db 0F2h	; 
		align 2
aGetasynckeysta	db 'GetAsyncKeyState',0
		align 4
		db 0A3h	; 
		db 1, 49h, 73h
aDlgbuttoncheck	db 'DlgButtonChecked',0
		align 2
		dw 231h
aScreentoclient	db 'ScreenToClient',0
		align 4
		dd 6547013Ch, 73654D74h, 65676173h, 736F50h, 6143001Bh
		dd 69576C6Ch, 776F646Eh, 636F7250h, 1B10041h, 69577349h
		dd 776F646Eh, 69736956h, 656C62h, 6F4C01B7h, 69426461h
		dd 70616D74h, 420041h, 736F6C43h, 696C4365h, 616F6270h
		dd 6472h, 6553024Ah, 696C4374h,	616F6270h, 61446472h, 6174h
		dd 6D4500C1h, 43797470h, 6270696Ch, 6472616Fh, 1F50000h
		dd 6E65704Fh, 70696C43h, 72616F62h, 2A40064h, 63617254h
		dd 706F506Bh, 654D7075h, 756Eh,	65470174h, 6E695774h, 52776F64h
		dd 746365h, 70410008h, 646E6570h, 756E654Dh, 5E0041h, 61657243h
		dd 6F506574h, 4D707570h, 756E65h, 6547015Dh, 73795374h
		dd 4D6D6574h, 69727465h, 7363h,	6E4500C6h, 61694464h, 676F6Ch
		dd 65530247h, 616C4374h, 6F4C7373h, 41676Eh, 734901AEh
		dd 646E6957h, 6E45776Fh, 656C6261h, 2830064h, 57746553h
		dd 6F646E69h, 736F5077h, 9E0000h, 6C616944h, 6F42676Fh
		dd 72615078h, 416D61h, 654700F6h, 616C4374h, 6E497373h
		dd 416F66h, 72430060h, 65746165h, 646E6957h, 7845776Fh
		dd 2990041h
aSystemparamete	db 'SystemParametersInfoA',0
		dw 216h
aRegisterclassa	db 'RegisterClassA',0
		align 4
		db  53h	; S
		db 2, 53h, 65h
aTdlgitemtexta	db 'tDlgItemTextA',0
		dw 113h
aGetdlgitemtext	db 'GetDlgItemTextA',0
		db 0DEh	; 
		db 1, 4Dh, 65h
aSsageboxa	db 'ssageBoxA',0
		dw 2D8h
aWvsprintfa	db 'wvsprintfA',0
		align 4
aUser32_dll	db 'USER32.dll',0
		align 4
		db  0Eh
		db 2, 53h, 65h
aLectobject	db 'lectObject',0
		align 4
		db  3Ch	; <
		db 2, 53h, 65h
aTtextcolor	db 'tTextColor',0
		align 4
		db  16h
		db 2, 53h, 65h
aTbkmode	db 'tBkMode',0
		db ':',0
aCreatefontindi	db 'CreateFontIndirectA',0
		db ')',0
aCreatebrushind	db 'CreateBrushIndirect',0
aP_0		db '',0
aDeleteobject	db 'DeleteObject',0
		align 4
		db  6Bh	; k
		db 1, 47h, 65h
aTdevicecaps	db 'tDeviceCaps',0
		db  15h
		db 2, 53h, 65h
aTbkcolor	db 'tBkColor',0
		align 2
aGdi32_dll	db 'GDI32.dll',0
		db 0D0h	; 
		db 1, 52h, 65h
aGdeletekeya	db 'gDeleteKeyA',0
		db 0C9h	; 
		db 1, 52h, 65h
aGclosekey	db 'gCloseKey',0
		dw 1D5h
aRegenumkeya	db 'RegEnumKeyA',0
		db 0E2h	; 
		db 1, 52h, 65h
aGopenkeyexa	db 'gOpenKeyExA',0
		db 0D9h	; 
		db 1, 52h, 65h
aGenumvaluea	db 'gEnumValueA',0
		db 0ECh	; 
		db 1, 52h, 65h
aGqueryvalueexa	db 'gQueryValueExA',0
		align 4
		db 0F9h	; 
		db 1, 52h, 65h
aGsetvalueexa	db 'gSetValueExA',0
		align 2
		dw 1CDh
aRegcreatekeyex	db 'RegCreateKeyExA',0
		db 0D2h	; 
		db 1, 52h, 65h
aGdeletevaluea	db 'gDeleteValueA',0
aAdvapi32_dll_0	db 'ADVAPI32.dll',0
		align 4
		db '',0
aShfileoperatio	db 'SHFileOperationA',0
		align 4
		db    6
		db 1, 53h, 68h
aEllexecutea	db 'ellExecuteA',0
		db '',0
aShgetpathfromi	db 'SHGetPathFromIDListA',0
		align 4
aY		db 'y',0
aShbrowseforfol	db 'SHBrowseForFolderA',0
		align 2
		db '',0
aShgetmalloc	db 'SHGetMalloc',0
		db '',0
aShgetspecialfo	db 'SHGetSpecialFolderLocation',0
		align 2
aShell32_dll	db 'SHELL32.dll',0
		dw 10h
aCocreateinstan	db 'CoCreateInstance',0
		align 2
		dw 104h
aOleuninitializ	db 'OleUninitialize',0
aA		db '',0
aOleinitialize	db 'OleInitialize',0
aOle32_dll	db 'ole32.dll',0
_rdata		ends

; Section 3. (virtual address 0000A000)
; Virtual size			: 0001C494 ( 115860.)
; Section size in file		: 0001C494 ( 115860.)
; Offset to raw	data for section: 0000A000
; 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 40A000h
off_40A000	dd offset dword_426460	; DATA XREF: sub_401610:loc_40256Do
		dd offset sub_4013E7
dword_40A008	dd 6			; DATA XREF: sub_401610+F7r
					; sub_401610+10Bw
dword_40A00C	dd 0FFFFFFFFh		; DATA XREF: sub_4033D7+11r
					; sub_403409+8r ...
dword_40A010	dd 0FFFFFFFFh		; DATA XREF: sub_403420+46r
					; sub_403420+164r ...
aANsisu__exe	db 'A~NSISu_.exe',0     ; DATA XREF: start+304o
					; start:loc_403EB0w
		align 4
dword_40A024	dd 0FFFFFFFFh		; DATA XREF: sub_405597+A4r
					; sub_405597+120r ...
off_40A028	dd offset sub_40428C	; DATA XREF: sub_405597+3D6r
		dd offset sub_404A94
		dd offset sub_40463C
		dd offset sub_405202
		dd offset sub_404531
dword_40A03C	dd 0FFFFFFFFh		; DATA XREF: sub_4049AD+35w
					; sub_4049AD+90r ...
dword_40A040	dd 6			; DATA XREF: sub_401610+FCw
					; sub_401610:loc_401716r ...
aRichedit20a	db 'RichEdit20A',0      ; DATA XREF: sub_405A5A+1F2o
					; sub_405A5A+202w ...
aRiched20_dll	db 'RichEd20.dll',0     ; DATA XREF: sub_405A5A+1D3o
					; sub_405A5A+1E0w
		align 10h
dword_40A060	dd 0FFFFFFFFh		; DATA XREF: sub_4060AD+Br
					; sub_4060AD:loc_4060C9w ...
		dd 7 dup(0)
dword_40A080	dd 0			; DATA XREF: sub_40137E+27w
					; sub_40137E+58r
dword_40A084	dd 77073096h		; DATA XREF: sub_40137Er
		dd 0EE0E612Ch, 990951BAh, 76DC419h, 706AF48Fh, 0E963A535h
		dd 9E6495A3h, 0EDB8832h, 79DCB8A4h, 0E0D5E91Eh,	97D2D988h
		dd 9B64C2Bh, 7EB17CBDh,	0E7B82D07h, 90BF1D91h, 1DB71064h
		dd 6AB020F2h, 0F3B97148h, 84BE41DEh, 1ADAD47Dh,	6DDDE4EBh
		dd 0F4D4B551h, 83D385C7h, 136C9856h, 646BA8C0h,	0FD62F97Ah
		dd 8A65C9ECh, 14015C4Fh, 63066CD9h, 0FA0F3D63h,	8D080DF5h
		dd 3B6E20C8h, 4C69105Eh, 0D56041E4h, 0A2677172h, 3C03E4D1h
		dd 4B04D447h, 0D20D85FDh, 0A50AB56Bh, 35B5A8FAh, 42B2986Ch
		dd 0DBBBC9D6h, 0ACBCF940h, 32D86CE3h, 45DF5C75h, 0DCD60DCFh
		dd 0ABD13D59h, 26D930ACh, 51DE003Ah, 0C8D75180h, 0BFD06116h
		dd 21B4F4B5h, 56B3C423h, 0CFBA9599h, 0B8BDA50Fh, 2802B89Eh
		dd 5F058808h, 0C60CD9B2h, 0B10BE924h, 2F6F7C87h, 58684C11h
		dd 0C1611DABh, 0B6662D3Dh, 76DC4190h, 1DB7106h,	98D220BCh
		dd 0EFD5102Ah, 71B18589h, 6B6B51Fh, 9FBFE4A5h, 0E8B8D433h
		dd 7807C9A2h, 0F00F934h, 9609A88Eh, 0E10E9818h,	7F6A0DBBh
		dd 86D3D2Dh, 91646C97h,	0E6635C01h, 6B6B51F4h, 1C6C6162h
		dd 856530D8h, 0F262004Eh, 6C0695EDh, 1B01A57Bh,	8208F4C1h
		dd 0F50FC457h, 65B0D9C6h, 12B7E950h, 8BBEB8EAh,	0FCB9887Ch
		dd 62DD1DDFh, 15DA2D49h, 8CD37CF3h, 0FBD44C65h,	4DB26158h
		dd 3AB551CEh, 0A3BC0074h, 0D4BB30E2h, 4ADFA541h, 3DD895D7h
		dd 0A4D1C46Dh, 0D3D6F4FBh, 4369E96Ah, 346ED9FCh, 0AD678846h
		dd 0DA60B8D0h, 44042D73h, 33031DE5h, 0AA0A4C5Fh, 0DD0D7CC9h
		dd 5005713Ch, 270241AAh, 0BE0B1010h, 0C90C2086h, 5768B525h
		dd 206F85B3h, 0B966D409h, 0CE61E49Fh, 5EDEF90Eh, 29D9C998h
		dd 0B0D09822h, 0C7D7A8B4h, 59B33D17h, 2EB40D81h, 0B7BD5C3Bh
		dd 0C0BA6CADh, 0EDB88320h, 9ABFB3B6h, 3B6E20Ch,	74B1D29Ah
		dd 0EAD54739h, 9DD277AFh, 4DB2615h, 73DC1683h, 0E3630B12h
		dd 94643B84h, 0D6D6A3Eh, 7A6A5AA8h, 0E40ECF0Bh,	9309FF9Dh
		dd 0A00AE27h, 7D079EB1h, 0F00F9344h, 8708A3D2h,	1E01F268h
		dd 6906C2FEh, 0F762575Dh, 806567CBh, 196C3671h,	6E6B06E7h
		dd 0FED41B76h, 89D32BE0h, 10DA7A5Ah, 67DD4ACCh,	0F9B9DF6Fh
		dd 8EBEEFF9h, 17B7BE43h, 60B08ED5h, 0D6D6A3E8h,	0A1D1937Eh
		dd 38D8C2C4h, 4FDFF252h, 0D1BB67F1h, 0A6BC5767h, 3FB506DDh
		dd 48B2364Bh, 0D80D2BDAh, 0AF0A1B4Ch, 36034AF6h, 41047A60h
		dd 0DF60EFC3h, 0A867DF55h, 316E8EEFh, 4669BE79h, 0CB61B38Ch
		dd 0BC66831Ah, 256FD2A0h, 5268E236h, 0CC0C7795h, 0BB0B4703h
		dd 220216B9h, 5505262Fh, 0C5BA3BBEh, 0B2BD0B28h, 2BB45A92h
		dd 5CB36A04h, 0C2D7FFA7h, 0B5D0CF31h, 2CD99E8Bh, 5BDEAE1Dh
		dd 9B64C2B0h, 0EC63F226h, 756AA39Ch, 26D930Ah, 9C0906A9h
		dd 0EB0E363Fh, 72076785h, 5005713h, 95BF4A82h, 0E2B87A14h
		dd 7BB12BAEh, 0CB61B38h, 92D28E9Bh, 0E5D5BE0Dh,	7CDCEFB7h
		dd 0BDBDF21h, 86D3D2D4h, 0F1D4E242h, 68DDB3F8h,	1FDA836Eh
		dd 81BE16CDh, 0F6B9265Bh, 6FB077E1h, 18B74777h,	88085AE6h
		dd 0FF0F6A70h, 66063BCAh, 11010B5Ch, 8F659EFFh,	0F862AE69h
		dd 616BFFD3h, 166CCF45h, 0A00AE278h, 0D70DD2EEh, 4E048354h
		dd 3903B3C2h, 0A7672661h, 0D06016F7h, 4969474Dh, 3E6E77DBh
		dd 0AED16A4Ah, 0D9D65ADCh, 40DF0B66h, 37D83BF0h, 0A9BCAE53h
		dd 0DEBB9EC5h, 47B2CF7Fh, 30B5FFE9h, 0BDBDF21Ch, 0CABAC28Ah
		dd 53B39330h, 24B4A3A6h, 0BAD03605h, 0CDD70693h, 54DE5729h
		dd 23D967BFh, 0B3667A2Eh, 0C4614AB8h, 5D681B02h, 2A6F2B94h
		dd 0B40BBE37h, 0C30C8EA1h, 5A05DF1Bh, 2D02EF8Dh
dword_40A480	dd 0			; DATA XREF: sub_401610+982r
					; sub_401610+9BCr ...
		align 8
dword_40A488	dd 100h	dup(0)		; DATA XREF: sub_401508+1Do
					; sub_401610+523o ...
byte_40A888	db 0			; DATA XREF: sub_4014E1o
					; sub_401610+2E6o ...
		align 4
		dd 0FFh	dup(0)
dword_40AC88	dd 0			; DATA XREF: sub_401610+556o
					; sub_401610+11B8o ...
		dd 2FFh	dup(0)
word_40B888	dw 0			; DATA XREF: sub_401610+1122o
					; sub_401610+112Dw
		align 4
		dd 1FFh	dup(0)
dword_40C088	dd 0			; DATA XREF: sub_401610+BDCw
					; sub_401610+C1Fo
		dd 3 dup(0)
dword_40C098	dd 0			; DATA XREF: sub_401610+BE9w
byte_40C09C	db 0			; DATA XREF: sub_401610+BF6w
byte_40C09D	db 0			; DATA XREF: sub_401610+C08w
byte_40C09E	db 0			; DATA XREF: sub_401610+C0Ew
byte_40C09F	db 0			; DATA XREF: sub_401610+C13w
		dd 0
dword_40C0A4	dd 8 dup(0)		; DATA XREF: sub_401610+C03o
dword_40C0C4	dd 0			; DATA XREF: sub_4014F2r
					; sub_401508:loc_401510r ...
dword_40C0C8	dd 10h dup(0)		; DATA XREF: .text:00403385o
dword_40C108	dd 2, 0DEADBEEFh, 6C6C754Eh, 74666F73h,	74736E49h, 0CCAh
					; DATA XREF: sub_403756+99o
					; sub_403756+B5o ...
		dd 40E64h, 5Dh,	2650001h, 82C317FCh, 1C46A161h,	0A6546B1Fh
		dd 9D80A0D0h, 3EC8EBE6h, 0AC2EAFFCh, 0B077B183h, 6B213B5Ah
		dd 0EC0931A7h, 0A6C94F95h, 8F1F11C5h, 92481EC1h, 4B778C1Ah
		dd 45048998h, 1F1A4D9Fh, 7EA97BDFh, 31CE23FFh, 0C75C5245h
		dd 0C2F36865h, 0BB2A1649h, 0E7390FEBh, 0D48DE2C4h, 5F97FF78h
		dd 8F7DAD9Eh, 0E06AC1FEh, 5FC52627h, 0CBA4E7Bh,	1BDD0119h
		dd 0B67173EAh, 0C28661E7h, 0E4AFE652h, 0D438EDE7h, 0F0F3FF50h
		dd 4298412Ah, 6B929D70h, 5991DD29h, 0A48D9077h,	0CED324BEh
		dd 822F12CEh, 0AE159E0Fh, 300E1C8Dh, 0A1ECC4BAh, 8268192Ah
		dd 64B1B594h, 808AC0C8h, 0C471E9BCh, 0B8BACDDh,	4CD6F280h
		dd 0A36330D1h, 0A67BE548h, 0E7E4C983h, 0B53C11F2h, 10FA75DDh
		dd 0F8985400h, 1F2E4C7h, 0A8D3D615h, 51DF830Bh,	6B19310Fh
		dd 0B760434Dh, 818721A6h, 0AE7E0C39h, 0F6916AFFh, 5AA9FBF6h
		dd 0B43CD6AEh, 0E1A53299h, 51ACD54Bh, 7CB16DB2h, 0A124BE97h
		dd 0A22D74B4h, 7322798Bh, 0F10340B8h, 0A4A25C4Ch, 0A5743B29h
		dd 9FF49A43h, 18218076h, 0EBDCC568h, 0C69A91F0h, 295963C9h
		dd 48877F2Bh, 0AD0A575Ch, 11362557h, 483A89B2h,	0EA3D08A0h
		dd 7D427794h, 60BE0DC8h, 88B9EFE5h, 4609D9A5h, 51755D6Dh
		dd 1F15CAAAh, 4248B7B2h, 0C1C60B93h, 47F1D1C2h,	0D1D01406h
		dd 2B4E1925h, 3A2323CAh, 79BFCA69h, 59BAA05Ah, 0CCB274F3h
		dd 0B3652Eh, 3A88274Ch,	63215038h, 0FEC581D1h, 143AF5D8h
		dd 0D97AC534h, 0B236054Ah, 0F8398F42h, 3FAD5B45h, 0A934463Ch
		dd 4510CDECh, 8DABC154h, 0CB1E178Fh, 0B9B5F08Eh, 0CB582EEEh
		dd 7D7346A6h, 0B7B0B84Fh, 4C66E243h, 0F57298B3h, 230DF82Dh
		dd 19E6F969h, 1F80h dup(0)
dword_414108	dd 6 dup(0)		; DATA XREF: sub_403420:loc_403546o
					; sub_403756+1DEo
dword_414120	dd 0			; DATA XREF: sub_403420+8Ew
dword_414124	dd 0			; DATA XREF: sub_403420+94w
					; sub_403420+188r ...
dword_414128	dd 0			; DATA XREF: sub_403420+12Bw
					; sub_403420+14Dr
dword_41412C	dd 0			; DATA XREF: sub_403420+135w
		dd 18h dup(0)
dword_414190	dd 2000h dup(0)		; DATA XREF: sub_403420+12Bo
					; sub_403420+153o
dword_41C190	dd 9200h		; DATA XREF: .text:00403359r
					; sub_403420+58w ...
dword_41C194	dd 0			; DATA XREF: .text:0040334Ew
					; .text:0040337Er
dword_41C198	dd 45268h		; DATA XREF: .text:0040335Fr
					; sub_403420+52w ...
		align 10h
dword_41C1A0	dd 1000h dup(0)		; DATA XREF: sub_403420+75o
					; sub_40362B+8Eo
dword_4201A0	dd 0			; DATA XREF: sub_403420+13r
					; sub_403420+B9r ...
dword_4201A4	dd 0			; DATA XREF: sub_403420:loc_40347Er
					; sub_403756+28Aw
dword_4201A8	dd 0			; DATA XREF: sub_403420+33r
					; sub_403420+63r ...
dword_4201AC	dd 0			; DATA XREF: sub_403420+19r
					; sub_403420+40r ...
dword_4201B0	dd 0			; DATA XREF: sub_401610+476r
					; sub_401610+490r ...
		align 8
byte_4201B8	db 0			; DATA XREF: start+2E8o start+2F8w
byte_4201B9	db 3 dup(0)		; DATA XREF: start+2E3o
		dd 1FCh	dup(0)
		db 0
dword_4209AD	dd 0			; DATA XREF: start+336r
		align 8
dword_4209B8	dd 100h	dup(0)		; DATA XREF: start+2EDo
dword_420DB8	dd 0			; DATA XREF: sub_404258+9r
					; sub_404258+26w ...
dword_420DBC	dd 0			; DATA XREF: sub_405597+196w
					; sub_405597+1E5w ...
dword_420DC0	dd 0			; DATA XREF: sub_4049AD+D5r
					; sub_404A94+A3w
dword_420DC4	dd 0			; DATA XREF: sub_40463C:loc_4047DDw
					; sub_40463C+2FDr ...
dword_420DC8	dd 100h	dup(0)		; DATA XREF: sub_40463C+1EBo
dword_4211C8	dd 0			; DATA XREF: sub_403FD6+7r
					; sub_405597+B0r ...
dword_4211CC	dd 0			; DATA XREF: sub_404A94+B6w
					; sub_404A94+C2r ...
dword_4211D0	dd 0			; DATA XREF: sub_404A94+7Ew
					; sub_404A94:loc_404C94r ...
dword_4211D4	dd 0			; DATA XREF: sub_40410B+ACr
					; sub_405597+36r ...
byte_4211D8	db 0			; DATA XREF: sub_40509F+28o
					; sub_40509F+CAw
		align 4
		dd 1FFh	dup(0)
dword_4219D8	dd 400h	dup(0)		; DATA XREF: sub_404578+62o
					; sub_40463C+131o ...
dword_4229D8	dd 0			; DATA XREF: sub_403FD6+Er
					; sub_403FFA+4r ...
dword_4229DC	dd 0			; DATA XREF: sub_40428C+152r
					; sub_40463C+6r ...
dword_4229E0	dd 0			; DATA XREF: sub_405202+22Aw
					; sub_405597+141w ...
dword_4229E4	dd 0			; DATA XREF: sub_40428C+112w
					; sub_40428C+146r ...
dword_4229E8	dd 0			; DATA XREF: sub_401610:loc_40319Br
					; sub_405597:loc_405A29r ...
		align 10h
dword_4229F0	dd 100h	dup(0)		; DATA XREF: sub_406357+B7o
					; sub_406357+171o ...
dword_422DF0	dd 100h	dup(0)		; DATA XREF: sub_406357+92o
dword_4231F0	dd 0			; DATA XREF: sub_405D01+9w
					; sub_405D01+2Bo
		dd 11h dup(0)
dword_423238	dd 100h	dup(0)		; DATA XREF: sub_40622D+5o
dword_423638	dd 0			; DATA XREF: sub_406357+43w
					; sub_406357+66o ...
		dd 0FFh	dup(0)
dword_423A38	dd 50h dup(0)		; DATA XREF: sub_406168+10o
dword_423B78	dd 100h	dup(0)		; DATA XREF: sub_4067E6+52o
dword_423F78	dd 0			; DATA XREF: sub_401610+1A66w
					; sub_40463C+51w ...
		align 10h
dword_423F80	dd 400h	dup(0)		; DATA XREF: sub_4060AD+73o
					; sub_40614C+9o
byte_424F80	db 0			; DATA XREF: sub_40428C+1D7o
					; sub_40463C+183o ...
byte_424F81	db 3 dup(0)		; DATA XREF: sub_405A5A+66o
		dd 1FFh	dup(0)
byte_425780	db 0			; DATA XREF: sub_4040E9+Ao
					; sub_4060AD+2Dr ...
		align 4
		dd 0FFh	dup(0)
dword_425B80	dd 0			; DATA XREF: sub_405A5A+108o
dword_425B84	dd 0			; DATA XREF: sub_405A5A+12Bw
		align 10h
dword_425B90	dd 0			; DATA XREF: sub_405A5A+135w
dword_425B94	dd 0			; DATA XREF: sub_405A5A+119w
		dd 3 dup(0)
dword_425BA4	dd 0			; DATA XREF: sub_405A5A+13Bw
					; sub_405A5A+20Bw
dword_425BA8	dd 0			; DATA XREF: sub_404024r
					; sub_404578+85r ...
dword_425BAC	dd 0			; DATA XREF: sub_401610:loc_4017E9r
					; sub_40509F+6r ...
dword_425BB0	dd 0			; DATA XREF: sub_405597+1C7r
					; sub_405A5A+FFw
dword_425BB4	dd 0			; DATA XREF: sub_401610:loc_4016A9w
					; sub_403F8D+7w ...
dword_425BB8	dd 0			; DATA XREF: sub_40509F+68r
					; sub_405202+78w
dword_425BBC	dd 0			; DATA XREF: sub_40410B+62w
					; sub_405597+3E0r ...
dword_425BC0	dd 0			; DATA XREF: sub_401610:loc_4017D3r
					; sub_405202+69w ...
dword_425BC4	dd 0			; DATA XREF: sub_4013E7+93r
					; sub_405202+A1w
dword_425BC8	dd 0			; DATA XREF: sub_40410B+74w
					; sub_40410B:loc_404185r ...
dword_425BCC	dd 0			; DATA XREF: sub_4013E7+98w
					; sub_4013E7+AFr ...
		dd 4 dup(0)
aNsisError	db 'NSIS Error',0       ; DATA XREF: sub_401000+150o start+29o ...
		align 4
		dd 1FDh	dup(0)
dword_4263E0	dd 0			; DATA XREF: sub_401000+19r
					; sub_401610+9r ...
dword_4263E4	dd 400000h		; DATA XREF: sub_403420+116r
					; sub_403756+22r ...
dword_4263E8	dd 0			; DATA XREF: sub_401000+39r
					; sub_4012F3+6r ...
		dd 5 dup(0)
dword_426400	dd 0			; DATA XREF: sub_403756+2F9o
					; sub_405597+1F5r
dword_426404	dd 0			; DATA XREF: sub_405597+9Er
					; sub_405597+25Er ...
dword_426408	dd 0			; DATA XREF: sub_40117D+4r
					; sub_4011EF+13r ...
dword_42640C	dd 0			; DATA XREF: sub_40117D+21r
					; sub_40117D+64r ...
dword_426410	dd 0			; DATA XREF: sub_4013E7:loc_401400r
		align 8
dword_426418	dd 0			; DATA XREF: sub_40428C:loc_4042BDr
					; sub_405A5A+3Br ...
		align 10h
dword_426420	dd 0			; DATA XREF: sub_40410B+41r
dword_426424	dd 0			; DATA XREF: sub_40410B:loc_404132r
dword_426428	dd 0			; DATA XREF: sub_401610:loc_402149r
		dd 3 dup(0)
dword_426438	dd 0			; DATA XREF: sub_40362B+10r
		align 10h
dword_426440	dd 0			; DATA XREF: sub_403756+2D7w
					; start+1FEr ...
dword_426444	dd 0			; DATA XREF: sub_4013E7+31r
					; sub_4013E7+57r ...
dword_426448	dd 0			; DATA XREF: sub_401610+18A2r
					; sub_403756:loc_4037D3r ...
dword_42644C	dd 0			; DATA XREF: sub_404A94+59w
					; sub_404A94+465w
		dd 4 dup(0)
dword_426460	dd 0			; DATA XREF: sub_401610+18Bw
					; sub_401610:loc_4017C6r ...
dword_426464	dd 0			; DATA XREF: sub_4015C7:loc_4015DCr
					; sub_401610+1369r ...
dword_426468	dd 0			; DATA XREF: sub_401610+651w
					; sub_401610+677w ...
dword_42646C	dd 0			; DATA XREF: sub_403FD6r
					; sub_405177:loc_4051E2w ...
dword_426470	dd 0			; DATA XREF: sub_406357:loc_4065A7w
dword_426474	dd 0			; DATA XREF: sub_401610:loc_402835w
					; start:loc_403ECAr
		align 10h
dword_426480	dd 0			; DATA XREF: sub_403420+A6r
					; sub_403756+2BFw ...
dword_426484	dd 0			; DATA XREF: sub_40463C+2CEw
dword_426488	dd 0			; DATA XREF: sub_40410B+6Bw
					; sub_405D79:loc_405D93r
dword_42648C	dd 0			; DATA XREF: start:loc_403D8Dw
					; start:loc_403F74r
dword_426490	dd 0			; DATA XREF: sub_401610+EA1r start+2Ew ...
_data		ends

; Section 4. (virtual address 00027000)
; Virtual size			: 00008000 (  32768.)
; Section size in file		: 00008000 (  32768.)
; Offset to raw	data for section: 00027000
; Flags	C0000080: Bss Readable Writable
; Alignment	: default
; ===========================================================================

; Segment type:	Uninitialized
; Segment permissions: Read/Write
_ndata		segment	para public 'BSS' use32
		assume cs:_ndata
		;org 427000h
		assume es:nothing, ss:nothing, ds:_data, fs:nothing, gs:nothing
dword_427000	dd 0			; DATA XREF: sub_4013E7+67o
					; sub_401610+46o ...
		dd 13FFh dup(0)
byte_42C000	db 70h			; DATA XREF: sub_403A62+28o
					; start:loc_403B62o ...
byte_42C001	db 61h,	63h, 6Bh	; DATA XREF: start+B0o
		db  65h	; e
		db 64h,	2Eh, 65h
		db  78h	; x
		db 65h,	0, 5Ch
aSriUserLocals1	db 'SRI-user\LOCALS~1\Temp\nst1.tmp',0
		dd 0F5h	dup(0)
byte_42C400	db 0			; DATA XREF: sub_401610:loc_402E7Fo
					; start+24Bo ...
		align 4
		dd 0FFh	dup(0)
dword_42C800	dd 100h	dup(0)		; DATA XREF: sub_401610+271o
					; sub_401610:loc_401B43o ...
dword_42CC00	dd 6D5C3A43h, 706E755Fh, 656B6361h, 61700072h, 64656B63h
					; DATA XREF: sub_403756+1Co
		dd 6578652Eh, 0FAh dup(0)
byte_42D000	db 0			; DATA XREF: sub_40410Br
					; sub_40410B+10o
		align 4
		dd 0FFh	dup(0)
aCDocume1SriUse	db 'C:\DOCUME~1\SRI-user\LOCALS~1\Temp\',0 ; DATA XREF: sub_403756+1F0o
					; sub_403A62+1o ...
		dd 0F7h	dup(0)
dword_42D800	dd 200h	dup(0)		; DATA XREF: sub_403A96+31o
dword_42E000	dd 400h	dup(0)		; DATA XREF: sub_405597+291o
_ndata		ends

; Section 6. (virtual address 00030000)
; Virtual size			: 00001000 (   4096.)
; Section size in file		: 00000200 (	512.)
; Offset to raw	data for section: 00030000
; 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 430000h
		dd 80h dup(0)
		align 1000h
_idata2		ends


		end start